/* ncs-map: the approved mockup's look (ITST's desktop head), one stylesheet for every page. */
@font-face { font-family:'Manrope'; src:url('../fonts/Manrope.ttf') format('truetype-variations'), url('../fonts/Manrope.ttf') format('truetype'); font-weight:400 800; font-display:swap; }
:root {
  --paper:#ffffff; --app:#fafaf7; --ink:#18181b; --ink2:#3f3f46; --mute:#52525b; --mute2:#71717a; --edge:#e4e4e7; --edge2:#d4d4d8;
  --teal:#0d9488; --teal-ink:#134e4a; --teal-tint:#ccfbf1; --teal-soft:#5eead4;
  --blue:#2563eb; --blue-ink:#1e3a8a; --blue-tint:#dbeafe;
  --violet:#7c3aed; --violet-ink:#4c1d95; --violet-tint:#ede9fe;
  --amber:#d97706; --amber-ink:#78350f; --amber-tint:#fef3c7;
  --green:#16a34a; --green-ink:#14532d; --green-tint:#dcfce7;
  --red:#dc2626; --red-tint:#fee2e2;
  --c-jack:#71717a; --c-cable:#3f3f46; --c-room:#15306c;
}
* { box-sizing:border-box; -webkit-user-select:none; user-select:none; }
input, textarea, .selectable { -webkit-user-select:text; user-select:text; }
html, body { margin:0; height:100%; }
body { font-family:'Manrope', system-ui, sans-serif; color:var(--ink); background:var(--app); -webkit-font-smoothing:antialiased; font-size:14px; overflow:hidden; }
button { font-family:inherit; margin:0; }
input, select, textarea { font-family:inherit; }
a { color:var(--blue-ink); }

/* ---- shell ---- */
.dshell { display:grid; grid-template-columns:250px 1fr; height:100vh; }
.drail { background:linear-gradient(180deg,#15306c 0%,#0f2553 100%); color:#fff; display:flex; flex-direction:column; border-right:1px solid #0a1c42; overflow-y:auto; }
.drail-brand { padding:16px 14px 12px; display:flex; align-items:center; gap:10px; text-decoration:none; color:#fff; }
.drail-brand-logo { width:36px; height:36px; border-radius:9px; background:#fff; display:grid; place-items:center; box-shadow:0 6px 16px rgba(0,0,0,.3); flex-shrink:0; }
.drail-brand-title { font-size:13px; font-weight:800; letter-spacing:-.1px; line-height:1.15; }
.drail-brand-sub { font-size:11px; font-weight:600; color:#7dd3c0; letter-spacing:.4px; text-transform:uppercase; }
.drail-progress { margin:0 12px 14px; padding:12px; border-radius:12px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.08); display:flex; align-items:center; gap:12px; min-height:78px; }
.drail-progress-label { font-size:12px; color:rgba(255,255,255,.6); font-weight:600; letter-spacing:.4px; text-transform:uppercase; }
.drail-progress-stat { font-size:13px; color:#fff; font-weight:700; font-variant-numeric:tabular-nums; }
.drail-nav { padding:0 8px; display:flex; flex-direction:column; gap:2px; }
.drail-section { padding:14px 12px 4px; font-size:10px; font-weight:800; color:rgba(255,255,255,.42); letter-spacing:1.4px; text-transform:uppercase; }
.navitem { display:grid; grid-template-columns:auto 1fr auto; gap:12px; align-items:center; width:100%; padding:10px 12px; background:transparent; color:rgba(255,255,255,.78); border:none; border-radius:10px; cursor:pointer; text-align:left; text-decoration:none; }
.navitem:hover { background:rgba(255,255,255,.06); }
.navitem.active { background:rgba(255,255,255,.08); color:#fff; }
.navitem-ico { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; }
.navitem-label { display:block; font-size:14px; font-weight:700; color:rgba(255,255,255,.92); letter-spacing:-.1px; }
.navitem-sub { display:block; font-size:11.5px; font-weight:600; color:rgba(255,255,255,.55); margin-top:1px; font-variant-numeric:tabular-nums; min-height:14px; }
.drail-foot { margin-top:auto; padding:10px 12px 14px; border-top:1px solid rgba(255,255,255,.08); }
.drail-search { display:flex; align-items:center; gap:8px; width:100%; padding:8px 10px; background:rgba(255,255,255,.04); color:rgba(255,255,255,.7); border:1px solid rgba(255,255,255,.08); border-radius:8px; cursor:pointer; font-size:12px; font-weight:600; }
.dkbd { display:inline-grid; place-items:center; min-width:18px; height:20px; padding:0 5px; font-family:ui-monospace, 'JetBrains Mono', monospace; font-size:11px; font-weight:600; color:var(--mute); background:#fff; border:1px solid var(--edge); border-bottom:2px solid var(--edge2); border-radius:5px; }
.drail .dkbd { color:#fff; background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.18); }
.dring { position:relative; display:inline-grid; }
.dring-label { position:absolute; inset:0; display:grid; place-items:center; font-weight:700; font-variant-numeric:tabular-nums; }

.dmain { display:grid; grid-template-rows:auto 1fr; overflow:hidden; height:100vh; }
.dheader { display:grid; grid-template-columns:1fr auto; align-items:center; gap:16px; padding:14px 24px; background:var(--paper); border-bottom:1px solid var(--edge); }
.dheader-sub { font-size:12px; font-weight:700; color:var(--mute); letter-spacing:.6px; text-transform:uppercase; min-height:15px; }
.dheader-title { margin:2px 0 0; font-size:24px; font-weight:800; letter-spacing:-.4px; }
.dheader-actions { display:flex; align-items:center; gap:10px; }
.chips { display:flex; align-items:center; gap:4px; padding:4px; border-radius:10px; background:var(--app); border:1px solid var(--edge); flex-wrap:wrap; }
.chips:empty { display:none; }
.chip { padding:5px 10px; border:none; background:transparent; color:var(--ink2); font-weight:700; font-size:12.5px; border-radius:7px; cursor:pointer; white-space:nowrap; }
.chip.active { background:var(--ink); color:#fff; }
.chip.ghost { color:var(--mute2); }
.hbtn-d { display:inline-flex; align-items:center; gap:6px; padding:8px 12px; border-radius:9px; font-size:13px; font-weight:700; background:var(--paper); color:var(--ink2); border:1px solid var(--edge); cursor:pointer; white-space:nowrap; text-decoration:none; }
.hbtn-d:disabled { opacity:.5; cursor:default; }
.hbtn-d.on { background:var(--ink); color:#fff; border-color:var(--ink); }
.hbtn-d.icon { padding:8px; }
.hbtn-d.primary { background:var(--teal); border-color:var(--teal); color:#fff; }
.hbtn-d.danger { color:#991b1b; border-color:#fecaca; }
.hbtn-d.small { padding:5px 9px; font-size:12px; }
.srcdot { width:9px; height:9px; border-radius:50%; display:inline-block; background:var(--teal); }
.srcdot.bad { background:var(--red); }
.hidden { display:none !important; }

/* ---- pages ---- */
.page { display:none; height:100%; overflow:hidden; }
.page.active { display:block; }
.dscroll { overflow:auto; height:100%; }
.dpage { padding:22px 26px; max-width:1400px; }
.dcard { background:var(--paper); border:1px solid var(--edge); border-radius:16px; padding:20px; }
.dcard-title { font-size:17px; font-weight:800; letter-spacing:-.2px; }
.dcard-sub { font-size:12px; font-weight:700; color:var(--mute); text-transform:uppercase; letter-spacing:.6px; }
.deyebrow { font-size:11px; font-weight:800; color:var(--mute); text-transform:uppercase; letter-spacing:1px; }
.dgrid { display:grid; gap:14px; }
.drow { display:flex; align-items:center; gap:10px; }
.dmuted { color:var(--mute); }
.tabular { font-variant-numeric:tabular-nums; }
.problem { background:var(--amber-tint); color:var(--amber-ink); border-radius:10px; padding:8px 12px; font-weight:700; font-size:13px; margin-bottom:12px; }
.problem.bad { background:var(--red-tint); color:#991b1b; }

/* ---- map page (Scope 31: the map fills the window; layers left, pane right) ---- */
.maplayout { display:grid; grid-template-columns:236px 1fr 0px; height:100%; transition:grid-template-columns 220ms cubic-bezier(.2,.7,.2,1); }
.maplayout.detail { grid-template-columns:236px 1fr 400px; }
.maplayout.notrans { transition:none; }
.layers { border-right:1px solid var(--edge); background:var(--paper); overflow:auto; display:flex; flex-direction:column; }
.layers-head { padding:12px 14px 8px; display:flex; align-items:center; justify-content:space-between; }
.lrow { display:grid; grid-template-columns:auto 1fr auto; gap:8px; align-items:center; padding:6px 10px 6px 14px; border-top:1px solid var(--edge); }
.lrow:first-of-type { border-top:none; }
.lrow.off .lname, .lrow.off .lcount { color:var(--mute2); }
.lsw { width:12px; height:12px; border-radius:4px; flex-shrink:0; }
.lsw.line { height:3px; border-radius:2px; }
.lsw.img { background:repeating-linear-gradient(45deg,#d4d4d8 0 2px,#fff 2px 4px); border:1px solid var(--edge2); }
.lswwrap { display:inline-flex; width:18px; justify-content:center; align-items:center; }
.ico { fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; display:block; }
.ico .f { fill:currentColor; stroke:none; }
.tbadge { display:inline-flex; align-items:center; justify-content:center; border-radius:50%; color:#fff; flex-shrink:0; }
.tbadge.sq { border-radius:28%; }
.tbadge.jk { color:var(--c-jack); }
.lname { display:block; font-size:13px; font-weight:800; letter-spacing:-.1px; line-height:1.15; }
.lcount { display:block; font-size:11px; font-weight:700; color:var(--mute); font-variant-numeric:tabular-nums; margin-top:1px; }
.seg { display:inline-flex; border:1px solid var(--edge); border-radius:8px; overflow:hidden; }
.seg button { border:none; background:var(--paper); color:var(--ink2); padding:4px 7px; font-size:11px; font-weight:700; cursor:pointer; line-height:1; }
.seg button + button { border-left:1px solid var(--edge); }
.seg button.on { background:var(--ink); color:#fff; }
.layers-foot { margin-top:auto; padding:10px 14px 14px; border-top:1px solid var(--edge); font-size:11.5px; color:var(--mute); font-weight:600; line-height:1.4; }

.mapwrap { position:relative; background:#eeeeea; overflow:hidden; }
.mapwrap svg { width:100%; height:100%; display:block; cursor:grab; }
.mapwrap svg.placing, .mapwrap svg.drawing { cursor:crosshair; }
.mapwrap svg:active { cursor:grabbing; }
.maptools { position:absolute; left:12px; top:12px; display:flex; gap:6px; flex-wrap:wrap; }
.mapbanner { position:absolute; left:50%; top:12px; transform:translateX(-50%); background:var(--ink); color:#fff; padding:8px 14px; border-radius:10px; font-weight:700; font-size:13px; display:none; box-shadow:0 8px 24px rgba(0,0,0,.2); white-space:nowrap; max-width:80%; z-index:5; }
.mapbanner.show { display:flex; align-items:center; gap:10px; }
.mapbanner.bad { background:#991b1b; }
.mapbanner button { background:rgba(255,255,255,.15); color:#fff; border:none; border-radius:7px; padding:4px 8px; font-weight:700; cursor:pointer; font-size:12px; }
.mapbanner input { border:none; border-radius:7px; padding:4px 8px; font-size:13px; font-weight:600; min-width:180px; }
.maplegend { position:absolute; right:12px; bottom:12px; background:rgba(255,255,255,.92); border:1px solid var(--edge); border-radius:10px; padding:8px 10px; font-size:11.5px; font-weight:600; color:var(--ink2); display:flex; gap:12px; }
.hovlabel { position:absolute; pointer-events:none; background:var(--ink); color:#fff; font-size:11.5px; font-weight:700; padding:3px 7px; border-radius:6px; display:none; white-space:nowrap; z-index:4; }
.noplan { position:absolute; inset:0; display:grid; place-items:center; color:var(--mute); font-weight:700; text-align:center; padding:40px; }
.noplan a { color:var(--teal-ink); }

/* svg marks: strokes stay the same on screen at every zoom */
.room { fill:rgba(21,48,108,.045); stroke:var(--c-room); stroke-width:1.2; cursor:pointer; vector-effect:non-scaling-stroke; }
.room:hover { fill:rgba(21,48,108,.12); }
.room.sel { fill:rgba(13,148,136,.18); stroke:var(--teal); stroke-width:2; }
.room.untied { stroke-dasharray:6 4; }
.room.small { stroke-width:.8; fill:rgba(21,48,108,.02); }
.room.orphan { stroke:var(--amber); }
.roomlabel { font-family:'Manrope',sans-serif; font-weight:800; fill:var(--c-room); pointer-events:none; text-anchor:middle; }
.roomlabel.small { font-size:.8em; font-weight:700; fill:var(--mute); }
.jack { cursor:pointer; }
.jack .plate { fill:#fff; stroke:var(--c-jack); stroke-width:1.6; }
.jack .port { fill:var(--c-jack); pointer-events:none; }
.jack:hover .plate { stroke:var(--ink); stroke-width:2.4; }
.jack.sel .plate { stroke:var(--teal); stroke-width:3; fill:var(--teal-tint); }
.dev { cursor:pointer; }
.dev .disc { stroke:#fff; stroke-width:2; }
.dev:hover .disc { stroke:var(--ink); }
.dev.sel .disc { stroke:var(--teal-ink); stroke-width:3; }
.dev.orphan .disc { stroke:var(--amber); stroke-dasharray:3 2; }
.glyph { fill:none; stroke:#fff; stroke-width:2.6; stroke-linecap:round; stroke-linejoin:round; pointer-events:none; }
.glyph .f { fill:#fff; stroke:none; }
.editing .jack, .editing .dev { cursor:grab; }
.editing.dragging, .editing.dragging .jack, .editing.dragging .dev, .editing.dragging .handle, .editing.dragging .splitpt { cursor:grabbing; }
.cable { fill:none; stroke:var(--c-cable); stroke-width:1.4; stroke-linejoin:round; stroke-linecap:round; cursor:pointer; opacity:.55; vector-effect:non-scaling-stroke; }
.cable:hover { stroke-width:3; opacity:1; }
.cable.run { stroke-width:3; opacity:.6; }
.cable.sel { stroke:var(--teal); stroke-width:4; opacity:1; }
.cable.uplink { stroke-dasharray:6 5; }
.cable.draft { stroke:var(--teal); stroke-width:2.5; stroke-dasharray:4 4; opacity:1; pointer-events:none; }
.room.draft { stroke:var(--teal); stroke-width:2; stroke-dasharray:4 4; fill:rgba(13,148,136,.1); pointer-events:none; }
.farlabel { font-family:'Manrope',sans-serif; font-weight:700; fill:var(--mute); pointer-events:none; font-size:.8em; }
.lit .cable:not(.lit), .lit .jack:not(.lit), .lit .dev:not(.lit), .lit .room:not(.lit) { opacity:.12; }
.lit .cable.lit { stroke:var(--teal); stroke-width:4; opacity:1; }
.lit .jack.lit, .lit .dev.lit, .lit .room.lit { opacity:1; }
.lit .jack.lit .plate { stroke:var(--teal); stroke-width:3; fill:var(--teal-tint); }
.lit .dev.lit .disc { stroke:var(--teal-ink); stroke-width:3; }
.handle { fill:#fff; stroke:var(--teal); stroke-width:2.5; cursor:grab; vector-effect:non-scaling-stroke; }
.handle.ring { pointer-events:none; }
.handle.fixed { stroke:var(--mute2); cursor:default; }
.splitpt { fill:var(--teal); stroke:#fff; stroke-width:2; cursor:grab; vector-effect:non-scaling-stroke; }
.drawing .room, .drawing .jack, .drawing .dev { pointer-events:none; }
.drawing.pickrun .cable.run { pointer-events:auto; cursor:crosshair; }
.drawing .cable:not(.run) { pointer-events:none; }

/* ---- details pane (Scope 16–19) ---- */
.pane { border-left:1px solid var(--edge); background:var(--paper); overflow:auto; display:flex; flex-direction:column; min-width:0; }
.pane-head { padding:14px 18px 12px; border-bottom:1px solid var(--edge); }
.pane-kind { font-size:11px; font-weight:800; color:var(--mute); text-transform:uppercase; letter-spacing:1px; display:flex; align-items:center; gap:8px; }
.pane-title { font-size:22px; font-weight:800; letter-spacing:-.4px; margin-top:2px; overflow-wrap:anywhere; }
.pane-where { font-size:13px; color:var(--mute); font-weight:600; margin-top:2px; }
.pane-headrow { display:flex; gap:12px; align-items:flex-start; }
.pane-links { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.plink { display:inline-flex; align-items:center; gap:5px; height:26px; padding:0 9px; border:1px solid var(--edge2); border-radius:8px; background:var(--paper); color:var(--ink2); font-size:12px; font-weight:700; text-decoration:none; }
.plink:hover { border-color:var(--ink); color:var(--ink); }
.ehint { font-size:12px; font-weight:600; color:var(--teal-ink); margin-top:4px; line-height:1.4; }
.pane-actions { display:flex; flex-wrap:wrap; gap:6px; padding:10px 18px; border-bottom:1px solid var(--edge); background:var(--app); }
.pane-actions:empty { display:none; }
.pane-body { padding:12px 18px 30px; display:flex; flex-direction:column; gap:10px; }
.fcard { border:1px solid var(--edge); border-radius:12px; overflow:hidden; }
.fcard-head { display:flex; align-items:center; gap:8px; padding:9px 12px; background:var(--app); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.6px; color:var(--mute); }
.fact { display:grid; grid-template-columns:1fr auto; gap:8px; align-items:start; padding:7px 12px; border-top:1px solid var(--edge); font-size:13px; }
.fact b { font-weight:800; }
.fact .k { color:var(--mute); font-weight:600; font-size:11.5px; display:block; }
.fact .v { font-weight:600; overflow-wrap:anywhere; }
.fact a.v { color:var(--teal-ink); cursor:pointer; text-decoration:underline; }
.ftable { width:100%; border-collapse:collapse; font-size:12.5px; }
.ftable th { text-align:left; font-size:11px; color:var(--mute); font-weight:800; text-transform:uppercase; letter-spacing:.5px; padding:6px 12px; border-top:1px solid var(--edge); }
.ftable td { padding:5px 12px; border-top:1px solid var(--edge); font-weight:600; }
.ftable tr.link { cursor:pointer; }
.ftable tr.link:hover td { background:var(--app); }
.src { display:inline-grid; place-items:center; height:18px; min-width:30px; padding:0 5px; border-radius:6px; font-size:10px; font-weight:800; letter-spacing:.5px; color:#fff; }
.src.nb { background:var(--blue); } .src.sn { background:var(--teal); } .src.map { background:var(--violet); } .src.none { display:none; }
.tagpill { display:inline-flex; align-items:center; padding:2px 8px; border-radius:999px; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.4px; background:var(--paper); color:var(--mute); border:1px solid var(--edge2); margin-right:4px; }
.tagpill.review { background:var(--amber-tint); color:var(--amber-ink); border-color:transparent; }
.pathstrip { display:flex; flex-direction:column; gap:0; }
.pstep { display:grid; grid-template-columns:22px 1fr; gap:8px; padding:6px 12px; border-top:1px solid var(--edge); font-size:13px; font-weight:600; align-items:center; }
.pstep .pdot { width:10px; height:10px; border-radius:50%; background:var(--teal); justify-self:center; }
.pstep .pdot.far { background:var(--blue-ink); }
.pstep small { display:block; color:var(--mute); font-weight:600; font-size:11.5px; }
.note { padding:8px 12px; border-top:1px solid var(--edge); font-size:13px; display:grid; grid-template-columns:1fr auto; gap:8px; }
.note small { display:block; color:var(--mute); font-weight:600; font-size:11.5px; margin-top:2px; }
.note .x { border:none; background:transparent; color:var(--mute2); cursor:pointer; font-size:16px; line-height:1; padding:0 4px; }
.noteadd { display:flex; gap:8px; padding:8px 12px; border-top:1px solid var(--edge); }
.noteadd input { flex:1; border:1px solid var(--edge); border-radius:8px; padding:7px 10px; font-size:13px; min-width:0; }
.edittools { border:1px dashed var(--teal); border-radius:12px; padding:10px 12px; background:var(--teal-tint); }
.edittools .deyebrow { color:var(--teal-ink); }
.edittools .drow { flex-wrap:wrap; margin-top:8px; }
.edittools label.chk { display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:700; }
.edittools input[type=text] { border:1px solid var(--edge2); border-radius:8px; padding:5px 8px; font-size:13px; font-weight:600; }
.warnbox { border-radius:12px; padding:10px 12px; background:var(--amber-tint); }
.warnbox .deyebrow { color:var(--amber-ink); }
.warnbox p { margin:4px 0 0; font-size:13px; font-weight:600; }
.pane-empty { padding:40px 20px; text-align:center; color:var(--mute); font-weight:600; }

/* ---- lists (not placed, plans, visitors, settings) ---- */
.dsection { border:1px solid var(--edge); border-radius:14px; margin-bottom:10px; overflow:hidden; background:var(--paper); }
.dsection-head { display:flex; align-items:center; gap:12px; padding:12px 16px; background:var(--paper); }
.dsection-name { font-size:15px; font-weight:800; }
.dsection-count { font-size:12px; color:var(--mute); font-weight:700; font-variant-numeric:tabular-nums; }
.dtaskrow { display:flex; align-items:center; gap:12px; padding:8px 16px; border-top:1px solid var(--edge); }
.dtaskrow:hover { background:var(--app); }
.dtask-text { flex:1; font-size:14px; font-weight:600; min-width:0; overflow-wrap:anywhere; }
.dtask-text small { color:var(--mute); font-weight:600; }
.statepill { padding:3px 9px; border-radius:999px; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.4px; }
.statepill.active { background:var(--teal); color:#fff; }
.statepill.expired { background:var(--paper); color:var(--mute); border:1px solid var(--edge2); }
.statepill.ended { background:var(--ink); color:#fff; }
.coverage { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:16px; }
.cov-card { border:1px solid var(--edge); border-radius:12px; padding:12px 14px; background:var(--paper); }
.cov-num { font-size:24px; font-weight:800; font-variant-numeric:tabular-nums; }
.cov-of { font-size:12px; color:var(--mute); font-weight:600; }
.filterbox { width:100%; height:38px; margin-bottom:12px; border:1px solid var(--edge2); border-radius:10px; padding:0 12px; font:inherit; font-size:13px; background:var(--paper); color:var(--ink); }
.plancards { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:14px; }
.plancard { border:1px solid var(--edge); border-radius:14px; background:var(--paper); overflow:hidden; }
.plancard-img { height:150px; background:#f4f4f1 center/cover no-repeat; border-bottom:1px solid var(--edge); display:grid; place-items:center; color:var(--mute2); font-weight:700; font-size:12.5px; }
.plancard-img.empty { background:repeating-linear-gradient(45deg,#f4f4f1 0 8px,#fafaf7 8px 16px); }
.plancard-body { padding:12px 14px; }
.plancard-name { font-size:15px; font-weight:800; }
.plancard-meta { font-size:12px; color:var(--mute); font-weight:600; margin-top:3px; font-variant-numeric:tabular-nums; }
.field { display:flex; flex-direction:column; gap:4px; }
.field label { font-size:11px; font-weight:800; color:var(--mute); text-transform:uppercase; letter-spacing:.6px; }
.field input, .field select { border:1px solid var(--edge); border-radius:9px; padding:8px 10px; font-size:14px; font-weight:600; background:var(--paper); }
.codebox { font-family:ui-monospace, monospace; font-size:18px; font-weight:700; letter-spacing:1px; padding:12px 14px; border-radius:10px; background:var(--app); border:1px solid var(--edge); -webkit-user-select:text; user-select:text; overflow-wrap:anywhere; }
.allow { display:flex; flex-wrap:wrap; gap:6px; }
.allow .dchip { display:inline-flex; align-items:center; gap:6px; padding:5px 10px; border-radius:999px; font-weight:700; font-size:12.5px; background:var(--blue-tint); color:var(--blue-ink); }
.allow .dchip button { border:none; background:transparent; color:inherit; font-weight:800; cursor:pointer; padding:0 2px; }
.textinput { border:1px solid var(--edge); border-radius:9px; padding:8px 10px; font-size:14px; font-weight:600; background:var(--paper); }

/* ---- command palette, pickers, sign-in (ITST modal) ---- */
.dmodal-backdrop { position:fixed; inset:0; background:rgba(16,24,40,.5); display:none; place-items:center; z-index:50; }
.dmodal-backdrop.show { display:grid; }
.dmodal { background:var(--paper); border-radius:16px; box-shadow:0 24px 80px rgba(0,0,0,.28); width:560px; max-width:92vw; max-height:86vh; overflow:hidden; display:flex; flex-direction:column; }
.dmodal-head { padding:14px 18px; border-bottom:1px solid var(--edge); display:flex; align-items:center; gap:10px; }
.dmodal-body { padding:8px; overflow:auto; }
.cmd-input { width:100%; border:none; outline:none; font-size:16px; font-weight:600; background:transparent; }
.cmd-row { display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:8px; cursor:pointer; font-weight:600; }
.cmd-row.sel, .cmd-row:hover { background:var(--app); }
.cmd-row small { color:var(--mute); font-weight:600; }
.cmd-kind { margin-left:auto; font-size:10px; font-weight:800; color:var(--mute); text-transform:uppercase; letter-spacing:.6px; white-space:nowrap; }
.cmd-group { padding:10px 12px 2px; font-size:10px; font-weight:800; color:var(--mute); text-transform:uppercase; letter-spacing:.8px; }
.dmodal-foot { padding:10px 14px; border-top:1px solid var(--edge); display:flex; align-items:center; gap:12px; font-size:11px; color:var(--mute); font-weight:600; }
.signin { width:420px; padding:28px; text-align:center; }
.signin .big { font-size:22px; font-weight:800; letter-spacing:-.4px; margin:10px 0 2px; }
.gbtn { display:flex; align-items:center; justify-content:center; gap:10px; width:100%; padding:11px; border-radius:10px; border:1px solid var(--edge2); background:#fff; font-weight:800; font-size:14px; cursor:pointer; margin-top:18px; color:var(--ink); text-decoration:none; }
.gbtn.off { opacity:.5; pointer-events:none; }
.orline { margin:18px 0 10px; font-size:11px; font-weight:800; color:var(--mute); text-transform:uppercase; letter-spacing:1px; }
.signin input { width:100%; border:1px solid var(--edge); border-radius:10px; padding:10px 12px; font-size:15px; font-weight:600; text-align:center; letter-spacing:1px; }
.signin .denied { margin-top:14px; background:var(--amber-tint); color:var(--amber-ink); border-radius:10px; padding:8px 12px; font-weight:700; font-size:13px; }
body.signin-page { display:grid; place-items:center; background:linear-gradient(180deg,#15306c 0%,#0f2553 100%); overflow:auto; }
body.signin-page .dmodal { box-shadow:0 24px 80px rgba(0,0,0,.4); }
.toast { position:fixed; left:50%; bottom:22px; transform:translateX(-50%); background:var(--ink); color:#fff; padding:9px 14px; border-radius:10px; font-weight:700; font-size:13px; z-index:60; box-shadow:0 8px 24px rgba(0,0,0,.25); max-width:80vw; }
.toast.bad { background:#991b1b; }
