/*! tailwindcss v4.3.5 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:host,:root{--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}}@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.table{display:table}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, )}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow\!{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}}:root{--bg-deep:#09090b;--bg:#0e0e11;--panel:#131316;--panel-2:#18181c;--panel-3:#1f1f25;--field:#0c0c0e;--field-2:#1b1b20;--line:#ffffff14;--line-2:#ffffff0d;--ink:#f4f4f5;--ink-2:#c8c8d0;--muted:#8a8a95;--muted-2:#5c5c66;--accent:#e07a38;--accent-hi:#eb8d4f;--accent-ink:#fff;--accent-soft:#e07a3824;--accent-line:#e07a386b;--teal:#3fb8bf;--teal-soft:#3fb8bf21;--teal-line:#3fb8bf66;--teal-ink:#041e20;--danger:#ef5f5f;--danger-soft:#ef5f5f1f;--ok:#34d399;--warn:#f59e0b;--paper:#f5f3ee;--paper-2:#faf9f6;--paper-edge:#e4e0d6;--shadow-lg:0 16px 40px #00000085;--shadow-md:0 6px 18px #00000059;--radius:8px;--seg-w:68px}*{box-sizing:border-box}body,html{background:var(--bg-deep);height:100%;color:var(--ink);overscroll-behavior:none;touch-action:manipulation;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;margin:0;font:12.5px/1.5 -apple-system,BlinkMacSystemFont,Inter,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}::selection{background:var(--accent-soft);color:var(--accent-hi)}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-thumb{background:#ffffff1c padding-box padding-box;border:2px solid #0000;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#ffffff38 padding-box padding-box}::-webkit-scrollbar-track{background:0 0}.app{background:var(--bg-deep);height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;grid-template-rows:46px minmax(0,1fr) 28px;grid-template-columns:minmax(0,1fr);display:grid}input,textarea{-webkit-user-select:text;user-select:text}header{background:var(--panel);border-bottom:1px solid var(--line);z-index:40;grid-column:1/-1;height:46px;padding:0 10px;position:relative}.hbar-left,header{align-items:center;gap:8px;display:flex}.hbar-left{flex:none}.hbar-tools{scrollbar-width:none;flex:auto;align-items:center;gap:6px;min-width:0;display:flex;overflow:auto hidden}.hbar-tools::-webkit-scrollbar{display:none}.hbar-right{gap:6px}.brand,.hbar-right{flex:none;align-items:center;display:flex}.brand{gap:7px;margin:0 2px}.logo{width:26px;height:26px;color:var(--ink);background:var(--panel-3);border:1px solid var(--line);border-radius:6px;flex:none;place-items:center;display:grid}.brand b{letter-spacing:.2px;color:var(--ink);white-space:nowrap;font-size:13.5px;font-weight:650}.brand-sub{color:var(--muted);font-size:11px}.brand-sub,.btn{white-space:nowrap;font-weight:500}.btn{cursor:pointer;color:var(--ink-2);background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;padding:5px 9px;font-size:12.5px;transition:background .12s cubic-bezier(.2,0,0,1),color .12s cubic-bezier(.2,0,0,1);display:inline-flex}.btn:hover{color:var(--ink);background:#ffffff0f}.btn:active{transform:translateY(.5px)}.btn:disabled{opacity:.32;cursor:default}.btn svg{flex:none;width:14px;height:14px}.btn.on{background:var(--accent);font-weight:600}.btn.on,.btn.on:hover{color:var(--accent-ink)}.btn.on:hover{background:var(--accent-hi)}.btn.primary{background:var(--accent);color:var(--accent-ink);font-weight:600}.btn.primary:hover{background:var(--accent-hi)}.btn.danger{color:var(--danger)}.btn.danger:hover{background:var(--danger-soft);color:#fca5a5}.btn.chip{border:1px solid #0000}.btn.chip.on{background:var(--accent-soft);color:var(--accent-hi);border-color:var(--accent-line)}.btn.icon{border-radius:6px;padding:6px}.btn.icon svg{width:15px;height:15px}.grp{border:1px solid var(--line);background:var(--field);border-radius:8px;flex:none;align-items:center;gap:2px;padding:2px;display:flex}.spacer{flex:1}.seg{background:var(--field);border-color:var(--line);gap:0;padding:2px}.seg,.seg .btn{position:relative}.seg .btn{z-index:1;width:var(--seg-w);color:var(--muted);border-radius:6px;justify-content:center;padding:5px 0;font-size:12px;font-weight:600;transition:color .2s}.seg .btn:hover{color:var(--ink);background:0 0}.seg .pill{width:var(--seg-w);background:var(--panel-3);border:1px solid #ffffff1f;border-radius:6px;transition:transform .22s cubic-bezier(.2,0,0,1);position:absolute;top:2px;bottom:2px;left:2px}body:not(.m3d) .seg .pill{transform:translateX(calc(2 * var(--seg-w)))}body.m3d:not(.mha3d) .seg .pill{transform:translateX(var(--seg-w))}body.mha3d .seg .pill{transform:translate(0)}body.m3d:not(.mha3d) .seg .btn[data-view="3d"],body.mha3d .seg .btn[data-view=ha3d],body:not(.m3d) .seg .btn[data-view="2d"]{color:var(--ink)}body.busy .seg{pointer-events:none}.ha-pill{border:1px solid var(--line);background:var(--field);border-radius:6px;gap:7px;padding:5px 10px;font-size:12px;font-weight:500}.ha-pill .dot{background:var(--muted-2);border-radius:50%;width:7px;height:7px;transition:background .2s}.ha-pill .ha-label{color:var(--ink-2)}.ha-pill:hover{background:#ffffff0a;border-color:#ffffff2e}.ha-pill[data-status=connected]{background:#34d39914;border-color:#34d39959}.ha-pill[data-status=connected] .dot{background:var(--ok)}.ha-pill[data-status=connected] .ha-label{color:#a7f3d0}.ha-pill[data-status=connecting] .dot{background:var(--warn)}.ha-pill[data-status=connecting] .ha-label{color:#fde68a}.ha-pill[data-status=auth_failed] .dot,.ha-pill[data-status=error] .dot{background:var(--danger)}.ha-pill[data-status=auth_failed] .ha-label,.ha-pill[data-status=error] .ha-label{color:#fecaca}.menu{position:relative}.menu summary{border:1px solid var(--line);background:var(--field);cursor:pointer;color:var(--ink-2);border-radius:6px;align-items:center;gap:5px;padding:5px 9px;font-size:12.5px;font-weight:500;list-style:none;display:inline-flex}.menu summary:hover{color:var(--ink);background:#ffffff0d}.menu summary::-webkit-details-marker{display:none}.menu summary svg{width:13px;height:13px}.menu-pop{background:var(--panel-2);min-width:184px;box-shadow:var(--shadow-lg);z-index:60;border:1px solid #ffffff1c;border-radius:8px;flex-direction:column;padding:4px;animation:fadeIn .14s cubic-bezier(.2,0,0,1);display:flex;position:absolute;top:calc(100% + 6px);right:0}.menu-pop .btn{text-align:left;justify-content:flex-start;width:100%}.menu-pop .sep{background:var(--line);height:1px;margin:4px 6px}aside{background:var(--panel);border-right:1px solid var(--line);overflow:hidden auto}aside.right{border-right:0;border-left:1px solid var(--line)}aside h4{color:var(--muted-2);letter-spacing:.8px;text-transform:uppercase;z-index:2;background:linear-gradient(180deg,var(--panel),var(--panel) 84%,transparent);margin:0;padding:12px 12px 6px;font-size:11px;font-weight:600;position:sticky;top:42px}body.m3d aside h4{top:0}.lib-tabs{z-index:3;background:var(--panel);border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:4px;padding:8px 10px;display:grid;position:sticky;top:0}.lib-tabs .tab{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:6px 4px;font-size:12px;font-weight:600;transition:all .12s}.lib-tabs .tab:hover{color:var(--ink);background:#ffffff0a}.lib-tabs .tab.on{background:var(--panel-3);border-color:var(--line);color:var(--ink)}.lib-grid{grid-template-columns:1fr 1fr;gap:6px;padding:0 10px 8px;display:grid}.item{border:1px solid var(--line-2);background:var(--field);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:pan-y;border-radius:7px;flex-direction:column;align-items:center;gap:4px;padding:9px 4px 7px;transition:border-color .12s,background .12s;display:flex}.item.arch{cursor:pointer}.item.on{border-color:var(--accent-line);background:var(--accent-soft)}.item.dragging{border-color:var(--accent);opacity:.5}@media (hover:hover){.item:hover{background:var(--panel-2);border-color:#ffffff29}}.item svg{width:54px;height:42px}.item b{color:var(--ink-2);font-size:11.5px;font-weight:500}.item small{text-align:center;font-size:10.5px;line-height:1.25}.hint,.item small{color:var(--muted-2)}.hint{padding:10px 12px 16px;font-size:11px;line-height:1.6}#ghost{z-index:100;pointer-events:none;opacity:.85;filter:drop-shadow(0 6px 16px #00000073);position:fixed;top:0;left:0;transform:translate(-50%,-50%)}#ghost svg{width:100%;height:100%;display:block;overflow:visible}main{background:var(--bg-deep);position:relative;overflow:hidden}#paper{z-index:1;padding:0;transition:opacity .15s;position:absolute;inset:0}.paper-sheet{background:var(--paper);position:relative;overflow:hidden}#plan,.paper-sheet{width:100%;height:100%}#plan{touch-action:none;cursor:default;display:block}#plan.panning{cursor:grabbing}#plan.tool-calib,#plan.tool-door,#plan.tool-draw,#plan.tool-measure,#plan.tool-slide,#plan.tool-window{cursor:crosshair}#plan .wall{pointer-events:none}#plan.tool-delwall .wall,#plan.tool-select .wall{pointer-events:all;cursor:pointer;transition:fill .12s,stroke .12s}#plan.tool-select .wall:hover{fill:#2f6fed59;stroke:#2f6fed;stroke-width:2px}#plan.tool-delwall .wall:hover{fill:#d9894f}#gOpen [data-door],#gOpen [data-slide],#gOpen [data-window]{pointer-events:none}#plan.tool-delwall [data-door],#plan.tool-delwall [data-slide],#plan.tool-delwall [data-window],#plan.tool-door [data-door],#plan.tool-select [data-door],#plan.tool-select [data-slide],#plan.tool-select [data-window]{pointer-events:all;cursor:pointer}#plan.tool-select [data-door]:hover,#plan.tool-select [data-slide]:hover,#plan.tool-select [data-window]:hover{filter:drop-shadow(0 0 4px #2f6fedbf);cursor:grab}#plan.tool-select .room:hover{opacity:.84}#plan .furn{cursor:move}@media (hover:hover){#plan .furn:hover{filter:drop-shadow(0 0 2px #e07a38b3)}}[data-handle]{cursor:pointer}[data-handle=size]{cursor:nwse-resize}.hud-tools{z-index:7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-md);background:#131316e0;border:1px solid #ffffff1a;border-radius:8px;flex-direction:column;gap:2px;padding:4px;display:flex;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.hud-tools .btn{border-radius:6px;justify-content:center;padding:8px}.hud-tools .btn svg{width:16px;height:16px}.hud-zoom{z-index:7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-md);background:#131316e0;border:1px solid #ffffff1a;border-radius:8px;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;bottom:14px;right:14px}.hud-zoom .btn{border-radius:5px;padding:5px 7px;font-size:11.5px}.hud-zoom .sep-v{background:var(--line);width:1px;height:14px;margin:0 2px}#view3d{opacity:0;visibility:hidden;z-index:2;background:0 0;transition:opacity .32s,visibility 0s linear .32s;position:absolute;inset:0}main.is3d #view3d{opacity:1;visibility:visible;z-index:2;transition:opacity .32s}main.is3d #paper{opacity:0;transition:opacity .18s .28s}main.is3d #paper,main.is3d #plan{pointer-events:none}#view3d canvas{outline:none;display:block}#load3d{background:var(--bg-deep);z-index:12;flex-direction:column;justify-content:center;align-items:center;gap:14px;transition:opacity .3s,visibility 0s linear .3s;display:flex;position:absolute;inset:0}#load3d.hide{opacity:0;visibility:hidden;pointer-events:none}#load3d p{color:var(--muted);margin:0;font-size:12.5px}.load-ring{border:2px solid #ffffff1a;border-top:2px solid var(--accent);border-radius:50%;width:36px;height:36px;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}#walkOverlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:6;cursor:pointer;background:#09090b99;justify-content:center;align-items:center;display:none;position:absolute;inset:0}#walkOverlay>div{background:var(--panel-2);border:1px solid var(--line);text-align:center;max-width:360px;box-shadow:var(--shadow-lg);border-radius:10px;padding:24px 30px}#walkOverlay h3{margin:0 0 10px;font-size:15px}#walkOverlay p{color:var(--muted);margin:5px 0;font-size:12.5px}#walkOverlay kbd{margin:0 2px}#cross{z-index:5;pointer-events:none;width:14px;height:14px;margin:-7px 0 0 -7px;display:none;position:absolute;top:50%;left:50%}#cross:after,#cross:before{content:"";background:#fff;position:absolute;box-shadow:0 0 2px #000}#cross:before{width:2px;height:14px;top:0;left:6px}#cross:after{width:14px;height:2px;top:6px;left:0}#walkExit{z-index:6;border-radius:7px;padding:8px 14px;display:none;position:absolute;bottom:20px;right:16px}.scalebar{pointer-events:none;color:var(--ink-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:7;background:#131316d9;border:1px solid #ffffff1a;border-radius:6px;padding:5px 9px;font-size:11px;position:absolute;bottom:14px;left:14px}.scalebar .bar{border:1.5px solid var(--ink);border-top:0;height:5px;margin-top:2px}main.is3d .scalebar{opacity:0}.modehint{color:var(--ink);opacity:0;pointer-events:none;z-index:8;box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-align:center;background:#131316e6;border:1px solid #ffffff1a;border-radius:6px;max-width:calc(100% - 40px);padding:6px 12px;font-size:12px;transition:opacity .15s;position:absolute;top:12px;left:50%;transform:translate(-50%)}.modehint.show{opacity:1}#joy{z-index:5;touch-action:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff1a;border:1.5px solid #ffffff73;width:124px;height:124px;display:none;bottom:24px;left:24px;box-shadow:0 4px 16px #0000004d}#joy,#joy i{border-radius:50%;position:absolute}#joy i{pointer-events:none;background:#ffffffe6;width:52px;height:52px;margin:-26px 0 0 -26px;top:50%;left:50%;box-shadow:0 2px 8px #00000059}footer{background:var(--panel);white-space:nowrap;border-top:1px solid var(--line);color:var(--muted);font-variant-numeric:tabular-nums;grid-column:1/-1;align-items:center;gap:14px;padding:0 12px;font-size:11px;display:flex}#tip,footer{overflow:hidden}#tip{text-overflow:ellipsis;color:var(--muted-2)}footer b{color:var(--ink-2);font-weight:600}footer .coord{flex:none;align-items:center;gap:5px;display:inline-flex}.sep-dot{color:var(--muted-2);opacity:.5}.about-btn{border:1px solid var(--line);height:19px;color:var(--muted);cursor:pointer;background:0 0;border-radius:5px;flex:none;align-items:center;gap:4px;padding:2px 7px;font-size:11px;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.about-btn:hover{color:var(--ink);background:#ffffff0d;border-color:#ffffff29}.about-card{width:min(520px,94vw)}.about-body{color:var(--ink-2);font-size:12.5px;line-height:1.65}.about-desc{margin:0 0 10px}.about-features{color:var(--muted);margin:0 0 14px;padding-left:18px;font-size:12px}.about-features li{margin:4px 0}.about-license-box{background:var(--field);border:1px solid var(--line);border-radius:8px;padding:11px 13px;font-size:12px}.about-ack strong{color:var(--ink);margin-bottom:4px;font-size:12px;display:block}.about-ack p{color:var(--muted);margin:0}.about-ack a{color:var(--accent);text-decoration:none}.about-ack a:hover{text-decoration:underline}.about-mit{margin-top:8px}.about-mit summary{cursor:pointer;color:var(--ink-2);-webkit-user-select:none;user-select:none;font-size:11.5px}.about-mit pre{color:var(--muted);white-space:pre-wrap;background:#0000004d;border-radius:6px;max-height:180px;margin:8px 0 0;padding:10px;font-family:ui-monospace,monospace;font-size:10.5px;line-height:1.45;overflow:auto}#panel{min-height:100%}#panel section{border-bottom:1px solid var(--line);padding:13px 14px}#panel section:last-child{border-bottom:0}#panel h3{color:var(--ink);letter-spacing:.3px;margin:0 0 10px;font-size:12px;font-weight:600}#panel h3 small{color:var(--muted-2);margin-left:6px;font-weight:400}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}td{border-bottom:1px solid var(--line-2);padding:5px 2px;font-size:12px}td.r{text-align:right;color:var(--ink-2)}tr.click{cursor:pointer}tr.click:hover td{background:#ffffff09}.sw{vertical-align:-1px;border:1px solid #ffffff38;border-radius:3px;width:10px;height:10px;margin-right:7px;display:inline-block}.total{border-top:1px solid var(--line);justify-content:space-between;margin-top:10px;padding-top:8px;font-size:13px;display:flex}.total b{color:var(--accent-hi);font-weight:650}.muted{color:var(--muted-2)}.form{grid-template-columns:1fr 1fr;gap:8px;display:grid}.form label{color:var(--muted);flex-direction:column;gap:4px;font-size:11.5px;display:flex}.form label.full{grid-column:1/-1}.form input,.form select{border:1px solid var(--line);background:var(--field);width:100%;color:var(--ink);border-radius:6px;padding:6px 8px;font-size:12.5px;transition:border-color .12s}.form input:focus,.form select:focus{border-color:var(--accent-line);outline:none}.form input[type=color]{background:var(--field);height:30px;padding:2px}.form input[type=range]{accent-color:var(--accent);padding:0}.actions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.actions .btn{border:1px solid var(--line);background:var(--field);padding:5px 9px;font-size:12px}.actions .btn:hover{background:#ffffff0f}.actions .btn.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-hi);font-weight:600}.actions .btn.primary{background:var(--accent);color:var(--accent-ink);border-color:#0000}.actions .btn.primary:hover{background:var(--accent-hi)}.actions .btn.danger:hover{background:var(--danger-soft);border-color:#ef5f5f66}.mats{grid-template-columns:1fr 1fr;gap:6px;display:grid}.mat{border:1px solid var(--line);background:var(--field);cursor:pointer;text-align:left;border-radius:6px;align-items:center;gap:8px;padding:6px;transition:border-color .12s,background .12s;display:flex}.mat:hover{border-color:#ffffff29}.mat.on{border-color:var(--accent-line);background:var(--accent-soft)}.mat i{border:1px solid #ffffff2e;border-radius:4px;flex:none;width:22px;height:22px}.mat span{color:var(--ink-2);font-size:11.5px;line-height:1.25}.mat small{color:var(--muted-2);display:block}.kbd{color:var(--muted);grid-template-columns:auto 1fr;gap:4px 10px;font-size:11.5px;display:grid}kbd{background:var(--field-2);border:1px solid var(--line);color:var(--ink-2);border-radius:4px;padding:1px 5px;font:10.5px ui-monospace,Menlo,monospace}.big{font-variant-numeric:tabular-nums;color:var(--ink);font-size:18px;font-weight:650}.stats{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px;display:grid}.stats div{background:var(--field);border:1px solid var(--line-2);border-radius:6px;padding:8px 10px}.stats small{color:var(--muted-2);font-size:11px;display:block}.range{color:var(--muted);align-items:center;gap:6px;padding:0 2px;font-size:12px;display:flex}.range input{width:96px;accent-color:var(--accent)}.range span{font-variant-numeric:tabular-nums;color:var(--ink-2)}#panel select{background:var(--field);color:var(--ink);border:1px solid var(--line)!important}#panel select option{background:var(--panel-2);color:var(--ink)}.ha-tabs{background:#131316f5}.ha-entity-list{flex-direction:column;gap:5px;max-height:220px;display:flex;overflow-y:auto}.ha-entity-row{background:var(--field);border:1px solid var(--line-2);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:11.5px;display:flex}.ha-entity-row .eid{color:var(--muted-2);font-family:ui-monospace,monospace;font-size:10.5px}.ha-badge{border:1px solid var(--line);color:var(--muted);border-radius:4px;padding:1px 6px;font-size:10.5px}.ha-badge.on{color:#a7f3d0;background:#34d3991f;border-color:#34d39959}.rlabel{color:#1f1d1a;white-space:nowrap;pointer-events:none;background:#fffdf9eb;border:1px solid #00000014;border-radius:6px;padding:2px 8px;font-size:11.5px;font-weight:600;box-shadow:0 2px 6px #00000026}.rlabel small{color:#787166;margin-left:4px;font-weight:400}#fab{box-shadow:var(--shadow-lg);z-index:9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#131316eb;border:1px solid #ffffff1c;border-radius:8px;align-items:center;gap:3px;max-width:calc(100% - 24px);padding:4px;transition:opacity .15s,transform .15s,visibility 0s linear .15s;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%,10px)}#fab,main.drawer-panel #fab{opacity:0;visibility:hidden}#fab.show{opacity:1;visibility:visible;transition:opacity .15s,transform .15s;transform:translate(-50%)}#fab .name{text-overflow:ellipsis;white-space:nowrap;max-width:10em;color:var(--ink);padding:0 8px 0 6px;font-size:12px;font-weight:600;overflow:hidden}#fab .btn{border:1px solid #0000}#fab .btn:hover{background:#ffffff12}#fab .sep{background:var(--line);align-self:stretch;width:1px;margin:4px 2px}#toast{background:var(--panel-2);color:var(--ink);opacity:0;pointer-events:none;z-index:200;box-shadow:var(--shadow-lg);border:1px solid #ffffff1f;border-radius:6px;padding:7px 14px;font-size:12.5px;font-weight:500;transition:all .18s cubic-bezier(.2,0,0,1);position:fixed;bottom:96px;left:50%;transform:translate(-50%)translateY(14px)}#toast.show{opacity:1;transform:translate(-50%)}.only2d,.only3d{animation:fadeIn .18s cubic-bezier(.2,0,0,1) both}@keyframes fadeIn{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:none}}body.m3d .only2d,body:not(.m3d) .only3d{display:none!important}body.m3d .app:not(.ha-glass) #lib{display:block!important}.app.ha-glass aside.lib>*{display:none!important}.app.ha-glass aside.lib{-webkit-backdrop-filter:blur(22px)saturate(165%);backdrop-filter:blur(22px)saturate(165%);background:linear-gradient(155deg,#ffffff29,#141a2647);border:1px solid #ffffff29;border-radius:14px;margin:12px 0 12px 12px;box-shadow:inset 0 1px #ffffff47,0 14px 36px #00000038}#panel>*{animation:fadeIn .18s cubic-bezier(.2,0,0,1) both}@media (min-width:1101px){.app{grid-template-columns:minmax(0,1fr)}aside.lib,aside.right,main{grid-area:2/1}aside.lib,aside.right{z-index:30;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#131316f0;transition:transform .34s cubic-bezier(.22,1,.36,1),box-shadow .3s,opacity .24s;position:relative}aside.lib{justify-self:start;width:244px;box-shadow:6px 0 28px #00000061}aside.lib,aside.right{transform:translate(0)}aside.right{justify-self:end;width:304px;box-shadow:-6px 0 28px #00000061}.app.drawer-handoff aside.lib,.app.hide-lib aside.lib{box-shadow:none;pointer-events:none;opacity:0;transform:translate(-105%)}.app.ha-glass aside.lib{-webkit-backdrop-filter:blur(22px)saturate(165%);backdrop-filter:blur(22px)saturate(165%)}.app.ha-glass.drawer-handoff aside.lib,.app.ha-glass.hide-lib aside.lib{box-shadow:none;pointer-events:none;opacity:0;transform:translate(calc(-100% - 24px))}.app.drawer-handoff aside.right,.app.hide-panel aside.right{box-shadow:none;pointer-events:none;opacity:0;transform:translate(105%)}aside{overflow-x:hidden}aside.lib>div{min-width:234px}#panel{min-width:290px}.hud-tools,.scalebar{transition:left .34s cubic-bezier(.22,1,.36,1)}.fps-badge,.hud-zoom{transition:right .34s cubic-bezier(.22,1,.36,1)}.app:not(.hide-lib):not(.drawer-handoff) .hud-tools{left:256px}.app:not(.hide-lib):not(.drawer-handoff) .scalebar{left:258px}.app:not(.hide-panel):not(.drawer-handoff) .hud-zoom{right:318px}.app:not(.hide-panel):not(.drawer-handoff) .fps-badge{right:316px}}.narrow-only{display:none!important}@media (max-width:1100px){.grp.narrow-only{display:flex!important}#fab .btn.narrow-only,.btn.narrow-only{display:inline-flex!important}.app{grid-template-columns:minmax(0,1fr)}aside.lib,aside.right,main{grid-area:2/1}aside.lib,aside.right{z-index:50;width:min(320px,88vw);transition:transform .22s cubic-bezier(.2,0,0,1),box-shadow .22s;position:relative}aside.lib{justify-self:start;transform:translate(-110%)}aside.right{justify-self:end;transform:translate(110%)}aside.open{transform:none;box-shadow:0 0 36px #00000080}.app.drawer-handoff aside.lib{opacity:0;box-shadow:none;transform:translate(-115%)}.app.drawer-handoff aside.right{opacity:0;box-shadow:none;transform:translate(115%)}.lib-grid{grid-template-columns:1fr 1fr 1fr}}@media (max-width:640px){.brand-sub{display:none}:root{--seg-w:58px}.hist{display:none}.hud-tools{left:8px}.hud-zoom{bottom:8px;right:8px}}@media (pointer:coarse){body{font-size:14px}header{gap:6px;padding:0 8px}.btn{padding:8px 12px}.btn,.btn.icon{min-height:38px}.btn.icon{padding:8px}.seg .btn,.seg .pill{width:var(--seg-w)}:root{--seg-w:74px}.menu summary{padding:8px 12px}.menu-pop .btn{padding:11px 12px}.item{padding:11px 4px 8px}.form input,.form select{padding:8px;font-size:16px}.form input[type=color]{height:40px}#fab .btn,.actions .btn{min-height:42px;padding:9px 12px}td{padding:7px 2px}.mat{padding:9px 8px}.range input{width:110px!important}#joy{width:140px;height:140px}#joy i{width:60px;height:60px;margin:-30px 0 0 -30px}}.modal-backdrop{z-index:500;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#050507b8;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:var(--panel-2);width:min(480px,94vw);box-shadow:var(--shadow-lg);border:1px solid #ffffff1c;border-radius:10px;padding:20px;animation:modalIn .16s cubic-bezier(.2,0,0,1)}@keyframes modalIn{0%{opacity:0;transform:scale(.97)translateY(6px)}to{opacity:1;transform:none}}.modal-head{justify-content:space-between;margin-bottom:14px}.modal-head,.modal-head h3{align-items:center;display:flex}.modal-head h3{color:var(--ink);gap:8px;margin:0;font-size:14.5px;font-weight:650}.modal-head .icon-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;padding:5px 7px;font-size:15px}.modal-head .icon-btn:hover{color:var(--ink);background:#ffffff0f}.form-item{margin-top:12px}.form-item:first-child{margin-top:0}.form-item label{color:var(--ink-2);margin-bottom:6px;font-size:12px;font-weight:600;display:block}.form-item input[type=number],.form-item input[type=password],.form-item input[type=text]{box-sizing:border-box;border:1px solid var(--line);background:var(--field);width:100%;color:var(--ink);border-radius:6px;outline:none;padding:8px 10px;font-size:12.5px;transition:border-color .15s}.form-item input[type=number]:focus,.form-item input[type=password]:focus,.form-item input[type=text]:focus{border-color:var(--accent-line)}.form-item input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px}.ha-status-banner{background:var(--field);color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:9px 11px;font-size:12px;line-height:1.5}.ha-status-banner.status-connected{color:#a7f3d0;background:#34d39917;border-color:#34d39959}.ha-status-banner.status-connecting{color:#fde68a;background:#f59e0b17;border-color:#f59e0b59}.ha-status-banner.status-auth_failed,.ha-status-banner.status-error{color:#fecaca;background:#ef5f5f1a;border-color:#ef5f5f59}.modal-foot{align-items:center;gap:8px;margin-top:18px;display:flex}.ha-status-dot{vertical-align:middle;border-radius:50%;width:7px;height:7px;margin-left:6px;display:inline-block}.ha-status-dot.online{background:var(--ok)}.ha-status-dot.offline{background:var(--muted-2)}.ob-card{text-align:left;width:min(480px,92vw)}.ob-dots{gap:5px;margin-bottom:14px;display:flex}.ob-dots .dot{background:var(--line);border-radius:50%;width:7px;height:7px;transition:background .15s,width .15s}.ob-dots .dot.on{background:var(--accent);border-radius:3px;width:20px}.ob-body h2{color:var(--ink);margin:0 0 8px;font-size:17px;font-weight:650}.ob-body p{color:var(--ink-2);margin:0 0 12px;font-size:12.5px;line-height:1.6}.ob-body ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ob-body li{color:var(--muted);align-items:baseline;gap:9px;font-size:12.5px;line-height:1.55;display:flex}.ob-body li:before{content:"";background:var(--accent);border-radius:1px;flex:none;width:5px;height:5px;transform:translateY(-2px)}.fps-badge{z-index:12;pointer-events:none;font-variant-numeric:tabular-nums;letter-spacing:.2px;color:#ffffffd9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#131316a6;border:1px solid #ffffff1a;border-radius:5px;padding:3px 8px;font-size:11px;font-weight:600;position:absolute;bottom:12px;right:12px}.fps-badge .fps-unit{transition:color .15s}.fps-badge.rendering .fps-unit{color:#86efac}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}