:root{--font-sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;--font-serif:"Source Serif 4", Georgia, "Times New Roman", serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--bg:#f1f4f3;--surface:#fff;--surface-2:#f6f8f7;--line:#dde3e1;--line-2:#c9d2ce;--ink:#1c2321;--ink-2:#515b58;--ink-3:#838f8b;--brand:#0f2a28;--brand-2:#0e7c72;--brand-2-hover:#0a5f58;--brand-soft:#e3f2f0;--brand-border:#bfe1dc;--ok:#2f7a4f;--ok-soft:#e7f4ec;--warn:#9a7b1f;--warn-soft:#faf3df;--bad:#a3403b;--bad-soft:#f8ebea;--hold:#8c5a28;--hold-soft:#f7eee0;--closed:#6b7280;--closed-soft:#eef0f3;--radius:9px;--radius-s:6px;--shadow:0 1px 2px #0d16140d, 0 1px 3px #0d16140f;--rail:60px;--side-w:220px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}html,body{overscroll-behavior-x:none}body{font:14px/1.5 var(--font-sans);background:var(--bg);color:var(--ink);font-variant-numeric:tabular-nums}html{scrollbar-width:thin;scrollbar-color:var(--line-2,var(--line)) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line-2,var(--line));background-clip:padding-box;border:2px solid #0000;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--ink-3);background-clip:padding-box}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--brand-2)}.skip-link{z-index:300;background:var(--brand-2);color:#fff;border-radius:0 0 var(--radius-s) 0;padding:10px 16px;font-size:13px;font-weight:600;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}:focus-visible{outline:2px solid var(--brand-2);outline-offset:2px}.app-shell{min-height:100vh;display:flex}.sidebar{width:var(--side-w);background:var(--brand);color:#cfe0dc;z-index:40;flex-direction:column;flex:none;transition:transform .2s;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-header{border-bottom:1px solid #ffffff1f;align-items:center;gap:10px;padding:16px 16px 14px;display:flex}.sidebar-header b{color:#fff;font-size:14px;display:block}.sidebar-header span{color:#7fa39c;letter-spacing:.4px;text-transform:uppercase;font-size:11px}.sidebar nav{flex:1;padding:10px;overflow-y:auto}.nav-link{text-align:left;border-radius:var(--radius-s);color:#b9d2cc;cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;width:100%;margin-bottom:3px;padding:10px 12px;font-size:13.5px;display:flex}.nav-link:hover{color:#fff;background:#ffffff14}.nav-link[aria-current=page]{background:var(--brand-2);color:#fff;font-weight:600}.sidebar-footer{color:#7fa39c;border-top:1px solid #ffffff1f;padding:12px 16px;font-size:12px}.sidebar-footer b{color:#fff;font-size:12.5px;display:block}.sidebar-footer button{color:#fff;border-radius:var(--radius-s);cursor:pointer;background:#ffffff1f;border:1px solid #fff3;margin-top:8px;padding:5px 10px;font-size:11.5px}.main-col{min-width:0;padding-left:var(--side-w);flex-direction:column;flex:1;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--line);z-index:20;flex-wrap:wrap;align-items:center;gap:14px;padding:12px 24px;display:flex;position:sticky;top:0}.topbar h1{font:600 19px/1.3 var(--font-serif);letter-spacing:-.1px}.topbar .sub{color:var(--ink-3);margin-top:1px;font-size:12px}.topbar .spacer{flex:1}.menu-btn{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-s);cursor:pointer;padding:6px 10px;display:none}.notif-bell{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-s);cursor:pointer;padding:7px 10px;font-size:15px;line-height:1;position:relative}.notif-bell:hover{background:var(--surface-2)}.notif-badge{background:var(--bad);color:#fff;text-align:center;border:2px solid var(--surface);border-radius:10px;min-width:16px;padding:1px 5px;font-size:10px;font-weight:700;line-height:1.4;position:absolute;top:-6px;right:-6px}.notif-scrim{z-index:95;opacity:0;pointer-events:none;background:#0d161459;transition:opacity .2s;position:fixed;inset:0}.notif-scrim.show{opacity:1;pointer-events:auto}.notif-panel{background:var(--surface);z-index:100;flex-direction:column;width:min(360px,92vw);transition:transform .25s;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-10px 0 32px #0d161433}.notif-panel.open{transform:translate(0)}.notif-panel-h{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:15px 18px;display:flex}.notif-panel-h h2{flex:1;font-size:15px;font-weight:600}.notif-panel-h button{color:var(--ink-3);cursor:pointer;background:0 0;border:none;font-size:20px;line-height:1}.notif-panel-h button:hover{color:var(--ink)}.notif-list{flex:1;overflow-y:auto}.notif-item{border-bottom:1px solid var(--line-2,var(--line));color:var(--ink);padding:12px 18px;font-size:13px}.notif-msg{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;margin:0;padding:0;display:block}.notif-msg:hover{text-decoration:underline}.notif-item.unread{background:var(--brand-soft)}.notif-item-row{justify-content:space-between;align-items:center;gap:10px;margin-top:6px;display:flex}.notif-item .when{color:var(--ink-3);font-size:11px}.notif-review-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.notif-review-form{flex-direction:column;gap:6px;margin-top:8px;display:flex}.notif-review-form textarea{border:1px solid var(--line);border-radius:var(--radius-s);resize:vertical;width:100%;padding:6px 8px;font-size:13px}.error-text.sm{font-size:11px}.chip-sm{margin-top:8px;padding:2px 10px;font-size:11px}.chip-good{background:var(--ok-soft);color:var(--ok);border-color:#cfe7d8}.chip-bad{background:var(--bad-soft);color:var(--bad);border-color:#edd0ce}.chip-brand{background:var(--brand-soft);border-color:var(--brand-border);color:var(--brand-2)}.chip-tbd{color:var(--ink-3);background:0 0;border-style:dashed}.empty-field{color:var(--ink-3);font-size:12px;font-style:italic}.content{flex:1;padding:22px 24px 60px}.wrap{max-width:1180px;margin:0 auto}.scrim{display:none}@media (width<=880px){.menu-btn{display:inline-flex}.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:6px 0 24px #0003}.main-col{padding-left:0}.scrim.show{z-index:30;background:#0d161466;display:block;position:fixed;inset:0}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.zoho-reference{border:1px dashed var(--line);background:var(--bg-2,#fafafa)}.milestone-zoho-ref{border-radius:var(--radius);margin-top:8px;padding:8px 10px}.milestone-zoho-ref-h{text-transform:uppercase;letter-spacing:.3px;color:var(--ink-2);margin-bottom:6px;font-size:11px;font-weight:700}.milestone-zoho-ref-rows{max-height:220px;overflow-y:auto}.milestone-zoho-ref-row{align-items:baseline;gap:10px;padding:3px 0;font-size:12.5px;display:flex}.milestone-zoho-ref-row>span:last-child{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.card-h{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:13px 18px;display:flex}.card-h h2{letter-spacing:.3px;text-transform:uppercase;color:var(--ink-2);font-size:13px;font-weight:700}.card-b{padding:18px}.project-h{padding:14px 18px}.project-h h2{letter-spacing:0;text-transform:none;color:var(--ink);font-size:15px;font-weight:700}.project-h .project-tile{border-radius:11px;width:40px;height:40px;font-size:14px}.card-collapse-btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;width:26px;height:26px;color:var(--ink-2);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.card-collapse-btn:hover{background:var(--surface-2);border-color:var(--line-2);color:var(--ink)}.card-collapse-btn .chev{font-size:12px;transition:transform .15s;display:inline-block}.card-collapse-btn[aria-expanded=false] .chev{transform:rotate(-90deg)}@media (prefers-reduced-motion:reduce){.card-collapse-btn .chev{transition:none}}.project-tile{letter-spacing:.5px;border-radius:16px;flex:none;justify-content:center;align-items:center;width:56px;height:56px;font-size:19px;font-weight:700;display:flex}.project-tile-brand{background:var(--brand-soft);color:var(--brand-2)}.project-tile-ok{background:var(--ok-soft);color:var(--ok)}.project-tile-hold{background:var(--hold-soft);color:var(--hold)}.project-tile-bad{background:var(--bad-soft);color:var(--bad)}.project-tile-warn{background:var(--warn-soft);color:var(--warn)}.project-tile-closed{background:var(--closed-soft);color:var(--closed)}.section{margin-top:22px}.section:first-child{margin-top:0}.section>h2.section-title{letter-spacing:1px;text-transform:uppercase;color:var(--ink-3);margin-bottom:10px;font-size:11px;font-weight:700}.muted{color:var(--ink-3)}.dim{color:var(--ink-2)}.back-row{align-items:center;gap:14px;display:flex}.back-btn{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--ink-2);cursor:pointer;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:16px;display:inline-flex}.back-btn:hover{background:var(--surface-2);border-color:var(--line-2);color:var(--ink)}.daily-log-bar{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);align-items:center;gap:14px;margin-bottom:20px;padding:12px 18px;display:flex}.daily-log-icon{flex:none;font-size:20px;line-height:1}.daily-log-text{flex-direction:column;gap:1px;display:flex}.daily-log-text b{font-size:13.5px}.daily-log-sub{color:var(--ink-2);font-size:12px}.daily-log-progress{background:var(--surface-2);border-radius:4px;flex:1;min-width:80px;height:8px;overflow:hidden}.daily-log-progress-fill{border-radius:4px;height:100%;transition:width .25s}@media (prefers-reduced-motion:reduce){.daily-log-progress-fill{transition:none}}.daily-log-none{border-left:3px solid var(--bad)}.daily-log-none .daily-log-progress-fill{background:var(--bad)}.daily-log-partial{border-left:3px solid var(--warn)}.daily-log-partial .daily-log-progress{background:var(--bad-soft)}.daily-log-partial .daily-log-progress-fill{background:var(--ok)}.daily-log-done{border-left:3px solid var(--ok)}.daily-log-done .daily-log-progress-fill{background:var(--ok)}@media (width<=640px){.daily-log-progress{display:none}}.grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;display:grid}.project-list{flex-direction:column;gap:14px;display:flex}.projects-toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.search-box{width:280px;max-width:100%;position:relative}.search-box input{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);width:100%;color:var(--ink);padding:8px 12px;font-size:13px}.search-box input:focus{outline:2px solid var(--brand-2);outline-offset:1px}.search-dropdown{z-index:20;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-s);max-height:260px;box-shadow:var(--shadow);position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.search-dropdown button{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:8px 12px;font-size:13px;display:flex}.search-dropdown button:hover,.search-dropdown button:focus-visible{background:var(--surface-2)}.search-result-group{border-bottom:1px solid var(--line)}.search-result-group:last-child{border-bottom:none}.search-dropdown .search-result-project{font-weight:600}.search-dropdown .search-result-milestone{color:var(--ink-2);padding-left:40px;font-size:12px}.highlights{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;margin-bottom:16px;display:flex;overflow:hidden}.highlight-item{color:var(--ink);border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:11px 18px;font-size:13.5px;display:flex}.highlight-item:last-child{border-bottom:none}.highlight-icon{flex:none;font-size:17px;line-height:1}.kpis{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:18px;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--closed);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px}.kpi .n{font-size:24px;font-weight:700}.kpi .l{letter-spacing:.5px;text-transform:uppercase;color:var(--ink-3);margin-top:2px;font-size:10.5px;font-weight:600}.kpi-substatus{color:var(--ink-3);margin-top:6px;font-size:10px;line-height:1.5}.kpi.ok{border-left-color:var(--ok)}.kpi.ok .n{color:var(--ok)}.kpi.warn{border-left-color:var(--warn)}.kpi.warn .n{color:var(--warn)}.kpi.bad{border-left-color:var(--bad)}.kpi.bad .n{color:var(--bad)}.kpi.hold{border-left-color:var(--hold)}.kpi.hold .n{color:var(--hold)}.kpi.total{border-left-color:var(--brand-2)}.kpi.total .n{color:var(--brand)}.kpi-clickable{font:inherit;text-align:left;cursor:pointer;width:100%}.kpi-clickable:hover{border-color:var(--line-2)}.kpi-clickable.kpi-selected{box-shadow:0 0 0 3px var(--brand-soft), var(--shadow);border-color:var(--brand-2);background:var(--brand-soft);border-left-width:5px}.kpi-clickable.total.kpi-selected{box-shadow:0 0 0 3px var(--brand-soft), var(--shadow);background:var(--brand-soft)}.kpi-clickable.warn.kpi-selected{box-shadow:0 0 0 3px var(--warn-soft), var(--shadow);border-color:var(--warn);background:var(--warn-soft)}.kpi-clickable.bad.kpi-selected{box-shadow:0 0 0 3px var(--bad-soft), var(--shadow);border-color:var(--bad);background:var(--bad-soft)}.kpi-clickable.ok.kpi-selected{box-shadow:0 0 0 3px var(--ok-soft), var(--shadow);border-color:var(--ok);background:var(--ok-soft)}.btn{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-s);cursor:pointer;color:var(--ink);align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;display:inline-flex}.btn:hover{background:var(--surface-2);border-color:var(--line-2)}.btn-primary{background:var(--brand-2);border-color:var(--brand-2);color:#fff}.btn-primary:hover{background:var(--brand-2-hover);border-color:var(--brand-2-hover)}.btn-danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn-danger:hover{background:#8c332f}.btn-sm{padding:4px 10px;font-size:12px}.btn-lg{justify-content:center;width:100%;padding:10px 16px;font-size:14px}.btn-link{color:var(--brand-2);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.btn-link:hover{text-decoration:underline}.chip{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);border-radius:20px;align-items:center;gap:6px;padding:4px 10px 4px 12px;font-size:12px;display:inline-flex}.milestone-row{align-items:flex-start;gap:14px;padding-bottom:6px;display:flex;overflow-x:auto}.milestone-col{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface-2);flex:0 0 360px;min-width:360px;padding:12px}.milestone-group-h{color:var(--ink);flex-wrap:wrap;align-items:center;gap:6px 8px;margin-bottom:8px;font-size:13px;display:flex}.milestone-col .empty{padding:12px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{white-space:nowrap;border:1px solid #0000;border-radius:20px;align-items:center;gap:4px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-flex}.badge-ontrack{background:var(--ok-soft);color:var(--ok);border-color:#cfe7d8}.badge-atrisk{background:var(--warn-soft);color:var(--warn);border-color:#efdfae}.badge-delayed{background:var(--bad-soft);color:var(--bad);border-color:#edd0ce}.badge-dependency{color:#6b4c94;background:#f1eaf7;border-color:#ddccec}.badge-onhold{background:var(--hold-soft);color:var(--hold);border-color:#ecd9b8}.badge-closed{background:var(--closed-soft);color:var(--closed);border-color:#dde1e7}.badge-notstarted{background:var(--closed-soft);color:var(--ink-2);border-color:#dde1e7}.badge-inprogress{background:var(--brand-soft);color:var(--brand-2);border-color:var(--brand-border)}.badge-completed{background:var(--ok-soft);color:var(--ok);border-color:#cfe7d8}.badge-zoho{background:var(--surface-2);color:var(--ink-2);border-color:var(--line)}.badge-status-good{background:var(--ok-soft);color:var(--ok);border-color:#cfe7d8}.badge-status-done{color:#fff;background:#1f5c3d;border-color:#1f5c3d}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-3);background:var(--surface-2);border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 10px;font-size:10.5px;font-weight:700}td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 10px}tbody tr:last-child td{border-bottom:none}.task-duration-edit{font:inherit;color:var(--brand-2);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit}.task-duration-edit:hover,.task-duration-edit:focus-visible{text-decoration:underline}.table-scroll{overflow-x:auto}.table-scroll-v{max-height:420px;overflow-y:auto}.table-scroll-v thead th{background:var(--surface);z-index:1;position:sticky;top:0}.zoho-reference .table-scroll-v thead th{background:var(--bg-2,#fafafa)}.empty{text-align:center;color:var(--ink-3);padding:24px;font-size:13px}.command-table-shell{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.command-table-scroll{max-height:min(560px,65vh);overflow:auto}.command-table{border-collapse:collapse;width:100%;min-width:1400px;font-size:12.5px}.command-table th{background:var(--surface-2);text-align:left;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);white-space:nowrap;z-index:2;padding:10px 12px;font-size:10.5px;font-weight:700;position:sticky;top:0}.command-table td{border-bottom:1px solid var(--line);vertical-align:top;background:var(--surface);padding:11px 12px}.command-table tbody tr:hover td{background:var(--surface-2)}.command-table tbody tr:last-child td{border-bottom:none}.ct-pname{font-weight:600}.ct-pdesc{max-width:220px;color:var(--ink-2);font-size:12px;line-height:1.45}.ct-sub{color:var(--ink-3);margin-top:1px;font-size:11px;display:block}.ct-users{align-items:center;padding-left:6px;display:flex}.ct-avatar{background:var(--brand-soft);width:26px;height:26px;color:var(--brand-2);border:1px solid var(--brand-border);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;margin-right:-6px;font-size:10.5px;font-weight:700;display:inline-flex;position:relative}.ct-avatar:hover,.ct-avatar:focus-visible{z-index:2;outline:2px solid var(--brand-2)}.command-table th:first-child,.command-table td:first-child{width:180px;min-width:180px;position:sticky;left:0}.command-table th:nth-child(2),.command-table td:nth-child(2){width:220px;min-width:220px;position:sticky;left:180px;box-shadow:4px 0 8px -4px #0d16141f}.command-table th:first-child,.command-table th:nth-child(2){z-index:3}.command-table td:first-child,.command-table td:nth-child(2){z-index:1}.ask-registry-table th:first-child,.ask-registry-table td:first-child{text-align:center;width:60px;min-width:60px}.ask-registry-table th:nth-child(2),.ask-registry-table td:nth-child(2){width:200px;min-width:200px;left:60px}.ct-refreshing{text-transform:none;letter-spacing:normal;color:var(--brand-2);margin-left:10px;font-size:10px;font-weight:600}.ct-th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.ct-th-sortable:hover{color:var(--ink);background:var(--line)}.ct-sort-indicator{color:var(--ink-3);margin-left:4px;font-size:9px;display:inline-block}.ct-th-sortable.ct-sort-active .ct-sort-indicator{color:var(--brand-2)}.ct-th-inner{flex-direction:column;align-items:flex-start;gap:5px;display:flex}.ct-th-label{cursor:pointer}.ct-th-label:hover{color:var(--ink)}.ct-th-filter{text-transform:none;letter-spacing:normal;color:var(--ink-2);border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:4px;max-width:100%;padding:2px 4px;font:500 10.5px inherit}.ct-th-filter:focus-visible{outline:2px solid var(--brand-2);outline-offset:1px}.ct-row-clickable{cursor:pointer}.ct-row-clickable:hover td{background:var(--brand-soft)}.ct-avatar-static{cursor:default}.ct-avatar-static:hover{z-index:auto;outline:none}.tabs{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.tabs button{border:1px solid var(--line);background:var(--surface);cursor:pointer;color:var(--ink-2);border-radius:20px;padding:6px 14px;font-size:12.5px;font-weight:500}.tabs button[aria-current=true]{background:var(--brand);border-color:var(--brand);color:#fff}.form-grid{gap:12px;display:grid}.form-row{gap:4px;display:grid}.form-row label{color:var(--ink-2);font-size:12px;font-weight:600}.form-row .hint{color:var(--ink-3);font-size:11.5px}.form-two{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}input[type=text],input[type=date],select,textarea{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);width:100%;padding:8px 10px;font-size:13.5px}textarea{resize:vertical;min-height:68px}input:focus,select:focus,textarea:focus{outline:2px solid var(--brand-soft);border-color:var(--brand-2)}.input-readonly{background:var(--surface-2);color:var(--ink-2);cursor:default}.input-readonly:focus{border-color:var(--line);outline:none}.error-text{color:var(--bad);font-size:12px;font-weight:500}.modal-mask{z-index:100;background:#0d16146b;justify-content:center;align-items:flex-start;padding:clamp(16px,5vh,48px) 16px;display:flex;position:fixed;inset:0;overflow:auto}.modal{background:var(--surface);border-radius:12px;width:100%;max-width:560px;box-shadow:0 18px 44px #0d161440}.modal-lg{max-width:1100px}.modal-sm{max-width:360px}.modal-h{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:15px 18px;display:flex}.modal-h h2{flex:1;font-size:15px;font-weight:600}.modal-h button{color:var(--ink-3);cursor:pointer;background:0 0;border:none;font-size:20px;line-height:1}.modal-b{max-height:62vh;padding:18px;overflow:auto}.modal-f{border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 12px 12px;justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.ptd-meta-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px 18px;margin-bottom:14px;display:grid}.ptd-field{flex-direction:column;gap:4px;font-size:13px;display:flex}.ptd-field .l{letter-spacing:.5px;text-transform:uppercase;color:var(--ink-3);font-size:10.5px;font-weight:600}.ptd-field input{padding:5px 8px;font-size:13px}.ptd-doclink{flex-direction:column;gap:4px;margin-bottom:6px;font-size:13px;display:flex}.ptd-doclink .l{letter-spacing:.5px;text-transform:uppercase;color:var(--ink-3);font-size:10.5px;font-weight:600}.ptd-doclink a{word-break:break-all}.ptd-meta-actions{justify-content:flex-end;gap:8px;margin:6px 0 18px;display:flex}.ptd-milestones-h{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:4px 0 12px;padding-top:14px;display:flex}.ptd-milestones-h h3{font-size:13.5px;font-weight:700}.ptd-milestones-h .timesheet-h{margin-bottom:0}.login-shell{background:linear-gradient(160deg, var(--brand-soft) 0%, var(--bg) 60%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;width:100%;max-width:400px;overflow:hidden;box-shadow:0 24px 60px #0d161424,0 2px 8px #0d16140f}.login-body{padding:28px 32px 32px}.login-body h1{font:700 19px/1.3 var(--font-serif);margin-bottom:6px}.login-body .form-grid{gap:16px}.login-body input[type=text],.login-body input[type=password]{padding:10px 12px;font-size:14px}.login-split{background:var(--surface);border:1px solid var(--line);border-radius:16px;width:100%;max-width:980px;min-height:560px;display:flex;overflow:hidden;box-shadow:0 24px 60px #0d161429,0 2px 8px #0d16140f}.login-pitch{color:#fff;background:radial-gradient(120% 90% at 10% 0%, #16403c 0%, var(--brand) 55%, #081815 100%);flex-direction:column;flex:50%;justify-content:space-between;padding:40px 44px;display:flex;position:relative;overflow:hidden}.login-pitch:after{content:"";pointer-events:none;border:1.5px solid #ffffff24;border-radius:50%;width:460px;height:460px;position:absolute;bottom:-140px;right:-140px}.login-pitch:before{content:"";pointer-events:none;border:1.5px solid #ffffff1a;border-radius:50%;width:300px;height:300px;position:absolute;bottom:-60px;right:-60px}.login-pitch-brand{font:700 15px/1 var(--font-sans);z-index:1;align-items:center;gap:9px;display:flex;position:relative}.login-pitch-body{z-index:1;max-width:400px;position:relative}.login-pitch-body h1{font:700 40px/1.18 var(--font-serif);letter-spacing:-.5px;margin:18px 0}.login-pitch-body p{color:#ffffffc7;font-size:14.5px;line-height:1.6}.login-pitch-foot{color:#ffffff80;z-index:1;font-size:12px;position:relative}.login-pane{flex:50%;justify-content:center;align-items:center;padding:40px;display:flex}.login-pane-inner{width:100%;max-width:320px}.login-pane-inner h2{font:700 24px/1.3 var(--font-serif);margin-bottom:8px}.login-pane-sub{color:var(--ink-2);margin-bottom:26px;font-size:13.5px}.login-pane-secured{color:var(--ink-3);text-align:center;margin-top:14px;font-size:12px}.btn-ms{border:1px solid var(--line-2);background:var(--surface);border-radius:var(--radius-s);width:100%;font:600 14px/1 var(--font-sans);color:var(--ink);cursor:pointer;justify-content:center;align-items:center;gap:10px;padding:11px 16px;display:flex}.btn-ms:hover{background:var(--surface-2);border-color:var(--ink-3)}.btn-ms:disabled{opacity:.6;cursor:not-allowed}.login-fallback{border-top:1px solid var(--line);gap:14px;margin-top:22px;padding-top:22px}.login-fallback input[type=text],.login-fallback input[type=email]{padding:10px 12px;font-size:14px}@media (width<=760px){.login-split{flex-direction:column;min-height:0}.login-pitch{padding:32px 28px}.login-pitch-body h1{margin:14px 0;font-size:30px}.login-pitch-foot{margin-top:24px}.login-pane{padding:32px 28px}}.pmeta{color:var(--ink-3);margin-top:1px;font-size:11px}.pname{font-weight:500}.mono{font-family:var(--font-mono);font-size:12px}.chev{color:var(--ink-3);font-size:11px;transition:transform .15s}@media (prefers-reduced-motion:reduce){.chev{transition:none}}.people-track-layout{grid-template-columns:300px 1fr;align-items:start;gap:16px;display:grid}@media (width<=860px){.people-track-layout{grid-template-columns:1fr}}.people-track-list{padding:0}.people-track-search{padding:14px 14px 8px}.people-track-items{max-height:640px;overflow-y:auto}.person-item{border:none;border-bottom:1px solid var(--line);text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;align-items:center;gap:10px;padding:9px 14px;display:flex}.person-item:last-child{border-bottom:none}.person-item:hover{background:var(--surface-2)}.person-item.active{background:var(--brand-soft)}.person-item:focus-visible{outline:2px solid var(--brand-2);outline-offset:-2px}.person-item .project-tile{border-radius:10px;width:36px;height:36px;font-size:12.5px}.person-item-text{flex-direction:column;gap:1px;min-width:0;display:flex}.person-item-name{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600;overflow:hidden}.person-item-role{color:var(--ink-3);font-size:11px}.ct-filters{flex-wrap:nowrap;align-items:flex-end;gap:16px;margin:14px 0 10px;display:flex;overflow-x:auto}.ct-field{flex-direction:column;flex-shrink:0;gap:4px;display:flex}.ct-field label{text-transform:uppercase;letter-spacing:.03em;color:var(--ink-3);font-size:10.5px}.ct-field select{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-s);min-width:200px;color:var(--ink);cursor:pointer;padding:7px 10px;font:500 12.5px inherit}.ct-period-inline{flex-shrink:0}.ct-period-inline .timesheet-h{margin-bottom:0}.status{white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.status .d{border-radius:50%;flex:none;width:8px;height:8px}.status.good{color:var(--ok)}.status.good .d{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}.status.warn{color:var(--warn)}.status.warn .d{background:var(--warn);box-shadow:0 0 0 3px var(--warn-soft)}.status.crit{color:var(--bad)}.status.crit .d{background:var(--bad);box-shadow:0 0 0 3px var(--bad-soft)}.mini-table{border-collapse:collapse;width:100%;font-size:12.5px}.mini-table th{text-align:left;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);padding:6px 10px;font-size:10.5px;font-weight:600}.mini-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:7px 10px}.mini-table tr:last-child td{border-bottom:none}.footnote{color:var(--ink-3);border-top:1px solid var(--line);margin:22px 2px 0;padding-top:14px;font-size:12px}.two-col{grid-template-columns:1.4fr 1fr;align-items:start;gap:16px;display:grid}@media (width<=900px){.two-col{grid-template-columns:1fr}}.rank-list{margin:0;padding:0;list-style:none}.rank-list li{border-bottom:1px solid var(--line)}.rank-list li:last-child{border-bottom:none}.rank-row{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:12px;padding:10px 16px;display:flex}.rank-row:hover{background:var(--surface-2)}.rank-row:focus-visible{outline:2px solid var(--brand-2);outline-offset:-2px}.rank-list .rn{font-family:var(--font-mono);color:var(--ink-3);flex:none;width:16px;font-size:11.5px}.rank-list .rname{flex:1;min-width:0;font-size:13px;font-weight:500}.rank-list .rmeta{color:var(--ink-3);white-space:nowrap;font-size:11px}.rank-list .rhrs{font-family:var(--font-mono);flex:none;font-size:12.5px;font-weight:500}.rank-list li.open .chev{transform:rotate(180deg)}.rank-people{flex-direction:column;gap:2px;padding:2px 16px 12px 44px;display:flex}.rank-person{border-radius:var(--radius-s);text-align:left;width:100%;font:inherit;color:var(--ink-2);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;font-size:12.5px;display:flex}.rank-person:hover,.rank-person:focus-visible{background:var(--surface-2);color:var(--ink)}.rank-list-scroll{max-height:420px;overflow-y:auto}.rank-list-more{border:none;border-top:1px solid var(--line);width:100%;color:var(--brand-2);font:inherit;text-align:center;cursor:pointer;background:0 0;padding:10px 16px;font-size:12.5px;font-weight:600;display:block}.rank-list-more:hover{background:var(--surface-2)}.spark{align-items:flex-end;gap:4px;height:56px;display:flex}.spark i{background:var(--brand-2);opacity:.8;border-radius:3px 3px 0 0;flex:1;min-height:2px;display:block}.spark-labels{color:var(--ink-3);gap:4px;margin-top:6px;font-size:10px;display:flex}.spark-labels span{text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.client-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:14px 16px;display:grid}.client-card{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface-2);padding:10px 12px}.client-card .cn{font-size:12px;font-weight:600}.client-card .ch{font-family:var(--font-mono);margin-top:4px;font-size:15px}.client-card .cs{color:var(--ink-3);font-size:11px}.attn-item{border-bottom:1px solid var(--line);align-items:baseline;gap:10px;padding:9px 16px;font-size:12.5px;display:flex}.attn-item:last-child{border-bottom:none}.attn-item b{font-weight:600}.attn-item .attn-meta{color:var(--ink-2)}.checkbox-list{border:1px solid var(--line);border-radius:var(--radius-s);gap:6px;max-height:160px;padding:8px 10px;display:grid;overflow-y:auto}.checkbox-list label{color:var(--ink);align-items:center;gap:8px;font-size:12.5px;font-weight:400;display:flex}.checkbox-list input[type=checkbox]{width:auto}.time-entry-form{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface-2);gap:8px;margin-bottom:8px;padding:10px;display:grid}.time-entry-fields{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.time-entry-form textarea{border:1px solid var(--line);border-radius:var(--radius-s);resize:vertical;width:100%;padding:6px 8px;font-size:13px}.time-entry-list{gap:8px;max-height:220px;display:grid;overflow-y:auto}.time-entry-row{border:1px solid var(--line-2,var(--line));border-radius:var(--radius-s);padding:8px 10px;font-size:12.5px}.time-entry-row-h{align-items:center;gap:10px;margin-bottom:4px;display:flex}.time-entry-desc{color:var(--ink)}.timesheet-h{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.timesheet-controls{flex-wrap:nowrap;align-items:center;gap:8px;display:flex}.timesheet-range{color:var(--ink);text-align:center;min-width:150px;font-size:13px;font-weight:600}.period-date-input{width:auto;padding:6px 8px;font-size:12.5px}.period-week-range{flex-wrap:nowrap;align-items:center;gap:6px;display:inline-flex}.timesheet-table{min-width:100%}.timesheet-table th,.timesheet-table td{white-space:nowrap}.timesheet-col-h{text-align:center;font-size:11.5px}.timesheet-col-h .dim{font-size:10.5px}.timesheet-cell{text-align:center}.timesheet-total-row td{border-top:2px solid var(--line);background:var(--surface-2);font-weight:600}.note{border-radius:var(--radius-s);margin-bottom:14px;padding:10px 13px;font-size:12.5px;line-height:1.6}.note-hold{background:var(--hold-soft);color:#6b4b18;border:1px solid #ecd9b8}.note-bad{background:var(--bad-soft);color:#7c2b27;border:1px solid #edd0ce}.note-info{background:var(--brand-soft);border:1px solid var(--brand-border);color:#0f3d38}.project-note-add{border:1px dashed var(--line);border-radius:var(--radius-s);color:var(--brand-2);cursor:pointer;background:0 0;align-items:center;gap:6px;margin-bottom:14px;padding:7px 12px;font-size:12.5px;display:inline-flex}.project-note-add:hover{background:var(--brand-soft);border-color:var(--brand-border)}.project-note{background:var(--brand-soft);border:1px solid var(--brand-border);border-radius:var(--radius-s);color:#0f3d38;margin-bottom:14px;padding:10px 13px;font-size:12.5px}.project-note p{white-space:pre-wrap;line-height:1.6}.project-note a{word-break:break-all}.project-note-h{justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex}.project-note-label{letter-spacing:.4px;text-transform:uppercase;color:#3f6b65;font-size:10.5px;font-weight:700}.project-note-actions{flex:none;gap:10px;display:flex}.project-note-actions .btn-link{font-size:11.5px}.project-note-editing textarea{width:100%;font:inherit;border:1px solid var(--line);border-radius:var(--radius-s);resize:vertical;margin-bottom:8px;padding:8px 10px;font-size:12.5px}.project-note-editing .project-note-actions{justify-content:flex-end}.stage-track{flex-wrap:wrap;align-items:flex-start;row-gap:10px;margin:4px 0 14px;display:flex}.stage-step{flex:auto;align-items:center;min-width:0;display:flex}.stage-step:last-child{flex:none}.stage-node{flex:none;align-items:center;gap:7px;display:flex}.stage-dot{background:var(--surface);border:2px solid var(--line);border-radius:50%;flex:none;width:13px;height:13px}.stage-label{color:var(--ink-3);white-space:nowrap;font-size:11.5px;font-weight:600}.stage-step.done .stage-dot{background:var(--ok);border-color:var(--ok)}.stage-step.done .stage-label{color:var(--ink-2)}.stage-step.active .stage-dot{background:var(--brand-2);border-color:var(--brand-2);box-shadow:0 0 0 4px var(--brand-soft)}.stage-step.active .stage-label{color:var(--ink);font-weight:700}.stage-line{background:var(--line);flex:auto;min-width:16px;height:2px;margin:0 10px}.stage-line.done{background:var(--ok)}@media (width<=560px){.stage-track{flex-direction:column;align-items:flex-start;gap:6px}.stage-step{flex-direction:column;align-items:flex-start;width:100%}.stage-line{display:none}}
