:root{
  --bg:#080a0a;--sidebar:#050707;--panel:#111515;--panel2:#171c1c;--panel3:#1d2323;--border:#263030;
  --text:#f4f7f7;--muted:#8f9b9b;--teal:#16b8a6;--teal2:#0f9587;--teal-soft:rgba(22,184,166,.12);
  --green:#22c55e;--yellow:#eab308;--red:#ef4444;--blue:#38bdf8;--shadow:0 24px 80px rgba(0,0,0,.35);
  --radius:14px;--sidebar-w:254px
}
*{box-sizing:border-box} html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif} body{overflow:hidden}
button,input,select,textarea{font:inherit} button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}
.login-view{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 50% 0%,rgba(22,184,166,.09),transparent 34%),var(--bg);padding:24px}.login-card{width:min(440px,100%);background:linear-gradient(180deg,#111616,#0c1010);border:1px solid var(--border);border-radius:22px;padding:34px;box-shadow:var(--shadow)}.brand-mark{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:var(--teal);color:#03100f;font-weight:900;font-size:24px;margin-bottom:22px}.brand-mark.small{width:38px;height:38px;border-radius:10px;font-size:20px;margin:0}.eyebrow{font-size:11px;letter-spacing:.16em;color:var(--teal);font-weight:800}.login-card h1{margin:6px 0 10px;font-size:29px}.login-form{display:grid;gap:16px;margin-top:28px}.login-form label,.form-grid label{display:grid;gap:7px;color:#c7d0d0;font-size:12px;font-weight:650}.login-form input,.form-grid input,.form-grid select,.form-grid textarea,.table-tools input,.table-tools select{width:100%;background:#0a0e0e;border:1px solid #303a3a;color:var(--text);border-radius:10px;padding:11px 12px;outline:none}.login-form input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.table-tools input:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}.login-row{display:flex;align-items:center;justify-content:space-between}.check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center!important;gap:8px!important}.check input{width:auto}.demo-badge{font-size:10px;border:1px solid rgba(234,179,8,.35);color:#f6d95c;background:rgba(234,179,8,.08);padding:5px 8px;border-radius:999px;font-weight:800}.login-note{font-size:11px;line-height:1.55;color:#738080;margin:18px 0 0}.form-error{min-height:16px;color:#ff7f7f;font-size:12px}.wide{width:100%}
.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;height:100vh}.sidebar{background:var(--sidebar);border-right:1px solid #172020;display:flex;flex-direction:column;min-width:0;height:100vh;overflow:hidden}.sidebar-brand{height:86px;border-bottom:1px solid #172020;display:flex;align-items:center;gap:12px;padding:0 18px}.brand-top{font-size:10px;letter-spacing:.18em;color:var(--teal);font-weight:800}.brand-title{font-size:12px;line-height:1.35;letter-spacing:.06em;font-weight:800;color:#dbe1e1}.nav{padding:14px 10px;overflow-y:auto;overflow-x:hidden;flex:1 1 auto;min-height:0}.nav-section{margin:18px 8px 7px;font-size:9px;letter-spacing:.16em;color:#566363;font-weight:900}.nav-section:first-child{margin-top:4px}.nav-item{width:100%;border:0;background:transparent;color:#9da9a9;display:flex;gap:11px;align-items:center;padding:10px 11px;border-radius:10px;margin:2px 0;text-align:left;font-size:13px;font-weight:650}.nav-item:hover{background:#101515;color:#dbe6e6}.nav-item.active{background:var(--teal-soft);color:#e8ffff;box-shadow:inset 3px 0 0 var(--teal)}.nav-icon{width:19px;text-align:center;color:#718080}.nav-item.active .nav-icon{color:var(--teal)}.sidebar-footer{border-top:1px solid #172020;padding:12px;flex:0 0 auto;background:var(--sidebar);position:relative;z-index:3;box-shadow:0 -10px 24px rgba(0,0,0,.16)}.user-card{width:100%;background:#0b1010;border:0;color:var(--text);border-radius:11px;padding:9px;display:grid;grid-template-columns:36px 1fr auto;gap:9px;align-items:center;text-align:left}.avatar{width:34px;height:34px;border-radius:9px;background:var(--teal-soft);color:var(--teal);display:grid;place-items:center;font-size:11px;font-weight:900}.user-meta{display:flex;flex-direction:column;min-width:0}.user-meta strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-meta small{font-size:10px;color:#738080;margin-top:2px}.logout-link{width:100%;border:0;background:transparent;color:#687575;text-align:left;padding:8px 10px;font-size:11px}.logout-link:hover{color:#ff8a8a}
.main{min-width:0;display:flex;flex-direction:column;height:100vh}.topbar{height:64px;flex:0 0 64px;border-bottom:1px solid #172020;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:rgba(8,10,10,.96)}.search-wrap{width:min(560px,52vw);display:flex;align-items:center;gap:8px;background:#0d1111;border:1px solid #222b2b;border-radius:10px;padding:0 12px}.search-wrap input{width:100%;border:0;outline:0;background:transparent;color:var(--text);padding:10px 4px}.search-wrap span{color:#586565}.top-actions{display:flex;gap:8px}.btn{border:1px solid #344040;background:#111717;color:#dce5e5;padding:9px 13px;border-radius:9px;font-size:12px;font-weight:750}.btn:hover{background:#182020}.btn.primary{background:var(--teal);color:#02110f;border-color:var(--teal);font-weight:850}.btn.primary:hover{background:#21cbb8}.btn.danger{border-color:rgba(239,68,68,.35);color:#ff8c8c;background:rgba(239,68,68,.06)}.btn.ghost{background:transparent}.icon-btn{width:34px;height:34px;border:1px solid #2a3434;background:#101515;color:#aeb8b8;border-radius:9px;font-size:19px}.page-host{overflow:auto;padding:26px 26px 70px}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:22px}.page-header h1{margin:3px 0 6px;font-size:25px;letter-spacing:-.025em}.page-header p{margin:0;color:var(--muted);font-size:12px}.page-actions{display:flex;gap:8px;flex-wrap:wrap}.filters-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.filter-pill{background:#101515;border:1px solid #263030;color:#93a1a1;border-radius:999px;padding:7px 10px;font-size:11px}.filter-pill.active{border-color:rgba(22,184,166,.4);color:#9bf3e8;background:var(--teal-soft)}
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.kpi-card{background:linear-gradient(180deg,#121717,#0e1212);border:1px solid var(--border);border-radius:var(--radius);padding:16px;min-width:0}.kpi-label{font-size:10px;letter-spacing:.08em;color:#7d8989;font-weight:800;text-transform:uppercase}.kpi-value{font-size:27px;font-weight:850;letter-spacing:-.04em;margin:8px 0 4px}.kpi-meta{font-size:10px;color:#697777}.trend-up{color:var(--green)}.trend-warn{color:var(--yellow)}.trend-down{color:var(--red)}
.dashboard-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:14px}.panel{background:linear-gradient(180deg,#111616,#0e1212);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.panel.pad{padding:16px}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid #222b2b}.panel-head h3{font-size:12px;margin:0}.panel-head small{color:#6f7b7b}.bar-list{display:grid;gap:12px;margin-top:4px}.bar-row{display:grid;grid-template-columns:120px 1fr 64px;gap:10px;align-items:center;font-size:11px}.bar-track{height:8px;background:#1b2222;border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,var(--teal2),var(--teal));border-radius:999px}.status-donut{display:flex;align-items:center;justify-content:center;gap:28px;padding:20px}.donut{width:142px;height:142px;border-radius:50%;background:conic-gradient(var(--green) 0 55%,var(--teal) 55% 78%,var(--yellow) 78% 92%,var(--red) 92% 100%);position:relative}.donut:after{content:"Transition";position:absolute;inset:19px;border-radius:50%;background:#0f1313;display:grid;place-items:center;color:#7c8989;font-size:10px}.legend{display:grid;gap:9px}.legend-row{display:flex;align-items:center;gap:8px;font-size:11px}.dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.dot.green{background:var(--green)}.dot.yellow{background:var(--yellow)}.dot.red{background:var(--red)}.dot.teal{background:var(--teal)}.dot.grey{background:#697474}.attention-list{display:grid}.attention-item{display:grid;grid-template-columns:10px 1fr auto;gap:10px;padding:12px 16px;border-bottom:1px solid #202929;align-items:start}.attention-item:last-child{border-bottom:0}.attention-item strong{font-size:11px}.attention-item p{margin:3px 0 0;color:#7f8b8b;font-size:10px;line-height:1.4}.attention-item time{color:#657171;font-size:9px}
.table-card{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#0d1111}.table-tools{display:flex;justify-content:space-between;gap:10px;padding:12px;border-bottom:1px solid #222b2b;align-items:center;flex-wrap:wrap}.table-tools-left,.table-tools-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.table-tools input{width:240px;padding:8px 10px;font-size:11px}.table-tools select{width:auto;min-width:120px;padding:8px 10px;font-size:11px}.table-count{font-size:10px;color:#738080}.data-table{width:100%;border-collapse:collapse;font-size:11px}.data-table th{padding:10px 12px;text-align:left;font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:#6f7d7d;background:#0b0f0f;border-bottom:1px solid #222b2b;white-space:nowrap}.data-table td{padding:12px;border-bottom:1px solid #1d2525;color:#bec8c8;white-space:nowrap}.data-table tbody tr{cursor:pointer;transition:.15s;background:#0e1212}.data-table tbody tr:hover{background:#151b1b;box-shadow:inset 3px 0 0 var(--teal)}.data-table tbody tr:last-child td{border-bottom:0}.cell-title{font-weight:750;color:#eff5f5}.cell-sub{display:block;color:#687575;font-size:9px;margin-top:2px}.status{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:800;border:1px solid transparent}.status.green{color:#86efac;background:rgba(34,197,94,.08);border-color:rgba(34,197,94,.22)}.status.yellow{color:#fde047;background:rgba(234,179,8,.08);border-color:rgba(234,179,8,.22)}.status.red{color:#fca5a5;background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.22)}.status.teal{color:#7cebdc;background:var(--teal-soft);border-color:rgba(22,184,166,.22)}.status.grey{color:#a4afaf;background:rgba(130,145,145,.08);border-color:rgba(130,145,145,.2)}.money{font-variant-numeric:tabular-nums;font-weight:750;color:#e5eeee}.progress{display:flex;align-items:center;gap:8px}.progress-track{width:74px;height:6px;background:#232c2c;border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--teal);border-radius:999px}.progress span{font-size:9px;color:#7d8989}.empty{padding:36px;text-align:center;color:#758181}
.tabs{display:flex;gap:4px;border-bottom:1px solid #222b2b;margin-bottom:16px}.tab{border:0;background:transparent;color:#738080;padding:9px 12px;font-size:11px;font-weight:700;border-bottom:2px solid transparent}.tab.active{color:#dffefa;border-bottom-color:var(--teal)}
.drawer-backdrop,.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.48);z-index:40;backdrop-filter:blur(2px)}.drawer{position:fixed;z-index:50;right:0;top:0;height:100vh;width:min(560px,96vw);background:#0b0f0f;border-left:1px solid #2a3434;box-shadow:-28px 0 90px rgba(0,0,0,.42);display:flex;flex-direction:column}.drawer-head{padding:18px 20px;border-bottom:1px solid #222b2b;display:flex;justify-content:space-between;align-items:flex-start}.drawer-head h2{margin:5px 0 0;font-size:19px}.drawer-body{padding:18px 20px;overflow:auto;flex:1}.drawer-footer{padding:13px 20px;border-top:1px solid #222b2b;display:flex;gap:8px;justify-content:flex-end}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .span-2{grid-column:1/-1}.form-grid textarea{min-height:92px;resize:vertical}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.detail-item{padding:12px;border:1px solid #222b2b;background:#101515;border-radius:10px}.detail-item small{display:block;color:#6f7d7d;font-size:9px;text-transform:uppercase;letter-spacing:.07em}.detail-item strong{display:block;margin-top:5px;font-size:11px}.activity{margin-top:20px}.activity h4{font-size:11px;margin:0 0 8px}.activity-row{border-left:2px solid #263232;padding:4px 0 13px 12px}.activity-row strong{font-size:10px}.activity-row p{margin:3px 0;color:#7c8989;font-size:10px}.activity-row time{font-size:9px;color:#5c6969}
.modal{position:fixed;z-index:60;left:50%;top:50%;transform:translate(-50%,-50%);width:min(460px,92vw);background:#0d1212;border:1px solid #2b3636;border-radius:14px;box-shadow:var(--shadow)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:15px 16px;border-bottom:1px solid #222b2b}.modal-head h3{margin:0;font-size:14px}.modal-body{padding:16px;color:#aebaba;font-size:12px;line-height:1.55}.modal-footer{padding:12px 16px;border-top:1px solid #222b2b;display:flex;justify-content:flex-end;gap:8px}.quick-add-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.quick-add{border:1px solid #283232;background:#101515;color:#b9c4c4;border-radius:10px;padding:12px;text-align:left}.quick-add:hover{border-color:var(--teal);color:#dffffa}.quick-add strong{display:block;font-size:11px}.quick-add small{display:block;color:#667272;margin-top:4px;font-size:9px}.toast-host{position:fixed;right:18px;bottom:18px;z-index:100;display:grid;gap:8px}.toast{background:#152020;border:1px solid #294040;color:#dff7f4;padding:10px 13px;border-radius:10px;box-shadow:var(--shadow);font-size:11px;min-width:240px}.toast.error{border-color:rgba(239,68,68,.4);color:#ffc0c0}
.report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.report-card{border:1px solid var(--border);background:#0f1414;border-radius:12px;padding:16px}.report-card h3{font-size:12px;margin:0 0 5px}.report-card p{font-size:10px;color:#718080;line-height:1.5;min-height:44px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.settings-card{border:1px solid var(--border);background:#0f1414;border-radius:12px;padding:16px}.settings-card h3{margin:0 0 6px;font-size:12px}.settings-card p{font-size:10px;color:#718080}
@media(max-width:1100px){:root{--sidebar-w:220px}.kpi-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.report-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){body{overflow:auto}.app-shell{display:block;height:auto}.sidebar{position:fixed;z-index:80;left:-260px;width:250px;height:100vh;transition:.2s}.main{height:auto;min-height:100vh}.topbar{position:sticky;top:0;z-index:30}.page-host{padding:18px}.kpi-grid{grid-template-columns:1fr 1fr}.form-grid,.detail-grid,.settings-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.data-table{min-width:850px}.table-card{overflow:auto}.report-grid{grid-template-columns:1fr}.search-wrap{width:54vw}}

/* v0.2 dashboard, GTM and PnL Ops */
.kpi-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.widget-filter{max-width:118px;background:#0b1010;border:1px solid #263131;color:#8e9b9b;border-radius:8px;padding:5px 7px;font-size:9px;outline:none}.widget-filter:focus{border-color:var(--teal)}.widget-head{padding:0 0 14px!important;border:0!important;margin-bottom:2px}.panel>.widget-head{padding:14px 16px!important;border-bottom:1px solid #222b2b!important;margin:0}.cell-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#8fded5!important;font-size:10px}.offering-flow{margin-bottom:16px}.stage-strip{display:grid;grid-template-columns:repeat(7,minmax(90px,1fr));gap:8px;overflow:auto}.stage-node{background:#0b1010;border:1px solid #263131;border-radius:10px;padding:12px;min-width:90px}.stage-node span{display:block;color:#758383;font-size:9px;text-transform:uppercase;letter-spacing:.06em}.stage-node strong{display:block;margin-top:7px;font-size:22px;color:#ddfdf8}.month-switcher{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:-4px 0 16px}.month-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#6e7a7a;font-weight:800;margin-right:3px}.month-btn{background:#0d1212;border:1px solid #293333;color:#8c9999;border-radius:9px;padding:8px 11px;font-size:10px;font-weight:750}.month-btn:hover{border-color:#3a4848;color:#d7e3e3}.month-btn.active{background:var(--teal-soft);border-color:rgba(22,184,166,.5);color:#9ff8ed}.month-help{margin-left:auto}.info-callout{border:1px solid rgba(22,184,166,.24);background:rgba(22,184,166,.06);border-radius:12px;padding:12px 14px;margin-bottom:16px}.info-callout strong{font-size:11px;color:#b9fff6}.info-callout p{font-size:10px;color:#849292;line-height:1.5;margin:4px 0 0}.danger-callout{border-color:rgba(239,68,68,.3);background:rgba(239,68,68,.06)}.danger-callout strong{color:#ffc0c0}.info-callout code,.code-box{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#9ff8ed}.code-box{background:#080c0c;border:1px solid #263030;border-radius:9px;padding:11px;margin:10px 0;line-height:1.7}.util-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}.util-bar-row{grid-template-columns:128px 1fr 72px}.bar-fill.bar-yellow{background:linear-gradient(90deg,#a47e05,var(--yellow))}.bar-fill.bar-red{background:linear-gradient(90deg,#9d2828,var(--red))}.util-tabs{margin-top:20px}.util-table .data-table{min-width:1050px}.source-note{font-size:9px;color:#627070;align-self:center}.loading-line{height:3px;border-radius:99px;background:linear-gradient(90deg,transparent,var(--teal),transparent);background-size:200% 100%;animation:loadmove 1.1s linear infinite;margin-bottom:12px}@keyframes loadmove{from{background-position:200% 0}to{background-position:-200% 0}}
@media(max-width:1100px){.stage-strip{grid-template-columns:repeat(4,minmax(100px,1fr))}.util-grid{grid-template-columns:1fr}}
@media(max-width:760px){.kpi-top{align-items:flex-start;flex-direction:column}.widget-filter{max-width:100%;width:100%}.stage-strip{grid-template-columns:repeat(3,minmax(100px,1fr))}.month-help{margin-left:0}.util-bar-row{grid-template-columns:100px 1fr 62px}}

/* v0.3: record hyperlinks + resource project allocation */
.link-indicator{display:inline-grid;place-items:center;margin-left:6px;width:16px;height:16px;border-radius:5px;background:var(--teal-soft);color:var(--teal);font-size:9px;vertical-align:1px}.record-links,.resource-project-section{margin-top:20px;border-top:1px solid #222b2b;padding-top:16px}.record-links-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:9px}.record-links-head h4{margin:0;font-size:11px}.record-links-head span{font-size:9px;color:#697777;text-transform:uppercase;letter-spacing:.07em}.record-links-list{display:grid;gap:8px}.record-link{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:10px;padding:10px 11px;border:1px solid #243030;background:#0e1414;border-radius:10px;text-decoration:none;color:#d9e5e5;transition:.15s}.record-link:hover{border-color:rgba(20,184,166,.55);background:rgba(20,184,166,.07);transform:translateY(-1px)}.record-link-icon{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;background:var(--teal-soft);color:var(--teal);font-size:12px}.record-link strong{display:block;font-size:10px}.record-link small{display:block;margin-top:3px;color:#687777;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:420px}.record-links-empty{padding:11px 12px;border:1px dashed #283333;background:#0d1111;border-radius:10px;color:#758181;font-size:10px}.record-links-empty small{display:block;margin-top:5px;color:#596666}.record-links-empty b{color:#8dded4}.resource-projects{min-width:280px;max-width:390px}.project-cell-list{display:grid;gap:6px}.project-cell-item{padding-left:9px;border-left:2px solid #253535}.project-cell-item strong{display:block;font-size:10px;line-height:1.3;color:#d2dddd;font-weight:650}.project-cell-item small{display:block;margin-top:2px;font-size:9px;color:#687777}.project-more{font-size:9px;color:var(--teal);font-weight:750}.project-allocation-list{display:grid;gap:8px}.project-allocation{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #222f2f;background:#0f1414;border-radius:10px;padding:10px 11px}.project-allocation>div:first-child{min-width:0}.project-allocation strong{display:block;font-size:10px;color:#dce7e7}.project-allocation small{display:block;margin-top:3px;font-size:9px;color:#677575}.project-hours{text-align:right;white-space:nowrap}.project-hours>strong{color:#b8fff5}.util-table .data-table{min-width:1320px}@media(max-width:760px){.record-link small{max-width:260px}.project-allocation{grid-template-columns:1fr}.project-hours{text-align:left}}
