body{color:#0f172a;background:#f3f4f6;margin:0;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}.page-center{background:#f1f5f9;justify-content:center;align-items:center;min-height:100vh;display:flex}.card{background:#fff;border-radius:16px;width:100%;max-width:420px;padding:32px;box-shadow:0 10px 30px #0f172a1f}.title{color:#1e293b;margin:0}.subtitle{color:#64748b;margin-top:8px}.form{gap:16px;margin-top:24px;display:grid}.label{color:#334155;margin-bottom:6px;font-size:14px;display:block}.input{background:#fff;border:1px solid #cbd5e1;border-radius:10px;width:100%;padding:10px 12px;font-size:14px}.small-input{width:150px}.button{color:#fff;cursor:pointer;background:#0f172a;border:0;border-radius:10px;padding:11px 16px;font-weight:700}.button-danger{background:#dc2626}.error{color:#dc2626;background:#fef2f2;border-radius:10px;padding:12px 14px;font-size:14px}.app-shell{background:#f1f5f9;min-height:100vh;display:flex}.sidebar{color:#fff;background:#0f172a;width:260px;padding:24px}.brand{align-items:center;gap:12px;margin-bottom:32px;display:flex}.brand-mark{color:#0f172a;background:#38bdf8;border-radius:14px;justify-content:center;align-items:center;width:44px;height:44px;font-weight:800;display:flex}.brand h1{margin:0;font-size:20px}.brand p{color:#94a3b8;margin:2px 0 0;font-size:13px}.nav-menu{gap:8px;display:grid}.nav-item{color:#cbd5e1;cursor:pointer;border-radius:12px;padding:12px 14px;text-decoration:none}.nav-item.active,.nav-item:hover{color:#fff;background:#1e293b}.content-shell{flex:1;min-width:0}.topbar{background:#fff;justify-content:space-between;align-items:center;padding:20px 28px;display:flex;box-shadow:0 1px 8px #0f172a14}.topbar h2{margin:0;font-size:22px}.topbar p{color:#64748b;margin:6px 0 0}.user-box{align-items:center;gap:16px;display:flex}.user-box div{text-align:right;display:grid}.user-box span{color:#64748b;font-size:13px}.dashboard-main{gap:20px;padding:28px;display:grid}.filter-card{background:#fff;border-radius:18px;align-items:end;gap:16px;padding:18px;display:flex;box-shadow:0 8px 24px #0f172a14}.forecast-badge{color:#075985;background:#e0f2fe;border-radius:999px;margin-left:auto;padding:10px 14px}.info-card{background:#fff;border-radius:16px;padding:24px;box-shadow:0 8px 24px #0f172a14}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.kpi-card{background:#fff;border-radius:20px;padding:22px;box-shadow:0 10px 28px #0f172a14}.kpi-card-header{justify-content:space-between;align-items:start;gap:12px;display:flex}.kpi-code{color:#0284c7;letter-spacing:.08em;margin:0 0 6px;font-size:12px;font-weight:800}.kpi-card h3{margin:0;font-size:18px}.status-pill{color:#334155;white-space:nowrap;background:#e2e8f0;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:800}.status-pill.achieved{color:#166534;background:#dcfce7}.status-pill.warning{color:#854d0e;background:#fef9c3}.status-pill.critical{color:#991b1b;background:#fee2e2}.status-pill.waiting_monthly_report,.status-pill.no_target,.status-pill.no_plan{color:#475569;background:#e2e8f0}.kpi-main-number{color:#0f172a;margin-top:24px;font-size:34px;font-weight:900}.kpi-main-number span{color:#64748b;margin-top:4px;font-size:13px;font-weight:500;display:block}.kpi-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:22px;display:grid}.kpi-metrics div{background:#f8fafc;border-radius:14px;padding:12px}.kpi-metrics span{color:#64748b;margin-bottom:6px;font-size:12px;display:block}.kpi-metrics strong{color:#0f172a}.table-card{background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 8px 24px #0f172a14}.table-header{border-bottom:1px solid #e2e8f0;padding:20px}.table-header h3{margin:0}.table-header p{color:#64748b;margin:6px 0 0}.table-wrapper{overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;color:#475569;background:#f8fafc;border-bottom:1px solid #e2e8f0;padding:14px 16px;font-size:13px}.data-table td{vertical-align:top;border-bottom:1px solid #e2e8f0;padding:14px 16px}.data-table td span{color:#64748b;margin-top:4px;font-size:13px;display:block}.empty-table{text-align:center;color:#64748b;padding:30px}.text-link{color:#0284c7;font-weight:700;text-decoration:none}.text-link:hover{text-decoration:underline}.project-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.summary-list{gap:8px;margin-top:16px;display:grid}.summary-list p{color:#334155;margin:0}@media (width<=900px){.app-shell{display:block}.sidebar{width:auto}.topbar,.filter-card{flex-direction:column;align-items:stretch}.user-box{justify-content:space-between}.kpi-grid,.project-summary-grid{grid-template-columns:1fr}.forecast-badge{margin-left:0}}.form-card{background:#fff;border-radius:18px;padding:20px;box-shadow:0 8px 24px #0f172a14}.form-card h3{margin:0 0 18px}.monthly-form{grid-template-columns:1.5fr 1fr 1fr 1.5fr auto;align-items:end;gap:14px;display:grid}.project-select{min-width:320px}.success{color:#166534;background:#dcfce7;border-radius:10px;padding:12px 14px;font-size:14px;font-weight:700}@media (width<=1100px){.monthly-form{grid-template-columns:1fr}.project-select{min-width:0}}.approval-grid{grid-template-columns:1.4fr 1fr;gap:20px;display:grid}.detail-card{background:#fff;border-radius:18px;padding:20px;box-shadow:0 8px 24px #0f172a14}.detail-card h3{margin-top:0}.info-card.flat{box-shadow:none;border-radius:0}.mini-button{color:#075985;cursor:pointer;background:#e0f2fe;border:0;border-radius:8px;padding:8px 10px;font-weight:700}.approval-actions{gap:12px;margin-top:20px;display:grid}.approval-actions button:disabled{opacity:.45;cursor:not-allowed}.approval-log-section{margin-top:24px}.log-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;margin-top:10px;padding:12px}.log-item div{justify-content:space-between;gap:12px;display:flex}.log-item span{color:#0284c7;font-weight:700}.log-item p{color:#475569;margin:6px 0 0;font-size:13px}@media (width<=1100px){.approval-grid{grid-template-columns:1fr}}.document-form{grid-template-columns:1.6fr .7fr .9fr 1.5fr 1.4fr auto;align-items:end;gap:14px;display:grid}.action-row{flex-wrap:wrap;gap:8px;display:flex}.danger-mini-button{color:#991b1b;background:#fee2e2}@media (width<=1200px){.document-form{grid-template-columns:1fr}}.user-form{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:14px;display:grid}.checkbox-row{color:#334155;align-items:center;gap:8px;padding-bottom:11px;font-weight:700;display:flex}.checkbox-row input{width:16px;height:16px}@media (width<=1100px){.user-form{grid-template-columns:1fr}.checkbox-row{padding-bottom:0}}.project-form{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:14px;display:grid}.project-form-wide{grid-column:span 2}@media (width<=1100px){.project-form{grid-template-columns:1fr}.project-form-wide{grid-column:span 1}}.assignment-form{grid-template-columns:1.5fr 1fr .6fr 1.4fr auto;align-items:end;gap:14px;display:grid}@media (width<=1100px){.assignment-form{grid-template-columns:1fr}}
