/* All component styles: tabs, cards, tables, modals, pills, buttons,
   auth, gantt, scenario bar, per-tab widgets, role-based gating. */

/* Lucide icons (see js/core/icons.js) */
.lucide{display:inline-block;vertical-align:-0.18em;flex-shrink:0;}
.btn .lucide,.con-edit-btn .lucide,.edit-btn .lucide,.update-flag .lucide,.step-del .lucide,.pill-del .lucide,.item-move .lucide,.drag-hdl .lucide,.inst-pic-del .lucide,.doc-cmt-tgl .lucide,.collab-title .lucide{vertical-align:-0.2em;}
.btn .lucide + span,.btn span + .lucide{margin-left:4px;}

/* Legacy header shell (kept for back-compat, now unused for hero) */
.hdr{margin-bottom:14px;}
.hdr h1{font-family:var(--font-display);font-weight:900;font-size:18px;letter-spacing:var(--title-ls);text-transform:uppercase;color:var(--tx1);margin-bottom:2px;}
.hdr p{font-size:13px;color:var(--tx2);}
.wc{color:var(--link);font-weight:700;font-family:var(--font-display);}
.hdr-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap;}

/* Author bar */
.author-bar{display:flex;align-items:center;gap:10px;margin-bottom:16px;padding:10px 14px;background:var(--bg1);border:1px solid var(--bd3);border-radius:var(--r);box-shadow:var(--shadow-sm);flex-wrap:wrap;}
.author-bar label{font-family:var(--font-display);font-size:10px;color:var(--tx3);white-space:nowrap;font-weight:900;text-transform:uppercase;letter-spacing:var(--eyebrow-ls);}
.author-input{font-size:13px;padding:5px 10px;border:1px solid var(--bd2);border-radius:var(--r);background:var(--bg2);color:var(--tx1);font-family:var(--font-body);width:200px;transition:border-color .15s,box-shadow .15s;min-width:0;}
.author-input:focus{outline:none;border-color:var(--link);box-shadow:var(--focus-ring);}
.export-top{margin-left:auto;}
#last-saved-lbl{white-space:nowrap;}

/* Mobile: wrap onto multiple rows; keep the role pill and "Saved at…"
   timestamps on a single line each so they don't shred into stacked
   characters. The Export button drops to its own full-width row at the
   bottom; "Saved …" moves to its own row above it. */
@media(max-width:720px){
  .author-bar{padding:10px 12px;gap:8px;row-gap:6px;}
  .author-input{flex:1 1 160px;width:auto;}
  .role-pill{white-space:nowrap;flex:0 0 auto;}
  .logout-btn{flex:0 0 auto;}
  #last-saved-lbl{flex:1 1 100%;order:50;font-size:10.5px;}
  .export-top{margin-left:0;flex:1 1 100%;order:99;justify-content:center;}
}

/* Tabs */
.tab-bar{display:flex;gap:2px;margin-bottom:18px;flex-wrap:wrap;border-bottom:1px solid var(--bd3);padding-bottom:0;}
.tab{padding:8px 16px;border-radius:0;border:none;border-bottom:var(--divider) solid transparent;font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:transparent;color:var(--tx3);transition:color .15s,border-color .15s;user-select:none;margin-bottom:-1px;}
.tab:hover{color:var(--tx1);}
.tab.active{background:transparent;color:var(--link);border-bottom-color:var(--link);font-weight:900;}
.panel{display:none;}.panel.active{display:block;}

/* Station cards (Stations tab) */
.sgrid{display:flex;flex-direction:column;gap:9px;}
.scard{background:var(--bg1);border:1px solid var(--bd3);border-radius:var(--rl);overflow:hidden;box-shadow:var(--shadow-sm);transition:box-shadow .15s,border-color .15s;}
.scard:hover{box-shadow:var(--shadow-md);border-color:var(--bd2);}
.scard.needs-update{border-color:var(--bd-warn);border-left:var(--divider) solid var(--wc-teal);}
.shdr{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;user-select:none;border-bottom:1px solid transparent;transition:border-color .15s;}
.sbody.open ~ .shdr,.scard:has(.sbody.open) .shdr{border-bottom-color:var(--bd3);}
.snum{height:24px;min-width:44px;padding:0 7px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:500;flex-shrink:0;}
.stitle{font-family:var(--font-display);font-size:14px;font-weight:700;letter-spacing:.01em;flex:1;color:var(--tx1);}
.schev{font-size:10px;color:var(--tx3);transition:transform .2s;flex-shrink:0;}
.sbody{display:none;padding:0 12px 12px;}.sbody.open{display:block;}.schev.open{transform:rotate(90deg);}
.update-flag{font-size:10px;padding:2px 7px;border-radius:8px;background:var(--bg-warn);color:var(--tx-warn);border:0.5px solid var(--bd-warn);cursor:pointer;user-select:none;white-space:nowrap;flex-shrink:0;}
.update-flag.active{background:var(--fill-warn);color:var(--fill-warn-fg);}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:11px;}
@media(max-width:580px){.two-col{grid-template-columns:1fr;}}

/* Section labels */
.sl{font-family:var(--font-display);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:var(--eyebrow-ls);color:var(--tx3);margin:10px 0 4px;}
.sec-hdr{font-family:var(--font-display);font-size:14px;font-weight:900;letter-spacing:var(--title-ls);text-transform:uppercase;color:var(--tx1);margin-bottom:10px;display:flex;align-items:center;gap:8px;}

/* Steps list */
.steps{list-style:none;padding:0;margin:0;}
.steps li{display:flex;gap:7px;font-size:13px;color:var(--tx2);padding:3px 0;border-bottom:0.5px solid var(--bd3);line-height:1.5;align-items:flex-start;}
.steps li:last-child{border-bottom:none;}
.sn{font-size:11px;font-weight:500;color:var(--tx3);min-width:16px;padding-top:2px;flex-shrink:0;}
.step-del{margin-left:auto;font-size:10px;color:var(--tx3);cursor:pointer;padding:1px 3px;flex-shrink:0;opacity:0;}
.steps li:hover .step-del,.st-item:hover .step-del,.fi-wrap:hover .step-del,.twrap:hover .step-del{opacity:1;}

/* Material flow step type indicators */
.steps li[data-mflow-type="in"]   { border-left:3px solid rgba(59,109,17,.4);  padding-left:3px; }
.steps li[data-mflow-type="flow"] { border-left:3px solid rgba(24,95,165,.3);  padding-left:3px; }
.steps li[data-mflow-type="out"]  { border-left:3px solid rgba(133,79,11,.4);  padding-left:3px; }
.mflow-type-dot { width:8px;height:8px;border-radius:50%;flex-shrink:0;cursor:pointer;margin-top:4px;transition:transform .15s,box-shadow .15s; }
.mflow-type-dot:hover { transform:scale(1.55);box-shadow:0 0 0 2px rgba(0,0,0,.12); }
.mflow-legend { margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:9px;color:var(--tx3);font-weight:400;text-transform:none;letter-spacing:0;opacity:.7;flex-shrink:0; }
.mflow-leg-dot { width:6px;height:6px;border-radius:50%;display:inline-block;flex-shrink:0; }
.mflow-leg-sep { width:1px;height:10px;background:var(--bd3);margin:0 2px;flex-shrink:0; }
.mflow-leg-sq { display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;border:1px solid;border-radius:3px;font-size:8px;line-height:1;flex-shrink:0; }
.mflow-leg-dot-in { background:var(--mflow-in); }
.mflow-leg-dot-flow { background:var(--mflow-flow); }
.mflow-leg-dot-out { background:var(--mflow-out); }
.mflow-leg-sq-filled { background:var(--mflow-flow);border-color:var(--mflow-flow);color:#fff; }
.mflow-leg-sq-empty { background:transparent;border-color:var(--border);color:var(--tx3); }
.mflow-type-dot.mflow-type-in { background:var(--mflow-in); }
.mflow-type-dot.mflow-type-flow { background:var(--mflow-flow); }
.mflow-type-dot.mflow-type-out { background:var(--mflow-out); }
.step-qg{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;background:transparent;color:var(--tx3);cursor:pointer;margin:0 2px;}
.step-qg.is-on{background:var(--bg-warn);color:var(--tx-warn);}
.mflow-onLine{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border:1px solid var(--border);border-radius:3px;font-size:9px;line-height:1;color:var(--tx3);background:transparent;cursor:pointer;margin-right:2px;}
.mflow-onLine.is-online{border-color:var(--mflow-flow);background:var(--mflow-flow);color:#fff;}

/* Drag handles + drop indicators */
.drag-hdl{cursor:grab;color:var(--tx3);font-size:11px;opacity:0;flex-shrink:0;padding:0 3px;user-select:none;line-height:1;}
.steps li:hover .drag-hdl,.st-item:hover .drag-hdl,.pill:hover .drag-hdl{opacity:.5;}
.step-lbl{cursor:pointer;color:var(--tx3);opacity:0;flex-shrink:0;padding:0 2px;line-height:1;background:none;border:none;}
.steps li:hover .step-lbl,.pill:hover .step-lbl,.fi-wrap:hover .step-lbl,.twrap:hover .step-lbl{opacity:.5;}
.step-lbl:hover{opacity:1!important;color:var(--teal);}
.fi-move-stn{cursor:pointer;color:var(--teal);opacity:.55;flex-shrink:0;padding:0 3px;line-height:1;border-radius:3px;transition:opacity .12s,background .12s;}
.fi-move-stn:hover{opacity:1;background:var(--bg2);}
.dragging{opacity:.2!important;}
.drag-before{outline:2px solid var(--wc-teal);outline-offset:-1px;}
.pill.drag-before{outline:2px solid var(--wc-teal);outline-offset:1px;}
[data-drop-zone].drag-zone-over{background:rgba(0,129,138,.06)!important;}

/* Move-to-station button */
.item-move{margin-left:2px;font-size:10px;color:var(--tx3);cursor:pointer;padding:1px 5px;border-radius:3px;flex-shrink:0;opacity:0;line-height:1;border:0.5px solid var(--bd2);background:var(--bg1);font-family:var(--font-display);font-weight:700;white-space:nowrap;}
.steps li:hover .item-move,.st-item:hover .item-move,.pill:hover .item-move{opacity:1;}
.item-move:hover{background:var(--btn-primary-bg);color:var(--btn-primary-fg);border-color:var(--btn-primary-bg);}

/* Move picker popup */
.move-picker{position:fixed;background:var(--bg1);border:1px solid var(--bd2);border-radius:var(--rl);box-shadow:var(--shadow-md);padding:5px;z-index:9999;min-width:160px;max-width:240px;}
.move-picker-lbl{font-family:var(--font-display);font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:var(--eyebrow-ls);color:var(--tx3);padding:3px 7px 5px;display:block;}
.move-picker-opt{display:block;width:100%;text-align:left;padding:5px 8px;font-size:12px;color:var(--tx2);background:none;border:none;border-radius:var(--r);cursor:pointer;font-family:var(--font-body);}
.move-picker-opt:hover{background:var(--bg2);color:var(--tx1);}

/* Inline add-form inputs (Open Items + Tasks tabs) */
.fi-add-form{display:flex;}
.fi-add-inp{font-size:12px;padding:4px 8px;border:1px solid var(--bd2);border-radius:var(--ri);background:var(--bg2);color:var(--tx1);font-family:var(--font-body);}
.fi-add-inp:focus{outline:none;border-color:var(--link);box-shadow:var(--focus-ring);}

/* Pills + flag badges */
.pill{display:inline-flex;font-size:12px;padding:2px 8px;border-radius:18px;margin:2px 2px 2px 0;border:0.5px solid;align-items:center;gap:4px;}
.p-blue{background:var(--bg-info);color:var(--tx-info);border-color:var(--bd-info);}
.p-gray{background:var(--bg2);color:var(--tx2);border-color:var(--bd2);}
.p-warn{background:var(--bg-warn);color:var(--tx-warn);border-color:var(--bd-warn);}
.p-red{background:var(--bg-danger);color:var(--tx-danger);border-color:var(--bd-danger);}
.pill-del{cursor:pointer;font-size:10px;opacity:.5;line-height:1;}.pill-del:hover{opacity:1;}
.fp{display:inline-flex;font-size:11px;padding:2px 7px;border-radius:9px;font-weight:500;}
.f-crane{background:var(--bg-info);color:var(--tx-info);border:0.5px solid var(--bd-info);}
.f-bot{background:var(--bg-warn);color:var(--tx-warn);border:0.5px solid var(--bd-warn);}
.f-ok{background:var(--bg-ok);color:var(--tx-ok);border:0.5px solid var(--bd-ok);}
.f-tbd{background:var(--bg-danger);color:var(--tx-danger);border:0.5px solid var(--bd-danger);}
.nbox{background:var(--bg2);border-left:2px solid var(--bd-warn);padding:6px 9px;border-radius:0 var(--r) var(--r) 0;font-size:12px;color:var(--tx2);margin-top:6px;line-height:1.5;}
.nbox-edit{display:block;width:100%;box-sizing:border-box;border-top:none;border-right:none;border-bottom:none;font-family:inherit;font-size:12px;line-height:1.5;color:var(--tx2);resize:vertical;min-height:48px;outline:none;}
.nbox-edit:focus{background:var(--bg1);border-left-color:var(--link);}

/* Staff grid + skill tags */
.staff-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:7px;margin-top:4px;}
.staff-card{background:var(--bg2);border:0.5px solid var(--bd3);border-radius:var(--r);padding:7px 9px;}
.staff-count{font-family:var(--font-display);font-size:22px;font-weight:900;color:var(--tx1);letter-spacing:-.01em;line-height:1;}
.staff-label{font-family:var(--font-display);font-size:10px;color:var(--tx3);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-top:3px;}
/* Station status tile — 3-column grid */
.scv2{background:var(--bg2);border:0.5px solid var(--bd3);border-radius:var(--r);overflow:hidden;}
.scv2-cols{display:grid;grid-template-columns:1fr 1fr 1fr;}
.scv2-cols-clickable{cursor:pointer;transition:background .1s;}
.scv2-cols-clickable:hover{background:var(--bg3,var(--bg1));}
.scv2-col{padding:7px 10px;position:relative;}
.scv2-col+.scv2-col{border-left:0.5px solid var(--bd3);}
.scv2-clbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--tx3);margin-bottom:5px;}
.scv2-hc{font-family:var(--font-display);font-size:24px;font-weight:900;color:var(--tx1);line-height:1;}
.scv2-role{font-size:12px;font-weight:600;color:var(--tx1);margin-top:3px;line-height:1.3;}
.scv2-skills{font-size:11px;color:var(--tx2);margin-top:1px;line-height:1.35;}
.scv2-mval{font-size:28px;font-weight:700;color:var(--tx1);line-height:1;}
.scv2-mval-u{font-size:14px;font-weight:400;color:var(--tx2);margin-left:2px;}
.scv2-mval.empty{font-size:18px;color:var(--tx3);}
.scv2-msub{font-size:11px;color:var(--tx3);margin-top:4px;line-height:1.3;}
/* Editor panel — full width, toggled open below the columns */
.scv2-editor{display:none;border-top:0.5px solid var(--bd3);background:var(--bg1);padding:10px;}
.scv2-editor.open{display:block;}
.scv2-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:8px;}
.scv2-editor-col label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--tx3);display:block;margin-bottom:3px;}
.scv2-editor-col input{width:100%;box-sizing:border-box;font-size:14px;font-family:'JetBrains Mono',monospace;padding:5px 7px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg0);color:var(--tx1);}
.scv2-editor-col input:focus{outline:none;border-color:var(--bd1);}
.scv2-editor-hint{font-size:10px;color:var(--tx3);margin-top:3px;line-height:1.3;}
.scv2-editor-sep{height:0.5px;background:var(--bd3);margin:8px 0;}
.sw-section { border-top: 0.5px solid var(--bd3); margin-top: 6px; }
.sw-section-hdr { display: flex; align-items: center; gap: 6px; padding: 6px 0 4px; cursor: pointer; user-select: none; }
.sw-section-hdr:hover { opacity: 0.8; }
.sw-section-title { font-size: 11px; font-weight: 700; color: var(--tx2); }
.sw-section-hint { font-size: 10px; color: var(--tx3); flex: 1; }
.sw-section-count { font-size: 10px; color: var(--tx-warn); font-weight: 600; }
.sw-chevron { font-size: 11px; color: var(--tx3); }
.sw-body { padding-bottom: 4px; }
.sw-body.collapsed { display: none; }
.sw-row { display: flex; align-items: center; gap: 6px; margin-bottom: 5px; }
.sw-badge { font-size: 9px; font-weight: 700; background: var(--tx-warn); color: var(--wc-deep-navy); border-radius: 4px; padding: 1px 5px; white-space: nowrap; flex-shrink: 0; }
.sw-label-input { flex: 1; font-size: 12px; padding: 3px 6px; border: 0.5px solid var(--bd2); border-radius: var(--r); background: var(--bg0); color: var(--tx1); }
.scv2-editor-fields{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0 10px;}
.scv2-editor-fields label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--tx3);display:block;margin-bottom:3px;margin-top:0;}
.scv2-editor-fields input,.scv2-editor-fields textarea{width:100%;box-sizing:border-box;font-size:12px;padding:4px 7px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg0);color:var(--tx1);font-family:var(--sans);}
.scv2-editor-fields input:focus,.scv2-editor-fields textarea:focus{outline:none;border-color:var(--bd1);}
.scv2-editor-fields textarea{resize:none;min-height:38px;}
.skill-tag{font-size:11px;padding:1px 6px;border-radius:8px;background:var(--bg-info);color:var(--tx-info);border:0.5px solid var(--bd-info);}
.skill-tag.mech{background:var(--bg-warn);color:var(--tx-warn);border-color:var(--bd-warn);}
.skill-tag.esd{background:var(--bg-ok);color:var(--tx-ok);border-color:var(--bd-ok);}
.skill-tag.crane{background:var(--bg-info);color:var(--tx-info);border-color:var(--bd-info);}
.skill-tag.qc{background:var(--bg2);color:var(--tx2);border-color:var(--bd2);}
.staff-summary{width:100%;border-collapse:collapse;font-size:12px;border:0.5px solid var(--bd3);border-radius:var(--r);overflow:hidden;margin-bottom:8px;}
.staff-summary th{background:var(--bg3);padding:6px 9px;text-align:left;font-family:var(--font-display);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:var(--eyebrow-ls);color:var(--tx2);border-bottom:1px solid var(--bd3);}
.staff-summary td{padding:5px 8px;border-bottom:0.5px solid var(--bd3);color:var(--tx2);vertical-align:top;}
.staff-summary tr:last-child td{border-bottom:none;}

/* Open items (fi-*) + filter bar */
.fi-grid{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
.fi-sec{font-family:var(--font-display);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:var(--eyebrow-ls);color:var(--tx2);margin:12px 0 5px;}
.fi-wrap{background:var(--bg1);border:0.5px solid var(--bd3);border-radius:var(--r);overflow:hidden;}
.fi-row{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;}
.fi-status{flex-shrink:0;padding-top:1px;}
.fi-status select{font-size:11px;border:0.5px solid var(--bd2);border-radius:6px;background:var(--bg2);color:var(--tx2);padding:1px 4px;font-family:var(--sans);cursor:pointer;}
.fi-status select.s-open{color:var(--tx-danger);}.fi-status select.s-prog{color:var(--tx-warn);}.fi-status select.s-done{color:var(--tx-ok);}
.fi-icon{font-size:13px;flex-shrink:0;padding-top:2px;}
.fi-body{flex:1;font-size:13px;color:var(--tx2);line-height:1.5;min-width:0;}
.fi-right{display:flex;flex-direction:row;align-items:center;gap:5px;flex-shrink:0;padding-top:1px;}
.fi-meta{display:none;padding:0 10px 8px;gap:5px;flex-direction:column;}
.fi-meta.open{display:flex;}
.fi-comment{font-size:12px;width:100%;padding:4px 7px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg1);color:var(--tx1);resize:vertical;min-height:40px;font-family:var(--sans);}
.fi-comment:focus{outline:none;border-color:var(--bd1);}
.filter-bar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;align-items:center;}
.fbtn{font-family:var(--font-display);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:4px 11px;border-radius:var(--r);border:1px solid var(--bd2);cursor:pointer;background:var(--bg1);color:var(--tx2);user-select:none;transition:all .15s;}
.fbtn:hover{background:var(--bg3);color:var(--tx1);}
.fbtn.active{background:var(--btn-primary-bg);color:var(--btn-primary-fg);border-color:var(--btn-primary-bg);}
.fbtn.f-danger.active{background:var(--fill-danger);border-color:var(--fill-danger);color:var(--fill-danger-fg);}
.fbtn.f-warn.active{background:var(--fill-warn);border-color:var(--fill-warn);color:var(--fill-warn-fg);}
.fbtn.f-info.active{background:var(--tx-info);border-color:var(--tx-info);color:#fff;}
.fi-owner-sel{font-size:11px;border:0.5px solid var(--bd2);border-radius:6px;background:var(--bg2);color:var(--tx2);padding:1px 4px;font-family:var(--sans);cursor:pointer;}
.fi-owner-sel:focus{outline:none;}
.sti-owner-sel{font-size:11px;border:0.5px solid var(--bd2);border-radius:6px;background:var(--bg2);color:var(--tx2);padding:1px 4px;font-family:var(--sans);cursor:pointer;max-width:90px;}
.sti-owner-sel:focus{outline:none;}
.note-tgl{display:block;font-size:10px;color:var(--tx3);cursor:pointer;padding:1px 3px;border-radius:3px;user-select:none;margin-top:3px;}
.note-tgl:hover{background:var(--bg-hover,var(--bg2));}

/* Task list */
.tlist{border:0.5px solid var(--bd3);border-radius:var(--r);overflow:hidden;margin-bottom:4px;}
.trow{display:grid;grid-template-columns:20px 1fr auto auto;gap:8px;padding:8px 10px;align-items:start;border-bottom:0.5px solid var(--bd3);}
.trow:last-child{border-bottom:none;}
.trow.thdr{background:var(--bg2);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--tx3);}
.tname{font-size:13px;font-weight:500;color:var(--tx1);}.tname.done{text-decoration:line-through;color:var(--tx3);}
.tsub{font-size:11px;color:var(--tx3);font-weight:400;margin-top:1px;}
.tbadge{font-size:10px;padding:1px 7px;border-radius:8px;font-weight:500;border:0.5px solid;}
.td{background:var(--bg2);color:var(--tx2);border-color:var(--bd2);}
.tv{background:var(--bg-info);color:var(--tx-info);border-color:var(--bd-info);}
.ti{background:var(--bg-warn);color:var(--tx-warn);border-color:var(--bd-warn);}
.tt{background:var(--bg-ok);color:var(--tx-ok);border-color:var(--bd-ok);}
.own{font-size:11px;padding:1px 6px;border-radius:8px;font-weight:500;}
.ow{background:var(--bg-info);color:var(--tx-info);}.oth{background:var(--bg-warn);color:var(--tx-warn);}
.ohunt{background:var(--bg-ok);color:var(--tx-ok);}.oboth{background:var(--bg2);color:var(--tx2);}
.own-sel{font-size:11px;border:0.5px solid var(--bd2);border-radius:7px;background:var(--bg2);color:var(--tx2);padding:2px 5px;font-family:var(--sans);cursor:pointer;max-width:88px;}
.own-sel:focus{outline:none;border-color:var(--bd1);}
.ms-badge{font-family:var(--font-display);font-size:11px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;padding:3px 10px;border-radius:var(--r);}
.ms-hdr{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap;}
.ms-title{font-family:var(--font-display);font-size:15px;font-weight:900;letter-spacing:var(--title-ls);text-transform:uppercase;color:var(--tx1);}
.milestone{margin-bottom:16px;}
.tmeta{display:none;padding:4px 10px 8px 38px;gap:4px;flex-direction:column;}
.tmeta.open{display:flex;background:var(--bg2);border-top:0.5px solid var(--bd3);}
.twrap:not(:last-child){border-bottom:0.5px solid var(--bd3);}
.trow{border-bottom:none;}
.trow.thdr{border-bottom:0.5px solid var(--bd3);}
.tstamp{font-size:10px;color:var(--tx-ok);display:flex;align-items:center;gap:4px;}
.tcomment{font-size:12px;width:100%;padding:4px 7px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg1);color:var(--tx1);resize:vertical;min-height:38px;font-family:var(--sans);}
.tcomment:focus{outline:none;border-color:var(--bd1);}
.prog-lbl{font-size:12px;color:var(--tx3);margin-bottom:4px;}
.prog-bar{height:var(--divider);background:var(--bd3);border-radius:0;margin-bottom:16px;overflow:hidden;}
.prog-fill{height:100%;background:var(--wc-gradient);border-radius:0;transition:width .3s;}

/* Capacity cards + data tables */
/* ── Capacity tab ── */
.cap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:9px;margin-bottom:18px;}
.cap-card{background:var(--bg1);border:1px solid var(--bd3);border-radius:var(--rl);padding:12px 14px;box-shadow:var(--shadow-sm);}
.cap-card.ok{border-left:3px solid var(--wc-green);}.cap-card.warn{border-left:3px solid var(--bd-warn);}.cap-card.danger{border-left:3px solid var(--tx-danger);}
.cap-lbl{font-family:var(--font-display);font-size:10px;color:var(--tx3);font-weight:900;text-transform:uppercase;letter-spacing:var(--eyebrow-ls);margin-bottom:4px;}
.cap-val{font-family:var(--font-display);font-size:24px;font-weight:900;color:var(--tx1);letter-spacing:-.01em;line-height:1.1;}
.cap-sub{font-size:11px;color:var(--tx2);margin-top:4px;line-height:1.4;}
.cap-section-title{font-size:13px;font-weight:600;color:var(--tx1);margin-bottom:8px;}

/* Assumptions panel */
.cap-assumptions-panel{border:0.5px solid var(--bd3);border-radius:var(--rl);background:var(--bg2);margin-bottom:14px;font-size:12px;}
.cap-assumptions-summary{padding:7px 12px;border-bottom:0.5px solid var(--bd3);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--tx2);}
.cap-fin-hint{font-weight:400;font-size:10px;color:var(--tx3);text-transform:none;letter-spacing:0;}
.cap-fin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;padding:10px 12px 12px;}
.cap-fin-label{display:flex;flex-direction:column;gap:3px;}
.cap-fin-lbl{font-size:10px;color:var(--tx3);font-weight:500;}
.cap-fin-inp{font-size:12px;padding:3px 7px;border:0.5px solid var(--bd2);border-radius:4px;background:var(--bg1);color:var(--tx1);width:100%;box-sizing:border-box;}
.cap-fin-ro{font-size:13px;font-weight:500;color:var(--tx1);}

/* Utilization chart */
.cap-util-wrap{display:flex;flex-direction:column;gap:5px;background:var(--bg1);border:0.5px solid var(--bd3);border-radius:var(--rl);padding:10px 14px;}
.cap-util-row{display:grid;grid-template-columns:70px 1fr 110px;align-items:center;gap:10px;}
.cap-util-lbl{font-size:11px;font-weight:600;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cap-util-track{background:var(--bg2);border-radius:3px;height:12px;overflow:hidden;}
.cap-util-bar{height:100%;border-radius:3px;background:var(--wc-teal);transition:width .3s;}
.cap-util-bar.cap-util-hi{background:var(--bd-warn);}
.cap-util-bar.cap-util-bot{background:var(--fill-danger);}
.cap-util-meta{font-size:11px;color:var(--tx3);text-align:right;white-space:nowrap;}

/* Cost curve */
.cap-curve-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:6px;}
.cap-curve-card{background:var(--bg1);border:1px solid var(--bd3);border-radius:var(--rl);padding:12px 14px;border-top-width:3px;}
.cap-curve-200{border-top-color:var(--wc-green);}
.cap-curve-400{border-top-color:var(--bd-warn);}
.cap-curve-600{border-top-color:var(--tx-danger);}
.cap-curve-active{box-shadow:0 0 0 2px var(--accent);}
.cap-curve-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--tx3);margin-bottom:4px;}
.cap-curve-primary{font-size:20px;font-weight:800;color:var(--tx1);line-height:1.1;}
.cap-curve-unit{font-size:11px;font-weight:400;color:var(--tx3);}
.cap-curve-margin{font-size:12px;font-weight:600;margin-top:3px;}
.cap-curve-meta{font-size:11px;color:var(--tx3);margin-top:2px;}
.cap-curve-note{font-size:10px;color:var(--tx3);margin-bottom:4px;}

/* Scenario table extras */
.cap-totals-row td{font-weight:500;color:var(--tx1);border-top:1px solid var(--bd2);}
.cap-live-row td{background:var(--bg2);}
.cap-live-badge{display:inline-block;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;background:var(--btn-primary-bg);color:var(--btn-primary-fg);border-radius:3px;padding:1px 4px;margin-left:4px;vertical-align:middle;}

[data-theme="dark"] .cap-util-track{background:var(--bg3);}
[data-theme="dark"] .cap-curve-active{box-shadow:0 0 0 2px var(--accent);}
.data-table{width:100%;border-collapse:collapse;font-size:13px;border:1px solid var(--bd3);border-radius:var(--rl);overflow:hidden;margin-bottom:16px;background:var(--bg1);}
.data-table th{background:var(--wc-deep-navy);padding:8px 11px;text-align:left;font-family:var(--font-display);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:var(--eyebrow-ls);color:var(--wc-white);border-bottom:var(--divider) solid var(--wc-teal);}
.data-table td{padding:7px 11px;border-bottom:1px solid var(--bd3);color:var(--tx2);vertical-align:top;}
.data-table tr:last-child td{border-bottom:none;}.data-table tr:hover td{background:var(--bg2);}
.c-ok{color:var(--tx-ok);font-weight:500;}.c-warn{color:var(--tx-warn);font-weight:500;}.c-danger{color:var(--tx-danger);font-weight:500;}

/* Contacts */
.con-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:14px;}
.con-card{background:var(--bg1);border:0.5px solid var(--bd3);border-radius:var(--rl);padding:12px 14px;position:relative;}
.con-name{font-size:15px;font-weight:500;color:var(--tx1);margin-bottom:2px;}
.con-role{font-size:12px;color:var(--tx3);margin-bottom:5px;}
.tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;}
.tag{font-size:11px;padding:1px 7px;border-radius:9px;background:var(--bg2);color:var(--tx2);border:0.5px solid var(--bd2);}
.con-edit-btn{opacity:0;transition:opacity .15s;position:absolute;top:8px;right:8px;font-size:11px;padding:2px 8px;border-radius:6px;border:0.5px solid var(--bd2);background:transparent;color:var(--tx3);cursor:pointer;}
.con-card:hover .con-edit-btn{opacity:1;}
.con-add-card{display:flex;align-items:center;justify-content:center;gap:6px;padding:16px;background:var(--bg2);border:0.5px dashed var(--bd2);border-radius:var(--rl);cursor:pointer;font-size:13px;color:var(--tx3);transition:all .15s;min-height:80px;}
.con-add-card:hover{border-color:var(--teal);color:var(--teal);}

/* Modals */
.modal-overlay{display:none;position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.35);}
.modal-overlay.open{display:block;}
.modal{display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg1);border:0.5px solid var(--bd2);border-radius:var(--rl);padding:20px;z-index:1001;min-width:300px;max-width:440px;width:90%;box-shadow:0 8px 32px rgba(0,0,0,.25);}
.modal.open{display:block;}
.modal{border-top:var(--divider) solid var(--wc-teal);box-shadow:var(--shadow-lg);}
.modal h3{font-family:var(--font-display);font-size:16px;font-weight:900;letter-spacing:var(--title-ls);text-transform:uppercase;color:var(--tx1);margin-bottom:14px;}
.modal label{font-size:12px;color:var(--tx3);display:block;margin-bottom:3px;margin-top:8px;}
.modal label:first-of-type{margin-top:0;}
.modal label.modal-check-row{display:flex;align-items:flex-start;gap:8px;margin:0;width:100%;box-sizing:border-box;font-size:13px;color:var(--tx1);cursor:pointer;line-height:1.45;}
.modal label.modal-check-row input[type=checkbox],
.modal label.modal-check-row input[type=radio]{width:15px;height:15px;min-width:15px;margin-top:1px;accent-color:var(--link);cursor:pointer;flex-shrink:0;}
.modal label.modal-check-row span{flex:1;min-width:0;}
.modal-check-list{display:flex;flex-direction:column;gap:8px;margin-top:12px;padding-top:12px;border-top:0.5px solid var(--bd3);}
.tool-combine-section .modal-check-list{margin-top:0;padding-top:0;border-top:none;}
.modal-hint{font-size:11px;color:var(--tx3);margin-top:12px;line-height:1.45;}
.modal input:not([type=checkbox]):not([type=radio]),.modal textarea,.modal select{width:100%;font-size:13px;padding:5px 8px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg2);color:var(--tx1);font-family:var(--sans);box-sizing:border-box;}
.modal input:focus,.modal textarea:focus,.modal select:focus{outline:none;border-color:var(--bd1);}
.modal textarea{resize:vertical;min-height:52px;}
.modal-btns{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap;}

/* Gantt */
.gantt-status-bar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;}
.gs-card{background:var(--bg1);border:0.5px solid var(--bd3);border-radius:var(--r);padding:8px 12px;min-width:120px;}
.gs-label{font-size:11px;color:var(--tx3);}
.gs-val{font-family:var(--font-display);font-size:22px;font-weight:900;color:var(--tx1);letter-spacing:-.01em;line-height:1;}
.gantt-legend{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;align-items:center;}
.gl-item{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--tx2);}
.gl-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0;}
.gantt-wrap{overflow-x:auto;margin-bottom:18px;}
.g-col-resize{width:5px;cursor:col-resize;position:absolute;right:-3px;top:0;bottom:0;z-index:10;background:transparent;}
.g-col-resize:hover,.g-col-resize.dragging{background:var(--teal);opacity:.5;}

/* Gantt task sub-rows */
.g-tasks-group{border-bottom:0.5px solid var(--bd3);}
.g-task-row{display:flex;border-bottom:0.5px solid var(--bd3);align-items:stretch;}
.g-task-row.g-task-done{background:var(--bg2);}
.g-task-cell{display:flex;align-items:flex-start;gap:4px;padding:4px 6px 4px 8px;flex-shrink:0;}
.g-task-label-text{flex:1;font-size:11px;color:var(--tx1);cursor:pointer;min-width:0;word-break:break-word;line-height:1.4;padding-top:1px;}
.g-task-label-text:hover{text-decoration:underline;text-decoration-style:dotted;}
.g-task-label-text.done{text-decoration:line-through;opacity:.55;color:var(--tx3);}
.g-task-actions{display:flex;align-items:center;gap:2px;flex-shrink:0;opacity:0;transition:opacity .12s;}
.g-task-row:hover .g-task-actions{opacity:1;}
.g-task-row:hover .g-task-actions .step-del{opacity:1;}
.g-task-owner-sel,.g-task-ms-sel{font-size:10px;padding:1px 3px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg1);color:var(--tx2);cursor:pointer;}
.g-task-owner-sel{max-width:85px;}
.g-task-bar-owner{position:absolute;font-size:10px;background:transparent;border:none;color:var(--tx2);cursor:pointer;padding:0 2px;white-space:nowrap;max-width:110px;outline:none;z-index:3;top:50%;transform:translateY(-50%);}
.g-task-bar-owner:hover{color:var(--tx1);}
.g-task-bar-label{position:absolute;font-size:10px;white-space:nowrap;color:var(--tx2);pointer-events:none;z-index:3;top:50%;transform:translateY(-50%);display:none;}
#tab-gantt.bar-show-label .g-task-bar-label{display:block;}
#tab-gantt.bar-show-label .g-task-bar-owner{display:none;}
.g-task-move-btn{font-size:11px;cursor:pointer;color:var(--tx3);padding:0 2px;transition:color .12s;line-height:1;display:inline-flex;align-items:center;}
.g-task-move-btn:hover{color:var(--teal);}
.g-task-note-tgl{font-size:11px;cursor:pointer;color:var(--tx3);padding:0 2px;transition:color .12s;line-height:1;opacity:.4;flex-shrink:0;}
.g-task-note-tgl:hover{color:var(--teal);opacity:1;}
.g-task-note-tgl.has-comment{color:var(--teal);opacity:1;}
.g-task-link-btn{cursor:pointer;color:var(--tx3);padding:0 2px;transition:color .12s,opacity .12s;line-height:1;opacity:.3;flex-shrink:0;display:inline-flex;align-items:center;}
.g-task-link-btn:hover{opacity:.9;}
.g-task-link-btn.is-linked{color:var(--teal);opacity:1;}
.sti-link-btn{cursor:pointer;color:var(--tx3);transition:color .12s,opacity .12s;opacity:.3;display:inline-flex;align-items:center;flex-shrink:0;}
.sti-link-btn:hover{opacity:.9;}
.sti-link-btn.is-linked{color:var(--teal);opacity:1;}
.g-task-note-row{display:flex;border-bottom:0.5px solid var(--bd3);background:var(--bg2);}
.g-task-note-cell{flex-shrink:0;padding:3px 9px 4px 32px;}
.g-task-note-cell .tcomment{width:100%;min-height:36px;}
.g-ms-collapse{background:none;border:none;cursor:pointer;color:var(--tx3);padding:0 2px;flex-shrink:0;line-height:1;transition:color .12s;}
.g-ms-collapse:hover{color:var(--teal);}
.g-ms-grab{font-size:13px;cursor:grab;color:var(--tx3);padding:0 3px;flex-shrink:0;line-height:1;opacity:.45;transition:opacity .12s;user-select:none;}
.g-ms-grab:hover{opacity:.9;}
.g-ms-grab:active{cursor:grabbing;}

/* Station open-items collapsible header */
.sti-header{display:flex;align-items:center;gap:6px;padding:5px 9px;background:var(--wc-teal-200);color:var(--wc-teal-700);border-radius:var(--r);cursor:pointer;user-select:none;margin-top:10px;}
.sti-header:hover{background:var(--wc-teal-300);}
[data-theme="dark"] .sti-header{background:var(--wc-teal-800);color:var(--wc-teal-300);}
[data-theme="dark"] .sti-header:hover{background:var(--wc-teal-700);color:var(--wc-teal-100);}
.sti-header-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;flex:1;}
.sti-header-chev{font-size:11px;transition:transform .15s;display:inline-block;line-height:1;}
.sti-header-chev.closed{transform:rotate(-90deg);}
.sti-header .sti-add-btn{color:var(--wc-teal-700);background:none;border:1px solid var(--wc-teal-400);padding:2px 8px;border-radius:4px;font-size:11px;}
.sti-header .sti-add-btn:hover{background:var(--wc-teal-400);color:var(--wc-teal-800);}
[data-theme="dark"] .sti-header .sti-add-btn{color:var(--wc-teal-300);border-color:var(--wc-teal-600);}
[data-theme="dark"] .sti-header .sti-add-btn:hover{background:var(--wc-teal-700);color:var(--wc-teal-100);}
/* has-open = any item not yet done → red */
.sti-header.has-open{background:var(--bg-danger);color:var(--tx-danger);}
.sti-header.has-open:hover{background:var(--bd-danger);}
.sti-header.has-open .sti-add-btn{color:var(--tx-danger);border-color:var(--bd-danger);}
.sti-header.has-open .sti-add-btn:hover{background:var(--bd-danger);color:var(--tx-danger);}
/* all-done = every item checked → green */
.sti-header.all-done{background:var(--bg-ok);color:var(--tx-ok);}
.sti-header.all-done:hover{background:var(--bd-ok);}
.sti-header.all-done .sti-add-btn{color:var(--tx-ok);border-color:var(--bd-ok);}
.sti-header.all-done .sti-add-btn:hover{background:var(--bd-ok);color:var(--tx-ok);}
.sti-body.collapsed{display:none;}
@media print{.sti-body.collapsed{display:block!important;}}

/* Station step-items + staff editor + add-row + edit-btn */
.st-items{border:0.5px solid var(--bd3);border-radius:var(--r);overflow:hidden;margin-top:4px;}
.st-item{display:grid;grid-template-columns:16px 1fr;gap:8px;padding:7px 9px;border-bottom:0.5px solid var(--bd3);align-items:start;}
.st-item:last-child{border-bottom:none;}
.st-item.done-item{background:var(--bg2);}
.st-item input[type=checkbox]{width:13px;height:13px;accent-color:var(--teal);cursor:pointer;margin-top:2px;}
.st-item-body{min-width:0;}
.st-item-text{font-size:12px;color:var(--tx2);line-height:1.4;cursor:pointer;border-radius:3px;padding:1px 3px;margin:-1px -3px;}
.st-item-text:hover{background:var(--bg2);color:var(--tx1);}
.st-item.done-item .st-item-text{text-decoration:line-through;color:var(--tx3);}
.st-item-comment{width:100%;margin-top:4px;font-size:11px;padding:4px 7px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg1);color:var(--tx1);resize:none;min-height:34px;font-family:var(--sans);line-height:1.4;display:none;overflow:hidden;box-sizing:border-box;}
.st-item-comment.show{display:block;}
.st-item-comment:focus{outline:none;border-color:var(--bd1);}
.st-item-tgl{font-size:10px;color:var(--tx3);cursor:pointer;padding:1px 3px;border-radius:3px;margin-top:3px;display:inline-block;user-select:none;}
.st-item-tgl:hover{background:var(--bg2);color:var(--tx2);}
.st-item-tgl.has-comment{color:var(--link);font-weight:600;}
.staff-editor{display:none;margin-top:8px;background:var(--bg2);border:0.5px solid var(--bd2);border-radius:var(--r);padding:9px 10px;}
.staff-editor.open{display:block;}
.staff-editor label{font-size:11px;color:var(--tx3);display:block;margin-bottom:2px;margin-top:7px;}
.staff-editor label:first-of-type{margin-top:0;}
.staff-editor input,.staff-editor textarea{width:100%;font-size:12px;padding:4px 7px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg1);color:var(--tx1);font-family:var(--sans);}
.staff-editor input:focus,.staff-editor textarea:focus{outline:none;border-color:var(--bd1);}
.staff-editor textarea{resize:none;min-height:40px;}
.edit-btn{font-size:10px;color:var(--tx3);cursor:pointer;padding:2px 6px;border-radius:4px;border:0.5px solid var(--bd3);background:transparent;white-space:nowrap;font-family:var(--sans);}
.edit-btn:hover{background:var(--bg2);color:var(--tx2);}
.add-row{display:flex;gap:5px;margin-top:6px;align-items:center;}
.add-row input{flex:1;font-size:12px;padding:3px 7px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg1);color:var(--tx1);font-family:var(--sans);}
.add-row input:focus{outline:none;border-color:var(--bd1);}

/* My Work + collab note panels */
.mywork-card{background:var(--bg1);border:0.5px solid var(--bd3);border-radius:var(--rl);padding:12px 14px;margin-bottom:10px;}
.mywork-sec{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--tx3);margin:12px 0 5px;}
.mywork-item{display:flex;gap:8px;padding:7px 0;border-bottom:0.5px solid var(--bd3);align-items:flex-start;font-size:13px;}
.mywork-item:last-child{border-bottom:none;}
.mywork-badge{font-size:10px;padding:1px 7px;border-radius:8px;font-weight:500;border:0.5px solid;white-space:nowrap;flex-shrink:0;}
.mywork-source{font-size:11px;color:var(--tx3);}
.mywork-group-hdr{display:flex;align-items:center;gap:6px;padding:5px 8px;border-left:3px solid var(--bd3);margin:8px 0 2px;font-size:12px;font-weight:500;color:var(--tx2);}
.mywork-group-hdr:first-child{margin-top:0;}
.mywork-count{font-size:10px;font-weight:600;padding:1px 7px;border-radius:8px;background:var(--bg3);color:var(--tx3);flex-shrink:0;}
/* My Work — station item edit row */
.mw-sti-item{flex-direction:column;align-items:stretch;}
.mw-sti-row{display:flex;align-items:flex-start;gap:8px;width:100%;}
.mw-sti-content{flex:1;min-width:0;}
.mw-sti-label{font-size:12px;color:var(--tx1);}
.mw-sti-actions{display:flex;gap:3px;flex-shrink:0;align-items:center;padding-top:1px;}
.mw-sti-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--r);border:0.5px solid var(--bd3);background:var(--bg2);color:var(--tx3);cursor:pointer;padding:0;flex-shrink:0;line-height:1;}
.mw-sti-btn:hover{background:var(--bg3);color:var(--tx1);border-color:var(--bd2);}
.mw-sti-btn-done:hover{background:var(--bg-ok);color:var(--tx-ok);border-color:var(--tx-ok);}
.mw-edit-panel{width:100%;padding:7px 0 3px;display:flex;flex-direction:column;gap:5px;}
.mw-edit-input,.mw-edit-textarea{width:100%;padding:5px 8px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg2);color:var(--tx1);font-size:12px;box-sizing:border-box;font-family:var(--sans);}
.mw-edit-input:focus,.mw-edit-textarea:focus{outline:none;border-color:var(--bd1);}
.mw-edit-textarea{min-height:52px;resize:vertical;}
.mw-edit-footer{display:flex;gap:6px;justify-content:flex-end;}
.mw-save-btn{background:var(--wc-teal);color:var(--wc-deep-navy);border-color:var(--link);font-weight:600;width:auto;padding:0 10px;height:24px;font-size:11px;}
.mw-save-btn:hover{opacity:0.85;}
.collab-panel{background:var(--bg1);border:1px solid var(--bd3);border-left:var(--divider) solid var(--wc-green);border-radius:var(--rl);padding:10px 12px;margin-top:14px;}
.collab-title{font-family:var(--font-display);font-size:11px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;color:var(--tx2);margin-bottom:6px;}
.collab-title span{font-weight:400;color:var(--tx3);}
.collab-area{width:100%;font-size:12px;padding:6px 8px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg2);color:var(--tx1);resize:vertical;min-height:52px;font-family:var(--sans);}
.collab-area:focus{outline:none;border-color:var(--bd1);}
.collab-row{display:flex;align-items:center;gap:8px;margin-top:6px;}
.saved{font-size:11px;color:var(--tx-ok);opacity:0;transition:opacity .5s;}
.saved.show{opacity:1;}

/* Buttons */
.btn{padding:6px 14px;border-radius:var(--r);border:1px solid var(--bd2);font-size:12px;font-weight:600;letter-spacing:.02em;cursor:pointer;background:var(--bg1);color:var(--tx2);font-family:var(--font-body);transition:all .15s;}
.btn:hover{background:var(--bg3);color:var(--tx1);border-color:var(--bd2);}
.btn:focus-visible{outline:none;box-shadow:var(--focus-ring);}
.btn-teal{background:var(--btn-primary-bg);color:var(--btn-primary-fg);border-color:var(--btn-primary-bg);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:11px;}
.btn-teal:hover{background:var(--btn-primary-hover);border-color:var(--btn-primary-hover);color:var(--btn-primary-fg);}
.btn-navy{background:var(--wc-navy);color:var(--wc-white);border-color:var(--wc-navy);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:11px;}
.btn-navy:hover{background:var(--wc-deep-navy);border-color:var(--wc-deep-navy);color:var(--wc-white);}
.export-area{width:100%;font-size:11px;padding:8px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg2);color:var(--tx1);min-height:100px;resize:vertical;font-family:monospace;}
.export-area:focus{outline:none;}

/* Station illustration pics + upload zone */
.inst-pics{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.inst-pic{background:var(--bg2);border:0.5px solid var(--bd3);border-radius:var(--r);overflow:visible;flex:1;min-width:110px;max-width:150px;text-align:center;position:relative;text-decoration:none;color:inherit;display:block;}
.inst-pic svg{display:block;width:100%;}
.inst-pic-img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-top-left-radius:var(--r);border-top-right-radius:var(--r);}
.inst-pic-cap{font-size:10px;color:var(--tx3);padding:4px 6px 6px;line-height:1.3;}
.inst-pic-num{display:inline-block;font-weight:700;color:var(--link);background:var(--wc-teal-100);border-radius:8px;padding:0 5px;margin-right:3px;}
.inst-pic-wi{background:var(--wc-teal-100);border-color:var(--wc-teal-300);}
.inst-pic-zoom{position:absolute;left:50%;bottom:calc(100% + 6px);transform:translateX(-50%) scale(.85);transform-origin:center bottom;width:340px;max-width:80vw;height:auto;display:block;border:1px solid var(--bd2);border-radius:6px;box-shadow:var(--shadow-lg);background:var(--bg1);opacity:0;pointer-events:none;transition:opacity .12s,transform .12s;z-index:1000;}
.inst-pic:hover .inst-pic-zoom{opacity:1;transform:translateX(-50%) scale(1);}
@media print{.inst-pic-zoom{display:none!important;}}
.tool-cat-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap;}
.tool-cat-search{flex:1;min-width:160px;max-width:280px;font-size:12px;padding:5px 8px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg2);color:var(--tx1);font-family:var(--sans);box-sizing:border-box;}
.tool-cat-search:focus{outline:none;border-color:var(--bd1);}
.tool-cat-search::-webkit-search-cancel-button{cursor:pointer;}
.tool-cat-empty{color:var(--tx3);font-size:13px;margin-top:8px;}
.tool-cat-toggle{font-size:12px;color:var(--tx2);display:flex;align-items:center;gap:6px;}
.tool-cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px;}
.tool-cat-item{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--bg1);border:0.5px solid var(--bd3);border-radius:var(--r);}
.tool-cat-item--selected{border-color:var(--link);background:var(--wc-teal-100);}
.tool-cat-select{display:flex;align-items:center;flex-shrink:0;margin:0;}
.tool-cat-select input[type=checkbox]{width:14px;height:14px;accent-color:var(--link);cursor:pointer;margin:0;}
.tool-cat-wi-btn{font-size:10px;font-weight:600;padding:2px 7px;border-radius:999px;border:0.5px solid var(--bd2);background:var(--bg2);color:var(--tx2);cursor:pointer;font-family:var(--font-body);line-height:1.3;transition:background .12s,border-color .12s,color .12s;}
.tool-cat-wi-btn:hover{border-color:var(--link);color:var(--tx1);}
.tool-cat-wi-btn--pictured{background:var(--wc-teal-100);border-color:var(--wc-teal-300);color:var(--link);}
.tool-cat-bulk{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;padding:8px 10px;background:var(--bg2);border:0.5px solid var(--bd3);border-radius:var(--r);}
.tool-cat-bulk-count{font-size:12px;font-weight:600;color:var(--tx1);margin-right:4px;}
.tool-combine-intro{font-size:12px;color:var(--tx2);margin:0 0 12px;line-height:1.45;}
.tool-combine-modal{max-width:480px;max-height:min(90vh,640px);overflow-y:auto;box-sizing:border-box;}
.tool-combine-section{margin-bottom:14px;}
.tool-combine-section .sl{font-size:11px;font-weight:600;color:var(--tx2);margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em;}
.tool-combine-custom-name{width:100%;margin-top:6px;font-size:12px;padding:6px 8px;border:0.5px solid var(--bd2);border-radius:var(--r);box-sizing:border-box;}
.tool-combine-image-pick{display:flex;flex-direction:column;gap:8px;}
.tool-combine-image-opt{display:flex;align-items:center;gap:10px;padding:6px 8px;border:0.5px solid var(--bd3);border-radius:var(--r);cursor:pointer;background:var(--bg1);}
.tool-combine-image-opt:has(input:checked){border-color:var(--link);background:var(--wc-teal-100);}
.tool-combine-image-opt input{width:15px;height:15px;min-width:15px;margin:0;accent-color:var(--link);flex-shrink:0;}
.tool-combine-image-opt img{width:48px;height:48px;object-fit:contain;border-radius:4px;background:var(--bg2);flex-shrink:0;}
.tool-combine-image-opt span{font-size:12px;color:var(--tx1);line-height:1.35;}
.tool-combine-image-opt-empty{display:flex;align-items:center;justify-content:center;width:48px;height:48px;font-size:10px;color:var(--tx3);background:var(--bg2);border-radius:4px;flex-shrink:0;text-align:center;line-height:1.2;}
.tool-cat-bulk .btn{font-size:11px;padding:4px 10px;}
.tool-cat-icon{width:56px;height:56px;flex-shrink:0;object-fit:contain;background:var(--bg2);border:0.5px solid var(--bd3);border-radius:var(--r);}
.tool-cat-icon--empty{display:flex;align-items:center;justify-content:center;color:var(--tx3);}
.tool-cat-body{flex:1;min-width:0;}
.tool-cat-name{font-size:12px;font-weight:600;color:var(--tx1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;}
.tool-cat-name:hover{color:var(--link);}
.tool-cat-badges,.tool-cat-usage{display:flex;flex-wrap:wrap;gap:3px;margin-top:3px;}
.tag-tbd{background:var(--wc-amber-100);color:var(--wc-amber-700);}
.tag-muted{opacity:.75;}
.tag-st{font-size:9px;padding:0 4px;}
.tool-modal{max-width:720px!important;width:min(720px,94vw);}
.tool-modal-split{display:flex;gap:16px;align-items:flex-start;}
.tool-modal-preview{flex:0 0 280px;width:280px;min-height:280px;background:var(--bg2);border:0.5px solid var(--bd3);border-radius:var(--r);display:flex;align-items:center;justify-content:center;padding:12px;box-sizing:border-box;}
.tool-modal-preview-link{display:block;width:100%;line-height:0;text-decoration:none;border-radius:var(--r);}
.tool-modal-preview-link:hover{opacity:.92;}
.tool-modal-preview-img{display:block;width:100%;height:auto;max-height:360px;object-fit:contain;margin:0 auto;}
.tool-modal-preview-empty{font-size:12px;color:var(--tx3);text-align:center;line-height:1.45;padding:12px;}
.tool-modal-form{flex:1;min-width:0;}
.tool-modal-form label:first-of-type{margin-top:0;}
@media (max-width:640px){
  .tool-modal-split{flex-direction:column;}
  .tool-modal-preview{flex:0 0 auto;width:100%;min-height:200px;}
}
.st-color-opt{transition:border-color .15s;}
.st-color-opt.selected{border-color:var(--tx1)!important;}
.task-note-tgl{font-size:10px;color:var(--tx3);cursor:pointer;padding:1px 4px;border-radius:3px;user-select:none;display:inline-block;margin-left:6px;}
.task-note-tgl:hover{background:var(--bg2);color:var(--tx2);}
.pics-section{margin-top:10px;}
.pic-upload-zone{border:1.5px dashed var(--bd2);border-radius:var(--r);padding:12px;text-align:center;cursor:pointer;font-size:12px;color:var(--tx3);margin-top:6px;transition:border-color .15s;}
.pic-upload-zone:hover{border-color:var(--teal);color:var(--teal);}
.pic-upload-zone input[type=file]{display:none;}
.inst-pic-del{position:absolute;top:3px;right:3px;font-size:10px;cursor:pointer;background:var(--bg1);border-radius:50%;width:16px;height:16px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;border:0.5px solid var(--bd2);}
.inst-pic:hover .inst-pic-del{opacity:1;}

/* ══ DOCUMENTS TAB ══ */
.docs-grid{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;}
.doc-card{background:var(--bg1);border:0.5px solid var(--bd3);border-radius:var(--r);padding:10px 12px;}
.doc-row{display:flex;align-items:flex-start;gap:10px;}
.doc-icon{width:28px;height:34px;flex-shrink:0;display:block;margin-top:1px;}
.doc-body{flex:1;min-width:0;}
.doc-name{font-size:13px;font-weight:600;color:var(--tx1);margin-bottom:2px;}
.doc-desc{font-size:12px;color:var(--tx2);margin-bottom:3px;line-height:1.4;}
.doc-meta{font-size:10px;color:var(--tx3);}
.doc-actions{display:flex;align-items:center;gap:6px;flex-shrink:0;}
.doc-actions .btn{font-size:11px;padding:4px 10px;text-decoration:none;display:inline-flex;align-items:center;}
.doc-cmt-tgl{font-size:13px;padding:3px 8px;background:var(--bg2);border:0.5px solid var(--bd3);border-radius:var(--ri);cursor:pointer;}
.doc-cmt-tgl:hover{background:var(--bg0);}
.doc-comment{display:none;width:100%;box-sizing:border-box;margin-top:8px;font-family:inherit;font-size:12px;line-height:1.5;color:var(--tx1);background:var(--bg2);border:0.5px solid var(--bd3);border-radius:var(--ri);padding:6px 8px;resize:vertical;min-height:54px;}
.doc-comment.show{display:block;}
.doc-comment:focus{outline:none;border-color:var(--link);}

/* "+ New document" header strip above the static list (Wiens only). */
.doc-actions-row{display:flex;justify-content:flex-end;margin-bottom:6px;}

/* Rev label pill next to the document name. */
.doc-rev-pill{
  display:inline-block;margin-left:6px;padding:1px 7px;
  border-radius:8px;font-size:9px;font-weight:700;letter-spacing:.04em;
  background:var(--bg3);color:var(--tx3);text-transform:uppercase;
}
.doc-empty-note{
  font-size:11px;color:var(--tx3);font-style:italic;padding:4px 8px;
}

/* ── Docs library modals (upload + history) ─────────────────── */
.docs-modal-overlay{
  position:fixed;inset:0;z-index:9998;
  background:rgba(0,15,29,0.62);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  display:none;align-items:center;justify-content:center;padding:20px;
}
.docs-modal-overlay.show{display:flex;}
.docs-modal{
  position:relative;z-index:1;
  width:min(94vw, 520px);max-height:90vh;
  background:var(--bg1);border:1px solid var(--bd2);border-radius:10px;
  box-shadow:0 12px 40px rgba(0,0,0,0.18);
  display:flex;flex-direction:column;overflow:hidden;
}
.docs-modal-wide{width:min(94vw, 760px);}
.docs-modal-hdr{
  display:flex;align-items:center;gap:10px;padding:12px 16px;
  border-bottom:1px solid var(--bd2);
}
.docs-modal-hdr > div:first-child{flex:1;}
.docs-modal-title{font-weight:700;font-size:14px;color:var(--tx);}
.docs-modal-sub{font-size:11px;color:var(--tx3);margin-top:2px;}
.docs-modal-body{
  flex:1;overflow:auto;padding:14px 16px;background:var(--bg1);
}
.docs-modal-footer{
  display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;
  border-top:1px solid var(--bd2);background:var(--bg2);
}
.docs-modal-form{display:flex;flex-direction:column;gap:12px;}
.docs-modal-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--tx3);}
.docs-modal-field > span{font-weight:600;color:var(--tx2);}
.docs-modal-field input[type="text"],
.docs-modal-field input[type="file"],
.docs-modal-field textarea{
  font:inherit;font-size:13px;color:var(--tx1);
  padding:7px 10px;background:var(--bg2);
  border:1px solid var(--bd2);border-radius:var(--ri);
  font-family:var(--font-body);
}
.docs-modal-field textarea{resize:vertical;min-height:50px;}
.docs-modal-field input:focus,
.docs-modal-field textarea:focus{
  outline:none;border-color:var(--link);box-shadow:var(--focus-ring);
}
.docs-modal-status{
  margin-top:8px;font-size:12px;min-height:1em;color:var(--tx3);
}
.docs-modal-status.ok{color:var(--teal);}
.docs-modal-status.err{color:var(--tx-danger);}
.docs-modal-empty{
  padding:24px 12px;text-align:center;color:var(--tx3);font-size:13px;
}
.docs-modal-err{color:var(--tx-danger);}

/* Revision row inside the history modal. */
.docs-rev-row{
  display:flex;align-items:flex-start;gap:14px;padding:10px 12px;
  border-bottom:1px solid var(--bd3);
}
.docs-rev-row:last-child{border-bottom:0;}
.docs-rev-row.is-latest{background:rgba(50,175,182,0.08);}
[data-theme="dark"] .docs-rev-row.is-latest{background:rgba(50,175,182,0.12);}
.docs-rev-info{flex:1;min-width:0;}
.docs-rev-line{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:12px;color:var(--tx2);
}
.docs-rev-label{font-weight:700;color:var(--tx1);font-size:13px;}
.docs-rev-latest-pill{
  font-size:9px;font-weight:700;letter-spacing:.06em;
  padding:1px 6px;border-radius:8px;
  background:var(--btn-primary-bg);color:var(--btn-primary-fg);
}
.docs-rev-meta{font-size:11px;color:var(--tx3);}
.docs-rev-file{font-size:11px;color:var(--tx3);margin-top:2px;}
.docs-rev-notes{font-size:11px;color:var(--tx2);margin-top:4px;font-style:italic;}
.docs-rev-actions{display:flex;gap:6px;flex-shrink:0;align-items:center;}
.docs-rev-actions .btn{font-size:11px;padding:4px 10px;text-decoration:none;}

/* Scenario bar + scenario badges */
.scenario-bar{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--bg1);border:1px solid var(--bd3);border-left:var(--divider) solid var(--wc-teal);border-radius:var(--rl);margin-bottom:16px;flex-wrap:wrap;box-shadow:var(--shadow-sm);}
.scenario-label{font-family:var(--font-display);font-size:10px;color:var(--tx3);white-space:nowrap;font-weight:900;text-transform:uppercase;letter-spacing:var(--eyebrow-ls);}
.scenario-btn{padding:6px 16px;border-radius:var(--r);border:1.5px solid var(--bd2);font-family:var(--font-display);font-size:12px;font-weight:700;letter-spacing:.04em;cursor:pointer;background:var(--bg2);color:var(--tx2);transition:all .15s;}
.scenario-btn:hover{background:var(--bg3);color:var(--tx1);}
.scenario-btn.active-200{background:var(--bg-ok);color:var(--tx-ok);border-color:var(--bd-ok);}
.scenario-btn.active-400{background:var(--bg-info);color:var(--tx-info);border-color:var(--bd-info);}
.scenario-btn.active-600{background:var(--bg-danger);color:var(--tx-danger);border-color:var(--bd-danger);}
.scen-info{font-size:12px;color:var(--tx2);margin-left:4px;}
.station-scen-box{padding:8px 12px;background:var(--bg2);border-radius:var(--r);border:0.5px solid var(--bd3);font-size:12px;line-height:1.6;min-width:180px;}
.station-scen-box .scen-row{display:flex;gap:6px;align-items:baseline;}
.station-scen-box .scen-key{color:var(--tx3);min-width:70px;font-size:11px;text-transform:uppercase;letter-spacing:.03em;}
.station-scen-box .scen-val{color:var(--tx1);font-weight:500;}
.station-scen-box .scen-note{color:var(--tx2);font-size:11px;}
.sb{display:inline-block;font-size:10px;padding:1px 6px;border-radius:7px;font-weight:600;vertical-align:middle;margin-left:3px;}
.sb-200{background:var(--bg-ok);color:var(--tx-ok);}.sb-400{background:var(--bg-info);color:var(--tx-info);}.sb-600{background:var(--bg-danger);color:var(--tx-danger);}
.scenario-btn.scen-active-all{background:var(--wc-deep-navy);color:var(--wc-white);border-color:var(--wc-deep-navy);}
.summary-toggle-btn{font-size:11px;color:var(--tx3);background:none;border:0.5px solid var(--bd3);border-radius:4px;padding:1px 8px;cursor:pointer;font-family:var(--sans);}
.summary-toggle-btn:hover{background:var(--bg2);color:var(--tx2);}
.scen-edit-row{display:flex;gap:6px;align-items:center;padding:6px 0;border-bottom:0.5px solid var(--bd3);}
.scen-edit-row:last-child{border-bottom:none;}
.scen-edit-row input[type=text]{font-size:12px;padding:3px 7px;border:0.5px solid var(--bd2);border-radius:var(--r);background:var(--bg2);color:var(--tx1);font-family:var(--sans);}
.scen-edit-row input[type=text]:focus{outline:none;border-color:var(--bd1);}

/* Auth modal + role pills */
.auth-ov{position:fixed;inset:0;background:rgba(0,15,29,0.78);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;z-index:9999;}
.auth-ov.show{display:flex;}
.auth-card{position:relative;background:var(--bg1);border:1px solid var(--bd3);border-top:var(--divider) solid var(--wc-teal);border-radius:var(--rl);padding:28px 28px 24px;width:340px;box-shadow:var(--shadow-lg);overflow:hidden;}
.auth-card::before{content:"";position:absolute;top:-1px;right:-40px;width:120px;height:80px;background:var(--wc-gradient);opacity:.14;transform:skewX(-18deg);pointer-events:none;}
.auth-card h2{margin:0 0 4px 0;font-family:var(--font-display);font-size:18px;font-weight:900;letter-spacing:var(--title-ls);text-transform:uppercase;color:var(--tx1);}
.auth-card p{margin:0 0 16px 0;font-size:12px;color:var(--tx3);line-height:1.45;}
.auth-card input{width:100%;box-sizing:border-box;padding:10px 12px;border-radius:var(--r);border:1px solid var(--bd2);background:var(--bg2);color:var(--tx1);font-size:14px;outline:none;font-family:var(--font-body);transition:border-color .15s,box-shadow .15s;}
.auth-card input:focus{border-color:var(--link);box-shadow:var(--focus-ring);}
.auth-card button{margin-top:12px;width:100%;padding:11px;border:none;border-radius:var(--r);background:var(--btn-primary-bg);color:var(--btn-primary-fg);font-family:var(--font-display);font-weight:900;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;font-size:12px;transition:background .15s;}
.auth-card button:hover{background:var(--btn-primary-hover);}
.auth-err{color:var(--tx-danger);font-size:12px;margin-top:8px;min-height:14px;}
.role-pill{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-display);font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--tx3);padding:3px 9px;border:1px solid var(--bd3);border-radius:999px;background:var(--bg1);}
.role-pill.sonnen{color:var(--wc-navy);border-color:var(--wc-navy);background:var(--wc-navy-100);}
.role-pill.wiens{color:var(--wc-teal-700);border-color:var(--wc-teal-300);background:var(--wc-teal-100);}
[data-theme="dark"] .role-pill.sonnen{color:var(--tx2);border-color:var(--bd2);background:var(--bg3);}
[data-theme="dark"] .role-pill.wiens{color:var(--link);border-color:var(--wc-teal-700);background:rgba(50,175,182,0.12);}
.logout-btn{font-size:11px;color:var(--tx3);background:none;border:none;cursor:pointer;padding:2px 6px;margin-left:2px;}
.logout-btn:hover{color:var(--tx1);}

/* ══ SONNEN ROLE: Wiens permissions minus delete ══
   Sonnen can do everything Wiens can EXCEPT delete/remove and the two
   global destructive/export actions. Every per-row delete control is
   gated in JS via canDelete() and not rendered for Sonnen at all, so
   no CSS hide rules are needed for them. */
body.role-sonnen [data-action="copy-stations-md"],
body.role-sonnen [data-action="copy-openitems-md"],
body.role-sonnen [data-action="gantt-reset"],
body.role-sonnen [data-wiens-only]{display:none !important;}

/* Sonnen can still toggle station-item checkboxes only if they want — keep enabled */
/* Per-row locked task/item rows */
.ro-row .trow input[type=checkbox],
.ro-row .own-sel,
.ro-row .fi-owner-sel,
.ro-row select.s-open,
.ro-row select.s-prog,
.ro-row select.s-done,
.ro-row .tcomment,
.ro-row .fi-comment{pointer-events:none;opacity:0.55;}
.ro-row::after{content:'Wiens';font-size:9px;color:var(--tx3);border:0.5px solid var(--bd3);border-radius:8px;padding:1px 6px;margin-left:auto;align-self:center;}
body:not(.role-sonnen) .ro-row::after{display:none;}
body:not(.role-sonnen) .ro-row .trow input[type=checkbox],
body:not(.role-sonnen) .ro-row .own-sel,
body:not(.role-sonnen) .ro-row .fi-owner-sel,
body:not(.role-sonnen) .ro-row select.s-open,
body:not(.role-sonnen) .ro-row select.s-prog,
body:not(.role-sonnen) .ro-row select.s-done,
body:not(.role-sonnen) .ro-row .tcomment,
body:not(.role-sonnen) .ro-row .fi-comment{pointer-events:auto;opacity:1;}

/* ─── PFMEA + PFD Generator panels ──────────────────────────── */
/* Wiens-only — sonnen users don't see the panels or related modals. */
body.role-sonnen .pfmea-gen,
body.role-sonnen .docgen-card,
body.role-sonnen .docgen-section-hdr,
body.role-sonnen #pfmea-settings-modal,
body.role-sonnen #pfmea-settings-overlay,
body.role-sonnen #pfmea-gaps-modal,
body.role-sonnen #pfmea-gaps-overlay,
body.role-sonnen #pfmea-dup-modal,
body.role-sonnen #pfmea-dup-overlay,
body.role-sonnen #pfmea-dup-confirm-modal,
body.role-sonnen #pfmea-dup-confirm-overlay,
body.role-sonnen #pfd-generator,
body.role-sonnen #pfd-pdf-generator,
body.role-sonnen #control-plan-generator,
body.role-sonnen #wi-sonnen-generator,
body.role-sonnen #pfd-pdf-settings-modal,
body.role-sonnen #pfd-pdf-settings-overlay,
body.role-sonnen #pfd-wb-settings-modal,
body.role-sonnen #pfd-wb-settings-overlay,
body.role-sonnen #cp-settings-modal,
body.role-sonnen #cp-settings-overlay,
body.role-sonnen #doc-upload-modal,
body.role-sonnen #doc-upload-overlay,
body.role-sonnen #doc-history-modal,
body.role-sonnen #doc-history-overlay,
body.role-sonnen #doc-title-settings-modal,
body.role-sonnen #doc-title-settings-overlay,
body.role-sonnen [data-action="act-undo"]{display:none !important;}

/* Document title settings — one row per published doc */
.doc-title-settings-group{margin-bottom:14px;}
.doc-title-settings-group-hdr{
  font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;
  color:var(--tx3);margin:0 0 8px;
}
.doc-title-settings-row{
  margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--bd);
}
.doc-title-settings-row:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0;}
.doc-title-settings-field{display:block;margin-bottom:8px;}
.doc-title-settings-field:last-child{margin-bottom:0;}
.doc-title-settings-field-label{
  display:block;font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.06em;color:var(--tx3);margin-bottom:4px;
}
.doc-title-settings-row input{
  width:100%;box-sizing:border-box;padding:8px 10px;font-size:13px;
  border:1px solid var(--bd);border-radius:6px;background:var(--bg);
}

/* ─── New hero-style docgen cards ───────────────────────────── */
/* Section header — small eyebrow strip between groups */
.docgen-section-hdr{
  font-family:var(--font-display);font-size:10px;font-weight:900;
  text-transform:uppercase;letter-spacing:var(--eyebrow-ls);
  color:var(--tx2);margin:18px 0 8px;
}
.docgen-section-hdr:first-child{margin-top:0;}
.docgen-section-sub{
  font-weight:500;text-transform:none;letter-spacing:0;
  color:var(--tx3);margin-left:8px;font-size:11px;
}
.docgen-export-all{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;
  margin:-2px 0 12px;padding:10px 12px;
  background:var(--bg2);border:1px solid var(--bd2);border-radius:8px;
}
.docgen-export-all-hint{font-size:11px;color:var(--tx3);flex:1 1 200px;}
.docgen-export-all .pfmea-gen-status{flex:1 1 100%;margin:0;}

/* 3-up grid container. Falls back to 2 cols on tablet, 1 on phone.
   align-items:start so each card is its natural height — without this,
   the grid stretches every card to match the tallest sibling, leaving
   visible whitespace under the hero on shorter cards. */
.docgen-grid{
  display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:12px;margin-bottom:18px;align-items:start;
}
@media (max-width:1100px){
  .docgen-grid{grid-template-columns:repeat(2, minmax(0, 1fr));}
}
@media (max-width:680px){
  .docgen-grid{grid-template-columns:1fr;}
}

.docgen-card{
  border:1px solid var(--bd2);border-radius:10px;padding:14px 16px;
  background:var(--bg1);position:relative;
  display:flex;flex-direction:column;
}

/* Header row: title left, corner icons right */
.docgen-card-hdr{
  display:flex;align-items:center;gap:10px;
}
.docgen-card-title{
  flex:1;font-weight:700;font-size:14px;color:var(--tx);
  display:flex;align-items:center;gap:8px;
}
.docgen-card-fmt{
  font-size:9px;font-weight:700;letter-spacing:.06em;
  padding:1px 5px;border-radius:3px;
  background:rgba(50,175,182,0.12);color:var(--tx2);
}
[data-theme="dark"] .docgen-card-fmt{background:rgba(50,175,182,0.14);color:var(--tx2);}
.docgen-card-icons{display:flex;gap:4px;align-items:center;}
.docgen-icon{
  background:transparent;border:1px solid transparent;
  border-radius:6px;padding:5px 6px;cursor:pointer;
  color:var(--tx3);display:inline-flex;align-items:center;justify-content:center;
  line-height:1;transition:background .12s,border-color .12s,color .12s;
}
.docgen-icon:hover{
  background:var(--bg2);border-color:var(--bd2);color:var(--tx);
}
.docgen-icon svg{display:block;}

.docgen-card-sub{
  font-size:12px;color:var(--tx3);margin:4px 0 14px;line-height:1.45;
  /* Lock to EXACTLY 2 lines (height, not min-height) so every card
     reserves identical vertical space for description regardless of
     actual copy length. Longer text line-clamps to 2 lines. */
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
  height:calc(12px * 1.45 * 2);
}

/* Red pill chip beside the title showing gap count. Hidden when 0.
   Click opens the gaps modal. Matches the original .pfmea-gaps-badge
   look that engineers learned to scan for. */
.docgen-gap-chip{
  display:inline-flex;align-items:center;justify-content:center;
  padding:1px 8px;border-radius:10px;
  background:var(--fill-danger);color:var(--fill-danger-fg);
  font-size:11px;font-weight:700;line-height:1.3;
  border:0;cursor:pointer;
  transition:opacity .12s,transform .12s;
}
.docgen-gap-chip[hidden]{display:none;}
.docgen-gap-chip:hover{opacity:.88;transform:translateY(-1px);}
.docgen-gap-chip:focus-visible{
  outline:2px solid var(--wc-teal);outline-offset:2px;
}

/* Amber chip — within-station duplicate FM clusters (Tier A badge count). */
.docgen-dup-chip{
  display:inline-flex;align-items:center;justify-content:center;gap:3px;
  margin-left:4px;padding:1px 8px;border-radius:10px;
  background:#E8A317;color:#3d2e00;
  font-size:11px;font-weight:700;line-height:1.3;
  border:0;cursor:pointer;
  transition:opacity .12s,transform .12s;
}
.docgen-dup-chip[hidden]{display:none;}
.docgen-dup-chip:hover{opacity:.88;transform:translateY(-1px);}
.docgen-dup-chip:focus-visible{
  outline:2px solid var(--wc-teal);outline-offset:2px;
}

.pfmea-dup-intro{font-size:12px;color:var(--tx3);margin:0 0 12px;}
.pfmea-dup-empty{font-size:13px;color:var(--tx2);padding:12px 0;}
.pfmea-dup-tier{margin-bottom:14px;}
.pfmea-dup-tier-title{
  font-size:12px;font-weight:700;color:var(--tx2);
  cursor:pointer;list-style:none;padding:6px 0;
}
.pfmea-dup-tier[open]>.pfmea-dup-tier-title{margin-bottom:8px;}
.pfmea-dup-cluster{
  border:1px solid var(--border);border-radius:8px;
  padding:10px 12px;margin-bottom:10px;background:var(--surface2, var(--bg2));
}
.pfmea-dup-cluster-hdr{
  display:flex;align-items:flex-start;justify-content:space-between;gap:8px;
  margin-bottom:8px;font-size:13px;
}
.pfmea-dup-cluster-loc{display:flex;flex-direction:column;gap:2px;min-width:0;}
.pfmea-dup-step{font-size:11px;color:var(--tx2);font-weight:500;line-height:1.35;}
.pfmea-dup-count{font-size:11px;color:var(--tx3);font-weight:600;}
.pfmea-dup-select-hint{font-size:11px;color:var(--tx3);margin:0 0 8px;}
.pfmea-dup-member{
  display:block;padding:6px 0;border-top:1px solid var(--border);
  font-size:12px;line-height:1.45;cursor:pointer;
}
.pfmea-dup-member:first-child{border-top:0;padding-top:0;}
.pfmea-dup-member-row{display:flex;gap:10px;align-items:flex-start;}
.pfmea-dup-member-row input[type="radio"]{margin-top:3px;flex-shrink:0;}
.pfmea-dup-member-body{flex:1;min-width:0;}
.pfmea-dup-member.is-canonical .pfmea-dup-fm{color:var(--wc-teal);}
.pfmea-dup-fm{font-weight:600;color:var(--tx1);}
.pfmea-dup-effect{color:var(--tx2);margin-top:2px;}
.pfmea-dup-meta{font-size:11px;color:var(--tx3);margin-top:2px;}
.pfmea-dup-cluster-foot{
  display:flex;flex-direction:column;align-items:stretch;
  gap:10px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border);
}
.pfmea-dup-pull-label{
  display:flex;align-items:center;gap:8px;font-size:11px;color:var(--tx2);
}
.pfmea-dup-cluster-actions{
  display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;
}
.pfmea-dup-merge-btn{font-size:11px;padding:5px 12px;}
.pfmea-dup-suggest{font-size:11px;color:var(--tx3);flex:1;min-width:180px;}
.pfmea-dup-dismiss-btn{font-size:11px;padding:4px 10px;}
.pfmea-dup-footer{
  margin-top:16px;padding-top:14px;border-top:0.5px solid var(--bd3);
  display:flex;flex-wrap:wrap;align-items:center;gap:12px;justify-content:space-between;
}
.pfmea-dup-footer[hidden]{display:none;}
.pfmea-dup-batch-pull{flex:1;min-width:220px;}
.pfmea-dup-merge-all-btn{margin-left:auto;font-size:12px;padding:6px 14px;}
.pfmea-dup-confirm-overlay{z-index:1100;}
.pfmea-dup-confirm-modal{z-index:1101;max-width:520px;}
.pfmea-dup-confirm-body{font-size:13px;color:var(--tx2);line-height:1.5;}
.pfmea-dup-confirm-lead{margin:0 0 12px;color:var(--tx1);}
.pfmea-dup-confirm-note{margin:12px 0 0;font-size:12px;color:var(--tx3);}
.pfmea-dup-confirm-highlight{
  padding:12px 14px;background:var(--bg2);border:0.5px solid var(--bd3);
  border-radius:var(--r);border-left:3px solid var(--wc-teal);
}
.pfmea-dup-confirm-highlight-label{
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--tx3);
}
.pfmea-dup-confirm-highlight-text{font-weight:600;color:var(--tx1);margin-top:4px;line-height:1.4;}
.pfmea-dup-confirm-highlight-meta{font-size:11px;color:var(--tx3);margin-top:6px;}
.pfmea-dup-confirm-stats{display:flex;gap:10px;margin:12px 0;}
.pfmea-dup-confirm-stat{
  flex:1;padding:10px 8px;background:var(--bg2);border:0.5px solid var(--bd3);
  border-radius:var(--r);text-align:center;
}
.pfmea-dup-confirm-stat strong{display:block;font-size:20px;font-weight:800;color:var(--tx1);line-height:1.1;}
.pfmea-dup-confirm-stat span{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.03em;}
.pfmea-dup-confirm-list{
  margin:0;padding:0;list-style:none;max-height:180px;overflow-y:auto;
  border:0.5px solid var(--bd3);border-radius:var(--r);background:var(--bg2);
}
.pfmea-dup-confirm-list li{
  padding:8px 10px;border-top:0.5px solid var(--bd3);font-size:12px;color:var(--tx2);line-height:1.4;
}
.pfmea-dup-confirm-list li:first-child{border-top:0;}
.pfmea-dup-confirm-list-loc{color:var(--tx3);font-size:11px;display:block;margin-bottom:2px;}
.pfmea-dup-confirm-warn{
  margin-top:12px;padding:10px 12px;
  background:rgba(245,158,11,.1);border:0.5px solid rgba(245,158,11,.35);
  border-radius:var(--r);font-size:11px;color:var(--tx2);line-height:1.45;
}
.pfmea-dup-confirm-btns{margin-top:14px;}

/* Hero — primary Generate button. Anchored from the TOP of the card
   (after title + description) with consistent spacing so heroes align
   across the row regardless of what content sits below (status divs,
   meta row count, etc.). Cards that have less below-content end up
   shorter — that's fine; alignment of the primary action is what
   matters visually. */
.docgen-card-hero{
  display:flex;justify-content:center;margin-bottom:10px;
}
.docgen-hero-btn{
  width:100%;
  padding:11px 14px;font-size:13px;font-weight:700;
  letter-spacing:.02em;
}

/* Meta row: AI link + secondary actions, below the hero */
.docgen-card-meta{
  display:flex;align-items:center;justify-content:center;
  gap:18px;flex-wrap:wrap;margin-top:6px;
  font-size:12px;color:var(--tx3);
}
/* Secondary actions (Manage photos, Preview diagram, Suggest AI) are
   styled as proper outlined buttons matching the global .btn — same
   padding / border / typography — so they read as actions, not links. */
.docgen-meta-link{
  padding:6px 14px;border-radius:var(--r);
  border:1px solid var(--bd2);background:var(--bg1);
  color:var(--tx2);font-size:12px;font-weight:600;letter-spacing:.02em;
  font-family:var(--font-body);cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;
  transition:background .15s,color .15s,border-color .15s;
}
.docgen-meta-link:hover{background:var(--bg3);color:var(--tx1);}
.docgen-meta-link:focus-visible{outline:none;box-shadow:var(--focus-ring);}
/* AI variant — same button shell, teal tint, Lucide sparkles prefix. */
.docgen-meta-ai{color:var(--link);border-color:rgba(31,139,180,0.35);}
.docgen-meta-ai:hover{color:var(--link-hover);background:rgba(31,139,180,0.08);}
.docgen-meta-ai .ico-inline{margin-right:0;flex-shrink:0;}

/* XLSX / PDF segmented toggle — lives in the meta row next to Suggest AI.
   Single pill split into two halves, active half is filled. */
.docgen-fmt-toggle{
  display:inline-flex;align-items:stretch;
  border:1px solid var(--bd2);border-radius:var(--r);
  background:var(--bg1);overflow:hidden;
  font-family:var(--font-body);
}
.docgen-fmt-opt{
  appearance:none;border:0;background:transparent;
  padding:6px 12px;font-size:11px;font-weight:700;letter-spacing:.04em;
  color:var(--tx3);cursor:pointer;
  transition:background .15s,color .15s;
}
.docgen-fmt-opt + .docgen-fmt-opt{border-left:1px solid var(--bd2);}
.docgen-fmt-opt:hover{background:var(--bg3);color:var(--tx1);}
.docgen-fmt-opt.is-active{
  background:var(--btn-primary-bg);color:var(--btn-primary-fg);
}
.docgen-fmt-opt.is-active:hover{background:var(--btn-primary-hover);color:var(--btn-primary-fg);}
.docgen-fmt-opt:focus-visible{outline:none;box-shadow:var(--focus-ring) inset;}

/* Empty status divs (no transient message) take no vertical space —
   the original min-height:1em padded the card out by ~12px per div
   even when there was nothing to show. */
.docgen-card .pfmea-gen-status:empty{min-height:0;margin:0;}

/* PFD Flow Diagram preview modal — opened from the PFD Diagram card.
   Modal lives INSIDE the overlay (same pattern as .gap-modal-overlay) so
   backdrop-filter blurs only the page behind, not the preview content. */
.pfd-preview-overlay{
  position:fixed;inset:0;z-index:100000;
  background:rgba(0,15,29,0.78);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  display:none;align-items:center;justify-content:center;padding:20px;
}
.pfd-preview-overlay.show{display:flex;}
.pfd-preview-modal{
  position:relative;z-index:1;
  width:min(94vw, 1100px);max-height:90vh;
  background:var(--bg1);border:1px solid var(--bd2);border-radius:10px;
  box-shadow:0 12px 40px rgba(0,0,0,0.18);
  display:flex;flex-direction:column;overflow:hidden;
}
.pfd-preview-hdr{
  display:flex;align-items:center;gap:10px;padding:12px 16px;
  border-bottom:1px solid var(--bd2);
}
.pfd-preview-hdr > div:first-child{flex:1;}
.pfd-preview-title{font-weight:700;font-size:14px;color:var(--tx);}
.pfd-preview-sub{font-size:11px;color:var(--tx3);margin-top:2px;}
.pfd-preview-body{
  position:relative;flex:1;overflow:hidden;min-height:280px;
  display:flex;flex-direction:column;
  background:var(--bg2);
}
.pfd-preview-viewport{
  flex:1;width:100%;min-height:0;overflow:hidden;
  cursor:grab;touch-action:none;user-select:none;
}
.pfd-preview-viewport.pfd-preview-grabbing{cursor:grabbing;}
.pfd-preview-stage{
  transform-origin:0 0;display:inline-block;
}
.pfd-preview-stage svg{display:block;max-width:none;}
.pfd-preview-controls{
  position:absolute;top:10px;right:10px;z-index:2;
  display:flex;align-items:center;gap:2px;
  padding:3px 5px;
  background:var(--bg1);border:1px solid var(--bd2);border-radius:8px;
  box-shadow:0 2px 10px rgba(0,0,0,0.1);
}
.pfd-preview-zoom-btn{
  width:26px;height:26px;padding:0;
  border:1px solid var(--bd2);border-radius:5px;
  background:var(--bg2);color:var(--tx1);
  font-size:15px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.pfd-preview-zoom-btn:hover{background:var(--bg3, var(--bg2));border-color:var(--tx3);}
.pfd-preview-zoom-fit{
  width:auto;padding:0 8px;font-size:10px;font-weight:600;
  letter-spacing:.02em;text-transform:uppercase;
}
.pfd-preview-controls-sep{
  width:1px;height:20px;background:var(--bd2);margin:0 3px;flex-shrink:0;
}
.pfd-preview-action-btn{
  width:auto;padding:0 8px;font-size:10px;font-weight:600;
  letter-spacing:.01em;
}
.pfd-preview-action-btn.is-busy{opacity:.55;pointer-events:none;}
.pfd-preview-zoom-label{
  min-width:44px;padding:0 4px;text-align:center;
  font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;
  color:var(--tx1);
}
.pfd-preview-empty{
  padding:30px 12px;text-align:center;color:var(--tx3);font-size:13px;
}

/* Per-generator "View / Edit fields" editors — table styling, provenance
   tints, and a compact field-label/footer treatment shared across all
   three modals. The empty/AI tints live inline on each cell so they can
   coexist with focus/hover states without specificity wars. */
.pfd-pdf-form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 12px;}
.pfd-pdf-form-stack{display:flex;flex-direction:column;gap:10px;}
.pfd-pdf-field{display:flex;flex-direction:column;font-size:11px;color:var(--tx3);}
.pfd-pdf-field-label{margin-bottom:2px;display:flex;align-items:center;gap:6px;}
.pfd-pdf-prov{font-size:9px;text-transform:uppercase;letter-spacing:.04em;padding:1px 5px;border-radius:3px;}
.pfd-pdf-prov.ai  {background:rgba(50,175,182,0.18);color:var(--link);}
.pfd-pdf-prov.user{background:rgba(127,127,127,0.18);color:var(--tx3);}
.pfd-pdf-prov.live{background:rgba(110,163,118,0.15);color:var(--tx-ok);}
.pfd-pdf-prov.live-label{color:var(--tx-ok);font-weight:600;}
.pfd-pdf-cell:focus,.pfd-wb-cell:focus,.cp-cell:focus{outline:1px solid var(--tx-accent);}
.pfd-pdf-table,.pfd-wb-table,.cp-table{width:100%;border-collapse:collapse;font-size:12px;}
.pfd-pdf-table th,.pfd-wb-table th,.cp-table th{
  text-align:left;padding:5px 6px;font-size:10px;text-transform:uppercase;
  letter-spacing:.04em;color:var(--tx3);border-bottom:1px solid var(--bd2);
}
.pfd-pdf-table td,.pfd-wb-table td,.cp-table td{
  padding:4px 4px;border-bottom:1px solid var(--bd2);vertical-align:top;
}
.pfd-pdf-stationhdr,.pfd-wb-rowhdr,.cp-rowhdr{min-width:160px;font-size:11px;color:var(--tx2);}
.pfd-pdf-stationhdr-sub{color:var(--tx3);font-size:10px;}
.pfd-pdf-cell,.pfd-wb-cell,.cp-cell{
  font-size:11px;padding:3px 5px;border:0.5px solid var(--bd2);border-radius:var(--r);
  background:var(--bg1);color:var(--tx1);font-family:var(--sans);
}

/* Per-entry undo button on the activity feed (Wiens-only — also hidden
   via the rule above). Subtle by default, more prominent on hover. */
.act-undo-btn{
  display:inline-flex;align-items:center;gap:3px;
  font-size:10px;line-height:1;padding:2px 6px;margin-left:6px;
  background:transparent;border:1px solid var(--bd2);border-radius:4px;
  color:var(--tx3);cursor:pointer;opacity:.6;transition:opacity .15s, color .15s, border-color .15s;
}
.act-undo-btn:hover{opacity:1;color:var(--tx-danger);border-color:var(--tx-danger);}

/* Shared gap-fill modal used by document generators (PFD / PFMEA /
   Control Plan / etc). Lives at the body level — independent of any
   tab. Wiens-only by virtue of every generator being Wiens-only;
   it never opens unless a generator opened it. */
.gap-modal-overlay{
  position:fixed;inset:0;z-index:10000;
  background:rgba(0,0,0,.45);
  display:flex;align-items:center;justify-content:center;
  padding:20px;
}
.gap-modal{
  background:var(--bg1);color:var(--tx);
  border:1px solid var(--bd2);border-radius:10px;
  width:min(640px, 100%);max-height:80vh;
  display:flex;flex-direction:column;
  box-shadow:0 14px 40px rgba(0,0,0,.35);
}
.gap-modal-header{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding:14px 16px 10px;border-bottom:1px solid var(--bd2);
}
.gap-modal-header h2{margin:0;font-size:16px;font-weight:700;}
.gap-modal-subtitle{font-size:12px;color:var(--tx3);margin-top:2px;}
.gap-modal-close{
  background:transparent;border:none;color:var(--tx3);
  cursor:pointer;padding:4px;border-radius:4px;line-height:0;
}
.gap-modal-close:hover{color:var(--tx);background:var(--bg2);}
.gap-modal-body{padding:12px 16px;overflow:auto;flex:1;}
.gap-modal-hint{font-size:11px;color:var(--tx3);margin-bottom:10px;line-height:1.5;}
.gap-modal-empty{font-size:13px;color:var(--tx2);padding:6px 2px;}
.gap-modal-fields{display:flex;flex-direction:column;gap:10px;}
.gap-modal-field{display:flex;flex-direction:column;gap:3px;}
.gap-modal-field label{font-size:11px;font-weight:600;color:var(--tx2);}
.gap-modal-field-hint{font-size:10px;color:var(--tx3);}
.gap-modal-field input,
.gap-modal-field textarea{
  font:inherit;padding:6px 8px;border:1px solid var(--bd2);
  border-radius:var(--ri);background:var(--bg1);color:var(--tx);
  width:100%;box-sizing:border-box;
}
.gap-modal-field input:focus,
.gap-modal-field textarea:focus{outline:2px solid var(--teal);outline-offset:-1px;}
.gap-modal-field-readonly{
  padding:6px 8px;background:var(--bg2);border:0.5px dashed var(--bd3);border-radius:var(--ri);
}
.gap-modal-readonly-label{font-size:11px;font-weight:600;color:var(--tx2);}
.gap-modal-footer{
  display:flex;justify-content:flex-end;gap:8px;
  padding:10px 16px 14px;border-top:1px solid var(--bd2);
}

/* Inline Control Plan editor on each sti item — 2x2 grid of small inputs.
   Hidden by default; toggled with the "▾ control plan" label. */
.sti-cp-wrap{margin-top:4px;font-size:11px;}
.sti-cp-grid{
  display:none;grid-template-columns:1fr 1fr;gap:4px 8px;
  margin-top:4px;padding:6px 8px;
  background:var(--bg2);border:0.5px dashed var(--bd3);border-radius:var(--ri);
}
.sti-cp-grid.show{display:grid;}
.sti-cp-field{display:flex;flex-direction:column;gap:2px;}
.sti-cp-label{font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--tx3);}
.sti-cp-field input{
  font:inherit;font-size:11px;padding:3px 6px;
  border:1px solid var(--bd2);border-radius:var(--ri);
  background:var(--bg1);color:var(--tx);
}
.sti-cp-field input:focus{outline:1.5px solid var(--teal);outline-offset:-1px;}

.pfmea-gen{
  border:1px solid var(--bd2);border-radius:10px;padding:12px 14px;
  margin-bottom:14px;background:var(--bg1);
}
/* Equal-height row across all three generator panels so the buttons
   line up vertically regardless of description length. The .info column
   gets a fixed line-clamp so descriptions of varying length don't push
   the row taller. */
.pfmea-gen-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;min-height:54px;}
.pfmea-gen-info{flex:1;min-width:240px;display:flex;flex-direction:column;justify-content:center;}
.pfmea-gen-title{font-weight:700;font-size:14px;color:var(--tx);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.pfmea-gen-sub{font-size:12px;color:var(--tx3);margin-top:2px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.pfmea-gen-actions{display:flex;gap:8px;flex-wrap:nowrap;align-items:center;}
.pfmea-gen-status{font-size:12px;color:var(--tx3);margin-top:8px;min-height:1em;}
.pfmea-gen-status.ok{color:var(--teal);}
.pfmea-gen-status.err{color:var(--tx-danger);}
.wi-progress{display:flex;flex-direction:column;gap:6px;max-width:520px;}
.wi-progress-label{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--tx2);}
.wi-progress-pct{font-weight:600;color:var(--link);font-size:11px;font-variant-numeric:tabular-nums;}
.wi-progress-track{width:100%;height:6px;background:var(--wc-navy-100);border-radius:3px;overflow:hidden;}
.wi-progress-bar{height:100%;background:var(--wc-teal);transition:width .25s ease;min-width:2px;border-radius:3px;}

/* Manage WI Photos modal */
.wi-mg-station-head{font-weight:700;font-size:13px;color:var(--wc-navy);margin:18px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--wc-navy-100);text-transform:uppercase;letter-spacing:.04em;}
.wi-mg-station-head:first-child{margin-top:0;}
.wi-mg-station-group{display:flex;flex-direction:column;gap:8px;}
.wi-mg-row{display:grid;grid-template-columns:96px 1fr auto;gap:12px;align-items:center;padding:10px;background:var(--wc-navy-100);border-radius:6px;}
.wi-mg-thumb{width:96px;height:72px;object-fit:cover;border-radius:4px;background:var(--wc-white);display:block;}
.wi-mg-thumb-empty{display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--tx3);font-style:italic;border:1px dashed var(--wc-navy-200);background:transparent;}
.wi-mg-meta{display:flex;flex-direction:column;gap:4px;min-width:0;}
.wi-mg-row-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;}
.wi-mg-step{font-weight:700;font-size:13px;color:var(--tx);}
.wi-mg-station{font-size:11px;color:var(--tx3);}
.wi-mg-subject{font-size:12px;color:var(--tx2);line-height:1.35;}
.wi-mg-caption{width:100%;font-size:12px;padding:5px 7px;border:1px solid var(--wc-navy-200);border-radius:4px;background:var(--wc-white);}
.wi-mg-caption:disabled{background:transparent;color:var(--tx3);border-style:dashed;}
.wi-mg-stamp{font-size:10px;color:var(--tx3);}
.wi-mg-actions{display:flex;gap:6px;flex-shrink:0;}
.wi-mg-busy{font-size:11px;color:var(--tx3);font-style:italic;padding:6px 8px;}
.wi-mg-empty{padding:24px 12px;text-align:center;color:var(--tx3);font-size:13px;font-style:italic;}

/* Photo picker modal (Upload new / Choose from library) */
.photo-picker-overlay{position:fixed;inset:0;background:rgba(10,38,52,.55);display:flex;align-items:center;justify-content:center;z-index:2000;padding:16px;}
.photo-picker{background:var(--bg1);border-radius:var(--rl);max-width:680px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);overflow:hidden;}
.photo-picker-hd{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);}
.photo-picker-hd h3{margin:0;font-size:15px;}
.photo-picker-section{display:flex;align-items:center;gap:12px;padding:16px;cursor:pointer;border-bottom:1px solid var(--border);transition:background .12s;}
.photo-picker-section:hover{background:var(--bg3);}
.photo-picker-section-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--bg3);color:var(--link);border-radius:8px;flex-shrink:0;}
.photo-picker-section-body{flex:1;min-width:0;}
.photo-picker-section-title{font-weight:700;font-size:13px;color:var(--tx);}
.photo-picker-section-sub{font-size:11px;color:var(--tx3);margin-top:2px;}
.photo-picker-divider{display:flex;align-items:center;gap:8px;padding:6px 16px;color:var(--tx3);font-size:11px;text-transform:uppercase;letter-spacing:.04em;}
.photo-picker-divider::before,.photo-picker-divider::after{content:"";flex:1;height:1px;background:var(--border);}
.photo-picker-library{flex:1;overflow-y:auto;padding:10px 16px 16px;}
.photo-picker-empty{padding:24px 12px;text-align:center;color:var(--tx3);font-size:12px;font-style:italic;}
.photo-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;}
.photo-picker-tile{position:relative;background:var(--bg2);border:1px solid var(--border);border-radius:6px;overflow:hidden;cursor:pointer;padding:0;display:flex;flex-direction:column;}
.photo-picker-tile:hover{border-color:var(--link);box-shadow:var(--shadow-sm);}
.photo-picker-tile img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;}
.photo-picker-tile-cap{font-size:10px;color:var(--tx3);padding:4px 6px;text-align:left;line-height:1.3;background:var(--bg1);}
.photo-picker-tile-badge{position:absolute;top:4px;right:4px;background:var(--btn-primary-bg);color:var(--btn-primary-fg);font-size:9px;padding:1px 5px;border-radius:8px;font-weight:600;}
.photo-picker-status{padding:0 16px 12px;font-size:12px;color:var(--tx3);min-height:1.2em;}
.photo-picker-status-err{color:var(--tx-danger);}

/* Step picker (precursor to photo picker when entry point doesn't know the step) */
.step-picker-list{flex:1;overflow-y:auto;padding:8px 12px 16px;display:flex;flex-direction:column;gap:4px;}
.step-picker-row{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--bg1);border:1px solid var(--border);border-radius:6px;cursor:pointer;text-align:left;font-size:13px;color:var(--tx);width:100%;}
.step-picker-row:hover{border-color:var(--link);background:var(--bg3);}
.step-picker-num{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:24px;padding:0 8px;background:var(--bg3);color:var(--tx);font-weight:700;font-size:11px;border-radius:12px;flex-shrink:0;}
.step-picker-label{flex:1;min-width:0;line-height:1.35;}
.step-picker-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--link);background:var(--bg3);padding:2px 6px;border-radius:8px;flex-shrink:0;}

/* Library tab */
.lib-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap;}
.lib-stats{font-size:12px;color:var(--tx3);}
.lib-stats strong{color:var(--tx2);font-weight:700;}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;}
.lib-card{background:var(--bg1);border:1px solid var(--wc-navy-100);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;position:relative;}
.lib-card.archived{opacity:.55;}
.lib-thumb{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--wc-navy-100);}
.lib-card-body{padding:8px 10px;display:flex;flex-direction:column;gap:5px;}
.lib-caption{font-size:11px;font-weight:600;color:var(--tx);background:transparent;border:1px solid transparent;border-radius:4px;padding:2px 4px;width:100%;}
.lib-caption:focus,.lib-caption:hover{border-color:var(--wc-navy-200);background:var(--bg1);}
.lib-meta{font-size:10px;color:var(--tx3);line-height:1.3;}
.lib-usage{display:inline-block;background:var(--wc-teal-100);color:var(--link);font-weight:600;font-size:10px;padding:1px 6px;border-radius:8px;margin-right:4px;}
.lib-usage.zero{background:var(--wc-navy-100);color:var(--tx3);}
.lib-actions{display:flex;gap:4px;margin-top:auto;padding-top:4px;border-top:1px solid var(--wc-navy-100);justify-content:flex-end;}
.lib-empty{padding:48px 12px;text-align:center;color:var(--tx3);font-size:13px;font-style:italic;}

/* WI step photos section on Stations tab */
.wi-step-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:6px;}
.wi-step-card{background:var(--wc-navy-100);border-radius:6px;padding:6px;display:flex;flex-direction:column;gap:4px;}
.wi-step-head{font-size:11px;font-weight:600;color:var(--tx);line-height:1.25;min-height:1.5em;}
.wi-step-img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:4px;background:var(--wc-white);display:block;}
.wi-step-img-empty{display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--tx3);font-style:italic;border:1px dashed var(--wc-navy-200);background:transparent;}
.wi-step-actions{display:flex;gap:4px;flex-wrap:wrap;}
.wi-step-mini{font-size:10px;padding:3px 6px;line-height:1.2;}

/* Per-step image-mode toggle */
.step-mode{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:4px;background:transparent;border:1px solid var(--wc-navy-200);cursor:pointer;flex-shrink:0;color:var(--tx2);padding:0;}
.step-mode:hover{background:var(--wc-teal-100);border-color:var(--link);color:var(--link);}
.step-mode-static{cursor:default;}
.step-mode-static:hover{background:transparent;border-color:var(--wc-navy-200);color:var(--tx2);}
.step-mode-own{}
.step-mode-merge{color:var(--link);border-color:var(--wc-teal-300);background:var(--wc-teal-100);}
.step-mode-none{color:var(--tx3);border-style:dashed;}
/* Safety ribbon — full-width amber banner between header and body */
.safety-ribbon{display:none;background:#fef3c7;border-top:1px solid #f0c040;border-bottom:1px solid #f0c040;padding:5px 12px;margin:0 -12px 10px;font-size:11px;line-height:1.5;color:#4a3000;}
[data-theme="dark"] .safety-ribbon{background:#2a1e00;border-color:#c49a00;color:#f0d060;}
.safety-body{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 6px;}
.safety-label{font-family:var(--font-display);font-size:9px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:#92600a;margin-right:6px;flex-shrink:0;white-space:nowrap;}
[data-theme="dark"] .safety-label{color:#e0aa40;}
.safety-items{display:inline;flex:1;}
.safety-item{display:inline-flex;align-items:center;gap:3px;flex-wrap:wrap;}
.safety-item+.safety-item::before{content:' | ';opacity:.35;padding:0 2px;}
.safety-edit-btn{opacity:.45;margin-left:8px;vertical-align:middle;flex-shrink:0;}
.safety-edit-btn:hover{opacity:1;}
/* ribbon grouped display */
.safety-group{display:inline-flex;align-items:center;gap:3px;flex-wrap:wrap;}
.safety-glabel{font-size:9px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;opacity:.55;margin-right:2px;white-space:nowrap;}
.safety-gsep{opacity:.3;padding:0 5px;font-size:11px;}
.safety-cbadge{display:inline-block;font-size:9px;font-weight:600;border-radius:3px;padding:1px 5px;white-space:nowrap;}
.safety-cbadge-ppe{background:#dcfce7;color:#166534;}
[data-theme="dark"] .safety-cbadge-ppe{background:#052e16;color:#86efac;}
.safety-cbadge-hazards{background:#fee2e2;color:#991b1b;}
[data-theme="dark"] .safety-cbadge-hazards{background:#4c0519;color:#fca5a5;}
.safety-cbadge-rules{background:#dbeafe;color:#1e40af;}
[data-theme="dark"] .safety-cbadge-rules{background:#1e3a5f;color:#93c5fd;}
.safety-note-txt{display:block;margin-top:4px;font-size:11px;opacity:.75;font-style:italic;}
/* safety edit mode */
.safety-edit-wrap{padding:8px 0;display:flex;flex-direction:column;gap:8px;}
.safety-edit-group{display:flex;flex-direction:column;gap:4px;}
.safety-edit-glabel{font-size:9px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:#92600a;}
[data-theme="dark"] .safety-edit-glabel{color:#e0aa40;}
.safety-edit-chips{display:flex;flex-wrap:wrap;gap:4px;}
.safety-pick-chip{font-size:11px;padding:3px 8px;border-radius:4px;border:1px solid var(--bd3);background:var(--bg2);color:var(--tx2);cursor:pointer;transition:background .1s,color .1s,border-color .1s;}
.safety-pick-chip:hover{border-color:var(--accent);color:var(--accent);}
.safety-pick-chip.on{background:var(--btn-primary-bg);color:var(--btn-primary-fg);border-color:var(--btn-primary-bg);}
.safety-ta{width:100%;box-sizing:border-box;min-height:48px;font-size:11px;padding:5px 7px;border:1px solid var(--bd3);border-radius:4px;background:var(--bg2);color:var(--tx1);resize:vertical;}
.safety-ta:focus{outline:none;border-color:var(--accent);}
/* Material replenishment — inline-editable line items */
.mat-rep-item{display:flex;align-items:baseline;gap:5px;padding:2px 0;font-size:11px;color:var(--tx2);line-height:1.5;}
.mr-badge{display:inline-block;flex-shrink:0;font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:1px 5px;border-radius:3px;cursor:pointer;user-select:none;line-height:1.6;}
.mr-badge-prod{background:#d1fae5;color:#065f46;}
.mr-badge-tool{background:#fef3c7;color:#92400e;}
.mr-badge-staging{background:#ede9fe;color:#5b21b6;}
[data-theme="dark"] .mr-badge-prod{background:#064e3b;color:#6ee7b7;}
[data-theme="dark"] .mr-badge-tool{background:#78350f;color:#fcd34d;}
[data-theme="dark"] .mr-badge-staging{background:#3b0764;color:#c4b5fd;}
.mat-rep-color{width:22px;height:22px;padding:0;border:1px solid var(--border);border-radius:3px;cursor:pointer;flex-shrink:0;}
.mat-rep-dot{color:var(--tx3);flex-shrink:0;}
.mat-rep-text{flex:1;cursor:pointer;border-radius:3px;padding:0 2px;margin:0 -2px;}
.mat-rep-text:hover{background:var(--bg2);color:var(--tx1);}
.mat-rep-del{background:none;border:none;cursor:pointer;color:var(--tx3);font-size:13px;line-height:1;padding:0 2px;opacity:0;flex-shrink:0;}
.mat-rep-item:hover .mat-rep-del{opacity:1;}
.mat-rep-move-sel{font-size:9px;padding:1px 3px;border:0.5px solid var(--bd3);border-radius:3px;background:var(--bg2);color:var(--tx3);cursor:pointer;flex-shrink:0;opacity:0;transition:opacity .12s;max-width:80px;}
.mat-rep-item:hover .mat-rep-move-sel,.mat-rep-move-sel:focus{opacity:1;}
.mat-rep-del:hover{color:var(--tx-danger);}
.mat-rep-inp{flex:1;font-size:11px;padding:1px 4px;border:0.5px solid var(--bd1);border-radius:3px;background:var(--bg1);color:var(--tx1);font-family:var(--sans);}
.mat-rep-add-btn{margin-top:4px;display:block;}
/* Process steps — direct click to rename */
.step-label-text{cursor:pointer;border-radius:3px;padding:1px 3px;margin:-1px -3px;}
.step-label-text:hover{background:var(--bg2);color:var(--tx1);}
.step-row.step-mode-merge .step-label-text .step-merge-ind{margin-right:4px;vertical-align:-0.1em;color:var(--link);}
.step-row.step-mode-none{opacity:.78;}
.step-row.step-mode-none .step-label-text{font-style:italic;}

/* Per-step photo affordance inside each <li> of the step list */
.step-photo-cell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:30px;border-radius:4px;background:var(--wc-navy-100);cursor:pointer;flex-shrink:0;overflow:hidden;}
.step-photo-cell[data-action]:hover{background:var(--wc-teal-100);}
.step-photo-thumb{width:100%;height:100%;object-fit:cover;display:block;border-radius:4px;}
.step-photo-add{display:flex;align-items:center;justify-content:center;color:var(--tx3);}
.step-photo-cell:hover .step-photo-add{color:var(--link);}
.step-photo-del{position:absolute;top:-4px;right:-4px;width:14px;height:14px;border-radius:50%;background:var(--wc-navy);color:var(--wc-white);border:0;cursor:pointer;display:none;align-items:center;justify-content:center;padding:0;line-height:1;}
.step-photo-cell:hover .step-photo-del{display:flex;}
.pfmea-gaps-badge{
  display:inline-block;margin-left:6px;padding:1px 7px;border-radius:10px;
  background:var(--fill-danger);color:var(--fill-danger-fg);font-size:11px;font-weight:700;
}

/* ─── PFMEA Settings modal ──────────────────────────────────── */
.pfmea-form-section{margin-top:14px;}
.pfmea-form-title{font-size:12px;font-weight:700;color:var(--tx);
  text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;}
.pfmea-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 12px;}
.pfmea-form-grid label{display:flex;flex-direction:column;font-size:11px;color:var(--tx3);}
.pfmea-form-grid input,.pfmea-form-grid select{margin-top:2px;}

.pfmea-step-row{display:grid;grid-template-columns:80px 1fr 1.2fr 1fr 24px;
  gap:6px;padding:6px 0;border-bottom:1px solid var(--bd3);align-items:center;}
.pfmea-step-row:last-child{border-bottom:none;}
.pfmea-step-row input{font-size:12px;}
.pfmea-step-row .pfmea-step-stations{display:flex;flex-wrap:wrap;gap:4px;}
.pfmea-step-row .pfmea-step-stations label{
  display:inline-flex;align-items:center;gap:3px;font-size:11px;
  padding:1px 5px;border:1px solid var(--bd3);border-radius:4px;cursor:pointer;
}
.pfmea-step-row .pfmea-step-stations input[type=checkbox]{margin:0;width:11px;height:11px;}
.pfmea-step-del{background:none;border:none;color:var(--tx-danger);
  cursor:pointer;font-size:14px;padding:0;}

/* ─── PFMEA Gaps modal ──────────────────────────────────────── */
.pfmea-gaps-section{margin-top:10px;}
.pfmea-gaps-section-title{font-size:11px;font-weight:700;color:var(--tx2);
  text-transform:uppercase;letter-spacing:.05em;
  padding:4px 0;border-bottom:1px solid var(--bd3);margin-bottom:4px;}
.pfmea-gap-row{display:grid;grid-template-columns:60px 1fr 2fr;gap:8px;
  padding:3px 0;font-size:12px;}
.pfmea-gap-row .gap-cell{font-family:monospace;color:var(--tx3);}
.pfmea-gap-row .gap-field{color:var(--tx);}
.pfmea-gap-row .gap-hint{color:var(--tx3);font-size:11px;}
.pfmea-gaps-empty{padding:14px;text-align:center;color:var(--teal);
  background:rgba(0,129,138,0.06);border-radius:8px;}

/* ─── PFMEA Failure-Mode panel (Phase 2) ───── */
.fmpanel{margin-top:6px;}
.fmpanel-body.collapsed{display:none;}
/* Buttons inside the section header must not bubble to the toggle handler. */
.fm-section-hdr button{pointer-events:auto;}
.fm-section-hdr button:focus,.fm-section-hdr button:hover{z-index:1;}
body.role-sonnen .fmpanel textarea[readonly],
body.role-sonnen .fmpanel input[readonly],
body.role-sonnen .fmpanel select[disabled]{
  background:var(--bg-card2);color:var(--tx2);cursor:default;
}
.fm-empty{
  font-size:12px;color:var(--tx3);background:var(--bg1);
  border:1px dashed var(--bd2);border-radius:8px;padding:10px;
  margin-top:4px;
}
.fm-list{display:flex;flex-direction:column;gap:6px;margin-top:4px;}

.fm-group-header{
  display:flex;align-items:baseline;gap:8px;
  margin-top:10px;padding:4px 2px;
  border-bottom:1px solid var(--bd2);
}
.fm-group-header:first-child{margin-top:2px;}
.fm-group-badge{
  font-size:10px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;
  color:var(--accent);background:rgba(0,129,138,0.10);
  padding:2px 8px;border-radius:10px;
}
.fm-group-label{
  font-size:12px;color:var(--tx2);font-style:italic;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  flex:1;min-width:0;
}
.fm-group-add{
  font-size:10px;letter-spacing:0.04em;padding:1px 8px;flex-shrink:0;
}
.fm-group-empty{
  font-size:11px;color:var(--tx3);font-style:italic;
  padding:6px 8px;margin-left:18px;
  border-left:2px dashed var(--bd2);
}

.fm-row{
  border:1px solid var(--bd2);border-radius:8px;background:var(--bg1);
  overflow:hidden;
}
.fm-row-hdr{
  display:flex;align-items:center;gap:10px;padding:6px 10px;
  cursor:pointer;background:var(--bg-card2);
}
.fm-row-hdr:hover{background:rgba(0,129,138,0.05);}
.fm-row-num{font-size:11px;font-weight:700;color:var(--tx3);min-width:36px;}
.fm-row-summary{flex:1;font-size:13px;color:var(--tx);}
.fm-row-meta{display:flex;gap:4px;flex-wrap:wrap;}
.fm-rating{
  font-size:10px;font-weight:600;padding:1px 6px;border-radius:4px;
  background:var(--bg1);color:var(--tx2);border:1px solid var(--bd3);
}
.fm-rating.sev-critical{background:#C0392B;color:#fff;border-color:#C0392B;}
.fm-rating.sev-high    {background:var(--sev-high-bg);color:#fff;border-color:var(--sev-high-bg);}
.fm-rating.sev-medium  {background:#F1C40F;color:#0D1B2A;border-color:#F1C40F;}
.fm-rating.sev-low     {background:var(--sev-low-bg);color:#fff;border-color:var(--sev-low-bg);}
.fm-rating.sev-na      {color:var(--tx3);}
.fm-rpn{font-weight:700;}
.fm-rpn.rpn-critical{background:#C0392B;color:#fff;border-color:#C0392B;}
.fm-rpn.rpn-high    {background:var(--sev-high-bg);color:#fff;border-color:var(--sev-high-bg);}
.fm-rpn.rpn-medium  {background:#F1C40F;color:#0D1B2A;border-color:#F1C40F;}
.fm-rpn.rpn-low     {background:var(--sev-low-bg);color:#fff;border-color:var(--sev-low-bg);}
.fm-rpn.rpn-na      {color:var(--tx3);}

.fm-status{
  font-size:10px;font-weight:600;padding:1px 6px;border-radius:4px;
  text-transform:uppercase;letter-spacing:.04em;
}
.fm-status.status-open       {background:var(--bg-warn);color:var(--tx-warn);}
.fm-status.status-in-progress{background:var(--bg-info);color:var(--tx-info);}
.fm-status.status-closed     {background:var(--bg-ok);color:var(--tx-ok);}

.fm-del{
  background:none;border:none;color:var(--tx3);cursor:pointer;
  font-size:18px;line-height:1;padding:0 4px;
}
.fm-del:hover{color:var(--tx-danger);}

/* Per-FM lock padlock + locked-row treatment */
.fm-lock{
  background:none;border:none;color:var(--tx3);cursor:pointer;
  display:inline-flex;align-items:center;padding:0 2px;line-height:1;
}
.fm-lock:hover{color:var(--accent);}
.fm-lock.is-locked{color:var(--accent);}
.fm-locked-badge{
  display:inline-flex;align-items:center;gap:3px;margin-left:8px;
  font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--accent);background:rgba(0,129,138,0.10);
  padding:1px 6px;border-radius:8px;vertical-align:middle;
}
.fm-dup-chip{
  display:inline-flex;align-items:center;margin-left:8px;
  font-size:9px;font-weight:700;letter-spacing:.04em;
  color:#3d2e00;background:#E8A317;
  padding:1px 7px;border-radius:8px;border:0;cursor:pointer;vertical-align:middle;
}
.fm-dup-chip:hover{opacity:.88;}
.fm-row.fm-locked{box-shadow:inset 3px 0 0 var(--accent);}
.fm-row.fm-locked .fm-row-hdr{background:rgba(0,129,138,0.04);}

/* Per-FM flag button + flagged-row treatment */
.fm-flag-btn{
  background:none;border:none;color:var(--tx3);cursor:pointer;
  display:inline-flex;align-items:center;padding:0 2px;line-height:1;
}
.fm-flag-btn:hover{color:#f97316;}
.fm-flag-btn.is-flagged{color:#f97316;}
.fm-flagged-badge{
  display:inline-flex;align-items:center;gap:3px;margin-left:8px;
  font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:#7c3000;background:#fed7aa;
  padding:1px 6px;border-radius:8px;vertical-align:middle;
}
.fm-row.fm-flagged{box-shadow:inset 3px 0 0 #f97316;}
.fm-row.fm-flagged .fm-row-hdr{background:rgba(249,115,22,0.04);}
.fm-row.fm-flagged.fm-locked{box-shadow:inset 3px 0 0 #f97316,inset 6px 0 0 var(--accent);}

/* Move station-wide FM to a step */
.fm-move-step-sel{
  font-size:10px;padding:1px 4px;border:1px solid var(--bd2);border-radius:4px;
  background:var(--bg1);color:var(--tx2);cursor:pointer;max-width:130px;
  flex-shrink:0;
}
.fm-move-step-sel:hover{border-color:var(--accent);color:var(--accent);}

.fm-row-body{display:none;padding:10px 12px 12px;border-top:1px solid var(--bd2);}
.fm-row.expanded .fm-row-body{display:block;}

.fm-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;}
.fm-grid label{display:flex;flex-direction:column;font-size:11px;color:var(--tx3);}
.fm-grid label.fm-full{grid-column:1 / -1;}
.fm-grid textarea{margin-top:2px;font-size:12px;font-family:inherit;
  border:1px solid var(--bd3);border-radius:4px;padding:4px 6px;resize:vertical;
}
.fm-grid input,.fm-grid select{margin-top:2px;font-size:12px;
  border:1px solid var(--bd3);border-radius:4px;padding:3px 6px;
}
.fm-grid input[disabled]{background:var(--bg-card2);color:var(--tx2);}

.fm-grid-rates{grid-template-columns:repeat(4,1fr);}
.fm-grid-resp {grid-template-columns:1.2fr 1fr 1fr;}
.fm-grid-link {grid-template-columns:1fr 0.7fr 0.7fr 1fr;}

.fm-rule{
  font-size:10px;font-weight:700;color:var(--tx3);
  text-transform:uppercase;letter-spacing:.05em;
  margin:10px 0 4px;padding-bottom:2px;border-bottom:1px solid var(--bd3);
}

.fm-details{margin-top:10px;border:1px solid var(--bd3);
  border-radius:6px;padding:6px 8px;background:var(--bg-card2);
}
.fm-details summary{cursor:pointer;font-size:11px;font-weight:700;
  color:var(--tx2);text-transform:uppercase;letter-spacing:.05em;
}
.fm-details[open]{padding-bottom:8px;}
.fm-optional-tag{font-size:9px;font-weight:400;letter-spacing:0;color:var(--tx3);margin-left:6px;text-transform:none;}

/* ─── Empty / Filled field state ─────────────────────────────
   Amber tint on empty required-or-optional inputs makes it obvious at
   a glance what still needs authoring. Filled fields get a subtle
   green check marker. Disabled derived fields (RPN) opt out via the
   .fm-derived class. */
.fm-grid label.fm-empty > textarea,
.fm-grid label.fm-empty > input:not([disabled]),
.fm-grid label.fm-empty > select {
  background: rgba(239, 181, 88, 0.10);
  border-color: var(--bd-warn);
}
.fm-grid label.fm-empty,
.fm-grid label.fm-filled {
  position: relative;
}
.fm-grid label.fm-empty::after,
.fm-grid label.fm-filled::after {
  position: absolute;
  top: 0; right: 0;
  width: 14px;
  height: 14px;
  margin: 1px 2px;
  border-radius: 3px;
  content: '';
  -webkit-mask: center / contain no-repeat;
  mask: center / contain no-repeat;
}
.fm-grid label.fm-empty::after {
  background: var(--tx-warn);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3C/svg%3E");
}
.fm-grid label.fm-filled::after {
  background: var(--tx-ok);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
}

/* Per-row completion counter pill in the row header. */
.fm-completion {
  font-size: 10px; font-weight: 700; letter-spacing: .02em;
  padding: 2px 6px; border-radius: 10px;
  background: var(--bg-warn); color: var(--tx-warn);
  border: 0.5px solid var(--bd-warn);
}
.fm-completion.fm-complete { background: var(--bg-ok); color: var(--tx-ok); border-color: var(--bd-ok); }

/* Panel-level completion in the section header, mirrors per-row style. */
.fm-panel-progress {
  font-size: 10px; font-weight: 700; letter-spacing: 0; text-transform: none;
  margin-left: 8px;
  padding: 1px 6px; border-radius: 9px;
  background: var(--bg-warn); color: var(--tx-warn);
  border: 0.5px solid var(--bd-warn);
}
.fm-panel-progress.fm-complete { background: var(--bg-ok); color: var(--tx-ok); border-color: var(--bd-ok); }

/* ─── Activity tab ──────────────────────────────────────────── */
.act-empty{
  font-size:13px;color:var(--tx3);text-align:center;
  padding:32px 0;
}
.act-day-group{margin-bottom:20px;}
.act-day-hdr{
  font-size:10px;font-weight:700;color:var(--tx3);
  text-transform:uppercase;letter-spacing:.06em;
  padding:3px 0 6px;border-bottom:1px solid var(--bd3);
  margin-bottom:8px;
}
.act-entry{
  display:flex;gap:10px;padding:5px 0;
  border-bottom:1px solid var(--bd3);
}
.act-entry:last-child{border-bottom:none;}
.act-left{
  display:flex;flex-direction:column;align-items:center;gap:4px;
  min-width:42px;padding-top:2px;
}
.act-time{font-size:10px;color:var(--tx3);white-space:nowrap;}
.act-dot{
  width:8px;height:8px;border-radius:50%;flex-shrink:0;
  background:var(--bd2);
}
.act-right{flex:1;min-width:0;}
.act-who{
  display:flex;align-items:center;gap:6px;margin-bottom:2px;flex-wrap:wrap;
}
.act-author{font-size:12px;font-weight:600;color:var(--tx1);}
.act-role-badge{
  font-size:10px;font-weight:600;padding:1px 6px;border-radius:8px;
  letter-spacing:.03em;
}
.act-wiens {background:rgba(0,129,138,.12);color:var(--teal);}
.act-sonnen{background:var(--bg-warn);color:var(--tx-warn);}
.act-where{
  display:flex;align-items:center;gap:5px;margin-bottom:1px;flex-wrap:wrap;
}
.act-tab-pill{
  font-size:10px;font-weight:600;padding:1px 6px;border-radius:8px;
  letter-spacing:.03em;opacity:.85;
}
.act-section{font-size:11px;color:var(--tx2);}
.act-what{display:flex;align-items:baseline;gap:5px;flex-wrap:wrap;}
.act-action{font-size:12px;color:var(--tx1);}
.act-detail{font-size:11px;color:var(--tx3);font-style:italic;}
.act-group{
  border:1px solid var(--bd2);border-radius:8px;
  margin-bottom:6px;overflow:hidden;
}
.act-group-hdr{
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  padding:7px 10px;background:var(--bg-card2);
}
.act-group-count{
  font-size:10px;font-weight:700;padding:1px 6px;border-radius:8px;
  background:var(--bd2);color:var(--tx2);
}
.act-group-meta{font-size:10px;color:var(--tx3);margin-left:auto;}
.act-group-body{padding:4px 10px 6px;}
.act-group-row{
  display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;
  padding:3px 0;border-bottom:1px solid var(--bd3);font-size:12px;
}
.act-group-row:last-child{border-bottom:none;}
.act-group-time{font-size:10px;color:var(--tx3);min-width:42px;flex-shrink:0;}
.act-nav-icon{
  display:flex;align-items:center;gap:4px;
  flex-shrink:0;align-self:flex-start;padding-top:3px;
  color:var(--tx3);opacity:.25;transition:opacity .15s,color .15s;
  white-space:nowrap;
}
.act-nav-dest{
  font-size:10px;font-weight:600;letter-spacing:.01em;
  max-width:0;overflow:hidden;transition:max-width .2s ease,opacity .2s;opacity:0;
}
.act-entry[data-action="act-nav"],.act-group[data-action="act-nav"]{cursor:pointer;}
.act-entry[data-action="act-nav"]:hover{background:var(--bg2);border-radius:4px;margin:0 -4px;padding-left:4px;padding-right:4px;}
.act-entry[data-action="act-nav"]:hover .act-nav-icon{opacity:1;color:var(--teal);}
.act-entry[data-action="act-nav"]:hover .act-nav-dest{max-width:200px;opacity:1;}
.act-group[data-action="act-nav"]:hover{border-color:var(--teal);box-shadow:0 0 0 1px rgba(50,175,182,.35);}
.act-group[data-action="act-nav"]:hover .act-nav-icon{opacity:1;color:var(--teal);}
@keyframes act-nav-overlay-flash{
  0%  {opacity:1;}
  70% {opacity:.5;}
  100%{opacity:0;}
}
@media print{#tab-activity{display:none;}}

/* ══ Project Charter tab ════════════════════════════════════════ */
#tab-charter{background:var(--bg2);}
#charter-content{padding:0 0 24px;}

/* Inline Lucide SVG alignment helpers */
.ico-inline{display:inline-flex;vertical-align:-0.15em;margin-right:2px;}
.ct2-banner-ico{display:inline-flex;vertical-align:-0.15em;margin-right:4px;}
.ct2-inline-ico{display:inline-flex;vertical-align:-0.12em;margin-right:3px;}

.ct2-wrap{background:none;}

/* Header — flat deep-navy + teal border, exactly like brandbar */
.ct2-hdr{background:var(--wc-deep-navy);border-radius:var(--rl);padding:9px 16px;display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;border-bottom:var(--divider) solid var(--wc-teal);}
.ct2-hdr-left{display:flex;align-items:center;gap:9px;min-width:0;flex:1;}
.ct2-globe{display:inline-flex;align-items:center;flex-shrink:0;color:var(--link);}
.ct2-title{color:var(--wc-white);font-family:var(--font-display);font-size:14px;font-weight:900;letter-spacing:var(--eyebrow-ls);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ct2-hdr-right{display:flex;align-items:center;gap:7px;flex-shrink:0;}
.ct2-date-badge{background:rgba(255,255,255,.12);color:var(--wc-navy-300);border-radius:var(--r);padding:3px 9px;font-size:10px;font-weight:600;letter-spacing:.05em;white-space:nowrap;}
.ct2-ver-badge{background:var(--wc-teal);color:var(--wc-deep-navy);border-radius:var(--r);padding:3px 9px;font-size:10px;font-weight:700;white-space:nowrap;}

/* Two-column body */
.ct2-body{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start;}
@media(max-width:900px){.ct2-body{grid-template-columns:1fr;}}
.ct2-col{display:flex;flex-direction:column;}

/* Section banners — flat surface-brand (deep-navy) with teal left pip */
.ct2-section-banner{background:var(--surface-brand);color:var(--link);font-family:var(--font-display);font-size:10px;font-weight:900;letter-spacing:var(--eyebrow-ls);text-align:center;padding:5px 14px;border-radius:20px;margin-bottom:8px;border:0.5px solid rgba(50,175,182,.25);}

/* Cards */
.ct2-white-card{background:var(--bg1);border:0.5px solid var(--bd3);border-radius:var(--rl);padding:11px 12px;box-shadow:var(--shadow-sm);margin-bottom:8px;}
.ct2-overview-row{display:flex;gap:8px;margin-bottom:8px;}
.ct2-overview-row .ct2-white-card{margin-bottom:0;}
.ct2-mission-card{flex:0 0 42%;}
.ct2-mission-text{font-size:11px;color:var(--tx2);line-height:1.6;margin:0;}

/* Sub-labels */
.ct2-sub-label{font-size:9px;font-weight:700;letter-spacing:var(--eyebrow-ls);text-transform:uppercase;color:var(--wc-teal-700);border-bottom:1.5px solid var(--wc-teal);padding-bottom:3px;margin-bottom:8px;display:block;}
[data-theme="dark"] .ct2-sub-label{color:var(--link);border-bottom-color:var(--link);}

/* Objectives */
.ct2-obj-table{width:100%;border-collapse:collapse;font-size:11px;}
.ct2-obj-table th{font-size:9px;color:var(--tx3);font-weight:600;text-align:left;padding:0 4px 4px;}
.ct2-obj-table td{padding:3px 4px;vertical-align:middle;}
.ct2-obj-icon{width:18px;font-size:12px;color:var(--tx3);}
.ct2-obj-lbl{white-space:nowrap;padding-right:6px;font-weight:500;color:var(--tx1);}
.ct2-obj-bar{width:100%;min-width:60px;}
.ct2-obj-target{text-align:center;font-size:13px;padding-left:4px;}

/* Progress bars */
.ct2-prog-track{background:var(--bd3);border-radius:3px;height:7px;overflow:hidden;width:100%;}
.ct2-prog-sm{height:4px;margin-top:5px;}
.ct2-prog-fill{height:100%;border-radius:3px;transition:width .3s;}
.ct2-prog-green{background:var(--tx-ok);}
.ct2-prog-yellow{background:var(--tx-warn);}
[data-theme="dark"] .ct2-hex-track{background:linear-gradient(90deg,var(--wc-teal-800),var(--wc-teal));}
.ct2-prog-red{background:var(--fill-danger);}

/* Status badges */
.ct2-badge{display:inline-block;padding:2px 7px;border-radius:10px;font-size:9px;font-weight:700;letter-spacing:.03em;white-space:nowrap;flex-shrink:0;}
.ct2-badge-green{background:var(--bg-ok);color:var(--tx-ok);}
.ct2-badge-yellow{background:var(--bg-warn);color:var(--tx-warn);}
.ct2-badge-orange{background:var(--bg-warn);color:var(--tx-warn);}
.ct2-badge-red{background:var(--bg-danger);color:var(--tx-danger);}
.ct2-badge-blue{background:var(--bg-info);color:var(--tx-info);}

/* Hex milestone timeline — staggered above/below
   Container: 168px. Track at y=84.
   Above nodes: ann(54)+stem(8)+hex(44) → hex center=84. Spacer fills bottom.
   Below nodes: spacer fills top → hex center=84, stem(8)+ann(54) below.     */
.ct2-hex-wrap{position:relative;height:168px;margin:6px 0;}
.ct2-hex-track{position:absolute;top:84px;left:4%;right:4%;height:2px;background:linear-gradient(90deg,var(--wc-teal-200),var(--wc-teal));border-radius:2px;z-index:0;}
.ct2-hex-node{position:absolute;top:0;height:168px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;z-index:1;width:78px;}
.ct2-hex-ann{display:flex;flex-direction:column;align-items:center;gap:2px;width:78px;height:54px;flex-shrink:0;}
.ct2-hex-ann--top{justify-content:flex-end;padding-bottom:2px;}
.ct2-hex-ann--bot{justify-content:flex-start;padding-top:2px;}
.ct2-hex-title{font-size:8.5px;font-weight:700;text-align:center;color:var(--tx1);line-height:1.25;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;width:100%;}
.ct2-hex-date{font-size:7.5px;color:var(--tx3);font-weight:600;text-align:center;white-space:nowrap;letter-spacing:.1px;}
.ct2-hex-stem{width:2px;height:8px;background:var(--bd2);border-radius:1px;flex-shrink:0;}
.ct2-hex-spacer{flex:1;min-height:0;}
.ct2-hex{width:44px;height:44px;clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);flex-shrink:0;display:flex;align-items:center;justify-content:center;}
.ct2-hex-pct{font-size:9px;font-weight:700;color:var(--wc-white);text-align:center;line-height:1;}
/* Charter-visible badge on Gantt milestone rows */
.g-ms-charter-badge{font-size:9px;color:var(--link);opacity:.7;flex-shrink:0;line-height:1;}

/* Key open topics */
.ct2-topics-cols{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px;}
.ct2-topic-card{background:var(--bg1);border:0.5px solid var(--bd3);border-radius:var(--r);padding:8px 9px;box-shadow:var(--shadow-sm);margin-bottom:6px;}
.ct2-topic-hdr{display:flex;align-items:flex-start;justify-content:space-between;gap:4px;margin-bottom:4px;}
.ct2-topic-name{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;flex:1;line-height:1.3;color:var(--tx1);}
.ct2-topic-body{display:flex;align-items:flex-start;gap:5px;margin-bottom:4px;min-height:20px;}
.ct2-topic-icon{font-size:11px;flex-shrink:0;}
.ct2-icon-green{color:var(--tx-ok);}
.ct2-icon-yellow{color:var(--tx-warn);}
.ct2-icon-red{color:var(--tx-danger);}
.ct2-topic-desc{font-size:9px;color:var(--tx3);line-height:1.4;}

/* Decisions */
.ct2-decisions-card{border-left:4px solid var(--bd-warn);}
.ct2-decisions-hdr{display:flex;align-items:center;gap:7px;margin-bottom:7px;}
.ct2-decision-item{font-size:11px;color:var(--tx2);padding:2px 0;line-height:1.4;}
.ct2-decision-ok{color:var(--tx3);font-style:italic;}

/* Team — 2-column grid, horizontal person cards */
.ct2-team-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.ct2-person{display:flex;align-items:center;gap:9px;padding:3px 0;}
.ct2-person-info{min-width:0;flex:1;}
.ct2-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--wc-white);flex-shrink:0;box-shadow:var(--shadow-sm);}
.ct2-av-wc{background:linear-gradient(135deg,var(--wc-navy),var(--wc-teal));}
.ct2-av-sn{background:linear-gradient(135deg,var(--wc-teal-700),var(--wc-green));}
.ct2-person-role{font-size:8px;font-weight:700;letter-spacing:var(--eyebrow-ls);text-transform:uppercase;color:var(--tx3);}
.ct2-person-name{font-size:11px;font-weight:600;color:var(--tx1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ct2-person-org{font-size:9px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

@media print{.ct2-body{grid-template-columns:1fr;}}

/* PFD flow-diagram live preview (Documents tab, behind the PFD generator).
   Collapsible <details>; the SVG is the same one shipped in the PDF so
   visual edits in stations propagate here on `stations-changed`. */
.pfd-flow-preview{margin-top:8px;border:0.5px solid var(--bd3);border-radius:var(--r);background:var(--bg1);}
.pfd-flow-preview>summary{cursor:pointer;list-style:none;padding:8px 10px;display:flex;align-items:baseline;gap:10px;user-select:none;}
.pfd-flow-preview>summary::-webkit-details-marker{display:none;}
.pfd-flow-preview>summary::before{content:'\25B8';font-size:10px;color:var(--tx3);transition:transform .15s;}
.pfd-flow-preview[open]>summary::before{transform:rotate(90deg);}
.pfd-flow-preview-title{font-size:12px;font-weight:600;color:var(--tx1);}
.pfd-flow-preview-sub{font-size:10px;color:var(--tx3);}
.pfd-flow-preview-body{padding:10px 12px 14px;max-height:70vh;overflow:auto;background:var(--bg0);border-top:0.5px solid var(--bd3);}
.pfd-flow-preview-body svg{display:block;width:100%;height:auto;max-width:720px;margin:0 auto;}
.pfd-flow-preview-empty{font-size:11px;color:var(--tx3);font-style:italic;text-align:center;padding:16px 0;}

/* ── Infrastructure section (line-layout data per station) ── */
.infra-header{display:flex;align-items:center;gap:6px;padding:6px 10px;margin:8px -12px 0;background:var(--bg2);border-top:0.5px solid var(--bd3);cursor:pointer;user-select:none;font-size:11px;color:var(--tx2);}
.infra-header:hover{background:var(--bg3);}
.infra-header-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;flex:1;color:var(--tx2);}
.infra-chev{font-size:11px;width:12px;text-align:center;color:var(--tx3);}
.infra-summary{font-size:10px;color:var(--tx3);font-weight:400;text-transform:none;letter-spacing:0;display:flex;flex-wrap:wrap;gap:3px;align-items:center;}
.infra-badge{display:inline-block;font-size:9px;font-weight:600;border-radius:3px;padding:1px 5px;white-space:nowrap;}
.infra-badge-setup{background:#fef9c3;color:#854d0e;}
[data-theme="dark"] .infra-badge-setup{background:#422006;color:#fde68a;}
.infra-badge-quality{background:#dbeafe;color:#1e40af;}
[data-theme="dark"] .infra-badge-quality{background:#1e3a5f;color:#93c5fd;}
.infra-badge-utility{background:#f3e8ff;color:#6b21a8;}
[data-theme="dark"] .infra-badge-utility{background:#3b0764;color:#d8b4fe;}
.infra-body{overflow:hidden;transition:max-height .2s;}
.infra-body.collapsed{display:none;}
.infra-sections{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;padding:10px 0 6px;}
.infra-section{display:flex;flex-direction:column;gap:4px;}
.infra-sl{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--tx3);}
.infra-hint{font-weight:400;text-transform:none;letter-spacing:0;color:var(--tx3);}
.infra-check-row{display:flex;flex-direction:column;gap:3px;}
.infra-check-label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--tx2);cursor:pointer;}
.infra-check-label input{accent-color:var(--accent);cursor:pointer;}
.infra-chips{display:flex;flex-wrap:wrap;gap:3px;margin-top:2px;}
.infra-chip{font-size:10px;padding:2px 7px;border-radius:12px;border:0.5px solid var(--bd2);background:var(--bg2);color:var(--tx3);cursor:pointer;line-height:1.4;transition:background .1s,color .1s;}
.infra-chip:hover{background:var(--bg3);color:var(--tx2);}
.infra-chip.infra-chip-on{background:var(--btn-primary-bg);color:var(--btn-primary-fg);border-color:var(--btn-primary-bg);}
.infra-select{font-size:11px;padding:3px 6px;border:0.5px solid var(--bd2);border-radius:4px;background:var(--bg1);color:var(--tx1);width:100%;max-width:160px;}
.infra-text-inp{font-size:11px;padding:3px 6px;border:0.5px solid var(--bd2);border-radius:4px;background:var(--bg1);color:var(--tx1);width:100%;box-sizing:border-box;margin-top:4px;}
.infra-util-grid{display:flex;flex-direction:column;gap:3px;}
[data-theme="dark"] .infra-header{background:var(--bg2);}
[data-theme="dark"] .infra-header:hover{background:var(--bg3);}
[data-theme="dark"] .infra-chip.infra-chip-on{background:var(--btn-primary-bg);border-color:var(--btn-primary-bg);}

/* ══════════ SYSTEM RISK TAB ══════════ */
.sysrisk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;}
.sysrisk-gen-meta{font-size:12px;color:var(--tx3);}
.sysrisk-toolbar-btns{display:flex;gap:8px;flex-wrap:wrap;}
.sysrisk-empty{padding:24px;color:var(--tx3);font-size:13px;text-align:center;border:1px dashed var(--bd2);border-radius:8px;}
.sysrisk-intro{text-align:left;max-width:680px;margin:0 auto;}
.sysrisk-intro p{margin:0 0 8px;line-height:1.5;color:var(--tx2);}
.sysrisk-intro .sysrisk-note{font-size:12px;color:var(--tx3);}
.sysrisk-intro .sysrisk-hint{font-size:12px;color:var(--tx-warn);background:var(--bg-warn);border:1px solid var(--bd-warn);border-radius:6px;padding:8px 10px;margin-top:10px;}
.sysrisk-warn{font-size:12px;color:var(--tx-warn);background:var(--bg-warn);border:1px solid var(--bd-warn);border-radius:6px;padding:6px 10px;margin-bottom:12px;}
.sysrisk-group{margin-bottom:22px;}
.sysrisk-cat{font-size:13px;font-weight:700;color:var(--tx1);text-transform:uppercase;letter-spacing:.04em;margin:0 0 8px;padding-bottom:5px;border-bottom:2px solid var(--bd2);display:flex;align-items:center;gap:8px;}
.sysrisk-count{font-size:11px;font-weight:600;color:var(--tx3);background:var(--bg2);border-radius:10px;padding:1px 8px;text-transform:none;letter-spacing:0;}
.sysrisk-fm{background:var(--bg1);border:1px solid var(--bd2);border-radius:8px;padding:12px 14px;margin-bottom:8px;}
.sysrisk-fm.locked{border-color:var(--teal);box-shadow:inset 3px 0 0 var(--teal);}
.sysrisk-fm-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.sysrisk-fm-title{font-size:13px;font-weight:600;color:var(--tx1);flex:1;}
.sysrisk-fm-actions{flex:none;display:flex;gap:4px;}
.sysrisk-icbtn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid var(--bd2);border-radius:6px;background:transparent;color:var(--tx3);cursor:pointer;}
.sysrisk-icbtn:hover{color:var(--tx1);border-color:var(--tx3);}
.sysrisk-icbtn.locked{color:var(--teal);border-color:var(--teal);background:color-mix(in srgb, var(--teal) 12%, transparent);}
.sysrisk-icbtn.sysrisk-del:hover{color:var(--tx-danger);border-color:var(--bd-danger);background:var(--bg-danger);}
.sysrisk-fm-editing{border-color:var(--teal);}
.sysrisk-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.sysrisk-edit-field{display:flex;flex-direction:column;gap:3px;margin-bottom:8px;font-size:11px;color:var(--tx3);font-weight:600;}
.sysrisk-edit-field em{font-weight:400;font-style:normal;color:var(--tx3);}
.sysrisk-edit-field input,.sysrisk-edit-field textarea,.sysrisk-edit-field select{font-size:12px;font-weight:400;color:var(--tx1);background:var(--bg1);border:1px solid var(--bd2);border-radius:5px;padding:5px 7px;width:100%;box-sizing:border-box;font-family:inherit;}
.sysrisk-edit-field textarea{resize:vertical;line-height:1.4;}
.sysrisk-edit-err{font-size:12px;color:var(--tx-danger);min-height:0;margin-bottom:6px;}
.sysrisk-edit-err:not(:empty){background:var(--bg-danger);border:1px solid var(--bd-danger);border-radius:5px;padding:5px 8px;}
.sysrisk-edit-actions{display:flex;justify-content:flex-end;gap:8px;}
.sysrisk-fm-body{display:flex;flex-direction:column;gap:4px;}
.sysrisk-row{display:grid;grid-template-columns:96px 1fr;gap:10px;font-size:12px;line-height:1.45;color:var(--tx2);}
.sysrisk-lbl{color:var(--tx3);font-weight:600;}
.sysrisk-fm-stations{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--tx3);margin-top:4px;}
.sysrisk-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-radius:4px;padding:2px 7px;border:1px solid transparent;}
.sysrisk-high{background:var(--bg-danger);color:var(--tx-danger);border-color:var(--bd-danger);}
.sysrisk-medium{background:var(--bg-warn);color:var(--tx-warn);border-color:var(--bd-warn);}
.sysrisk-low{background:var(--bg-ok);color:var(--tx-ok);border-color:var(--bd-ok);}
/* High-severity (SEV ≥ 9) section */
.sysrisk-hs{margin-top:26px;border-top:2px solid var(--bd2);padding-top:16px;}
.sysrisk-hs-sub{font-size:12px;color:var(--tx3);margin:-2px 0 10px;}
.sysrisk-hs-row{display:grid;grid-template-columns:1.3fr 1.5fr 2fr 64px 2fr;gap:10px;font-size:12px;color:var(--tx2);padding:8px 6px;border-bottom:1px solid var(--bd2);align-items:start;}
.sysrisk-hs-head{font-size:11px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--bd2);}
.sysrisk-sev{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.03em;border-radius:4px;padding:2px 7px;background:var(--bg-danger);color:var(--tx-danger);border:1px solid var(--bd-danger);}

/* Fixed app toasts + writer-lock banner */
.toast-fixed{
  position:fixed;right:16px;bottom:16px;z-index:9999;
  padding:10px 14px;background:var(--surface-brand);color:var(--tx-on-brand);
  border-radius:var(--r);font:13px/1.4 var(--font-body);
  box-shadow:var(--shadow-md);max-width:320px;cursor:pointer;
  opacity:0;transition:opacity .2s ease;
}
.toast-fixed.is-visible{opacity:1;}
#writer-lock-banner{
  position:fixed;top:0;left:0;right:0;z-index:99999;
  height:36px;line-height:36px;font:600 13px/36px system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  text-align:center;box-shadow:var(--shadow-sm);
  padding:0 12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
}
#writer-lock-banner.is-readonly{background:var(--tx-warn);color:var(--wc-deep-navy);border-bottom:1px solid var(--bd-warn);}
#writer-lock-banner.is-local-dev{background:var(--wc-navy);color:var(--wc-white);border-bottom:1px solid var(--wc-navy-600);}
#writer-lock-banner .writer-lock-steal-btn{
  background:var(--surface-brand);color:var(--tx-on-brand);border:0;border-radius:4px;
  padding:4px 10px;font:600 12px/1 system-ui,sans-serif;cursor:pointer;margin-right:12px;
}
