@import url('https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300&family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,500;0,9..144,600;1,9..144,300&display=swap');
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#0b0c0e; --surface:#13151a; --surface2:#1a1d24; --surface3:#21252e;
  --border:rgba(255,255,255,0.08); --border2:rgba(255,255,255,0.16); --border3:rgba(255,255,255,0.26);
  --text:#fff; --text-sec:rgba(255,255,255,.75); --text-muted:rgba(255,255,255,.45); --text-dim:rgba(255,255,255,.22);
  --accent:#c8b97a; --accent-glow:rgba(200,185,122,.4); --accent-dim:rgba(200,185,122,.15);
  --critical:#e85d4a; --critical-glow:rgba(232,93,74,.3); --critical-dim:rgba(232,93,74,.12);
  --complete:#7a9e5a; --in-progress:#c8b97a;
  --row-h:80px; --sidebar-w:180px;
}
body{background:var(--bg);color:var(--text);font-family:'DM Mono',monospace;height:100vh;overflow:hidden;display:flex;flex-direction:column;user-select:none;-webkit-user-select:none;}

/* ── HEADER ── */
.hdr{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;border-bottom:1px solid var(--border);background:var(--bg);z-index:300;flex-shrink:0;gap:14px;}
.logo{font-family:'Fraunces',serif;font-size:17px;font-weight:300;letter-spacing:.14em;color:var(--accent);flex-shrink:0;}
.hdiv{width:1px;height:18px;background:var(--border2);flex-shrink:0;}
.project-title{font-size:11px;color:var(--text-muted);letter-spacing:.07em;text-transform:uppercase;padding:3px 6px;border-radius:2px;min-width:20px;}
.project-title:hover{background:rgba(255,255,255,.05);}
.project-title:focus{background:var(--surface2);outline:none;}
.hright{display:flex;align-items:center;gap:8px;}
.vtabs{display:flex;gap:2px;background:var(--surface2);border-radius:3px;padding:3px;}
.vtab{font-family:'DM Mono',monospace;font-size:9px;letter-spacing:.08em;text-transform:uppercase;padding:5px 12px;border-radius:2px;cursor:pointer;color:var(--text-muted);transition:all .15s;border:none;background:none;}
.vtab:hover{color:var(--text-sec);}
.vtab.active{background:var(--surface3);color:var(--text);box-shadow:0 1px 4px rgba(0,0,0,.3);}
.hbtn{font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:6px 13px;border-radius:2px;cursor:pointer;transition:all .15s;white-space:nowrap;border:1px solid var(--border);background:none;color:var(--text-muted);}
.hbtn:hover{border-color:var(--border2);color:var(--text-sec);}
.hbtn.active{border-color:var(--accent);color:var(--accent);}
.hbtn.solid{background:var(--accent);border-color:var(--accent);color:var(--bg);font-weight:500;}
.hbtn.solid:hover{opacity:.85;}
.hbtn.danger{color:rgba(232,93,74,.7);border-color:rgba(232,93,74,.2);}
.hbtn.danger:hover{color:var(--critical);border-color:rgba(232,93,74,.4);}

/* ── MAIN ── */
.main{flex:1;position:relative;overflow:hidden;}
.vpane{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .3s ease;display:flex;flex-direction:column;}
.vpane.active{opacity:1;pointer-events:all;}

/* ── RULER ── */
.ruler{display:flex;height:40px;flex-shrink:0;border-bottom:1px solid var(--border2);background:var(--surface);}
.rl-sp{flex-shrink:0;border-right:1px solid var(--border2);display:flex;align-items:center;padding-left:16px;}
.rl-sp span{font-size:8px;color:var(--text-dim);letter-spacing:.12em;text-transform:uppercase;}
.rl-inner{flex:1;display:flex;position:relative;overflow:hidden;}
.mtick{flex:1;display:flex;align-items:flex-end;padding-bottom:6px;padding-left:4px;border-right:1px solid var(--border);font-size:8px;color:var(--text-dim);letter-spacing:.07em;text-transform:uppercase;position:relative;flex-shrink:0;}
.mtick.qtr{color:var(--text-muted);border-right-color:var(--border2);font-size:9px;}
.mtick.qtr::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--border2);}
.mtick.yr{color:var(--text-sec);border-right-color:rgba(255,255,255,.2);font-size:9px;font-weight:500;}
.mtick.yr::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--accent);opacity:.4;}
.today-ln{position:absolute;top:0;bottom:0;width:1px;background:var(--accent);opacity:.55;pointer-events:none;z-index:5;}
.today-lb{position:absolute;top:3px;font-size:7px;color:var(--accent);letter-spacing:.08em;text-transform:uppercase;transform:translateX(-50%);pointer-events:none;}

/* ── SCROLL ── */
.scroll{flex:1;overflow-y:auto;overflow-x:hidden;}
.scroll::-webkit-scrollbar{width:4px;}
.scroll::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px;}

/* ══════════════════════════════════════
   PROJECT VIEW
══════════════════════════════════════ */
.pv-wrap{display:flex;flex-direction:column;min-height:100%;padding:20px 0 28px;position:relative;}
.pv-row{display:flex;align-items:center;height:56px;cursor:pointer;transition:transform .15s;}
.pv-row:hover{transform:translateX(2px);}
.pv-lbl{width:var(--sidebar-w);flex-shrink:0;text-align:right;padding-right:14px;}
.pv-lbl-name{font-size:11px;color:var(--text-sec);letter-spacing:.06em;text-transform:uppercase;padding:2px 4px;border-radius:2px;transition:color .2s;}
.pv-row:hover .pv-lbl-name{color:var(--text);}
.pv-track{flex:1;position:relative;height:100%;}
.pv-band{position:absolute;height:38px;top:9px;border-radius:4px;transition:filter .2s,height .15s,top .15s;overflow:visible;cursor:pointer;}
.pv-band:hover{filter:brightness(1.15);height:42px;top:7px;}
.pv-band.crit{box-shadow:0 0 0 1.5px var(--critical),0 0 14px var(--critical-glow);}
.pv-count{position:absolute;top:-9px;right:2px;background:var(--surface3);border:1px solid var(--border2);border-radius:10px;font-size:8px;color:var(--text-muted);padding:1px 7px;letter-spacing:.06em;white-space:nowrap;pointer-events:none;}
.pv-xbadge{position:absolute;top:-9px;left:4px;background:var(--surface3);border:1px solid rgba(200,185,122,.35);border-radius:10px;font-size:8px;color:var(--accent);padding:1px 7px;letter-spacing:.06em;white-space:nowrap;pointer-events:none;}
.pv-zoom{position:absolute;top:50%;right:6px;transform:translateY(-50%);font-size:8px;color:rgba(255,255,255,.25);letter-spacing:.05em;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap;}
.pv-row:hover .pv-zoom{opacity:1;}
.pv-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:10;overflow:visible;}
.pv-add-btn{margin-left:var(--sidebar-w);margin-top:8px;display:inline-flex;align-items:center;padding:6px 14px;border:1px dashed var(--text-dim);border-radius:3px;font-size:10px;color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:color .15s,border-color .15s;}
.pv-add-btn:hover{color:var(--text-muted);border-color:var(--text-muted);}
.pv-legend{display:flex;gap:18px;padding:16px 28px 0;border-top:1px solid var(--border);margin-top:14px;justify-content:flex-end;align-items:center;}
.leg-i{display:flex;align-items:center;gap:6px;font-size:8px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;}
.leg-sw{width:20px;height:8px;border-radius:1px;}

/* ══════════════════════════════════════
   TRENCH VIEW
══════════════════════════════════════ */
.tv-sub-hdr{padding:16px 24px 12px;flex-shrink:0;border-bottom:1px solid var(--border);}
.tv-bc{font-size:9px;color:var(--text-dim);letter-spacing:.09em;text-transform:uppercase;margin-bottom:8px;display:flex;gap:7px;align-items:center;}
.tv-bc span{cursor:pointer;transition:color .15s;}
.tv-bc span:hover{color:var(--text-muted);}
.tv-bc .sep,.tv-bc .cur{cursor:default;}
.tv-bc .cur{color:var(--text-muted);}
.tv-m-name{font-family:'Fraunces',serif;font-size:21px;font-weight:300;color:var(--text);padding:2px 4px;border-radius:3px;display:inline-block;min-width:20px;}
.tv-m-name:hover{background:rgba(255,255,255,.05);}
.tv-m-name:focus{background:var(--surface2);outline:none;}
.tv-meta{font-size:9px;color:var(--text-muted);letter-spacing:.07em;text-transform:uppercase;margin-top:3px;padding:0 4px;}
.tv-toolbar{margin-top:8px;display:flex;gap:8px;}
.ms-inline-form{display:flex;align-items:center;gap:8px;padding:8px 24px;background:var(--surface2);border-bottom:1px solid var(--border);}

/* ── MILESTONES ── */
.ms-dot{position:absolute;width:10px;height:10px;border-radius:50%;background:#c8b97a;border:2px solid var(--bg);box-shadow:0 0 6px rgba(200,185,122,0.4);transform:translate(-50%,-50%);top:50%;cursor:pointer;z-index:8;transition:opacity .2s,transform .15s;}
.ms-dot:hover{transform:translate(-50%,-50%) scale(1.4);}
.ms-dot-trench{position:absolute;transform:translate(-50%,-50%);cursor:pointer;z-index:8;}
.ms-sidebar-lbl{display:flex;align-items:center;justify-content:flex-end;padding-right:14px;border-top:1px solid var(--border);}
.ms-lbl-text{font-size:9px;color:#c8b97a;letter-spacing:.08em;text-transform:uppercase;}
.ms-grid-row{cursor:default;background:rgba(200,185,122,0.03);}

/* ── PINPOINTS ── */
.pp-diamond{position:absolute;width:10px;height:10px;background:#c8944a;transform:translate(-50%,-50%) rotate(45deg);cursor:pointer;z-index:9;transition:opacity .2s,transform .15s;}
.pp-diamond:hover{transform:translate(-50%,-50%) rotate(45deg) scale(1.4);}
.pp-diamond-trench{position:absolute;}
.pp-pv-row{display:flex;align-items:center;height:40px;}
.pp-pv-lbl{width:var(--sidebar-w);flex-shrink:0;font-size:9px;color:#c8944a;letter-spacing:.08em;text-transform:uppercase;text-align:right;padding-right:14px;}
.pp-pv-track{flex:1;position:relative;height:100%;}
.pp-grid-row{background:rgba(200,148,74,0.03);}
.tv-canvas{display:flex;min-height:100%;}
.tv-sidebar{flex-shrink:0;width:var(--sidebar-w);border-right:1px solid var(--border2);background:var(--bg);display:flex;flex-direction:column;z-index:10;}
.track-lbl{display:flex;align-items:center;justify-content:flex-end;padding-right:14px;padding-left:8px;border-bottom:1px solid var(--border);height:var(--row-h);flex-shrink:0;gap:6px;}
.track-name{font-size:11px;color:var(--text-sec);letter-spacing:.05em;text-align:right;padding:3px 5px;border-radius:2px;transition:background .15s,color .15s;min-width:20px;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.track-name:hover{background:rgba(255,255,255,.05);color:var(--text);}
.track-name:focus{background:var(--surface2);outline:none;color:var(--text);white-space:normal;}
.add-track-btn{height:40px;display:flex;align-items:center;justify-content:flex-end;padding-right:14px;font-size:10px;color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:color .15s;border-bottom:1px solid var(--border);}
.add-track-btn:hover{color:var(--text-muted);}
.tv-grid{flex:1;display:flex;flex-direction:column;position:relative;cursor:crosshair;}
.grid-row{display:flex;height:var(--row-h);flex-shrink:0;border-bottom:1px solid var(--border);position:relative;transition:background .12s;}
.grid-row.draw-over{background:rgba(200,185,122,.03);}
.grid-cell{flex:1;border-right:1px solid var(--border);pointer-events:none;flex-shrink:0;}
.grid-cell.qtr{border-right-color:var(--border2);}
.grid-cell.yr{border-right-color:rgba(255,255,255,.18);}
.draw-ghost{position:absolute;border-radius:4px;background:rgba(200,185,122,.1);border:1.5px dashed var(--accent);pointer-events:none;display:none;z-index:40;}
.dep-svg{position:absolute;inset:0;pointer-events:none;z-index:6;overflow:visible;}
.edge-dz{position:absolute;right:0;top:0;bottom:0;width:50px;background:linear-gradient(to right,transparent,rgba(200,185,122,.07));border-right:2px dashed rgba(200,185,122,.25);z-index:30;pointer-events:none;opacity:0;transition:opacity .2s;}
.edge-dz.active{opacity:1;}

/* ── TASK CARDS ── */
.task-card{position:absolute;border-radius:5px;cursor:default;display:flex;overflow:visible;z-index:10;border:1px solid rgba(255,255,255,.14);transition:box-shadow .2s;}
.task-card:hover{z-index:20;}
.task-card.dragging{z-index:100;opacity:.88;}
.task-card.snap-ready{box-shadow:0 0 0 2px var(--accent),0 0 16px var(--accent-glow);}
.task-card.crit-glow{box-shadow:0 0 0 1.5px var(--critical),0 0 12px var(--critical-glow);}
.task-card.conflict{animation:conflict-p 1.4s ease infinite;}
@keyframes conflict-p{0%,100%{box-shadow:0 0 0 1.5px var(--critical),0 0 8px var(--critical-glow);}50%{box-shadow:0 0 0 2.5px var(--critical),0 0 22px rgba(232,93,74,.55);}}
.card-inner{width:100%;height:100%;border-radius:5px;padding:8px 10px 7px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;cursor:grab;position:relative;}
.card-inner:active{cursor:grabbing;}
.card-top{display:flex;align-items:flex-start;gap:5px;}
.card-clip{font-size:11px;color:var(--accent);flex-shrink:0;line-height:1;margin-top:1px;}
.card-meridian-badge{font-size:13px;font-weight:700;color:rgba(255,255,255,.9);flex-shrink:0;line-height:1;cursor:pointer;padding:1px 3px;border-radius:2px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3);transition:background .15s;letter-spacing:0;user-select:none;margin-top:0;}
.card-meridian-badge:hover{background:rgba(255,255,255,.28);}
.card-name{font-size:10px;letter-spacing:.03em;color:rgba(255,255,255,.95);line-height:1.35;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.card-av{width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.2);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:7px;color:white;font-weight:500;letter-spacing:0;margin-left:auto;}
.card-dates{font-size:8px;color:rgba(255,255,255,.5);letter-spacing:.04em;margin-top:2px;}
.card-bot{display:flex;flex-direction:column;gap:3px;}
.prog-rail{width:100%;height:3px;background:rgba(255,255,255,.1);border-radius:2px;overflow:hidden;}
.prog-fill{height:100%;border-radius:2px;transition:width .3s;}
.card-footer{display:flex;align-items:center;gap:5px;}
.card-pct{font-size:8px;color:rgba(255,255,255,.45);letter-spacing:.04em;}
.risk-badge{margin-left:auto;font-size:11px;line-height:1;display:none;}
.risk-badge.show{display:block;}
.resize-l,.resize-r{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:15;opacity:0;transition:opacity .15s;display:flex;align-items:center;justify-content:center;}
.resize-l{left:0;border-radius:5px 0 0 5px;}
.resize-r{right:0;border-radius:0 5px 5px 0;}
.task-card:hover .resize-l,.task-card:hover .resize-r{opacity:1;}
.resize-l::after,.resize-r::after{content:'';width:2px;height:16px;background:rgba(255,255,255,.3);border-radius:1px;}
.resize-l:hover::after,.resize-r:hover::after{background:rgba(255,255,255,.7);}
.dep-dot{position:absolute;right:-6px;top:22%;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);box-shadow:0 0 8px var(--accent-glow);cursor:crosshair;z-index:20;opacity:0;transition:opacity .15s,transform .15s;transform:scale(.7);}
.task-card:hover .dep-dot{opacity:1;transform:scale(1);}
.float-name{position:absolute;bottom:calc(100% + 5px);left:0;background:var(--surface2);border:1px solid var(--border2);border-radius:2px;padding:4px 8px;font-size:9px;color:var(--text);white-space:nowrap;pointer-events:none;z-index:50;display:none;box-shadow:0 4px 12px rgba(0,0,0,.4);}

/* ghost task */
.ghost-task{position:absolute;border-radius:4px;border:1.5px dashed;pointer-events:none;z-index:7;display:flex;align-items:center;padding:0 8px;opacity:.7;}
.ghost-body{display:flex;flex-direction:column;gap:2px;min-width:0;}
.ghost-name{font-size:9px;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;}
.ghost-meta{display:flex;align-items:center;gap:4px;}
.ghost-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0;}
.ghost-src{font-size:7px;letter-spacing:.07em;text-transform:uppercase;opacity:.75;white-space:nowrap;}
.ghost-lbl{display:flex;align-items:center;justify-content:flex-end;padding-right:14px;background:rgba(255,255,255,0.02);}
.ghost-src-lbl{font-size:9px;letter-spacing:.05em;text-align:right;}

/* ══════════════════════════════════════
   DEPS VIEW
══════════════════════════════════════ */
.dv-wrap{display:flex;flex-direction:column;min-height:100%;padding:14px 0 32px;position:relative;}
.dv-intro{padding:0 0 14px var(--sidebar-w);font-size:9px;color:var(--text-dim);letter-spacing:.12em;text-transform:uppercase;}
.dv-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:20;overflow:visible;}

/* sections */
.dv-section{display:flex;flex-direction:column;}
.dv-section-hdr{display:flex;align-items:stretch;height:32px;}
.dv-section-main{display:flex;overflow:visible;}
.dv-section-track{flex:1;position:relative;overflow:visible;}
.dv-section-div{height:1px;background:rgba(255,255,255,.06);margin:6px 0 6px var(--sidebar-w);}

/* shared label cell */
.dv-lbl-cell{width:var(--sidebar-w);flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;padding-right:14px;gap:6px;}
.dv-hdr-lbl{height:100%;}
.dv-lbl-tracks{flex-direction:column;justify-content:flex-start;align-items:flex-end;padding-right:14px;gap:0;}
.dv-track-hdr{flex:1;}
.dv-track-lbl{display:flex;align-items:center;justify-content:flex-end;font-size:9px;color:var(--text-dim);letter-spacing:.05em;}

/* meridian header elements */
.dv-cdot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.dv-mname{font-size:10px;letter-spacing:.06em;text-transform:uppercase;}

/* track stripes */
.dv-stripe{position:absolute;left:0;right:0;}
.dv-stripe.alt{background:rgba(255,255,255,.018);}

/* task cards */
.dv-card{position:absolute;cursor:pointer;overflow:visible;}
.dv-card-inner{position:absolute;inset:0;border-radius:3px;display:flex;flex-direction:column;justify-content:space-between;padding:2px 5px;overflow:hidden;border:1px solid rgba(255,255,255,.18);transition:filter .15s;}
.dv-card:hover .dv-card-inner{filter:brightness(1.2);z-index:10;}
.dv-dep-dot{position:absolute;right:-5px;top:50%;transform:translateY(-50%) scale(.6);width:8px;height:8px;border-radius:50%;background:var(--accent);border:1.5px solid var(--bg);cursor:crosshair;z-index:25;opacity:0;transition:opacity .12s,transform .12s;}
.dv-card:hover .dv-dep-dot{opacity:1;transform:translateY(-50%) scale(1);}
.dv-card.crit .dv-card-inner{box-shadow:0 0 0 1.5px var(--critical),0 0 8px var(--critical-glow);}
.dv-card-inner-child{border-style:dashed;}
.dv-card-top{display:flex;align-items:center;gap:4px;overflow:hidden;}
.dv-cname{font-size:9px;color:rgba(255,255,255,.9);letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dv-mt-badge{font-size:9px;color:rgba(255,255,255,.65);flex-shrink:0;}
.dv-prog{height:2px;background:rgba(255,255,255,.12);border-radius:1px;flex-shrink:0;}
.dv-prog-fill{height:100%;border-radius:1px;}

/* task-level collapse/expand toggle */
.dv-tog{flex-shrink:0;width:13px;height:13px;border-radius:2px;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.3);color:rgba(255,255,255,.8);font-size:11px;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;line-height:1;z-index:5;}
.dv-tog:hover{background:rgba(255,255,255,.2);color:#fff;}

/* section-level collapse/expand toggle */
.dv-sec-tog{flex-shrink:0;width:16px;height:16px;border-radius:3px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.5);font-size:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;line-height:1;}
.dv-sec-tog:hover{background:rgba(255,255,255,.12);color:rgba(255,255,255,.9);}

/* child blocks embedded in track area */
.dv-child-sec-lbl{display:flex;align-items:flex-start;justify-content:flex-end;padding-right:10px;padding-top:5px;flex-shrink:0;}
.dv-child-src{font-size:8px;letter-spacing:.04em;text-align:right;max-width:calc(var(--sidebar-w) - 10px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dv-child-bkt-line{position:absolute;width:2px;border-radius:1px 1px 0 0;}

/* ── COLOR PICKER ── */
.color-picker-pop{position:fixed;display:none;grid-template-columns:repeat(4,1fr);gap:5px;padding:8px;background:var(--surface2);border:1px solid var(--border2);border-radius:5px;box-shadow:0 8px 28px rgba(0,0,0,.55);z-index:600;}
.color-picker-pop.show{display:grid;}
.cp-swatch{width:22px;height:22px;border-radius:3px;cursor:pointer;border:2px solid transparent;transition:transform .1s,border-color .1s;}
.cp-swatch:hover{transform:scale(1.15);}
.cp-swatch.active{border-color:#fff;}
.pv-color-dot{position:absolute;left:8px;top:50%;transform:translateY(-50%);width:10px;height:10px;border-radius:50%;border:2px solid rgba(255,255,255,.35);cursor:pointer;z-index:2;transition:transform .15s,border-color .15s;}
.pv-color-dot:hover{transform:translateY(-50%) scale(1.3);border-color:rgba(255,255,255,.8);}

/* ── CONTEXT MENUS ── */
.ctx-menu{position:fixed;background:var(--surface2);border:1px solid var(--border2);border-radius:4px;padding:3px;z-index:500;display:none;box-shadow:0 8px 28px rgba(0,0,0,.55);min-width:170px;}
.ctx-menu.show{display:block;}
.ctx-item{display:flex;align-items:center;gap:10px;font-size:10px;letter-spacing:.06em;padding:7px 12px;color:var(--text-muted);cursor:pointer;border-radius:2px;transition:all .12s;}
.ctx-item:hover{background:var(--surface3);color:var(--text);}
.ctx-item.danger:hover{background:var(--critical-dim);color:var(--critical);}
.ctx-sep{border-top:1px solid var(--border);margin:3px 0;padding-top:3px;}
.ctx-icon{font-size:11px;width:14px;text-align:center;flex-shrink:0;}

/* ── CASCADE MODAL ── */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:600;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s;}
.overlay.show{opacity:1;pointer-events:all;}
.modal{background:var(--surface);border:1px solid var(--border2);border-radius:6px;padding:28px;max-width:460px;width:90%;box-shadow:0 24px 64px rgba(0,0,0,.7);}
.modal-title{font-family:'Fraunces',serif;font-size:19px;font-weight:300;color:var(--text);margin-bottom:4px;}
.modal-sub{font-size:9px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:18px;}
.modal-list{background:var(--surface2);border-radius:4px;padding:12px 14px;margin-bottom:22px;display:flex;flex-direction:column;gap:9px;}
.modal-row{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--text-muted);}
.modal-row strong{color:var(--text);}
.modal-shift{font-size:9px;color:var(--accent);letter-spacing:.05em;}
.modal-actions{display:flex;gap:8px;justify-content:flex-end;}
.mbtn{font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:8px 18px;border-radius:2px;cursor:pointer;border:1px solid var(--border2);background:none;color:var(--text-muted);transition:all .15s;}
.mbtn:hover{color:var(--text);border-color:var(--border3);}
.mbtn.primary{background:var(--accent);border-color:var(--accent);color:var(--bg);}
.mbtn.primary:hover{opacity:.85;}

/* ── EDIT PANEL ── */
.panel{position:fixed;right:0;top:0;bottom:0;width:340px;background:var(--surface);border-left:1px solid var(--border2);z-index:400;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);box-shadow:-12px 0 40px rgba(0,0,0,.4);}
.panel.open{transform:translateX(0);}
.panel-hd{padding:20px 22px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.panel-hd-title{font-family:'Fraunces',serif;font-size:17px;font-weight:300;color:var(--text);}
.panel-close{background:none;border:none;color:var(--text-dim);font-size:16px;cursor:pointer;padding:4px 7px;transition:color .15s;font-family:inherit;}
.panel-close:hover{color:var(--text-muted);}
.panel-body{flex:1;overflow-y:auto;padding:20px 22px;display:flex;flex-direction:column;gap:17px;}
.panel-body::-webkit-scrollbar{width:3px;}
.panel-body::-webkit-scrollbar-thumb{background:var(--border2);}
.fg{display:flex;flex-direction:column;gap:6px;}
.fl{font-size:8px;color:var(--text-dim);letter-spacing:.14em;text-transform:uppercase;}
.fi{background:var(--surface2);border:1px solid var(--border);border-radius:3px;padding:9px 11px;font-family:'DM Mono',monospace;font-size:11px;color:var(--text);outline:none;transition:border-color .15s;width:100%;}
.fi:focus{border-color:var(--border3);}
.fi::placeholder{color:var(--text-dim);}
.fta{background:var(--surface2);border:1px solid var(--border);border-radius:3px;padding:9px 11px;font-family:'Fraunces',serif;font-size:12px;font-style:italic;color:var(--text-sec);outline:none;transition:border-color .15s;width:100%;resize:none;line-height:1.65;min-height:76px;}
.fta:focus{border-color:var(--border3);}
.fta::placeholder{color:var(--text-dim);}
.slider-row{display:flex;align-items:center;gap:12px;}
.pct-disp{font-size:20px;font-family:'Fraunces',serif;font-weight:300;color:var(--text);min-width:48px;text-align:right;}
.pct-unit{font-size:11px;color:var(--text-dim);}
input[type=range]{-webkit-appearance:none;flex:1;height:4px;background:var(--surface3);border-radius:2px;outline:none;cursor:pointer;}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);box-shadow:0 0 8px var(--accent-glow);cursor:pointer;}
.status-derived{font-size:9px;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:2px;display:inline-block;margin-top:3px;}
.status-derived.ns{background:rgba(255,255,255,.06);color:var(--text-dim);}
.status-derived.ip{background:rgba(200,185,122,.12);color:var(--accent);}
.status-derived.co{background:rgba(122,158,90,.15);color:var(--complete);}
.risk-row{display:flex;gap:6px;}
.rbtn{flex:1;font-family:'DM Mono',monospace;font-size:9px;letter-spacing:.07em;text-transform:uppercase;padding:7px 4px;border-radius:2px;border:1px solid var(--border);background:none;color:var(--text-dim);cursor:pointer;transition:all .15s;text-align:center;}
.rbtn:hover{color:var(--text-muted);border-color:var(--border2);}
.rbtn.active.low{background:rgba(122,158,90,.15);color:#7a9e5a;border-color:rgba(122,158,90,.3);}
.rbtn.active.med{background:rgba(200,185,122,.12);color:var(--accent);border-color:rgba(200,185,122,.3);}
.rbtn.active.high{background:rgba(232,93,74,.12);color:var(--critical);border-color:rgba(232,93,74,.3);}
.crit-toggle{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;background:var(--surface2);border-radius:3px;border:1px solid var(--border);cursor:pointer;transition:all .15s;}
.crit-toggle.on{border-color:rgba(232,93,74,.4);background:rgba(232,93,74,.07);}
.crit-toggle:hover{border-color:var(--border2);}
.ct-lbl{font-size:9px;color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;}
.ct-lbl.on{color:var(--critical);}
.tpill{width:30px;height:16px;border-radius:8px;background:var(--surface3);border:1px solid var(--border2);position:relative;transition:background .2s;}
.tpill.on{background:var(--critical);border-color:var(--critical);}
.tknob{position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.3);transition:left .2s,background .2s;}
.tknob.on{left:16px;background:white;}
.link-wrap{position:relative;}
.link-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--text-dim);pointer-events:none;}
.fi.with-icon{padding-left:30px;}
.fi.populated{border-color:rgba(200,185,122,.4);color:var(--accent);}
.panel-foot{padding:0 22px 22px;flex-shrink:0;display:flex;flex-direction:column;gap:8px;}
.save-btn{width:100%;font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:11px;background:var(--accent);border:none;border-radius:3px;color:var(--bg);cursor:pointer;transition:opacity .15s;font-weight:500;}
.save-btn:hover{opacity:.85;}
.meridian-action-btn{width:100%;font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:9px;background:transparent;border:1px solid rgba(200,185,122,.4);border-radius:3px;color:var(--accent);cursor:pointer;transition:opacity .15s;}
.meridian-action-btn:hover{background:rgba(200,185,122,.1);}

/* ── MERIDIAN PICKER ── */
.m-picker{position:fixed;inset:0;z-index:700;display:none;align-items:center;justify-content:flex-end;}
.m-picker.show{display:flex;}
.m-picker-bd{position:absolute;inset:0;background:rgba(0,0,0,.55);}
.m-picker-panel{position:relative;background:var(--surface);border:1px solid var(--border2);border-radius:6px;width:310px;margin-right:40px;box-shadow:0 20px 60px rgba(0,0,0,.6);overflow:hidden;}
.mp-title{font-size:9px;color:var(--text-dim);letter-spacing:.12em;text-transform:uppercase;padding:14px 18px 10px;border-bottom:1px solid var(--border);}
.mp-item{display:flex;align-items:center;gap:12px;padding:11px 18px;cursor:pointer;transition:background .12s;border-bottom:1px solid var(--border);}
.mp-item:hover{background:var(--surface2);}
.mp-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.mp-name{font-size:11px;color:var(--text-sec);letter-spacing:.04em;}
.mp-count{font-size:9px;color:var(--text-dim);margin-left:auto;}

/* ── TASK PICKER ── */
.t-picker{position:fixed;inset:0;z-index:800;display:none;align-items:center;justify-content:center;}
.t-picker.show{display:flex;}
.t-picker-bd{position:absolute;inset:0;background:rgba(0,0,0,.65);}
.t-picker-panel{position:relative;background:var(--surface);border:1px solid var(--border2);border-radius:6px;width:400px;box-shadow:0 24px 64px rgba(0,0,0,.7);overflow:hidden;}
.tp-hd{padding:18px 20px 12px;border-bottom:1px solid var(--border);}
.tp-title{font-family:'Fraunces',serif;font-size:17px;font-weight:300;color:var(--text);margin-bottom:3px;}
.tp-sub{font-size:9px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;}
.tp-search{padding:10px 20px;border-bottom:1px solid var(--border);}
.tp-search input{width:100%;background:var(--surface2);border:1px solid var(--border2);border-radius:3px;padding:7px 10px;font-family:'DM Mono',monospace;font-size:10px;color:var(--text);outline:none;}
.tp-search input:focus{border-color:var(--border3);}
.tp-search input::placeholder{color:var(--text-dim);}
.tp-list{max-height:280px;overflow-y:auto;}
.tp-list::-webkit-scrollbar{width:3px;}
.tp-list::-webkit-scrollbar-thumb{background:var(--border2);}
.tp-task{display:flex;align-items:center;gap:12px;padding:10px 20px;cursor:pointer;transition:background .12s;border-bottom:1px solid var(--border);}
.tp-task:hover{background:var(--surface2);}
.tp-av{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:7px;color:white;flex-shrink:0;}
.tp-tname{font-size:11px;color:var(--text-sec);letter-spacing:.03em;flex:1;}
.tp-date{font-size:9px;color:var(--text-dim);letter-spacing:.04em;white-space:nowrap;}
.tp-cancel{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;}
.tp-cancel button{font-family:'DM Mono',monospace;font-size:9px;letter-spacing:.08em;text-transform:uppercase;padding:6px 14px;border:1px solid var(--border2);border-radius:2px;background:none;color:var(--text-muted);cursor:pointer;transition:all .15s;}
.tp-cancel button:hover{color:var(--text);border-color:var(--border3);}

/* ── ARROW DRAW ── */
.arrow-svg{position:fixed;inset:0;pointer-events:none;z-index:200;overflow:visible;display:none;}

/* ── TOOLTIP ── */
.tip{position:fixed;background:var(--surface2);border:1px solid var(--border2);padding:5px 10px;border-radius:2px;font-size:9px;color:var(--text-muted);pointer-events:none;z-index:1000;opacity:0;transition:opacity .15s;white-space:nowrap;letter-spacing:.05em;}
.tip.show{opacity:1;}
.tip strong{color:var(--text);display:block;margin-bottom:1px;}

/* ── TOAST ── */
.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--surface2);border:1px solid rgba(200,185,122,.3);border-radius:4px;padding:8px 18px;font-size:10px;color:var(--accent);letter-spacing:.06em;z-index:900;opacity:0;transition:opacity .25s;pointer-events:none;white-space:nowrap;}
.toast.show{opacity:1;}

/* ── LOADING SCREEN ── */
#loading-screen{position:fixed;inset:0;background:var(--bg);z-index:10000;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;}
.ls-logo{font-family:'DM Mono',monospace;font-size:11px;letter-spacing:0.22em;text-transform:uppercase;color:var(--text-dim);}
.ls-bar{width:100px;height:1px;background:var(--surface3);overflow:hidden;position:relative;}
.ls-fill{position:absolute;top:0;left:0;height:100%;width:35%;background:var(--accent);animation:meridian-load 1.4s ease-in-out infinite;}
.ls-sub{font-family:'DM Mono',monospace;font-size:9px;letter-spacing:0.1em;color:var(--text-dim);opacity:.6;}
@keyframes meridian-load{0%{transform:translateX(-100%);}100%{transform:translateX(390%);}}

/* ── ERROR SCREEN ── */
#error-screen{position:fixed;inset:0;background:var(--bg);z-index:10001;display:none;align-items:center;justify-content:center;}
#error-message{font-family:'DM Mono',monospace;font-size:11px;color:var(--text-muted);text-align:center;max-width:360px;line-height:2;letter-spacing:.04em;}

/* ── ALPHA BANNER ── */
#alpha-banner{position:fixed;bottom:0;left:0;right:0;text-align:center;font-family:'DM Mono',monospace;font-size:8px;letter-spacing:0.14em;text-transform:uppercase;color:var(--text-muted);padding:5px;pointer-events:none;z-index:9999;}
