/* =====================================================================
   THE DIRECTORATE — the workstation (v3)
   The laptop the whole game lives inside, dressed as an internal system
   that has been maintained for a long time by people who needed it.
   Layers on top of directorate.css (tokens, records, decisions,
   overlays). Loaded after it.
   ===================================================================== */

#app.desk-host{display:block;padding:14px;overflow:auto;}
.laptop{width:100%;max-width:1360px;margin:0 auto;}
.bezel{background:linear-gradient(#1b1e1d,#101211);border:1px solid #262a28;border-radius:14px 14px 6px 6px;
  padding:24px 14px 14px;position:relative;box-shadow:0 24px 70px rgba(0,0,0,.55), inset 0 0 0 1px #000;}
.cam{position:absolute;top:10px;left:calc(50% - 3px);width:6px;height:6px;border-radius:50%;background:#2a2e2c;box-shadow:0 0 0 3px #141716,0 0 4px #39403c;}
.base{height:13px;margin:7px auto 0;width:68%;background:linear-gradient(#191c1b00,#1b1e1d);border-radius:0 0 10px 10px;border:1px solid #262a28;border-top:none;position:relative;}
.base::after{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:88px;height:5px;background:#0d0f0e;border-radius:0 0 6px 6px;}
.screen{position:relative;height:80vh;min-height:560px;background:var(--bg);border:1px solid #000;border-radius:4px;overflow:hidden;
  display:grid;grid-template-rows:auto auto 1fr auto;}
/* a trace of glass: a soft falloff at the edges of the screen (the
   scanlines come from the page itself, in directorate.css) */
.screen::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:5;
  background:radial-gradient(ellipse at center, transparent 62%, rgba(0,0,0,.22) 100%);}

/* ---- Classification banner: top and bottom, the way real systems carry it ---- */
.banner{background:var(--banner);color:#dcc08d;font-family:var(--mono);font-weight:500;font-size:9px;letter-spacing:.36em;
  text-align:center;padding:1px 0;text-transform:uppercase;}

/* ---- System bar ---- */
.menubar{display:flex;align-items:center;gap:1.1rem;padding:.32rem .8rem;background:var(--panel-3);border-bottom:1px solid var(--line);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-low);flex-wrap:wrap;}
.mb-brand{color:var(--ink);font-weight:500;letter-spacing:.24em;}
.mb-item b{font-weight:400;color:var(--ink-dim);}
.mb-spacer{flex:1;}
.mb-clock{color:var(--ink-dim);font-variant-numeric:tabular-nums;}
.mdot{width:6px;height:6px;border-radius:50%;display:inline-block;vertical-align:middle;margin-right:.45rem;background:var(--secure);}

.desk{display:grid;grid-template-columns:52px minmax(0,1fr) 320px;min-height:0;}
.dcol{min-height:0;min-width:0;overflow:hidden;}

/* ---- Dock ---- */
.rail{background:var(--panel-3);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.7rem 0;}
.appicon{width:34px;height:34px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink-low);display:flex;align-items:center;justify-content:center;font-size:15px;cursor:pointer;position:relative;border-radius:2px;}
.appicon:hover{border-color:var(--line-hi);color:var(--ink);}
.appicon.active{border-color:var(--amber-dim);color:var(--amber);background:rgba(199,156,85,.05);}
.appicon .abadge{position:absolute;top:-5px;right:-5px;background:var(--red);color:#0d0f0e;font-family:var(--mono);font-size:9px;min-width:15px;height:15px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;}
.rail-sp{flex:1;}

/* ---- Panel headers: labels on a system, not titles on a page ---- */
.messages{display:grid;grid-template-columns:216px minmax(0,1fr);height:100%;min-height:0;}
.app-hd{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-bottom:1px solid var(--line);font-family:var(--mono);font-weight:500;
  letter-spacing:.2em;color:var(--ink-dim);font-size:10.5px;text-transform:uppercase;background:var(--panel-3);}
.app-hd .sub{font-weight:400;color:var(--ink-low);letter-spacing:.12em;font-size:9.5px;margin-left:auto;}

/* ---- Channels ---- */
.contacts{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:var(--panel-3);}
.clist{overflow:auto;flex:1;}
.contact{display:grid;grid-template-columns:auto 1fr auto;gap:.1rem .55rem;padding:.55rem .7rem;border-bottom:1px solid #1a1f1c;cursor:pointer;align-items:center;}
.contact:hover{background:rgba(255,255,255,.018);}
.contact.sel{background:rgba(199,156,85,.045);box-shadow:inset 2px 0 0 var(--amber);}
.cav{width:26px;height:26px;border:1px solid var(--line-hi);border-radius:2px;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:10.5px;color:var(--ink-dim);grid-row:span 2;}
.contact.k .cav,.contact.partner .cav{border-color:rgba(134,163,124,.55);color:var(--secure);}
.contact.local .cav{border-color:rgba(122,162,176,.5);color:var(--signal);}
.contact.station .cav{border-color:rgba(122,162,176,.5);color:var(--signal);border-style:dashed;}
.contact.cutout .cav{border-color:rgba(199,156,85,.45);color:var(--amber);}
.contact.fixer .cav{border-color:rgba(134,163,124,.55);color:var(--secure);}
.contact.sys .cav{border-color:var(--line-hi);color:var(--ink-low);}
.contact.unverified .cav{border-color:var(--amber);color:var(--amber);border-style:dashed;}
.contact.unverified.sel{box-shadow:inset 2px 0 0 var(--amber);}
.cname{font-family:var(--mono);font-weight:500;font-size:11px;color:var(--ink);letter-spacing:.1em;display:flex;align-items:center;gap:.4rem;min-width:0;}
.contact.sys .cname{color:var(--ink-dim);}
.cprev{grid-column:2;font-family:var(--sans);font-size:11.5px;color:var(--ink-low);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ctime{font-size:9px;color:var(--ink-low);letter-spacing:.06em;text-align:right;}
.cbadge{background:var(--amber);color:#0d0f0e;font-family:var(--mono);font-weight:500;font-size:9px;min-width:14px;height:14px;border-radius:2px;display:flex;align-items:center;justify-content:center;padding:0 3px;}
.cmeta2{grid-column:3;font-family:var(--mono);font-size:8.5px;letter-spacing:.12em;color:var(--ink-low);text-transform:uppercase;text-align:right;}
/* channel state lights: a small, honest indicator, not a glow */
.clight{width:5px;height:5px;border-radius:50%;flex:0 0 auto;background:var(--ink-faint);}
.clight.on{background:var(--secure);} .clight.warn{background:var(--amber);} .clight.sig{background:var(--signal);}
.clight.red{background:var(--red);} .clight.off{background:var(--ink-faint);}

/* ---- The case file: header, record, decision tray ---- */
.convo{display:flex;flex-direction:column;min-height:0;height:100%;background:var(--bg);}
.cv-hd{display:flex;align-items:center;gap:.6rem;padding:.45rem .85rem;border-bottom:1px solid var(--line);background:var(--panel-3);min-height:2.25rem;}
.cv-dot{width:6px;height:6px;border-radius:50%;background:var(--secure);flex:0 0 auto;}
.cv-dot.on{background:var(--secure);} .cv-dot.warn{background:var(--amber);} .cv-dot.sig{background:var(--signal);}
.cv-dot.off{background:var(--ink-faint);} .cv-dot.red{background:var(--red);}
.cv-who{font-family:var(--mono);font-weight:500;letter-spacing:.2em;color:var(--ink-hi);font-size:11.5px;white-space:nowrap;flex:0 0 auto;}
.cv-meta{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--ink-low);text-transform:uppercase;margin-left:.4rem;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.cv-meta.unv{color:var(--amber);}
.cv-file{margin-left:auto;font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;color:var(--ink-low);white-space:nowrap;text-transform:uppercase;}
.cv-file b{font-weight:500;color:var(--amber);}
.panes{flex:1;min-height:0;position:relative;}
.pane{position:absolute;inset:0;overflow-y:auto;padding:1rem .95rem;display:none;flex-direction:column;gap:.85rem;scroll-behavior:smooth;}
.pane.show{display:flex;}
.pane .line{max-width:82%;}

.browsing-note{padding:.45rem .85rem;border-top:1px solid var(--line);font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--ink-dim);
  display:flex;gap:.5rem;align-items:center;cursor:pointer;background:rgba(199,156,85,.04);}
.browsing-note::before{content:"NOTICE //";color:var(--amber-dim);letter-spacing:.18em;}
.browsing-note:hover{background:rgba(199,156,85,.08);color:var(--ink);}
.browsing-note b{color:var(--amber);font-weight:500;text-decoration:underline;}

/* Reply chips + account cards never take more than a share of the
   conversation: past that they scroll, so what was just said stays readable. */
.convo .chips{max-width:none;max-height:40%;overflow-y:auto;border-top:1px solid var(--line);padding:.5rem .95rem .6rem;gap:.4rem;background:var(--panel-3);}
.convo .chips:empty{display:none;}
.convo .chips:has(.accounts){max-height:55%;}
/* the tray says what it is: a decision the record is waiting on */
.convo .chips::before{content:"DECISION // AWAITING OPERATOR";flex-basis:100%;font-family:var(--mono);font-size:9px;letter-spacing:.24em;color:var(--amber-dim);margin-bottom:.05rem;}
.convo .chips:has(.accounts)::before{content:"RECORD // SIGN ONE ACCOUNT FOR THE FILE";}
.convo .chips:has(.idle-tip)::before{content:"CHANNEL // IDLE";color:var(--ink-low);}
.convo .chip{font-size:13.5px;padding:.42rem .75rem;}
.convo .chip.nav{font-size:10.5px;}
.convo .account{padding:1.45rem .8rem .7rem;gap:.4rem;}
.convo .acc-body{font-size:13px;line-height:1.45;}
.chips.arming{pointer-events:none;}
.chips.arming .chip{opacity:.6;}
.chips .chip{transition:opacity .25s, border-color .12s, color .12s, background .12s;}

/* dark, thin scrollbars inside the laptop */
.screen,.overlay{color-scheme:dark;}
.screen *,.overlay *{scrollbar-width:thin;scrollbar-color:#353d38 transparent;}

/* voices not present in the base sheet (reserved for the fixer and the trap) */
.line.fixer .bubble{border-left-color:var(--secure);} .line.fixer .who{color:var(--secure);}
.line.unv .bubble{border-left-color:var(--amber);border-left-style:dashed;} .line.unv .who{color:var(--amber);}

/* ---- Right column: the board and the operator's standing ---- */
.right{border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:var(--panel-3);}
.mapwidget{border-bottom:1px solid var(--line);cursor:pointer;}
.mapwidget .mw-frame{padding:.3rem .4rem;background:#0b0d0c;} .mapwidget svg{display:block;width:100%;height:auto;max-height:128px;}
.mapwidget .ticks{display:none;}
.mapwidget:hover .app-hd{color:var(--ink);}
.mw-files{display:grid;grid-template-columns:auto 1fr;gap:0 .7rem;padding:.3rem .75rem .35rem;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;}
.mw-files .fc{color:var(--ink-dim);} .mw-files .fs{text-align:right;color:var(--ink-low);}
.mw-files .fs.active{color:var(--amber);} .mw-files .fs.pending{color:var(--amber-dim);} .mw-files .fs.completed{color:var(--secure);}
.mw-files .fs.compromised{color:var(--red);} .mw-files .fs.failed,.mw-files .fs.declined{color:var(--ink-low);}

.status{padding:.5rem .65rem;display:flex;flex-direction:column;gap:.4rem;flex:1;overflow:auto;}
.stat{border:1px solid var(--line);background:var(--panel);padding:.4rem .65rem .45rem;}
.stat .lbl{font-family:var(--mono);font-weight:500;font-size:9px;letter-spacing:.22em;color:var(--ink-dim);text-transform:uppercase;}
.stat .lbl span{font-weight:400;color:var(--ink-faint);}
.stat .val{font-family:var(--mono);font-size:1.15rem;letter-spacing:.08em;margin-top:.15rem;font-variant-numeric:tabular-nums;color:var(--ink-hi);}
.stat .sub{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;color:var(--ink-low);margin-top:.15rem;text-transform:uppercase;}
.stat .val.s-name{color:var(--ink-hi);font-size:.95rem;letter-spacing:.18em;}
/* the operator card is one line: who, and what day it is */
.stat.id-card{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;}
.stat.id-card .val{margin:0;} .stat.id-card .sub{margin:0 0 0 auto;}
/* intelligence: capital, counted like money */
.stat .val.s-intel{color:var(--amber);font-size:1.25rem;}
.stat .val.s-intel.broke{color:var(--red);}
.s-ledger.gain{color:var(--secure);} .s-ledger.spend{color:var(--ink-dim);} .s-ledger.loss{color:var(--red);}
/* exposure: a security classification, not an XP bar */
.rep-card{position:relative;}
.rep-card.t-NOTICED{border-color:rgba(199,156,85,.4);}
.rep-card.t-WATCHED{border-color:rgba(179,90,75,.55);background:linear-gradient(rgba(179,90,75,.05),transparent);}
.s-rep{font-family:var(--mono);font-weight:500;letter-spacing:.3em !important;}
.s-rep.rep-GREY{color:var(--secure);} .s-rep.rep-NOTICED{color:var(--amber);} .s-rep.rep-WATCHED{color:var(--red);}
.rscale{position:relative;display:grid;grid-template-columns:40fr 25fr 35fr;gap:2px;margin-top:.4rem;}
.rseg{height:4px;background:#1c211e;}
.rseg.on.GREY{background:rgba(134,163,124,.7);} .rseg.on.NOTICED{background:rgba(199,156,85,.75);} .rseg.on.WATCHED{background:rgba(179,90,75,.8);}
.rmark{position:absolute;top:-3px;width:1px;height:10px;background:var(--ink-hi);transition:left .6s ease;}
.rnames{display:grid;grid-template-columns:40fr 25fr 35fr;font-family:var(--mono);font-size:8px;letter-spacing:.14em;color:var(--ink-faint);margin-top:.28rem;text-transform:uppercase;}
.stat .s-repnote{text-transform:none;letter-spacing:.02em;font-family:var(--sans);font-size:11.5px;color:var(--ink-dim);margin-top:.35rem;}
.s-access{margin-top:.3rem;}
.s-access.ok{color:var(--secure);} .s-access.restricted{color:var(--amber);} .s-access.denied{color:var(--red);}
.file-card .val{font-family:var(--type);font-size:1rem;letter-spacing:.12em;color:var(--amber);}
.s-filestate.st-onsite,.s-filestate.st-clean{color:var(--secure);} .s-filestate.st-compromised{color:var(--hot);}
.s-filestate.st-nocontact{color:var(--red);} .s-filestate.st-briefing{color:var(--amber-dim);}
.desk-note{padding:.3rem .8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--ink-faint);border-top:1px solid var(--line);text-transform:uppercase;}

/* ---- Command line ---- */
.cmdrow2{flex:0 0 auto;display:flex;align-items:center;gap:.6rem;padding:.4rem .85rem;border-top:1px solid var(--line);background:var(--panel-3);}
.cmdrow2 .prompt{font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--ink-low);}
.cmdrow2 .cmdline{flex:1;background:transparent;border:none;color:var(--ink);font-family:var(--mono);letter-spacing:.06em;padding:.25rem 0;outline:none;}
.cmdrow2 .cmdline::placeholder{color:var(--ink-faint);letter-spacing:.12em;font-size:11px;}

@media (max-width:1100px){ .cv-file{display:none;} }
@media (max-width:900px){
  .desk{grid-template-columns:46px minmax(0,1fr);} .right{display:none;}
  .messages{grid-template-columns:170px minmax(0,1fr);}
  .mb-item.opt{display:none;}
}
