:root{font-family:PingFang SC,Noto Sans CJK SC,Microsoft YaHei,system-ui,sans-serif;color:#f4f7f5;background:#0b1d22;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #f4f7f5;--muted: #b2c0ba;--subtle: #9eada6;--panel: #10211e;--panel-soft: rgba(16, 33, 30, .92);--line: rgba(198, 229, 218, .18);--line-strong: rgba(198, 229, 218, .32);--orange: #ff6535;--orange-soft: #ff966f;--mint: #72dfbe;--mono: "SFMono-Regular", "Roboto Mono", Consolas, monospace;--safe-top: env(safe-area-inset-top);--safe-right: env(safe-area-inset-right);--safe-bottom: env(safe-area-inset-bottom);--safe-left: env(safe-area-inset-left)}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{min-width:320px;background:#0b1d22}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--orange);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{display:grid;grid-template-columns:284px minmax(0,1fr) 330px;grid-template-rows:72px minmax(0,1fr) 96px;width:100%;height:var(--app-height, 100vh);background:#0b1d22}.topbar{z-index:30;grid-column:1 / 4;grid-row:1;display:flex;align-items:center;gap:24px;min-width:0;padding:0 18px 0 22px;border-bottom:1px solid var(--line);background:#0c1b1df5;backdrop-filter:blur(20px)}.brand{display:flex;align-items:center;gap:12px;min-width:222px;color:var(--ink);text-decoration:none}.brand__mark{position:relative;display:block;width:36px;height:36px;border:1px solid rgba(255,101,53,.46);border-radius:50%;transform:rotate(-8deg)}.brand__mark:before,.brand__mark:after{position:absolute;content:""}.brand__mark:before{inset:7px 9px 8px 11px;border-radius:80% 20% 62% 38%/65% 32% 68% 35%;background:var(--orange);transform:rotate(32deg)}.brand__mark:after{left:5px;bottom:-1px;width:23px;height:11px;border-bottom:1px solid var(--orange-soft);border-radius:50%;transform:rotate(-19deg)}.brand__mark i{position:absolute;z-index:1;display:block;width:2px;height:8px;border-radius:2px;background:#0b1d22}.brand__mark i:nth-child(1){left:15px;top:9px;transform:rotate(20deg)}.brand__mark i:nth-child(2){left:19px;top:13px;transform:rotate(36deg)}.brand__mark i:nth-child(3){left:12px;top:15px;transform:rotate(-14deg)}.brand b{display:block;font-size:15px;font-weight:650;letter-spacing:.08em}.brand small{display:block;margin-top:3px;color:var(--muted);font:500 9px/1 var(--mono);letter-spacing:.18em}.mission-stats{display:flex;align-self:stretch;min-width:0;border-left:1px solid var(--line);border-right:1px solid var(--line)}.mission-stats>span{display:flex;flex-direction:column;justify-content:center;min-width:92px;padding:0 18px;border-right:1px solid var(--line)}.mission-stats>span:last-child{border-right:0}.mission-stats small{margin-bottom:5px;color:var(--subtle);font:500 8px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase}.mission-stats b{overflow:hidden;color:#e1e8e4;font:500 12px/1 var(--mono);text-overflow:ellipsis;white-space:nowrap}.mission-stats i{color:var(--muted);font-size:9px;font-style:normal}.mode-switch{display:flex;align-items:center;gap:3px;margin-left:auto;padding:4px;border:1px solid var(--line);border-radius:999px;background:#ffffff06}.mode-switch button{display:flex;align-items:center;gap:7px;min-height:32px;padding:0 13px;border:0;border-radius:999px;color:var(--muted);background:transparent;font-size:11px;cursor:pointer}.mode-switch button span{width:5px;height:5px;border-radius:50%;background:currentColor}.mode-switch button.is-active{color:#fff7f2;background:#26312e;box-shadow:inset 0 0 0 1px #ffffff0a}.mode-switch button.is-active span{color:var(--orange);box-shadow:0 0 8px var(--orange)}.mobile-mode-switch,.lesson-card__toggle,.mobile-quiz-button{display:none}.mobile-mode-switch button{display:flex;min-height:44px;flex:1;align-items:center;justify-content:center;gap:8px;border:0;border-radius:3px;color:var(--muted);background:transparent;font-size:11px}.mobile-mode-switch button span{width:6px;height:6px;border-radius:50%;background:currentColor}.mobile-mode-switch button.is-active{color:#fff7f2;background:#ffffff12}.mobile-mode-switch button.is-active span{color:var(--orange);box-shadow:0 0 8px var(--orange)}.topbar__actions{display:flex;align-items:center;gap:6px}.icon-button{display:inline-grid;width:38px;height:38px;padding:0;place-items:center;border:1px solid var(--line);border-radius:50%;color:#c7d1cc;background:transparent;cursor:pointer;transition:color .16s ease,border-color .16s ease,background .16s ease}.icon-button:hover{color:#fff;border-color:var(--line-strong);background:#ffffff0d}.icon-button svg,.tool-toggle svg,.transport-button svg,.lesson-instruction svg,.structure-tree summary svg,.part-actions svg{width:19px;height:19px;fill:none}.mobile-menu,.sidebar-close,.inspector-close{display:none}.lesson-sidebar{z-index:12;grid-column:1;grid-row:2 / 4;display:flex;min-height:0;flex-direction:column;padding:28px 18px 22px 22px;overflow:auto;border-right:1px solid var(--line);background:#0d201e;scrollbar-width:thin;scrollbar-color:#30423c transparent}.sidebar-head{display:flex;align-items:flex-start;justify-content:space-between}.eyebrow{display:block;color:var(--orange-soft);font:600 9px/1.2 var(--mono);letter-spacing:.18em;text-transform:uppercase}.sidebar-head h1{margin:8px 0 0;color:#f1f4f0;font-size:27px;font-weight:600;letter-spacing:.04em}.sidebar-intro{margin:14px 0 20px;color:#a9b6b0;font-size:11px;line-height:1.8}.course-progress{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:9px 12px;padding:11px 12px;border:1px solid var(--line);border-radius:4px;background:#ffffff05}.course-progress>span{grid-row:1 / 3;color:var(--subtle);font:500 9px/1 var(--mono)}.course-progress>span i{color:var(--orange);font-size:14px;font-style:normal}.course-progress>div{height:2px;overflow:hidden;background:#25342f}.course-progress>div i{display:block;width:0;height:100%;background:var(--orange);box-shadow:0 0 8px #ff653599}.course-progress small{color:var(--subtle);font:500 8px/1 var(--mono)}.chapter-list{display:flex;flex-direction:column;margin-top:14px}.chapter-item{position:relative;display:grid;grid-template-columns:28px 1fr 10px;align-items:center;gap:7px;min-height:57px;padding:8px 8px 8px 5px;border:0;border-bottom:1px solid rgba(184,216,204,.075);color:#a2b0aa;text-align:left;background:transparent;cursor:pointer;transition:color .16s ease,background .16s ease}.chapter-item:before{position:absolute;left:-6px;width:2px;height:0;border-radius:2px;background:var(--orange);content:"";transition:height .18s ease}.chapter-item:hover,.chapter-item.is-active{color:#dfe6e1;background:linear-gradient(90deg,rgba(255,101,53,.07),transparent 76%)}.chapter-item.is-active:before{height:32px}.chapter-item__index{color:#75877f;font:500 9px/1 var(--mono)}.chapter-item.is-active .chapter-item__index{color:var(--orange)}.chapter-item small,.chapter-item b{display:block}.chapter-item small{margin-bottom:4px;color:#a2b0aa;font-size:9px;font-weight:500}.chapter-item b{overflow:hidden;font-size:11px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.chapter-item__state{width:6px;height:6px;border:1px solid #405149;border-radius:50%}.chapter-item.is-active .chapter-item__state{border:0;background:var(--orange);box-shadow:0 0 8px var(--orange)}.chapter-item.is-complete .chapter-item__state{border-color:var(--mint);background:var(--mint)}.structure-tree{margin-top:18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.structure-tree summary{display:flex;align-items:center;justify-content:space-between;min-height:48px;color:#c2cdc8;list-style:none;cursor:pointer}.structure-tree summary::-webkit-details-marker{display:none}.structure-tree summary span{display:flex;align-items:center;gap:8px;font-size:11px}.structure-tree summary svg{width:16px;color:var(--orange-soft)}.structure-tree summary small{color:#a0afa7;font:500 8px/1 var(--mono)}.structure-tree>div{padding-bottom:8px}.structure-tree button{display:grid;grid-template-columns:6px 1fr auto;align-items:center;gap:10px;width:100%;min-height:44px;padding:6px 7px;border:0;border-radius:3px;color:#aebbb5;text-align:left;background:transparent;cursor:pointer}.structure-tree button:hover,.structure-tree button.is-active{color:#eef4f0;background:#ffffff09}.structure-tree button>i{width:4px;height:21px;border-radius:2px;background:var(--part-color)}.structure-tree button span{font-size:10px}.structure-tree button small{display:block;margin-top:2px;color:#a0afa7;font-size:8px}.structure-tree button b{color:#94a69e;font:500 8px/1 var(--mono)}.model-note{margin-top:auto;padding-top:20px}.model-note span{color:#a6b4ae;font:600 8px/1 var(--mono);letter-spacing:.15em}.model-note p{margin:7px 0 0;color:#b3c0ba;font-size:10px;line-height:1.65}.viewport{position:relative;grid-column:2;grid-row:2;min-width:0;min-height:0;overflow:hidden;background:radial-gradient(circle at 50% 42%,rgba(82,139,149,.48),rgba(30,70,76,.3) 35%,transparent 68%),linear-gradient(135deg,#17353b,#0d2228 58%,#10282b)}.scene-container,.webgl-canvas,.label-layer{position:absolute;inset:0;width:100%;height:100%}.webgl-canvas{display:block;touch-action:none;outline:none}.webgl-canvas.is-over-part{cursor:pointer}.label-layer{z-index:2;overflow:hidden;pointer-events:none}.viewport-vignette{position:absolute;z-index:3;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(6,19,22,.18),transparent 16%,transparent 78%,rgba(6,19,22,.14)),linear-gradient(0deg,rgba(6,19,22,.28),transparent 22%,transparent 78%,rgba(6,19,22,.08))}.viewport-meta{position:absolute;z-index:4;top:20px;left:22px;display:flex;gap:8px;pointer-events:none}.viewport-meta span{display:flex;align-items:center;gap:7px;min-height:26px;padding:0 9px;border:1px solid var(--line);border-radius:2px;color:#b0bdb7;background:#0c1e1fbd;backdrop-filter:blur(10px);font:500 8px/1 var(--mono);letter-spacing:.11em}.live-dot{width:5px;height:5px;border-radius:50%;background:var(--mint);box-shadow:0 0 7px var(--mint);animation:livePulse 2s ease infinite}.scale-guide{position:absolute;z-index:4;top:74px;left:28px;display:flex;height:calc(100% - 195px);min-height:180px;flex-direction:column;align-items:center;color:#778a81;pointer-events:none}.scale-guide span{position:absolute;top:50%;left:-18px;padding:4px;background:#0c1e1fc2;font:500 7px/1 var(--mono);transform:rotate(-90deg) translate(-50%)}.scale-guide i{width:1px;height:100%;background:linear-gradient(#4b5f57,#4b5f571a)}.scale-guide:before,.scale-guide:after{position:absolute;left:-3px;width:7px;height:1px;background:#778a81;content:""}.scale-guide:before{top:0}.scale-guide:after{bottom:0}.view-toolbar{position:absolute;z-index:7;top:20px;right:20px;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:3px;background:#0d2223e6;backdrop-filter:blur(14px)}.view-toolbar button{display:grid;grid-template-columns:20px 1fr;align-items:center;gap:3px;width:70px;min-height:38px;padding:0 8px;border:0;border-bottom:1px solid var(--line);color:#b8c5bf;text-align:left;background:transparent;cursor:pointer}.view-toolbar button:last-child{border-bottom:0}.view-toolbar button:hover,.view-toolbar button.is-active{color:#e7ede9;background:#ffffff0b}.view-toolbar button.is-active{box-shadow:inset 2px 0 var(--orange)}.view-toolbar span{color:#9faea7;font:500 7px/1 var(--mono)}.view-toolbar button.is-active span{color:var(--orange)}.view-toolbar b{font-size:9px;font-weight:500}.lesson-card{position:absolute;z-index:5;bottom:24px;left:27px;display:grid;grid-template-columns:46px minmax(0,390px);gap:13px;max-width:min(515px,calc(100% - 110px));padding:16px 18px 15px 13px;border:1px solid rgba(184,216,204,.14);border-radius:3px;background:linear-gradient(120deg,#0d2222f2,#173a35e0);box-shadow:0 18px 45px #00000047;backdrop-filter:blur(16px);transition:opacity .2s ease,transform .2s ease}.app-shell[data-mode=explore] .lesson-card{opacity:.42;transform:translateY(4px)}.lesson-card__index{display:flex;flex-direction:column;align-items:center;gap:9px;color:var(--orange);font:500 12px/1 var(--mono)}.lesson-card__index i{width:1px;height:50px;background:linear-gradient(var(--orange),transparent)}.lesson-card h2{margin:6px 0 7px;color:#eef3ef;font-size:18px;font-weight:550;line-height:1.35}.lesson-card p{margin:0;color:#c7d1cc;font-size:10px;line-height:1.75}.lesson-instruction{display:flex;align-items:center;gap:7px;margin-top:11px;color:#c5d0cb;font-size:9px}.lesson-instruction i{display:grid;width:20px;height:20px;place-items:center;border-radius:50%;color:var(--orange-soft);background:#ff653517}.lesson-instruction svg{width:12px}.gesture-tip{position:absolute;z-index:8;top:48%;left:50%;display:flex;align-items:center;gap:10px;padding:8px 8px 8px 10px;border:1px solid var(--line-strong);border-radius:999px;color:#d1d9d5;background:#0d2223eb;box-shadow:0 12px 40px #00000040;backdrop-filter:blur(12px);font-size:9px;transform:translate(-50%,-50%);transition:opacity .5s ease,transform .5s ease}.gesture-tip.is-hidden{opacity:0;pointer-events:none;transform:translate(-50%,-40%)}.gesture-tip>i{width:17px;height:21px;border:1px solid #8b9c94;border-radius:8px;position:relative}.gesture-tip>i:before{position:absolute;top:4px;left:7px;width:2px;height:5px;border-radius:2px;background:var(--orange);content:"";animation:gesture 1.6s ease-in-out infinite}.gesture-tip button{display:grid;width:22px;height:22px;padding:0;place-items:center;border:0;border-radius:50%;color:#aebdb6;background:#ffffff14;cursor:pointer}.gesture-tip button svg{width:13px;height:13px}.hotspot{display:flex;min-height:30px;align-items:center;gap:6px;padding:3px 8px 3px 4px;border:1px solid rgba(199,224,214,.2);border-radius:2px;color:#e0e7e3;background:#0c1e1fe0;box-shadow:0 5px 16px #0003;backdrop-filter:blur(8px);pointer-events:auto;cursor:pointer;transform-origin:left center;transition:border-color .16s ease,color .16s ease,transform .16s ease,opacity .16s ease}.hotspot:hover,.hotspot.is-active{border-color:#ff6535b3;color:#fff;transform:scale(1.04)}.hotspot__pulse{position:absolute;left:-14px;width:8px;height:8px;border:2px solid var(--orange);border-radius:50%;background:#0c1e1fe6;box-shadow:0 0 0 4px #ff65351f,0 0 10px #ff653599}.hotspot__pulse:after{position:absolute;top:2px;right:-11px;width:10px;height:1px;background:#ff65358c;content:""}.hotspot__index{display:grid;width:22px;height:22px;place-items:center;border-radius:1px;color:var(--orange-soft);background:#ff65351a;font:500 7px/1 var(--mono)}.hotspot__name{font-size:9px;white-space:nowrap}.inspector{z-index:15;grid-column:3;grid-row:2 / 4;min-width:0;min-height:0;padding:28px 25px 22px;overflow:auto;border-left:1px solid var(--line);background:#102421;scrollbar-width:thin;scrollbar-color:#30423c transparent}.inspector__handle{display:none}.inspector-empty{display:flex;min-height:100%;flex-direction:column;align-items:flex-start;justify-content:center}.inspector-orbit{position:relative;display:grid;width:105px;height:105px;margin-bottom:30px;place-items:center;border:1px solid #283c35;border-radius:50%}.inspector-orbit:before,.inspector-orbit:after{position:absolute;border:1px solid #22352f;border-radius:50%;content:""}.inspector-orbit:before{inset:15px}.inspector-orbit:after{inset:30px}.inspector-orbit i{width:5px;height:44px;border-radius:50% 50% 3px 3px;background:linear-gradient(#d3d8d2 65%,var(--orange) 65%)}.inspector-orbit b{position:absolute;top:12px;right:13px;width:5px;height:5px;border-radius:50%;background:var(--orange);box-shadow:0 0 8px var(--orange);animation:orbitDot 4s linear infinite}.inspector-empty h2,.part-detail h2{margin:9px 0 12px;color:#eff3ef;font-size:24px;font-weight:550;line-height:1.35}.inspector-empty>p{margin:0 0 24px;color:#aebbb5;font-size:11px;line-height:1.85}.inspector-empty>small{margin-top:13px;color:#82958c;font-size:9px;line-height:1.6}.primary-button{min-height:42px;padding:0 17px;border:1px solid #f35f33;border-radius:2px;color:#fff7f2;background:linear-gradient(135deg,#d84a25,#f16235);box-shadow:0 9px 24px #d749242b;font-size:10px;font-weight:600;cursor:pointer}.primary-button:hover{filter:brightness(1.08)}.primary-button span{margin-left:15px}.part-detail__top{display:flex;align-items:center;justify-content:space-between;color:#899b92;font:500 8px/1 var(--mono)}.part-detail__top>span{color:var(--accent);font-size:12px}.part-detail__top>i{font-style:normal}.part-visual{position:relative;display:grid;height:145px;margin:19px 0 24px;overflow:hidden;place-items:center;border:1px solid var(--line);background:linear-gradient(rgba(114,223,190,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(114,223,190,.045) 1px,transparent 1px),radial-gradient(circle,rgba(114,223,190,.09),transparent 60%);background-size:18px 18px,18px 18px,auto}.part-visual:before,.part-visual:after{position:absolute;inset:20px 50px;border:1px solid rgba(114,223,190,.16);border-radius:50%;content:""}.part-visual:after{inset:37px 77px}.part-visual i{width:21px;height:91px;border:1px solid var(--accent);border-radius:50% 50% 3px 3px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 25%,transparent));box-shadow:0 0 24px color-mix(in srgb,var(--accent) 20%,transparent)}.part-visual b{position:absolute;right:11px;bottom:8px;color:color-mix(in srgb,var(--accent) 55%,#50615a);font:500 28px/1 var(--mono);opacity:.34}.part-visual span{position:absolute;width:63%;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.32}.part-description{margin:0 0 18px;color:#b8c4be;font-size:11px;line-height:1.9}.part-detail dl{margin:0;border-top:1px solid var(--line)}.part-detail dl>div{display:grid;grid-template-columns:30px 1fr;min-height:38px;align-items:center;border-bottom:1px solid var(--line)}.part-detail dt{color:#879990;font:500 8px/1 var(--mono)}.part-detail dd{margin:0;color:#d2d9d5;font-size:9px}.teaching-note{margin-top:18px;padding:12px 13px;border-left:2px solid var(--accent);background:#ffffff06}.teaching-note b{color:#cbd4cf;font-size:10px}.teaching-note p{margin:6px 0 0;color:#a2b1a9;font-size:10px;line-height:1.75}.part-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:18px}.part-actions button{display:flex;min-height:39px;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line-strong);border-radius:2px;color:#c5d0ca;background:transparent;font-size:9px;cursor:pointer}.part-actions button:hover,.part-actions button[aria-pressed=true]{color:#fff;border-color:#ff65358c;background:#ff653514}.part-actions svg{width:14px}.transport{z-index:20;grid-column:2;grid-row:3;display:grid;grid-template-columns:auto minmax(180px,1fr) auto;align-items:center;gap:24px;min-width:0;padding:0 20px;border-top:1px solid var(--line);background:#0c1e1dfa}.transport__player{display:flex;align-items:center;gap:7px}.transport-button{display:grid;padding:0;place-items:center;border-radius:50%;cursor:pointer}.transport-button--small{width:32px;height:32px;border:1px solid var(--line);color:#b4c2bb;background:transparent}.transport-button--play{width:48px;height:48px;border:1px solid rgba(255,101,53,.6);color:#fff;background:radial-gradient(circle at 35% 25%,#ff7e51,#d84a27 70%);box-shadow:0 0 0 5px #ff65350f,0 8px 24px #e24e2533}.transport-button--play.is-playing{box-shadow:0 0 0 5px #ff65351a,0 0 20px #ff653540}.transport-button--small:hover{color:#fff;border-color:var(--line-strong)}.transport-button svg{width:17px}.transport-button--play svg{width:22px}.speed-button{width:31px;height:24px;padding:0;border:0;border-radius:2px;color:#a1b0a8;background:#ffffff0a;font:500 8px/1 var(--mono);cursor:pointer}.timeline-wrap{min-width:0}.timeline-labels{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;color:#bac6c0;font-size:9px}.timeline-labels span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-labels time{margin-left:12px;color:#b0bdb7;font:500 8px/1 var(--mono);white-space:nowrap}.timeline-control{position:relative;height:16px}.timeline-track{position:absolute;top:7px;right:0;left:0;height:2px;background:#26352f}.timeline-track i{display:block;width:0;height:100%;background:linear-gradient(90deg,#dd4e2b,var(--orange));box-shadow:0 0 7px #ff653566}.timeline-track b{position:absolute;top:-2px;width:1px;height:6px;background:#4a5a53}.timeline-control input,.explode-control input{position:absolute;z-index:2;width:100%;height:16px;margin:0;appearance:none;background:transparent;cursor:pointer}.timeline-control input::-webkit-slider-thumb,.explode-control input::-webkit-slider-thumb{width:11px;height:11px;appearance:none;border:2px solid #102421;border-radius:50%;background:var(--orange);box-shadow:0 0 0 1px var(--orange),0 0 8px #ff653580}.timeline-control input::-moz-range-thumb,.explode-control input::-moz-range-thumb{width:8px;height:8px;border:2px solid #102421;border-radius:50%;background:var(--orange);box-shadow:0 0 0 1px var(--orange)}.view-controls{display:flex;align-items:center;gap:6px}.explode-control{position:relative;display:grid;grid-template-columns:auto 74px 29px;align-items:center;gap:8px;min-width:157px;height:39px;padding:0 9px;border:1px solid var(--line);border-radius:2px;background:#ffffff05}.explode-control>span{display:flex;align-items:center;gap:5px;color:#b7c4bd}.explode-control svg{width:14px;height:14px}.explode-control b{font-size:9px;font-weight:500}.explode-control input{position:relative;height:14px}.explode-control input:before{position:absolute;top:6px;left:0;width:100%;height:2px;background:#2b3a34;content:""}.explode-control output{color:#97aaa0;font:500 8px/1 var(--mono);text-align:right}.tool-toggle{display:flex;width:43px;height:39px;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:0;border:1px solid var(--line);border-radius:2px;color:#9dafa6;background:transparent;cursor:pointer}.tool-toggle svg{width:15px;height:15px}.tool-toggle span{font-size:7px}.tool-toggle:hover,.tool-toggle.is-active{color:#fff;border-color:#ff65358c;background:#ff653517}.loading-screen{position:absolute;z-index:50;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#d7e0db;background:#0b1d22;transition:opacity .65s ease,visibility .65s ease}.loading-screen.is-done{visibility:hidden;opacity:0}.loading-screen>span{margin-top:27px;font-size:11px;letter-spacing:.12em}.loading-screen>small{margin-top:7px;color:#94a69e;font:500 8px/1 var(--mono);letter-spacing:.15em}.loader-orbit{position:relative;width:78px;height:78px;border:1px solid #263e35;border-radius:50%;animation:rotate 4s linear infinite}.loader-orbit:before{position:absolute;inset:12px;border:1px solid #1f332c;border-radius:50%;content:""}.loader-orbit i{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--orange);box-shadow:0 0 10px var(--orange)}.loader-orbit i:first-child{top:4px;left:34px}.loader-orbit i:nth-child(2){right:7px;bottom:12px;width:3px;height:3px;background:var(--mint);box-shadow:0 0 8px var(--mint)}.loader-orbit b{position:absolute;top:24px;left:34px;width:8px;height:31px;border-radius:50% 50% 2px 2px;background:linear-gradient(#dce2dd 66%,var(--orange) 66%);transform:rotate(-10deg)}.drawer-scrim{position:fixed;z-index:35;inset:0;visibility:hidden;opacity:0;background:#0207069e;backdrop-filter:blur(3px);transition:opacity .2s ease,visibility .2s ease}.toast{position:fixed;z-index:100;bottom:117px;left:50%;padding:10px 14px;border:1px solid var(--line-strong);border-radius:2px;color:#dbe3de;background:#122a27f7;box-shadow:0 15px 35px #0000004d;font-size:10px;opacity:0;pointer-events:none;transform:translate(-50%,8px);transition:opacity .2s ease,transform .2s ease}.toast.is-visible{opacity:1;transform:translate(-50%)}dialog{color:var(--ink)}dialog::backdrop{background:#020706c2;backdrop-filter:blur(8px)}.help-dialog,.quiz-dialog{position:relative;width:min(680px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:36px;overflow:auto;border:1px solid rgba(184,216,204,.18);border-radius:4px;background:linear-gradient(145deg,#17322f,#0e2425);box-shadow:0 30px 90px #00000080}.dialog-close{position:absolute;top:17px;right:17px}.help-dialog h2,.quiz-dialog h2{margin:9px 0 25px;font-size:25px;font-weight:550}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.help-grid article{display:grid;grid-template-columns:34px 1fr;align-items:center;padding:15px;border:1px solid var(--line);background:#ffffff05}.help-grid article i{grid-row:1 / 3;color:var(--orange);font:500 11px/1 var(--mono);font-style:normal}.help-grid article b{font-size:11px;font-weight:550}.help-grid article p{margin:5px 0 0;color:#a7b6ae;font-size:10px;line-height:1.6}.shortcut-row{display:flex;flex-wrap:wrap;gap:14px;margin:21px 0;color:#9cafa5;font-size:9px}.source-note{margin:-5px 0 20px;color:#9cafa5;font-size:10px;line-height:1.7}.source-note a{color:var(--orange-soft);text-decoration:none}.source-note a:hover{text-decoration:underline}kbd{min-width:22px;padding:3px 6px;border:1px solid #3a4c44;border-radius:2px;color:#a9b6b0;background:#111f1b;font:500 8px/1 var(--mono);text-align:center}.quiz-dialog{width:min(570px,calc(100vw - 32px))}.quiz-head{display:flex;justify-content:space-between;align-items:center}.quiz-head>i{color:#94a69e;font:500 9px/1 var(--mono);font-style:normal}.quiz-options{display:grid;gap:8px}.quiz-options button{position:relative;display:grid;grid-template-columns:32px 1fr 18px;align-items:center;min-height:51px;padding:7px 12px;border:1px solid var(--line);border-radius:2px;color:#a9b6b0;text-align:left;background:#ffffff05;font-size:10px;cursor:pointer}.quiz-options button:hover:not(:disabled){border-color:#ff653573;background:#ff65350d}.quiz-options button>span{display:grid;width:23px;height:23px;place-items:center;border:1px solid #53685f;border-radius:50%;color:#98aaa1;font:500 8px/1 var(--mono)}.quiz-options button.is-correct{border-color:#72dfbe94;background:#72dfbe0f;color:#d9f4eb}.quiz-options button.is-correct i:after{color:var(--mint);content:"✓"}.quiz-options button.is-wrong{border-color:#ff65358c}.quiz-options button.is-wrong i:after{color:var(--orange);content:"×"}.quiz-feedback{min-height:0;margin-top:0;padding:0;color:#b7c4bd;font-size:10px;line-height:1.7;transition:all .2s ease}.quiz-feedback:not(:empty){min-height:44px;margin-top:13px;padding:11px 13px;border-left:2px solid currentColor;background:#ffffff05}.quiz-feedback.is-correct{color:var(--mint)}.quiz-feedback.is-wrong{color:var(--orange-soft)}.quiz-dialog>.primary-button{margin-top:16px}.webgl-fallback{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center}.webgl-fallback h2{margin:9px 0;font-size:22px;font-weight:550}.webgl-fallback p{max-width:450px;margin:0 0 20px;color:#afbbb5;font-size:11px;line-height:1.8}.fallback-rocket{position:relative;width:60px;height:150px;margin-bottom:24px}.fallback-rocket i{position:absolute;left:22px;width:16px;height:126px;border-radius:50% 50% 3px 3px;background:linear-gradient(#d8ddd7 35%,var(--orange) 35% 58%,#d8ddd7 58%)}.fallback-rocket b{position:absolute;bottom:5px;left:12px;width:36px;height:1px;background:var(--orange);box-shadow:0 0 15px var(--orange)}.fallback-rocket span{position:absolute;inset:0;border:1px solid #263a33;border-radius:50%}@keyframes livePulse{50%{opacity:.42;box-shadow:0 0 2px var(--mint)}}@keyframes gesture{0%,to{transform:translateY(0)}50%{transform:translateY(7px)}}@keyframes orbitDot{to{transform:rotate(360deg) translate(-14px) rotate(-360deg)}}@keyframes rotate{to{transform:rotate(360deg)}}@media(max-width:1280px){.app-shell{grid-template-columns:258px minmax(0,1fr) 300px}.brand{min-width:200px}.mission-stats>span{min-width:78px;padding:0 11px}.transport{gap:14px;padding:0 14px}.explode-control{grid-template-columns:auto 55px 27px;min-width:134px}}@media(max-width:1100px){.app-shell{grid-template-columns:250px minmax(0,1fr)}.topbar{grid-column:1 / 3}.mission-stats>span:nth-child(3),.mission-stats>span:nth-child(4){display:none}.inspector{position:fixed;z-index:45;top:72px;right:0;bottom:0;width:min(360px,92vw);transform:translate(101%);box-shadow:-20px 0 60px #00000059;transition:transform .22s ease}.inspector-close{display:grid;position:absolute;top:14px;right:14px;z-index:2}.app-shell.has-inspector .inspector{transform:translate(0)}.app-shell.has-inspector .drawer-scrim{visibility:visible;opacity:1}.transport{grid-column:2}.desktop-label-toggle{display:none}}@media(max-width:860px),(pointer:coarse)and (max-width:1366px){.app-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:calc(56px + var(--safe-top)) minmax(0,1fr) calc(96px + var(--safe-bottom));height:var(--app-height, 100dvh)}.topbar{grid-column:1;min-height:calc(56px + var(--safe-top));height:auto;gap:8px;padding-top:var(--safe-top);padding-right:max(8px,var(--safe-right));padding-left:max(8px,var(--safe-left))}.icon-button,.mobile-menu{width:44px;height:44px;flex:0 0 auto}.mobile-menu{display:grid}.brand{min-width:0;margin-right:auto;gap:9px}.brand{min-height:44px}.brand__mark{width:30px;height:30px;flex:0 0 auto}.brand b{font-size:13px;white-space:nowrap}.brand small,.mission-stats,.mode-switch{display:none}.topbar__actions{gap:3px}.topbar__actions .icon-button{display:grid}.lesson-sidebar{position:fixed;z-index:45;inset:0 auto 0 0;width:min(340px,calc(100vw - 44px));padding-top:calc(20px + var(--safe-top));padding-right:18px;padding-bottom:calc(20px + var(--safe-bottom));padding-left:max(18px,var(--safe-left));overscroll-behavior:contain;box-shadow:20px 0 60px #0000006b;transform:translate(-101%);transition:transform .22s ease}.mobile-mode-switch{display:flex;width:100%;margin-bottom:14px;padding:4px;border:1px solid var(--line);border-radius:4px;background:#ffffff06}.chapter-item small{font-size:9px}.chapter-item b{font-size:12px}.structure-tree summary small{font-size:9px}.structure-tree button span{font-size:11px}.structure-tree button small{font-size:9px}.sidebar-close{display:grid}.app-shell.nav-open .lesson-sidebar{transform:translate(0)}.app-shell.nav-open .drawer-scrim,.app-shell.has-inspector .drawer-scrim{visibility:visible;opacity:1}.viewport{grid-column:1;grid-row:2}.transport{position:relative;grid-column:1;grid-row:3;grid-template-columns:186px minmax(0,1fr);gap:9px;min-height:calc(96px + var(--safe-bottom));padding-top:0;padding-right:max(8px,var(--safe-right));padding-bottom:var(--safe-bottom);padding-left:max(8px,var(--safe-left))}.transport__player{gap:2px}.transport-button--play{width:48px;height:48px}.transport-button--small{width:44px;height:44px}.speed-button{display:grid;width:44px;height:44px;place-items:center;font-size:10px}.timeline-labels{margin-bottom:5px;font-size:10px}.timeline-labels time{font-size:9px}.timeline-labels span{max-width:min(130px,45vw)}.timeline-control{height:44px;margin-top:-8px}.timeline-track{top:21px}.timeline-control input{height:44px}.view-controls{position:absolute;z-index:8;right:max(8px,var(--safe-right));bottom:calc(100% + 8px);gap:4px;max-width:calc(100vw - max(16px,var(--safe-left)) - max(16px,var(--safe-right)));padding:5px;border:1px solid var(--line);border-radius:4px;background:#0d2223f5;box-shadow:0 10px 30px #0000003d;backdrop-filter:blur(12px)}.explode-control{grid-template-columns:auto minmax(0,1fr) 28px;width:132px;min-width:0;flex:0 0 132px;height:44px;gap:6px;padding-inline:7px}.explode-control input{min-width:0;height:44px}.explode-control input:before{top:21px}.tool-toggle{width:44px;height:44px;flex:0 0 44px}.desktop-label-toggle{display:none}.viewport-meta{top:10px;left:max(10px,var(--safe-left))}.viewport-meta span{min-height:28px;font-size:9px}.viewport-meta span:nth-child(2),.scale-guide{display:none}.view-toolbar{top:10px;right:max(8px,var(--safe-right));flex-direction:row}.view-toolbar button{grid-template-columns:1fr;width:44px;min-height:44px;padding:0;place-items:center;border-bottom:0;border-right:1px solid var(--line)}.view-toolbar button:last-child{border-right:0}.view-toolbar span{display:none}.view-toolbar b{font-size:11px}.view-toolbar button.is-active{box-shadow:inset 0 -2px var(--orange)}.lesson-card{bottom:68px;left:max(10px,var(--safe-left));right:max(10px,var(--safe-right));grid-template-columns:34px minmax(0,1fr);width:auto;max-width:none;min-height:64px;gap:9px;padding:30px 48px 12px 11px;border-radius:7px}.lesson-card__toggle{position:absolute;z-index:2;top:3px;right:3px;display:flex;min-width:44px;min-height:44px;align-items:center;justify-content:center;gap:2px;padding:0 8px;border:0;border-radius:4px;color:#c7d2cc;background:transparent;font-size:9px;cursor:pointer}.lesson-card__toggle svg{width:16px;height:16px;transition:transform .18s ease}.lesson-card__toggle[aria-expanded=true] svg{transform:rotate(180deg)}.lesson-card__index i{height:32px}.lesson-card h2{margin:5px 0;font-size:15px}.lesson-card p{display:-webkit-box;overflow:hidden;font-size:11px;line-height:1.65;-webkit-box-orient:vertical;-webkit-line-clamp:3}.lesson-instruction{margin-top:8px;font-size:10px}.mobile-quiz-button{display:inline-flex;min-height:44px;align-items:center;justify-content:center;gap:10px;margin-top:10px;padding:0 14px;border:1px solid rgba(255,101,53,.46);border-radius:4px;color:#fff7f2;background:#ff65351f;font-size:11px}.app-shell.lesson-collapsed .lesson-card{grid-template-columns:30px minmax(0,1fr);align-items:center;min-height:58px;padding:9px 46px 9px 10px}.app-shell.lesson-collapsed .lesson-card__toggle span,.app-shell.lesson-collapsed .lesson-card__index i,.app-shell.lesson-collapsed #chapter-kicker,.app-shell.lesson-collapsed .lesson-card p,.app-shell.lesson-collapsed .lesson-instruction,.app-shell.lesson-collapsed .mobile-quiz-button{display:none}.app-shell.lesson-collapsed .lesson-card h2{margin:0;overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.gesture-tip{top:52%;max-width:calc(100% - 24px)}.gesture-tip button{width:44px;height:44px;flex:0 0 44px}.hotspot__name{display:none}.hotspot{min-width:44px;min-height:44px;justify-content:center;padding:7px}.hotspot__pulse{left:-10px}.inspector{position:fixed;z-index:45;inset:auto 0 0;width:100%;max-height:min(78dvh,680px);padding:34px max(20px,var(--safe-right)) calc(24px + var(--safe-bottom)) max(20px,var(--safe-left));overflow-y:auto;overscroll-behavior:contain;border-top:1px solid var(--line-strong);border-left:0;border-radius:15px 15px 0 0;transform:translateY(102%)}.inspector-close{display:grid;top:10px;right:max(10px,var(--safe-right))}.inspector__handle{display:block;position:absolute;top:10px;left:50%;width:42px;height:4px;border-radius:4px;background:#526960;transform:translate(-50%)}.app-shell.has-inspector .inspector{transform:translateY(0)}.inspector-empty{min-height:300px}.part-visual{height:120px}.part-actions button{min-height:44px;font-size:10px}.help-dialog>.primary-button,.quiz-dialog>.primary-button{min-height:44px}.toast{bottom:calc(112px + var(--safe-bottom));max-width:calc(100% - 24px);text-align:center}}@media(max-width:520px){.lesson-card p{-webkit-line-clamp:2}.transport{grid-template-columns:186px minmax(0,1fr);gap:5px}.timeline-labels span{max-width:74px}.timeline-labels time{margin-left:4px;font-size:8px}.explode-control{grid-template-columns:auto minmax(0,1fr) 26px;width:124px;min-width:0;flex-basis:124px}.explode-control>span b,.tool-toggle span{display:none}.help-dialog,.quiz-dialog{padding:32px 20px calc(24px + var(--safe-bottom))}.help-grid{grid-template-columns:1fr}.shortcut-row{display:none}.quiz-dialog h2,.help-dialog h2{font-size:20px}}@media(max-width:380px){#fullscreen{display:none}.brand__mark{width:28px;height:28px}.brand b{font-size:12px}.timeline-labels span{display:none}.timeline-labels time{margin-left:0}.view-controls{gap:3px}.explode-control{min-width:120px;padding-inline:6px}}@media(min-width:861px)and (max-width:1366px)and (pointer:coarse){.lesson-sidebar{width:min(400px,calc(100vw - 72px))}.lesson-card{right:auto;width:min(560px,calc(100% - 20px))}.inspector{top:calc(56px + var(--safe-top));right:0;bottom:0;left:auto;width:min(460px,70vw);max-height:none;border-top:0;border-left:1px solid var(--line-strong);border-radius:15px 0 0;transform:translate(102%)}.inspector__handle{display:none}.app-shell.has-inspector .inspector{transform:translate(0)}}@media(max-height:520px)and (pointer:coarse){.app-shell{grid-template-rows:calc(48px + var(--safe-top)) minmax(0,1fr) calc(72px + var(--safe-bottom))}.topbar{min-height:calc(48px + var(--safe-top))}.topbar .icon-button,.mobile-menu{width:44px;height:44px}.brand__mark{width:27px;height:27px}.brand b{font-size:12px}#fullscreen{display:none}.lesson-sidebar{width:min(360px,48vw);padding-top:calc(14px + var(--safe-top))}.sidebar-intro{margin-block:8px 12px}.chapter-item{min-height:48px}.model-note{display:none}.transport{grid-template-columns:186px minmax(0,1fr);min-height:calc(72px + var(--safe-bottom))}.timeline-labels{margin-bottom:0}.view-controls{bottom:calc(100% + 6px)}.viewport-meta,.view-toolbar{top:6px}.lesson-card{bottom:8px;right:auto;width:min(360px,46vw);min-height:58px;padding-block:9px}.lesson-card p,.lesson-instruction,.lesson-card__index i{display:none}.lesson-card h2{margin-bottom:0;font-size:13px}.gesture-tip{display:none}.inspector{top:calc(48px + var(--safe-top));right:0;bottom:0;left:auto;width:min(400px,52vw);max-height:none;padding-top:28px;border-top:0;border-left:1px solid var(--line-strong);border-radius:15px 0 0;transform:translate(102%)}.inspector__handle{display:none}.app-shell.has-inspector .inspector{transform:translate(0)}.part-visual{display:none}.part-description{margin-bottom:10px}.teaching-note{margin-top:10px}.part-actions{position:sticky;bottom:0;padding-top:8px;background:#102421}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
