@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(./inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(./inter-latin-400-normal-CyCys3Eg.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(./inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(./inter-latin-500-normal-BL9OpVg8.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(./inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(./inter-latin-600-normal-CiBQ2DWP.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(./inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(./inter-latin-700-normal-BLAVimhd.woff)format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(./space-grotesk-latin-400-normal-CJ-V5oYT.woff2)format("woff2"),url(./space-grotesk-latin-400-normal-BnQMeOim.woff)format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(./space-grotesk-latin-500-normal-lFbtlQH6.woff2)format("woff2"),url(./space-grotesk-latin-500-normal-CNSSEhBt.woff)format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(./space-grotesk-latin-700-normal-RjhwGPKo.woff2)format("woff2"),url(./space-grotesk-latin-700-normal-CwsQ-cCU.woff)format("woff")}:root{--bg:#04080f;--bg-2:#050c17;--ink:#eaf4ff;--ink-soft:#9fb6cd;--ink-dim:#64809b;--cyan:#4fd8ff;--cyan-deep:#1f86b8;--violet:#8b6cff;--amber:#ffd166;--rose:#fb7185;--green:#4ade80;--glass:#0912209e;--glass-2:#0c1828c7;--glass-hi:#182e48b3;--line:#7ac4ff29;--line-strong:#7ac4ff57;--radius:16px;--radius-sm:10px;--radius-lg:24px;--shadow:0 22px 60px #0000008c;--shadow-soft:0 10px 30px #00000059;--sheet-peek:78px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--font-display:"Space Grotesk", "Inter", system-ui, sans-serif;--font-body:"Inter", "Space Grotesk", system-ui, -apple-system, sans-serif;--hud-w:268px;--panel-w:268px;--ease:cubic-bezier(.4, .14, .2, 1)}[data-high-contrast=true]{--ink:#fff;--ink-soft:#cfe4f7;--ink-dim:#9fb6cd;--line:#bee8ff6b;--line-strong:#bee8ffad;--glass:#060e1ae6;--glass-2:#081220f0}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;padding:0;font-size:15px;line-height:1.5;overflow:hidden}body{overscroll-behavior:none}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-weight:500}p{margin:0}button{font:inherit;color:inherit;cursor:pointer}svg.icon{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:1.05em;height:1.05em}::selection{background:#4fd8ff47}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.app{isolation:isolate;position:fixed;inset:0;overflow:hidden}.stage{z-index:0;position:fixed;inset:0}.celly-canvas{touch-action:none;width:100%;height:100%;display:block}.grain,.vignette{z-index:1;pointer-events:none;position:fixed;inset:0}.grain{opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E")}.vignette{background:radial-gradient(120% 90% at 50% 44%,#0000 42%,#02060cb8 100%),linear-gradient(#03081080,#0000 26% 74%,#030810b8)}.eyebrow{font-family:var(--font-display);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-dim);font-size:10px;font-weight:500;display:inline-block}.glass{background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px)saturate(140%)}.topbar{z-index:30;pointer-events:none;justify-content:space-between;align-items:center;gap:18px;padding:16px 22px;display:flex;position:fixed;top:0;left:0;right:0}.topbar>*{pointer-events:auto}.brand{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);border-radius:999px;align-items:center;gap:10px;padding:8px 14px 8px 10px;display:flex}.brand-mark{width:24px;height:24px;display:block;position:relative}.brand-mark i,.brand-mark b{border:1px solid #4fd8ff8c;border-radius:50%;position:absolute;inset:0}.brand-mark i:nth-child(2){border-color:#8b6cff99;inset:4px}.brand-mark b{background:radial-gradient(circle at 35% 30%,#bff0ff,#2f9fd1 60%,#14506f);border:none;inset:8px;box-shadow:0 0 14px #4fd8ffb3}.brand-word{font-family:var(--font-display);letter-spacing:.24em;font-size:15px;font-weight:500}.brand-version{letter-spacing:.14em;color:var(--cyan);background:#4fd8ff1f;border-radius:6px;padding:2px 6px;font-size:10px}.top-actions{align-items:center;gap:8px;display:flex}.top-project-links{border-left:1px solid var(--line);align-items:center;gap:6px;margin-left:2px;padding-left:10px;display:flex}.project-link{min-height:28px;color:var(--ink-dim);letter-spacing:.01em;transition:color .2s var(--ease), background .2s var(--ease), border-color .2s var(--ease), transform .16s var(--ease);border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;padding:4px 7px;font-size:10.5px;line-height:1.2;text-decoration:none;display:inline-flex}.project-link:hover,.project-link.is-hover{color:var(--ink);background:#7ac4ff14}.project-link.is-pressed,.project-link:active{transform:scale(.97)}.project-link svg.project-link-icon{width:14px;height:14px}.project-link svg.project-link-external{opacity:.55;width:10px;height:10px}.project-link--compact{border-color:var(--line);background:var(--glass);width:38px;height:38px;min-height:0;color:var(--ink-soft);-webkit-backdrop-filter:blur(18px);border-radius:12px;justify-content:center;padding:0}.project-link--compact:hover,.project-link--compact.is-hover{color:var(--ink);border-color:var(--line-strong);background:var(--glass)}.project-link--compact.is-pressed,.project-link--compact:active{transform:scale(.94)}.project-link--compact .project-link-label,.project-link--compact .project-link-external{display:none}.project-link--compact svg.project-link-icon{width:18px;height:18px}.controls .project-links,.onboarding-links{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.controls .project-links{border-top:1px solid var(--line);padding-top:8px}.onboarding-links{border-top:1px solid var(--line);padding-top:10px}.onboarding-links .project-link{border-color:var(--line);color:var(--ink-soft);background:#ffffff08;padding:6px 9px;font-size:11px}.icon-btn{background:var(--glass);border:1px solid var(--line);width:38px;height:38px;color:var(--ink-soft);-webkit-backdrop-filter:blur(18px);transition:color .2s var(--ease), border-color .2s var(--ease), transform .16s var(--ease);border-radius:12px;place-items:center;display:grid}.icon-btn:hover,.icon-btn.is-hover{color:var(--ink);border-color:var(--line-strong)}.icon-btn.is-pressed,.icon-btn:active{transform:scale(.94)}.icon-btn svg.icon{width:18px;height:18px}.auto-rotate{background:var(--glass);border:1px solid var(--line);height:38px;color:var(--ink-soft);letter-spacing:.01em;-webkit-backdrop-filter:blur(18px);transition:color .2s var(--ease), border-color .2s var(--ease);border-radius:999px;align-items:center;gap:9px;padding:0 15px 0 12px;font-size:12.5px;display:inline-flex}.auto-rotate:hover,.auto-rotate.is-hover{color:var(--ink);border-color:var(--line-strong)}.auto-glyph{border:1.5px solid #0000;border-color:currentColor #0000 #0000 currentColor;border-radius:50%;width:12px;height:12px;position:relative}.auto-rotate[data-on=true]{color:var(--cyan);background:#143c5480;border-color:#4fd8ff66}.auto-rotate[data-on=true] .auto-glyph{animation:2.6s linear infinite spin}.camera-chip{height:38px;color:var(--amber);white-space:nowrap;-webkit-backdrop-filter:blur(18px);transition:background .2s var(--ease), border-color .2s var(--ease);background:#ffd1661f;border:1px solid #ffd16670;border-radius:999px;align-items:center;gap:7px;padding:0 13px 0 11px;font-size:12px;display:inline-flex}.camera-chip[hidden]{display:none}.camera-chip:hover,.camera-chip.is-hover{background:#ffd16633;border-color:#ffd166ad}.camera-chip svg.icon{width:16px;height:16px}@keyframes spin{to{transform:rotate(360deg)}}.tabs{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);border-radius:999px;align-items:center;gap:4px;padding:5px;display:flex}.tab{height:36px;color:var(--ink-soft);letter-spacing:.01em;transition:color .2s var(--ease), background .25s var(--ease);background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;padding:0 16px;font-size:13px;font-weight:500;display:inline-flex}.tab svg.icon{width:15px;height:15px}.tab:hover,.tab.is-hover{color:var(--ink);background:#7ac4ff14}.tab.is-active{color:var(--bg);background:linear-gradient(140deg,#cdf1ff,#6fd6ff 55%,#3fb4e6);box-shadow:0 6px 18px #35a8d659}.tab.is-active svg.icon{stroke-width:1.9px}.left-rail{z-index:20;width:var(--hud-w);pointer-events:none;flex-direction:column;gap:10px;max-height:calc(100vh - 96px);display:flex;position:fixed;top:74px;left:22px}.hud{pointer-events:none;gap:11px;width:100%;padding:14px 15px 12px;font-size:12px;display:grid;position:relative}.hud details,.hud summary,.hud button,.hud a{pointer-events:auto}.hud-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.quality{color:var(--ink-soft);align-items:center;gap:6px;font-size:11px;display:inline-flex}.quality-dot{background:var(--ink-dim);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #ffffff0a}.quality[data-level=good] .quality-dot{background:var(--green);box-shadow:0 0 10px #4ade80b3}.quality[data-level=medium] .quality-dot{background:var(--amber);box-shadow:0 0 10px #ffd16699}.quality[data-level=poor] .quality-dot{background:var(--rose);box-shadow:0 0 10px #fb718599}.hud-hands{align-items:center;gap:7px;display:flex}.hand-chip{width:24px;height:24px;font-family:var(--font-display);color:var(--ink-dim);transition:all .2s var(--ease);background:#ffffff0a;border:1px solid #0000;border-radius:8px;place-items:center;font-size:11px;display:grid}.hand-chip.is-active{color:var(--ink);border-color:var(--line-strong);background:#4fd8ff1f}.hand-chip.is-pinching{color:var(--bg);background:linear-gradient(140deg, var(--amber), #ffb347);border-color:#0000;box-shadow:0 0 12px #ffd16680}.hud-hands-label{color:var(--ink-soft);margin-left:auto;font-size:11.5px}.hud-pinch{gap:6px;display:grid}.hud-key{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim);font-size:10px;font-family:var(--font-display)}.pinch-line{grid-template-columns:14px 1fr 34px;align-items:center;gap:8px;display:grid}.mini-tag{font-family:var(--font-display);color:var(--ink-dim);text-align:center;font-size:10px}.bar{background:#ffffff12;border-radius:999px;height:5px;position:relative;overflow:hidden}.bar>i{transform-origin:0;background:linear-gradient(90deg, var(--cyan-deep), var(--cyan));border-radius:999px;transition:transform 80ms linear;position:absolute;inset:0;transform:scaleX(0)}.pinch-line b{font-variant-numeric:tabular-nums;color:var(--ink-soft);text-align:right;font-size:11px;font-weight:500}.pinch-line b.is-hot{color:var(--amber)}.hud-grid{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:6px 10px;padding-top:4px;display:grid}.hud-cell{gap:1px;display:grid}.hud-cell>span{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);font-size:9.5px}.hud-cell>b{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:11.5px;font-weight:500}.hud-cell>b.is-hot{color:var(--cyan)}.hud-debug{border-top:1px solid var(--line);padding-top:8px}.hud-debug>summary{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim);cursor:pointer;font-size:10px;list-style:none}.hud-debug>summary::marker{display:none}.hud-debug>summary::-webkit-details-marker{display:none}.hud-debug>summary:after{content:" ＋"}.hud-debug[open]>summary:after{content:" －"}.hud-debug-grid{color:var(--ink-dim);grid-template-columns:1fr auto;gap:3px 10px;padding-top:7px;font-size:11px;display:grid}.hud-debug-grid b{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-weight:500}.hud-foot{border-top:1px solid var(--line);color:var(--ink-dim);align-items:center;gap:7px;padding-top:9px;font-size:10.5px;display:flex}.shield{opacity:.6;clip-path:polygon(50% 0,100% 22%,100% 60%,50% 100%,0 60%,0 22%);background:currentColor;width:12px;height:12px}.hud.is-idle{opacity:.9}.hud.is-idle .hud-pinch,.hud.is-idle .hud-grid,.hud.is-idle .hud-debug,.hud.is-idle .hud-foot,.app[data-page=test] .left-rail{display:none}.legend{pointer-events:none;gap:9px;width:100%;padding:13px 14px 12px;display:grid;position:relative}.legend-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.legend-head:after{content:"";border-right:1.5px solid var(--ink-dim);border-bottom:1.5px solid var(--ink-dim);width:6px;height:6px;transition:transform .24s var(--ease);margin-right:3px;transform:rotate(45deg)}.legend.is-collapsed .legend-head:after{transform:rotate(-45deg)}.legend-body{gap:9px;display:grid}.legend.is-collapsed .legend-body{display:none}.legend-row{color:var(--ink-soft);align-items:center;gap:10px;font-size:11.5px;line-height:1.25;display:flex}.legend-row svg.icon{width:16px;height:16px;color:var(--cy,var(--cyan))}.legend-row[data-tone=slate]{--cy:#7f9ab4}.legend-row[data-tone=violet]{--cy:var(--violet)}.legend-row[data-tone=amber]{--cy:var(--amber)}.legend-row>div{display:grid}.legend-row b{color:var(--ink);letter-spacing:.01em;font-size:11px;font-weight:600}.legend-row span{color:var(--ink-dim)}.legend-foot{border-top:1px solid var(--line);letter-spacing:.14em;color:var(--ink-dim);padding-top:9px;font-size:9.5px}.controls{z-index:20;width:var(--panel-w);overscroll-behavior:contain;gap:10px;max-height:calc(100vh - 96px);padding:12px;font-size:12px;display:grid;position:fixed;bottom:22px;right:22px;overflow-y:auto}.preview{aspect-ratio:16/9;border:1px solid var(--line);background:#03080f;border-radius:12px;position:relative;overflow:hidden}.preview-canvas{width:100%;height:100%;display:block}.preview-empty{color:var(--ink-dim);background:repeating-linear-gradient(45deg,#ffffff05 0 6px,#0000 6px 12px);place-items:center;gap:6px;font-size:11px;display:grid;position:absolute;inset:0}.preview-empty-icon{border:1.5px dashed var(--ink-dim);border-radius:6px;width:22px;height:22px}.preview-badge{letter-spacing:.16em;color:var(--green);background:#040a12b8;border-radius:999px;align-items:center;gap:5px;padding:3px 8px;font-size:9.5px;display:inline-flex;position:absolute;top:8px;left:8px}.preview-badge i{background:var(--green);width:6px;height:6px;box-shadow:0 0 8px var(--green);border-radius:50%;animation:1.6s ease-in-out infinite pulse}.preview-reach{pointer-events:none;border:1px dashed #4fd8ff2b;border-radius:7px;position:absolute;inset:8%}@keyframes pulse{50%{opacity:.35}}.preview-corner{border:1.5px solid #4fd8ff99;width:12px;height:12px;position:absolute}.preview-corner.tl{border-bottom:0;border-right:0;top:6px;left:6px}.preview-corner.tr{border-bottom:0;border-left:0;top:6px;right:6px}.preview-corner.bl{border-top:0;border-right:0;bottom:6px;left:6px}.preview-corner.br{border-top:0;border-left:0;bottom:6px;right:6px}.is-hidden{display:none!important}.controls-head{justify-content:space-between;align-items:center;gap:8px;min-height:30px;display:flex}.controls-head-actions{align-items:center;gap:6px;display:flex}.controls .sheet-toggle{padding:6px;display:none}.sheet-toggle .icon{width:14px;height:14px;transition:transform .24s var(--ease);transform:rotate(-90deg)}.controls.is-open .sheet-toggle .icon{transform:rotate(90deg)}.controls-list{gap:2px;display:grid}.control-reset{border-top:1px solid var(--line);gap:6px;margin-top:2px;padding-top:8px;display:grid}.control-reset-open{color:var(--ink-dim);justify-content:center;gap:7px}.control-reset-open:hover,.control-reset-open.is-hover{color:var(--rose);border-color:#fb718573}.control-confirm{background:#fb718514;border:1px solid #fb71854d;border-radius:12px;gap:9px;padding:10px 11px;display:none}.control-confirm.is-open{display:grid}.control-confirm p{color:var(--ink-soft);margin:0;font-size:11.5px;line-height:1.45}.control-confirm-actions{justify-content:flex-end;gap:6px;display:flex}.control-reset-accept{color:var(--rose);border-color:#fb718573}.control-row{transition:background .2s var(--ease);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:5px 4px;display:flex}.control-row:hover{background:#7ac4ff0f}.control-row:has(.is-hover){background:#7ac4ff0f}.control-name{color:var(--ink-soft);align-items:center;gap:9px;display:flex}.control-name svg.icon{width:14px;height:14px;color:var(--ink-dim)}.control-slider{gap:7px;padding:7px 4px 5px;display:grid}.control-slider .segmented{flex:none;width:100%}.segmented.mini button{padding:4px 0;font-size:10.5px}.switch{width:36px;height:20px;transition:background .24s var(--ease), border-color .24s var(--ease);background:#ffffff17;border:1px solid #0000;border-radius:999px;flex:none;padding:0;position:relative}.switch>span{background:var(--ink-dim);width:14px;height:14px;transition:transform .24s var(--ease), background .24s var(--ease);border-radius:50%;position:absolute;top:2px;left:2px}.switch[aria-checked=true]{background:#4fd8ff38;border-color:#4fd8ff73}.switch[aria-checked=true]>span{background:var(--cyan);transform:translate(16px);box-shadow:0 0 10px #4fd8ff99}.controls-more{border-top:1px solid var(--line);padding-top:8px}.controls-more>summary{cursor:pointer;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim);padding-bottom:4px;font-size:10px;list-style:none}.controls-more>summary::-webkit-details-marker{display:none}.controls-more>summary:after{content:" ＋"}.controls-more[open]>summary:after{content:" －"}.camera-status{color:var(--ink-dim);justify-content:space-between;align-items:center;gap:8px;min-height:22px;font-size:11px;display:flex}.camera-status.is-ok{color:var(--green)}.camera-status.is-error{color:var(--rose)}.ghost-btn{border:1px solid var(--line);color:var(--ink-soft);transition:color .2s var(--ease), border-color .2s var(--ease);background:#ffffff08;border-radius:8px;align-items:center;gap:6px;display:inline-flex}.ghost-btn.small{padding:4px 9px;font-size:11px}.ghost-btn.accent{color:var(--cyan);border-color:#4fd8ff66}.ghost-btn:hover,.ghost-btn.is-hover{color:var(--ink);border-color:var(--line-strong)}.controls-foot{gap:8px;display:flex}.segmented{border:1px solid var(--line);background:#ffffff0a;border-radius:10px;flex:1;gap:3px;padding:3px;display:flex}.segmented button{color:var(--ink-dim);letter-spacing:.04em;transition:all .2s var(--ease);background:0 0;border:none;border-radius:7px;flex:1;padding:5px 0;font-size:11px}.segmented button.is-active{color:var(--bg);background:linear-gradient(140deg,#cdf1ff,#6fd6ff)}.segmented button:hover:not(.is-active),.segmented button.is-hover:not(.is-active){color:var(--ink)}.controls-privacy{color:var(--ink-dim);align-items:center;gap:7px;font-size:10px;display:flex}.controls-privacy i{border:1.5px solid var(--green);border-radius:50%;width:8px;height:8px}.page-layer{z-index:10;pointer-events:none;position:fixed;inset:0}.page{opacity:0;visibility:hidden;transition:opacity .42s var(--ease);position:absolute;inset:0}.page.is-active{opacity:1;visibility:visible}.page-intro{text-align:center;pointer-events:none;gap:4px;width:min(560px,46vw);display:grid;position:absolute;top:78px;left:50%;transform:translate(-50%)}.page-intro h1{letter-spacing:-.02em;font-size:24px}.page-intro p{color:var(--ink-soft);font-size:12.5px}.lab-hint{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);color:var(--ink-soft);white-space:nowrap;pointer-events:none;border-radius:999px;align-items:center;gap:9px;padding:6px 15px;font-size:11.5px;display:inline-flex;position:absolute;bottom:128px;left:50%;transform:translate(-50%)}.lab-hint.is-selected{color:var(--ink);border-color:var(--line-strong)}.page-knowledge .lab-hint{bottom:84px}.live-dot{background:var(--cyan);width:6px;height:6px;box-shadow:0 0 9px var(--cyan);border-radius:50%}.structure-rail{width:min(760px, calc(100vw - var(--panel-w) - 160px));background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);pointer-events:auto;border-radius:14px;padding:9px 10px 7px;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.structure-rail-head{justify-content:space-between;align-items:center;padding:0 4px 6px;display:flex}.structure-count{color:var(--ink-dim);font-variant-numeric:tabular-nums;font-size:10px}.structure-scroll{scrollbar-width:thin;gap:5px;padding-bottom:2px;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 0 calc(100% - 30px),#0000 100%);mask-image:linear-gradient(90deg,#000 0 calc(100% - 30px),#0000 100%)}.structure-scroll::-webkit-scrollbar{height:5px}.structure-scroll::-webkit-scrollbar-thumb{background:#7ac4ff40;border-radius:999px}.structure-chip{color:var(--ink-soft);white-space:nowrap;transition:all .18s var(--ease);background:#ffffff0a;border:1px solid #0000;border-radius:999px;flex:none;align-items:center;gap:6px;padding:5px 10px;font-size:11px;display:inline-flex}.structure-chip i{background:var(--chip,var(--cyan));width:7px;height:7px;box-shadow:0 0 8px color-mix(in srgb, var(--chip,var(--cyan)) 60%, transparent);border-radius:50%}.structure-chip:hover,.structure-chip.is-hover{color:var(--ink);background:#7ac4ff1a}.structure-chip.is-active{color:var(--ink);border-color:color-mix(in srgb, var(--chip,var(--cyan)) 55%, transparent);background:color-mix(in srgb, var(--chip,var(--cyan)) 16%, transparent)}.knowledge-key{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);pointer-events:none;border-radius:999px;gap:16px;padding:8px 16px;display:flex;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.key-item{color:var(--ink-soft);white-space:nowrap;align-items:center;gap:7px;font-size:11px;display:inline-flex}.key-item i{border-radius:50%;width:7px;height:7px}.key-item b{color:var(--ink-dim);font-variant-numeric:tabular-nums;font-size:10px;font-weight:500}.overlay-anchor{z-index:40;pointer-events:none;visibility:hidden;opacity:0;width:384px;transition:opacity .32s var(--ease), visibility .32s;position:fixed}.overlay-anchor.is-open{visibility:visible;opacity:1;pointer-events:auto}.info-overlay{border-radius:var(--radius-lg);background:var(--glass-2);border:1px solid var(--line-strong);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(26px)saturate(150%);transform-origin:var(--ox,0%) 40%;animation:overlay-in .34s var(--ease) both;padding:18px 18px 16px;position:relative;overflow:hidden}@keyframes overlay-in{0%{opacity:0;transform:translateY(10px)scale(.97)}}.overlay-anchor[data-side=left] .info-overlay{--ox:100%}.overlay-glow{background:radial-gradient(circle, var(--accent,var(--cyan)) 0%, transparent 68%);opacity:.24;pointer-events:none;border-radius:50%;width:190px;height:190px;position:absolute;top:-70px;right:-60px}.overlay-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex;position:relative}.overlay-head h2{color:var(--accent,var(--ink));margin-top:3px;font-size:22px;line-height:1.15}.overlay-close{border-radius:9px;flex:none;width:30px;height:30px}.overlay-summary{color:var(--ink-soft);margin-top:10px;font-size:13px}.overlay-sections{gap:12px;margin-top:14px;display:grid}.overlay-section h3{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim);align-items:baseline;gap:8px;margin-bottom:5px;font-size:10px;font-weight:500;display:flex}.overlay-index{color:var(--accent,var(--cyan));font-variant-numeric:tabular-nums;opacity:.8}.overlay-section ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.overlay-section li{color:var(--ink);padding-left:15px;font-size:12.5px;position:relative}.overlay-section li:before{content:"";background:var(--accent,var(--cyan));opacity:.75;border-radius:50%;width:5px;height:5px;position:absolute;top:8px;left:3px}.overlay-section p{color:var(--ink-soft);font-size:12.5px}.overlay-chips-wrap{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.overlay-chips-label{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim);font-size:10px}.overlay-chips{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.chip{color:var(--ink-soft);background:color-mix(in srgb, var(--chip,#4fd8ff) 12%, transparent);border:1px solid color-mix(in srgb, var(--chip,#4fd8ff) 40%, transparent);transition:all .18s var(--ease);border-radius:999px;align-items:center;gap:6px;padding:5px 11px;font-size:11.5px;display:inline-flex}.chip:before{content:"";background:var(--chip,var(--cyan));border-radius:50%;width:6px;height:6px}.chip:hover,.chip.is-hover{color:var(--ink);background:color-mix(in srgb, var(--chip,#4fd8ff) 24%, transparent)}.overlay-actions{flex-wrap:wrap;gap:7px;margin-top:15px;display:flex}.btn{transition:transform .16s var(--ease), background .2s var(--ease), border-color .2s var(--ease);border:1px solid #0000;border-radius:11px;justify-content:center;align-items:center;gap:8px;padding:9px 15px;font-size:12.5px;font-weight:500;display:inline-flex;position:relative;overflow:hidden}.btn svg.icon{width:15px;height:15px}.btn.primary{color:#04121c;background:linear-gradient(140deg,#d6f4ff,#74d9ff 55%,#43b8e8);box-shadow:0 10px 24px #3aacdc52}.btn.primary:hover,.btn.primary.is-hover{filter:brightness(1.07)}.btn.ghost{color:var(--ink-soft);border-color:var(--line);background:#ffffff08}.btn.ghost:hover,.btn.ghost.is-hover{color:var(--ink);border-color:var(--line-strong);background:#7ac4ff14}.btn.ghost.danger:hover,.btn.ghost.danger.is-hover{color:var(--rose);border-color:#fb718580}.btn.small{padding:6px 11px;font-size:11.5px}.btn.wide{flex:1}.btn.is-pressed,.btn:active{transform:scale(.97)}.btn.is-flash:after{content:"";animation:flash .42s var(--ease) forwards;background:#ffffff80;position:absolute;inset:0}@keyframes flash{0%{opacity:.7}to{opacity:0}}.btn.is-dwelling:before,.switch.is-dwelling:before,.tab.is-dwelling:before,.chip.is-dwelling:before,.structure-chip.is-dwelling:before,.option.is-dwelling:before,.mode-card.is-dwelling:before,.set-card.is-dwelling:before{content:"";border-radius:inherit;background:conic-gradient(var(--amber) calc(var(--dwell,0) * 1turn), transparent 0);-webkit-mask-composite:xor;pointer-events:none;padding:2px;position:absolute;inset:-2px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.cursor-layer{z-index:60;pointer-events:none;position:fixed;inset:0}.cursor{opacity:0;visibility:hidden;width:0;height:0;transition:opacity .24s var(--ease);will-change:transform;position:absolute;top:0;left:0}.cursor.is-visible{opacity:.72;visibility:visible}.cursor.is-visible.is-active{opacity:1}.cursor-halo{width:52px;height:52px;transition:opacity .2s var(--ease);opacity:0;background:radial-gradient(circle,#4fd8ff57,#0000 70%);border-radius:50%;position:absolute;top:-26px;left:-26px}.cursor.is-active .cursor-halo{opacity:1}.cursor-ring{width:26px;height:26px;transform:scale(calc(1 - var(--pinch,0) * .32));transition:border-color .2s var(--ease);border:1.4px solid #b4e4ffbf;border-radius:50%;position:absolute;top:-13px;left:-13px}.cursor-ring>i{border:1px dashed #b4e4ff59;border-radius:50%;position:absolute;inset:3px}.cursor-dot{background:#eaf8ff;border-radius:50%;width:6px;height:6px;position:absolute;top:-3px;left:-3px;box-shadow:0 0 10px #b4e4ffe6}.cursor[data-side=left] .cursor-ring{border-color:#78c4ff99}.cursor[data-side=right] .cursor-ring{border-color:#bea5ffb3}.cursor.is-pinching .cursor-ring{border-color:var(--amber);box-shadow:0 0 18px #ffd16680}.cursor.is-pinching .cursor-dot{background:var(--amber);box-shadow:0 0 14px var(--amber)}.cursor-tag{font-family:var(--font-display);letter-spacing:.14em;color:var(--ink);border:1px solid var(--line);white-space:nowrap;background:#060e1ac7;border-radius:999px;padding:2px 7px;font-size:9.5px;position:absolute;top:12px;left:16px}.cursor[data-mode=passive] .cursor-ring{transform:scale(.78)}.gesture-hint{color:var(--ink);border:1px solid var(--line);white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .24s var(--ease);background:#060e1ad1;border-radius:999px;padding:5px 11px;font-size:11px;position:absolute;top:0;left:0}.gesture-hint.is-visible{opacity:1;visibility:visible}.onboarding{z-index:80;-webkit-backdrop-filter:blur(14px);opacity:0;visibility:hidden;transition:opacity .4s var(--ease), visibility .4s;background:#02060cb8;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.onboarding.is-open{opacity:1;visibility:visible}.onboarding-card{background:var(--glass-2);border:1px solid var(--line-strong);width:min(880px,100%);max-height:min(760px,92vh);box-shadow:var(--shadow);animation:card-in .5s var(--ease) both;border-radius:26px;grid-template-columns:.85fr 1.15fr;gap:0;display:grid;position:relative;overflow:auto}.onboarding-card[data-step="1"],.onboarding-card[data-step="2"]{grid-template-columns:1fr}@keyframes card-in{0%{opacity:0;transform:translateY(16px)scale(.985)}}.onboarding-visual{border-right:1px solid var(--line);background:radial-gradient(90% 70% at 50% 40%,#4fd8ff29,#0000 70%);place-items:center;min-height:340px;display:grid;position:relative}.orb{width:210px;height:210px;position:relative}.orb i,.orb b{border-radius:50%;position:absolute}.orb i:first-child{border:1px solid #4fd8ff6b;animation:26s linear infinite spin;inset:0}.orb i:nth-child(2){border:1px solid #8b6cff6b;animation:18s linear infinite reverse spin;inset:26px}.orb i:nth-child(3){border:1px dashed #4fd8ff47;animation:34s linear infinite spin;inset:52px}.orb b{background:radial-gradient(circle at 34% 30%,#d8f6ff,#37a6d8 55%,#103f5c);inset:74px;box-shadow:0 0 60px #4fd8ff99,inset 0 0 26px #ffffff59}.orb-tag{font-family:var(--font-display);letter-spacing:.26em;color:var(--ink-dim);font-size:9.5px;position:absolute;bottom:26px}.onboarding-body{align-content:center;gap:13px;padding:34px 34px 30px;display:grid}.onboarding-body h1{font-size:34px;line-height:1.08}.onboarding-body h2{font-size:26px;line-height:1.15}.onboarding-lead{color:var(--ink-soft);max-width:60ch;font-size:14px}.onboarding-hint{color:var(--ink-dim);max-width:56ch;margin-top:-4px;font-size:11.5px}.onboarding-preview{border:1px solid var(--line-strong);background:#03080f;border-radius:16px;justify-self:center;width:min(100%,440px);display:grid;overflow:hidden}.onboarding-preview-slot .preview{border:0;border-radius:0}.onboarding-camera-bar{border-top:1px solid var(--line);min-height:36px;color:var(--ink-soft);background:#ffffff08;align-items:center;padding:7px 12px;font-size:11.5px;display:flex}.camera-state{align-items:center;gap:8px;display:inline-flex}.camera-state i{background:var(--ink-dim);border-radius:50%;flex:none;width:7px;height:7px}.onboarding-camera-bar[data-state=live] .camera-state i{background:var(--green);box-shadow:0 0 9px var(--green)}.onboarding-camera-bar[data-state=requesting] .camera-state i{background:var(--amber);animation:1.4s ease-in-out infinite pulse}.onboarding-camera-bar[data-state=denied] .camera-state i,.onboarding-camera-bar[data-state=timeout] .camera-state i,.onboarding-camera-bar[data-state=unsupported] .camera-state i,.onboarding-camera-bar[data-state=in-use] .camera-state i,.onboarding-camera-bar[data-state=not-found] .camera-state i{background:var(--rose)}.onboarding-camera-actions{justify-self:start;display:flex}.onboarding-camera-actions .btn{width:auto}.onboarding-skip{z-index:2;background:#060e1a99;position:absolute;top:14px;right:14px}.onboarding-privacy{color:var(--ink-dim);align-items:center;gap:9px;font-size:11.5px;display:flex}.onboarding-actions{flex-wrap:wrap;gap:9px;margin-top:6px;display:flex}.onboarding-error{color:var(--rose);opacity:0;min-height:16px;transition:opacity .3s var(--ease);font-size:11.5px}.onboarding-error.is-visible{opacity:1}.hands-status{border:1px solid var(--line);color:var(--ink-soft);background:#ffffff0a;border-radius:14px;justify-self:start;align-items:center;gap:12px;padding:10px 16px;font-size:12.5px;display:inline-flex}.hands-status.is-live{color:var(--ink);border-color:#4fd8ff6b}.hand-hand{gap:6px;display:flex}.hand-dot{border:1.5px solid var(--ink-dim);width:12px;height:12px;transition:all .24s var(--ease);border-radius:50%}.hand-dot.is-on{border-color:var(--cyan);background:#4fd8ff59;box-shadow:0 0 12px #4fd8ff80}.onboarding-frame{background:#060e1a80;border:1px dashed #7ac4ff4d;border-radius:16px;place-items:center;height:170px;display:grid;position:relative;overflow:hidden}.onboarding-frame:after{content:"";pointer-events:none;border:1px dashed #4fd8ff38;border-radius:10px;position:absolute;inset:8%}.onboarding-frame>span{font-family:var(--font-display);letter-spacing:.24em;color:var(--ink-dim);font-size:9.5px}.frame-corner{border:1.5px solid var(--cyan);width:16px;height:16px;position:absolute}.frame-corner.tl{border-bottom:0;border-right:0;top:10px;left:10px}.frame-corner.tr{border-bottom:0;border-left:0;top:10px;right:10px}.frame-corner.bl{border-top:0;border-right:0;bottom:10px;left:10px}.frame-corner.br{border-top:0;border-left:0;bottom:10px;right:10px}.frame-scan{background:linear-gradient(#0000,#4fd8ff38,#0000);height:42px;animation:3.4s ease-in-out infinite scan;position:absolute;left:0;right:0}@keyframes scan{0%,to{transform:translateY(-50px)}50%{transform:translateY(120px)}}.onboarding-body.wide{padding:32px 34px 28px}.onboarding-body.narrow{width:100%;max-width:560px;margin:0 auto}.gesture-cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.gesture-card{border:1px solid var(--line);animation:card-in .5s var(--ease) both;animation-delay:calc(var(--i,0) * 60ms);background:#ffffff09;border-radius:16px;gap:6px;padding:16px 14px 14px;display:grid;position:relative}.gesture-card svg.icon{width:22px;height:22px;color:var(--cyan)}.gesture-card b{font-family:var(--font-display);font-size:14px;font-weight:500}.gesture-card span{color:var(--ink-dim);font-size:11.5px;line-height:1.35}.gesture-num{font-family:var(--font-display);color:var(--ink-dim);font-size:10px;position:absolute;top:12px;right:13px}.shortcut-sheet{border:1px solid var(--line);background:#ffffff06;border-radius:16px;gap:10px;padding:14px 16px;display:grid}.shortcut-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;display:flex}.shortcut-hint{color:var(--ink-dim);font-size:10.5px}.shortcut-list{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px 20px;margin:0;display:grid}.shortcut-list>div{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.shortcut-list dt{flex:none;gap:4px;display:flex}.shortcut-list dd{color:var(--ink-dim);text-align:right;margin:0;font-size:11.5px;line-height:1.3}.shortcut-list kbd{border:1px solid var(--line-strong);min-width:22px;height:22px;font-family:var(--font-display);color:var(--ink);background:#ffffff0d;border-radius:6px;place-items:center;padding:0 6px;font-size:10.5px;display:inline-grid}.error-boundary{z-index:200;-webkit-backdrop-filter:blur(14px);background:#02060cc7;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.error-boundary[hidden]{display:none}.error-boundary-card{background:var(--glass-2);border:1px solid var(--line-strong);width:min(560px,100%);box-shadow:var(--shadow);animation:card-in .5s var(--ease) both;border-radius:26px;gap:12px;padding:34px 36px;display:grid}.error-boundary-card h1{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:26px}.error-boundary-lead{color:var(--ink-soft);margin:0;font-size:14.5px}.error-boundary-message{border-radius:var(--radius-sm);color:var(--ink);overflow-wrap:anywhere;background:#fb71851f;border:1px solid #fb71854d;margin:0;padding:10px 12px;font-size:13px}.error-boundary-details summary{cursor:pointer;color:var(--ink-dim);font-size:12.5px}.error-boundary-details pre{border-radius:var(--radius-sm);border:1px solid var(--line);color:var(--ink-soft);white-space:pre-wrap;overflow-wrap:anywhere;background:#040a14cc;max-height:180px;margin:8px 0 0;padding:12px;font-size:11.5px;overflow:auto}.error-boundary-actions{gap:10px;margin-top:6px;display:flex}.toast-host{z-index:90;pointer-events:none;justify-items:end;gap:8px;max-width:min(360px,100vw - 44px);display:grid;position:fixed;top:84px;right:22px}.toast{background:var(--glass-2);border:1px solid var(--line-strong);box-shadow:var(--shadow-soft);color:var(--ink);opacity:0;transition:opacity .36s var(--ease), transform .36s var(--ease);-webkit-backdrop-filter:blur(18px);border-radius:999px;padding:10px 18px;font-size:12.5px;transform:translateY(10px)}.toast.is-visible{opacity:1;transform:none}.toast[data-tone=success]{border-color:#4ade8073}.toast[data-tone=warn]{border-color:#fb718580}.test-shell{pointer-events:none;place-items:center;padding:84px 300px 100px 306px;display:grid;position:absolute;inset:0}.test-body{pointer-events:auto;scrollbar-width:thin;width:min(1000px,100%);max-height:100%;padding:26px 26px 22px;overflow-y:auto}.test-body::-webkit-scrollbar{width:8px}.test-body::-webkit-scrollbar-thumb{background:#7ac4ff40;border-radius:999px}.test-head{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;padding-bottom:18px;display:flex}.test-head h1{margin-top:4px;font-size:32px;line-height:1.1}.test-head p{color:var(--ink-soft);max-width:52ch;margin-top:6px;font-size:13px}.test-stats{gap:18px;display:flex}.test-stats>div{gap:1px;display:grid}.test-stats b{font-family:var(--font-display);color:var(--cyan);font-size:21px;font-weight:500}.test-stats span{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);font-size:10px}.mode-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:20px;display:grid}.mode-card{text-align:left;border:1px solid var(--line);color:var(--ink);transition:transform .2s var(--ease), border-color .24s var(--ease), background .24s var(--ease);background:linear-gradient(155deg,#4fd8ff1a,#0a142280);border-radius:18px;gap:6px;padding:18px 18px 16px;display:grid;position:relative}.mode-card.accent-violet{background:linear-gradient(155deg,#8b6cff24,#0a142280)}.mode-card:hover,.mode-card.is-hover{border-color:var(--line-strong);transform:translateY(-3px)}.mode-card.is-pressed{transform:translateY(0)scale(.99)}.mode-icon{width:38px;height:38px;color:var(--cyan);background:#ffffff0f;border-radius:12px;place-items:center;margin-bottom:4px;display:grid}.mode-card.accent-violet .mode-icon{color:var(--violet)}.mode-icon svg.icon{width:19px;height:19px}.mode-card b{font-family:var(--font-display);font-size:17px;font-weight:500}.mode-card>span:last-of-type{color:var(--ink-soft);font-size:12px}.mode-arrow{color:var(--ink-dim);position:absolute;top:18px;right:18px}.mode-arrow svg.icon{width:16px;height:16px}.sets-head{border-bottom:1px solid var(--line);gap:4px;margin-top:26px;padding-bottom:10px;display:grid}.sets-head p{color:var(--ink-soft);font-size:12.5px}.set-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:14px;display:grid}.set-card{border:1px solid var(--line);background:#ffffff09;border-radius:18px;align-content:start;gap:8px;padding:18px;display:grid;position:relative}.set-ord{font-family:var(--font-display);letter-spacing:.2em;color:var(--cyan);font-size:11px}.set-card h3{font-size:16px}.set-card p{color:var(--ink-soft);font-size:12.5px}.set-foot{color:var(--ink-dim);align-items:center;gap:10px;margin-top:6px;font-size:11px;display:flex}.set-best{color:var(--amber)}.set-foot .btn{margin-left:auto}.test-top{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding-bottom:14px;display:flex}.test-top-title{flex:1;gap:6px;min-width:0;display:grid}.test-top-title .eyebrow{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.test-progress{background:#ffffff12;border-radius:999px;height:4px;overflow:hidden}.test-progress>i{background:linear-gradient(90deg, var(--cyan-deep), var(--cyan));height:100%;transition:width .4s var(--ease);border-radius:999px;display:block}.test-count{font-family:var(--font-display);color:var(--ink-soft);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}.quiz-position b{color:var(--ink);font-weight:600}.question{padding-top:20px}.question-meta{gap:7px;display:flex}.chip-soft{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);border:1px solid var(--line);background:#ffffff0d;border-radius:999px;padding:4px 10px;font-size:10.5px}.question h2{font-size:21px;font-weight:400;line-height:1.32;font-family:var(--font-body);color:var(--ink);margin-top:12px}.options{gap:9px;margin-top:18px;display:grid}.option{text-align:left;border:1px solid var(--line);color:var(--ink);transition:all .2s var(--ease);background:#ffffff09;border-radius:14px;align-items:center;gap:13px;padding:14px 16px;font-size:13.5px;display:flex;position:relative}.option:not([disabled]):hover,.option.is-hover:not([disabled]){border-color:var(--line-strong);background:#7ac4ff14;transform:translate(3px)}.option[disabled]{cursor:default}.option-key{width:26px;height:26px;font-family:var(--font-display);color:var(--ink-soft);background:#ffffff12;border-radius:9px;flex:none;place-items:center;font-size:12px;display:grid}.option-text{flex:1}.option-mark svg.icon{width:18px;height:18px}.option.is-correct{background:#4ade801a;border-color:#4ade808c}.option.is-correct .option-key{color:var(--green);background:#4ade8040}.option.is-correct .option-mark{color:var(--green)}.option.is-wrong{background:#fb718517;border-color:#fb71858c}.option.is-wrong .option-key{color:var(--rose);background:#fb718538}.option.is-wrong .option-mark{color:var(--rose)}.option.is-dim{opacity:.45}.answer-panel{border:1px solid var(--line);background:#ffffff08;border-radius:14px;margin-top:16px;padding:14px 16px}.answer-panel.is-correct{background:#4ade8012;border-color:#4ade8066}.answer-panel.is-wrong{background:#fb71850f;border-color:#fb718566}.answer-head{align-items:center;gap:9px;font-size:13px;display:flex}.answer-badge{background:#ffffff17;border-radius:50%;place-items:center;width:22px;height:22px;display:grid}.answer-panel.is-correct .answer-badge{color:var(--green);background:#4ade8033}.answer-panel.is-wrong .answer-badge{color:var(--rose);background:#fb718533}.answer-explain{color:var(--ink-soft);margin-top:9px;font-size:12.5px}.answer-explain span,.review-body span{font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);margin-right:7px;font-size:9.5px;display:inline-block}.question-foot{justify-content:flex-end;align-items:center;gap:12px;margin-top:18px;display:flex}.question-tip{color:var(--ink-dim);font-size:11.5px}.results-head{flex-wrap:wrap;align-items:center;gap:28px;padding:24px 4px 22px;display:flex}.score-ring{--p:0;--grade:var(--cyan);background:conic-gradient(var(--grade) calc(var(--p) * 1turn), #ffffff12 0);border-radius:50%;flex:none;place-items:center;width:132px;height:132px;display:grid;position:relative}.score-ring:after{content:"";background:#071120;border-radius:50%;position:absolute;inset:9px}.score-ring>div{justify-items:center;gap:1px;display:grid;position:relative}.score-ring b{font-family:var(--font-display);font-size:30px;font-weight:500;line-height:1}.score-ring small{color:var(--ink-soft);font-size:14px}.score-ring span{color:var(--ink-dim);font-variant-numeric:tabular-nums;font-size:11px}.results-copy{gap:7px;display:grid}.results-copy h2{font-size:26px}.results-copy p{color:var(--ink-soft);font-size:13px}.results-actions{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.review{border-top:1px solid var(--line);padding-top:16px}.review-list{gap:6px;margin-top:10px;display:grid}.review-row{border:1px solid var(--line);background:#ffffff06;border-radius:12px;overflow:hidden}.review-row>summary{cursor:pointer;align-items:center;gap:11px;padding:11px 14px;list-style:none;display:flex}.review-row>summary::-webkit-details-marker{display:none}.review-mark{border-radius:50%;flex:none;place-items:center;width:20px;height:20px;display:grid}.review-row.is-ok .review-mark{color:var(--green);background:#4ade8029}.review-row.is-bad .review-mark{color:var(--rose);background:#fb718529}.review-q{color:var(--ink-soft);flex:1;font-size:12.5px}.review-idx{font-family:var(--font-display);color:var(--ink-dim);font-variant-numeric:tabular-nums;font-size:10.5px}.review-body{color:var(--ink-soft);gap:7px;padding:0 14px 14px 45px;font-size:12.5px;display:grid}.review-explain{color:var(--ink-dim)}.flash-meta{color:var(--ink-dim);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:16px 2px 10px;font-size:11.5px;display:flex}.box-pips{gap:5px;display:inline-flex}.box-pips i{background:#ffffff1a;border-radius:999px;width:22px;height:4px}.box-pips i.is-on{background:var(--violet);box-shadow:0 0 10px #8b6cff99}.flashcard{perspective:1400px;background:0 0;border:none;width:100%;height:300px;padding:0;display:block}.flash-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .62s var(--ease);display:block;position:relative}.flashcard.is-revealed .flash-inner{transform:rotateY(180deg)}.flash-face{backface-visibility:hidden;text-align:center;border:1px solid var(--line-strong);background:linear-gradient(160deg,#142840d9,#08101ceb);border-radius:22px;align-content:center;justify-items:center;gap:14px;padding:34px;display:grid;position:absolute;inset:0}.flash-front b{font-family:var(--font-display);max-width:32ch;font-size:24px;font-weight:500;line-height:1.28}.flash-back{background:linear-gradient(160deg,#342258d9,#0a0e1ef0);border-color:#8b6cff73;transform:rotateY(180deg)}.flash-prompt{font-family:var(--font-display);color:var(--ink-soft);max-width:46ch;font-size:17px;line-height:1.35}.flash-answer{color:var(--ink);max-width:46ch;font-size:15px;line-height:1.5}.flash-tap{color:var(--ink-dim);align-items:center;gap:8px;font-size:11px;display:inline-flex}.flash-tap svg.icon{width:15px;height:15px}.flash-actions{gap:10px;margin-top:16px;display:flex}.flash-actions .btn{flex:1;padding:13px 16px;font-size:13px}.flash-hint{text-align:center;color:var(--ink-dim);margin-top:10px;font-size:11.5px}@media (max-width:1500px){:root{--hud-w:246px;--panel-w:246px}.test-shell{padding:84px 268px 96px 288px}}@media (max-width:1280px){.legend{display:none}.test-shell{padding:80px 250px 92px 26px}.page-intro{width:min(520px,62vw)}}@media (max-width:1080px){.topbar{padding:max(10px, var(--safe-top)) 16px 0}.left-rail{width:210px;top:72px}.hud{font-size:11.5px}.controls{width:min(560px,100vw - 24px);height:min(74vh,620px);height:min(74dvh,620px);max-height:none;padding:8px 14px calc(8px + var(--safe-bottom));transform:translate(-50%, calc(100% - var(--sheet-peek) - var(--safe-bottom)));-webkit-backdrop-filter:none;transition:transform .32s var(--ease);will-change:transform;background:#07101df7;border-bottom:none;border-radius:20px 20px 0 0;grid-auto-rows:max-content;align-content:start;gap:6px;bottom:0;left:50%;right:auto;overflow:hidden;box-shadow:0 -18px 50px #0000006b}.controls.is-open{padding-bottom:calc(14px + var(--safe-bottom));overscroll-behavior:contain;gap:10px;overflow-y:auto;transform:translate(-50%)}.controls.is-open .preview{justify-self:center;width:min(100%,420px)}.controls.is-open>.controls-head{z-index:3;-webkit-backdrop-filter:none;background:#07101dfc;margin:-8px -14px 0;padding:8px 14px;position:sticky;top:-8px}.controls:not(.is-open)>:not(.controls-head):not(.camera-status){display:none}.controls:not(.is-open) .camera-status{white-space:nowrap;min-height:18px;font-size:10.5px;overflow:hidden}.controls:not(.is-open) .camera-status>span{text-overflow:ellipsis;overflow:hidden}.controls:not(.is-open) .camera-status .ghost-btn{display:none}.controls .sheet-toggle{display:inline-flex}.controls-list{gap:4px}.test-shell{padding:76px 24px calc(var(--sheet-peek) + var(--safe-bottom) + 24px)}.structure-rail{bottom:calc(var(--sheet-peek) + var(--safe-bottom) + 10px);width:min(560px,100vw - 24px);padding:8px 10px 6px}.structure-rail-head{padding-bottom:3px}.lab-hint{display:none}.page-intro{width:min(520px,100vw - 40px)}.overlay-anchor{width:min(384px,100vw - 24px)}.info-overlay{-webkit-backdrop-filter:none;overscroll-behavior:contain;scrollbar-width:thin;background:#081220f2}.toast-host{top:auto;right:16px;bottom:calc(var(--sheet-peek) + var(--safe-bottom) + 76px);justify-items:stretch;width:calc(100vw - 32px);max-width:none}.toast{text-align:center;max-width:100%}}@media (min-width:821px) and (max-width:1080px){.page-intro{width:min(520px,100vw - 492px)}}@media (max-width:900px){.top-project-links{display:none}}@media (max-width:820px){.left-rail,.legend,.hud-debug,.knowledge-key{display:none}.topbar{padding:max(8px, var(--safe-top)) max(10px, var(--safe-right)) 0 max(10px, var(--safe-left));gap:8px}.brand{gap:7px;padding:6px 10px 6px 8px}.brand-version{display:none}.brand-word{letter-spacing:.2em;font-size:12px}.tabs{gap:2px;padding:3px}.tab{height:38px;padding:0 10px}.tabs .tab span{display:none}.page-intro{width:calc(100vw - 32px);top:70px}.page-intro h1{font-size:20px}.page-intro p{font-size:11.5px}.test-shell{padding:72px 16px calc(var(--sheet-peek) + var(--safe-bottom) + 16px)}.test-head{gap:12px;padding-bottom:12px}.test-head h1{font-size:26px}.test-head p{font-size:12px}.test-stats{gap:14px}.structure-rail{width:calc(100vw - 24px);bottom:calc(var(--sheet-peek) + var(--safe-bottom) + 8px)}.onboarding{padding:max(12px, var(--safe-top)) 12px calc(12px + var(--safe-bottom))}.onboarding-card{max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 24px);border-radius:20px;grid-template-columns:1fr}.onboarding-visual{display:none}.onboarding-body{padding:22px 20px 20px}.onboarding-skip{top:10px;right:10px}.onboarding-preview{width:100%}.onboarding-body h1{font-size:26px}.onboarding-body h2{font-size:22px}.onboarding-lead{font-size:13px}.overlay-anchor{width:min(384px,100vw - 24px)}.overlay-close{width:38px;height:38px}.info-overlay{padding:16px 16px 14px}.overlay-head h2{font-size:19px}}@media (max-width:640px){.topbar{gap:6px}.controls{width:calc(100vw - 16px);padding-left:12px;padding-right:12px}.auto-rotate{justify-content:center;width:38px;padding:0}.auto-label{display:none}.camera-chip{justify-content:center;width:38px;padding:0}.camera-chip span{display:none}.page-intro{width:calc(100vw - 24px);top:64px}.page-intro h1{font-size:18px}.page-intro p{font-size:11px}.test-shell{padding-top:66px;padding-left:12px;padding-right:12px}.test-head h1{font-size:23px}.structure-rail{width:calc(100vw - 16px);padding:7px 8px 5px}.structure-chip{min-height:34px;padding:6px 10px;font-size:11px}.onboarding-body h1{font-size:23px}.onboarding-body h2{font-size:20px}.toast-host{width:calc(100vw - 20px)}}@media (max-width:1080px) and (max-height:520px){.controls{height:calc(100vh - var(--safe-top) - 64px);height:calc(100dvh - var(--safe-top) - 64px)}.controls.is-open .preview{display:none}}@media (max-width:380px){.brand-word{display:none}.topbar{padding-left:max(8px, var(--safe-left));padding-right:max(8px, var(--safe-right))}}@media (pointer:coarse){button{touch-action:manipulation}.icon-btn{width:44px;height:44px}.project-link{touch-action:manipulation;min-height:44px;padding:10px 9px}.project-link--compact{width:44px;height:44px;padding:0}.tab{min-width:40px;height:44px}.auto-rotate{height:44px}.switch{width:44px;height:24px}.switch:after{content:"";border-radius:999px;position:absolute;inset:-10px -5px}.switch>span{width:18px;height:18px}.switch[aria-checked=true]>span{transform:translate(20px)}.control-row{min-height:44px;padding:10px 4px}.segmented button{min-height:38px}.segmented.mini button{min-height:36px}.ghost-btn.small{min-height:38px;padding:8px 10px}.controls-more>summary{padding:10px 0}.structure-chip{min-height:36px;padding:7px 11px}.overlay-close{width:42px;height:42px}}[data-reduced-motion=true] *{transition-duration:80ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}[data-reduced-motion=true] .flashcard.is-revealed .flash-inner{transform:none}[data-reduced-motion=true] .flash-back{opacity:0;pointer-events:none;transform:none}[data-reduced-motion=true] .flashcard.is-revealed .flash-front{opacity:0}[data-reduced-motion=true] .flashcard.is-revealed .flash-back{opacity:1}@media (prefers-reduced-motion:reduce){:root{--ease:ease}}.celly-debug{z-index:80;pointer-events:none;font-family:var(--font-ui,"Inter", sans-serif);position:fixed;inset:0}.celly-debug[hidden]{display:none}.celly-debug__svg{width:100%;height:100%;position:absolute;inset:0}.celly-debug__panel{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);color:#cfe6ff;pointer-events:none;background:#050a12db;border:1px solid #8cbeff40;border-radius:14px;width:360px;padding:12px 14px;font-size:11px;line-height:1.55;position:absolute;top:86px;left:24px;box-shadow:0 18px 50px #00000073}.celly-debug__head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.celly-debug__head strong{letter-spacing:.08em;text-transform:uppercase;color:#ffd166;font-size:11px}.celly-debug__keys{color:#7090ad;font-size:9px}.celly-debug__readout b{color:#9fd1ff;font-weight:600}.celly-debug__readout em{color:#b8ff6a;text-transform:uppercase;letter-spacing:.08em;font-size:9px;font-style:normal}.celly-debug__skin{color:#7fa6c4;font-size:10px}.celly-debug__legend{color:#8aa9c2;border-top:1px solid #8cbeff24;flex-wrap:wrap;gap:10px;margin:7px 0 6px;padding-top:6px;font-size:9.5px;display:flex}.celly-debug__legend span{align-items:center;gap:4px;display:inline-flex}.celly-debug__legend i{border-radius:50%;width:7px;height:7px}.celly-debug__log{gap:3px;max-height:220px;display:grid;overflow:hidden}.celly-debug__log>div{background:#78b4ff12;border-radius:6px;padding:3px 6px}.celly-debug__log span{color:#ffd166;text-transform:uppercase;min-width:46px;font-size:9px;display:inline-block}.celly-debug__log small{color:#7f9db6;margin-left:6px}.celly-debug__empty{color:#6f8ba4}.hud-actions{gap:6px;margin-top:9px;display:flex}.hud-action{border:1px solid var(--line);color:var(--ink-soft);letter-spacing:.04em;cursor:pointer;pointer-events:auto;background:#ffffff08;border-radius:7px;flex:1;padding:5px 6px;font-size:9.5px}.hud-action:hover{color:var(--ink);border-color:var(--line-strong);background:#4cc9f014}.lab-test-panel{top:108px;right:calc(var(--panel-w) + 28px);background:var(--glass);border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(18px);width:286px;color:var(--ink);pointer-events:auto;border-radius:14px;padding:12px 14px;position:absolute;box-shadow:0 20px 60px #0000005c}.lab-test-panel[hidden]{display:none}.lab-test-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.lab-test-head .eyebrow{color:var(--cyan)}.lab-test-close{color:var(--ink-dim);cursor:pointer;background:0 0;border:0;font-size:17px;line-height:1}.lab-test-target{letter-spacing:-.01em;margin:3px 0 8px;font-size:15px;font-weight:600}.lab-test-bar{background:#ffffff14;border-radius:999px;height:4px;overflow:hidden}.lab-test-bar>i{border-radius:inherit;width:0;height:100%;transition:width .3s var(--ease);background:linear-gradient(90deg,#4cc9f0,#b8ff6a);display:block}.lab-test-stats{color:var(--ink-soft);font-variant-numeric:tabular-nums;margin:7px 0 4px;font-size:11px}.lab-test-list{max-height:124px;color:var(--ink-soft);gap:3px;font-size:10.5px;display:grid;overflow:hidden}.lab-test-list>div{align-items:baseline;gap:5px;display:flex}.lab-test-list b{color:#ff6b8a;width:11px}.lab-test-list .is-hit b{color:#b8ff6a}.lab-test-list small{color:var(--ink-dim);font-variant-numeric:tabular-nums;margin-left:auto}.lab-test-actions{pointer-events:auto;gap:6px;margin-top:9px;display:flex}.lab-test-marker{z-index:20;pointer-events:none;will-change:transform;width:0;height:0;position:absolute;top:0;left:0}.lab-test-marker[hidden]{display:none}.lab-test-marker i{border:2px solid #ffd166;border-radius:50%;width:58px;height:58px;animation:1.4s ease-in-out infinite test-pulse;position:absolute;top:-29px;left:-29px;box-shadow:0 0 0 5px #ffd1661f,0 0 26px #ffd16673}.lab-test-marker b{color:#ffd166;white-space:nowrap;background:#0a101ad1;border:1px solid #ffd16666;border-radius:6px;padding:3px 7px;font-size:10px;font-weight:600;position:absolute;top:-28px;left:36px}@keyframes test-pulse{0%,to{opacity:.7;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}
