/* (c) 2026 aiidea.co.uk. All rights reserved. */
:root{--ink: #eef3ff;--dim: rgba(226, 234, 255, .64);--faint: rgba(226, 234, 255, .36);--line: rgba(190, 210, 255, .14);--glass: rgba(10, 14, 24, .62);--cyan: #46d9ff;--hot: #7cffc4;--serif: "Instrument Serif", "Cormorant Garamond", Georgia, serif;--sans: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--pad: clamp(14px, 2vw, 26px)}*{box-sizing:border-box}html,body{height:100%;margin:0;background:#04060b;color:var(--ink);overflow:hidden}body{font:13.5px/1.45 var(--sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}canvas{position:fixed;inset:0;width:100%;height:100%;display:block}#ov{touch-action:none;cursor:grab}#ov.dragging{cursor:grabbing}#ov.over-ap{cursor:move}body.tool-wall #ov,body.tool-erase #ov{cursor:crosshair}.mono{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;font-size:10.5px}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}button:focus-visible,input:focus-visible{outline:1.5px solid var(--cyan);outline-offset:2px}svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;display:block;flex:none}svg .fill{fill:currentColor;stroke:none}.hidden{display:none!important}#ui{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity 1.2s ease .2s}#ui>*{pointer-events:auto}body.entered #ui{opacity:1}body.bare #ui,body.bare #labels{display:none}.glass{background:var(--glass);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 40px #00000059}#brand{position:absolute;left:var(--pad);top:calc(var(--pad) - 6px);pointer-events:none;max-width:min(560px,60vw)}#brand>*{pointer-events:auto}#brand h1{font:400 46px/1 var(--serif);margin:0;letter-spacing:-.01em;text-shadow:0 2px 24px rgba(0,0,0,.6)}#brand .tag{margin:6px 0 12px;color:var(--dim);max-width:440px;text-shadow:0 1px 10px rgba(0,0,0,.8)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chips button{padding:6px 11px;border-radius:999px;border:1px solid var(--line);background:#0a0e1880;color:var(--dim);backdrop-filter:blur(8px);transition:all .2s}.chips button:hover{color:var(--ink);border-color:#bed2ff59}.chips button.on{color:#04131a;background:var(--cyan);border-color:var(--cyan)}#panel{position:absolute;left:var(--pad);top:196px;width:262px;padding:14px 14px 10px;max-height:calc(100% - 260px);overflow:auto;scrollbar-width:thin}#panel section{margin-bottom:14px}#panel h3,#report h3{margin:0 0 7px;color:var(--faint);font-weight:500;display:flex;justify-content:space-between}.hint{text-transform:none;letter-spacing:0;font-family:var(--sans);font-size:11px;color:var(--faint)}.seg{display:flex;background:#ffffff0a;border:1px solid var(--line);border-radius:9px;padding:2px}.seg button{flex:1;padding:6px 4px;border-radius:7px;color:var(--dim);font-size:12.5px;transition:all .15s;white-space:nowrap}.seg button:hover{color:var(--ink)}.seg button.on{background:#46d9ff29;color:var(--ink);box-shadow:inset 0 0 0 1px #46d9ff73}.check{display:flex;gap:7px;align-items:center;margin-top:7px;color:var(--dim);font-size:12px;cursor:pointer}.check input{accent-color:var(--cyan);margin:0}.row{display:flex;gap:6px;margin-top:7px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:9px;border:1px solid var(--line);background:#ffffff0a;color:var(--ink);font-size:12.5px;transition:all .15s}.btn:hover{background:#ffffff17}.btn svg{width:15px;height:15px}.btn.hot{background:linear-gradient(135deg,#46d9ff47,#7cffc438);border-color:#7cffc480}.btn.hot:hover{background:linear-gradient(135deg,#46d9ff66,#7cffc457)}.btn:disabled{opacity:.4;cursor:default}.btn.small{padding:4px 8px;font-size:11.5px}.mat{padding:4px 8px;border-radius:7px;border:1px solid var(--line);font-size:11.5px;color:var(--dim);display:inline-flex;align-items:center;gap:5px}.mat i{width:9px;height:9px;border-radius:2px;display:inline-block}.mat.on{color:var(--ink);border-color:#46d9ff99}#wallmat{display:none}body.tool-wall #wallmat{display:flex}.ap{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:9px;margin-bottom:4px;border:1px solid transparent;cursor:pointer}.ap.sel{border-color:var(--line);background:#ffffff0a}.ap .dot{width:10px;height:10px;border-radius:50%;box-shadow:0 0 10px currentColor;background:currentColor}.ap .name{flex:1}.ap .meta{color:var(--faint);font:11px var(--mono)}.ap .x{opacity:.4;padding:2px}.ap .x:hover{opacity:1}.ap .x svg{width:13px;height:13px}#report{position:absolute;right:var(--pad);top:var(--pad);width:280px;padding:14px;max-height:calc(100% - 100px);overflow:auto;scrollbar-width:thin}.big{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}.big span{font:400 50px/.9 var(--serif)}.big small{color:var(--dim);font-size:12px;line-height:1.3}#report.pending #rooms,#report.pending #legend b{opacity:.35}#bar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:#ffffff0f;margin-bottom:8px}#bar i{display:block;height:100%;transition:width .6s ease}#legend{display:grid;grid-template-columns:1fr 1fr;gap:3px 10px;font-size:11.5px;color:var(--dim);margin-bottom:14px}#legend span{display:flex;align-items:center;gap:6px}#legend i{width:8px;height:8px;border-radius:2px;flex:none}#legend b{font-weight:500;color:var(--ink);margin-left:auto;font-family:var(--mono);font-size:10.5px}.room{display:grid;grid-template-columns:1fr auto;gap:0 8px;padding:6px 0;border-top:1px solid var(--line)}.room .n{color:var(--ink)}.room .d{font:12px var(--mono);text-align:right}.room .q{grid-column:1 / 3;color:var(--faint);font-size:11.5px}.pill{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:1px}#status{position:absolute;left:50%;transform:translate(-50%);bottom:calc(var(--pad) - 4px);color:var(--faint);white-space:nowrap;pointer-events:none;text-shadow:0 1px 6px #000}#actions{position:absolute;right:var(--pad);bottom:var(--pad);display:flex;gap:6px}.icon{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(10px);color:var(--dim);transition:all .15s}.icon:hover{color:var(--ink);border-color:#bed2ff59}.icon.on{color:var(--cyan);border-color:#46d9ff80}#probe{position:fixed;padding:8px 10px;pointer-events:none;font-size:12px;opacity:0;transition:opacity .15s;min-width:150px;z-index:5}#probe.show{opacity:1}#probe .v{font:500 20px/1.1 var(--mono)}#probe .q{color:var(--dim)}#toast{position:absolute;left:50%;top:var(--pad);transform:translate(-50%,-12px);padding:10px 16px;opacity:0;transition:all .35s;pointer-events:none;max-width:min(520px,80vw);text-align:center}#toast.show{opacity:1;transform:translate(-50%)}#labels{position:fixed;inset:0;pointer-events:none;overflow:hidden}.lbl{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;text-align:center;text-shadow:0 1px 8px #000,0 0 3px #000;transition:opacity .3s}.lbl .rn{font:500 10px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#ebf2ffd9}.lbl .rd{font:500 11px var(--mono)}.lbl.router .rn{color:#fff}#intro{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(ellipse at center,#04060b59,#04060bd9);transition:opacity 1s;z-index:10}body.entered #intro{opacity:0;pointer-events:none}#intro .card{max-width:520px;padding:24px;text-align:center}#intro h2{font:400 clamp(56px,10vw,96px)/.95 var(--serif);margin:6px 0 16px}#intro p{color:var(--dim);font-size:15px;line-height:1.6}#intro .kicker{color:var(--cyan);font-size:11px}#intro .small{font-size:12px;color:var(--faint);margin-top:14px}#intro .btn{font-size:15px;padding:10px 22px;margin-top:10px}#modal{position:fixed;inset:0;display:grid;place-items:center;background:#02030699;z-index:20}#modal .sheet{position:relative;width:min(760px,calc(100vw - 24px));max-height:calc(100vh - 40px);overflow:auto;padding:22px 24px}#modal .close{position:absolute;right:12px;top:12px;width:32px;height:32px}#modal h2{font:400 34px/1.1 var(--serif);margin:0 0 10px}#modal h4{margin:18px 0 6px;font-weight:600}#modal p,#modal li{color:var(--dim);line-height:1.6}#modal table{border-collapse:collapse;font-size:12.5px;width:100%;margin:6px 0}#modal td,#modal th{border-top:1px solid var(--line);padding:5px 8px;text-align:left;color:var(--dim)}#modal th{color:var(--ink);font-weight:500}#modal .imp{display:grid;grid-template-columns:1fr 220px;gap:16px;align-items:start}#modal .imp canvas{position:static;width:100%;height:auto;border-radius:8px;background:#fff}#modal label{display:block;color:var(--dim);font-size:12px;margin:10px 0 4px}#modal input[type=number]{width:100%;padding:8px;border-radius:8px;border:1px solid var(--line);background:#ffffff0d;color:var(--ink);font:14px var(--mono)}#modal input[type=range]{width:100%;accent-color:var(--cyan)}#drop{position:fixed;inset:0;display:grid;place-items:center;background:#040c14b3;border:2px dashed var(--cyan);z-index:30;font:400 40px var(--serif)}#fail{position:fixed;inset:0;display:grid;place-items:center;padding:30px;text-align:center;color:var(--dim);z-index:40;background:#04060b}@media (max-width: 760px){#brand h1{font-size:34px}#brand .tag{display:none}#brand{max-width:calc(100vw - 2 * var(--pad))}#panel{inset:auto 0 0;width:auto;border-radius:16px 16px 0 0;max-height:34vh;padding:12px var(--pad) calc(10px + env(safe-area-inset-bottom))}#panel section{margin-bottom:10px}#report{top:auto;bottom:calc(34vh + 8px);right:var(--pad);width:auto;left:var(--pad);padding:10px 12px;max-height:24vh}#report #legend,#report h3,#report #rooms{display:none}#report.open #legend,#report.open h3,#report.open #rooms{display:grid}#report.open h3{display:flex}.big span{font-size:34px}#status{display:none}#actions{top:var(--pad);bottom:auto;right:var(--pad);flex-direction:column}#modal .imp{grid-template-columns:1fr}}
