:root{
  --navy:#1F3864;--blue:#2F5496;--sky:#5B9BD5;--red:#C00000;--green:#1E8E3E;--amber:#E08A00;--purple:#7030A0;
  --bg:#F3F5F9;--card:#fff;--line:#DDE3EC;--text:#1B2430;--muted:#5F6B7A;--head:#EEF2F8;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;font-family:Inter,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:13px;color:var(--text);background:var(--bg)}
body{display:flex;flex-direction:column;min-height:100vh}
button{font:inherit;cursor:pointer}
input,select,textarea{font:inherit}
.hidden{display:none!important}
#topbar{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;background:var(--navy);color:#fff;padding:8px 18px;gap:12px}
.brand{display:flex;align-items:center;gap:12px;min-width:0}
.logo{background:#fff;color:var(--navy);font-weight:800;border-radius:8px;padding:6px 10px;font-size:15px;letter-spacing:.5px}
.logo span{color:var(--red)}
.titles .t1{font-weight:700;font-size:16px}
.titles{min-width:0}.titles .t2{font-size:11.5px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hdr-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.pill{background:rgba(255,255,255,.14);border-radius:999px;padding:3px 10px;font-size:11px;font-weight:600;letter-spacing:.3px;white-space:nowrap}
.pill.warn{background:var(--amber);color:#fff}
.btn{border:1px solid transparent;border-radius:6px;padding:6px 12px;font-weight:600;font-size:12px;background:#fff;color:var(--navy)}
.btn.primary{background:var(--red);color:#fff}
.btn.ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.35)}
.btn.small{padding:3px 8px;font-size:11px}
.btn.sec{background:var(--head);color:var(--navy);border-color:var(--line)}
.btn.danger{background:#fff;color:var(--red);border-color:var(--red)}
.btn:disabled{opacity:.45;cursor:not-allowed}
#tabs{flex-shrink:0;display:flex;gap:2px;background:var(--blue);padding:0 12px;overflow-x:auto}
#tabs button{background:transparent;border:0;color:#DCE6F5;padding:10px 14px;font-weight:600;border-bottom:3px solid transparent;white-space:nowrap}
#tabs button.active{color:#fff;border-bottom-color:#fff;background:rgba(255,255,255,.08)}
#view{flex:1;padding:14px 18px 30px;max-width:1900px;width:100%;margin:0 auto}
#foot{flex-shrink:0;display:flex;justify-content:space-between;padding:8px 18px;color:var(--muted);font-size:11px;border-top:1px solid var(--line);background:#fff}
.loading{padding:60px;text-align:center;color:var(--muted)}

/* layout helpers */
.grid{display:grid;gap:12px}
.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}
@media(max-width:1100px){.g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.g4,.g3,.g2{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;box-shadow:0 1px 2px rgba(20,30,60,.04)}
.card h3{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;display:flex;justify-content:space-between;align-items:center}
.card h3 .sub{font-weight:500;text-transform:none;letter-spacing:0}
.kpi{display:flex;flex-direction:column;gap:2px}
.kpi .v{font-size:24px;font-weight:800;color:var(--navy);line-height:1.1}
.kpi .v.red{color:var(--red)}.kpi .v.green{color:var(--green)}.kpi .v.amber{color:var(--amber)}
.kpi .s{font-size:11.5px;color:var(--muted)}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spacer{flex:1}
.mt{margin-top:12px}
.muted{color:var(--muted)}.small{font-size:11px}.mono{font-family:var(--mono)}
.right{text-align:right}.center{text-align:center}
.tag{display:inline-block;border-radius:4px;padding:1px 6px;font-size:10.5px;font-weight:700;letter-spacing:.3px}
.tag.ok{background:#E6F4EA;color:var(--green)}.tag.late{background:#FDE7E7;color:var(--red)}.tag.warn{background:#FFF3E0;color:var(--amber)}.tag.cp{background:var(--red);color:#fff}.tag.ms{background:#EDE7F6;color:var(--purple)}.tag.fx{background:#E3ECFA;color:var(--blue)}.tag.link{background:#E6F4EA;color:var(--green)}
.badge-lock{font-size:10px;color:var(--muted);margin-left:6px}

/* tables */
table.tb{width:100%;border-collapse:collapse;font-size:12px}
.tb th{background:var(--head);color:var(--navy);text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1;font-size:11px;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}
.tb td{padding:5px 8px;border-bottom:1px solid #EEF1F6;vertical-align:middle}
.tb tr:hover td{background:#F7F9FD}
.tb td.num,.tb th.num{text-align:right;font-variant-numeric:tabular-nums}
.tb tr.sum td{background:#E9EEF7;font-weight:700}
.tb tr.tot td{background:#DDE6F5;font-weight:700;border-top:2px solid var(--blue)}
.tb tr.ms td{background:#F6F1FB}
.tb tr.crit td.name{color:var(--red);font-weight:600}
.tb tr.sel td{background:#FFF8E1!important}
.tb td.edit{cursor:text;background:#FFFDF2;box-shadow:inset 0 0 0 1px #F1E3A6;border-radius:3px}
.tb td.edit:hover{background:#FFF7CC}
.scroll{overflow:auto;max-height:70vh;border:1px solid var(--line);border-radius:8px;background:#fff}
.heat{background:linear-gradient(90deg,#E3ECFA var(--p),transparent var(--p))}
input.cell{width:100%;border:1px solid var(--blue);border-radius:3px;padding:2px 4px;font-size:12px}
.form{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px}
.form label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted);font-weight:600}
.form input,.form select,.form textarea{border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:12.5px;color:var(--text);background:#fff}
.form input:disabled{background:#F3F5F9;color:var(--muted)}
.form .full{grid-column:1/-1}
.help{font-size:11px;color:var(--muted);line-height:1.45}
.alert{border-left:4px solid var(--amber);background:#FFF8E8;padding:8px 10px;border-radius:6px;font-size:12px;margin-bottom:8px}
.alert.red{border-color:var(--red);background:#FDEDED}.alert.blue{border-color:var(--blue);background:#EEF3FB}.alert.green{border-color:var(--green);background:#EDF7EF}
.chart-wrap{position:relative;height:280px}
.chart-wrap.tall{height:340px}
.legend{display:flex;gap:14px;font-size:11px;color:var(--muted);flex-wrap:wrap}
.legend i{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:4px;vertical-align:-2px}

/* gantt */
#gantt-wrap{display:flex;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;height:calc(100vh - 235px);min-height:480px}
#gantt-left{flex:0 0 812px;overflow:auto;border-right:2px solid var(--line)}
#gantt-right{flex:1;overflow:auto;position:relative}
#gantt-left table{border-collapse:collapse;width:800px;table-layout:fixed;font-size:12px}
#gantt-left th{position:sticky;top:0;background:var(--head);z-index:2;height:44px;font-size:11px;text-transform:uppercase;letter-spacing:.3px;color:var(--navy);border-bottom:1px solid var(--line);padding:0 6px;text-align:left}
#gantt-left td{height:26px;border-bottom:1px solid #EEF1F6;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#gantt-left tr.sum td{background:#E9EEF7;font-weight:700}
#gantt-left tr.sel td{background:#FFF8E1}
#gantt-left tr.crit td.name{color:var(--red)}
#gantt-left tr.ms td{background:#F8F4FC}
#gantt-left td.num{text-align:right;font-variant-numeric:tabular-nums}
#gantt-left td.edit{background:#FFFDF2;cursor:text}
#gantt-left td.edit:hover{background:#FFF3B8}
.wbs-toggle{display:inline-block;width:14px;color:var(--muted);cursor:pointer;font-weight:700}
#gantt-svg{display:block}
.gbar{rx:3}
.gbar.task{fill:var(--sky)}.gbar.crit{fill:var(--red)}.gbar.sum{fill:#44546A}.gbar.done{fill:#2E7D32}
.gprog{fill:rgba(0,0,0,.28)}
.gms{fill:var(--purple)}.gms.crit{fill:var(--red)}
.glink{fill:none;stroke:#7A8BA6;stroke-width:1.1}.glink.crit{stroke:var(--red);stroke-width:1.4}
.gtext{font-size:10.5px;fill:#334;pointer-events:none}
.gtoday{stroke:var(--green);stroke-width:1.5;stroke-dasharray:4 3}
.gdead{stroke:#8A5A00;stroke-width:1;stroke-dasharray:3 3}
.gmonth{fill:var(--head);stroke:var(--line)}
.gmonth-t{font-size:11px;fill:var(--navy);font-weight:700}
.gweek-t{font-size:9.5px;fill:var(--muted)}
.grow-alt{fill:#F8FAFD}
.grow-sel{fill:#FFF8E1}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.toolbar .sep{width:1px;height:22px;background:var(--line)}
.toolbar select,.toolbar input[type=text]{border:1px solid var(--line);border-radius:6px;padding:5px 8px;font-size:12px}

/* modal & toast */
#modal-root .backdrop{position:fixed;inset:0;background:rgba(15,25,45,.45);display:flex;align-items:center;justify-content:center;z-index:50}
.modal{background:#fff;border-radius:12px;width:min(880px,94vw);max-height:90vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal .mh{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);font-weight:700;color:var(--navy)}
.modal .mb{padding:14px 16px}
.modal .mf{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid var(--line);background:#FAFBFD}
#toast-root{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:6px;z-index:60}
.toast{background:var(--navy);color:#fff;padding:9px 14px;border-radius:8px;font-size:12px;box-shadow:0 6px 20px rgba(0,0,0,.25);animation:fade .25s}
.toast.err{background:var(--red)}.toast.ok{background:var(--green)}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.slider{display:grid;grid-template-columns:200px 1fr 90px;gap:10px;align-items:center;padding:6px 0;border-bottom:1px dashed var(--line)}
.slider input[type=range]{width:100%}
.chain{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chain .node{background:#FDE7E7;border:1px solid #F3B4B4;border-radius:6px;padding:4px 8px;font-size:11px;max-width:220px}
.chain .node b{display:block;color:var(--red)}
.chain .arr{color:var(--red);font-weight:700}
.ms-card{border-left:4px solid var(--green);padding:8px 10px;background:#fff;border-radius:8px;border:1px solid var(--line)}
.ms-card.late{border-left-color:var(--red)}.ms-card.warn{border-left-color:var(--amber)}
.ms-card .c{font-weight:800;color:var(--navy)}
.ms-card .n{font-size:11px;color:var(--muted);margin:2px 0 4px;line-height:1.35}
.ms-card .d{font-size:11.5px}
.bar-row{display:flex;align-items:center;gap:8px;font-size:11px}
.bar-row .bar{height:8px;border-radius:4px;background:var(--sky)}
.detail dl{display:grid;grid-template-columns:150px 1fr;gap:4px 10px;font-size:12px;margin:0}
.detail dt{color:var(--muted)}
@media print{#tabs,#topbar .hdr-right,#foot{display:none}#view{padding:0}#gantt-wrap{height:auto}}

/* AI assistant */
#chat-fab{position:fixed;right:18px;bottom:18px;z-index:40;background:var(--navy);color:#fff;border:0;border-radius:999px;padding:11px 18px;font-weight:700;font-size:13px;box-shadow:0 8px 24px rgba(31,56,100,.35)}
#chat-fab:hover{background:var(--blue)}
#chat-panel{position:fixed;right:18px;bottom:70px;width:420px;max-width:calc(100vw - 24px);height:min(680px,calc(100vh - 100px));background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 50px rgba(15,25,45,.28);z-index:45;display:flex;flex-direction:column;overflow:hidden}
.chat-hdr{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--navy);color:#fff}
.chat-hdr .small{opacity:.8}
#chat-body{flex:1;overflow:auto;padding:12px;background:#F7F9FD;display:flex;flex-direction:column;gap:8px}
.chat-hello{color:var(--muted);font-size:12.5px;line-height:1.5}
.chat-sugg{display:flex;flex-direction:column;gap:5px;margin-top:10px}
.chat-sugg .sugg{text-align:left;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:12px;color:var(--navy)}
.chat-sugg .sugg:hover{background:#EEF3FB}
.msg{max-width:92%;padding:8px 11px;border-radius:12px;font-size:12.5px;line-height:1.5;white-space:normal}
.msg.me{align-self:flex-end;background:var(--blue);color:#fff;border-bottom-right-radius:4px}
.msg.bot{align-self:flex-start;background:#fff;border:1px solid var(--line);border-bottom-left-radius:4px}
.msg.bot.err{border-color:var(--red);color:var(--red)}
.msg.bot.thinking{color:var(--muted);font-style:italic}
.msg ul{margin:4px 0 4px 16px;padding:0}
.msg code{background:#EEF2F8;padding:0 4px;border-radius:3px;font-family:var(--mono);font-size:11.5px}
.tool{align-self:flex-start;font-size:11.5px;color:var(--muted);background:#EEF2F8;border-radius:8px;padding:4px 9px;max-width:92%}
.tool.write{background:#FFF3E0;color:#7A4B00}
.tool.error{background:#FDE7E7;color:var(--red)}
.tool.ok.write{background:#E6F4EA;color:var(--green)}
.chat-in{display:flex;gap:6px;padding:8px;border-top:1px solid var(--line);background:#fff}
.chat-in textarea{flex:1;border:1px solid var(--line);border-radius:8px;padding:7px 9px;resize:none;font-size:12.5px}
@media print{#chat-fab,#chat-panel{display:none}}

/* ---------- v3: session, plan library, users ---------- */
.pill.plan{background:#fff;color:var(--navy);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border:1px solid rgba(255,255,255,.6)}
.pill.plan[data-status=baseline]{border-color:#7fd18a}.pill.plan[data-status=draft]{border-color:var(--amber)}.pill.plan[data-status=approved]{border-color:var(--sky)}
.btn.user{display:inline-flex;align-items:center;gap:7px;padding:4px 10px 4px 4px}
.btn.user .role{font-size:10px;opacity:.75;font-weight:600;background:rgba(255,255,255,.15);padding:2px 6px;border-radius:999px}
.avatar{display:inline-flex;width:24px;height:24px;border-radius:50%;background:var(--red);color:#fff;align-items:center;justify-content:center;font-weight:800;font-size:12px}
.avatar.big{width:44px;height:44px;font-size:18px}
.acct{display:flex;gap:12px;align-items:center}
.login-modal{width:400px!important;border-radius:16px}
.login{padding:26px 30px 22px}
.login-brand{display:flex;gap:12px;align-items:center;margin-bottom:22px}
.login-brand .t1{font-weight:800;color:var(--navy);font-size:14px}.login-brand .t2{font-size:11px;color:var(--muted)}
.login h2{margin:0 0 4px;font-size:20px;color:var(--navy)}.login p{margin:0 0 16px;font-size:12.5px}
.login label{display:block;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:12px}
.login input{display:block;width:100%;box-sizing:border-box;margin-top:5px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:14px;color:var(--text);background:#FAFBFD;transition:border-color .15s,box-shadow .15s}
.login input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,84,150,.15);background:#fff}
.login .pw{position:relative}.login .pw input{padding-right:40px}
.login .eye{position:absolute;right:8px;top:9px;border:0;background:transparent;cursor:pointer;font-size:14px;opacity:.55}
.login .btn.wide{width:100%;padding:11px;font-size:14px;border-radius:8px;margin-top:4px}
.login-err{background:#FDEDED;color:var(--red);border-radius:6px;padding:7px 10px;font-size:12px;margin:-4px 0 10px}
.login-foot{margin-top:18px;font-size:10.5px;color:var(--muted);text-align:center}
.gate{display:flex;align-items:center;justify-content:center;min-height:60vh}
.gate-card{text-align:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:36px 40px;max-width:420px}
.gate-card .logo{display:inline-block;background:var(--navy);color:#fff;margin-bottom:12px}.gate-card .logo span{color:#ff8a8a}
.gate-card h2{margin:4px 0 8px;color:var(--navy)}
.h2{margin:0 0 4px;font-size:18px;color:var(--navy)}
.sub-h{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.plans-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}
.plan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}
.plan-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;border-top:4px solid var(--line)}
.plan-card.baseline{border-top-color:var(--green)}.plan-card.approved{border-top-color:var(--sky)}.plan-card.draft{border-top-color:var(--amber)}.plan-card.submitted{border-top-color:var(--purple)}.plan-card.superseded{opacity:.7}
.plan-card.open{box-shadow:0 0 0 2px var(--navy) inset}
.pc-head{display:flex;justify-content:space-between;align-items:center}
.pc-name{font-weight:800;font-size:14px;color:var(--navy)}
.pc-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.pc-kpi div{background:var(--head);border-radius:8px;padding:6px 8px}.pc-kpi b{display:block;font-size:13px;color:var(--navy)}.pc-kpi b.red{color:var(--red)}.pc-kpi b.green{color:var(--green)}.pc-kpi span{font-size:10px;color:var(--muted)}
.pc-notes{font-size:12px;color:var(--text);line-height:1.4;min-height:32px}
.pc-meta{font-size:10.5px;color:var(--muted)}
.pc-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:auto}
.pc-actions select.small{font-size:11px;padding:3px 6px;border:1px solid var(--line);border-radius:6px}
.tag.st-baseline{background:#E6F4EA;color:var(--green)}.tag.st-approved{background:#E3ECFA;color:var(--blue)}.tag.st-draft{background:#FFF3E0;color:var(--amber)}.tag.st-submitted{background:#EDE7F6;color:var(--purple)}.tag.st-superseded{background:#EEE;color:var(--muted)}.tag.open{background:var(--navy);color:#fff;margin-left:6px}
.tb td.up{color:var(--green);font-weight:700}.tb td.down{color:var(--red);font-weight:700}
.tb tr.edited td{background:#FFFBEA}
.tb tr.inactive td{opacity:.55}
.chk{display:flex;align-items:center;gap:6px;font-size:12px}
.pwbox .cred{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:var(--head);border-radius:8px;margin-top:8px;font-size:12px}
.pwbox .cred b{font-size:14px;user-select:all}
.toast.warn{background:var(--amber)}
.login-modal .mb{padding:0}
body.gated #chat-fab,body.gated #chat-panel{display:none}
.chat-tb{border-collapse:collapse;font-size:11.5px;margin:4px 0;width:100%}.chat-tb th,.chat-tb td{border:1px solid var(--line);padding:3px 6px;text-align:left}.chat-tb th{background:var(--head);color:var(--navy)}.chat-tb td.num{text-align:right;white-space:nowrap}
.rep-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}.rep{display:flex;justify-content:space-between;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff}
.chat-file{display:inline-flex;align-items:center;gap:8px;background:#EEF3FB;border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin:4px 0;font-size:12px;color:var(--navy);text-decoration:none;font-weight:600}.chat-file .sz{color:var(--muted);font-weight:400}
.att-btn{padding:6px 9px;font-size:15px;line-height:1}
#chat-tray{display:flex;flex-wrap:wrap;gap:6px;padding:6px 10px;border-top:1px solid var(--line);background:#FAFBFD}
.att-pend{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:3px 6px;font-size:11px;max-width:100%}
.att-pend img{width:34px;height:34px;object-fit:cover;border-radius:4px}.att-pend button{border:0;background:transparent;color:var(--red);cursor:pointer;font-weight:700}
.att-row{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:4px}.att-thumb{max-width:160px;max-height:110px;border-radius:6px;border:1px solid rgba(255,255,255,.5)}
.att-chip{background:rgba(255,255,255,.2);border-radius:6px;padding:2px 6px;font-size:11px}
#chat-panel.drop{outline:3px dashed var(--sky);outline-offset:-6px}
.plan-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{border:0;background:#fff;padding:5px 12px;font-weight:600;font-size:12px;color:var(--navy);cursor:pointer}.seg button.on{background:var(--navy);color:#fff}
.tb tr.ok-row td{background:#F0FAF2}
.chk.wd{border:1px solid var(--line);border-radius:8px;padding:5px 10px;background:#F6F7FA}.chk.wd.on{background:#E6F4EA;border-color:#7fd18a}
.cal-grid{display:flex;flex-direction:column;gap:3px}.cal-row{display:flex;align-items:center;gap:8px}.cal-m{width:90px;flex-shrink:0;font-size:12px}
.cal-days{display:flex;gap:2px;flex-wrap:wrap}.cd{width:22px;height:22px;border-radius:4px;background:#E3F1E6;color:#1B2430;font-size:9.5px;display:inline-flex;align-items:center;justify-content:center}
.cd.off{background:#E4E7ED;color:#8A94A6}.cd.hol{background:#F6C7C7;color:#7A1010;font-weight:700}.cd.part{background:#FBE3B8}.cd.sun{outline:1px solid #cfd6e2;outline-offset:-1px}.cd.today{box-shadow:0 0 0 2px var(--green)}

/* v7: earned value, levelling, delays */
.kvgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}
.kv{background:var(--bg2,#f4f6fa);border:1px solid var(--line);border-radius:8px;padding:6px 8px;display:flex;flex-direction:column;gap:1px}
.kv span{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.kv b{font-size:13.5px;color:var(--navy)}.kv i{font-style:normal;font-size:10.5px;color:var(--muted)}
.alert.amber{background:#fff7e6;border-color:#f0c36d;color:#7a4b00}
td.down{color:var(--red);font-weight:600}td.up{color:var(--green,#1E8E3E)}
#lv-card .tb .edit{cursor:pointer;border-bottom:1px dotted var(--muted)}
