:root{--bg: #1a1814;--panel: #25211b;--panel-2: #2e2922;--border: #3a342b;--text: #ece6d8;--muted: #9a9183;--accent: #d39a4a;--good: #7bb274;--bad: #c97a6c;--focus: #f1c27d}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.4}#app{display:flex;flex-direction:column;min-height:100vh}.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:14px;padding:8px 14px;border-bottom:1px solid var(--border);background:var(--panel);backdrop-filter:blur(4px)}.topbar-title{font-size:14px;font-weight:600;letter-spacing:.4px;color:var(--accent);white-space:nowrap;flex:0 0 auto}.topbar-timebar{flex:1 1 auto;min-width:0}.topbar-actions{display:flex;align-items:center;gap:4px;flex:0 0 auto}.topbar-icon{background:var(--panel-2);border:1px solid var(--border);color:var(--text);width:32px;height:32px;border-radius:6px;cursor:pointer;font-size:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:transform 60ms ease,background-color 60ms ease,border-color 60ms ease,color 60ms ease}.topbar-icon:hover{border-color:var(--accent);color:var(--accent)}.topbar-icon:active{transform:translateY(1px)}.topbar-menu{position:relative}.topbar-menu>summary{list-style:none}.topbar-menu>summary::-webkit-details-marker{display:none}.topbar-menu-items{position:absolute;top:calc(100% + 4px);right:0;min-width:180px;background:var(--panel);border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px #00000073;padding:4px;display:flex;flex-direction:column;gap:2px;z-index:60}.menu-item{background:transparent;border:0;color:var(--text);text-align:left;padding:6px 8px;border-radius:4px;cursor:pointer;font-size:13px}.menu-item:hover{background:var(--panel-2)}.menu-item.danger:hover{background:var(--bad);color:var(--bg)}.app-shell{flex:1;display:grid;grid-template-columns:minmax(240px,280px) minmax(0,1fr);gap:12px;padding:12px;align-items:start}.rail{display:flex;flex-direction:column;gap:12px;min-width:0;position:sticky;top:56px;max-height:calc(100vh - 68px);overflow-y:auto}.main-area{display:flex;flex-direction:column;gap:0;min-width:0}.tab-strip{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:12px}.tab{background:transparent;border:1px solid transparent;border-bottom:none;color:var(--muted);padding:8px 14px;border-radius:6px 6px 0 0;cursor:pointer;font-size:13px;display:inline-flex;align-items:center;gap:6px;margin-bottom:-1px;transition:color 60ms ease,background-color 60ms ease,border-color 60ms ease}.tab:hover{color:var(--text);background:var(--panel-2)}.tab.active{color:var(--accent);background:var(--panel);border-color:var(--border);border-bottom-color:var(--panel)}.tab-icon{font-size:15px;line-height:1}.tab-pane{display:none}.tab-pane.active{display:block}@media (max-width: 900px){.app-shell{grid-template-columns:1fr}.rail{position:static;max-height:none}.topbar{flex-wrap:wrap}.topbar-timebar{order:3;flex-basis:100%}.tab-label{display:none}}.modal-backdrop{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100;padding:24px}.modal-backdrop.hidden{display:none}.modal-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:min(960px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column;box-shadow:0 10px 40px #00000080}.modal-head{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border)}.modal-head h2{margin:0;flex:1;font-size:14px;text-transform:uppercase;letter-spacing:1px;color:var(--accent)}.modal-close{background:transparent;border:1px solid var(--border);color:var(--muted);width:28px;height:28px;border-radius:4px;cursor:pointer;font-size:14px;line-height:1}.modal-close:hover{color:var(--bad);border-color:var(--bad)}.modal-body{padding:12px 14px 14px;overflow:auto;flex:1;min-height:0}.col{display:flex;flex-direction:column;gap:12px;min-width:0}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px}.panel h2{margin:0 0 10px;font-size:14px;text-transform:uppercase;letter-spacing:1px;color:var(--accent)}.panel h3{margin:8px 0 6px;font-size:13px;color:var(--text)}.panel h4{margin:12px 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:12px}.icon{display:inline-block;font-size:16px;line-height:1}.icon.big{font-size:22px}.icon.huge{font-size:36px}.timebar{display:flex;align-items:center;gap:16px;min-width:0}.tb-day{display:flex;align-items:baseline;gap:6px;flex:0 0 auto}.tb-day-num{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap}.tb-season{font-size:12px;color:var(--muted);white-space:nowrap}.tb-meter-block{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1 1 180px;max-width:280px}.tb-meter-head{display:flex;align-items:center;gap:6px;font-size:11px;line-height:1}.tb-meter-icon{font-size:13px;line-height:1}.tb-meter-label{color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.tb-meter-value{margin-left:auto;color:var(--text);font-variant-numeric:tabular-nums}.sleep-btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 12px;cursor:pointer;font-size:13px;white-space:nowrap;flex:0 0 auto;transition:transform 60ms ease,background-color 60ms ease,border-color 60ms ease,color 60ms ease}.sleep-btn:not(:disabled):hover{border-color:var(--accent);color:var(--accent)}.sleep-btn:not(:disabled):active{background:var(--accent);color:var(--bg);transform:translateY(1px)}.sleep-btn:disabled{cursor:not-allowed;opacity:.6}.meter{height:6px;background:var(--panel-2);border:1px solid var(--border);border-radius:3px;overflow:hidden}.meter-fill{height:100%;width:0%;transition:width .2s linear}.stamina-fill{background:var(--good)}.day-fill{background:var(--accent)}.pantry{margin-top:12px;padding-top:8px;border-top:1px dashed var(--border)}.pantry h3{margin:0;font-size:13px;color:var(--good)}.pantry-list{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.eat-btn{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:13px;transition:transform 60ms ease,background-color 60ms ease,border-color 60ms ease,color 60ms ease}.eat-btn:hover{border-color:var(--good);color:var(--good)}.eat-btn:active{background:var(--good);color:var(--bg);border-color:var(--good);transform:translateY(1px)}.eat-mins{color:var(--good);font-variant-numeric:tabular-nums;font-size:12px}.eat-btn:hover .eat-mins,.eat-btn:active .eat-mins{color:inherit}.eat-qty{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.gather-grid{display:grid;gap:4px}.gather-btn{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:14px;width:100%;transition:transform 60ms ease,background-color 60ms ease,border-color 60ms ease}.gather-btn .icon{font-size:18px;line-height:1}.gather-name{text-align:left;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gather-time{margin-left:auto;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.gather-drops{display:inline-flex;align-items:center;gap:2px;font-size:16px;line-height:1}.drop-icon.locked{opacity:.4;filter:grayscale(.6)}.gather-warns{display:inline-flex;align-items:center;gap:2px;font-size:14px;line-height:1}.warn-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;background:#ff50502e;border:1px solid var(--bad, #c66)}.warn-icon.prov-ok{background:transparent;border-color:var(--border);opacity:.75}.gather-btn:hover{border-color:var(--accent)}.gather-btn:active{background:var(--panel);border-color:var(--accent);transform:translateY(1px)}.gather-btn.flash{background:var(--accent);color:var(--bg);border-color:var(--accent)}.gather-btn:disabled{cursor:not-allowed;opacity:.7}.gather-progress{height:4px;background:var(--panel);border:1px solid var(--border);border-radius:0 0 3px 3px;overflow:hidden;margin-top:2px}.gather-progress-fill{height:100%;background:var(--accent);width:0%;transition:width .2s linear}.node-charges{padding:1px 6px;border-radius:999px;background:var(--panel);border:1px solid var(--border);color:var(--accent);font-size:12px;font-variant-numeric:tabular-nums}.explore-card .gather-btn{border-style:dashed}.explore-msg{margin:0 0 8px;padding:6px 8px;background:var(--panel-2);border-left:2px solid var(--accent);color:var(--text);font-style:italic}.inv-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:6px}.inv-head h2{margin:0}.inv-cap{color:var(--muted);font-variant-numeric:tabular-nums}.inv-cap.full{color:var(--bad)}.slot-grid{display:grid;grid-template-columns:repeat(var(--cols, 4),1fr);gap:4px}.slot{position:relative;aspect-ratio:1 / 1;background:var(--panel);border:1px solid var(--border);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color 60ms ease,background-color 60ms ease,transform 60ms ease;user-select:none}.slot:hover{border-color:var(--accent)}.slot:active{transform:translateY(1px)}.slot.empty{background:#0003;cursor:default;border-style:dashed}.slot.empty:hover{border-color:var(--border)}.slot .slot-icon{font-size:22px;line-height:1}.slot .slot-qty{position:absolute;right:2px;bottom:1px;font-size:11px;color:var(--accent);font-variant-numeric:tabular-nums;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.8)}.slot.floor{border-color:var(--bad);background:var(--panel-2)}.slot.floor .slot-qty{color:var(--bad)}body.trash-armed .slot:not(.empty){outline:1px dashed var(--bad);outline-offset:-1px}body.trash-armed .slot:not(.empty):hover{background:#c97a6c26}.trash-zone{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px dashed var(--border);border-radius:4px;color:var(--muted);background:var(--panel-2);cursor:pointer;user-select:none;transition:border-color 80ms ease,color 80ms ease,background-color 80ms ease,transform 80ms ease}body.trash-dragging .trash-zone{border-color:var(--bad);color:var(--bad)}.trash-zone.trash-over,.trash-zone.armed{border-style:solid;border-color:var(--bad);color:var(--bg);background:var(--bad)}.trash-zone.trash-over{transform:scale(1.05)}.trash-undo{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px dashed var(--border);border-radius:4px;background:var(--panel-2);color:var(--text);cursor:pointer}.trash-undo:hover{border-style:solid;border-color:var(--good, var(--text))}body.trash-armed .inv-row,body.trash-armed .chest-row{outline:1px dashed var(--bad);outline-offset:-1px}body.trash-armed .inv-row:hover,body.trash-armed .chest-row:hover{background:#c97a6c26}[draggable=true]{cursor:grab}[draggable=true]:active{cursor:grabbing}.floor-pile{margin-top:12px;padding-top:8px;border-top:1px dashed var(--border)}.floor-pile h3{margin:0;color:var(--bad);font-size:13px}.floor-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.floor-pickup-all{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:2px 8px;cursor:pointer}.floor-pickup-all:hover{border-color:var(--accent);color:var(--accent)}.floor-row{background:var(--panel-2)}.floor-row .qty{color:var(--bad)}.inventory-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}.inv-row{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;cursor:pointer}.inv-row:hover{background:var(--panel-2)}.inv-row .qty{color:var(--accent);font-variant-numeric:tabular-nums}.craft-group{margin-bottom:10px}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.recipe-card{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:8px;display:flex;flex-direction:column;gap:6px}.recipe-card.locked{opacity:.6}.recipe-craft-btn{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:4px;cursor:pointer;text-align:left;transition:transform 60ms ease,background-color 60ms ease,border-color 60ms ease,color 60ms ease}.recipe-craft-btn:not(:disabled):hover{border-color:var(--good)}.recipe-craft-btn:not(:disabled):active{background:var(--panel-2);border-color:var(--good);transform:translateY(1px)}.recipe-craft-btn.flash{background:var(--good);color:var(--bg);border-color:var(--good)}.recipe-craft-btn:disabled{cursor:not-allowed}.recipe-meta{display:flex;flex-wrap:wrap;gap:4px}.ingredient{display:inline-flex;align-items:center;gap:2px;padding:2px 6px;border-radius:999px;background:var(--panel);border:1px solid var(--border);font-size:12px;cursor:pointer}.ingredient.missing{color:var(--bad);border-color:var(--bad)}.ingredient:hover{border-color:var(--accent)}.tool-req{font-size:11px;padding:2px 6px;border-radius:4px;border:1px dashed var(--border);color:var(--muted)}.duration{font-size:11px;padding:2px 6px;border-radius:4px;border:1px solid var(--border);color:var(--muted);background:var(--panel)}.recipe-foot{text-align:right}.machine-slots{margin-left:6px;font-weight:400;letter-spacing:0;text-transform:none}.job-list{display:flex;flex-direction:column;gap:4px;margin-bottom:6px}.job-row{display:grid;grid-template-columns:22px minmax(80px,1fr) minmax(80px,2fr);align-items:center;gap:6px;padding:4px 6px;background:var(--panel-2);border:1px solid var(--border);border-radius:4px}.job-label{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-progress{height:6px;background:var(--panel);border:1px solid var(--border);border-radius:3px;overflow:hidden}.job-progress-fill{height:100%;background:var(--accent);width:0%;transition:width .2s linear}.room-build-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.build-room-btn{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:6px 10px;cursor:pointer;transition:transform 60ms ease,background-color 60ms ease,border-color 60ms ease,color 60ms ease}.build-room-btn:not(:disabled):hover{border-color:var(--accent);color:var(--accent)}.build-room-btn:not(:disabled):active{background:var(--accent);color:var(--bg);border-color:var(--accent);transform:translateY(1px)}.build-room-btn:disabled{cursor:not-allowed;opacity:.6}.room-list{display:flex;flex-direction:column;gap:8px}.room-card{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:8px;display:flex;flex-direction:column;gap:6px}.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px}.room-tile{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:6px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;text-align:center;transition:border-color 60ms ease,transform 60ms ease,background-color 60ms ease;min-height:88px}.room-tile:hover{border-color:var(--accent)}.room-tile:active{transform:translateY(1px)}.room-tile.selected{border-color:var(--accent);background:var(--panel-2);box-shadow:0 0 0 1px var(--accent) inset}.room-tile .tile-icon{font-size:28px;line-height:1;margin-top:4px}.room-tile .tile-name{color:var(--text);font-weight:600;font-size:12px;line-height:1.1}.room-tile .tile-status{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.5px}.room-tile.machine-tile.status-working{border-color:var(--good)}.room-tile.machine-tile.status-working .tile-status{color:var(--good)}.room-tile.machine-tile.status-output{border-color:var(--accent)}.room-tile.machine-tile.status-output .tile-status{color:var(--accent)}.room-tile .tile-progress{width:100%;margin-top:2px}.cell-detail{background:var(--panel);border:1px solid var(--accent);border-radius:6px;padding:10px;display:flex;flex-direction:column;gap:8px}.detail-head{display:flex;align-items:center;gap:8px}.detail-head .detail-title{flex:1;font-weight:600;font-size:14px;color:var(--accent)}.detail-status{color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-size:11px}.detail-section{display:flex;flex-direction:column;gap:4px}.detail-section h4{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.output-row{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.output-btn{display:inline-flex;align-items:center;gap:4px;background:var(--panel-2);color:var(--text);border:1px solid var(--accent);border-radius:4px;padding:3px 8px;cursor:pointer;font-size:12px}.output-btn:hover{background:var(--accent);color:var(--bg)}.take-all-btn{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:4px;padding:2px 8px;cursor:pointer;align-self:flex-start;margin-top:2px}.take-all-btn:hover{border-color:var(--accent);color:var(--accent)}.job-running .job-row{background:transparent;border:none;padding:0}.room-head{display:flex;align-items:center;gap:6px}.room-name{flex:1;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:4px 6px;font-size:13px;font-weight:600}.room-name:focus{outline:none;border-color:var(--accent)}.room-machines{display:flex;flex-wrap:wrap;gap:4px}.room-machine{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;background:var(--panel);border:1px solid var(--border);border-radius:999px;font-size:12px}.room-machine .qty{color:var(--accent);font-variant-numeric:tabular-nums}.pickup-btn{background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:3px;padding:0 5px;cursor:pointer;font-size:11px;line-height:1.2}.pickup-btn:not(:disabled):hover{color:var(--accent);border-color:var(--accent)}.pickup-btn:disabled{cursor:not-allowed;opacity:.5}.unload-btn{background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:3px;padding:0 6px;cursor:pointer;font-size:11px;line-height:1.2}.unload-btn:hover{color:var(--warn, #c66);border-color:var(--warn, #c66)}.tile-input-badge{display:inline-block;background:var(--accent, #5b8);color:#111;border-radius:8px;padding:0 6px;font-weight:600;font-variant-numeric:tabular-nums;margin-top:2px}.recipe-load-all-btn{position:absolute;top:4px;right:4px;background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:3px;padding:0 6px;cursor:pointer;font-size:11px;line-height:1.4;font-variant-numeric:tabular-nums}.recipe-load-all-btn:hover{color:var(--accent);border-color:var(--accent)}.input-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.input-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;border:1px solid var(--border);border-radius:3px;font-size:12px;font-variant-numeric:tabular-nums;background:#ffffff08}.room-place-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px;border-top:1px dashed var(--border);padding-top:6px}.place-btn{display:inline-flex;align-items:center;gap:2px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:2px 6px;cursor:pointer;font-size:12px}.place-btn:not(:disabled):hover{border-color:var(--good);color:var(--good)}.place-btn:disabled{cursor:not-allowed;opacity:.5}.room-chests{display:flex;flex-direction:column;gap:6px}.chest-card{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:6px 8px;display:flex;flex-direction:column;gap:4px}.chest-head{display:flex;align-items:center;gap:6px}.chest-head .name{flex:1;font-weight:600;font-size:13px}.chest-empty{margin:2px 0}.chest-contents{list-style:none;margin:0;padding:0;display:grid;gap:1px}.chest-row{display:grid;grid-template-columns:22px 1fr auto auto;align-items:center;gap:6px;padding:3px 6px;border-radius:3px;cursor:pointer}.chest-row:hover{background:var(--panel-2)}.chest-row .qty{color:var(--accent);font-variant-numeric:tabular-nums}.chest-row .withdraw-arrow{font-weight:700}.chest-deposit-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px;border-top:1px dashed var(--border);padding-top:4px;margin-top:2px}.deposit-btn{display:inline-flex;align-items:center;gap:2px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:2px 6px;cursor:pointer;font-size:12px}.deposit-btn:hover{border-color:var(--good);color:var(--good)}.recipe-index .search{width:100%;padding:6px 8px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:4px;margin-bottom:8px}.ri-body{display:grid;grid-template-columns:minmax(160px,200px) 1fr;gap:10px}@media (max-width: 700px){.ri-body{grid-template-columns:1fr}}.ri-item-list{list-style:none;margin:0;padding:0;max-height:65vh;overflow-y:auto;border:1px solid var(--border);border-radius:4px;background:var(--panel-2)}.ri-item{display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:6px;padding:4px 6px;cursor:pointer;border-bottom:1px solid var(--border)}.ri-item:hover{background:var(--panel)}.ri-item.selected{background:var(--panel);outline:1px solid var(--accent)}.ri-item .qty{color:var(--accent);font-size:12px;font-variant-numeric:tabular-nums}.ri-item-tag .name{font-style:italic}.ri-item-tag .qty{color:var(--muted);font-style:italic}.ri-detail{background:var(--panel-2);border:1px solid var(--border);border-radius:4px;padding:10px;max-height:65vh;overflow-y:auto}.ri-detail.empty{display:flex;align-items:center;justify-content:center;text-align:center;font-style:italic}.ri-detail-head{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:10px;margin-bottom:8px}.back-btn{background:transparent;border:1px solid var(--border);color:var(--muted);width:28px;height:28px;border-radius:4px;cursor:pointer;transition:transform 60ms ease,background-color 60ms ease,border-color 60ms ease,color 60ms ease}.back-btn:hover{color:var(--accent);border-color:var(--accent)}.back-btn:active{background:var(--accent);color:var(--bg);transform:translateY(1px)}.ri-detail-head h3{margin:0}.ri-detail-head .tag{display:inline-block;padding:1px 6px;border-radius:3px;background:var(--panel);border:1px solid var(--border);color:var(--accent)}.ri-tag-members{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.ri-section{margin-top:6px}.recipe-list{display:flex;flex-direction:column;gap:6px}.ri-recipe{border:1px solid var(--border);border-radius:4px;padding:6px 8px;background:var(--panel);display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center}.ri-recipe-machine{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:56px;color:var(--muted)}.ri-recipe-machine.focus{color:var(--focus)}.ri-recipe-stacks{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.ri-recipe-tool{grid-column:1 / -1;color:var(--muted);font-size:12px;padding:2px 4px;border-top:1px dashed var(--border);margin-top:2px}.ri-recipe-tool.focus{color:var(--focus)}.stack-chip{display:inline-flex;align-items:center;padding:2px 6px;border-radius:4px;background:var(--panel-2);border:1px solid var(--border);color:var(--text);cursor:pointer;font-size:12px}.stack-chip:hover{border-color:var(--accent)}.stack-chip.focus{border-color:var(--focus);background:var(--panel)}.arrow{color:var(--muted);margin:0 2px}.pin-btn{background:transparent;border:1px solid var(--border);color:var(--muted);width:28px;height:28px;border-radius:4px;cursor:pointer;font-size:14px;line-height:1;padding:0;transition:border-color 60ms ease,color 60ms ease,background-color 60ms ease}.pin-btn:hover{border-color:var(--accent);color:var(--accent)}.pin-btn.pinned{border-color:var(--accent);color:var(--accent);background:var(--panel)}.pin-btn.card-pin{position:absolute;top:4px;right:4px;width:24px;height:24px;font-size:12px}.craft-pinned{margin-bottom:12px;padding-bottom:10px;border-bottom:1px dashed var(--border)}.recipe-card{position:relative}.recipe-card.pinned{border-color:var(--accent)}.ingredient.short,.tool-req.short{color:var(--bad);border-color:var(--bad)}.questbook{display:flex;flex-direction:column;gap:14px}.qb-intro{margin:0;font-style:italic}.qb-tree{position:relative;display:flex;flex-direction:row;align-items:flex-start;gap:56px;padding:8px 4px 16px;overflow-x:auto}.qb-tree-edges{position:absolute;top:0;left:0;pointer-events:none;overflow:visible}.qb-tree-column{position:relative;display:flex;flex-direction:column;gap:18px;flex:0 0 auto;width:260px;z-index:1}.qb-node{position:relative;display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--panel-2);border:1px solid var(--border);border-radius:6px;transition:border-color .15s,opacity .15s}.qb-node.qb-active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.qb-node.qb-done{opacity:.78;border-color:var(--good)}.qb-node.qb-done .qb-title{text-decoration:line-through;color:var(--muted)}.qb-node.qb-locked{opacity:.55;border-style:dashed}.qb-node.qb-locked .qb-title{color:var(--muted)}.qb-head{display:flex;align-items:center;gap:8px}.qb-check{font-size:16px;line-height:1;color:var(--muted);flex:0 0 auto}.qb-node.qb-done .qb-check{color:var(--good)}.qb-node.qb-active .qb-check{color:var(--accent)}.qb-title{color:var(--text);font-weight:600;flex:1 1 auto}.qb-kind{font-size:10px;text-transform:uppercase;letter-spacing:.6px;padding:1px 6px;border-radius:3px;border:1px solid var(--border);color:var(--muted);background:var(--panel-2);flex:0 0 auto}.qb-kind-progression{color:var(--accent);border-color:var(--accent)}.qb-kind-utility{color:var(--good);border-color:var(--good)}.qb-desc{line-height:1.4}.qb-benefit{margin-top:2px;line-height:1.4;color:var(--text)}.qb-benefit-label{color:var(--muted)}.qb-requires{margin-top:4px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;line-height:1.4}.qb-requires-label{color:var(--muted)}.qb-edge{fill:none;stroke-width:2}.qb-edge-done{stroke:var(--good);opacity:.85}.qb-edge-unlocked{stroke:var(--accent);opacity:.85}.qb-edge-locked{stroke:var(--border);stroke-dasharray:4 4;opacity:.8}.toast-stack{position:fixed;bottom:16px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:1000;pointer-events:none;max-width:min(380px,calc(100vw - 32px))}.toast{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--panel-2);color:var(--text);border:1px solid var(--accent);border-radius:6px;box-shadow:0 4px 14px #0006;font-size:14px;line-height:1.35;opacity:0;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease;pointer-events:auto}.toast.show{opacity:1;transform:translateY(0)}.toast.leave{opacity:0;transform:translateY(8px)}.toast-icon{font-size:20px;flex-shrink:0}.toast-msg{flex:1}.toast-close{background:transparent;color:var(--muted);border:0;font-size:18px;line-height:1;padding:2px 6px;cursor:pointer;border-radius:4px}.toast-close:hover{color:var(--text);background:#ffffff0f}
