:root{font-family:Microsoft YaHei,system-ui,sans-serif;color:#e6eef7;background:#0e1822}:root{--subject-physics-primary: #2F80ED;--subject-physics-accent: #7AB8F5;--subject-chemistry-primary: #14B8A6;--subject-chemistry-accent: #5EEAD4;--subject-chemistry-active-bg: #0d9488;--subject-physics-muted: #9fc1ec;--subject-chemistry-muted: #6fd6c9;--brand: #1769aa;--panel: #0e1822;--panel-alt: #14232f;--success: #3A8A5A;--warning: #D99A2B;--danger: #E5484D}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}.app-shell{max-width:1180px;margin:0 auto;padding:32px 24px 56px}.topbar,.bench-header{display:flex;align-items:center;justify-content:space-between;gap:20px}h1,h2,p{margin:0}h1{font-size:clamp(28px,4vw,40px);margin-top:4px}h2{font-size:20px}.eyebrow{color:#52728f;font-size:13px;font-weight:700;letter-spacing:.06em}.stage-badge{background:#e2f1ff;border-radius:999px;color:#1769aa;font-weight:700;padding:10px 14px}.safety-card{align-items:center;background:#fff8df;border:1px solid #f2d57b;border-radius:14px;display:flex;gap:12px;margin:24px 0;padding:14px 18px}.safety-card strong{color:#9c6700}.lab-layout{display:grid;gap:20px;grid-template-columns:minmax(0,1fr) 250px}.instrument-panel,.bench-panel{background:#fff;border:1px solid #dce7f0;border-radius:18px;box-shadow:0 8px 24px #2a4c6e14;padding:22px;color:#1a2b3c}.instrument-panel p{color:#38546a;font-size:14px;line-height:1.6;margin-top:8px}.instrument-list{display:grid;gap:10px;margin-top:14px}.instrument-chip{background:#f2f7fb;border:1px solid #d9e7f1;border-radius:10px;color:#24455e;cursor:pointer;font-weight:700;padding:10px 12px;text-align:left}.palette-panel{align-self:start}.palette-search{border:1px solid #c7d6e1;border-radius:10px;font:inherit;margin-top:12px;padding:9px 12px;width:100%}.palette-search:focus{border-color:#1976b8;outline:none}.chip-icon{display:inline-block;margin-right:8px}.chip-placed{color:#1d9e75;float:right;font-size:12px}.canvas-zoom-wrap{width:100%}.toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.toolbar-button{background:#f2f7fb;border:1px solid #d9e7f1;border-radius:8px;color:#24455e;cursor:pointer;font-size:13px;font-weight:700;padding:7px 12px}.toolbar-button:disabled{background:#f1f5f8;color:#9bacbc;cursor:not-allowed}.toolbar-zoom{color:#52728f;font-size:13px;font-weight:700;min-width:44px;text-align:center}.toolbar-sep{background:#dce7f0;height:22px;width:1px}.instrument-chip:disabled{background:#e8ecf0;color:#9bacbc;cursor:not-allowed;opacity:.6}.circuit-canvas{background:#101b2a;border:1px solid #2a3d57;border-radius:14px;display:block;margin:0;max-width:none;width:100%;height:100%}.canvas-wrap{margin:0;height:100%;overflow:hidden;position:relative}.circuit-canvas,.circuit-canvas *{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.context-menu{background:#fff;border:1px solid #dce7f0;border-radius:10px;box-shadow:0 10px 28px #2a4c6e38;display:grid;gap:2px;padding:6px;position:fixed;z-index:50}.context-menu button{background:transparent;border:0;border-radius:7px;color:#24455e;cursor:pointer;font:inherit;font-size:13px;font-weight:700;padding:8px 16px;text-align:left;white-space:nowrap}.context-menu button:hover{background:#e7f4ff}.context-menu button.danger{color:#b42318}.context-menu button.danger:hover{background:#fff0f0}.menu-rotate{display:grid;gap:4px;padding:8px 16px 4px}.menu-rotate span{color:#60778c;font-size:12px;font-weight:700}.menu-rotate input{accent-color:#1976b8;width:140px}.menu-rotate em{color:#24455e;font-size:12px;font-style:normal;font-weight:700}.menu-row{align-items:center;display:flex;gap:10px;padding:4px 16px}.menu-row>span{color:#60778c;font-size:12px;font-weight:700}.menu-angle-buttons{display:flex;flex-wrap:wrap;gap:4px;max-width:200px}.menu-angle-buttons button{font-size:12px;padding:5px 8px}.menu-angle-buttons button.active{background:#1769aa;color:#fff}.wire-group.selected path{stroke-width:4}.draggable-component{cursor:grab}.draggable-component:active{cursor:grabbing}.terminal-dot:focus{outline:none}.control-row{display:grid;gap:10px;margin-bottom:20px}.control-row input{accent-color:#2078b8;width:100%}.hint-inline{color:#8a9aa9;font-size:12px;font-weight:400;margin-left:6px}.meter-grid{display:grid;gap:12px;grid-template-columns:repeat(3,1fr)}.meter{background:#102c40;border-radius:12px;color:#cde6f5;padding:14px}.meter span{display:block;font-size:13px}.meter strong{color:#f3fbff;display:block;font-size:22px;margin-top:7px}.diagnostic{background:#fff0f0;border-radius:10px;color:#b42318;margin:10px 0 0;padding:12px 14px;position:relative;z-index:2}.diagnostic strong{display:block;margin-bottom:2px}.diagnostic small{display:block;margin-top:4px;opacity:.85}.diagnostic.severity-danger{background:#fdeaea;border:1px solid #f0a8a8}.diagnostic.severity-error{background:#fff3e0;border:1px solid #f5cf8e;color:#8a5a00}.record-button{background:#1976b8;border:0;border-radius:9px;color:#fff;cursor:pointer;font-weight:700;margin-top:16px;padding:11px 14px}.record-button:disabled{background:#a9bbc7;cursor:not-allowed}.measurement-table{border-collapse:collapse;margin-top:16px;width:100%}.measurement-table th,.measurement-table td{border-bottom:1px solid #dce7f0;padding:10px;text-align:left;color:#2c4a5e}.measurement-table th{color:#52728f;font-size:13px}.diagnostic.severity-hint{background:#eef4fb;border:1px solid #b9d4ec;color:#175d8f}.hint-message{color:#60778c;font-size:13px;margin-top:12px}.exp-shell-dock .measurement-table th,.exp-shell-dock .measurement-table td{border-color:#b7cbd9;color:#e6f0f7}.exp-shell-dock .measurement-table th{color:#b7d9f1;font-weight:700}.exp-shell-dock .measurement-table td{color:#ffd76a;font-weight:700}.exp-shell-dock .measurement-table td:first-child{color:#9fd3f5}.report-card{background:#fff;border:1px solid #dce7f0;border-radius:18px;box-shadow:0 8px 24px #2a4c6e14;padding:24px;color:#1a2b3c}.report-head{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:18px}.report-head h2{color:#1a2b3c;font-size:20px;margin:0}.report-block{margin-bottom:18px}.report-block h3{color:#24455e;font-size:15px;margin:0 0 8px}.report-block ul{color:#38546a;font-size:14px;line-height:1.7;margin:0;padding-left:20px}.report-block p{color:#38546a;font-size:14px;line-height:1.7}.report-empty{color:#5a6e80}.average-row{background:#f2f7fb;font-weight:700}.conclusion-input{border:1px solid #c7d6e1;border-radius:10px;font:inherit;line-height:1.6;padding:12px;resize:vertical;width:100%;color:#1a2b3c;background:#fff}.conclusion-input:focus{border-color:#1976b8;outline:none}.report-success{background:#eaf7f0;border-radius:10px;color:#16653f;margin-top:12px;padding:14px}.score-badge{background:#e2f1ff;color:#1769aa}.grade-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.grade-item{background:#f8fbfd;border:1px solid #dce7f0;border-radius:12px;padding:14px}.grade-head{align-items:center;display:flex;justify-content:space-between;margin-bottom:6px}.grade-head strong{color:#24455e}.grade-item p{color:#38546a;font-size:13px;line-height:1.6;margin:0}.grade-full{color:#1d9e75;font-weight:700}.grade-partial{color:#ba7517;font-weight:700}.feedback-list{list-style:none;margin:0;padding:0}.feedback-list li{font-size:13px;line-height:1.6;margin-bottom:6px;padding-left:4px}.feedback-list li.ok{color:#1d9e75}.feedback-list li.bad{color:#c0392b}.household-schematic{background:#f7fafc;border:1px solid #dce7f0;border-radius:12px;max-width:100%;width:360px}.household-schematic .sch-label{font-size:11px;font-weight:700}.household-schematic .sch-text{font-size:11px;fill:#38546a}.household-schematic .sch-box{fill:#fff;stroke:#7c93a8;stroke-width:1.5}.household-schematic .sch-bulb{fill:#fff4cf;stroke:#e0b400;stroke-width:2}.household-schematic .sch-pin{font-size:9px;fill:#38546a;text-anchor:middle;font-weight:700}.property-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.property-row .question{color:#38546a;font-size:14px;flex:1}.choice-group{display:flex;gap:8px;flex-wrap:wrap}.choice{align-items:center;background:#f2f7fb;border:1px solid #d9e7f1;border-radius:10px;color:#38546a;cursor:pointer;display:inline-flex;font-size:13px;font-weight:700;gap:6px;padding:8px 12px}.choice.selected{background:#1769aa;border-color:#0e4a7a;color:#fff}.choice input{accent-color:#1769aa;margin:0}.top-nav{display:flex;align-items:center;gap:12px}.nav-link{background:transparent;border:0;border-radius:9px;color:#1769aa;cursor:pointer;font-size:14px;font-weight:700;padding:8px 12px;text-decoration:none}.nav-link:hover{background:#e2f1ff}.nav-button{font:inherit}.auth-card{background:#fff;border:1px solid #dce7f0;border-radius:18px;box-shadow:0 8px 24px #2a4c6e14;margin:24px auto 0;max-width:420px;padding:24px;color:#1a2b3c}.auth-page{max-width:720px}.auth-field{display:grid;gap:6px;margin-bottom:16px}.auth-field>span{color:#52728f;font-size:13px;font-weight:700}.auth-field input{border:1px solid #c7d6e1;border-radius:10px;font:inherit;padding:11px 12px}.auth-field input:focus{border-color:#1976b8;outline:none}.auth-row{align-items:end;display:flex;gap:10px}.auth-row .auth-field{flex:1;margin-bottom:16px}.code-button{background:#e7f4ff;border:1px solid #9dcce9;border-radius:10px;color:#1769aa;cursor:pointer;font-weight:700;padding:11px 12px;white-space:nowrap}.code-button:disabled{background:#f1f5f8;color:#9bacbc;cursor:not-allowed}.role-select{display:flex;gap:10px}.role-button{background:#f2f7fb;border:1px solid #d9e7f1;border-radius:10px;color:#38546a;cursor:pointer;font-weight:700;padding:10px 20px}.role-button.active{background:#1769aa;border-color:#0e4a7a;color:#fff}.auth-message{background:#eaf7f0;border-radius:10px;color:#16653f;padding:10px 12px}.auth-submit{margin-top:6px;width:100%}.guest-divider{align-items:center;color:#8a9aa9;display:flex;font-size:12px;gap:10px;margin:14px 0}.guest-divider:before,.guest-divider:after{background:#dce7f0;content:"";flex:1;height:1px}.guest-button{background:#f2f7fb;border:1px dashed #9dcce9;border-radius:10px;color:#1769aa;cursor:pointer;font:inherit;font-weight:700;padding:12px;width:100%}.guest-button:hover{background:#e7f4ff}.demo-button{background:#1f8a5b;border:1px solid #16673f;border-radius:10px;color:#fff;cursor:pointer;font:inherit;font-weight:700;padding:12px;width:100%}.demo-button:hover{background:#1a734d}.auth-tabs{display:flex;gap:8px;margin-bottom:18px}.auth-tab{background:#f2f7fb;border:1px solid #d9e7f1;border-radius:10px;color:#38546a;cursor:pointer;font:inherit;font-weight:700;padding:10px 16px;flex:1}.auth-tab.active{background:#1769aa;border-color:#0e4a7a;color:#fff}.wechat-qr{display:flex;flex-direction:column;align-items:center;gap:10px;padding:8px 0 4px}.wechat-qr-box{width:100%;min-height:280px;display:flex;align-items:center;justify-content:center}.wechat-sim{display:flex;flex-direction:column;align-items:center;gap:12px}.wechat-sim-box{width:200px;height:200px;border:2px dashed #9dcce9;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#38546a;font-size:15px;background:#f7fbfe}.wechat-start{display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:8px 0}.inline-link{display:inline-block;text-decoration:none;text-align:center}.task-list{display:grid;gap:14px;margin-top:20px}.task-card,.empty-card{background:#fff;border:1px solid #dce7f0;border-radius:16px;box-shadow:0 8px 24px #2a4c6e14;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px;color:#1a2b3c}.task-card.preview-card{border-color:#b9d3ea;background:linear-gradient(180deg,#f4f9ff,#fff)}.empty-card{display:block;text-align:center}.empty-card p{color:#60778c;font-size:14px;margin:10px 0 16px}.teacher-grid{display:grid;gap:20px;grid-template-columns:280px minmax(0,1fr);margin-top:20px}.class-list{display:grid;gap:14px;margin-top:14px}.class-card{background:#f8fbfd;border:1px solid #dce7f0;border-radius:12px;padding:14px;color:#1a2b3c}.class-actions{display:grid;gap:8px;margin-top:10px}.class-create{margin-top:12px;padding-bottom:12px;border-bottom:1px solid #dce7f0}.class-actions select.assignment-input{background:#fff}.assignment-input{border:1px solid #c7d6e1;border-radius:8px;font:inherit;padding:8px 10px}.assignment-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.assignment-chip{background:#f2f7fb;border:1px solid #d9e7f1;border-radius:999px;color:#24455e;cursor:pointer;font-size:13px;font-weight:700;padding:8px 14px}.assignment-chip.active{background:#1769aa;border-color:#0e4a7a;color:#fff}.section-title{color:#24455e;margin:22px 0 10px}.truncate-cell{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.summary-list{display:grid;gap:8px;list-style:none;margin:0;padding:0}.summary-list li{align-items:center;background:#fff8df;border:1px solid #f2d57b;border-radius:10px;display:flex;justify-content:space-between;padding:10px 14px}.summary-code{color:#9c6700;font-weight:700}.summary-count{color:#854f0b;font-size:13px}@media(max-width:760px){.app-shell{padding:20px 14px}.lab-layout{grid-template-columns:1fr}.topbar,.bench-header{align-items:flex-start;flex-direction:column}.meter-grid{grid-template-columns:1fr}}.immersive-lab{background:#0e1822;display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;position:relative}.topbar-icon-btn{background:transparent;border:1px solid transparent;border-radius:8px;color:#dce9f5;cursor:pointer;font-size:13px;font-weight:700;padding:7px 12px}.topbar-icon-btn:hover{background:#1c2f45;border-color:#2a3d57}.topbar-icon-btn:disabled{color:#5f7894;cursor:not-allowed}.topbar-icon-btn .ico{margin-right:4px;opacity:.85}.canvas-fullscreen{background:radial-gradient(ellipse at center,#14232f,#0a121b);flex:1;min-height:0;position:relative;overflow:hidden}.canvas-fullscreen .canvas-zoom-wrap{height:100%;min-height:0;overflow:auto;position:relative}.palette-rail{background:#0e1822f0;border:1px solid #1e2c3d;border-radius:12px;display:flex;flex-direction:column;gap:7px;left:12px;padding:9px;position:absolute;top:64px;bottom:16px;width:108px;z-index:8}.palette-rail-title{color:#8fb0cf;font-size:12px;font-weight:800;padding:3px 5px}.palette-rail-button{align-items:center;background:#16263a;border:1px solid #2a3d57;border-radius:8px;color:#dce9f5;cursor:pointer;display:flex;font:inherit;font-size:12px;font-weight:700;gap:4px;justify-content:space-between;padding:8px 6px;text-align:left}.palette-rail-button:hover,.palette-rail-button.active{background:#1c2f45;border-color:#4a8bd0}.palette-rail-button small{background:#0c1620;border-radius:99px;color:#8fb0cf;font-size:10px;padding:1px 5px}.palette-panel{background:#0e1822f5;border:1px solid #1e2c3d;border-radius:12px;box-shadow:0 8px 28px #0006;display:flex;flex-direction:column;left:132px;padding:12px;position:absolute;top:64px;bottom:16px;width:240px;z-index:9}.palette-header{color:#dce9f5;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:space-between;gap:8px}.palette-search{background:#0a121b;border:1px solid #2a3d57;border-radius:8px;color:#dce9f5;font:inherit;margin-top:10px;padding:7px 10px}.palette-search:focus{border-color:#1769aa;outline:none}.palette-empty{color:#8fb0cf;font-size:13px;margin:14px 0 0;text-align:center}.palette-scroll{margin-top:10px;overflow-y:auto;padding-right:4px}.palette-acc{margin-bottom:8px}.palette-acc-header{display:flex;align-items:center;gap:8px;width:100%;background:#16263a;border:1px solid #2a3d57;border-radius:9px;color:#dce9f5;cursor:pointer;font:inherit;font-size:13px;font-weight:700;padding:8px 10px;text-align:left}.palette-acc-header:hover{background:#1c2f45;border-color:#4a6b8d}.palette-acc-header[aria-expanded=true]{border-color:var(--subject-physics-primary, #2f80ed)}.palette-acc-caret{color:#7ab8f5;font-size:11px;width:12px;text-align:center;flex:0 0 auto}.palette-acc-title{flex:1;min-width:0}.palette-acc-count{color:#8fb0cf;font-size:12px;background:#0c1620;border-radius:999px;padding:1px 8px;flex:0 0 auto}.palette-acc-body{margin-top:8px}.palette-grid{display:grid;gap:10px;grid-template-columns:1fr 1fr}.palette-card{background:linear-gradient(180deg,#1c2f45,#14232f);border:1px solid #2a3d57;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;gap:4px;min-height:96px;padding:8px;position:relative}.palette-card:hover{background:linear-gradient(180deg,#23384f,#1a2c3e);border-color:#4a6b8d}.palette-card[disabled]{cursor:not-allowed;opacity:.45}.palette-card .palette-card-art-box{align-items:center;background:linear-gradient(180deg,#2a3d57,#1c2f45);border-radius:8px;display:flex;flex:1;justify-content:center;min-height:52px;overflow:hidden;padding:4px}.palette-card .palette-card-art{display:block;height:100%;width:100%}.palette-card .palette-card-label{color:#dce9f5;font-size:14px;font-weight:800;text-align:center}.palette-card .badge-placed{background:#1d9e75;border-radius:999px;color:#fff;font-size:11px;left:6px;padding:2px 7px;position:absolute;top:6px}.floating-toolbar{align-items:stretch;background:#0e1822eb;border-radius:14px;right:12px;top:184px;bottom:16px;width:114px;box-sizing:border-box;box-shadow:0 8px 28px #0006;display:flex;flex-direction:column;gap:8px;padding:10px 8px;position:absolute;z-index:8;overflow-y:auto}.floating-toolbar .toolbar-button,.floating-toolbar .toolbar-status{width:100%;min-width:0;box-sizing:border-box;height:38px;padding:0 12px;font-size:15px;display:flex;align-items:center;justify-content:center}.floating-toolbar .toolbar-button.toolbar-zoom-btn{font-size:18px}.floating-toolbar .toolbar-zoom{width:100%}.floating-toolbar .toolbar-sep{width:100%;height:1px}.toolbar-button{background:transparent;border:1px solid #2a3d57;border-radius:10px;color:#dce9f5;cursor:pointer;font-size:22px;font-weight:700;line-height:1;min-width:40px;padding:9px 12px}.toolbar-button.toolbar-zoom-btn{font-size:22px;min-width:40px;padding:9px 12px}.toolbar-button:hover{background:#1c2f45}.toolbar-button.active{background:#1769aa;border-color:#1769aa;color:#fff}.toolbar-button:disabled{background:transparent;border-color:#223347;color:#5f7894;cursor:not-allowed}.toolbar-button:disabled:hover{background:transparent}.toolbar-button.toolbar-delete{border-color:#5b2b2e;color:#f08a8a;font-size:16px;font-weight:700}.toolbar-button.toolbar-delete:hover:not(:disabled){background:#5b2b2e;color:#fff}.toolbar-button.toolbar-delete:disabled{border-color:#2a3d57;color:#5f7894}.component-selection-outline{pointer-events:none}.toolbar-zoom{color:#8fb0cf;font-size:16px;font-weight:700;min-width:48px;text-align:center}.toolbar-sep{background:#2a3d57;height:22px;width:1px}.toolbar-status{background:#1769aa;border-radius:10px;color:#fff;font-size:16px;font-weight:700;padding:9px 14px}.wiring-hint{background:#1769aaeb;border-radius:999px;box-shadow:0 4px 14px #00000059;color:#fff;font-size:12px;font-weight:700;left:50%;padding:7px 16px;position:absolute;top:12px;transform:translate(-50%);z-index:9}.toolbar-status.disabled{background:#2a3d57;color:#5f7894}.component-label{color:#e6f0fa;font-size:16px;font-weight:800;pointer-events:none;text-anchor:middle}.circuit-canvas{background:transparent;border:none}.live-meters{display:grid;gap:8px;grid-template-columns:repeat(3,1fr)}.live-meters .meter{background:#0a121b;border:1px solid #2a3d57;border-radius:10px;color:#8fb0cf;padding:8px 10px}.live-meters .meter span{display:block;font-size:11px}.live-meters .meter strong{color:#ffd166;display:block;font-size:16px;margin-top:4px}.property-panel{background:#0e1822f5;border:1px solid #2a3d57;border-radius:14px;bottom:84px;box-shadow:0 8px 28px #00000080;left:50%;max-width:min(420px,calc(100% - 32px));min-width:260px;padding:14px 16px;position:absolute;transform:translate(-50%);z-index:12}.property-head{align-items:center;color:#dce9f5;display:flex;font-size:14px;justify-content:space-between;margin-bottom:12px}.property-close{background:transparent;border:0;color:#8fb0cf;cursor:pointer;font-size:18px;line-height:1;padding:4px 8px}.property-close:hover{color:#fff}.property-row{align-items:center;color:#8fb0cf;display:grid;font-size:13px;gap:10px;grid-template-columns:auto 1fr auto}.property-row input{accent-color:#1976b8;width:100%}.property-row em{color:#ffd166;font-size:13px;font-style:normal;font-weight:700;min-width:48px;text-align:right}.property-note{color:#8fb0cf;font-size:12px;line-height:1.7;margin:0}.app-version{background:#1769aa2e;border:1px solid #1769aa;border-radius:999px;color:#9fc7e8;font-size:11px;font-weight:700;padding:2px 9px}.hub-shell{background:#f5f7fa;color:#1a2b3c;min-height:100vh;display:flex;flex-direction:row}.hub-topbar{display:flex;align-items:center;gap:18px;padding:10px 24px;background:#fff;border-bottom:1px solid #e8ecf1;position:sticky;top:0;z-index:20}.hub-brand{display:flex;align-items:center;gap:10px}.hub-logo{font-size:22px;line-height:1}.hub-brand-name{font-size:15px;font-weight:700;color:#1a2b3c}.hub-brand-sub{font-size:11px;color:#89a;margin-top:2px}.hub-search{flex:1;max-width:420px}.hub-search input{width:100%;background:#f0f3f6;border:1px solid #dde3ea;border-radius:999px;color:#1a2b3c;font:inherit;padding:9px 16px}.hub-search input:focus{border-color:#f97316;outline:none;background:#fff}.hub-search input::placeholder{color:#a0aab4}.hub-topbar-right{display:flex;align-items:center;gap:12px}.hub-link{color:#567;text-decoration:none;font-size:13px;font-weight:700}.hub-link:hover{color:#f97316}.hub-body{display:flex;flex:1;min-height:0}.hub-sidebar{width:72px;flex-shrink:0;background:#1a1a2e;display:flex;flex-direction:column;align-items:center;padding:16px 0 24px;gap:4px}.hub-sidebar-logo{font-size:24px;margin-bottom:12px}.hub-nav{display:flex;flex-direction:column;gap:4px;width:100%;align-items:center;margin-bottom:22px}.hub-nav-item{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 6px 8px;border-radius:12px;font-size:11px;font-weight:700;color:#89a;cursor:pointer;text-decoration:none;width:56px;text-align:center;transition:all .15s;border:0;background:transparent}.hub-nav-item svg{width:24px;height:24px;stroke:#89a;fill:none;stroke-width:1.8;transition:stroke .15s}.hub-nav-item:hover{color:#ccc;background:#ffffff0f}.hub-nav-item:hover svg{stroke:#ccc}.hub-nav-item.active{color:#f97316;background:#f973161f}.hub-nav-item.active svg{stroke:#f97316}.hub-nav-item.dim{opacity:.35;cursor:not-allowed}.hub-main{flex:1;min-width:0;padding:20px 28px 40px;overflow-y:auto}.hub-header{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}.hub-header-top{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}.hub-title{font-size:22px;font-weight:800;color:#1a2b3c;margin:0}.hub-count{font-size:14px;font-weight:500;color:#89a}.hub-subject-tabs{display:inline-flex;gap:4px}.hub-subject-tab{background:transparent;border:0;border-bottom:2px solid transparent;color:#678;font:inherit;font-size:15px;font-weight:700;padding:6px 16px;cursor:pointer;transition:all .15s}.hub-subject-tab.active{color:#f97316;border-bottom-color:#f97316}.hub-subject-tab:hover{color:#1a2b3c}.hub-tabs{display:flex;gap:4px;border-bottom:1px solid #e8ecf1;padding-bottom:0}.hub-tab{background:transparent;border:0;border-bottom:2px solid transparent;color:#678;font:inherit;font-size:14px;font-weight:600;padding:8px 14px;cursor:pointer;margin-bottom:-1px}.hub-tab.active{color:#f97316;border-bottom-color:#f97316}.hub-tab:hover{color:#1a2b3c}.hub-notice{background:#fff8ed;border:1px solid #f0dca0;border-radius:10px;color:#960;font-size:13px;padding:10px 14px;margin-bottom:16px}.hub-filters{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}.hub-type-tabs{display:flex;gap:6px}.hub-type-tab{background:#f0f3f6;border:1px solid #dde3ea;border-radius:999px;color:#567;font:inherit;font-size:13px;font-weight:600;padding:6px 16px;cursor:pointer;transition:all .12s}.hub-type-tab.active{background:#f97316;border-color:#f97316;color:#fff}.hub-type-tab:hover:not(.active){border-color:#bbb}.hub-sort{display:flex;align-items:center;gap:8px}.hub-sort-label{font-size:12px;color:#9ab}.hub-sort-btn{background:transparent;border:0;color:#89a;font:inherit;font-size:13px;font-weight:600;padding:5px 10px;border-radius:6px;cursor:pointer}.hub-sort-btn.active{background:#fff5ed;color:#f97316}.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}.exp-card{display:block;text-decoration:none;background:#fff;border:1px solid #e2e8ef;border-radius:12px;overflow:hidden;cursor:pointer;color:#1a2b3c;box-shadow:0 1px 4px #0000000a;transition:box-shadow .15s,transform .15s}.exp-card:hover{box-shadow:0 6px 20px #00000017;transform:translateY(-2px);border-color:#d0d8e0}.exp-card.dim{opacity:.45;cursor:not-allowed}.exp-card.dim:hover{box-shadow:0 1px 4px #0000000a;transform:none;border-color:#e2e8ef}.exp-cover{position:relative;height:120px;background:linear-gradient(135deg,#1a2a3a,#0f1922);display:flex;align-items:center;justify-content:center}.exp-badge{position:absolute;top:8px;left:8px;font-size:10px;font-weight:700;padding:1px 7px;border-radius:4px;color:#fff}.exp-badge.hot{background:#e5484d}.exp-badge.soon{background:#d99a2b}.exp-badge.lock{background:#666}.exp-type-chip{position:absolute;top:8px;right:8px;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;color:#fff}.exp-type-chip.phys{background:#2f80ede0}.exp-type-chip.chem{background:#14b8a6e0}.exp-body{padding:12px 14px;background:#fff}.exp-title{font-size:15px;font-weight:700;color:#1a2b3c}.exp-chapter{font-size:12px;color:#89a;margin-top:4px}.exp-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px}.exp-status{font-size:12px;color:#3a8a5a;font-weight:700}.hub-stars{color:#f97316;font-size:12px;letter-spacing:1px}.hub-stars-off{color:#ddd}.hub-empty{color:#89a;font-size:14px;text-align:center;padding:48px 0}.hub-filter-panel{width:220px;flex-shrink:0;padding:16px;background:#fff;border-right:1px solid #e8ecf1;display:flex;flex-direction:column;gap:12px}.hub-filter-title{font-size:12px;color:#9ab;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px}.hub-chapter-group{margin-bottom:8px}.hub-chapter-parent{font-size:13px;color:#1a2b3c;font-weight:700;padding:4px 0}.hub-chapter-item{display:block;width:100%;text-align:left;background:transparent;border:0;border-radius:6px;color:#567;font:inherit;font-size:13px;padding:6px 10px;cursor:pointer;transition:background .1s}.hub-chapter-item:hover{background:#f5f7fa;color:#1a2b3c}.hub-chapter-item.active{background:#fff5ed;color:#f97316;font-weight:700}.module-picker{background:#fff;border:1px solid #e2e8ef;border-radius:14px;padding:18px;margin-bottom:20px;box-shadow:0 2px 12px #0000000d}.module-picker-title{font-size:14px;font-weight:700;color:#1a2b3c;margin-bottom:14px}.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:10px}.module-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 8px 10px;background:#2d2d3a;border:2px solid transparent;border-radius:12px;cursor:pointer;transition:all .15s}.module-card:hover{border-color:#f97316;transform:translateY(-1px)}.module-card.active{border-color:#f97316;background:#3a3a48}.module-card-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center}.module-card-icon svg{width:32px;height:32px;stroke:#f97316;fill:none;stroke-width:1.6}.module-card-label{font-size:12px;font-weight:700;color:#e0e0e0;text-align:center}.module-card.active .module-card-label{color:#f97316}.chem-lab{margin:0;width:100%;box-sizing:border-box;padding:20px 22px 48px;color:#e6eef7;display:flex;flex-direction:column;flex:1;min-height:0}.chem-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.chem-back{color:var(--subject-physics-accent);text-decoration:none;font-weight:700}.chem-title{font-size:20px;font-weight:700}.chem-hint{color:#8fb0cf!important;font-size:13px!important}.chem-objective-text{font-size:14px;line-height:1.6;margin:6px 0 0;color:#dce9f5}.chem-panel{background:#14232f;border:1px solid #2a3d57;border-radius:12px;padding:16px;display:flex;flex-direction:column;flex:1;min-height:0}.chem-panel-title{font-size:13px;color:#6f8aa6;font-weight:700;margin:4px 0 10px}.chem-rack{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}.chem-reagent{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:92px;padding:10px 12px;background:#0c1620;border:1px solid #2a3d57;border-radius:10px;color:#dce9f5;cursor:pointer;font:inherit}.chem-reagent.on{border-color:#3a8a5a;background:#16321f;color:#d8ffe6}.chem-reagent-name{font-size:14px;font-weight:700}.chem-reagent-formula{font-size:12px;color:#8fb0cf}.chem-reagent[draggable=true]{cursor:grab}.chem-reagent[draggable=true]:active{cursor:grabbing}.chem-reagent[draggable=true]:hover{border-color:#3a8a5a;box-shadow:0 2px 10px #2ecc712e}.chem-drop-target{animation:chem-drop-pulse .8s ease-in-out infinite}@keyframes chem-drop-pulse{0%,to{opacity:.45}50%{opacity:1}}.chem-pour-stream{stroke-width:3.4;stroke-linecap:round;stroke-dasharray:9 7;animation:chem-pour-fall .45s linear infinite,chem-pour-inout 1.1s ease-in-out}@keyframes chem-pour-fall{0%{stroke-dashoffset:0}to{stroke-dashoffset:-16}}@keyframes chem-pour-inout{0%,18%{opacity:0}30%,78%{opacity:1}to{opacity:0}}.chem-pour-splash{transform-box:fill-box;transform-origin:center;animation:chem-pour-splash .7s ease-out .25s}@keyframes chem-pour-splash{0%{transform:scale(.4);opacity:.95}to{transform:scale(1.7);opacity:0}}.chem-stream-live{stroke-linecap:round;stroke-dasharray:9 7;animation:chem-pour-fall .45s linear infinite}.chem-splash-live{transform-box:fill-box;transform-origin:center;animation:chem-pour-splash .7s ease-out infinite}.chem-pour-bottle{pointer-events:none}.chem-rack-item{display:flex;align-items:stretch;gap:4px}.chem-grab{padding:0 10px;background:#12212e;border:1px solid #2a3d57;border-radius:10px;color:#dce9f5;font-size:16px;cursor:grab;touch-action:none}.chem-grab:hover{border-color:#3a8a5a;background:#16321f}.chem-grab:active{cursor:grabbing}.chem-posture{display:flex;flex-direction:column;gap:4px;width:100%;margin-bottom:6px}.chem-posture-item{display:flex;align-items:center;gap:6px;font-size:12px;color:#8fb0cf;cursor:pointer}.chem-hint-warn{color:#ff9d7a}.chem-lamp-panel{display:flex;flex-direction:column;gap:6px;margin-top:6px}.chem-lamp-state{font-size:12px;font-weight:700;color:#7d8fa1}.chem-lamp-state.lit{color:#ffb648}.chem-lamp-btns{display:flex;flex-wrap:wrap;gap:6px}.chem-technique{margin-top:10px;padding:10px 12px;background:#2a1d16;border:1px solid #6b4326;border-radius:8px}.chem-technique-head{font-size:13px;font-weight:700;color:#ff9d7a;margin-bottom:6px}.chem-technique-list{margin:0;padding-left:18px;font-size:12px;color:#d9c4b4;line-height:1.7}.chem-hint-pour strong{color:#9bf0c0}.chem-bottle{transform-box:view-box;animation:chem-bottle-pour 1.1s ease-in-out}@keyframes chem-bottle-pour{0%{transform:translate(18px,-22px) rotate(0);opacity:0}20%{transform:translate(0) rotate(0);opacity:1}35%,75%{transform:translate(0) rotate(52deg);opacity:1}92%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(18px,-22px) rotate(0);opacity:0}}.chem-spoon{transform-box:view-box;animation:chem-spoon-pour 1.1s ease-in-out}@keyframes chem-spoon-pour{0%{transform:translate(16px,-20px) rotate(0);opacity:0}22%{transform:translate(0) rotate(0);opacity:1}40%,74%{transform:translate(0) rotate(-46deg);opacity:1}90%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(16px,-20px) rotate(0);opacity:0}}.chem-grain{animation:chem-grain-fall .5s ease-in forwards;opacity:0}.chem-grain-0{animation-delay:.4s}.chem-grain-1{animation-delay:.52s}.chem-grain-2{animation-delay:.64s}@keyframes chem-grain-fall{0%{transform:translateY(0);opacity:1}to{transform:translateY(26px);opacity:0}}.chem-bubble{animation:chem-bubble-rise 1.8s ease-in infinite}.chem-bubble.fast{animation-duration:1.05s}.chem-bubble-0{animation-delay:0s}.chem-bubble-1{animation-delay:.45s}.chem-bubble-2{animation-delay:.9s}@keyframes chem-bubble-rise{0%{transform:translateY(0) scale(.5);opacity:0}25%{opacity:.8}to{transform:translateY(var(--rise, -40px)) scale(1.15);opacity:0}}.chem-precipitate{animation:chem-precipitate-settle 1.2s ease-out}@keyframes chem-precipitate-settle{0%{transform:translateY(-22px);opacity:0}to{transform:translateY(0);opacity:1}}.chem-heatwave{animation:chem-heatwave-rise 2.2s ease-in-out infinite}.chem-heatwave-1{animation-delay:.7s}@keyframes chem-heatwave-rise{0%{transform:translateY(6px);opacity:0}40%{opacity:.6}to{transform:translateY(-14px);opacity:0}}.chem-flame-react{transform-box:fill-box;transform-origin:center bottom;animation:chem-flame-flicker .55s ease-in-out infinite alternate}@keyframes chem-flame-flicker{0%{transform:scaleY(.9) scaleX(1.04)}to{transform:scaleY(1.12) scaleX(.94)}}.chem-smoke circle{animation:chem-smoke-rise 2.4s ease-out infinite}.chem-smoke-1{animation-delay:.5s}.chem-smoke-2{animation-delay:1s}@keyframes chem-smoke-rise{0%{transform:translateY(8px) scale(.5);opacity:.7}to{transform:translateY(-30px) scale(1.6);opacity:0}}@media(prefers-reduced-motion:reduce){.chem-bottle,.chem-spoon,.chem-grain,.chem-bubble,.chem-precipitate,.chem-heatwave,.chem-flame-react,.chem-smoke circle{animation:none}}.chem-empty{color:#8fb0cf;font-size:14px}.chem-verdict{border-radius:10px;padding:10px 14px;font-weight:700;margin-bottom:12px}.chem-verdict.ok{background:#16321f;color:#9bf0c0;border:1px solid #3a8a5a}.chem-verdict.fail{background:#3a1f1f;color:#ffb4b4;border:1px solid #8a3a3a}.chem-eq{font-size:16px;font-weight:700;color:#eaf3fb;background:#0c1620;border-radius:8px;padding:10px 12px;margin-bottom:12px}.chem-phenomena{margin:0;padding-left:20px}.chem-phenomena li{font-size:14px;line-height:1.7}.chem-subtitle{font-size:12px;color:#8aa4bd;font-weight:600;margin:2px 0 8px}.chem-group-list{list-style:none;margin:12px 0;padding:0;display:grid;gap:8px}.chem-group-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;background:#0c1620;border:1px solid #2a3d57;border-radius:10px;color:#dce9f5;font-size:13px;line-height:1.6}.chem-group-remove{flex:none;width:26px;height:26px;border-radius:50%;background:#1b2b3d;border:1px solid #38506e;color:#cfe0f0;cursor:pointer;font:inherit}.chem-group-remove:hover{background:#b3453a;border-color:#b3453a;color:#fff}.chem-value-field{display:grid;gap:6px;margin-bottom:14px;font-size:13px;color:#8aa4bd}.chem-value-field input{padding:9px 12px;background:#0c1620;border:1px solid #2a3d57;border-radius:10px;color:#eaf3fb;font:inherit}.chem-undo-step{padding:7px 14px;background:transparent;border:1px solid #38506e;border-radius:999px;color:#9fb6cc;cursor:pointer;font:inherit;font-size:13px}.chem-undo-step:hover{border-color:#5b7ea8;color:#dce9f5}.chem-collect{font-size:14px;margin-top:10px}.chem-inputs{display:flex;flex-direction:column;gap:14px;margin-bottom:12px}.chem-inputs label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#8fb0cf}.chem-inputs input{padding:10px 12px;background:#0c1620;border:1px solid #2a3d57;border-radius:8px;color:#e6eef7;font:inherit}.chem-checklist{flex-direction:column;align-items:stretch}.chem-check{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#0c1620;border:1px solid #2a3d57;border-radius:10px;cursor:pointer;font-size:14px}.chem-check.on{border-color:#3a8a5a;background:#16321f;color:#d8ffe6}.chem-check input{width:16px;height:16px;accent-color:#3a8a5a}.chem-bench{display:grid;grid-template-columns:clamp(160px,12vw,200px) minmax(620px,1fr) clamp(160px,13vw,205px);grid-template-rows:minmax(0,1fr) auto;gap:14px;align-items:stretch;flex:1;min-height:0}.chem-library{grid-column:1;grid-row:1}.chem-canvas-cell{grid-column:2;grid-row:1;min-width:0}.chem-inst-list{grid-column:3;grid-row:1}.chem-canvas-bar{grid-column:1 / -1;grid-row:2}@media(max-width:900px){.chem-bench{grid-template-columns:1fr;grid-template-rows:auto}.chem-library,.chem-canvas-cell,.chem-inst-list{grid-column:1;grid-row:auto}}.chem-library{background:#14232f;border:1px solid #2a3d57;border-radius:12px;padding:12px;display:flex;flex-direction:column;min-height:0}.chem-search{width:100%;box-sizing:border-box;background:#0a121b;border:1px solid #2a3d57;border-radius:8px;color:#dce9f5;font:inherit;padding:7px 10px}.chem-search:focus{border-color:#1769aa;outline:none}.chem-lib-scroll{flex:1;min-height:0;overflow-y:auto;margin:10px 0 4px;padding-right:4px}.chem-lib-empty{color:#8fb0cf;font-size:13px;text-align:center}.chem-lib-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.chem-lib-card{background:linear-gradient(180deg,#1c2f45,#14232f);border:1px solid #2a3d57;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:6px 4px}.chem-lib-card:hover{background:linear-gradient(180deg,#23384f,#1a2c3e);border-color:#4a6b8d}.chem-lib-art{display:block;height:54px}.chem-lib-name{color:#dce9f5;font-size:12px;font-weight:700;text-align:center}.chem-lib-acc{margin-bottom:8px}.chem-lib-acc-header{display:flex;align-items:center;gap:8px;width:100%;background:#16263a;border:1px solid #2a3d57;border-radius:9px;color:#dce9f5;cursor:pointer;font:inherit;font-size:13px;font-weight:700;padding:8px 10px;text-align:left}.chem-lib-acc-header:hover{background:#1c2f45;border-color:#4a6b8d}.chem-lib-acc-header[aria-expanded=true]{border-color:var(--subject-chemistry-primary, #14b8a6)}.chem-lib-acc-caret{color:var(--subject-chemistry-accent, #5eead4);font-size:11px;width:12px;text-align:center;flex:0 0 auto}.chem-lib-acc-title{flex:1;min-width:0}.chem-lib-acc-count{color:#8fb0cf;font-size:12px;background:#0c1620;border-radius:999px;padding:1px 8px;flex:0 0 auto}.chem-lib-acc-body{margin-top:8px}.chem-canvas{background:#0a1219;border:1px solid #2a3d57;border-radius:12px;touch-action:none;display:block;width:100%;height:100%}.chem-inst{cursor:grab}.chem-inst.linkable{cursor:crosshair}.chem-canvas-bar{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 0}.chem-hint-bar{color:#8fb0cf;font-size:13px;margin:0}.chem-hint-bar strong{color:#dce9f5}.chem-canvas-msg{font-size:13px;color:#8fb0cf;margin-top:4px}.chem-lib-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:10px}.chem-canvas-cell{position:relative;display:flex}.chem-canvas-cell .chem-canvas{flex:1}.chem-tools{position:absolute;top:10px;right:10px;z-index:3;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.chem-tools .chem-zoom-btn{width:38px;height:38px;border:1px solid #2a3d57;border-radius:8px;background:#14232f;color:#dce9f5;font-size:16px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center}.chem-tools .chem-zoom-btn:hover:not(:disabled){background:#1c2f45}.chem-tools .chem-zoom-btn:disabled{opacity:.4;cursor:not-allowed}.chem-tools .chem-zoom-reset{width:38px;height:38px;padding:0;font-size:12px}.chem-tool-sep{width:30px;height:1px;background:#2a3d57}.chem-tools .chem-tool-btn{width:38px;border:1px solid #2a3d57;border-radius:8px;background:#14232f;color:#dce9f5;font-size:11px;font-weight:700;line-height:1.1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:6px 0;text-align:center}.chem-tools .chem-tool-btn:hover:not(:disabled){background:#1c2f45;border-color:#4a6b8d}.chem-tools .chem-tool-btn:disabled{opacity:.4;cursor:not-allowed}.chem-tools .chem-tool-btn.primary{background:#1769aa;border-color:#1769aa;color:#fff}.chem-tools .chem-tool-btn.primary:hover:not(:disabled){background:#1d7fc4}.chem-tools .chem-tool-btn.danger{border-color:#5b2b2e;color:#f08a8a}.chem-tools .chem-tool-btn.danger:hover:not(:disabled){background:#5b2b2e;color:#fff}.chem-inst-list{background:#14232f;border:1px solid #2a3d57;border-radius:12px;padding:12px;overflow-y:auto;min-height:0}.chem-inst-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.chem-inst-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.chem-inst-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:#0c1620;border:1px solid #2a3d57;border-radius:10px;cursor:pointer}.chem-inst-row.sel{border-color:#ffd166;background:#1c2630}.chem-inst-row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.chem-inst-row-name{font-size:13px;font-weight:700;color:#dce9f5}.chem-inst-row-reagent{font-size:11px;color:#9bf0c0}.chem-inst-row-acts{display:flex;gap:6px;flex-shrink:0}.chem-list-btn{padding:6px 10px;background:#1769aa;border:0;border-radius:8px;color:#fff;font-size:12px;font-weight:700;cursor:pointer}.chem-list-btn:hover:not(:disabled){background:#1f7fc8}.chem-list-btn-danger{background:#8a3a3a}.chem-list-btn-danger:hover:not(:disabled){background:#a04545}.chem-list-btn:disabled{background:#2a3d57;color:#6f8a6c;cursor:not-allowed}.chem-flame{transform-box:fill-box;transform-origin:50% 100%;animation:chem-flicker 1.6s ease-in-out infinite}@keyframes chem-flicker{0%,to{transform:scale(1);opacity:.97}30%{transform:scale(.97,1.04);opacity:1}65%{transform:scale(1.03,.98);opacity:.94}}.chem-bubbles{animation:chem-rise 1.6s linear infinite}@keyframes chem-rise{0%{transform:translateY(4px);opacity:.2}50%{opacity:.75}to{transform:translateY(-14px);opacity:0}}@media(prefers-reduced-motion:reduce){.chem-flame,.chem-bubbles,.circuit-burnt,.circuit-shake,.circuit-wire-glow,.motor-spin,.meter-disc{animation:none}}.circuit-shake{animation:circuit-shake .35s ease-in-out infinite;transform-origin:center}@keyframes circuit-shake{0%,to{transform:translate(0) rotate(0)}15%{transform:translate(-2px,1px) rotate(-.8deg)}30%{transform:translate(2.5px,-1px) rotate(.6deg)}45%{transform:translate(-1.5px,1.5px) rotate(-.4deg)}60%{transform:translate(2px,-.5px) rotate(.8deg)}75%{transform:translate(-1px,-1px) rotate(-.6deg)}}.circuit-wire-glow{animation:circuit-flicker .12s ease-in-out infinite alternate}@keyframes circuit-flicker{0%{stroke:#f32;filter:drop-shadow(0 0 6px #ff4400);stroke-width:5}to{stroke:#fc0;filter:drop-shadow(0 0 14px #ff6600);stroke-width:6}}.circuit-smoke-particle{animation:circuit-smoke-rise 1.4s ease-out infinite;opacity:0}.circuit-smoke-particle:nth-child(2){animation-delay:.3s}.circuit-smoke-particle:nth-child(3){animation-delay:.7s}@keyframes circuit-smoke-rise{0%{transform:translateY(0) scale(.6);opacity:.7}50%{opacity:.45}to{transform:translateY(-28px) scale(1.8);opacity:0}}.circuit-burnt-overlay{fill:#1a0a00;opacity:.55;pointer-events:none}.motor-spin{animation:motor-spin-anim 1.2s linear infinite}@keyframes motor-spin-anim{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.meter-disc{animation:meter-disc-anim 3s linear infinite}@keyframes meter-disc-anim{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.diagnostic.severity-danger{background:#3a1010;border-color:#c04030;color:#ffb090;font-weight:700}@media(max-width:760px){.hub-sidebar,.hub-filter-panel{display:none}.hub-main{padding:14px 12px 32px}.hub-search{max-width:none}.hub-topbar{flex-wrap:wrap;gap:10px;padding:10px 14px}.hub-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}.exp-shell{min-height:100vh;display:flex;flex-direction:column;background:#0e1822;color:#e6eef7}.exp-shell-bar{display:flex;align-items:center;gap:16px;padding:12px 20px;background:#0c1620;border-bottom:1px solid #1c2c3e}.exp-shell-back{color:var(--subject-physics-accent);text-decoration:none;font-weight:700;font-size:14px;white-space:nowrap}.exp-shell-back:hover{color:#dce9f5}.exp-shell-title{font-size:20px;font-weight:700;margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exp-shell-physics .exp-shell-title{color:var(--subject-physics-accent)}.exp-shell-chemistry .exp-shell-title{color:var(--subject-chemistry-accent)}.exp-shell-right{display:flex;align-items:center;gap:12px}.exp-shell-body{display:flex;gap:16px;align-items:stretch;padding:16px 20px;flex:1;min-height:0;position:relative}.exp-shell-main{flex:1;min-width:0;display:flex;flex-direction:column}.exp-shell-steps{width:240px;flex-shrink:0;align-self:flex-start;position:sticky;top:16px;background:#14232f;border:1px solid #2a3d57;border-radius:12px;padding:14px 16px}.exp-steps-title{font-size:13px;font-weight:700;color:#6f8aa6;margin-bottom:10px}.exp-steps-list{margin:0;padding-left:18px}.exp-steps-list li{font-size:13px;line-height:1.7;color:#cfe0ee}.exp-steps-list li+li{margin-top:2px}.tutorial-progress{color:#6f8aa6;font-size:12px;white-space:nowrap}.tutorial-expand-button{margin-top:8px;border:0;background:transparent;color:var(--subject-physics-accent);font-size:12px;padding:0;cursor:pointer}.tutorial-expand-button:hover{color:#dce9f5;text-decoration:underline}.tutorial-video{margin:10px 0;padding:9px;border:1px solid #2a537a;border-radius:10px;background:#0b1621}.tutorial-video-screen{display:grid;gap:7px;color:#dce9f5;font-size:13px;line-height:1.45}.tutorial-video-visual{width:100%;height:96px;display:block}.tutorial-operation-scene{position:relative;height:170px;overflow:hidden;border:1px solid #315677;border-radius:8px;background:#07131e}.tutorial-operation-scene>video{width:100%;height:100%;display:block;object-fit:cover}.tutorial-operation-scene>b{position:absolute;left:12px;top:11px;padding:5px 8px;border-radius:5px;background:#051422c2;color:#ecf8ff;font-size:12px;letter-spacing:.02em}.tutorial-video-background{fill:#101f2d;stroke:#315677}.video-object{fill:#233a4f;stroke:#78b8f5;stroke-width:2}.video-active{fill:#245e88;stroke:#aee0ff;stroke-width:2;animation:tutorial-video-pulse 1.2s ease-in-out infinite}.video-meter{fill:#d7e9f6;stroke:#0d3657;stroke-width:3}.video-line,.video-wire,.video-note{fill:none;stroke:#b9d8ee;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.video-wire{stroke:#6e9fc3}.video-note{stroke:#94b7d1}.tutorial-video-visual text{fill:#a7c9e4;font-size:11px}.video-cursor{fill:#ffb55b;stroke:#fff3d8;stroke-width:2;animation:tutorial-video-pulse 1.2s ease-in-out infinite}.tutorial-video-caption{display:grid;gap:3px}.tutorial-video-screen span{color:#78b8f5;font-size:12px}.tutorial-video-progress{height:4px;overflow:hidden;border-radius:99px;background:#21384d}.tutorial-video-progress i{display:block;height:100%;border-radius:inherit;background:#65b7f2;transition:width .25s ease}.tutorial-video-actions{display:flex;gap:10px;margin-top:7px}.tutorial-video-actions button{border:0;background:transparent;color:#8fc7ff;cursor:pointer;font:inherit;font-size:12px;padding:0}@keyframes tutorial-video-pulse{50%{filter:brightness(1.35)}}.exp-shell-dock .tutorial-video{display:none}.exp-shell-dock .dock-section:first-child .dock-section-title{font-size:17px;color:#b7d9f1}.exp-shell-dock .dock-section:first-child .tutorial-progress{font-size:14px}.exp-shell-dock .dock-section:first-child .exp-steps-list{font-size:17px;line-height:1.72}.exp-shell-dock .dock-section:first-child .tutorial-expand-button{font-size:15px}.exp-shell-dock .dock-section:first-child .chem-hint,.exp-shell-dock .dock-section:first-child .chem-objective-text{font-size:17px;line-height:1.7}.clear-confirm-mask{position:fixed;z-index:80;inset:0;display:grid;place-items:center;padding:20px;background:#030b12b3}.clear-confirm-card{width:min(420px,100%);padding:24px;border:1px solid #4e728e;border-radius:14px;background:#132a3c;box-shadow:0 18px 50px #00000073;color:#e8f3fb}.clear-confirm-card h2{margin:0 0 10px;font-size:21px}.clear-confirm-card p{margin:0;color:#b5cadb;line-height:1.6}.clear-confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.clear-confirm-actions button{border:1px solid #4e728e;border-radius:8px;padding:9px 14px;background:#203b51;color:#e8f3fb;cursor:pointer;font:inherit}.clear-confirm-actions .clear-confirm-danger{border-color:#be5454;background:#b13b3b;color:#fff}.tutorial-study-mask{position:absolute;z-index:20;inset:0;display:grid;place-items:start center;overflow:auto;padding:28px;background:#040d16f0}.tutorial-study-card{width:min(1120px,100%);min-height:min(760px,calc(100% - 56px));padding:42px 48px;border:1px solid #386c94;border-radius:16px;background:#102131;box-shadow:0 20px 55px #0000006b;color:#dce9f5}.tutorial-study-kicker{color:#77c1f6;font-size:16px;font-weight:700}.tutorial-study-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.tutorial-study-card h2{margin:9px 0 10px;font-size:34px}.tutorial-study-card>p{max-width:850px;margin:0 0 20px;color:#a9c0d4;font-size:17px;line-height:1.7}.tutorial-study-content .dock-section{border:0;padding:0;background:transparent}.tutorial-study-content .dock-section-title{margin-bottom:8px}.tutorial-study-content .tutorial-video{padding:16px}.tutorial-study-content .tutorial-video-visual{height:220px}.tutorial-study-content .tutorial-operation-scene{height:340px}.tutorial-study-content .tutorial-video-caption{gap:7px;font-size:18px}.tutorial-study-content .tutorial-video-screen span,.tutorial-study-content .tutorial-video-actions button{font-size:15px}.tutorial-study-content .chem-objective-text,.tutorial-study-content .chem-hint,.tutorial-study-content .exp-steps-list{font-size:17px;line-height:1.7}.tutorial-study-enter{flex:0 0 auto;min-width:150px;padding:14px 20px;border:0;border-radius:10px;background:#2c83bf;color:#fff;cursor:pointer;font-size:17px;font-weight:700}.tutorial-study-review{display:block;width:100%;margin-top:14px;border:0;background:transparent;color:#8eb6d7;cursor:pointer;font:inherit;font-size:15px}@media(max-width:700px){.tutorial-study-mask{padding:12px}.tutorial-study-card{min-height:0;padding:22px}.tutorial-study-heading{display:block}.tutorial-study-enter{width:100%;margin:10px 0 4px}.tutorial-study-card h2{font-size:27px}.tutorial-study-content .tutorial-video-visual{height:145px}.tutorial-study-content .tutorial-operation-scene{height:210px}}.exp-shell-dock{position:absolute;right:156px;top:16px;z-index:12;width:300px;max-height:calc(100% - 32px);flex-shrink:0;background:#14232f;border:1px solid #2a3d57;border-radius:12px;padding:14px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.dock-rail{box-sizing:border-box;display:grid;gap:8px;padding:0 8px;position:absolute;right:32px;top:64px;width:114px!important;z-index:13}.dock-rail .toolbar-button{align-items:center;box-sizing:border-box;display:flex;font-size:15px;height:38px;justify-content:center;line-height:1;min-width:0;padding:0 12px;width:100%}.dock-rail button:hover,.dock-rail button[aria-expanded=true]{background:#1c2f45;border-color:#4a8bd0}.dock-section{background:#0f1d29;border:1px solid #223344;border-radius:10px;padding:12px 14px}.dock-section-title{font-size:13px;font-weight:700;color:#6f8aa6;margin-bottom:8px}.dock-section-head{display:flex;align-items:center;justify-content:space-between}.dock-section-toggle{background:#1c2f45;border:1px solid #2a3d57;border-radius:8px;color:#cfe0ee;font-size:12px;cursor:pointer;padding:3px 10px}.dock-section-toggle:hover{background:#23384f}.report-zone-inner{margin-top:4px}.exp-shell-dock:has(.report-zone-inner){position:fixed;z-index:30;inset:70px 28px 24px;width:auto;max-width:none;max-height:none;overflow:auto;padding:28px 34px;background:#102131;border:1px solid #386c94;border-radius:14px;box-shadow:0 22px 60px #00000080}.exp-shell-dock:has(.report-zone-inner) .dock-section:first-child{display:none}.exp-shell-dock:has(.report-zone-inner) .dock-section{max-width:1080px;margin:0 auto}.exp-shell-dock:has(.report-zone-inner) .dock-section-title{font-size:21px;color:#cfe8f9}.exp-shell-dock:has(.report-zone-inner) .dock-section-toggle{padding:8px 16px;font-size:14px}.exp-shell-dock:has(.report-zone-inner) .report-zone-inner{display:grid;grid-template-columns:minmax(240px,320px) minmax(0,1fr);gap:24px;margin-top:18px}.exp-shell-dock:has(.report-zone-inner) .measurement-table th,.exp-shell-dock:has(.report-zone-inner) .measurement-table td{border-color:#b7d1e2}.exp-shell-dock:has(.report-zone-inner) .measurement-table th{color:#3979a7;background:#f2f8fc}.exp-shell-dock:has(.report-zone-inner) .measurement-table td{color:#126d82;font-weight:700}.exp-shell-dock:has(.report-zone-inner) .measurement-table td:first-child{color:#3d7dad}.exp-shell-dock:has(.report-zone-inner) .measurement-table tbody tr:last-child td{color:#245f88;background:#eef6fb}.report-records-panel{align-self:start;position:sticky;top:0;padding:18px;border:1px solid #3b6688;border-radius:12px;background:#132a3c}.report-records-panel h3{margin:0;color:#dceefb;font-size:17px}.report-records-panel p{color:#a9c4d9;font-size:14px;line-height:1.6}.report-records-panel .measurement-table{margin-top:12px;font-size:14px}.report-form-panel{min-width:0}.exp-shell-dock:has(.report-zone-inner) .report-block{font-size:16px}@media(max-width:700px){.exp-shell-dock:has(.report-zone-inner){inset:56px 10px 10px;padding:18px}.exp-shell-dock:has(.report-zone-inner) .report-zone-inner{grid-template-columns:1fr}.report-records-panel{position:static}}.report-task-card{display:grid;gap:6px;margin-bottom:12px;padding:10px 12px;background:#17304a;border:1px solid #315b83;border-radius:10px;color:#dce9f5;font-size:13px;line-height:1.5}.report-task-card strong{color:#8fc7ff}.report-theory-toggle{justify-self:start;padding:2px 0;border:0;background:transparent;color:#8fc7ff;cursor:pointer;font:inherit;font-weight:700}.report-theory-toggle:hover{color:#dce9f5;text-decoration:underline}.report-theory-details{margin-bottom:12px}.chem-conclusion{display:grid;gap:6px;margin-top:12px}.chem-conclusion label{color:#9fb3c8;font-size:13px;font-weight:700}.chem-conclusion textarea{box-sizing:border-box;width:100%;resize:vertical;border:1px solid #2a3d57;border-radius:8px;background:#0c1620;color:#e6eef7;padding:8px;font:inherit}@media(max-width:900px){.exp-shell-body{flex-direction:column}.exp-shell-steps{width:100%;position:static}.exp-shell-dock{left:auto;right:156px;top:10px;width:min(300px,calc(100vw - 170px));max-height:calc(100% - 20px)}}.completion-card{margin-top:16px;background:#16321f;border:1px solid #3a8a5a;border-radius:14px;padding:18px 20px}.completion-badge{display:inline-block;font-size:14px;font-weight:700;color:#9bf0c0;background:#1f4630;border:1px solid #3a8a5a;border-radius:999px;padding:4px 12px;margin-bottom:10px}.completion-title{font-size:18px;font-weight:700;color:#e6eef7}.completion-meta{display:flex;gap:18px;margin-top:6px;font-size:13px;color:#9fb3c8}.completion-meta b{color:#ffd479}.completion-back{display:inline-block;margin-top:12px;color:var(--subject-physics-accent);text-decoration:none;font-weight:700;font-size:14px}.completion-back:hover{color:#dce9f5}.chem-submit-complete{margin-top:14px;width:100%;background:var(--subject-chemistry-active-bg, #0d9488);color:#fff;border:1px solid #14b8a6;border-radius:10px;padding:12px 16px;font-size:15px;font-weight:700;cursor:pointer}.chem-submit-complete:hover{background:#14b8a6}.knowledge-shell{min-height:100vh;display:flex;flex-direction:column;background:#0e1822;color:#e6eef7}.knowledge-bar{display:flex;align-items:center;gap:16px;padding:14px 22px;background:#0c1620;border-bottom:1px solid #1c2c3e}.knowledge-back{color:var(--subject-physics-accent);text-decoration:none;font-weight:700;font-size:14px}.knowledge-back:hover{color:#dce9f5}.knowledge-bar h1{font-size:20px;font-weight:700;margin:0;flex:1;color:var(--subject-physics-accent)}.knowledge-body{padding:22px;max-width:960px;width:100%;margin:0 auto}.knowledge-section{margin-bottom:28px}.knowledge-section-title{font-size:15px;font-weight:700;color:#9fb3c8;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid #1c2c3e}.knowledge-empty{background:#14232f;border:1px dashed #2a3d57;border-radius:12px;padding:28px;text-align:center;color:#9fb3c8}.knowledge-cloud{display:flex;flex-wrap:wrap;gap:10px}.knowledge-chip{display:inline-flex;align-items:center;gap:6px;background:#14232f;border:1px solid #2a3d57;border-radius:999px;padding:6px 14px;font-size:13px;color:#cfe0ee}.knowledge-chip .chip-count{font-size:11px;color:#0e1822;background:var(--subject-physics-accent);border-radius:999px;padding:1px 7px;font-weight:700}.knowledge-subject-group{margin-bottom:18px}.knowledge-subject-head{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;margin-bottom:10px}.knowledge-subject-head.physics{color:var(--subject-physics-accent)}.knowledge-subject-head.chemistry{color:var(--subject-chemistry-accent)}.knowledge-subject-head .subject-tag{font-size:12px;padding:2px 10px;border-radius:999px}.knowledge-subject-head.physics .subject-tag{background:#16263a;border:1px solid var(--subject-physics-primary, #2f80ed)}.knowledge-subject-head.chemistry .subject-tag{background:#0d3b38;border:1px solid var(--subject-chemistry-primary, #14b8a6)}.knowledge-item{background:#14232f;border:1px solid #2a3d57;border-radius:10px;padding:12px 14px;margin-bottom:10px}.knowledge-item-title{font-size:15px;font-weight:700;color:#e6eef7}.knowledge-item-meta{font-size:12px;color:#9fb3c8;margin-top:4px}.knowledge-item-points{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.knowledge-item-points .pt{font-size:12px;background:#1d3142;border-radius:6px;padding:2px 8px;color:#bcd4ea}.demo-lab{margin:0;width:100%;box-sizing:border-box;padding:20px 22px 48px;color:#e6eef7;display:flex;flex-direction:column;gap:16px}.demo-stage{background:#0f1c27;border:1px solid #2a3d57;border-radius:12px;padding:12px}.demo-scene-svg{width:100%;height:auto;max-height:380px;display:block}.demo-phenomenon{margin:10px 4px 2px;font-size:14px;line-height:1.7;color:#bcd4ea;background:#16232f;border-left:3px solid #3a8a5a;border-radius:0 8px 8px 0;padding:10px 14px}.demo-panel{background:#14232f;border:1px solid #2a3d57;border-radius:12px;padding:16px}.demo-panel-title{font-size:13px;color:#6f8aa6;font-weight:700;margin:4px 0 10px}.demo-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 18px;margin-bottom:16px;align-items:end}.demo-control{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#c7d6e5}.demo-control-label{display:flex;justify-content:space-between;gap:10px}.demo-control-label b{color:#7fd6a8;font-variant-numeric:tabular-nums}.demo-control input[type=range]{width:100%;height:32px;padding:0;margin:0;background:transparent;accent-color:#3a8a5a;touch-action:pan-y;-webkit-appearance:none;appearance:none}.demo-control input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:#2a3d57}.demo-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;margin-top:-8px;border:0;border-radius:50%;background:#3a8a5a;box-shadow:0 0 0 1px #0f1c27;cursor:pointer}.demo-control input[type=range]::-moz-range-track{height:6px;border-radius:3px;background:#2a3d57}.demo-control input[type=range]::-moz-range-thumb{width:22px;height:22px;border:0;border-radius:50%;background:#3a8a5a;cursor:pointer}.demo-control select{background:#0f1c27;border:1px solid #2a3d57;border-radius:8px;color:#e6eef7;padding:7px 10px;font-size:13px}.demo-readouts{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:16px}.demo-readout{background:#0f1c27;border:1px solid #22364d;border-radius:8px;padding:9px 12px;display:flex;flex-direction:column;gap:3px}.demo-readout-label{font-size:12px;color:#6f8aa6}.demo-readout-value{font-size:16px;font-weight:700;color:#f0f6fb;font-variant-numeric:tabular-nums}.demo-actions{display:flex;gap:12px;flex-wrap:wrap}.demo-clear{background:transparent;border:1px solid #2a3d57;border-radius:8px;color:#9db4cc;padding:9px 16px;font-size:13px;cursor:pointer}.demo-clear:hover{border-color:#3d5c80;color:#d5e5f5}.demo-record-table{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:10px}.demo-record-table th,.demo-record-table td{border:1px solid #22364d;padding:5px 7px;text-align:left;color:#c7d6e5}.demo-record-table th{background:#16232f;color:#8fa8c2;font-weight:600}
