:root{--paper:#F5F2EA;--paper-2:#EDE8DC;--paper-edge:#DDD6C6;--gridline:#D6CFBF;--ink:#1C1C1A;--ink-2:#55534D;--ink-3:#8E8A80;--rule:rgba(28,28,26,.12);--accent:#D4462A;--shadow:0 1px 2px rgba(28,28,26,.08);--radius:4px;--font:"Inter",-apple-system,"Helvetica Neue",Arial,sans-serif;--top:60px;--foot:36px;--side:240px}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font:400 14px/1.45 var(--font);color:var(--ink);background:var(--paper);overflow:hidden;font-variant-numeric:tabular-nums}body.admin{overflow:auto}button{font:inherit;color:inherit}a{color:var(--ink)}.hidden{display:none!important}.muted{color:var(--ink-3)}.small,small{font-size:12px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--rule);background:#fff;color:var(--ink);height:36px;padding:0 14px;border-radius:var(--radius);font:600 14px var(--font);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}.btn:hover{border-color:var(--ink-3)}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{filter:brightness(.94)}.btn.primary.visited{background:#fff;color:var(--ink);border-color:var(--rule)}.btn.wide{width:100%}.btn.sm{height:28px;padding:0 10px;font-size:12px}.textbtn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;padding:0;font:400 14px var(--font);color:var(--ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.textbtn:disabled{text-decoration:none;color:var(--ink-3);cursor:default}.textbtn.muted{color:var(--ink-3)}.topbar{position:fixed;top:0;left:0;right:0;height:var(--top);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 24px;border-bottom:1px solid var(--rule);background:var(--paper);z-index:3}.brand{font:600 16px var(--font)}.season{color:var(--ink-3)}.top-actions{display:flex;gap:20px;align-items:center;justify-content:flex-end}#scene{position:fixed;top:var(--top);bottom:var(--foot);left:0;right:var(--side)}#scene canvas{display:block;cursor:grab;touch-action:none}.foot{position:fixed;left:0;right:0;bottom:0;height:var(--foot);display:flex;justify-content:space-between;align-items:center;padding:0 24px;border-top:1px solid var(--rule);font-size:12px;color:var(--ink-3);background:var(--paper);z-index:3}.foot .textbtn{font-size:12px;color:var(--ink-3)}.lb{position:fixed;right:0;top:var(--top);bottom:var(--foot);width:var(--side);border-left:1px solid var(--rule);padding:20px 22px;overflow:auto;background:var(--paper);z-index:2}.tabs{display:flex;gap:16px;margin-bottom:14px}.tabs button{background:none;border:0;padding:0 0 2px;cursor:pointer;color:var(--ink-3);font:400 14px var(--font)}.tabs button.on{color:var(--ink);border-bottom:1px solid var(--ink)}.lb ol{list-style:none;margin:0;padding:0}.lb li{display:flex;align-items:center;gap:10px;height:28px;cursor:pointer}.lb li:hover .nm{text-decoration:underline;text-underline-offset:3px}.lb li.cur,.lb li.cur .rk,.lb li.cur .ct{color:var(--accent)}.lb .rk{width:18px;color:var(--ink-3)}.lb .nm{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.lb .nm small{color:var(--ink-3);margin-left:6px}.lb .ct{color:var(--ink-2)}.lb .up{color:var(--ink-3)}.lb-mini{display:none}.lb-foot{font-size:12px;color:var(--ink-3);margin-top:16px}.tooltip{position:fixed;pointer-events:none;background:#fff;border:1px solid var(--rule);box-shadow:var(--shadow);color:var(--ink);font-size:12px;padding:4px 8px;border-radius:var(--radius);transform:translate(12px,14px);white-space:nowrap;z-index:5}.fly-hint{position:fixed;left:24px;top:calc(var(--top) + 16px);background:#fff;border:1px solid var(--rule);box-shadow:var(--shadow);padding:8px 12px;border-radius:var(--radius);font-size:12px;color:var(--ink-2);display:flex;gap:12px;align-items:center;z-index:3}.fly-hint .textbtn{font-size:12px}.fly-pad{position:fixed;left:16px;bottom:calc(var(--foot) + 56px);display:grid;grid-template-columns:repeat(3,48px);gap:6px;z-index:3}.fly-pad button{height:40px;border-radius:var(--radius);border:1px solid var(--rule);background:#fff;font-size:12px}.fly-pad [data-k=KeyW]{grid-column:2}.fly-pad [data-k=KeyA]{grid-column:1;grid-row:2}.fly-pad [data-k=KeyS]{grid-column:2;grid-row:2}.fly-pad [data-k=KeyD]{grid-column:3;grid-row:2}.fly-pad [data-k=KeyE]{grid-column:1;grid-row:1}.fly-pad [data-k=KeyQ]{grid-column:3;grid-row:1}.sheet{position:fixed;right:0;top:var(--top);bottom:var(--foot);width:320px;z-index:4;pointer-events:none}.sheet-card{pointer-events:auto;height:100%;background:#fff;border-left:1px solid var(--rule);box-shadow:var(--shadow);padding:20px 22px;overflow:auto;animation:slide .18s ease-out}@keyframes slide{0%{transform:translate(24px);opacity:0}to{transform:none;opacity:1}}.d-row{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.d-name{font:600 16px var(--font)}.x{background:none;border:0;font-size:20px;line-height:1;color:var(--ink-3);cursor:pointer;padding:0}.d-url{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.d-url a{color:var(--ink-3);text-decoration:none}.d-url a:hover{text-decoration:underline}.d-tag{font-size:14px;color:var(--ink-2);margin:10px 0 8px}.d-stats{font-size:12px;color:var(--ink-3);margin-bottom:16px}.d-actions{display:flex;gap:16px;align-items:center}.d-note,.d-pending{font-size:12px;color:var(--ink-3)}.d-lease{font-size:12px;color:var(--ink-3);margin-top:16px;border-top:1px solid var(--rule);padding-top:12px}#d-share{font-size:12px;margin-top:10px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c1c1a3d;display:flex;align-items:center;justify-content:center;z-index:6;padding:14px}.mcard{position:relative;width:420px;max-width:100%;max-height:calc(100vh - 28px);overflow:auto;background:#fff;border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.mcard.wide{width:620px}.mcard .x{position:absolute;right:16px;top:16px}.mcard h2{font:600 24px var(--font);margin:0 0 6px}.c-district{font-size:12px;color:var(--ink-3)}form label,.field{display:block;font-size:12px;color:var(--ink-2);margin-top:12px}form input:not([type=file]){display:block;width:100%;margin-top:4px;border:1px solid var(--rule);background:#fff;padding:8px 10px;border-radius:var(--radius);font:14px var(--font);color:var(--ink)}form input:focus{outline:none;border-color:var(--ink)}input[type=file]{display:block;margin-top:6px;font-size:12px}.field small,label small{display:block;color:var(--ink-3);margin-top:4px}.swatches{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.swatches button{width:24px;height:24px;border-radius:var(--radius);border:0;cursor:pointer}.swatches button.sel{outline:2px solid var(--ink);outline-offset:2px}.opts{display:flex;gap:16px;margin-top:6px}.opts button{background:none;border:0;padding:0 0 2px;cursor:pointer;color:var(--ink-3);font-size:14px}.opts button.on{color:var(--ink);border-bottom:1px solid var(--ink)}.err{color:var(--accent);font-size:12px;margin-top:10px;min-height:16px}.price-line{margin-top:6px}.price-line b{font:600 24px var(--font)}.fake-card{margin:12px 0;border:1px solid var(--rule);border-radius:var(--radius);padding:8px 10px;font-size:12px;color:var(--ink-2);display:flex;flex-direction:column;gap:2px}.fake-card small{color:var(--ink-3)}.rules{padding-left:20px;color:var(--ink-2)}.rules li{margin-bottom:8px}#share-img{width:100%;display:block;margin:12px 0 16px;border:1px solid var(--rule)}.share-actions{display:flex;gap:8px}.toast{position:fixed;left:50%;top:calc(var(--top) + 12px);transform:translate(-50%);background:var(--ink);color:#fff;font-size:12px;padding:8px 12px;border-radius:var(--radius);z-index:9}.admin-wrap{max-width:980px;margin:0 auto;padding:32px 20px}.admin-wrap h1{font:600 24px var(--font);margin:12px 0 4px}.back{color:var(--ink-2);font-size:14px}table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--rule);margin-top:16px}th,td{text-align:left;padding:12px;font-size:14px;border-bottom:1px solid var(--rule)}th{font-size:12px;color:var(--ink-3);font-weight:400}td .sw{width:14px;height:14px;border-radius:2px;display:inline-block}.tag{font-size:12px;color:var(--ink-3);margin-left:6px}.btn.ok{background:var(--ink);color:#fff;border-color:var(--ink)}.btn.no{color:var(--ink)}td .acts{display:flex;gap:6px}@media (max-width:760px){:root{--top:52px;--foot:0px}.topbar{padding:0 12px;grid-template-columns:auto 1fr auto;gap:10px}.season{font-size:12px;text-align:center;white-space:nowrap}.top-actions{gap:12px}.top-actions .btn{height:32px;padding:0 10px;font-size:12px}#scene{right:0;bottom:0}.foot{display:none}.lb{top:auto;bottom:0;left:0;right:0;width:auto;border-left:0;border-top:1px solid var(--rule);padding:0}.lb:not(.open)>*:not(.lb-mini){display:none}.lb.open{top:var(--top);padding:16px}.lb-mini{display:block;width:100%;border:0;background:none;padding:12px 16px;text-align:left;font:400 14px var(--font);color:var(--ink);cursor:pointer}.lb.open .lb-mini{display:none}.sheet{left:0;right:0;top:auto;bottom:0;width:auto}.sheet-card{height:auto;max-height:70vh;border-left:0;border-top:1px solid var(--rule);border-radius:var(--radius) var(--radius) 0 0;padding-bottom:24px}@keyframes slide{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}.fly-hint{left:8px;right:8px}.fly-pad{bottom:64px}}.d-back{font-size:12px;text-decoration:none;margin-bottom:12px;display:block}.admin-login{max-width:360px;margin-top:24px}.admin-login-form .field{display:flex;flex-direction:column;gap:6px;margin:12px 0}.admin-login-form input{font:inherit;padding:10px 12px;border:1px solid var(--line, #ddd6c6);border-radius:8px;background:#fff}.admin-login-form .err{color:var(--accent, #d4462a);min-height:1.2em;font-size:13px}.admin-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}
