:root{--gold: #d4af5f;--cream: #f4ead6;--ink: rgba(12, 12, 18, .72);--edge: rgba(212, 175, 95, .28);--radius: 14px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden;background:#0b0b10;color:var(--cream);font-family:var(--font);-webkit-font-smoothing:antialiased}canvas{touch-action:none;cursor:grab;display:block}canvas:active{cursor:grabbing}button{font:inherit;font-size:13px;color:var(--cream);background:#1e1e28b8;border:1px solid var(--edge);border-radius:999px;padding:7px 14px;cursor:pointer;transition:background .15s,color .15s,transform .1s}button:hover:not(:disabled){background:var(--gold);color:#14140f}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--gold);color:#14140f;font-weight:600}button.primary:hover:not(:disabled){background:var(--cream)}button.active{background:var(--gold);color:#14140f}.title{position:fixed;top:18px;left:20px;pointer-events:none;text-shadow:0 2px 12px rgba(0,0,0,.75)}.title h1{margin:0;font-size:21px;font-weight:600;letter-spacing:.02em}.title p{margin:2px 0 0;font-size:12px;letter-spacing:.09em;text-transform:uppercase;opacity:.72}.tools{position:fixed;top:18px;right:20px;display:flex;gap:8px}.help{position:fixed;top:66px;right:20px;width:min(340px,calc(100vw - 40px));padding:14px 16px;font-size:13px;line-height:1.55;background:var(--ink);border:1px solid var(--edge);border-radius:var(--radius);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.loading{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);padding:10px 18px;font-size:13px;letter-spacing:.05em;background:var(--ink);border:1px solid var(--edge);border-radius:999px;pointer-events:none}.caption{position:fixed;left:50%;bottom:22px;transform:translate(-50%);display:flex;align-items:center;gap:10px;max-width:min(680px,calc(100vw - 40px));padding:10px 12px;background:var(--ink);border:1px solid var(--edge);border-radius:var(--radius);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.caption-text{min-width:0}.caption-label{font-size:15px;font-weight:600;display:flex;align-items:baseline;gap:8px}.count{font-size:11px;letter-spacing:.08em;color:var(--gold);border:1px solid var(--edge);border-radius:999px;padding:2px 7px}.caption-note{margin-top:3px;font-size:12.5px;line-height:1.45;opacity:.75}button.step{flex:none;width:34px;height:34px;padding:0;font-size:20px;line-height:1}.map-panel{position:fixed;right:20px;bottom:22px;width:210px;padding:10px;background:var(--ink);border:1px solid var(--edge);border-radius:var(--radius);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.map-panel.editing{width:408px;max-height:calc(100vh - 44px);display:flex;flex-direction:column;overflow:hidden}.map-panel.editing .map{flex:none;max-height:44vh}.map-panel.editing .editor{flex:1 1 auto;min-height:0;overflow-y:auto;padding-right:2px}.map{display:block;width:100%;height:auto;max-height:46vh;overflow:hidden}.map.editing{max-height:52vh;background:#08080c80;border-radius:8px}.map.aiming{cursor:crosshair;outline:1px solid var(--gold);border-radius:8px}.map-grid{stroke:#f4ead617;stroke-width:.03;fill:none}.map-grid.major{stroke:#f4ead633;stroke-width:.05}.map-guide{stroke:#d4af5f59;stroke-width:.09;stroke-dasharray:.5 .45;pointer-events:none}.map-slot{fill:none;stroke:#f4ead638;stroke-width:.05;pointer-events:none}.map-gap circle{fill:none;stroke:#d4af5fd9;stroke-width:.07;stroke-dasharray:.3 .22}.map-gap path{stroke:#d4af5fd9;stroke-width:.07}.map-gap{pointer-events:none}.map-tag{font-size:.66px;fill:var(--cream);stroke:#0a0a0ecc;stroke-width:.16;paint-order:stroke;pointer-events:none}.map-end{font-size:.62px;letter-spacing:.12px;fill:#f4ead666;text-anchor:middle}.map-link{fill:none;stroke:#d4af5f80;stroke-width:.09;stroke-dasharray:.4 .3}.map-dot{fill:#f4ead6b8;stroke:#0a0a0ed9;stroke-width:.11;cursor:pointer;transition:fill .15s}.map-dot:hover{fill:var(--cream)}.map-dot.current{fill:var(--gold)}.map.editing .map-dot{cursor:move}.map-needle{fill:#d4af5fd9;stroke:#0a0a0e8c;stroke-width:.06;pointer-events:none}.editor{margin-top:10px;border-top:1px solid var(--edge);padding-top:10px}.editor .hint{font-size:11.5px;line-height:1.5;opacity:.72;margin-bottom:8px}.editor code{color:var(--gold)}.editor .row{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:12px;flex-wrap:wrap}.editor .row span{opacity:.75}.editor input[type=range]{flex:1;min-width:0;accent-color:var(--gold)}.editor input[type=text]{font:inherit;font-size:12px;color:var(--cream);background:#1e1e28b8;border:1px solid var(--edge);border-radius:8px;padding:4px 8px}.editor .grow{flex:1;min-width:0}.board{display:grid;gap:4px;margin-bottom:10px}.board .cell{position:relative;aspect-ratio:2 / 1;border:1px solid var(--edge);border-radius:6px;background-size:cover;background-position:center;cursor:grab;overflow:hidden}.board .cell:hover{border-color:var(--gold)}.board .cell.current{outline:2px solid var(--gold);outline-offset:-2px}.board .cell-done{position:absolute;right:3px;top:3px;min-width:13px;padding:0 3px;font-size:9.5px;line-height:13px;text-align:center;color:#1a1408;background:#d4af5fd9;border-radius:7px}.board .cell.done .cell-done{background:var(--gold)}.board .cell.done{box-shadow:inset 0 0 0 1px #d4af5fa6}.board .cell.empty{border-style:dashed;border-color:#d4af5fbf;background:#d4af5f14;cursor:default}.board .cell-id{position:absolute;left:3px;bottom:2px;padding:0 3px;font-size:9.5px;color:var(--cream);background:#0a0a0eb8;border-radius:3px}.board .cell.empty .cell-id{left:0;right:0;bottom:0;top:0;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--gold);background:none}.tray{margin:-4px 0 10px;padding:7px;background:#d4af5f1a;border:1px solid var(--edge);border-radius:8px}.tray-head{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--gold);margin-bottom:6px}.tray-head span{flex:1}.tray-head button{padding:3px 10px;font-size:11.5px}.tray-strip{display:flex;gap:4px;overflow-x:auto;padding-bottom:2px}.tray-strip .cell{position:relative;flex:none;width:74px;aspect-ratio:2 / 1;border:1px solid var(--edge);border-radius:6px;background-size:cover;background-position:center;cursor:grab;overflow:hidden}.tray-strip .cell.current{outline:2px solid var(--gold);outline-offset:-2px}.tray-strip .cell-id{position:absolute;left:3px;bottom:2px;padding:0 3px;font-size:9.5px;color:var(--cream);background:#0a0a0eb8;border-radius:3px}.editor .points{margin-top:4px;max-height:210px;overflow-y:auto;border-top:1px solid var(--edge);border-bottom:1px solid var(--edge);padding:4px 0}.editor .point{display:flex;align-items:baseline;border-radius:6px}.editor .point:hover{background:#d4af5f29}.editor .point.current{background:#d4af5f47}.editor .point.blocked .plabel,.editor .point.blocked code,.editor .point.blocked .pid{opacity:.38;text-decoration:line-through}.editor .pgo{display:flex;align-items:baseline;gap:7px;flex:1;min-width:0;padding:3px 4px 3px 7px;border:0;border-radius:6px;background:none;font-size:11.5px;text-align:left}.editor .pgo:hover{background:none;color:var(--cream)}.editor .pblock{flex:none;padding:2px 7px;border:0;background:none;font-size:12px;opacity:.5}.editor .pblock:hover{background:none;color:var(--gold);opacity:1}.editor .point.blocked .pblock{opacity:1;color:var(--gold)}.editor .point input[type=number]{width:52px;padding:2px 4px;font-size:11px}.editor .point.own input[type=number]{border-color:var(--gold);color:var(--gold)}.editor .pmine{flex:none;padding-right:8px;font-size:10.5px;opacity:.55}.editor .pblock:disabled{opacity:.18}.editor .point .pid{color:var(--gold);font-variant-numeric:tabular-nums}.editor .point .plabel{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.85}.editor .point code{opacity:.6;font-variant-numeric:tabular-nums}.editor .lines{margin-top:8px;padding:8px;background:#08080c73;border-radius:8px}.editor .lines .row{margin-top:4px}.editor .lines .row span:first-child{width:48px;flex:none}.editor .lines .row span:last-child{flex:1;opacity:.6;font-size:11px}.editor .lines-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;font-size:11.5px;color:var(--gold)}.editor .lines-head:first-child{margin-top:0}.editor .lines-head span{flex:1 1 110px;min-width:0}.editor .lines-head button{flex:none;width:auto;padding:2px 7px;white-space:nowrap}.editor .check{display:flex;align-items:center;gap:5px;white-space:nowrap}.editor .check input{accent-color:var(--gold)}.editor input[type=number]{width:52px;text-align:center;font:inherit;font-size:12px;color:var(--cream);background:#1e1e28b8;border:1px solid var(--edge);border-radius:8px;padding:4px 6px}.editor b{color:var(--gold)}.editor button{padding:5px 10px;font-size:12px}@media (max-width: 720px){.title p{display:none}.map-panel{width:132px;bottom:auto;top:66px}.map-panel.editing{width:calc(100vw - 40px);top:66px}.caption{bottom:14px}.caption-note{display:none}}
