:root{--bg: #14161a;--panel: #1c2027;--line: #2a3038;--text: #e6e9ee;--muted: #8b93a1;--accent: #4c9aff;--warn: #ffb020;--danger: #ff5c5c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:13px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}#app{display:flex;flex-direction:column;height:100vh}.loginScreen{flex:1;display:flex;align-items:center;justify-content:center;padding:24px}.loginBox{width:100%;max-width:320px;display:flex;flex-direction:column;gap:10px;padding:24px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.loginBox h1{margin:0;font-size:18px}.loginBox .hint{margin:0 0 4px;color:var(--muted)}.loginBox label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:12px}.loginBox input{padding:8px 10px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text);font:inherit}.loginBox input:focus{outline:none;border-color:var(--accent)}.loginBox button{padding:8px;margin-top:4px}.loginError{min-height:1.5em;margin:0;color:var(--danger);font-size:12px}.loginBox{max-width:340px}.loginBox h2{margin:8px 0 0}.loginForm{display:flex;flex-direction:column;gap:10px;padding-top:12px;border-top:1px solid var(--line)}.googleButton{min-height:44px;display:flex;align-items:center;justify-content:center}.guestBox{text-align:center}.guestBox h1{font-size:28px}.bootScreen{flex:1;display:flex;align-items:center;justify-content:center;color:var(--muted)}.versionPicker{display:flex;align-items:center;gap:6px}.versionPicker select{max-width:210px}.dialogLayer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;background:#00000080}.dialog{width:min(420px,92vw);padding:18px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px #00000080}.dialog .hint{margin:0 0 12px}.dialog button{text-align:left}.progressTrack{height:8px;margin:4px 0 6px;background:var(--line);border-radius:4px;overflow:hidden}.progressFill{height:100%;width:0;background:var(--accent);transition:width .15s}.reportDialog{width:min(680px,94vw);max-height:86vh;display:flex;flex-direction:column}.reportList{flex:1 1 auto;overflow-y:auto;margin:0 0 12px;border:1px solid var(--line);border-radius:6px}.reportRow{padding:6px 10px;border-bottom:1px solid var(--line);font-size:12px}.reportRow:last-child{border-bottom:0}.reportRow.bad .reportHead{color:var(--warn);font-weight:600}.reportRow.skip{color:var(--muted)}.reportRow ul{margin:4px 0 0;padding-left:18px}.levelInfo{flex:0 1 auto;overflow-y:auto;margin:0 0 12px;font-size:12px}.levelInfoGrid{display:grid;grid-template-columns:max-content 1fr;gap:3px 12px;margin-bottom:8px}.levelInfoLabel{color:var(--muted)}.levelInfoFoods{width:100%;border-collapse:collapse}.levelInfoFoods th,.levelInfoFoods td{padding:2px 8px;border-bottom:1px solid var(--line);text-align:right}.levelInfoFoods th:first-child,.levelInfoFoods td:first-child{text-align:left}.levelInfoFoods th{color:var(--muted);font-weight:500}.levelInfoFoods .icon{width:18px;height:18px;object-fit:contain;vertical-align:middle;margin-right:6px}.foodSummary{font-size:12px;color:var(--muted);margin-bottom:6px;line-height:1.6}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;padding:8px 12px;background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto;z-index:20}.toolbarSection{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-width:0}.accountSection{margin-left:auto;justify-content:flex-end}.toolbar button{white-space:nowrap}.toolbar .levelPicker,.toolbar .versionPicker{flex-wrap:wrap;row-gap:6px}.toolbar .sep{width:1px;height:20px;background:var(--line)}.status{color:var(--muted);font-size:12px;min-width:0;max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.body{display:flex;flex:1;min-height:0;padding:8px}.viewport{position:relative;order:1;flex:0 0 var(--view-w, 360px);max-width:calc(66.666% - 260px);min-width:0;background:#0d0f13;border:1px solid var(--line);border-radius:10px;overflow:hidden}#unity-canvas{width:100%;height:100%;display:block}.side{min-width:0;overflow-y:auto;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.panel.side{order:3;flex:1 1 0}.rightCol{order:4;flex:0 0 33.333%;min-width:0;display:flex;gap:8px;margin-left:8px}.inspector.side{flex:3 1 0}.mechanic.side{flex:4 1 0}.splitter{order:2;flex:0 0 8px;cursor:col-resize;position:relative;touch-action:none}.splitter:after{content:"";position:absolute;top:0;bottom:0;left:3px;width:2px;border-radius:1px;background:transparent;transition:background .12s}.splitter:hover:after,body.resizingPanes .splitter:after{background:var(--line)}body.resizingPanes{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizingPanes #unity-canvas{pointer-events:none}.side.locked{position:relative;overflow:hidden}.side.locked>*:not(.lockNote){opacity:.35;filter:grayscale(1)}.side.locked .lockNote{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:12px;text-align:center;font-size:12px;color:var(--muted);background:#0c0e128c;cursor:not-allowed}@media(max-width:1100px){.body{flex-wrap:wrap}.side{flex:1 1 100%!important;max-height:34vh}.rightCol{flex:1 1 100%;margin-left:0;flex-wrap:wrap}.viewport{flex:1 1 100%!important;max-width:none;min-height:40vh}.splitter{display:none}.body{gap:8px}}h2{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:16px 0 8px}h2:first-child{margin-top:0}h3{font-size:12px;color:var(--muted);margin:14px 0 6px}.line{display:flex;align-items:flex-start;gap:4px;margin-bottom:6px;flex-wrap:wrap}.lineLabel{width:26px;color:var(--muted);font-size:11px}.lineHead{display:flex;align-items:center;gap:2px;min-height:34px}.note{color:var(--warn);font-size:11px;margin:0 0 8px 26px}.slotBar{flex:1 1 200px;min-width:0;display:flex;flex-direction:column;gap:3px}.lineBreak{flex-basis:100%;height:0}.slotHead{display:flex;align-items:center;gap:8px}.slotLabel{font-size:11px;color:var(--muted);min-width:44px}.slotRange{flex:1;min-width:60px}.loopBadge{font-size:10px;padding:1px 6px;border-radius:8px;color:#0b1220;background:var(--warn);white-space:nowrap;cursor:help}.slotCells{display:flex;gap:3px}.autoCells{display:flex;gap:3px;align-items:center;flex-wrap:wrap}.autoLabel{font-size:10px;color:var(--muted);min-width:44px;cursor:help}.autoCells .slotCell{flex:0 0 45px}.slotCell.auto{background:#2a2f38;border-color:#6b7686}.slotCell.autoDrop{color:var(--muted)}.slotFoot.autoFoot{background:#6b7686}.unityErrors{font-size:11px;color:var(--danger);white-space:nowrap;cursor:help}.slotCell{flex:1 1 0;min-width:0;height:33px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--muted);background:#1c212b;border:1px dashed var(--line);border-radius:4px;-webkit-user-select:none;user-select:none}.slotCell.active{background:#2c3a4d;border:1px solid var(--accent);color:var(--text);cursor:grab}.slotCell.selected{background:#35507a;box-shadow:0 0 0 1px var(--accent)}.slotCell.dropHint{outline-offset:0;background:#3a4a60}.slotPreview{position:relative;height:8px;background:#12161c;border:1px solid var(--line);border-radius:3px;overflow:hidden}.slotFoot{position:absolute;top:1px;bottom:1px;background:var(--accent);opacity:.85;border-radius:2px}.slotFoot.single{background:#a58bd6}.slotFoot.overlap{background:var(--danger)}.slotTag{font-weight:600}.lanes{display:flex;gap:8px;align-items:flex-start;overflow-x:auto;padding-bottom:6px}.lane{display:flex;flex-direction:column;gap:4px;min-width:104px;padding:6px;background:#1c212b;border:1px solid var(--line);border-radius:8px}.laneHead{display:flex;align-items:center;justify-content:space-between;gap:4px}.lane .card{justify-content:flex-start}.plateOrder{font-size:10px;color:var(--muted);min-width:16px}.cardGrip{font-size:10px;color:var(--muted);min-width:16px;padding:1px 4px;border-radius:4px;cursor:grab}.cardGrip:hover{background:#2f3542;color:var(--text)}.card.activePlate{border-color:var(--accent)}.card.queuedPlate{opacity:.55}.card{display:inline-flex;align-items:center;gap:3px;min-height:34px;padding:4px 6px;background:#232833;border:1px solid var(--line);border-radius:6px;color:var(--text);cursor:pointer}.card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.card.locked{border-style:dashed}.card.single{background:#2b2436}.card.tray.single{--traySlots: 1}.card.plate.hiddenPlate{border-style:dashed;background:#2b2436}.card.plate.lockedPlate{border-color:#4a6fa5}.strip{display:inline-flex;gap:3px;align-items:center}.card.tray{flex-direction:column;align-items:center;gap:2px;padding:4px 3px}.card.tray .strip{gap:3px}.card.plate .icon{height:66px}.card.plate .icon.fallback{width:66px}.card.plate .icon.fallback{font-size:26px}.card.plate .empty{font-size:12px}.card.plate .strip{gap:3px}.card.plate{flex-direction:column;align-items:center;gap:2px;padding:4px 3px}.lane .card.plate{justify-content:flex-start}.card.plate .strip{--foodW: 32px;justify-content:center;width:calc(var(--traySlots, 3) * var(--foodW) + (var(--traySlots, 3) - 1) * 3px + 8px);min-height:70px;padding:2px 4px;background:#1c212b;border:1px solid var(--line);border-radius:6px}.card.plate .subStrip{min-height:58px}.card.plate .subStrip .icon{height:54px}.card.plate .subStrip .icon.fallback{width:54px;font-size:22px}.card.plate .subStrip .empty{font-size:11px}.card.plate .strip.dropHint{background:#2c3a4d;border-color:var(--accent)}.card.tray .icon{height:66px}.card.tray .icon.fallback{width:66px}.card.tray .icon.fallback{font-size:26px}.card.tray .empty,.card.tray .sub,.card.tray .lock{font-size:13px}.card.tray .strip{justify-content:center;width:calc(var(--traySlots, 3) * var(--foodW) + (var(--traySlots, 3) - 1) * 3px + 8px);min-height:70px;padding:2px 4px;background:#1c212b;border:1px solid var(--line);border-radius:6px}.card.tray .strip{--foodW: 32px}.subStrip{gap:3px;opacity:.6}.card.tray .subStrip{min-height:58px}.card.tray .strip.dropHint{background:#2c3a4d;border-color:var(--accent)}.card.tray .subStrip .icon{height:54px}.card.tray .subStrip .icon.fallback{width:54px}.card.tray .subStrip .icon.fallback{font-size:22px}.card.tray .subStrip .empty{font-size:11px}.icon{height:22px;width:auto;aspect-ratio:1 / 2;object-fit:contain;display:inline-block;flex:0 0 auto;image-rendering:auto}.icon.fallback{width:22px;display:inline-flex;align-items:center;justify-content:center;font-size:9px;line-height:1;color:var(--muted);background:#2a303a;border:1px solid var(--line);border-radius:4px}.empty{color:var(--muted);font-size:11px}.sub,.lock{font-size:10px;color:var(--muted)}.row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.inspector.side{overflow-x:hidden}.row.featureRow{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}.row.featureRow>button{flex:0 0 auto;white-space:nowrap}.value{min-width:28px;text-align:center}.subGroup{border:1px solid var(--line);border-radius:8px;padding:8px;margin-bottom:8px;background:#0000002e}.subLabel{flex:1;color:var(--muted);font-size:11px}button{background:#2a303a;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:5px 10px;cursor:pointer;font:inherit}button:hover{background:#333b47}button.active{border-color:var(--accent);color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#0b1220;font-weight:600}button.wide{width:100%;margin-bottom:8px}button.add{padding:5px 8px}button.del{color:var(--danger)}select{flex:1;background:#2a303a;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:5px;font:inherit}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:20px;color:var(--muted)}.hint{color:var(--muted);font-size:12px;max-width:420px}.warn{color:var(--warn);font-size:12px}.levelPicker{display:flex;align-items:center;gap:4px}.levelPicker select{flex:0 0 auto;min-width:96px}.levelCount{color:var(--muted);font-size:12px;min-width:1.5em;text-align:center;cursor:help}.dragging{opacity:.4}.dropHint{outline:2px dashed var(--accent);outline-offset:2px}.icon.dropHint{outline:2px solid var(--accent);outline-offset:0;border-radius:4px}.card[draggable=true],.subGroup[draggable=true],.foodRow[draggable=true],.strip[draggable=true]{cursor:grab}.strip .icon[draggable=true]{cursor:grab;border-radius:4px}.strip .icon[draggable=true]:hover{outline:1px solid var(--accent);outline-offset:1px}.subStrip.dropHint{opacity:1}.line,.lane{min-height:34px;border-radius:8px}.mechHalf{display:flex;flex-direction:column}.mechHalf+.mechHalf{padding-top:12px;border-top:1px solid var(--line);margin-top:12px}.slider{width:100%}.genRow{display:flex;align-items:center;gap:8px;margin:4px 0}.foodTypeRow .icon{width:22px;height:22px;flex:0 0 auto;object-fit:contain}.foodTypeCount{font-size:12px;color:var(--muted);min-width:34px;text-align:right}.foodTypeRow button{padding:2px 10px;font-size:12px}.genLabel{flex:1;font-size:12px;color:var(--muted)}.genSelect{width:100%;margin-bottom:8px;padding:5px 6px;background:#12161c;color:inherit;border:1px solid var(--line);border-radius:6px}.genInput{width:72px;padding:4px 6px;background:#12161c;color:inherit;border:1px solid var(--line);border-radius:6px}.foodEditor{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start}.foodEditor>button.wide{flex-basis:100%;margin-bottom:0}.foodSlot{position:relative}.foodFrame{width:64px;height:96px;display:flex;align-items:center;justify-content:center;background:#12161c;border:1px solid var(--line);border-radius:8px;cursor:pointer}.foodFrame:hover{border-color:var(--accent)}.foodFrame .icon{height:88px}.foodFrame .icon.fallback{width:48px;height:48px;font-size:16px}.foodSlot>button.del{position:absolute;top:-7px;right:-7px;width:20px;height:20px;padding:0;font-size:13px;line-height:18px;border-radius:50%}.layerBars{margin-bottom:8px}.layerBarHead{margin:6px 0 0}.layerBarValue{font-size:12px;color:var(--muted);white-space:nowrap}.layerBarValue.changed{color:var(--accent)}.icon.pickable{cursor:pointer}.icon.pickable:hover{outline:1px solid var(--accent)}.foodTypeRow.groupStart{margin-top:4px;padding-top:6px;border-top:1px solid var(--line)}.foodPickerLayer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}.foodPicker{position:fixed;display:flex;flex-direction:column;gap:12px;padding:12px;max-height:calc(100vh - 8px);overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #00000080}.foodCell{width:60px;height:60px;padding:3px;display:flex;align-items:center;justify-content:center;background:#12161c;border:1px solid var(--line);border-radius:6px;cursor:pointer}.foodCell img{width:100%;height:100%;object-fit:contain}.foodCell:hover{border-color:var(--accent)}.foodCell{position:relative}.foodPickerRow{display:grid;grid-template-columns:repeat(10,60px);gap:6px}.foodCellCount{position:absolute;right:2px;bottom:1px;padding:0 4px;font-size:13px;line-height:18px;color:#fff;background:#000000b3;border-radius:4px;pointer-events:none;z-index:1}.foodCell.current{border-color:var(--accent);cursor:default}.foodCellCurrent{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:27px;font-weight:700;color:#fff;background:#0000008c;border-radius:5px;pointer-events:none}.realDifficulty{display:block;margin:6px 0 10px;font-weight:700}.difficultyBadge{font-weight:700}.difficulty-easy{color:#4ade80}.difficulty-medium{color:#a3e635}.difficulty-hard{color:#facc15}.difficulty-very-hard{color:#fb923c}.difficulty-extreme{color:#f87171}.failureDiagnostics{display:grid;gap:4px;margin-top:6px}.failureFoodRow,.failureFoods{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px}.failureFoodRow{min-height:24px}.failureFoods .icon{height:22px}.failureFoods small{margin-left:-2px;color:var(--muted)}
