:root{
  --bg:#edf0f1;--shell:#f6f7f8;--panel:#fff;--panel2:#f7f9fa;--text:#15191d;--muted:#858e97;--line:#e4e8eb;
  --black:#111419;--accent:#ffad2f;--green:#39a76d;--yellow:#dba23e;--red:#df6262;--gray:#69727b;
  --shadow:0 18px 60px rgba(27,37,46,.08);--radius:25px;
}
body.dark{--bg:#0d1013;--shell:#12161a;--panel:#191e23;--panel2:#20262c;--text:#f3f5f6;--muted:#98a1aa;--line:#2c3339;--black:#f4f5f6;--shadow:0 18px 60px rgba(0,0,0,.22)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:13px}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.hidden{display:none!important}a{color:inherit}.mono{font-variant-numeric:tabular-nums}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(450px,100%);background:var(--panel);border-radius:32px;padding:34px;box-shadow:var(--shadow)}.brandmark{width:54px;height:54px;border-radius:18px;background:#111419;color:#fff;display:grid;place-items:center;font-weight:900;letter-spacing:.05em;margin-bottom:20px}.login-card h1{margin:0 0 6px;font-size:32px;letter-spacing:-.04em}.login-card .sub{color:var(--muted)}
.field{display:grid;gap:6px}.field label{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:800}.field input,.field select,.field textarea,input.control,select.control,textarea.control{width:100%;border:1px solid var(--line);background:var(--panel2);border-radius:14px;padding:11px 12px;outline:none}.field textarea,textarea.control{min-height:90px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:#99b8ee;box-shadow:0 0 0 3px rgba(90,140,230,.12)}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.full{grid-column:1/-1}.checkgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.check{display:flex;align-items:flex-start;gap:8px;padding:10px;border:1px solid var(--line);border-radius:13px;background:var(--panel2)}.check input{width:auto;margin-top:2px}.check b{display:block;font-size:11px}.check small{color:var(--muted)}
.btn{border:0;border-radius:13px;padding:10px 13px;font-size:11px;font-weight:850;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn.primary{background:#111419;color:#fff}.dark .btn.primary{background:#f3f5f6;color:#111419}.btn.accent{background:var(--accent);color:#21170a}.btn.ghost{background:var(--panel2);border:1px solid var(--line);color:var(--text)}.btn.danger{background:#ffe9e9;color:#a23a3a}.btn.locked{opacity:.5}.btn.icon{width:40px;height:40px;padding:0;border-radius:14px;font-size:18px}.btn.fullw{width:100%;margin-top:18px}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.error{margin-top:12px;padding:11px 12px;background:#fff0f0;color:#9e3333;border-radius:13px;font-size:11px}.notice{padding:12px 13px;border:1px solid var(--line);border-radius:15px;background:var(--panel2);font-size:11px;line-height:1.5}.notice strong{display:block;margin-bottom:3px}
.app{display:grid;grid-template-columns:255px minmax(0,1fr);gap:14px;max-width:1600px;margin:14px auto;padding:0 14px;min-height:calc(100vh - 28px);overflow:visible}.sidebar{position:sticky;top:14px;height:calc(100vh - 28px);background:var(--panel);border-radius:28px;padding:16px 12px;box-shadow:var(--shadow);display:flex;flex-direction:column;z-index:4}.brand{display:flex;gap:10px;align-items:center;padding:4px 7px 18px}.brand .brandmark{width:42px;height:42px;border-radius:14px;margin:0;font-size:10px}.brand b{display:block}.brand small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.navlabel{padding:0 10px 7px;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.06em;font-weight:800}.nav{display:grid;gap:5px}.nav button{border:0;background:transparent;color:#5f6871;text-align:left;border-radius:13px;padding:11px 12px;font-weight:750}.dark .nav button{color:#a6afb7}.nav button.active{background:#111419;color:#fff}.dark .nav button.active{background:#f3f5f6;color:#111419}.profile{margin-top:auto;padding:12px;border-radius:17px;background:var(--panel2);display:grid;grid-template-columns:38px 1fr auto;gap:9px;align-items:center}.avatar{width:38px;height:38px;border-radius:13px;background:#111419;color:#fff;display:grid;place-items:center;font-size:10px;font-weight:900}.dark .avatar{background:#f3f5f6;color:#111419}.profile b{display:block;font-size:10px}.profile span,.profile small{display:block;color:var(--muted);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.main{padding:14px 0 60px;min-width:0}.view-tools{display:flex;justify-content:flex-end;margin-bottom:8px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px}.topbar h1{font-size:30px;letter-spacing:-.04em;margin:0 0 5px}.subtitle{color:var(--muted);font-size:11px}.badge{display:inline-flex;align-items:center;padding:6px 9px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);font-size:9px;font-weight:800;color:var(--muted)}
.grid{display:grid;gap:13px}.metrics{grid-template-columns:repeat(4,1fr)}.card{background:var(--panel);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.metric{cursor:pointer;transition:.15s transform,.15s box-shadow}.metric:hover{transform:translateY(-2px)}.metric.active-filter{outline:2px solid var(--accent)}.metric .num{display:block;font-size:31px;letter-spacing:-.05em;margin:8px 0}.metric.hot{background:#fff7e7}.dark .metric.hot{background:#2a2418}.summarygrid{grid-template-columns:1fr 1fr}.signal{display:flex;justify-content:space-between;align-items:center;gap:14px}.section{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:25px 2px 11px}.section h2{font-size:18px;margin:0 0 3px;letter-spacing:-.02em}.section .muted,.muted{color:var(--muted);font-size:10px}.split{display:grid;grid-template-columns:1.25fr .75fr;gap:13px}.donut-wrap{display:flex;align-items:center;gap:22px}.donut{width:145px;height:145px;border-radius:50%;position:relative}.donut:after{content:"";position:absolute;inset:25px;border-radius:50%;background:var(--panel)}.legend{display:grid;gap:8px}.legend div{display:flex;align-items:center;gap:7px;font-size:10px}.dot{width:9px;height:9px;border-radius:50%}.dot.green{background:var(--green)}.dot.yellow{background:var(--yellow)}.dot.red{background:var(--red)}.dot.gray{background:var(--gray)}
.pill{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:9px;font-weight:850}.pill.green{background:#e7f7ed;color:#287b51}.pill.yellow{background:#fff4dc;color:#986716}.pill.red{background:#ffebeb;color:#a63c3c}.pill.gray{background:#edf0f2;color:#68727a}.dark .pill.green{background:#173126;color:#77d5a1}.dark .pill.yellow{background:#372c17;color:#e5bd6d}.dark .pill.red{background:#3a1e1e;color:#ef9b9b}.dark .pill.gray{background:#292f35;color:#aab3bb}.trend{font-size:14px;font-weight:900}.trend.up{color:var(--green)}.trend.flat{color:var(--muted)}.trend.down{color:var(--red)}
.queue{display:grid;gap:8px}.queue-row{display:grid;grid-template-columns:1.25fr .8fr auto;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.queue-row:first-child{border-top:0}.queue-row b{font-size:11px}.queue-row .text{font-size:10px;margin-top:3px}.queue-row.clickable{cursor:pointer}.queue-row.clickable:hover{background:var(--panel2);margin:0 -9px;padding-left:9px;padding-right:9px;border-radius:13px}
.searchrow{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:13px}.search{display:flex;align-items:center;gap:7px;background:var(--panel);border-radius:14px;padding:0 12px;border:1px solid var(--line);min-width:280px}.search input{border:0;background:transparent;padding:10px 0;outline:none;width:100%}.projectgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.projectcard{background:var(--panel);border-radius:23px;padding:18px;box-shadow:var(--shadow)}.phead{display:flex;justify-content:space-between;gap:10px}.phead h3{margin:0;font-size:15px}.meta{color:var(--muted);font-size:9px;margin-top:3px}.pstats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:15px}.pstat{padding:10px;border-radius:14px;background:var(--panel2)}.pstat span{display:block;color:var(--muted);font-size:8px}.pstat b{display:block;margin-top:3px;font-size:11px}.decisionbox{padding:10px;border-radius:13px;background:#fff2e1;color:#94600e;font-size:10px;font-weight:750;margin-top:11px}.dark .decisionbox{background:#312719;color:#d9ad64}
.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:13px}.tab{border:0;background:var(--panel);box-shadow:var(--shadow);padding:9px 12px;border-radius:12px;font-size:10px;font-weight:800;color:var(--muted)}.tab.active{background:#111419;color:#fff}.dark .tab.active{background:#f3f5f6;color:#111419}.project-head-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.active-meeting-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 13px;margin-bottom:12px;border-radius:16px;background:#fff3dd;border:1px solid #efd4a2;color:#81520e;font-size:10px}.dark .active-meeting-bar{background:#322814;border-color:#59451f;color:#efc779}
.overview-grid{grid-template-columns:repeat(3,1fr)}.kv{display:grid;gap:4px}.kv span{font-size:9px;color:var(--muted)}.kv b{font-size:12px}.statebox{padding:12px;border-radius:15px;background:var(--panel2);margin-top:9px;line-height:1.45}.workflow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:8px;align-items:center}.workflow .node{padding:11px;border-radius:14px;background:var(--panel2);font-size:10px}.arrow{color:var(--muted)}
.stage-card{padding:15px 0;border-top:1px solid var(--line)}.stage-card:first-child{border-top:0}.stage-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.stage-title{font-weight:850}.stage-meta{color:var(--muted);font-size:9px;margin-top:3px}.stage-info{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:11px}.stage-info>div{background:var(--panel2);border-radius:12px;padding:9px}.stage-info span{display:block;color:var(--muted);font-size:8px}.stage-info b{font-size:10px;display:block;margin-top:3px}.mini-state{margin-top:9px;font-size:10px;line-height:1.5}.status-history{margin-top:9px;padding-top:9px;border-top:1px dashed var(--line);display:grid;gap:6px}.history-line{display:grid;grid-template-columns:130px 100px 1fr;gap:9px;font-size:9px;color:var(--muted)}
.gantt{overflow:auto;padding-bottom:4px}.gantt-row{display:grid;grid-template-columns:170px minmax(560px,1fr);gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}.gantt-row:first-child{border-top:0}.gantt-label b{display:block;font-size:10px}.gantt-label span{color:var(--muted);font-size:8px}.timeline{position:relative;height:46px;background:linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:8.333% 100%;border-radius:10px;background-color:var(--panel2);overflow:hidden}.bar{position:absolute;height:8px;border-radius:999px;min-width:3px}.bar.baseline{top:8px;background:#969fa8}.bar.approved{top:19px;background:#111419}.dark .bar.approved{background:#f3f5f6}.bar.forecast{top:30px;background:var(--accent)}.bar.forecast.overrun{background:repeating-linear-gradient(135deg,#df6262,#df6262 6px,#f19b9b 6px,#f19b9b 12px)}.today-line{position:absolute;top:0;bottom:0;width:1px;background:#4f84dc;opacity:.7}
.problemrow{display:grid;grid-template-columns:1.4fr .45fr .45fr auto;gap:11px;align-items:center;padding:13px 0;border-top:1px solid var(--line)}.problemrow:first-child{border-top:0}.issue-author{font-size:9px;color:var(--muted);margin-top:5px}.issue-linked{display:flex;align-items:center;gap:6px;margin-top:7px}.linkchip{font-size:8px;background:var(--panel2);padding:4px 6px;border-radius:999px}.highlight{animation:flash 2.2s ease}@keyframes flash{0%,100%{box-shadow:none}20%,65%{box-shadow:0 0 0 3px rgba(255,173,47,.45);border-radius:14px}}
.journal{width:100%;border-collapse:collapse;font-size:9px}.journal th{text-align:left;color:var(--muted);font-size:8px;padding:8px 7px;border-bottom:1px solid var(--line)}.journal td{padding:10px 7px;border-bottom:1px solid var(--line);vertical-align:top}.journal-problem{font-weight:800}.rulegrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}.rule{padding:10px;border-radius:13px;background:var(--panel2);font-size:9px;line-height:1.4}
.history-project{margin-bottom:9px}.accordion{width:100%;border:0;background:var(--panel);box-shadow:var(--shadow);border-radius:18px;padding:14px 16px;text-align:left;display:flex;justify-content:space-between;font-weight:850}.history-body{background:var(--panel);border-radius:0 0 18px 18px;margin-top:-8px;padding:12px 16px}.history-stage{padding:10px 0;border-top:1px solid var(--line)}.history-stage:first-child{border-top:0}.history-stage-title{font-size:10px;font-weight:850}.history-event{display:grid;grid-template-columns:120px 160px 1fr;gap:10px;padding:7px 0;font-size:9px}.history-event time,.history-event .by{color:var(--muted)}
.admin-grid{grid-template-columns:1fr 1fr}.userrow,.admin-project{display:grid;grid-template-columns:1.2fr .8fr auto;gap:10px;align-items:center;padding:11px 0;border-top:1px solid var(--line)}.userrow:first-child,.admin-project:first-child{border-top:0}.roles{display:flex;gap:4px;flex-wrap:wrap}.rolechip{font-size:8px;border:1px solid var(--line);background:var(--panel2);border-radius:999px;padding:4px 6px}
.meeting-hero{display:grid;grid-template-columns:1.35fr .65fr;gap:16px;align-items:center;padding:22px;border-radius:27px;background:linear-gradient(135deg,#111419,#30353b);color:#fff;box-shadow:var(--shadow)}.meeting-hero .muted{color:#bbc2c8}.meeting-live{display:inline-flex;align-items:center;gap:7px;padding:6px 9px;border-radius:999px;background:rgba(255,173,47,.15);color:#ffc15c;font-size:9px;font-weight:850}.meeting-live:before{content:"";width:7px;height:7px;border-radius:50%;background:#ffad2f;box-shadow:0 0 0 4px rgba(255,173,47,.12)}.meeting-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.meeting-meta span{font-size:8px;padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.08)}.meeting-queue{display:grid;gap:9px}.meeting-project{display:grid;grid-template-columns:42px 1.2fr .55fr .7fr .65fr auto;gap:10px;align-items:center;background:var(--panel);border-radius:19px;padding:13px 14px;box-shadow:var(--shadow)}.meeting-project.discussed{opacity:.62}.meeting-order{width:34px;height:34px;border-radius:11px;background:var(--panel2);display:grid;place-items:center;font-weight:900}.meeting-priority{font-size:8px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:850}.priority-critical{color:var(--red)}.priority-risk{color:var(--yellow)}.priority-plan{color:var(--green)}.meeting-change{display:grid;grid-template-columns:115px 1fr 150px;gap:10px;padding:9px 0;border-top:1px solid var(--line);font-size:9px}.meeting-change:first-child{border-top:0}.change-type{display:inline-flex;font-size:8px;padding:4px 6px;background:var(--panel2);border-radius:999px;font-weight:850}
.protocol-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-bottom:12px}.protocol-sheet{background:#fff;color:#111419;border-radius:27px;padding:30px;box-shadow:var(--shadow)}.protocol-head{display:grid;grid-template-columns:1fr auto;gap:18px;padding-bottom:17px;border-bottom:2px solid #111419}.protocol-title{font-size:28px;font-weight:900;letter-spacing:-.04em}.protocol-meta{font-size:10px;color:#5e666e;line-height:1.6;margin-top:7px}.protocol-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:18px 0}.protocol-kpi{border:1px solid #e0e4e7;border-radius:13px;padding:11px}.protocol-kpi span{display:block;color:#7c858d;font-size:8px}.protocol-kpi b{font-size:20px}.protocol-project{border-top:1px solid #dde2e5;padding:14px 0}.protocol-project h3{margin:0 0 3px;font-size:14px}.protocol-entry{display:grid;grid-template-columns:90px 125px 1fr;gap:9px;padding:7px 0;font-size:9px}.protocol-entry .pt{font-weight:850}.protocol-nochange{color:#8a9299;font-size:9px;padding:8px 0}
.modalback{position:fixed;inset:0;background:rgba(12,16,20,.42);display:grid;place-items:center;padding:18px;z-index:100}.modal{position:relative;background:var(--panel);width:min(820px,100%);max-height:92vh;overflow:auto;border-radius:28px;padding:25px;box-shadow:0 35px 100px rgba(0,0,0,.25)}.modal h2{font-size:22px;margin:0 0 4px;letter-spacing:-.03em}.modal .close{position:absolute;right:18px;top:18px;width:40px;height:40px;border-radius:14px;border:0;background:var(--panel2);font-size:18px;font-weight:900}.modal-section{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:850;margin-top:18px;margin-bottom:8px}
@media(max-width:1150px){.metrics{grid-template-columns:1fr 1fr}.projectgrid,.summarygrid,.split,.admin-grid{grid-template-columns:1fr}.overview-grid{grid-template-columns:1fr 1fr}.meeting-project{grid-template-columns:42px 1fr}.meeting-project>*:nth-child(n+3){grid-column:2}.meeting-hero{grid-template-columns:1fr}}
@media(max-width:820px){.app{grid-template-columns:1fr}.sidebar{position:relative;top:0;height:auto}.profile{margin-top:12px}.nav{grid-template-columns:repeat(2,1fr)}.problemrow,.queue-row,.history-event,.meeting-change{grid-template-columns:1fr}.stage-info,.overview-grid,.rulegrid{grid-template-columns:1fr 1fr}.topbar{flex-direction:column}.project-head-actions{width:100%}.workflow{grid-template-columns:1fr}.arrow{display:none}.protocol-summary{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.metrics,.stage-info,.overview-grid,.formgrid,.checkgrid,.protocol-summary{grid-template-columns:1fr}.searchrow{align-items:stretch;flex-direction:column}.search{min-width:0}.pstats{grid-template-columns:1fr}.protocol-entry{grid-template-columns:1fr}.modal{padding:20px}.journal{min-width:760px}.card:has(.journal){overflow:auto}}
@media print{body{background:#fff!important}.sidebar,.view-tools,.protocol-actions{display:none!important}.app{display:block!important;margin:0!important;padding:0!important;max-width:none!important}.main{padding:0!important}.protocol-sheet{box-shadow:none!important;border-radius:0!important;padding:10mm!important}}
