:root{color-scheme:dark;--bg:#08121b;--panel:#10232f;--panel2:#142c39;--panel3:#193542;--border:#304d59;--muted:#a8c0c6;--text:#ecf8f4;--soft:#7f9fa7;--mint:#75e9b5;--cyan:#8ed4f1;--amber:#ffd28e;--red:#f19a96;--shadow:0 16px 44px #0005;font-family:Inter,'Segoe UI',system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(ellipse at 72% -23%,#1a4e54 0%,transparent 48%),var(--bg);color:var(--text);margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}a{color:var(--cyan)}.shell{max-width:1450px;padding:22px 22px 36px;margin:auto}.top{display:flex;justify-content:space-between;align-items:center;gap:18px;padding-bottom:22px}.brand{display:flex;gap:12px;align-items:center}.logo{width:51px;height:51px;background:linear-gradient(145deg,#65efad,#349a97);border:1px solid #a6fed6;border-radius:14px;display:grid;place-items:center;color:#073632;font-size:30px;font-weight:950;box-shadow:0 0 32px #6ceab024}.ey{letter-spacing:1.7px;font-size:10px;font-weight:800;color:#a0cdc5}.brand h1{font-size:22px;line-height:1.2;letter-spacing:-.7px;margin:3px 0}.brand h1 span{color:var(--mint)}.muted{color:var(--muted)}.dim{color:var(--soft)}.small{font-size:12px}.top-right{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.language{display:flex;border:1px solid var(--border);border-radius:11px;padding:3px;background:#101e29}.language button{border:0;background:transparent;color:var(--muted);padding:7px 11px;border-radius:8px;font-size:12px;font-weight:800}.language .active{background:#2d5e59;color:white}.btn{background:#1d3b49;border:1px solid #45636f;color:#eaf7f3;padding:10px 15px;border-radius:11px;font-weight:730;font-size:13px;transition:background .15s}.btn:hover{background:#2b5664}.btn.primary{background:var(--mint);color:#062923;border-color:#7df8be}.btn.primary:hover{background:#b1ffdb}.btn.ghost{background:transparent}.btn.smallbtn{padding:7px 10px;font-size:11px}.btn.danger{color:#ffc3be;border-color:#7e5054}.banner{display:grid;grid-template-columns:1fr auto;gap:24px;background:linear-gradient(120deg,#173837,#112b35 60%,#173646);border:1px solid #3c6866;border-radius:18px;padding:23px 25px;box-shadow:var(--shadow);margin-bottom:16px;align-items:center}.banner h2{font-size:27px;letter-spacing:-1.2px;margin:7px 0}.banner p{margin:5px 0;color:#c1d4d6;font-size:13px;max-width:700px;line-height:1.5}.hero-number{text-align:right;white-space:nowrap}.hero-number .amount{color:var(--mint);font-weight:880;font-size:38px;line-height:1.2;letter-spacing:-1.8px}.hero-number .unit{font-size:13px;color:#b8d4c9}.summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:17px}.metric{background:#122531;border:1px solid var(--border);padding:14px 15px;border-radius:13px;min-width:0}.metric span{font-size:11px;letter-spacing:.1px;color:var(--muted);display:block}.metric b{display:block;font-size:22px;margin:8px 0 1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.7px}.metric small{font-size:10px;color:var(--soft)}.metric.main{border-color:#518879;background:#173a3a}.metric.main b{color:var(--mint)}.layout{display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr);gap:16px;align-items:start}.side,.content{display:grid;gap:15px;min-width:0}.card{background:var(--panel);border:1px solid var(--border);border-radius:15px;padding:18px;box-shadow:0 7px 25px #0002;min-width:0}.card h2{font-size:17px;letter-spacing:-.35px;margin:0}.head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:13px}.head .subtitle{font-size:12px;color:var(--muted);margin-top:6px}.tag{display:inline-flex;gap:4px;align-items:center;font-size:10px;font-weight:760;border:1px solid #3f685f;border-radius:30px;padding:5px 9px;color:#b9ead1;background:#1b3a36;white-space:nowrap}.tag.warn{background:#453321;border-color:#7e6740;color:#ffd79e}.tag.info{background:#193847;border-color:#4a7e8f;color:#aae3f4}.tag.grey{background:#24343c;border-color:#45606b;color:#c0d3d8}.line{height:1px;background:var(--border);margin:15px 0}.item-row{display:grid;grid-template-columns:40px 1fr auto;gap:9px;align-items:center;margin:9px 0}.img{width:39px;height:39px;background:#1b4250;border:1px solid #3b5b63;border-radius:9px;background-position:center;background-size:cover;display:grid;place-items:center;color:var(--mint);font-weight:850}.item-row b{font-size:12px;display:block}.item-row small{display:block;font-size:10px;color:var(--soft);margin-top:3px}.step{display:flex;gap:3px;align-items:center}.step button{height:29px;width:29px;border:1px solid #436574;border-radius:7px;background:#25404c;color:white;font-size:18px}.step button:hover{background:#326271}.step input{width:35px;text-align:center;border:0;background:transparent;color:var(--text);font-size:14px;font-weight:770;padding:3px 0;appearance:textfield}.step input::-webkit-outer-spin-button,.step input::-webkit-inner-spin-button{-webkit-appearance:none}.section-label{font-size:10px;color:var(--cyan);letter-spacing:1.2px;font-weight:800;text-transform:uppercase;margin:13px 0 9px}.adjust{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;margin:10px 0;font-size:12px}.adjust select,.adjust input,.field input,.field select{width:100%;background:#0b202d;border:1px solid #385565;border-radius:8px;padding:8px 10px;color:white;min-width:0}.adjust select{max-width:170px}.adjust input{max-width:112px}.field{margin:10px 0}.field label{font-size:11px;color:var(--muted);display:block;margin-bottom:5px}.note{font-size:11px;line-height:1.5;color:#b3c9c9}.note strong{color:#ffe0a8}.fold{border-top:1px solid var(--border);margin-top:13px;padding-top:12px}.fold summary{cursor:pointer;color:#cbe8e5;font-weight:760;font-size:12px;list-style:none;display:flex;gap:8px;justify-content:space-between}.fold summary::after{content:'⌄';color:var(--mint)}.fold[open] summary::after{content:'⌃'}.fold .in{padding:12px 2px 3px}.twofields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.rank{margin:10px 0;padding:9px 0;border-bottom:1px solid #ffffff0e}.rank:last-child{border:0}.rank .title{display:flex;justify-content:space-between;font-size:12px;font-weight:700}.rank input{width:100%;accent-color:var(--mint);margin:7px 0}.rank small{color:var(--soft);font-size:10px}.mode{display:flex;flex-wrap:wrap;gap:7px}.mode button{border:1px solid #3e5968;border-radius:9px;background:#1b3541;color:#c2d6d7;font-size:11px;font-weight:770;padding:8px 11px}.mode button.active{border-color:#6bd5b3;background:#1c5148;color:#d9ffeb}.chain-tabs{display:flex;gap:7px;flex-wrap:wrap}.chain-tabs button{background:#213845;border:1px solid #42606d;color:#c2d4d8;padding:9px 12px;border-radius:9px;font-size:12px;font-weight:750}.chain-tabs button.active{background:#28554f;border-color:#71d8b1;color:#eafff2}.chain-tabs .plus{color:var(--mint);border-style:dashed}.topline{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:12px}.target{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin:10px 0}.target button{background:#17313d;color:#d8e8e9;border:1px solid #416170;border-radius:10px;min-width:0;padding:8px 3px;display:grid;gap:3px;place-items:center}.target button.active{background:#255448;border-color:#8bffc7}.target button span:first-child{font-size:19px;color:var(--mint)}.target button span:last-child{font-size:9px;line-height:1.25;text-align:center}.chain-settings{display:grid;grid-template-columns:1fr 1fr;gap:12px}.chain-setting{background:#142b37;border:1px solid #304e5a;border-radius:11px;padding:12px}.setting-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.caps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:9px}.caps .cap{display:flex;justify-content:space-between;gap:8px;padding:6px 7px;font-size:11px;border:1px solid #305061;background:#0f2530;border-radius:7px}.caps small{color:var(--soft)}.flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;align-items:stretch}.node{position:relative;background:#152f3c;border:1px solid #375765;border-radius:12px;padding:13px;min-width:0;min-height:108px}.node:not(:last-child)::after{content:'→';position:absolute;right:-12px;top:38%;color:#78b1b2;font-size:19px;font-weight:800;z-index:1;text-shadow:0 0 5px #08131b}.node.warn{border-color:#d7a860;background:#3f3227}.node.good{border-color:#579f84;background:#173c36}.node span{font-size:10px;color:#b6d0d1;display:block}.node b{font-size:17px;color:#e9f9f5;display:block;margin:12px 0 8px;overflow-wrap:anywhere}.node small{font-size:10px;color:#a6c4c5;line-height:1.4;display:block}.diagnosis{display:flex;gap:12px;align-items:flex-start;background:#322c26;border:1px solid #96764d;border-radius:11px;padding:13px;margin-top:12px}.diagnosis.good{background:#16382f;border-color:#528d73}.diagnosis .symbol{font-size:22px;color:var(--amber)}.diagnosis.good .symbol{color:var(--mint)}.diagnosis strong{font-size:13px}.diagnosis p{font-size:11px;color:#e5d7c3;line-height:1.5;margin:6px 0 0}.diagnosis.good p{color:#bce4d4}.ledger{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}.ledger .pill{font-size:11px;border:1px solid #34515b;border-radius:8px;padding:8px;background:#102732}.pill strong{color:#9fecce}.chain-results{display:flex;justify-content:space-between;align-items:center;border:1px solid #3c5e68;background:#12313d;border-radius:11px;padding:11px 13px;margin-top:11px;gap:10px}.chain-results b{font-size:18px;color:var(--mint)}.chain-results small{font-size:11px;color:#afcbd0}.barrow{margin:10px 0}.barrow .bar-title{display:flex;justify-content:space-between;font-size:11px;gap:10px}.barrow .track{height:7px;border-radius:10px;background:#28404c;overflow:hidden;margin-top:6px}.barrow .track div{height:100%;border-radius:10px;background:linear-gradient(90deg,#69d2b0,#8dddef)}.barrow.warn .track div{background:linear-gradient(90deg,#bc9052,#ffc37f)}.optgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.option{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px;border:1px solid #345562;border-radius:9px;font-size:12px}.option strong{color:var(--mint)}.resultbox{background:#183d3d;border:1px solid #538a75;border-radius:12px;padding:13px;margin:10px 0}.resultbox .gain{color:var(--mint);font-weight:850;font-size:23px}.resultbox .row{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid #ffffff19;padding:7px 0;font-size:12px}.resultbox .row:last-child{border:0}.actionbar{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.table{width:100%;border-collapse:collapse;font-size:12px}.table th,.table td{padding:9px 7px;text-align:left;border-bottom:1px solid #314b58}.table td:last-child,.table th:last-child{text-align:right}.table .highlight{color:var(--mint)}.modal{max-width:790px;width:calc(100% - 26px);max-height:90vh;overflow:auto;color:var(--text);background:#102531;border:1px solid #618278;border-radius:15px;padding:20px;box-shadow:0 22px 90px #000a}.modal::backdrop{background:#000b}.modal .close{float:right}.footer{margin-top:15px;color:#86a6aa;font-size:11px;line-height:1.7}.notice{background:#322d26;border:1px solid #796144;padding:9px 11px;border-radius:9px;color:#ecd1a4;font-size:11px;line-height:1.5;margin:9px 0}.toast{position:fixed;right:19px;bottom:19px;background:#265847;color:white;border:1px solid #79c9a1;padding:12px 18px;border-radius:11px;z-index:90;box-shadow:0 9px 50px #0009}.hidden{display:none!important}.sr{position:absolute;left:-99999px}input[type=checkbox]{accent-color:var(--mint)}.tiny{font-size:10px}.horizon{display:grid;grid-template-columns:1fr 1fr;gap:9px}.horizon button{min-height:48px}.slab-detail{background:#193140;border:1px solid #3e5c67;padding:10px;border-radius:8px;font-size:11px}.slab-detail b{color:var(--mint)}@media(max-width:1100px){.summary{grid-template-columns:repeat(3,1fr)}.target{grid-template-columns:repeat(4,1fr)}.flow{grid-template-columns:repeat(2,1fr)}.node:nth-child(2)::after{display:none}}@media(max-width:760px){.shell{padding:12px}.top{align-items:flex-start}.top-right{gap:6px}.brand h1{font-size:18px}.brand .ey{font-size:8px}.logo{width:42px;height:42px}.banner{padding:18px;grid-template-columns:1fr}.banner h2{font-size:21px}.hero-number{text-align:left}.hero-number .amount{font-size:31px}.summary{grid-template-columns:repeat(2,1fr)}.metric b{font-size:20px}.metric.main{grid-column:1/-1}.layout{grid-template-columns:1fr}.side{order:2}.content{order:1}.chain-settings{grid-template-columns:1fr}.target{grid-template-columns:repeat(4,1fr)}.node b{font-size:15px}.top-right .smallbtn{padding:6px 8px}.chain-tabs{overflow:auto;flex-wrap:nowrap;padding-bottom:3px}.chain-tabs button{flex-shrink:0}.optgrid{grid-template-columns:1fr}}

/* v2.2 inventory: progressive disclosure and compact editable allocations */
#inventoryCard .head{align-items:flex-start}#inventoryCard .inv-buttons{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
#inventoryCard .inv-summary,#autoDesignCard .inv-summary{display:flex;flex-wrap:wrap;gap:7px;margin:9px 0}
#inventoryCard .inv-summary span,#autoDesignCard .inv-summary span{background:#1a3542;border:1px solid #32515c;border-radius:7px;padding:7px;font-size:12px}
#inventoryCard .inv-grid,#autoDesignCard .inv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin:9px 0}
#inventoryCard .inv-line,#autoDesignCard .inv-line{display:flex;align-items:center;justify-content:space-between;background:#152e39;border:1px solid #2d4653;border-radius:7px;padding:6px 8px;font-size:12px;gap:6px;min-width:0}
#inventoryCard .inv-line span{min-width:0;overflow-wrap:anywhere}#inventoryCard .inv-line input,#inventoryCard .inv-table input{width:62px;min-width:0;background:#10232d;border:1px solid #436271;border-radius:5px;color:#f4fafa;padding:5px;text-align:right}
#inventoryCard .inv-unknown{background:#3b3025;border:1px solid #8b613c;border-radius:8px;padding:10px;margin-top:8px}
#inventoryCard .inv-unknown input{width:65px}#inventoryCard .inv-check{display:flex;gap:8px;align-items:center;margin:9px 0;font-size:12px}
#inventoryCard .inv-scroll{max-width:100%;overflow:auto}#inventoryCard .inv-table{border-collapse:collapse;width:100%;font-size:11px}#inventoryCard .inv-table td,#inventoryCard .inv-table th{border-bottom:1px solid #385363;padding:6px;white-space:nowrap}#inventoryCard .inv-table th{text-align:left}
#inventoryCard .fold summary{font-size:12px}#inventoryCard p.note,#autoDesignCard p.note{font-size:11px;line-height:1.5}
#autoDesignCard .inv-grid{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}#autoDesignCard .inv-line{font-size:12px}
@media(max-width:700px){#inventoryCard .inv-grid{grid-template-columns:1fr}}

/* V2.2 — Always-visible production route, compact and independent of the editor. */
.shell{max-width:1790px}
.layout{grid-template-columns:minmax(265px,305px) minmax(0,1fr) minmax(280px,325px);grid-template-areas:"side content live";gap:14px}
.side{grid-area:side}.content{grid-area:content}.live{grid-area:live;position:sticky;top:12px;align-self:start;min-width:0;max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.live .live-card{padding:14px}.live .head{align-items:flex-start;flex-wrap:wrap}.live .head h2{font-size:15px}
.live .flow{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.live .node{min-height:90px;padding:10px}
.live .node:not(:last-child)::after{display:none}.live .node b{font-size:15px;margin:8px 0 5px}.live .node small{font-size:10px}
.live .diagnosis{padding:10px;margin-top:9px;gap:9px}.live .diagnosis .symbol{font-size:18px}.live .diagnosis strong{font-size:12px}
.live .diagnosis p{margin-top:4px}.live .ledger{gap:5px;margin-top:9px}.live .ledger .pill{font-size:10px;padding:6px}
.live .fold{margin-top:8px}.live .live-title{font-size:11px;color:var(--muted)}
.live .live-estimate{margin:8px 0;padding:10px;border:1px solid #3b6370;background:#122d39;border-radius:9px;display:grid;gap:6px}
.live .live-estimate .line-row{display:flex;justify-content:space-between;gap:8px;align-items:baseline;font-size:11px}
.live .live-estimate b{font-size:13px;color:var(--mint)}.live .live-hint{font-size:10px;color:var(--muted);line-height:1.4;margin:6px 0 0}
.live .live-fixes{font-size:11px;margin:6px 0 0;padding-left:18px;line-height:1.5}.live .live-fixes li+li{margin-top:4px}
.live .live-fixes li{color:#e5d7c3}.live .live-fixes.good li{color:#c5e8d8}
.transport-note{font-size:11px;color:#abd9d0;margin-top:10px;padding:9px;border-radius:8px;background:#14372f;border:1px solid #346955;line-height:1.5}
.transport-manual{padding:11px;border:1px solid #416477;border-radius:9px;background:#122b39;margin:12px 0}
.transport-manual .adjust{margin:5px 0}.transport-manual .step{flex-shrink:0}
@media(max-width:1180px){.layout{grid-template-columns:minmax(230px,285px) minmax(0,1fr);grid-template-areas:"side live" "side content"}.live{position:sticky;top:10px;max-height:none;overflow:visible}.live .live-card{padding:14px}.live .flow{grid-template-columns:repeat(4,minmax(0,1fr))}.live .node{min-height:74px}.live .node b{font-size:14px}}
@media(max-width:820px){.layout{grid-template-columns:minmax(0,1fr);grid-template-areas:"live" "content" "side"}.live{position:static;max-height:none;overflow:visible}.live .flow{grid-template-columns:repeat(2,minmax(0,1fr))}.shell{padding:12px}.side{order:initial}.content{order:initial}}
.weight-help{font-size:11px;line-height:1.5;margin:9px 0 0;color:var(--muted)}
#autoDesignCard{border-color:#466e70;background:linear-gradient(160deg,#122d38,#10232f 65%)}
.auto-products{display:flex;gap:7px;flex-wrap:wrap;margin:11px 0}.auto-products button{padding:8px 10px;border:1px solid var(--border);background:#183543;color:var(--text);border-radius:9px;font-size:12px;font-weight:700}.auto-products button.active{background:#74e9b5;color:#082a24;border-color:#a8ffdf}
.auto-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}.auto-summary>div{background:#102631;border:1px solid var(--border);border-radius:9px;padding:10px;min-width:0}.auto-summary small{display:block;color:var(--muted);font-size:11px}.auto-summary b{display:block;margin-top:4px;font-size:16px;overflow-wrap:anywhere}
.auto-table{width:100%;border-collapse:collapse;font-size:12px;margin:10px 0}.auto-table th,.auto-table td{padding:9px 6px;border-bottom:1px solid var(--border);text-align:right;font-variant-numeric:tabular-nums}.auto-table th:first-child,.auto-table td:first-child{text-align:left}.auto-table th{color:var(--muted);font-size:11px}.auto-overview tr{cursor:pointer}.auto-overview tr.selected{background:#204d45}.auto-overview tr:hover{background:#173b3e}.auto-table .need{color:var(--amber)}.auto-table .spare{color:var(--cyan)}.auto-note{font-size:11px;line-height:1.5;color:var(--muted)}.auto-status{border:1px solid #376c57;border-radius:9px;padding:9px 12px;background:#14352e;color:#baefd4;font-size:12px}
@media(max-width:820px){.auto-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.auto-table{font-size:11px}.auto-table th,.auto-table td{padding:7px 3px}}
.fd-graph{display:flex;gap:7px;align-items:stretch;overflow-x:auto;padding:13px 1px 15px;scrollbar-width:thin}.fd-node{flex:0 0 138px;min-height:140px;padding:11px;border:1px solid #466772;border-radius:11px;background:#17323f;display:flex;flex-direction:column;justify-content:space-between;gap:8px}.fd-node b{font-size:13px}.fd-node small{font-size:11px;color:var(--muted)}.fd-node.source{border-color:#478b77;background:#173a34}.fd-node.sale{border-color:#478b77;background:#183e35}.fd-arrow{display:grid;place-items:center;color:var(--mint);flex:0 0 13px;font-weight:bold}.fd-controls{display:flex;align-items:center;justify-content:space-between;gap:4px}.fd-controls button{background:#244957;border:1px solid #4b7380;color:white;border-radius:7px;width:26px;height:25px}.fd-controls strong{font-size:15px}.fd-alert{background:#273b31;color:#c0e8d2;border-radius:8px;padding:10px;font-size:11px}

/* Factory Designer V2.6 — standalone offline workspace */
#designerCard.fd-fullscreen{position:fixed;inset:10px;max-height:calc(100vh - 20px);overflow:auto;z-index:100;border:2px solid #6cbaa6;box-shadow:0 0 0 100vmax #000b,0 22px 60px #0008}#designerCard.fd-fullscreen .fd-viewport{height:max(390px,calc(100vh - 360px))}#designerCard{scroll-margin-top:12px;border-color:#4a8077;background:linear-gradient(150deg,#11313b,#10232f 60%)}
.fd-work-toolbar{display:flex;gap:8px;align-items:end;flex-wrap:wrap;margin:12px 0}.fd-work-toolbar label{font-size:11px;color:var(--muted);display:flex;gap:5px;flex-direction:column}.fd-work-toolbar select{color:var(--text);background:#183745;border:1px solid #507383;padding:7px;border-radius:7px;max-width:175px}.fd-work-toolbar .btn{padding:8px 9px}.fd-work-toolbar .fd-snap{flex-direction:row;align-items:center;margin-bottom:8px}.fd-zoom{font-size:12px;font-weight:800;color:var(--mint);min-width:36px;text-align:center;margin-bottom:8px}
.fd-work-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0}.fd-work-stats>div{padding:10px;background:#102b35;border:1px solid #2c5861;border-radius:9px;min-width:0}.fd-work-stats small{font-size:10px;color:var(--muted);display:block}.fd-work-stats b{font-size:13px;display:block;margin-top:5px;overflow-wrap:anywhere}.fd-work-stats b.good{color:var(--mint)}.fd-work-stats b.warn{color:var(--amber)}
.fd-help,.fd-disclaimer{font-size:11px;color:var(--muted);line-height:1.55;margin:9px 0}.fd-disclaimer{padding:10px;background:#13313c;border:1px solid #315766;border-radius:8px}.fd-message{font-size:11px;min-height:22px;color:#9cdbcb;margin:6px 0}.fd-message.warn{color:var(--amber)}
.fd-viewport{width:100%;height:490px;overflow:auto;overscroll-behavior:contain;border:1px solid #386474;border-radius:12px;background:#0a1823;position:relative}.fd-spacer{position:relative}.fd-scene{position:relative;transform-origin:0 0;background-color:#0a1c27}.fd-scene.snap{background-image:linear-gradient(#38546040 1px,transparent 1px),linear-gradient(90deg,#38546040 1px,transparent 1px);background-size:20px 20px}.fd-paths{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:1;pointer-events:none}.fd-path{fill:none;stroke:#69d6af;stroke-width:2.3px;pointer-events:stroke;cursor:pointer}.fd-path.water{stroke:#7ad4ef;stroke-dasharray:6 4}.fd-path.power{stroke:#eac17d;stroke-dasharray:4 6;stroke-width:1.6px}.fd-path.chosen{stroke-width:5;filter:drop-shadow(0 0 4px #d2f9ec)}
.fd-work-node{position:absolute;z-index:2;width:174px;height:118px;border:1px solid #568c94;background:#1a3948;border-radius:11px;box-shadow:0 7px 17px #0006;padding:8px 10px;color:var(--text)}.fd-work-node.source{background:#164037;border-color:#44ac80}.fd-work-node.sale{background:#173e49;border-color:#65c9ac}.fd-work-node.generator{background:#423624;border-color:#ceab74}.fd-work-node.water{background:#173a4c;border-color:#5aa9ce}.fd-work-node.chosen{outline:2px solid #e5b96f;outline-offset:2px}.fd-work-node.linkfrom{outline:2px solid #6aecbf;outline-offset:3px}.fd-grip{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:850;min-height:28px;cursor:grab;touch-action:none;user-select:none;padding:3px 2px}.fd-grip:active{cursor:grabbing}.fd-grip-icon{color:var(--mint);font-size:16px}.fd-node-rate{font-size:10px;color:#afd7d2;min-height:27px}.fd-node-count{display:flex;align-items:center;justify-content:space-between;gap:5px}.fd-node-count button,.fd-edge-row button{border:1px solid #5b7f88;background:#29505c;color:white;border-radius:6px;cursor:pointer;min-width:25px;min-height:25px}.fd-node-count b{font-size:14px}.fd-node-count button:disabled{opacity:.35;cursor:not-allowed}.fd-node-count button.fd-trash{background:#523740;color:#ffd4d4}
.fd-work-node.source .fd-in,.fd-work-node.sale .fd-out,.fd-work-node.generator .fd-in{display:none}.fd-port{position:absolute;top:49%;border:1px solid #76bbac;background:#1d6254;color:#d6fff1;border-radius:50%;width:20px;height:20px;line-height:14px;font-size:17px;cursor:crosshair;z-index:4;padding:0}.fd-out{right:-11px}.fd-in{left:-11px}.fd-work-node.generator .fd-port{background:#7f5e2c;border-color:#eac17d}.fd-work-node.water .fd-port{background:#316685;border-color:#7ad4ef}
.fd-edge-list{border:1px solid #315665;border-radius:9px;margin-top:12px;padding:9px;font-size:11px}.fd-edge-list summary{cursor:pointer;font-weight:700}.fd-edge-content{margin-top:8px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.fd-edge-row{display:flex;align-items:center;justify-content:space-between;border:1px solid #325665;border-radius:7px;padding:5px;gap:8px}.fd-edge-row small{color:var(--muted)}
@media(max-width:950px){.fd-work-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.fd-edge-content{grid-template-columns:1fr}.fd-viewport{height:440px}.fd-work-toolbar select{max-width:145px}}
@media(max-width:500px){.fd-work-toolbar{gap:6px}.fd-work-toolbar label{max-width:48%}.fd-work-toolbar select{max-width:134px}.fd-viewport{height:370px}}

/* Factory Designer V2.6: dedicated workspace, not an inset dashboard widget. */
.shell.fd-designer-mode{max-width:none;padding:12px 18px 22px}
.fd-designer-mode>.banner,.fd-designer-mode>.summary,.fd-designer-mode>.footer{display:none}
.fd-page-nav{display:flex;gap:3px;padding:4px;background:#102b37;border:1px solid #375d6a;border-radius:11px}
.fd-page-nav button{border:0;background:transparent;color:#b7d2d6;padding:10px 17px;font-weight:800;border-radius:8px;cursor:pointer}
.fd-page-nav button.active{background:#72e8b3;color:#092a25}
.fd-designer-page[hidden],.layout[hidden]{display:none!important}
.fd-designer-page{min-height:calc(100dvh - 100px)}
.fd-designer-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 4px}
.fd-designer-heading h2{margin:4px 0;font-size:24px;letter-spacing:-.5px}.fd-designer-heading p{margin:0;color:#acc9ce;font-size:12px}
.fd-page-columns{display:grid;grid-template-columns:210px minmax(0,1fr) 302px;gap:12px;align-items:start;min-width:0}
.fd-page-columns .card{box-shadow:none}.fd-palette,.fd-right{min-width:0}.fd-palette{position:sticky;top:10px;max-height:calc(100dvh - 24px);overflow:auto;padding:13px}
.fd-right{position:sticky;top:10px;max-height:calc(100dvh - 24px);overflow-y:auto;display:flex;flex-direction:column;gap:10px;scrollbar-width:thin}
.fd-right .live{display:block;position:static;max-height:none;overflow:visible;width:100%}
.fd-right .fd-inspector{padding:12px}.fd-right .live-card{padding:12px}
#fdMainColumn{min-width:0}#fdMainColumn #designerCard{padding:12px;min-width:0;overflow:hidden;margin:0}
.fd-designer-mode .fd-viewport{height:max(560px,calc(100dvh - 330px));min-height:520px;overscroll-behavior:contain}
.fd-designer-mode .fd-work-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.fd-side-title{font-size:12px;color:#8ff0c5;font-weight:850;padding:6px 0 9px;border-bottom:1px solid #385763;margin:5px 0 8px}
.fd-side-hint{font-size:11px;color:#b6cbd0;line-height:1.55;margin:7px 0 13px}
.fd-harvest-row{display:grid;grid-template-columns:minmax(0,1fr) 24px 22px 24px;gap:3px;align-items:center;margin:7px 0;font-size:11px}
.fd-harvest-row button,.fd-inspect-qty button{border:1px solid #53747d;background:#244957;color:#e7f7f2;border-radius:6px;height:26px;cursor:pointer}
.fd-harvest-row b,.fd-inspect-qty b{text-align:center;font-size:12px}
.fd-harvest-summary{display:flex;justify-content:space-between;gap:4px;align-items:center;font-size:11px;color:#b7cbd0;padding:9px 0 15px}.fd-harvest-summary strong{color:#8cf6bf}
.fd-palette-btn{display:block;width:100%;border:1px solid #365a67;background:#163541;color:#d8f3eb;border-radius:8px;padding:9px;margin:6px 0;text-align:left;font-size:11px;cursor:pointer}.fd-palette-btn span{color:#72e8b3;font-size:15px}
.fd-inspect-line{font-size:11px;padding:8px 0;border-bottom:1px solid #345361;line-height:1.5}.fd-inspect-line.emphasis{color:#86e7b6;font-weight:800}
.fd-inspect-qty{display:grid;grid-template-columns:1fr 28px 28px 28px;align-items:center;gap:5px;margin:12px 0;font-size:11px}
.fd-work-node{width:208px;height:174px;padding:9px 11px}.fd-grip{min-height:25px}
.fd-node-rate{display:grid;gap:3px;font-size:10px;min-height:61px;line-height:1.35;overflow:hidden;overflow-wrap:anywhere}.fd-node-extra{color:#91b6c1;font-size:9px}
.fd-harvest-flyout{position:absolute;z-index:15;top:calc(100% + 7px);left:0;width:240px;background:#15333f;border:1px solid #63bb9a;border-radius:10px;box-shadow:0 18px 34px #000b;padding:11px}.fd-harvest-flyout>b{display:block;font-size:12px;color:#9cf4cb;padding-bottom:5px}.fd-harvest-flyout>small{font-size:10px;color:#9bc6bf}.fd-source-edit{border:1px solid #56a685;background:#245849;border-radius:5px;color:#c5ffe0;font-size:10px;cursor:pointer;padding:4px 5px;margin-bottom:2px}
.fd-node-count{padding-top:3px}.fd-edge-label{pointer-events:none}.fd-edge-label rect{fill:#0b2630;stroke:#356879;stroke-width:1;opacity:.94}.fd-edge-label text{fill:#d9fcf0;font-size:10px;font-weight:700}
.fd-context-menu{position:fixed;z-index:99999;background:#142e3c;border:1px solid #65af9c;border-radius:11px;min-width:205px;max-height:70vh;overflow:auto;padding:8px;box-shadow:0 15px 55px #000a}
.fd-context-menu[hidden]{display:none!important}.fd-context-title{font-size:11px;font-weight:850;color:#8fe7c1;padding:8px}
.fd-context-menu button{display:block;width:100%;border:0;border-radius:6px;background:transparent;color:#e8f4f3;text-align:left;padding:8px;font-size:12px;cursor:pointer}
.fd-context-menu button:hover{background:#2c5660}.fd-context-sep{border-top:1px solid #3d6370;margin:6px 0}
.fd-work-stats>div:last-child .btn{margin-top:7px}
@media(max-width:1170px){.fd-page-columns{grid-template-columns:180px minmax(0,1fr) 270px}.fd-palette{padding:9px}}
@media(max-width:930px){.fd-page-columns{grid-template-columns:160px minmax(0,1fr)}.fd-right{grid-column:1/-1;position:static;max-height:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.fd-right .live{grid-column:auto}.fd-designer-mode .fd-viewport{height:560px}.fd-page-nav button{padding:7px 10px}}
@media(max-width:620px){.shell.fd-designer-mode{padding:8px}.fd-page-columns{grid-template-columns:minmax(0,1fr)}.fd-palette{position:static;max-height:none}.fd-right{display:flex}.fd-designer-mode .fd-viewport{min-height:450px;height:60dvh}.fd-designer-mode .fd-work-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.fd-designer-page .fd-designer-heading h2{font-size:19px}.fd-page-nav button{font-size:11px}}

/* V2.6 — separate allocation from transport, accessible help and top-layer editor */
.allocation-setting{border-color:#457d73;background:linear-gradient(145deg,#123c3a,#142b38)}
.weight-info{margin-top:10px;border:1px solid #476c72;border-radius:8px;padding:7px 10px;font-size:11px;color:#d0e6e0}
.weight-info summary{cursor:pointer;color:#8eeac1;font-weight:750;line-height:1.55}
.weight-info p{line-height:1.55;margin:8px 0 2px;color:#bdd5d2}
.fd-harvest-flyout.fd-portal{position:fixed;z-index:2147483000;top:0;left:0;width:min(290px,calc(100vw - 20px));max-height:min(420px,calc(100dvh - 18px));overflow-y:auto;transform:none;box-shadow:0 20px 64px #000c;border:1px solid #75e3b6}
.fd-portal-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.fd-portal-head button{border:1px solid #53747d;background:#244957;color:#effffa;border-radius:6px;min-width:29px;min-height:29px}
.fd-work-node.chosen{z-index:8}
.fd-designer-mode .fd-right{scrollbar-gutter:stable}
@media(max-width:930px){.fd-designer-mode .fd-right{max-height:none;overflow:visible}.fd-designer-mode #productionLive{position:sticky;top:8px;z-index:12}}


/* V2.8 additions only: all original V2.6 CSS above remains unchanged. */
#projectTag{max-width:135px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#v28ConveyorGuide .adjust{align-items:flex-start;gap:8px}#v28ConveyorGuide .adjust b{font-size:11px;text-align:right}#v28Projects{max-width:min(650px,95vw);width:100%;max-height:82dvh;overflow:auto;background:#122734;color:#eaf5ee;border:1px solid #5c8d84;border-radius:12px;box-shadow:0 25px 80px #0009}#v28Projects::backdrop{background:#000a}#v28Projects .v28-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}#v28Projects input{min-width:150px;flex:1;background:#10232f;color:#ecf8f4;border:1px solid #426b72;padding:10px;border-radius:8px}#v28Projects .v28-save-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.v28-project{display:flex;gap:10px;align-items:center;justify-content:space-between;border-top:1px solid #355765;padding:10px 0}.v28-project small{display:block;color:#a8c0c6}.v28-project>div{display:flex;flex-wrap:wrap;gap:5px}@media(max-width:700px){#projectTag{max-width:105px}.v28-project{align-items:stretch;flex-direction:column}}
/* V2.9 RC1 — public UX shell. Original V2.6 CSS remains untouched above. */
.v29-factory-bar{position:sticky;top:0;z-index:45;display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:-7px 0 15px;padding:9px 10px;border:1px solid #315867;background:#0b1720f2;backdrop-filter:blur(14px);border-radius:12px;box-shadow:0 10px 30px #0004}.v29-factory-bar button{border:1px solid #345d67;background:#102a35;color:var(--text);border-radius:9px;padding:8px 10px;font-weight:800;font-size:12px}.v29-factory-bar button:hover{border-color:var(--mint)}.v29-factory-bar .v29-main{background:#163d3c;border-color:#4a9e86;color:#c8ffeb}.v29-factory-bar .v29-upgrades.warn{border-color:#c59655;background:#3b2d1f;color:#ffe1a6}.v29-factory-bar .v29-upgrades.good{border-color:#52b58b;background:#153b31}.v29-import{margin-left:auto}.v29-dirty,.v29-net{font-size:11px;font-weight:800;white-space:nowrap;padding:5px 7px;border-radius:999px}.v29-dirty.good,.v29-net.ready{color:#8de2bb}.v29-dirty.warn,.v29-net.error{color:#ffd28e}.v29-net.loading{color:#8ed4f1}
.v29-drawer,.v29-config-dialog{width:min(780px,96vw);max-height:90dvh;overflow:auto;background:#102630;color:var(--text);border:1px solid #4b7479;border-radius:16px;box-shadow:0 28px 100px #000b;padding:18px}.v29-drawer{margin-right:2vw;margin-left:auto;width:min(620px,96vw);height:96dvh;max-height:96dvh}.v29-drawer::backdrop,.v29-config-dialog::backdrop{background:#000b;backdrop-filter:blur(3px)}.v29-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;border-bottom:1px solid #31505a;padding-bottom:12px;margin-bottom:14px}.v29-dialog-head h2{margin:3px 0}.v29-dialog-head p{margin:2px 0;color:var(--muted);font-size:12px}.v29-dialog-head>button{font-size:20px;min-width:42px}.v29-upgrade-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.v29-drawer #upgradesFold{border:0;background:transparent}.v29-drawer #upgradesFold>summary{display:none}.v29-drawer #upgradesFold>.in{padding:0}.v29-drawer .rank{padding:12px 0;border-bottom:1px solid #294953}.v29-drawer input[type=range]{width:100%}
.v29-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.v29-config-grid section{border:1px solid #31505a;background:#0d2029;border-radius:12px;padding:12px}.v29-config-grid h3{margin:0 0 10px;color:#d8fff0}.v29-step{display:grid;grid-template-columns:minmax(110px,1fr) 34px 62px 34px;gap:5px;align-items:center;margin:6px 0}.v29-step input,.v29-field select{width:100%;background:#0b1b23;border:1px solid #3b6670;color:var(--text);border-radius:7px;padding:7px}.v29-step button{background:#193943;border:1px solid #426874;color:var(--text);border-radius:7px;height:34px}.v29-field{display:grid;gap:5px;margin:8px 0 12px}.v29-field span{font-size:11px;color:var(--muted);font-weight:800}
.v29-top-more{position:relative}.v29-top-more>summary{list-style:none}.v29-top-more>summary::-webkit-details-marker{display:none}.v29-top-more-menu{position:absolute;right:0;top:calc(100% + 7px);z-index:80;min-width:190px;background:#102630;border:1px solid #3c626b;border-radius:10px;padding:7px;box-shadow:0 18px 45px #0008;display:grid;gap:5px}.v29-top-more:not([open]) .v29-top-more-menu{display:none}.v29-top-more-menu .btn{width:100%;text-align:left}.v29-designer-more{position:relative;margin-left:auto}.v29-designer-more>summary{list-style:none}.v29-designer-more>summary::-webkit-details-marker{display:none}.v29-designer-more-body{position:absolute;right:0;top:calc(100% + 6px);z-index:35;min-width:210px;background:#102630;border:1px solid #3b6570;border-radius:10px;padding:7px;box-shadow:0 16px 45px #0009;display:grid;gap:5px}.v29-designer-more:not([open]) .v29-designer-more-body{display:none}.v29-designer-more-body>*{width:100%;margin:0}.v29-touch-note{font-size:11px;color:var(--cyan);margin:4px 0 8px}
@media(max-width:900px){.v29-import{margin-left:0}.v29-config-grid{grid-template-columns:1fr}.v29-factory-bar{position:relative;top:auto}.v29-factory-bar .v29-chip{flex:1 1 auto}.v29-net,.v29-dirty{order:20}}@media(max-width:520px){.v29-factory-bar{gap:5px;padding:7px}.v29-factory-bar button{font-size:11px;padding:7px 8px}.v29-factory-bar .v29-main,.v29-factory-bar .v29-upgrades{flex:1 1 44%}.v29-import{display:none}.v29-drawer{margin:2dvh auto;width:96vw;height:96dvh}.v29-step{grid-template-columns:minmax(92px,1fr) 32px 54px 32px}.v29-top-more-menu{position:fixed;right:10px;top:70px}}

/* V2.9 RC2 — complete upgrades catalog */
.v29-upgrade-search{position:sticky;top:-18px;z-index:3;background:#102630;padding:8px 0 10px;display:grid;gap:6px}.v29-upgrade-search input{width:100%;background:#0a1c24;color:var(--text);border:1px solid #46707a;border-radius:9px;padding:10px 12px}.v29-upgrade-search span{font-size:11px;color:var(--muted);font-weight:700}.v29-upgrade-group{border:1px solid #2e5059;border-radius:11px;margin:9px 0;background:#0c2028}.v29-upgrade-group>summary{cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-weight:900;color:#a9e8d4;list-style:none}.v29-upgrade-group>summary::-webkit-details-marker{display:none}.v29-upgrade-group>summary b{font-size:11px;background:#17333c;border:1px solid #365d66;border-radius:999px;padding:2px 7px}.v29-upgrade-group-body{padding:0 11px 7px}.v29-upgrade-row{padding:12px 0;border-top:1px solid #27454e}.v29-upgrade-row.relevant{background:linear-gradient(90deg,#16382d88,transparent);margin:0 -6px;padding-left:6px;padding-right:6px;border-radius:7px}.v29-upgrade-title{display:flex;justify-content:space-between;gap:10px;align-items:center;font-weight:800}.v29-upgrade-title b{white-space:nowrap;color:#d8fff0}.v29-upgrade-row input[type=range]{width:100%;margin:8px 0 5px}.v29-upgrade-meta{display:flex;gap:8px 12px;flex-wrap:wrap;font-size:10px;color:var(--muted)}.v29-relevant{color:#79edb6;font-weight:900}.v29-unlocks-note,.v29-presets{margin-top:12px;border-top:1px solid #31505a;padding-top:9px}.v29-unlocks-note summary,.v29-presets summary{cursor:pointer;font-weight:800}.v29-unlocks-note p{color:var(--muted);font-size:11px;line-height:1.5}.v29-presets .v29-upgrade-actions{margin-top:9px}

/* Public legal / unofficial status */
.unofficial-badge{display:inline-flex;margin-top:5px;padding:3px 8px;border:1px solid #4c7b80;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;color:#b9ddd7;background:#102b32}
.legal-links{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 14px;margin-top:9px}
.legal-links a{color:var(--cyan);text-decoration:none;font-weight:800}.legal-links a:hover{text-decoration:underline}
.planner-generic-icon{background-image:none!important;display:grid;place-items:center}
.legal-page{max-width:980px;margin:32px auto;padding:0 20px 48px}.legal-page .legal-nav{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}
.legal-page .legal-card{background:#102630;border:1px solid #31545e;border-radius:14px;padding:20px;margin:14px 0}
.legal-page h1,.legal-page h2,.legal-page h3{margin-top:0}.legal-page p,.legal-page li{line-height:1.62}
.legal-page .legal-muted{color:var(--muted)}.legal-page a{color:var(--cyan)}
.legal-page .legal-lang{border-top:1px solid #31545e;margin-top:24px;padding-top:24px}
