: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;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.lb .you{flex:none;color:var(--ink-3);font-size:12px;font-weight:400;margin-left:8px;letter-spacing:0}.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-links{display:flex;gap:14px;align-items:center;margin-top:10px}.d-links .textbtn,#d-share{font-size:12px}.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:13px;font-weight:600;padding:10px 16px;border-radius:var(--radius);z-index:100;pointer-events:none;letter-spacing:.01em}.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}.d-layer{font:600 12px var(--font);color:var(--ink-3);text-transform:none;margin:16px 0 8px;letter-spacing:.02em}.d-ll-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:4px}.slot-list{list-style:none;margin:0;padding:0}.slot-list li{border:1px solid var(--rule);border-radius:var(--radius);padding:10px 12px;margin-bottom:8px;cursor:pointer;background:#fff}.slot-list li:hover{border-color:var(--ink-3)}.slot-list li.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.slot-list .slot-face{font:600 13px var(--font)}.slot-list .slot-state{font-size:12px;color:var(--ink-2);margin-top:2px}.slot-list .slot-tenant{font-size:12px;color:var(--ink-3);margin-top:4px}.slot-list .slot-acts{margin-top:8px;display:flex;gap:10px;flex-wrap:wrap}.toast{max-width:min(90vw,420px);text-align:center;box-shadow:var(--shadow)}.zone-legend{position:fixed;right:calc(var(--side) + 16px);bottom:calc(var(--foot) + 16px);z-index:3;display:flex;gap:10px;align-items:center;background:#f5f2eaeb;border:1px solid var(--rule);border-radius:var(--radius);padding:6px 10px;font-size:10px;color:var(--ink-2);box-shadow:var(--shadow);pointer-events:none}.zone-legend .sw{display:inline-block;width:8px;height:8px;margin-right:4px;vertical-align:middle;border-radius:1px}.zone-legend .sw.main{background:#c4a882}.zone-legend .sw.plaza{background:#b8c4b0}.zone-legend .sw.back{background:#d5d0c4}.lb.discover{display:flex;flex-direction:column}.lb.discover.hidden{display:none!important}.disc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.disc-head b{font-size:14px;font-weight:600}#disc-list{list-style:none;margin:0;padding:0;overflow:auto;flex:1}.lb.discover #disc-list li,#disc-list li{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;height:auto;min-height:52px;padding:12px 0;border-bottom:1px solid var(--rule);cursor:pointer;line-height:1.4}#disc-list li:last-child{border-bottom:0}#disc-list li>div:first-child{flex:1;min-width:0}#disc-list .t{font-weight:600;font-size:13px;color:var(--ink);line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#disc-list .m{font-size:11px;color:var(--ink-3);margin-top:4px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#disc-list .r{flex:none;font-size:12px;color:var(--ink-2);text-align:right;white-space:nowrap;line-height:1.35;padding-top:1px}#disc-list .chip{font-size:11px;color:var(--ink-3);margin-top:4px;line-height:1.4}#disc-list .empty{border:0;cursor:default;color:var(--ink-3);font-size:12px;padding:16px 0;min-height:0;height:auto}@media (max-width:759px){.zone-legend{right:12px;bottom:12px;font-size:9px;gap:8px;padding:5px 8px}.lb.discover{position:fixed;inset:var(--top) 0 0 0;width:auto;z-index:6;background:var(--paper);padding:16px 18px;border:0;border-top:0;top:var(--top)!important;bottom:0!important;left:0;right:0;display:flex;flex-direction:column}.lb.discover.hidden{display:none!important}.lb.discover:not(.open)>*:not(.lb-mini),.lb.discover>*{display:revert}.lb.discover .disc-head,.lb.discover .tabs{display:flex}.lb.discover #disc-list{display:block;overflow:auto;flex:1}.lb.discover .lb-mini{display:none!important}}#btn-discover-top{margin-right:4px}@media (max-width:759px){.zone-legend{bottom:12px}}
