:root{--color-primary:#3a4fa3;--color-primary-hover:#2f4189;--color-on-primary:#fff;--color-navy:#2b3150;--color-navy-raised:#363d61;--color-on-navy:#e8eaf3;--color-on-navy-muted:#a3a9c4;--color-bg:#f3ede4;--color-surface:#fbf8f3;--color-border:#dcd3c5;--color-sand:#bfa88a;--color-text:#1f2230;--color-text-muted:#6b6f80;--color-success:#3e9b5c;--color-danger:#c4503f;--color-warning:#c9a15a;--color-danger-bg:#fbe4e1;--color-danger-border:#e6a29a;--color-strength-mid:#a9b845;--color-hero-bg:#343645;--color-hero-text:#f6efe3;--color-viewer-light:#fff;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--shadow-card:0 1px 2px #1f223014, 0 4px 12px #1f22300f;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--text-sm:13px;--text-md:15px;--text-lg:18px;--text-xl:24px;--text-2xl:32px}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-sans);font-size:var(--text-md);color:var(--color-text);background:var(--color-bg);margin:0}h1,h2,h3{margin:0}.btn{font:inherit;border-radius:var(--radius-md);padding:var(--space-3) var(--space-5);cursor:pointer;border:1px solid #0000;font-weight:600}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-outline{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.input{font:inherit;width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text)}.input:focus-visible,.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.field{gap:var(--space-2);font-size:var(--text-sm);font-weight:600;display:grid}.error-text{color:var(--color-danger);font-size:var(--text-sm);margin:0}.auth-wrap{min-height:100vh;padding:var(--space-4);place-items:center;display:grid}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-card);padding:var(--space-8);gap:var(--space-5);display:grid}.brand{font-size:var(--text-xl);color:var(--color-navy);font-weight:700}.muted{color:var(--color-text-muted);font-size:var(--text-sm)}.link-btn{color:var(--color-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.auth-page{grid-template-columns:1fr 1fr;min-height:100vh;display:grid}.auth-form-side{padding:var(--space-8) var(--space-10);background:var(--color-bg);flex-direction:column;display:flex}.auth-logo{display:flex}.logo{align-items:center;gap:var(--space-2);font-size:var(--text-xl);color:var(--color-navy);font-weight:500;display:inline-flex}.logo-mark{border-radius:22%;width:auto;height:1.9em;display:block}.logo-text{gap:.3em;display:grid}.logo-tag{aspect-ratio:800/54;background:var(--color-text-muted);width:7.3em;display:block;-webkit-mask-position:0;mask-position:0;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.sidebar .logo-tag,.viewer:not(.light) .logo-tag{background:var(--color-sand)}.logo-word{aspect-ratio:800/59;background:currentColor;width:9.5em;display:block;-webkit-mask-position:0;mask-position:0;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.auth-form-body{flex:1;align-content:center;justify-items:center;display:grid}.auth-form{gap:var(--space-4);width:100%;max-width:420px;display:grid}.auth-form h1{font-size:var(--text-2xl);line-height:1.15}.auth-sub{margin:0 0 var(--space-2);color:var(--color-text);font-size:var(--text-lg);line-height:1.4}.field label{font-weight:600}.field .input{font-weight:400}.btn-block{width:100%}.auth-switch{text-align:center;font-size:var(--text-md);margin:0}.auth-switch a{color:var(--color-primary);font-weight:600;text-decoration:none}.auth-switch a:hover{text-decoration:underline}select.input{appearance:auto}.input::placeholder{color:var(--color-text-muted);font-weight:400}.input.invalid,.input-wrap.invalid .input{border-color:var(--color-danger)}.input-wrap{position:relative}.input-wrap .input{padding-right:var(--space-10)}.eye-btn{height:100%;padding:0 var(--space-3);color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;place-items:center;display:grid;position:absolute;top:0;right:0}.alert{justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--color-danger-border);border-radius:var(--radius-md);background:var(--color-danger-bg);color:var(--color-danger);font-size:var(--text-sm);align-items:start;display:flex}.alert-close{color:inherit;font-size:var(--text-lg);cursor:pointer;background:0 0;border:0;padding:0;line-height:1}.strength-bars{gap:var(--space-1);grid-template-columns:repeat(5,1fr);display:grid}.strength-bars span{background:var(--color-sand);opacity:.45;border-radius:2px;height:4px}.strength-bars span.on{opacity:1}.strength-bars span.on.s1{background:var(--color-danger)}.strength-bars span.on.s2{background:var(--color-warning)}.strength-bars span.on.s3,.strength-bars span.on.s4{background:var(--color-strength-mid)}.strength-bars span.on.s5{background:var(--color-success)}.strength-label{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--color-text-muted);justify-content:space-between;font-weight:400;display:flex}.strength-label strong.s5{color:var(--color-success)}.strength-label strong.s1{color:var(--color-danger)}.auth-hero{background:var(--color-hero-bg);padding:var(--space-8) 0;flex-direction:column;justify-content:center;display:flex;position:relative;overflow:hidden}.auth-hero-img{width:100%;height:auto;display:block}@media (width<=860px){.auth-page{background:var(--color-hero-bg);flex-direction:column;display:flex;position:relative}.auth-hero{padding:var(--space-4) var(--space-4) var(--space-8);order:1;position:static}.auth-hero-img{width:100%;margin-left:0}.auth-form-side{margin-top:calc(-1 * var(--space-5));border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-6) var(--space-5);flex:1;order:2}.auth-logo{top:var(--space-4);z-index:1;justify-content:center;position:absolute;left:0;right:0}.auth-logo .logo{color:var(--color-hero-text)}.auth-logo .logo-tag{background:var(--color-sand)}.auth-hero{padding-top:calc(var(--space-10) + var(--space-6))}.auth-form-body{align-content:start}.auth-form h1{font-size:var(--text-xl)}.auth-sub{font-size:var(--text-md)}}.shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--color-navy);color:var(--color-on-navy);padding:var(--space-6) var(--space-4);gap:var(--space-8);flex-direction:column;display:flex}.sidebar .logo{color:var(--color-on-navy);font-size:17px}.sidebar-nav{gap:var(--space-1);display:grid}.nav-item{align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-md);color:var(--color-on-navy-muted);font-size:var(--text-md);text-decoration:none;display:flex}a.nav-item:hover,a.nav-item.active{background:var(--color-navy-raised);color:var(--color-on-navy)}.nav-item.disabled{opacity:.7;cursor:not-allowed}.soon{padding:2px var(--space-2);background:var(--color-sand);color:var(--color-navy);border-radius:999px;margin-left:auto;font-size:11px;font-style:normal;font-weight:600}.main{flex-direction:column;min-width:0;display:flex}.topbar{justify-content:flex-end;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-8);display:flex}.topbar-user{font-size:var(--text-sm);color:var(--color-text-muted)}.avatar{background:var(--color-sand);width:36px;height:36px;color:var(--color-navy);font-weight:700;font-size:var(--text-sm);border-radius:50%;place-items:center;display:grid}.content{padding:var(--space-2) var(--space-8) var(--space-10);gap:var(--space-6);align-content:start;display:grid}.page-head{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.page-head h1{font-size:var(--text-2xl)}.section-title{font-size:var(--text-lg);margin-top:var(--space-2)}.btn{justify-content:center;align-items:center;gap:var(--space-2);white-space:nowrap;text-decoration:none;display:inline-flex}.btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.stats{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);grid-template-columns:repeat(3,1fr);display:grid}.stat{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);display:flex}.stat+.stat{border-left:1px solid var(--color-border)}.stat>div{display:grid}.stat strong{font-size:var(--text-md)}.stat span:not(.stat-icon){color:var(--color-text-muted);font-size:var(--text-sm)}.stat-icon{border-radius:var(--radius-md);background:var(--color-bg);width:40px;height:40px;color:var(--color-primary);place-items:center;display:grid}.grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-direction:column;display:flex;position:relative;overflow:hidden}.thumb{background:var(--color-navy-raised);height:130px;color:var(--color-on-navy-muted);place-items:center;display:grid;position:relative}.thumb svg{width:40px;height:40px}.badge{top:var(--space-2);right:var(--space-2);padding:2px var(--space-3);border-radius:999px;font-size:12px;font-weight:600;position:absolute}.badge-ready{background:color-mix(in srgb, var(--color-success) 20%, var(--color-surface));color:var(--color-success)}.card-body{padding:var(--space-3) var(--space-4);gap:var(--space-1);display:grid}.card-body h3{font-size:var(--text-md);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.card-body p{margin:0}.card-actions{padding:0 var(--space-3) var(--space-3);justify-content:flex-end;margin-top:auto;display:flex}.icon-btn{color:var(--color-text-muted);padding:var(--space-2);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;display:grid}.icon-btn:hover{color:var(--color-danger);background:var(--color-danger-bg)}.icon-btn:focus-visible{outline:2px solid var(--color-primary)}.card.empty{text-align:center;justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-6);box-shadow:none;border-style:dashed}.card.empty p{margin:0}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-6)}.upload-form{gap:var(--space-5);max-width:720px;display:grid}.dropzone{justify-items:center;gap:var(--space-2);padding:var(--space-8) var(--space-4);border:2px dashed var(--color-primary);border-radius:var(--radius-lg);background:color-mix(in srgb, var(--color-primary) 6%, var(--color-surface));color:var(--color-primary);text-align:center;display:grid}.dropzone.drag{background:color-mix(in srgb, var(--color-primary) 14%, var(--color-surface))}.dropzone p{color:var(--color-text);word-break:break-all;margin:0}.dropzone p.muted{color:var(--color-text-muted)}.steps{gap:var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted);grid-template-columns:repeat(3,1fr);margin:0;padding:0;list-style:none;display:grid}.steps li{gap:var(--space-2);display:grid}.steps li.active,.steps li.done{color:var(--color-text);font-weight:600}.step-bar{background:var(--color-border);border-radius:2px;height:4px;overflow:hidden}.step-bar>span{background:var(--color-primary);height:100%;transition:width .2s;display:block}.form-actions{justify-content:flex-end;gap:var(--space-3);display:flex}.mobilebar,.tabbar,.m-only,.dash-tools,.chips,.meta-icon{display:none}.mb-btn{border-radius:var(--radius-md);width:40px;height:40px;color:var(--color-navy);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.mb-btn:hover{background:var(--color-border)}.mb-btn:focus-visible,.avatar-btn:focus-visible,.tab:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.mobilebar .logo{font-size:var(--text-lg);margin-right:auto}.avatar-btn{cursor:pointer;box-shadow:0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-primary);border:0;padding:0}.mb-panel{z-index:30;gap:var(--space-1);padding:var(--space-3) var(--space-4) var(--space-4);background:var(--color-navy);border-top:1px solid var(--color-navy-raised);box-shadow:var(--shadow-card);display:grid;position:absolute;top:100%;left:0;right:0}.mb-profile{left:auto;right:var(--space-3);width:min(280px, calc(100% - 2 * var(--space-3)));border-radius:var(--radius-md);justify-items:stretch;gap:var(--space-3)}.mb-profile p{min-width:0;color:var(--color-on-navy);gap:2px;margin:0;display:grid}.mb-profile p strong,.mb-profile p span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mb-profile p span{font-size:var(--text-sm);color:var(--color-on-navy-muted)}.mb-profile .btn-outline,.tab-sheet .btn-outline{color:var(--color-on-navy);border-color:var(--color-on-navy-muted);background:0 0}.tab{min-height:64px;padding:var(--space-2) var(--space-1);color:var(--color-on-navy-muted);font:inherit;cursor:pointer;background:0 0;border:0;align-content:center;justify-items:center;gap:2px;font-size:12px;text-decoration:none;display:grid;position:relative}.tab svg{width:24px;height:24px}.tab.active{color:var(--color-on-navy)}.tab.active:before{content:"";background:var(--color-primary);border-radius:0 0 3px 3px;height:3px;position:absolute;top:0;left:22%;right:22%}.tab.disabled{opacity:.5;cursor:not-allowed}.tab-sheet{right:var(--space-2);bottom:calc(100% + var(--space-2));width:min(260px, calc(100% - 2 * var(--space-2)));gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-navy);box-shadow:var(--shadow-card);display:grid;position:absolute}.search{align-items:center;gap:var(--space-2);min-width:0;height:44px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);flex:1;display:flex}.search:focus-within{border-color:var(--color-primary)}.search input{min-width:0;font:inherit;color:var(--color-text);background:0 0;border:0;outline:0;flex:1}.sort-wrap,.card-foot{position:relative}.sort-btn{align-items:center;gap:var(--space-2);height:44px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-navy);font:inherit;cursor:pointer;display:inline-flex}.menu{z-index:10;min-width:180px;padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-card);display:grid;position:absolute}.sort-wrap .menu{top:calc(100% + 4px);right:0}.card-foot .menu{min-width:160px;bottom:calc(100% + 4px);left:0}.menu button{padding:var(--space-3);border-radius:var(--radius-sm);color:var(--color-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0}.menu button[aria-checked=true]{background:var(--color-bg);font-weight:700}.menu button.danger{color:var(--color-danger)}.chip{padding:var(--space-2) var(--space-4);border:1px solid var(--color-sand);color:var(--color-text);font:inherit;cursor:pointer;background:0 0;border-radius:999px;flex:none}.chip[aria-pressed=true]{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 16%, var(--color-surface));font-weight:600}.status-chip{padding:2px var(--space-3);background:color-mix(in srgb, var(--color-success) 20%, var(--color-surface));color:var(--color-success);border-radius:999px;font-size:12px;font-weight:600;display:inline-block}.meta-share{align-items:center;gap:var(--space-1);display:flex}.meta-icon svg{width:14px;height:14px}@media (width<=860px){.shell{padding-bottom:calc(64px + env(safe-area-inset-bottom));grid-template-rows:auto 1fr;grid-template-columns:1fr}.sidebar,.topbar,.d-only{display:none}.mobilebar{z-index:20;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-bg);display:flex;position:sticky;top:0}.tabbar{z-index:20;padding-bottom:env(safe-area-inset-bottom);background:var(--color-navy);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.content{gap:var(--space-4);padding-top:var(--space-2);padding-left:var(--space-4);padding-right:var(--space-4);grid-template-columns:minmax(0,1fr)}.page-head{gap:var(--space-3);flex-wrap:nowrap}.page-head h1{font-size:20px}.page-head .btn{padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}.page-head .btn svg{width:16px;height:16px}.m-only{display:block}.dash-tools{align-items:center;gap:var(--space-2);display:flex}.chips{gap:var(--space-2);scrollbar-width:none;display:flex;overflow-x:auto}.meta-icon{display:inline-grid}.stats{grid-template-columns:repeat(3,1fr)}.stat{padding:var(--space-3) var(--space-2);text-align:center;flex-direction:column;justify-content:center;gap:0}.stat-icon{display:none}.stat+.stat{border-left:1px solid var(--color-border);border-top:0}.stat>div{flex-direction:column-reverse;align-items:center;display:flex}.stat span:not(.stat-icon){color:var(--color-text);font-size:var(--text-lg);font-weight:700;line-height:1.25}.stat strong{color:var(--color-text-muted);font-size:12px;font-weight:400}.grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr))}.thumb{height:104px}.thumb .badge{display:none}.card-body{padding:var(--space-3)}.card-body h3{font-size:var(--text-md)}.card-body .muted{font-size:12px}.card-actions{padding:0 var(--space-3) var(--space-3)}.card-foot.m-only{justify-content:space-between;align-items:center;width:100%;display:flex}.card.empty{grid-column:1/-1}}.viewer{background:var(--color-hero-bg);height:100dvh;color:var(--color-on-navy);flex-direction:column;display:flex;position:relative}.viewer-top{align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);display:flex}.viewer-logo{color:var(--color-on-navy);font-size:var(--text-lg)}.viewer-name{color:var(--color-on-navy-muted);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;max-width:40vw;margin-left:auto;overflow:hidden}.viewer-canvas{flex:1;min-height:0;position:relative}.viewer-canvas canvas{display:block}.viewer-overlay{place-content:center;justify-items:center;gap:var(--space-3);text-align:center;padding:var(--space-6);display:grid;position:absolute;inset:0}.viewer-overlay p{color:var(--color-on-navy-muted);max-width:420px;margin:0}.spinner{border:3px solid var(--color-navy-raised);border-top-color:var(--color-primary);border-radius:50%;width:32px;height:32px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.progress{background:var(--color-navy-raised);border-radius:2px;width:220px;height:4px;overflow:hidden}.progress>span{background:var(--color-primary);height:100%;transition:width .15s;display:block}.viewer-hint{left:var(--space-4);bottom:var(--space-4);font-size:var(--text-sm);color:var(--color-on-navy-muted);pointer-events:none;margin:0;position:absolute}.viewer-toolbar{gap:var(--space-3);max-width:calc(100vw - 2 * var(--space-4));display:flex;position:absolute;top:68px;left:50%;overflow-x:auto;transform:translate(-50%)}.tool-group{gap:var(--space-1);padding:var(--space-1);border:1px solid var(--color-on-navy-muted);border-radius:var(--radius-md);background:var(--color-navy);flex-shrink:0;display:flex}.tool{min-width:56px;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--color-on-navy);font:inherit;cursor:pointer;background:0 0;border:0;justify-items:center;gap:2px;font-size:11px;text-decoration:none;display:grid}.tool:hover:not(:disabled){background:var(--color-navy-raised)}.tool.active{background:var(--color-primary)}.tool:disabled{opacity:.4;cursor:not-allowed}.tool:focus-visible{outline:2px solid var(--color-on-navy);outline-offset:1px}.tool.back{min-width:0;font-size:var(--text-sm);grid-auto-flow:column;align-items:center}@media (width<=860px){.viewer-top{flex-wrap:wrap}.viewer-toolbar{top:auto;bottom:var(--space-3);scrollbar-width:none;scroll-snap-type:x proximity;justify-content:safe center;max-width:none;padding:0 14px;left:0;right:0;transform:none;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 14px calc(100% - 14px),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 14px calc(100% - 14px),#0000 100%)}.viewer-toolbar::-webkit-scrollbar{display:none}.tool-group{scroll-snap-align:start}.walk-hint{border-radius:var(--radius-md)}.walk-hint span,.viewer-hint{display:none}}.card-body h3 a{color:inherit;text-decoration:none}.card-body h3 a:hover{text-decoration:underline}a.thumb{text-decoration:none}.walk-layer{position:absolute;inset:0}.look-layer{touch-action:none;cursor:crosshair;position:absolute;inset:0}.look-layer.pointer{cursor:default}.crosshair{background:var(--color-on-navy);opacity:.7;pointer-events:none;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%}.viewer-overlay.resume{background:color-mix(in srgb, var(--color-hero-bg) 70%, transparent);color:inherit;font:inherit;cursor:pointer;border:0}.walk-hint{left:50%;bottom:var(--space-4);padding:var(--space-2) var(--space-4);background:color-mix(in srgb, var(--color-navy) 80%, transparent);color:var(--color-on-navy-muted);font-size:var(--text-sm);text-align:center;pointer-events:none;max-width:calc(100% - 2 * var(--space-4));border-radius:999px;margin:0;animation:.6s 7s forwards hint-fade;position:absolute;transform:translate(-50%)}@keyframes hint-fade{to{opacity:0;visibility:hidden}}.joystick{left:var(--space-6);bottom:calc(var(--space-10) + var(--space-8));background:color-mix(in srgb, var(--color-sand) 35%, transparent);border:1px solid var(--color-sand);touch-action:none;border-radius:50%;place-items:center;width:128px;height:128px;display:grid;position:absolute}.jump-btn{right:var(--space-6);bottom:calc(var(--space-10) + var(--space-8));background:color-mix(in srgb, var(--color-sand) 35%, transparent);border:1px solid var(--color-sand);width:72px;height:72px;color:var(--color-navy);touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute}.jump-btn:active{background:color-mix(in srgb, var(--color-sand) 60%, transparent)}.jump-btn svg{width:30px;height:30px}.joystick-knob{background:var(--color-navy);border:2px solid var(--color-sand);pointer-events:none;border-radius:50%;width:48px;height:48px}.tool-select{cursor:default;gap:var(--space-1)}.tool-select select{font:inherit;background:var(--color-navy-raised);color:var(--color-on-navy);border:1px solid var(--color-on-navy-muted);border-radius:var(--radius-sm);padding:2px var(--space-2);font-size:12px}@media (width<=860px){.walk-hint{top:var(--space-2);border-radius:var(--radius-md);bottom:auto}.joystick,.jump-btn{bottom:calc(var(--space-10) + var(--space-10) + var(--space-8))}}.modal-backdrop{z-index:10;padding:var(--space-4);background:color-mix(in srgb, var(--color-navy) 60%, transparent);place-items:center;display:grid;position:fixed;inset:0}.modal{width:100%;max-width:480px;max-height:calc(100vh - 2 * var(--space-4));max-height:calc(100dvh - 2 * var(--space-4));background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-6);gap:var(--space-4);display:grid;overflow-y:auto}.modal-head{justify-content:space-between;align-items:center;display:flex}.modal-head h2{font-size:var(--text-lg)}.modal-head .icon-btn{font-size:var(--text-xl);padding:0 var(--space-2);line-height:1}.modal-body{gap:var(--space-3);display:grid}.modal-body p{margin:0}.segmented{padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);grid-template-columns:1fr 1fr;display:grid}.segmented button{font:inherit;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;font-weight:600}.segmented button.on{background:var(--color-primary);color:var(--color-on-primary)}.copy-row{gap:var(--space-2);grid-template-columns:1fr auto;display:grid}.share-list h3{font-size:var(--text-md);margin-bottom:var(--space-2)}.share-list ul{gap:var(--space-2);max-height:180px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.share-list li{gap:var(--space-2);font-size:var(--text-sm);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.badge-inline{padding:2px var(--space-2);background:var(--color-border);color:var(--color-text-muted);border-radius:999px;font-size:12px;font-weight:600}.badge-inline.active{background:color-mix(in srgb, var(--color-success) 20%, var(--color-surface));color:var(--color-success)}.badge-inline.revoked{background:var(--color-danger-bg);color:var(--color-danger)}.viewer.light{background:var(--color-viewer-light);color:var(--color-text)}.viewer.light .viewer-logo{color:var(--color-navy)}.viewer.light .viewer-name,.viewer.light .viewer-hint{color:var(--color-text-muted)}.viewer.light .tool.back{color:var(--color-navy)}.viewer.light .tool.back:hover{background:var(--color-bg)}.hotspot{pointer-events:auto;cursor:pointer;width:28px;height:28px;font:inherit;background:0 0;border:0;padding:0;position:relative}.hotspot-dot{background:color-mix(in srgb, var(--color-surface) 90%, transparent);border:3px solid var(--color-primary);width:100%;height:100%;box-shadow:0 0 0 4px color-mix(in srgb, var(--color-primary) 25%, transparent), var(--shadow-card);border-radius:50%;transition:transform .15s;display:block}.hotspot:hover .hotspot-dot,.hotspot:focus-visible .hotspot-dot{transform:scale(1.18)}.hotspot:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;border-radius:50%}.hotspot-label{left:calc(100% + var(--space-2));white-space:nowrap;padding:var(--space-1) var(--space-3);background:var(--color-navy);color:var(--color-on-navy);font-size:var(--text-sm);opacity:0;pointer-events:none;border-radius:999px;transition:opacity .15s;position:absolute;top:50%;transform:translateY(-50%)}.hotspot:hover .hotspot-label,.hotspot:focus-visible .hotspot-label{opacity:1}@media (hover:none){.hotspot-label{opacity:1}}.rooms-panel{right:var(--space-4);z-index:5;background:var(--color-surface);width:260px;max-height:calc(100% - 120px);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-4);gap:var(--space-3);display:grid;position:absolute;top:156px;overflow-y:auto}.rooms-panel h2{font-size:var(--text-md)}.rooms-panel p{margin:0}.rooms-panel ul{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.rooms-panel li{gap:var(--space-2);grid-template-columns:1fr auto;align-items:center;display:grid}.tool-range{cursor:default;gap:2px;min-width:96px;display:grid}.tool-range input[type=range]{width:88px;accent-color:var(--color-primary)}@media (width<=860px){.rooms-panel{top:auto;bottom:96px;right:var(--space-2);left:var(--space-2);width:auto;max-height:40%}}.marker-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.marker-pos{will-change:transform;position:absolute;top:0;left:0}.hotspot.floor{width:34px;height:34px}.hotspot.floor .hotspot-dot{background:color-mix(in srgb, var(--color-surface) 35%, transparent);border:3px solid var(--color-surface);box-shadow:0 2px 8px color-mix(in srgb, var(--color-navy) 50%, transparent);transform:scaleY(.55)}.hotspot.floor:hover .hotspot-dot,.hotspot.floor:focus-visible .hotspot-dot{background:var(--color-surface);transform:scaleY(.55)scale(1.2)}.room-actions{gap:var(--space-3);font-size:var(--text-sm);flex-wrap:wrap;grid-column:1/-1;display:flex}.room-actions .link-btn{align-items:center;gap:var(--space-1);font-size:var(--text-sm);display:inline-flex}.room-actions .link-btn:disabled{opacity:.5;cursor:wait}.align-panel{left:var(--space-4);bottom:var(--space-12,56px);z-index:5;gap:var(--space-1);padding:var(--space-3) var(--space-4);background:color-mix(in srgb, var(--color-navy) 85%, transparent);color:var(--color-on-navy);border-radius:var(--radius-md);font-size:var(--text-sm);display:grid;position:absolute}.align-panel input[type=range]{width:220px;accent-color:var(--color-primary)}.viewer-toast{z-index:6;max-width:calc(100% - 2 * var(--space-4));padding:var(--space-2) var(--space-4);background:var(--color-navy);color:var(--color-on-navy);font-size:var(--text-sm);text-align:center;border-radius:999px;position:absolute;top:150px;left:50%;transform:translate(-50%)}.viewer-busy{z-index:6;padding:var(--space-2) var(--space-4);background:color-mix(in srgb, var(--color-navy) 85%, transparent);color:var(--color-on-navy);font-size:var(--text-sm);border-radius:999px;position:absolute;bottom:80px;left:50%;transform:translate(-50%)}.zoom-controls{left:var(--space-4);z-index:5;gap:var(--space-1);padding:var(--space-1);border:1px solid var(--color-on-navy-muted);border-radius:var(--radius-md);background:var(--color-navy);display:grid;position:absolute;top:50%;transform:translateY(-50%)}.zoom-btn{border-radius:var(--radius-sm);width:44px;height:44px;color:var(--color-on-navy);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.zoom-btn:hover:not(:disabled){background:var(--color-navy-raised)}.zoom-btn:disabled{opacity:.4;cursor:not-allowed}.zoom-btn:focus-visible,.minimap-toggle:focus-visible,.minimap-dot:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.minimap{right:var(--space-4);bottom:var(--space-4);z-index:5;justify-items:end;gap:var(--space-2);display:grid;position:absolute}.minimap-toggle{align-items:center;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-on-navy-muted);border-radius:var(--radius-md);background:var(--color-navy);color:var(--color-on-navy);font:inherit;font-size:var(--text-sm);cursor:pointer;display:inline-flex}.minimap-body{border:2px solid var(--color-navy);border-radius:var(--radius-md);width:min(240px,42vw);max-height:240px;box-shadow:var(--shadow-card);background:#eef1f6;position:relative;overflow:hidden}.minimap-body img{object-fit:fill;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.minimap-dot{background:var(--color-primary);cursor:pointer;border:2px solid #fff;border-radius:50%;width:22px;height:22px;padding:0;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 4px #00000073}.minimap-dot.current{background:var(--color-navy);box-shadow:0 0 0 3px var(--color-primary), 0 1px 4px #00000073}.minimap-dot:disabled{cursor:progress}@media (width<=860px){.minimap{bottom:96px;right:var(--space-2)}.zoom-controls{left:var(--space-2)}}.door-tag{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:color-mix(in srgb, var(--color-navy) 82%, transparent);color:var(--color-on-navy);box-shadow:var(--shadow-card);white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:999px;display:flex}.door-tag.open{background:color-mix(in srgb, var(--color-success) 88%, transparent);color:var(--color-on-primary)}.door-tag.aim{outline:2px solid var(--color-on-primary)}.door-tag kbd{font:inherit;font-size:var(--text-sm);padding:0 var(--space-1);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-on-primary) 25%, transparent);font-weight:700}
