/* Layout: Belotti green band header (like the DDT), stat strip as a ruled form row, rack grids left, slot panel right; stacks on phone.
   Palette from the Belotti brandbook: verde #00524F, acqua #7BD6DC, ghiaccio #DCF3FA, bianco, nero #111111; semantic hues from the brand palette. */
:root{
  --brand:#00524F; --brand-ink:#DCF3FA; --aqua:#7BD6DC; --ice:#DCF3FA;
  --bg:#ffffff; --surface:#ffffff; --surface2:#f2fafc; --line:#b9d3d2; --rule:#00524F; --fg:#111111; --head:#00524F; --muted:#4d6665;
  --fill:#7BD6DC; --fill-bg:#e3f1f2; --full:#00524F;
  --ok:#00524F; --ok-bg:#d6f2e2; --warn:#795200; --warn-bg:#FFE4AB; --bad:#7D1900; --bad-bg:#FFD4C4; --bad-mark:#EF3D0E;
  --sim:#4D1673; --sim-ink:#ffffff; --sim-bg:#EDD4FF; --sim-dot:#BA5AED;
  --f-display:"Hanken Grotesk","Helvetica Neue",Arial,sans-serif;
  --f-body:"Hanken Grotesk","Helvetica Neue",Arial,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --brand:#00403d; --brand-ink:#DCF3FA; --aqua:#7BD6DC; --ice:#DCF3FA;
  --bg:#06211f; --surface:#0b2e2c; --surface2:#0f3836; --line:#245a57; --rule:#7BD6DC; --fg:#e9f6f8; --head:#7BD6DC; --muted:#9dbdbc;
  --fill:#7BD6DC; --fill-bg:#16413f; --full:#DCF3FA;
  --ok:#7fe0a8; --ok-bg:#103d2a; --warn:#F2C202; --warn-bg:#3a2e08; --bad:#ff9b80; --bad-bg:#45180c; --bad-mark:#EF3D0E;
  --sim:#BA5AED; --sim-ink:#16051f; --sim-bg:#2c1640; --sim-dot:#BA5AED; color-scheme:dark}}
:root[data-theme="dark"]{
  --brand:#00403d; --brand-ink:#DCF3FA; --aqua:#7BD6DC; --ice:#DCF3FA;
  --bg:#06211f; --surface:#0b2e2c; --surface2:#0f3836; --line:#245a57; --rule:#7BD6DC; --fg:#e9f6f8; --head:#7BD6DC; --muted:#9dbdbc;
  --fill:#7BD6DC; --fill-bg:#16413f; --full:#DCF3FA;
  --ok:#7fe0a8; --ok-bg:#103d2a; --warn:#F2C202; --warn-bg:#3a2e08; --bad:#ff9b80; --bad-bg:#45180c; --bad-mark:#EF3D0E;
  --sim:#BA5AED; --sim-ink:#16051f; --sim-bg:#2c1640; --sim-dot:#BA5AED; color-scheme:dark}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--fg);font:15px/1.45 var(--f-body);padding-inline:16px;padding-block:0 40px}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--aqua);outline-offset:2px}
.wrap{max-width:1440px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.lbl,.stat .k,.card h3,th,.zmeta,.legend{font-family:var(--f-mono);text-transform:uppercase;letter-spacing:.04em}

/* brand band, like the DDT header */
.band{margin-inline:-16px;background:var(--brand);color:var(--brand-ink);padding:18px 16px 14px;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 24px}
.band-in{max-width:1440px;width:100%;margin:0 auto;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 24px}
.logo{display:block;width:150px;aspect-ratio:520/131;max-width:100%;background:var(--brand-ink);-webkit-mask:url(data:image/png;base64,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) center/contain no-repeat;mask:url(data:image/png;base64,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) center/contain no-repeat}
.band h1{margin:6px 0 0;font:500 .78rem/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--aqua)}
.band .meta{font:400 .72rem/1.6 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;text-align:right;opacity:.9}
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding-block:10px;border-bottom:1px solid var(--rule)}
.seg{display:inline-flex;border:1px solid var(--rule);overflow:hidden;background:var(--surface)}
.seg button{border:0;background:none;padding:7px 14px;font:500 .78rem var(--f-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--head);color:var(--bg)}
.seg button.simbtn[aria-pressed="true"]{background:var(--sim);color:var(--sim-ink)}
.search{min-width:0;flex:0 1 260px;padding:7px 10px;border:1px solid var(--line);background:var(--surface);margin-left:auto}
.tabs{display:flex;gap:4px}
.tabs button{border:0;background:none;padding:6px 10px;font:600 1.05rem var(--f-display);letter-spacing:-.01em;color:var(--muted);border-bottom:2px solid transparent}
.tabs button[aria-selected="true"]{color:var(--head);border-bottom-color:var(--head)}

.banner{padding:10px 14px;font-size:.92rem;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;border:1px solid}
.banner.example{background:var(--warn-bg);border-color:var(--warn)}
.banner.sim{background:var(--sim-bg);border-color:var(--sim)}
.banner.sim b{color:var(--sim)}
.banner.err{background:var(--bad-bg);border-color:var(--bad)}

/* stats as a ruled form row */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));border:1px solid var(--rule)}
.stat{background:var(--surface);padding:8px 12px 10px;display:flex;flex-direction:column;gap:2px;min-width:0;border-right:1px solid var(--rule);margin-right:-1px}
.stat .k{font-size:.66rem;color:var(--muted)}
.stat .v{font:700 1.7rem/1.1 var(--f-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--head)}
.stat .s{font-size:.8rem;color:var(--muted)}

.main{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start}
@media (max-width:900px){.main{grid-template-columns:minmax(0,1fr)}}

/* map */
.map{display:flex;flex-direction:column;gap:16px;min-width:0}
.zone{background:var(--surface);border:1px solid var(--rule);min-width:0}
.zone header{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;padding:8px 12px;border-bottom:1px solid var(--rule)}
.zcode{font:600 .95rem/1 var(--f-mono);background:var(--head);color:var(--bg);padding:4px 8px}
.zname{font:700 1.2rem var(--f-display);letter-spacing:-.01em;color:var(--head)}
.zmeta{color:var(--muted);font-size:.7rem;margin-left:auto;font-variant-numeric:tabular-nums}
.zscroll{overflow-x:auto;padding:10px 12px 12px}
.grid{display:grid;gap:4px;width:max-content}
.lv,.bay{font:500 .7rem var(--f-mono);color:var(--muted);display:flex;align-items:center;justify-content:center}
.bay{padding-bottom:2px}
.lv{justify-content:flex-end;padding-right:4px}
.cell{width:86px;height:66px;border:1px solid var(--line);border-bottom:2px solid var(--head);background:var(--surface);padding:4px 6px 0;display:flex;flex-direction:column;gap:1px;text-align:left;position:relative;overflow:hidden}
.cell .c{font:500 .64rem var(--f-mono);color:var(--muted)}
.cell .p{font:600 .8rem/1.15 var(--f-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cell .f{font-size:.7rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cell .bar{position:absolute;left:0;right:0;bottom:0;height:5px;background:var(--fill-bg)}
.cell .bar i{display:block;height:100%;background:var(--fill)}
.cell.full .bar i{background:var(--full)}
.cell.over{background:var(--bad-bg)}
.cell.over .bar i{background:var(--bad-mark)}
.cell.empty{background:var(--surface2)}
.cell.empty .p{color:var(--muted);font-weight:500}
.cell.dim{opacity:.25}
.cell.sel{outline:3px solid var(--head);outline-offset:1px}
.cell.changed::after{content:"";position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:50%;background:var(--sim-dot)}
.cell.src{outline:3px dashed var(--sim);outline-offset:1px}
.cell.fit{background:var(--ok-bg);border-color:var(--ok)}
.cell.part{background:var(--warn-bg);border-color:var(--warn)}
.cell.nofit{background:repeating-linear-gradient(135deg,var(--surface2) 0 6px,var(--bad-bg) 6px 12px);opacity:.75}
.cell.tgt{outline:3px solid var(--ok);outline-offset:1px}
.cell:hover{border-color:var(--head)}

.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.68rem;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{width:14px;height:10px;display:inline-block;border:1px solid var(--line)}

/* panel */
.panel{position:sticky;top:calc(env(safe-area-inset-top,0px) + 70px);display:flex;flex-direction:column;gap:12px;min-width:0}
@media (max-width:900px){.panel{position:static;order:-1}.top{position:static}}
.card{background:var(--surface);border:1px solid var(--rule);padding:14px;display:flex;flex-direction:column;gap:10px;min-width:0}
.card.simcard{border-color:var(--sim);border-width:2px}
.card h2{font:700 1.35rem/1.1 var(--f-display);margin:0;letter-spacing:-.01em;color:var(--head);text-wrap:balance}
.card h3{font-size:.68rem;font-weight:500;color:var(--muted);margin:4px 0 0}
.muted{color:var(--muted)}
.small{font-size:.84rem}
.mono{font-family:var(--f-mono)}
.num{font-variant-numeric:tabular-nums}
.meter{height:8px;background:var(--fill-bg);overflow:hidden}
.meter i{display:block;height:100%;background:var(--fill)}
.ent{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;padding:8px 0;border-top:1px solid var(--line)}
.ent .name{font-weight:600;min-width:0}
.ent .sub{font-size:.82rem;color:var(--muted);grid-column:1}
.ent .acts{grid-row:1/span 2;grid-column:2;display:flex;gap:4px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.btn{border:1px solid var(--head);background:var(--surface);color:var(--head);padding:6px 12px;font:500 .78rem var(--f-mono);letter-spacing:.03em;text-transform:uppercase}
.btn:hover{background:var(--surface2)}
.btn.pri{background:var(--head);color:var(--bg);border-color:var(--head)}
.btn.simpri{background:var(--sim);color:var(--sim-ink);border-color:var(--sim)}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.btn.sm{padding:3px 8px;font-size:.7rem}
.btn:disabled{opacity:.4;cursor:not-allowed}
input.in,select.in{border:1px solid var(--line);background:var(--surface);padding:6px 8px;min-width:0}
input.q{width:96px;text-align:right;font-variant-numeric:tabular-nums}
.form{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.form .wide{grid-column:1/-1}
.form label{display:flex;flex-direction:column;gap:3px;font:500 .66rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);min-width:0}
.form label input,.form label select{font:400 .95rem var(--f-body);text-transform:none;letter-spacing:0;color:var(--fg)}
.note{padding:8px 10px;font-size:.88rem;border-left:3px solid}
.note.ok{background:var(--ok-bg);border-color:var(--ok)} .note.warn{background:var(--warn-bg);border-color:var(--warn)} .note.bad{background:var(--bad-bg);border-color:var(--bad)}
ol.moves{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px;font-size:.88rem}
ol.moves li::marker{font-family:var(--f-mono);color:var(--sim)}
ol.moves li.bad{color:var(--bad)}
.log{display:flex;flex-direction:column;gap:4px;font-size:.82rem;max-height:220px;overflow:auto}
.log div{display:flex;gap:8px}
.log time{color:var(--muted);font:400 .74rem var(--f-mono);font-variant-numeric:tabular-nums;white-space:nowrap;padding-top:2px}
details summary{cursor:pointer;font:500 .72rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--head)}
.caps{display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:6px 8px;align-items:center;margin-top:8px;font-size:.86rem}

/* settings */
.set{display:flex;flex-direction:column;gap:16px}
.tblwrap{overflow-x:auto;border:1px solid var(--rule);background:var(--surface)}
table{border-collapse:collapse;font-size:.88rem}
th,td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
th{font-size:.64rem;font-weight:500;color:var(--muted);background:var(--surface2);border-bottom-color:var(--rule)}
td input.in{width:100%}
td.n input.in{width:90px;text-align:right;font-variant-numeric:tabular-nums}
.help{max-width:70ch;color:var(--muted);font-size:.92rem;margin:0}
.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 18px);transform:translateX(-50%);background:var(--head);color:var(--bg);padding:9px 16px;font-size:.9rem;z-index:20;max-width:calc(100% - 32px)}
.emptystate{background:var(--surface2);border:1px dashed var(--rule);padding:28px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
@media (prefers-reduced-motion:no-preference){.cell{transition:background-color .15s,border-color .15s}}















































































































































































































/* v2 additions */
.tabs{flex-wrap:wrap}
.seg[hidden]{display:none}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.toolbar .grow{margin-left:auto}
.cell .step{position:absolute;top:3px;right:3px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--head);color:var(--bg);font:600 .64rem/18px var(--f-mono);text-align:center}
.cell.pick{outline:2px solid var(--head);outline-offset:1px}
.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:900px){.two{grid-template-columns:minmax(0,1fr)}}
.list{display:flex;flex-direction:column}
.li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:10px 0;border-top:1px solid var(--line);align-items:center}
.li:first-child{border-top:0}
.li .t{font-weight:600;min-width:0;overflow-wrap:anywhere}
.li .m{font-size:.82rem;color:var(--muted);grid-column:1}
.li .a{grid-column:2;grid-row:1/span 2;display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.pill{display:inline-block;font:500 .64rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;border:1px solid currentColor;vertical-align:middle}
.pill.draft{color:var(--sim)} .pill.done{color:var(--ok)} .pill.k{color:var(--muted)}
.chg{margin:6px 0 0;padding:8px 10px;background:var(--surface2);font-size:.82rem;display:flex;flex-direction:column;gap:3px}
.chg code{font-family:var(--f-mono);font-size:.78rem}
.plan{width:100%}
.plan td,.plan th{white-space:normal}
.plan td.n{font-family:var(--f-mono);font-variant-numeric:tabular-nums;text-align:right}
.plan tr.zone td{background:var(--surface2);font:600 .7rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--head)}
textarea.in{border:1px solid var(--line);background:var(--surface);padding:8px;width:100%;min-height:120px;font:400 .9rem/1.4 var(--f-mono);resize:vertical}
.chat{display:flex;flex-direction:column;gap:12px;min-height:240px}
.msg{max-width:80ch;padding:10px 14px;border:1px solid var(--line);background:var(--surface);overflow-wrap:anywhere}
.msg.u{align-self:flex-end;background:var(--surface2);border-color:var(--rule)}
.msg.c{align-self:flex-start;border-left:3px solid var(--aqua)}
.msg p{margin:0 0 .5em} .msg p:last-child{margin-bottom:0}
.msg ul,.msg ol{margin:.2em 0 .5em;padding-left:1.3em}
.msg .who{font:500 .64rem var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:4px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:1px solid var(--line);background:var(--surface2);padding:6px 10px;font-size:.86rem;text-align:left}
.chip:hover{border-color:var(--head)}
.composer{display:flex;gap:8px;align-items:flex-end}
.composer textarea{min-height:60px}
.kpi{font:700 1.4rem/1 var(--f-display);color:var(--head)}
.route td{vertical-align:top}
.route .grip{cursor:grab;color:var(--muted);user-select:none;padding-right:0}
.route tr.dragging{opacity:.4}
.route tr.dropat td{box-shadow:inset 0 2px 0 var(--head)}
.route tr.extra td{background:var(--warn-bg)}
.route .mvcell{white-space:nowrap}
.route .rnote{min-width:110px;width:100%;font-size:.82rem;padding:4px 6px}
.oi{display:block;font-size:.74rem;color:var(--muted);margin-top:2px}
.unkform{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end;grid-column:1/-1;margin-top:6px}
.unkform label{display:flex;flex-direction:column;gap:2px;font:500 .62rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.unkform label .in{font:400 .88rem var(--f-body);text-transform:none;letter-spacing:0;color:var(--fg);padding:4px 6px;width:130px}
.unkform label input[type=number]{width:70px}
.card.unk{border-color:var(--warn)}
.origtxt{white-space:pre-wrap;font:400 .74rem/1.35 var(--f-mono);background:var(--surface2);padding:8px;max-height:260px;overflow:auto;margin-top:6px}
.docgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.docgrid fieldset{border:1px solid var(--rule);margin:0;padding:6px 10px 10px;display:grid;grid-template-columns:1fr 1fr;gap:6px;min-width:0;align-content:start}
.docgrid fieldset.wide{grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.docgrid legend{font:600 .66rem var(--f-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--head);padding:0 4px}
.docgrid label{display:flex;flex-direction:column;gap:2px;font:500 .6rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);min-width:0}
.docgrid label.wide{grid-column:1/-1}
.docgrid .in{font:400 .86rem var(--f-body);text-transform:none;letter-spacing:0;color:var(--fg);padding:4px 6px;width:100%}
.docgrid textarea.in{min-height:0;font-family:var(--f-body)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.whbar{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.whbar button{border:1px solid var(--rule);background:var(--surface);padding:6px 12px;font:600 .9rem var(--f-display);color:var(--fg)}
.whbar button .cnt{font:500 .64rem var(--f-mono);text-transform:uppercase;color:var(--muted);margin-left:4px}
.whbar button[aria-pressed=true]{background:var(--head);color:var(--bg);border-color:var(--head)}
.whbar button[aria-pressed=true] .cnt{color:var(--aqua)}
.whhead{font:700 1.15rem var(--f-display);color:var(--head);margin:6px 0 -4px;padding-bottom:4px;border-bottom:2px solid var(--head)}
.nocell{min-height:20px;background:repeating-linear-gradient(45deg,transparent 0 6px,color-mix(in srgb,var(--line) 40%,transparent) 6px 7px);opacity:.6}
.cell.res{background:color-mix(in srgb,var(--ice,#eef7f8) 40%,#ecece6)}
.cell.res::after{content:"S";position:absolute;top:2px;right:4px;font:600 9px/1 "IBM Plex Mono",monospace;color:#7d1900;opacity:.75}
.lv.reslv{color:#7d1900}
.sw.swres{background:#ecece6;border-color:#7d1900}
.znote{margin:8px 14px 0;font-size:12px;color:var(--muted)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .cell.res{background:#2a2a24}}
:root[data-theme="dark"] .cell.res{background:#2a2a24}
.floorwrap{overflow-x:auto;padding:6px 10px 2px}
.floorsvg{display:block;width:100%;min-width:760px;height:auto}
.floorsvg .fz{cursor:pointer;outline:none}
.floorsvg .fb{fill:var(--surface2);stroke:var(--line);stroke-width:.6}
.floorsvg .fres .fb{fill:#ecece6}
.floorsvg .fground .fb{fill:#faf5ec}
.floorsvg .ff{fill:var(--aqua)}
.floorsvg .fo{fill:none;stroke:var(--head);stroke-width:1.6}
.floorsvg .fz:hover .fo,.floorsvg .fz:focus-visible .fo{stroke:var(--aqua);stroke-width:3}
.floorsvg .fn{font:500 8px "IBM Plex Mono",monospace;fill:var(--muted);text-anchor:middle;pointer-events:none}
.floorsvg .fl{font-family:var(--f-body);font-size:15px;font-weight:700;fill:var(--head);text-anchor:middle}
.floorsvg .fs{font:500 9px "IBM Plex Mono",monospace;fill:var(--muted);text-anchor:middle;text-transform:uppercase;letter-spacing:.04em}
.floorsvg .ftab{fill:#00524f;stroke:#00524f;stroke-width:1.6}
.floorsvg .fz:hover .ftab,.floorsvg .fz:focus-visible .ftab{fill:#7bd6dc;stroke:#7bd6dc}
.floorsvg .ftabt{font-family:var(--f-body);font-size:14px;font-weight:700;fill:#fff;text-anchor:middle;pointer-events:none}
.floorsvg .fz:hover .ftabt{fill:#00524f}
.floorsvg .froute{fill:none;stroke:#ef3d0e;stroke-width:2;stroke-dasharray:5 4;pointer-events:none}
.floorsvg .fstop{fill:#ef3d0e;stroke:#fff;stroke-width:1.5;pointer-events:none}
.floorsvg .fstopn{font:700 10px "IBM Plex Mono",monospace;fill:#fff;text-anchor:middle;pointer-events:none}
.floorleg{padding:4px 14px 12px}
.sw.swground{background:#faf5ec;border-color:var(--line)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .floorsvg .fres .fb{fill:#2a2a24}:root:not([data-theme="light"]) .floorsvg .fground .fb{fill:#2c2618}}
:root[data-theme="dark"] .floorsvg .fres .fb{fill:#2a2a24}
:root[data-theme="dark"] .floorsvg .fground .fb{fill:#2c2618}
.capbar{align-items:center;gap:10px;flex-wrap:wrap}
.capbar .seg{flex-wrap:wrap}
.capgrid-wrap{overflow-x:auto;border:1px solid var(--line);max-height:70vh;overflow-y:auto}
.capgrid{display:grid;gap:3px;padding:6px;min-width:max-content}
.capgrid .ch,.capgrid .rh{display:flex;flex-direction:column;gap:2px;font:500 11px var(--f-mono);color:var(--muted);text-align:center}
.capgrid .ch{position:sticky;top:0;background:var(--surface);z-index:1;padding-bottom:3px}
.capgrid .rh{position:sticky;left:0;background:var(--surface);z-index:1;justify-content:center;padding-right:4px}
.capgrid .rh.reslv span{color:#7d1900}
.capgrid .ch .in,.capgrid .rh .in{padding:3px 4px;font-size:12px;text-align:right;border-style:dashed}
.capgrid .cc{display:flex;flex-direction:column;gap:1px;border:1px solid var(--line);background:var(--surface2);padding:3px}
.capgrid .cc span{font-size:9px;color:var(--muted)}
.capgrid .cc .in{padding:3px 4px;font-size:13px;text-align:right;width:100%;background:var(--surface)}
.capgrid .cc.own{border-color:var(--head);background:color-mix(in srgb,var(--aqua) 22%,var(--surface))}
.capgrid .cc.dirty{border-color:#c98a00;box-shadow:inset 0 0 0 1px #c98a00}
.capgrid .nocell{min-height:44px}
.main.nopanel{grid-template-columns:minmax(0,1fr)}
.dlgback{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:30;display:flex;align-items:center;justify-content:center;padding:16px}
.dlg{max-width:440px;width:100%;gap:14px}
.cardhead{align-items:center;justify-content:space-between;flex-wrap:wrap}.cardhead h2{margin:0}.savebar{align-items:center;gap:10px}
.cell.nocap{background:var(--bad-bg)}
.cell.nocap .bar i{background:var(--bad-mark)}
.refrow{cursor:pointer}
.refrow:hover td,.refrow:focus-visible td{background:var(--surface2)}
.capgrid .cc.pal{gap:2px}
.capgrid .cc.pal select.in{padding:1px 2px;font-size:11px;width:100%;background:var(--surface)}
.capgrid .cc.pal .pl{display:flex;align-items:center;gap:2px}
.capgrid .cc.pal .pl i{font-style:normal;font-size:11px;color:var(--muted)}
.capgrid .cc.pal .pl .in{padding:2px 3px;font-size:12px;min-width:0}
.capgrid .cc.pal .cv{font:600 11px var(--f-mono);text-align:right;color:var(--ink)}
.asgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.asgrid label{display:flex;flex-direction:column;justify-content:flex-end;gap:3px;min-width:0}
.asgrid .in{min-width:0;width:100%}
.asgrid .asq{grid-column:span 2}
.asgrid .asq .in{font-weight:700}
.capgrid .cc .hh{font:500 10px var(--f-mono);color:var(--muted);min-height:12px}
.capgrid .cc .hh.off{color:#7d1900}
.capgrid .hcell .hin{display:flex;align-items:center;gap:3px}
.capgrid .hcell .hin i{font-style:normal;font-size:10px;color:var(--muted)}

.plan .lnote { min-width: 150px; width: 100%; }
.dlg.wide{max-width:680px}

.slotnote-in{min-height:64px!important;font-family:var(--f-body)!important}
.slotnote{margin:0;white-space:pre-wrap}
.more{margin-top:4px}.more summary{cursor:pointer;font:600 .74rem/1.4 var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--head)}
.morelist{display:flex;flex-direction:column;gap:6px;margin:8px 0}
.more .moreq{width:90px}
.fccal{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:6px;align-items:flex-start}
.fccal>.fcmon{flex:1 0 190px;min-width:190px}
.fccal>.fcmon.fold{flex:0 0 auto;min-width:0;min-height:0;padding:6px 8px}
.fcmon.fold .fcmh{border-bottom:0;gap:10px;padding:0;white-space:nowrap;align-items:center}
button.fcmh{width:100%;background:none;border:0;border-bottom:1px solid var(--line);cursor:pointer;text-align:left;font:600 .74rem/1.3 var(--f-mono);margin:0}
button.fcmh:hover{color:var(--brand)}
.fcmon{border:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;gap:6px;padding:8px;min-height:90px}
.fcmon.none{opacity:.7}
.fcmh{display:flex;justify-content:space-between;font:600 .74rem/1.3 var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--head);border-bottom:1px solid var(--line);padding-bottom:4px}
.fcmh span{background:var(--bad);color:#fff;padding:0 6px;border-radius:2px}
.fcmh span:empty{display:none}
.fcchip{display:flex;flex-direction:column;gap:1px;text-align:left;border:1px solid var(--line);border-left:3px solid var(--bad);background:var(--surface2);padding:5px 7px;cursor:pointer;font:inherit;color:inherit}
.fcchip:hover{border-color:var(--head)}
.fcchip span{font-size:.8rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fctab .fcst{width:96px}
.fctab .fcst.dirty{border-color:var(--warn);background:var(--warn-bg)}
.fctab td.fcend{background:var(--bad-bg, #fde2dc);font-weight:700}
.fctab tr.open td{background:var(--surface2)}
.fctab .lnk{background:none;border:0;padding:0;color:var(--head);text-decoration:underline;cursor:pointer;font:inherit}
.plan tr.cur td{font-weight:700}
.fcdetail{padding:6px 0}
.fcchart{display:flex;align-items:flex-end;gap:2px;height:120px;border-bottom:1px solid var(--line);padding-top:4px}
.fccol{flex:1;min-width:6px;height:100%;display:flex;flex-direction:column;justify-content:flex-end;position:relative}
.fccol i{position:absolute;bottom:-14px;left:0;font:400 9px/1 var(--f-mono);font-style:normal;color:var(--muted)}
.fcb{display:block;width:100%}
.fcb.h{background:var(--head)}.fcb.big{background:var(--warn)}.fcb.f{background:#7cc4c8}.fcb.end{background:var(--bad)}
.fccol.fut{border-left:0}
.fcset summary{cursor:pointer;font:600 .74rem/1.4 var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--head)}
.sw{display:inline-block;width:10px;height:10px;vertical-align:middle;margin-right:2px}
.fcchip span.small{white-space:normal}
.fcmon:not(.none){border-color:var(--bad)}

/* Produzione */
.prtab td{vertical-align:top}
.prtab tr.prmon td{background:var(--head);color:#fff;font-family:"IBM Plex Mono",monospace;text-transform:uppercase;font-size:.78rem;letter-spacing:.04em;padding:5px 8px}
.prtab .prq{width:100px}.prtab .prmo{width:60px}.prtab .prnote{min-width:150px}
.prtab .dirty,.prmin.dirty{border-color:var(--warn);background:var(--warn-bg)}
.prmin{width:110px}
.colstack{display:flex;flex-direction:column;gap:16px;min-width:0}
.ohead{display:grid;grid-template-columns:42fr 41fr 50.7fr 66.3fr;grid-template-areas:"no dt dc cl" "li lo lo cl" "an an an de";border:1px solid var(--fg);margin-top:10px}
.otot{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--fg);margin-top:6px}
.ohc{display:flex;flex-direction:column;gap:2px;padding:5px 7px 7px;min-width:0;border-right:1px solid var(--fg);border-bottom:1px solid var(--fg)}
.ohead .ohc[style*="grid-area:dc"],.ohead .ohc[style*="grid-area:lo"],.otot .ohc:last-child{border-right:0}
.ohead .ohc[style*="grid-area:cl"],.ohead .ohc[style*="grid-area:de"]{border-right:0}
.ohead .ohc[style*="grid-area:an"],.ohead .ohc[style*="grid-area:de"],.otot .ohc{border-bottom:0}
.ohcli{background:var(--surface2)}
.ohl{font:600 .6rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--fg)}
.ohcli .ohl{color:var(--head)}
.ohc .in{border:1px solid transparent;background:transparent;padding:2px 4px;margin-inline:-4px;width:calc(100% + 8px);font:400 .9rem/1.3 var(--f-body);color:var(--fg);resize:vertical;min-height:0}
.ohc .in:hover{border-color:var(--line)}.ohc .in:focus{border-color:var(--aqua);background:var(--surface)}
.ohc .in::placeholder{color:var(--muted);opacity:.7}
.ohcli .in{color:var(--head)} .ohcli .ohname{font-weight:700} .ohcli .ohcod{font:600 .78rem var(--f-mono)}
.ohv{font:400 .9rem/1.3 var(--f-body);padding:2px 0}
.ohmore{margin-top:10px}.ohmore summary{cursor:pointer;font:600 .7rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--head)}
.ohmore .docgrid{margin-top:8px}
@media (max-width:560px){.ohead{grid-template-columns:1fr 1fr;grid-template-areas:"no dt" "dc li" "lo lo" "cl cl" "an an" "de de"}.ohead .ohc{border-right:0}.otot{grid-template-columns:1fr 1fr}}
.prtab td.prpal{min-width:170px}
/* orders-only view for people who can use the page but not edit it */
body.ordonly .tabs [data-tab]:not([data-tab=orders]){display:none}
/* Ordini macro section: sub-tabs, drive, calendar */
.osubnav{display:flex;gap:4px;border-bottom:1px solid var(--rule);margin:0 0 14px}
.osubnav button{border:1px solid transparent;border-bottom:0;background:none;padding:8px 14px;font:500 .8rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:-1px}
.osubnav button[aria-selected="true"]{border-color:var(--rule);background:var(--surface);color:var(--head)}
.obadge{display:inline-block;min-width:18px;padding:0 5px;background:var(--head);color:var(--bg);font-size:.7rem;text-align:center}
.dropzone{display:flex;flex-direction:column;align-items:center;gap:4px;padding:22px;border:1.5px dashed var(--rule);background:var(--surface2);cursor:pointer;text-align:center}
.dropzone.over{border-color:var(--head);background:var(--ice)}
.drtab td{vertical-align:top}
.calgrid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.calday,.calpool{border:1px solid var(--line);background:var(--surface);min-height:120px;padding:6px;display:flex;flex-direction:column;gap:6px}
.calpool{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));min-height:60px;align-items:start}
.calday.today{border-color:var(--head);box-shadow:inset 0 3px 0 var(--head)}
.calday.over,.calpool.over{background:var(--ice);border-color:var(--head)}
.calhead{font:500 .72rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--head)}
.calhead b{font-size:.95rem}
.ccard{border:1px solid var(--rule);border-left:4px solid var(--head);background:var(--bg);padding:6px 7px;display:flex;flex-direction:column;gap:3px;font-size:.84rem;cursor:grab}
.ccard.cliente,.ccard.ritiro{border-left-color:#F2C202;background:color-mix(in srgb,#F2C202 12%,var(--bg))}
.ccard.corriere{border-left-color:#BA5AED;background:color-mix(in srgb,#BA5AED 10%,var(--bg))}
.pill.kind-consegna{color:var(--head);border-color:var(--head)}
.pill.kind-cliente{color:var(--fg);border-color:#F2C202;background:color-mix(in srgb,#F2C202 25%,var(--bg))}
.pill.kind-corriere{color:var(--fg);border-color:#BA5AED;background:color-mix(in srgb,#BA5AED 20%,var(--bg))}
.callegend{gap:14px}.callegend span{display:inline-flex;align-items:center;gap:6px}
.lg{display:inline-block;width:12px;height:12px;border:1px solid var(--rule)}
.lg.kind-consegna{background:var(--head)}.lg.kind-cliente{background:#F2C202}.lg.kind-corriere{background:#BA5AED}
.calempty{padding:4px 0}
.calsheet{border-color:var(--head)}
@media (max-width:900px){.calgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.calgrid{grid-template-columns:1fr}.osubnav button{padding:8px 8px}}
.ccard .cfl{font-size:.82rem;line-height:1.3}
.ccard .cfl span{display:block;font:500 .6rem var(--f-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
/* calendar V51: morning / afternoon halves holding named slots */
.calday{min-height:0;gap:4px}
.calhalf{border-top:1px dashed var(--rule);padding-top:4px;display:flex;flex-direction:column;gap:4px;min-height:44px}
.calhalf.pm{background:color-mix(in srgb,var(--ice) 35%,transparent)}
.calhalfhead{font:500 .62rem var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.cslot{border:1px solid var(--rule);border-left:3px solid var(--head);background:var(--surface);display:flex;flex-direction:column;gap:4px;padding:0 0 4px}
.cslot.giro{border-left-color:#2F7FD0}.cslot.cliente{border-left-color:#F2C202}.cslot.corriere{border-left-color:#BA5AED}
.cslot.closed{padding-bottom:0}
.cslot.empty{display:none;border-style:dashed;opacity:.75}
.cslot.over,.calhalf.over{background:var(--ice);border-color:var(--head)}
.cslothead{all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;padding:4px 6px;font:500 .66rem var(--f-mono);text-transform:uppercase;letter-spacing:.03em;color:var(--fg)}
.cslothead:focus-visible{outline:2px solid var(--head)}
.cslothead .cslname{flex:1;min-width:0;overflow-wrap:anywhere}
.cslothead .chev{width:10px;color:var(--muted)}
.cslot .ccard{margin:0 4px}
.cslsum{padding:0 6px 5px;font-size:.78rem;line-height:1.3}
.ccard[data-cal="edit"]{cursor:pointer}
.ccard[data-cal="edit"]:hover{border-color:var(--head)}
.ccard.giro{border-left-color:#2F7FD0;background:color-mix(in srgb,#2F7FD0 8%,var(--bg))}
.pill.kind-giro{color:var(--fg);border-color:#2F7FD0;background:color-mix(in srgb,#2F7FD0 18%,var(--bg))}
.lg.kind-giro{background:#2F7FD0}
.calmodal{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.35);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;overflow:auto}
.calmodal .calsheet{width:min(640px,100%);margin:0;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.calmodal textarea.in{resize:vertical;font:400 .95rem/1.4 var(--f-body);text-transform:none;letter-spacing:0}
.calmodal h3{font:600 1.15rem var(--f-display);text-transform:none;letter-spacing:0;color:var(--head)}
/* V53: one colour per carrier on its slot and its orders; EPAL counts; drop bar to take an order off the calendar */
.calhalf .cslot{border-left:4px solid var(--sc,var(--head))}
.cslot .cslothead{background:color-mix(in srgb,var(--sc,var(--head)) 16%,var(--surface))}
.cslcount{display:flex;flex-wrap:wrap;gap:4px 10px;padding:0 6px;font:500 .66rem var(--f-mono);text-transform:uppercase;letter-spacing:.03em;color:var(--sc,var(--head))}
.ccard,.ccard.cliente,.ccard.corriere,.ccard.giro,.ccard.ritiro{border-left:4px solid var(--sc,var(--head));background:color-mix(in srgb,var(--sc,var(--head)) 9%,var(--bg))}
.ccard .epal{color:var(--fg)}.ccard .epal.est{font-weight:500;color:var(--muted)}
.cslsum{display:flex;flex-wrap:wrap;gap:4px;padding:0 6px 6px}
.cchip{border:1px solid var(--sc,var(--head));background:color-mix(in srgb,var(--sc,var(--head)) 12%,var(--bg));padding:2px 6px;font-size:.76rem;cursor:grab}
.cchip:hover{border-width:2px;padding:1px 5px}
.ccard{cursor:grab}
.caldropout{display:none;position:fixed;left:16px;right:16px;bottom:16px;z-index:50;padding:18px;text-align:center;border:2px dashed var(--bad);background:color-mix(in srgb,var(--bad) 10%,var(--bg));font:500 .8rem var(--f-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--bad)}
body.caldrag .caldropout{display:block}
.caldropout.over{background:color-mix(in srgb,var(--bad) 25%,var(--bg))}
input.vcol{width:38px;height:30px;padding:0;border:1px solid var(--rule);background:none;cursor:pointer}
.cslsub{display:block;font-size:.58rem;color:var(--muted);text-transform:none;letter-spacing:0;font-weight:400}
.cslothead[draggable="true"]{-webkit-user-drag:element;cursor:grab}

/* V65: morning and afternoon line up across days; calSyncH gives each row the height of its fullest day */
.calhalf{min-height:230px;box-sizing:border-box}
.callegend .calmacro{font:500 .62rem var(--f-mono);text-transform:uppercase;letter-spacing:.06em;min-width:120px}
/* V68: counts readable on light (acqua) slots too; the chevron is its own fold button, the rest of the title opens the slot */
.cslcount{color:color-mix(in srgb,var(--sc,var(--head)) 45%,var(--fg))}
.cslothead .chev{all:unset;cursor:pointer;width:16px;text-align:center;color:var(--fg);padding:2px 0}
.cslothead .chev:hover{background:color-mix(in srgb,var(--sc,var(--head)) 25%,transparent)}
.cslothead .chev:focus-visible{outline:2px solid var(--head)}
/* V69: truck load against the vehicle's EPAL capacity */
.capfill{padding:0 4px;border:1px solid currentColor}
.capfill.full{background:var(--head);color:#fff;border-color:var(--head)}
.capfill.over{background:var(--bad);color:#fff;border-color:var(--bad)}
/* V71: sections (Magazzino, Produzione, Logistica, Impostazioni) with their sub-sections, and Claude at the side */
.secnav{flex:1 1 100%;align-items:center}
.secnav .grow{flex:1}
.secnav .sidebtn{font:500 .72rem var(--f-mono)}
.secnav .sidebtn[aria-pressed="true"]{background:var(--head);color:#fff;border-color:var(--head)}
.subnav{flex:1 1 auto;gap:4px;border-bottom:1px solid var(--rule)}
.subnav button{border:1px solid transparent;border-bottom:0;padding:7px 12px;font:500 .76rem var(--f-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:-1px}
.subnav button[aria-selected="true"]{border-color:var(--rule);background:var(--surface);color:var(--head);border-bottom:0}
.set[data-sub="mag"] > [data-ss="prod"],.set[data-sub="mag"] > [data-ss="log"],.set[data-sub="mag"] > [data-ss="pw"],.set[data-sub="mag"] > [data-ss="cli"],.set[data-sub="mag"] > [data-ss="art"]{display:none}
.set[data-sub="art"] > :not([data-ss="art"]){display:none}
.set[data-sub="cli"] > :not([data-ss="cli"]){display:none}
.antab td{vertical-align:top}.antab td.nw{white-space:nowrap}.antab td.small{white-space:normal;max-width:220px;word-break:break-word}
.set[data-sub="pw"] > :not([data-ss="pw"]){display:none}
.set[data-sub="prod"] > :not([data-ss="prod"]):not([data-ss="all"]),.set[data-sub="log"] > :not([data-ss="log"]):not([data-ss="all"]){display:none}
.side{position:fixed;right:0;top:0;bottom:0;width:min(420px,100vw);z-index:30;background:var(--bg);border-left:1px solid var(--rule);box-shadow:-6px 0 18px rgba(0,0,0,.08);display:flex;flex-direction:column;gap:10px;padding:12px 14px calc(12px + env(safe-area-inset-bottom,0px))}
.side[hidden]{display:none}
.sidehead{display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--rule);padding-bottom:8px}
.sidehead b{font:600 1rem var(--f-display);color:var(--head)}
.sidehelp{margin:0}
.side .sidechat{flex:1;overflow-y:auto;min-height:0;border:0;padding:0;gap:10px}
.side .msg{max-width:100%;font-size:.92rem}
.side .composer textarea{flex:1;min-height:56px;resize:vertical}
@media (min-width:1100px){body.side-on .wrap{margin-right:440px;margin-left:16px}}

/* V72: section passwords */
.lockbox{gap:12px}
.lockico{font-size:.8em}
/* V83 Produzione: confirmation box, production calendar */
.fcconf{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding:8px;border:1px solid var(--line);background:var(--surface2)}
.fcconf textarea{width:100%;display:block;margin-top:3px}
div.fcchip{cursor:default}
.pcgrid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.pchd{font:600 11px/1.2 'IBM Plex Mono',monospace;text-transform:uppercase;color:var(--muted);padding:2px 4px}
.pcday{border:1px solid var(--line);min-height:96px;padding:4px;display:flex;flex-direction:column;gap:4px;background:var(--surface)}
.pcday.today{border-color:var(--head);box-shadow:inset 0 0 0 1px var(--head)}
.pcday.past{opacity:.7}
.pcdh{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600}
.pcdh .btn{padding:0 7px;min-height:22px;line-height:20px}
.pcchip{display:flex;flex-direction:column;gap:1px;text-align:left;border:1px solid var(--line);border-left:4px solid var(--head);background:var(--surface2);padding:4px 6px;cursor:pointer;font:inherit;color:inherit;font-size:12px;min-width:0}
.pcchip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcchip.sel,.pcchip:hover{border-color:var(--head)}
@media (max-width:760px){.pcgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.pchd{display:none}}
.fctab td.fcknown{background:color-mix(in srgb,var(--warn) 22%,transparent);font-weight:600}

.fcdrift { color: var(--warn); }
.fcdrift b { color: inherit; }
.cutab tr.cumain { cursor: pointer; }
.cutab tr.cusub td { background: var(--surface2); font-size: 12px; }
.cutab .cuname { font-size: 12px; padding: 2px 6px; }
.fcmon.fcout .fcmh { color: var(--bad); }

.fcchip.ndsel{cursor:pointer}.fcchip.ndsel:hover{border-color:var(--rule)}
.ndmodal{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto}
.ndbox{max-width:1100px;width:100%;background:var(--bg,#fff);margin:0}

.prtab tr.prmon{cursor:pointer}.prtab tr.prmon.prout td{background:var(--bad)}.prtab .prcnt{display:inline-block;margin-left:8px;padding:0 6px;border:1px solid rgba(255,255,255,.6)}

.ndtab tr.ndrow{cursor:pointer}.ndtab tr.ndrow:hover td{background:var(--surface2)}.ndprod{margin:8px 0}
.pcday.over{outline:2px dashed var(--rule);outline-offset:-2px}.pctodo{margin:6px 0}.pcchip[draggable=true]{cursor:grab}
.clgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px 16px;margin:8px 0}.cltab tr.open td{background:var(--surface2)}.clcard textarea{min-height:220px}
.ciref{display:flex;flex-direction:column;gap:6px;padding:6px 8px;border-left:3px solid var(--acqua,#7fbfc4);background:var(--surface)}
.ciref ul{margin:2px 0 0;padding-left:18px}.ciref mark{background:#fff1a8;color:inherit;padding:0 1px}
.cirow{padding:4px 0;border-top:1px solid var(--line)}.cirow:first-of-type{border-top:0}
.ciref details summary{cursor:pointer}
.btn.armed{background:#8a2a1a;color:#fff;border-color:#8a2a1a}
.card > .cardhead .ndview{margin-left:24px}.card > .cardhead:has(.ndview){justify-content:flex-start}
.fcconf > label[for]{display:block}
.fctab .ndnet{margin-bottom:4px}.fctab .ndnet b{font-size:1.05em}.fctab td input.fcst{font-size:.85em;width:90px}
.prtab tr.prmon.prord td{background:#2f7f86}.prtab tr.prmon.prdel td{background:#7a7a7a}

/* forecast chat with Claude, V132 */
.fcchat{border:1px solid var(--line);padding:6px 10px;margin-top:6px}.fcchat summary{cursor:pointer}
.fcchat .fccmsgs{display:flex;flex-direction:column;gap:8px;max-height:420px;overflow-y:auto;margin:8px 0}
.fcchat .msg{max-width:100%;font-size:.92rem}.fcchat .fccin{gap:6px;align-items:flex-end;flex-wrap:nowrap}.fcchat .fccin textarea{flex:1;min-height:0;height:auto}
.fcedits{border-left:3px solid var(--warn);padding:6px 10px;margin:6px 0;display:flex;flex-direction:column;gap:6px}
.fcconfrow td{border-top:2px solid var(--head);background:var(--ghiaccio, #eef6f6)}
