:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:oklch(13.5% .008 210);--surface:oklch(19% .012 210);--ink:oklch(92% .018 85);--muted:oklch(73% .015 85);--line:oklch(30% .012 200);--primary:oklch(83% .065 85);--primary-hover:oklch(90% .065 85);--selected:oklch(24% .021 85);--success:oklch(80% .08 165);--success-bg:oklch(22% .03 165);--light-white:oklch(85% .02 85);--light-red:oklch(73% .15 22);--light-green:oklch(78% .12 155);--light-blue:oklch(74% .13 250);--light-magenta:oklch(76% .13 320);color:var(--ink);background:var(--bg);font-synthesis:none;font-kerning:normal;-webkit-font-smoothing:antialiased;--radius:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans SC,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;font-size:1rem;line-height:1.6}[hidden]{display:none!important}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;background:0 0;border:0}button,a{touch-action:manipulation}button{transition:color .18s,background-color .18s,border-color .18s}button:disabled{opacity:.36;cursor:not-allowed}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid var(--primary);outline-offset:4px}a{color:var(--primary);text-underline-offset:4px}h1,h2,h3,p{margin:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}h1{letter-spacing:-.025em;font-family:Georgia,Songti SC,serif;font-size:2rem;font-weight:400;line-height:1.2}h2{letter-spacing:-.025em;font-size:1.5rem;font-weight:620;line-height:1.35}h3{font-size:1rem;font-weight:650;line-height:1.5}.wrap{width:min(1120px,100% - 64px);margin-inline:auto}.sr-only,.skip-link:not(:focus){clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.skip-link:focus{background:var(--bg);z-index:5;padding:12px 20px;position:fixed;inset:12px auto auto 12px}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;min-height:68px;display:flex}.brand{color:var(--ink);white-space:nowrap;letter-spacing:-.035em;align-items:center;gap:11px;font-size:1.25rem;font-weight:650;text-decoration:none;display:inline-flex}.brand-light{margin-left:3px;font-weight:400}.brand img{border-radius:7px}.site-header nav{align-items:center;gap:28px;margin-left:36px;margin-right:auto;display:flex}.site-header nav a{color:var(--muted);padding-block:12px;font-size:.875rem;text-decoration:none}.site-header nav a:hover{color:var(--primary)}.header-actions{align-items:center;gap:16px;display:flex}.text-button{min-height:44px;color:var(--muted);justify-content:center;align-items:center;gap:8px;padding:8px 4px;font-size:.875rem;display:inline-flex}.text-button:hover:not(:disabled){color:var(--primary)}.language-button{border:1px solid var(--line);border-radius:6px;min-width:44px;min-height:44px;font-size:.875rem}.language-button:hover{background:var(--surface)}.intro{justify-content:space-between;align-items:center;gap:24px;padding-block:22px 20px;display:flex}.intro p{color:var(--muted);max-width:72ch;margin-top:7px;font-size:.875rem}.intro-note{color:var(--muted);flex-direction:column;flex-shrink:0;align-items:flex-end;gap:10px;font-size:.875rem;display:flex}.little-spectrum{align-items:center;gap:4px;height:24px;display:flex}.little-spectrum i{background:var(--primary);border-radius:2px;width:3px;height:16px}.little-spectrum i:nth-child(2){background:oklch(70% .14 45);height:22px}.little-spectrum i:nth-child(3){background:oklch(72% .14 110);height:28px}.little-spectrum i:nth-child(4){background:oklch(60% .12 170);height:22px}.little-spectrum i:nth-child(5){background:oklch(56% .16 260)}.game-tabs{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding-bottom:10px;display:flex}.segmented{background:var(--surface);border-radius:8px;gap:3px;padding:4px;display:inline-flex}.segmented button{min-height:40px;color:var(--muted);border-radius:5px;padding:6px 24px;font-size:.875rem;font-weight:550}.segmented button.active{background:var(--selected);color:var(--primary)}.segmented button:hover:not(.active){background:var(--line)}.count{background:var(--surface);border-radius:4px;padding:0 6px;font-size:.75rem}.grid-symbol{font-size:1.25rem}.experiment-header{justify-content:space-between;align-items:center;gap:20px;padding-block:16px;display:flex}.experiment-heading{align-items:center;gap:16px;min-width:0;display:flex}.level-number{color:var(--primary);letter-spacing:-.02em;font:400 2rem/1 Georgia,serif}.level-concept{color:var(--muted);margin-bottom:3px;font-size:.75rem;display:block}.experiment-heading h2{font:400 1.5rem/1.3 Georgia,Songti SC,serif}.level-navigation{gap:6px;display:flex}.run-time{color:var(--muted);flex-direction:column;justify-content:center;align-items:flex-end;margin-right:12px;font-size:.6875rem;display:flex}.run-time output{color:var(--primary);min-width:5ch;font:.875rem/1.6 ui-monospace,monospace}.icon-button{border:1px solid var(--line);border-radius:7px;min-width:44px;height:44px;font-size:1.25rem}.icon-button:hover:not(:disabled){border-color:var(--primary);background:var(--selected);color:var(--primary)}.solved-label{color:var(--success);margin-left:8px;font-size:.75rem}.game-layout{grid-template-columns:minmax(0,530px) 250px;justify-content:center;align-items:start;gap:32px;display:grid}.bench-column{min-width:0}.bench-frame{background:oklch(10% .005 200);border:1px solid oklch(37% .025 85);border-radius:4px;overflow:hidden}canvas{aspect-ratio:800/1280;touch-action:none;width:100%;display:block}canvas.dragging{cursor:grabbing!important}canvas:focus-visible{outline-offset:-4px}.bench-bottom{border-top:1px solid var(--line);min-height:44px;color:var(--muted);justify-content:space-between;align-items:center;gap:12px;padding:0 14px;display:flex}.live-label{letter-spacing:.08em;align-items:center;gap:8px;font:.6875rem/1.4 ui-monospace,monospace;display:flex}.live-label>span:first-child{background:oklch(77% .12 160);border-radius:50%;width:5px;height:5px}#light-button{min-height:44px;font-size:.75rem}#light-button:before{content:"";background:oklch(85% .04 85);border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}#light-button[aria-pressed=false]:before{background:oklch(47% 0 0)}.bench-view-controls{align-items:center;gap:16px;display:flex}#fullscreen-button{min-height:44px;color:var(--primary);font-size:.75rem}#fullscreen-timer{color:var(--primary);font:.75rem ui-monospace,monospace;display:none}.bench-toolbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding-block:12px;display:flex}.history-controls{gap:8px;display:flex}.toolbar-button{min-height:44px;color:var(--muted);border-radius:6px;justify-content:center;align-items:center;gap:7px;padding:8px 10px;font-size:.875rem;display:inline-flex}.toolbar-button:hover:not(:disabled){color:var(--ink);background:var(--surface)}.toolbar-button>span:first-child{font-size:1.25rem;line-height:1}.hint-button{background:var(--selected);color:var(--primary);border-radius:6px;align-items:center;gap:8px;min-height:44px;padding:8px 16px;font-size:.875rem;display:inline-flex}.hint-button:hover{background:oklch(30% .03 85)}.interaction-guide{color:var(--muted);align-items:center;gap:24px;min-height:48px;font-size:.75rem;display:flex}.interaction-guide>span{align-items:center;gap:7px;display:flex}.interaction-guide .text-button{min-width:44px;margin-left:auto}#keyboard-help{color:var(--muted);max-width:70ch;padding:12px 0;font-size:.875rem}.inspector{padding:20px 0 0;font-size:.875rem;position:sticky;top:20px}.goal-section h3,.tools-section h3{margin-bottom:8px;font-size:.875rem}#level-description{color:var(--muted);margin-bottom:20px;line-height:1.65}.source-readings{border-block:1px solid var(--line);margin:0 0 20px;padding-block:10px}.source-reading{justify-content:space-between;gap:12px;padding:5px 0;display:flex}.source-reading strong{color:var(--ink);font-size:.75rem;font-weight:600}.source-reading span{color:var(--muted);text-align:right;font-size:.6875rem}.target-reading{margin-bottom:16px}.target-reading-top{align-items:center;gap:7px;margin-bottom:9px;font-size:.8125rem;display:flex}.target-reading-top strong{font-weight:550}.target-dot{border:2px solid var(--target-color);border-radius:50%;width:8px;height:8px}.target-state{color:var(--muted);margin-left:auto}.satisfied .target-state{color:var(--success)}.energy-track{background:var(--line);border-radius:2px;height:4px;overflow:hidden}.energy-track span{background:var(--target-color);height:100%;transition:width .18s ease-out;display:block}.satisfied .energy-track span{background:var(--success)}.energy-description,.purity-description{font-variant-numeric:tabular-nums;color:var(--muted);margin-top:6px;font-size:.75rem}.purity-description:empty{display:none}.tools-section{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.tool-list{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.tool-item{border:1px solid var(--line);border-radius:6px;align-items:center;gap:8px;min-height:44px;padding:6px 10px;font-size:.75rem;display:flex}.tool-item.active{border-color:var(--primary);color:var(--primary);background:var(--selected)}.tool-item:hover{border-color:var(--primary)}.tool-glyph{text-align:center;min-width:16px;font-size:1.125rem;line-height:1}.selected-tool{padding-top:24px}.selection-heading{justify-content:space-between;align-items:center;font-size:.875rem;display:flex}#selected-glyph{color:var(--primary);font-size:1.25rem}#tool-explanation{color:var(--muted);margin:8px 0 18px;font-size:.8125rem;line-height:1.65}.angle-label{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.angle-label>div{align-items:center;gap:4px;display:flex}input[type=number],select{background:var(--bg);border:1px solid var(--line);min-height:40px;color:var(--ink);border-radius:6px;max-width:100%;padding:7px 8px;font-size:.875rem}input[type=number]{font-variant-numeric:tabular-nums;font-family:ui-monospace,monospace}#angle-number{text-align:right;width:90px}input[type=range]{width:100%;accent-color:var(--primary);cursor:pointer;height:28px;margin:0}.angle-scale{color:var(--muted);justify-content:space-between;font:.6875rem/1.6 ui-monospace,monospace;display:flex}.position-details{margin-top:16px}summary{cursor:pointer;min-height:44px;padding-block:10px}.position-details summary{color:var(--muted);font-size:.8125rem}.position-fields{gap:12px;padding-block:8px;display:flex}.position-fields label{flex:1;align-items:center;gap:6px;display:flex}.position-fields input{width:95px;min-width:0}.empty-selection{color:var(--muted);margin-top:24px}.lab-controls{margin-top:16px}.lab-controls label,#lab-tool-properties label{justify-content:space-between;margin:16px 0 8px;font-size:.8125rem;display:flex}.lab-controls select,#filter-color{width:100%}.add-tool-row{gap:8px;display:flex}.add-tool-row select{min-width:0}#remove-tool-button{color:var(--primary);margin-top:12px}.hint-panel{background:var(--surface);border-radius:8px;margin-top:16px;padding:18px 20px}.hint-panel>div{justify-content:space-between;gap:16px;font-size:.875rem;display:flex}#hint-step{color:var(--muted);font-size:.75rem}.hint-panel p{color:var(--muted);margin-top:8px;font-size:.875rem}.hint-panel .text-button{color:var(--primary);padding-bottom:0}.success-panel{background:var(--success-bg);border-radius:8px;margin-top:16px;padding:20px;animation:.22s ease-out settle}.success-panel>div{align-items:flex-start;gap:12px;display:flex}.success-panel h3{color:var(--success)}.success-panel p{color:var(--success);max-width:65ch;margin:4px 0 16px;font-size:.875rem}.success-check{color:var(--success);font-size:1.25rem}.primary-button{background:var(--primary);min-height:44px;color:var(--bg);border-radius:6px;padding:10px 18px;font-size:.875rem;font-weight:550}.primary-button:hover{background:var(--primary-hover)}.notice{color:oklch(87% .075 75);background:oklch(25% .035 75);border-radius:6px;margin-top:16px;padding:12px 16px;font-size:.875rem}.toolkit{border-top:1px solid var(--line);margin-top:48px;padding-top:48px}.section-intro{justify-content:space-between;align-items:flex-start;gap:32px;display:flex}.section-intro h2{max-width:390px}.section-intro p{max-width:440px;color:var(--muted);font-size:.875rem}.toolkit-list{grid-template-columns:repeat(3,1fr);gap:28px 40px;margin-block:36px 52px;display:grid}.toolkit-list article{align-items:flex-start;gap:18px;display:flex}.toolkit-list h3{margin-bottom:6px;font-size:.875rem}.toolkit-list p{color:var(--muted);max-width:42ch;font-size:.8125rem}.toolkit-glyph{width:32px;color:var(--primary);text-align:center;flex-shrink:0;font-size:1.5rem;line-height:1.5}.about{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:90px;padding-block:44px 64px;display:grid}.about h2{margin-bottom:16px}.about p{color:var(--muted);max-width:65ch;font-size:.875rem}.comparison{margin-top:28px}.comparison h3{margin-bottom:8px}.comparison a{margin-top:8px;padding-block:8px;font-size:.8125rem;display:inline-block}.faq details{border-bottom:1px solid var(--line);padding:4px 0 8px}.faq summary{font-size:.875rem;font-weight:600}.faq p{margin:4px 0 12px}.site-footer{border-top:1px solid var(--line);justify-content:space-between;gap:32px;padding-block:24px 32px;display:flex}.site-footer p{color:var(--muted);font-size:.75rem}.site-footer nav{flex-wrap:wrap;gap:8px 24px;display:flex}.site-footer a{font-size:.8125rem}.story-section{border-top:1px solid var(--line);padding-block:44px 56px}.story-heading{max-width:700px;margin-bottom:28px}.story-heading p{color:var(--primary);margin-top:10px}.story-columns{grid-template-columns:1fr 1fr;gap:48px;display:grid}.story-section p{color:var(--muted);max-width:68ch;font-size:.9375rem;line-height:1.8}.story-section p+p{margin-top:16px}.story-section h3{margin-bottom:10px}.optical-notes{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:32px;margin-block:36px;padding-block:32px;display:grid}.content-links{flex-wrap:wrap;gap:12px 32px;margin-top:28px;display:flex}.content-links a{padding-block:8px;font-size:.875rem;display:inline-block}.reading{max-width:940px;padding-block:32px 64px}.reading-back{margin-bottom:24px;font-size:.875rem;display:inline-block}.reading-header,.reading>article{max-width:820px}.reading h1{max-width:25ch;margin-bottom:20px;font-size:2.5rem}.reading-intro{color:var(--primary);margin-bottom:40px;font-size:1.125rem;line-height:1.7}.reading article p{color:var(--muted);max-width:72ch;margin:16px 0;line-height:1.85}.reading article h2{margin:36px 0 16px}.reading-visual{background:oklch(10% .005 200);border:1px solid oklch(37% .025 85);border-radius:12px;height:clamp(300px,48vw,520px);margin:4px 0 44px;position:relative;overflow:hidden}.reading-visual img{object-fit:cover;object-position:50% 42%;width:100%;height:100%;display:block}.reading-visual figcaption{color:var(--ink);background:linear-gradient(#0000,oklch(10% .005 200/.92));padding:32px 20px 16px;font-size:.8125rem;position:absolute;inset:auto 0 0}.reading-steps{counter-reset:step;border-block:1px solid var(--line);margin:22px 0 32px;padding:0;list-style:none}.reading-steps li{counter-increment:step;border-bottom:1px solid var(--line);grid-template-columns:2.25rem minmax(0,1fr);gap:2px 14px;padding:16px 0;display:grid}.reading-steps li:last-child{border-bottom:0}.reading-steps li:before{content:counter(step, decimal-leading-zero);color:var(--primary);grid-row:span 2;font:.8125rem/1.8 ui-monospace,monospace}.reading-steps strong{font-size:.9375rem}.reading-steps span{color:var(--muted);font-size:.875rem;line-height:1.7}.reading-table{border-block:1px solid var(--line);max-width:940px;margin:22px 0 34px;overflow-x:auto}.reading-table table{border-collapse:collapse;text-align:left;width:100%;min-width:620px;font-size:.8125rem}.reading-table th{color:var(--primary);font-weight:600}.reading-table th,.reading-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:13px 16px 13px 0}.reading-table tbody tr:last-child td{border-bottom:0}.reading-table td{color:var(--muted);line-height:1.65}.reading-play{margin-top:24px;text-decoration:none;display:inline-block}.reading-links{border-top:1px solid var(--line);flex-direction:column;gap:16px;margin-top:40px;padding-top:24px;display:flex}.reading-links h2{margin-bottom:4px;font-size:1rem}.reading-faq{border-top:1px solid var(--line);max-width:820px;margin-top:48px;padding-top:32px}.reading-faq h2{margin-bottom:16px}.reading-faq details{border-bottom:1px solid var(--line);padding:4px 0 8px}.reading-faq summary{font-size:.9375rem;font-weight:600}.reading-faq p{color:var(--muted);max-width:70ch;margin:4px 0 12px;font-size:.875rem;line-height:1.75}dialog{border:1px solid var(--line);width:min(760px,100% - 32px);max-height:calc(100dvh - 48px);color:var(--ink);background:var(--bg);border-radius:12px;padding:28px}dialog::backdrop{background:oklch(12% 0 0/.65)}.dialog-heading{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px;display:flex}.dialog-heading p{color:var(--muted);margin-top:8px;font-size:.875rem}.dialog-heading .icon-button{flex-shrink:0}.level-map{grid-template-columns:1fr 1fr;gap:8px;display:grid}.chapter-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.chapter-controls label{color:var(--muted);font-size:.875rem}.chapter-controls select{flex:1;min-width:min(240px,100%)}.chapter-progress{color:var(--muted);margin:12px 0 20px;font-size:.8125rem}.level-map-item{text-align:left;border:1px solid var(--line);border-radius:7px;align-items:center;gap:12px;min-height:84px;padding:16px 12px;display:flex}.level-map-item.current{border-color:var(--primary);background:var(--selected)}.level-map-item:hover{border-color:var(--primary)}.map-number{color:var(--muted);min-width:28px;font:1.25rem/1 ui-monospace,monospace}.completed .map-number{color:var(--success)}.level-map-item strong{font-size:.8125rem;font-weight:600;display:block}.level-map-item small{color:var(--muted);margin-top:3px;font-size:.6875rem;display:block}.level-map-item>span:last-child{color:var(--muted);margin-left:auto}.tool-item.used:after{content:"·";color:var(--success);font-weight:700}.win-dialog{text-align:center;background:oklch(17% .014 200);border-color:oklch(48% .04 85);width:min(440px,100% - 32px);padding:24px 28px}.win-dialog::backdrop{background:oklch(8% .005 200/.84)}.victory-mark{background:url(/assets/props.png) 100% 0/200% no-repeat;width:112px;height:112px;margin:-4px auto 8px}.victory-level{color:var(--primary);margin-bottom:10px;font-size:.8125rem}.win-dialog h2{font:400 1.875rem/1.3 Georgia,Songti SC,serif}.victory-times{justify-content:center;gap:44px;padding-block:24px;display:flex}.victory-times span{color:var(--muted);margin-bottom:5px;font-size:.75rem;display:block}.victory-times strong{font:1.5rem/1.3 ui-monospace,monospace}.win-dialog>.primary-button{width:100%}.win-dialog>.text-button{margin-top:6px}.victory-share{border-top:1px solid var(--line);margin-top:12px;padding-top:20px}.victory-share h3{font-size:.875rem}.victory-share p{color:var(--muted);margin-top:4px;font-size:.75rem}.share-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 20px;padding-top:8px;display:flex}.share-actions a{padding-block:12px;font-size:.8125rem}.copy-share-row{align-items:center;gap:8px;margin-top:8px;display:flex}.copy-share-row input{width:0;min-width:0;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:5px;flex:1;padding:10px;font-size:.75rem}.copy-share-row button{flex-shrink:0;font-size:.75rem}.unlock-dialog{width:min(460px,100% - 32px);padding:32px}.dialog-close{position:absolute;top:12px;right:12px}.unlock-dialog h2{margin:16px 0 12px}.unlock-dialog p{color:var(--muted);margin-bottom:16px;font-size:.875rem}#purchase-price{color:var(--primary);margin-block:20px 8px;font-size:1.5rem;display:block}#purchase-price:empty{display:none}#checkout-button{width:100%}#purchase-status{color:var(--primary);margin-top:16px}#restore-purchase-section{border-top:1px solid var(--line);margin-top:20px;padding-top:12px;font-size:.875rem}#restore-purchase-section input,#purchase-code-output{width:100%;min-height:44px;color:var(--ink);border:1px solid var(--line);background:var(--bg);border-radius:5px;margin-top:8px;padding:10px;font-size:.875rem}.level-map-item.locked{background:var(--surface)}.level-map-item.locked small{color:var(--primary)}:is(#game:fullscreen,#game.is-fullscreen){background:var(--bg);width:100vw;max-width:none;height:100dvh;padding:12px 20px;overflow:auto}#game.is-fullscreen{z-index:20;position:fixed;inset:0}:is(#game:fullscreen .game-tabs,#game.is-fullscreen .game-tabs,#game:fullscreen .experiment-header,#game.is-fullscreen .experiment-header,#game:fullscreen .interaction-guide,#game.is-fullscreen .interaction-guide){display:none}:is(#game:fullscreen .game-layout,#game.is-fullscreen .game-layout){grid-template-columns:minmax(0,1fr) 260px;gap:24px;height:100%}:is(#game:fullscreen .bench-column,#game.is-fullscreen .bench-column){grid-template-rows:minmax(0,1fr) auto;height:100%;min-height:0;display:grid;position:relative}:is(#game:fullscreen .bench-frame,#game.is-fullscreen .bench-frame){flex-direction:column;min-height:0;display:flex}:is(#game:fullscreen canvas,#game.is-fullscreen canvas){flex:1;height:0;min-height:0;aspect-ratio:auto!important}:is(#game:fullscreen .bench-bottom,#game.is-fullscreen .bench-bottom){flex-shrink:0}:is(#game:fullscreen #fullscreen-timer,#game.is-fullscreen #fullscreen-timer){display:inline}:is(#game:fullscreen .inspector,#game.is-fullscreen .inspector){height:100%;padding:12px 8px 12px 0;display:block;position:static;overflow-y:auto}:is(#game:fullscreen .hint-panel,#game.is-fullscreen .hint-panel){z-index:2;border:1px solid var(--line);position:absolute;bottom:74px;left:16px;right:16px}:is(#game:fullscreen .success-panel,#game.is-fullscreen .success-panel){z-index:1;position:absolute;bottom:74px;left:16px;right:16px}:is(#game:fullscreen .notice,#game.is-fullscreen .notice){position:absolute;top:12px;left:12px;right:12px}@keyframes settle{0%{opacity:.4;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media (width>=1600px){.game{max-width:1000px}.game-layout{grid-template-columns:minmax(0,600px) 270px}}@media (width<=1100px){.wrap{width:calc(100% - 40px)}.game-layout{grid-template-columns:minmax(0,520px) 240px;gap:24px}.site-header nav{gap:20px;margin-left:16px}.solved-label{display:none}.toolbar-button{padding-inline:6px}.history-controls{gap:2px}.about{gap:44px}.interaction-guide{gap:12px}.toolkit-list{gap:28px}}@media (width<=820px){.site-header{min-height:64px}.site-header nav{margin-left:auto}#sound-button{display:none}.intro{padding-block:28px}h1{font-size:2rem}.intro p{max-width:46ch}.intro-note{font-size:.75rem}.game-layout{grid-template-columns:minmax(0,1fr);gap:12px}.inspector{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:0 28px;padding:24px 0 0;display:grid;position:static}.game{max-width:620px}.goal-section{grid-column:1}.tools-section{border:0;grid-area:1/2;margin-top:0;padding-top:0}.selected-tool{grid-column:2;padding-top:16px}.lab-controls{grid-area:2/1;margin-top:0}.empty-selection{grid-column:2}.toolkit{margin-top:40px}.toolkit-list{grid-template-columns:1fr 1fr}.section-intro{flex-direction:column;gap:12px}.section-intro h2,.section-intro p{max-width:65ch}.about{gap:32px}.optical-notes{grid-template-columns:1fr;gap:24px}}@media (width<=540px){.wrap{width:calc(100% - 32px)}.site-header{gap:12px;min-height:60px}.brand{gap:8px;font-size:1.125rem}.brand img{width:28px;height:28px}.site-header nav{display:none}.header-actions{gap:8px;margin-left:auto}#access-button{font-size:.75rem}.intro{align-items:flex-start;padding-block:18px 16px}.intro p{max-width:35ch;font-size:.875rem}.intro-note{display:none}h1{font-size:1.625rem}.segmented button{padding-inline:16px}#levels-button{gap:5px;font-size:.75rem}#levels-button .grid-symbol,#levels-button .count{display:none}.experiment-header{gap:10px;padding-block:20px 16px}.experiment-heading{gap:10px}.experiment-heading h2{max-width:24ch;font-size:1rem}.level-number{font-size:2rem}.level-concept{font-size:.6875rem}.level-navigation{gap:4px}.run-time{margin-right:4px}.level-navigation .icon-button{width:40px;min-width:40px}.bench-frame{border-radius:7px;margin-inline:-8px}canvas{aspect-ratio:800/1280}.bench-bottom{min-height:44px;padding-inline:12px}.live-label{font-size:.5625rem}.toolbar-button{gap:4px;padding-inline:4px;font-size:.75rem}.hint-button{gap:4px;padding-inline:8px;font-size:.75rem}.hint-button>span:first-child{display:none}.interaction-guide{align-items:center;gap:12px;font-size:.6875rem}.interaction-guide>span{gap:4px}.interaction-guide .text-button{min-width:28px}.inspector{grid-template-columns:1fr;gap:0;padding-top:16px}.goal-section,.tools-section,.selected-tool,.lab-controls,.empty-selection{grid-area:auto/1}.goal-section{order:0}.lab-controls{order:1}.tools-section{border-top:1px solid var(--line);order:2;margin-top:16px;padding-top:16px}.selected-tool,.empty-selection{order:3}.target-reading{max-width:100%}#level-description{margin-bottom:16px}#tool-explanation{max-width:60ch}input[type=number],select{min-height:44px;font-size:1rem}input[type=range]{height:40px}.position-fields input{width:100%}.toolkit{margin-top:40px;padding-top:32px}h2{font-size:1.25rem}.toolkit-list{grid-template-columns:1fr;gap:24px;margin-block:28px 36px}.toolkit-list p{max-width:55ch}.about{grid-template-columns:1fr;gap:28px;padding-block:32px 36px}.site-footer{flex-direction:column;gap:8px}.story-columns{grid-template-columns:1fr;gap:28px}.story-section{padding-block:32px}.reading h1{font-size:1.875rem}.reading-intro{margin-bottom:28px;font-size:1rem}.reading-visual{height:360px;margin-bottom:32px}dialog{max-height:calc(100dvh - 32px);padding:20px}.level-map{grid-template-columns:1fr}.dialog-heading{gap:12px}.success-panel{padding:16px}:is(#game:fullscreen,#game.is-fullscreen){padding:8px}:is(#game:fullscreen .game-layout,#game.is-fullscreen .game-layout){grid-template-columns:minmax(0,1fr)}:is(#game:fullscreen .inspector,#game.is-fullscreen .inspector){display:none}:is(#game:fullscreen .bench-frame,#game.is-fullscreen .bench-frame){margin:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.walkthrough-dialog{width:min(680px,100% - 32px)}.walkthrough-dialog h2{padding-right:42px}.walkthrough-dialog p{color:var(--muted);margin:12px 0;font-size:.875rem;line-height:1.7}#walkthrough-level,#walkthrough-balance{color:var(--primary)}#walkthrough-status{color:var(--primary);min-height:1.4em}#walkthrough-confirmation{background:var(--surface);border-radius:8px;margin-block:16px;padding:16px}#walkthrough-confirmation .text-button{margin-left:12px}.walkthrough-plan{border-bottom:1px solid var(--line);align-items:center;gap:16px;padding:16px 0;display:flex}.walkthrough-plan>div{flex:1}.walkthrough-plan strong,.walkthrough-plan span{display:block}.walkthrough-plan span{color:var(--muted);margin-top:6px;font-size:.8125rem;line-height:1.65}.walkthrough-plan button{flex-shrink:0}.walkthrough-table{overflow-x:auto}.walkthrough-table table{border-collapse:collapse;text-align:left;width:100%;font-size:.8125rem}.walkthrough-table th,.walkthrough-table td{border-bottom:1px solid var(--line);padding:10px 8px}.walkthrough-table td:not(:first-child){font-variant-numeric:tabular-nums}@media (width<=540px){.walkthrough-plan{flex-wrap:wrap}.walkthrough-plan>div{flex-basis:65%}.walkthrough-dialog .primary-button{min-height:44px}}.intro{grid-template-columns:minmax(0,1fr) minmax(250px,340px);align-items:center;gap:32px;padding-block:26px;display:grid}.intro-copy h1{font-size:clamp(1.8rem,3vw,2.5rem)}.intro .intro-offer{color:var(--primary);margin-top:14px}.intro-actions{flex-wrap:wrap;align-items:center;gap:8px 20px;margin-top:16px;display:flex}.intro .intro-reassurance{max-width:52ch;margin-top:12px;font-size:.8125rem}#progress-summary{color:var(--muted);margin-top:10px;font-size:.75rem;display:block}.demo-preview{border:1px solid var(--line);background:var(--surface);border-radius:10px;min-width:0;margin:0;padding:0;overflow:hidden}.demo-preview canvas{aspect-ratio:800/620;cursor:default;touch-action:pan-y}.demo-preview figcaption{color:var(--ink);min-height:2.5em;padding:10px 14px 0;font-size:.875rem}.demo-controls{align-items:center;gap:16px;padding:0 14px;display:flex}.demo-controls progress{width:100%;min-width:0;height:4px;accent-color:var(--primary)}.demo-controls button{white-space:nowrap;color:var(--primary)}.intro .demo-note{color:var(--muted);margin:0;padding:0 14px 12px;font-size:.6875rem}.onboarding{z-index:4;background:var(--surface);border:1px solid var(--line);border-radius:8px;margin:0 0 16px;padding:12px 16px;position:sticky;top:8px}.onboarding-steps{flex-wrap:wrap;gap:6px 16px;display:flex}.onboarding-steps button{min-height:44px;color:var(--muted);border-radius:4px;padding:4px 8px;font-size:.8125rem}.onboarding-steps button[aria-pressed=true]{color:var(--primary);background:var(--selected)}.onboarding p{max-width:80ch;color:var(--ink);margin-top:6px;font-size:.8125rem;line-height:1.7}.onboarding>.text-button{min-height:44px;padding-bottom:0;font-size:.75rem}.optional-help{color:var(--muted);margin-top:12px;font-size:.75rem;line-height:1.7}:is(#game:fullscreen .onboarding,#game.is-fullscreen .onboarding){display:none}@media (width<=820px){.intro{grid-template-columns:minmax(0,1fr) 260px;gap:20px}}@media (width<=540px){.intro{grid-template-columns:minmax(0,1fr);gap:20px;padding-block:20px}.demo-preview{max-width:100%}.demo-preview canvas{max-height:200px}.intro-copy h1{font-size:1.75rem}.onboarding{padding:10px 12px}.onboarding-steps{gap:4px}.onboarding-steps button{padding:4px 5px;font-size:.75rem}}.game{max-width:1100px}.game-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:24px}.bench-column{position:relative}.bench-frame{border-color:oklch(42% .03 85);border-radius:12px}.optical-stage{background:#071014;height:clamp(340px,64dvh,700px);position:relative;overflow:hidden}#bench{width:100%;height:100%;aspect-ratio:auto!important}#bench.panning{cursor:grab}.target-hud{border-bottom:1px solid var(--line);background:var(--surface);flex-wrap:wrap;align-items:center;gap:4px 8px;min-height:46px;padding:6px 12px;font-size:.75rem;display:flex}.hud-gate{min-height:36px;color:var(--ink);font-variant-numeric:tabular-nums;text-align:left;border-radius:5px;padding:5px 8px}.hud-gate:hover{background:var(--selected)}.hud-gate.satisfied{color:var(--success)}.view-tools{background:var(--surface);border:1px solid var(--line);border-radius:7px;gap:3px;padding:3px;display:flex;position:absolute;bottom:8px;left:8px}.view-tools button{border-radius:4px;min-width:40px;min-height:40px;padding:5px 8px;font-size:.75rem}.view-tools button:hover,.view-tools button[aria-pressed=true]{background:var(--selected);color:var(--primary)}.computing{background:var(--surface);border-radius:4px;padding:3px 7px;font-size:.75rem;position:absolute;top:10px;right:10px}.inspector{border:1px solid var(--line);background:var(--surface);border-radius:12px;max-height:calc(100dvh - 36px);padding:16px;top:12px;overflow-y:auto}.inspector-toggle,#inspector-close{display:none}.inspector .tools-section{margin-top:18px;padding-top:16px}.inspector .selected-tool{padding-top:18px}.selection-heading{flex-wrap:wrap;gap:8px}.selection-heading #lock-tool{border:1px solid var(--line);border-radius:5px;min-height:36px;margin-left:auto;padding:4px 8px}#lock-tool[aria-pressed=true]{background:var(--selected);color:var(--primary)}.fine-controls,.position-nudges{align-items:center;gap:4px;margin-top:8px;display:flex}.fine-controls button,.position-nudges button{background:var(--bg);border:1px solid var(--line);border-radius:6px;flex:1;min-height:44px;font-size:.8125rem}.position-nudges span{color:var(--muted);font-size:.6875rem}.hint-panel,#game.is-fullscreen .hint-panel{z-index:8;border:1px solid var(--primary);max-height:min(340px,54dvh);margin:0;padding:14px 16px;position:absolute;inset:62px 12px auto;overflow-y:auto;box-shadow:0 12px 40px #0008}#game:fullscreen .hint-panel{z-index:8;border:1px solid var(--primary);max-height:min(340px,54dvh);margin:0;padding:14px 16px;position:absolute;inset:62px 12px auto;overflow-y:auto;box-shadow:0 12px 40px #0008}.hint-panel>div{align-items:center;gap:8px}#close-hint{flex-shrink:0;margin-left:auto}#hint-diagnosis{color:var(--ink);border-bottom:1px solid var(--line);margin-bottom:12px;padding-bottom:12px;font-weight:550}.optional-help{max-width:65ch;font-size:.75rem}#walkthrough-button{min-height:40px;font-size:.75rem}.onboarding{padding:8px 12px;position:static}.onboarding p{line-height:1.5}.onboarding>.text-button{min-height:36px}.lab-project{border-bottom:1px solid var(--line);padding-bottom:12px}.lab-project p{color:var(--muted);font-size:.75rem;line-height:1.6}.lab-editor{margin-top:12px}.lab-editor>label,.lab-project>label{margin:10px 0 6px;font-size:.8125rem;display:block}.lab-actions{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.lab-actions button,#lab-load-preset{border:1px solid var(--line);border-radius:5px;min-height:40px;padding:6px 10px;font-size:.75rem}.lab-actions button:hover{background:var(--selected)}#lab-workshop select{width:100%}.lab-fields{gap:6px;margin:10px 0;display:flex}.lab-fields label{flex:1;min-width:0;font-size:.75rem}.lab-fields input{width:100%;margin-top:4px;display:block}#lab-target-fields>label{margin-top:10px;font-size:.75rem;display:block}#lab-target-fields>input{width:100%;margin-top:4px}:is(#game:fullscreen .game-layout,#game.is-fullscreen .game-layout){grid-template-columns:minmax(0,1fr) 300px;gap:20px}:is(#game:fullscreen .bench-column,#game.is-fullscreen .bench-column){flex-direction:column;min-height:0;display:flex}:is(#game:fullscreen .bench-frame,#game.is-fullscreen .bench-frame){flex-direction:column;flex:1;min-height:0;display:flex}:is(#game:fullscreen .optical-stage,#game.is-fullscreen .optical-stage){flex:1;height:0;min-height:100px}:is(#game:fullscreen #bench,#game.is-fullscreen #bench){flex:none;width:100%;height:100%}:is(#game:fullscreen .target-hud,#game.is-fullscreen .target-hud){flex-shrink:0}:is(#game:fullscreen .inspector,#game.is-fullscreen .inspector){border:1px solid var(--line);max-height:none;padding:16px;display:block}:is(#game:fullscreen .optional-help,#game.is-fullscreen .optional-help){display:none}:is(#game:fullscreen .notice,#game.is-fullscreen .notice){margin:4px 0;font-size:.75rem;position:static}:is(#game:fullscreen .success-panel,#game.is-fullscreen .success-panel){z-index:7;top:64px;bottom:auto}@media (width<=820px){.game-layout{display:block}.game{width:calc(100% - 24px)}.optical-stage{height:clamp(320px,62dvh,600px)}.inspector-toggle{border:1px solid var(--primary);width:100%;min-height:48px;color:var(--primary);background:var(--surface);border-radius:8px;margin:12px 0;font-size:.875rem;display:block}.inspector,#game.is-fullscreen .inspector{display:none}#game:fullscreen .inspector{display:none}.controls-open .inspector,#game.is-fullscreen.controls-open .inspector{z-index:10;border:1px solid var(--primary);height:auto;max-height:55dvh;padding:16px;display:block;position:fixed;inset:auto 12px 12px;box-shadow:0 -10px 50px #0009}#game:fullscreen.controls-open .inspector{z-index:10;border:1px solid var(--primary);height:auto;max-height:55dvh;padding:16px;display:block;position:fixed;inset:auto 12px 12px;box-shadow:0 -10px 50px #0009}#inspector-close{text-align:right;background:var(--surface);z-index:1;width:100%;min-height:44px;margin-bottom:10px;display:block;position:sticky;top:-16px}:is(#game:fullscreen .game-layout,#game.is-fullscreen .game-layout){flex-direction:column;gap:0;display:flex}:is(#game:fullscreen .bench-column,#game.is-fullscreen .bench-column){flex:1;width:100%;min-height:0}:is(#game:fullscreen .inspector-toggle,#game.is-fullscreen .inspector-toggle){flex-shrink:0;margin:6px 0 0}.interaction-guide{flex-wrap:wrap;gap:8px 16px}.bench-toolbar{padding-block:6px}.bench-bottom{gap:6px;padding-inline:8px}.bench-view-controls{gap:6px}.live-label{letter-spacing:0;font-size:.625rem}.target-hud{padding:4px 6px}.hud-gate{font-size:.6875rem}}@media (height<=600px) and (width>=821px){.optical-stage{height:360px}:is(#game:fullscreen .bench-toolbar,#game.is-fullscreen .bench-toolbar){padding:2px 0}}.optical-stage{height:auto;aspect-ratio:var(--world-ratio,800 / 1280);min-height:320px;max-height:64dvh}:is(#game:fullscreen .optical-stage,#game.is-fullscreen .optical-stage){aspect-ratio:auto;min-height:100px;max-height:none}.hint-panel,#game.is-fullscreen .hint-panel{max-height:calc(100% - 68px);top:8px;left:8px;right:8px}#game:fullscreen .hint-panel{max-height:calc(100% - 68px);top:8px;left:8px;right:8px}.inspector-header{z-index:2;border-bottom:1px solid var(--line);background:var(--surface);margin:-16px -16px 12px;padding:8px 12px;position:sticky;top:-16px}.inspector-tabs{gap:6px;display:flex}.inspector-tabs button{border-radius:4px;min-height:40px;padding:5px 12px;font-size:.8125rem}.inspector-tabs button:hover{background:var(--selected)}#inspector-close{margin:0;padding:4px 8px;position:static}@media (width<=820px){.optical-stage{height:auto;max-height:62dvh}.bench-toolbar{flex-wrap:wrap;gap:4px}.bench-toolbar .history-controls{gap:0;margin-right:auto}.bench-toolbar .toolbar-button{padding:5px 7px}.bench-toolbar .inspector-toggle,#game.is-fullscreen .inspector-toggle{border-radius:6px;width:auto;min-height:44px;margin:0;padding:4px 10px;font-size:.75rem}#game:fullscreen .inspector-toggle{border-radius:6px;width:auto;min-height:44px;margin:0;padding:4px 10px;font-size:.75rem}.inspector-header{padding-top:4px}}html[data-qa-mode=true]:after{content:"QA · Analytics off";z-index:40;color:#d5e8e8;pointer-events:none;background:#17242b;border-radius:0 0 4px 4px;padding:2px 6px;font:11px system-ui;position:fixed;top:0;right:8px}.chapter-summary{border-block:1px solid var(--line);margin:16px 0 12px;padding:14px 0}.chapter-summary h3{color:var(--primary);margin-bottom:4px;font-size:1rem}.chapter-summary p{color:var(--muted);max-width:64ch;font-size:.8125rem;line-height:1.6}.optical-stage{width:100%}.spectrum-panel{border-block:1px solid var(--line);margin:16px 0;padding:12px 0}.spectrum-panel h4{margin:0 0 8px;font-size:.875rem;font-weight:600}.spectrum-total{font-variant-numeric:tabular-nums;color:var(--ink);font-size:.75rem}.spectrum-chart{background:#071118;border-radius:6px;width:100%;height:auto;margin-top:12px;display:block}.spectrum-note{color:var(--muted);margin-top:8px;font-size:.75rem;line-height:1.6}.spectrum-panel details{font-size:.75rem}.spectrum-panel table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.spectrum-panel th,.spectrum-panel td{text-align:right;border-bottom:1px solid var(--line);padding:5px}.spectrum-panel th:first-child,.spectrum-panel td:first-child{text-align:left}#radius-value{color:var(--muted);text-align:right;font:.75rem ui-monospace,monospace;display:block}.optics-lesson{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:28px 0 36px;padding:20px}.lesson-heading h2{margin:0 0 8px;font-size:1.25rem}.lesson-heading p{color:var(--muted);font-size:.875rem}.lesson-layout{grid-template-columns:minmax(0,1fr) 230px;gap:20px;margin-top:20px;display:grid}.lesson-stage{aspect-ratio:10/7;background:#071118;border-radius:8px;min-height:260px;overflow:hidden}.lesson-stage canvas{touch-action:pan-y;width:100%;height:100%;aspect-ratio:auto!important}.lesson-view-buttons{gap:8px;margin-top:8px;display:flex}.lesson-view-buttons button{border:1px solid var(--line);border-radius:5px;min-height:44px;padding:6px 10px;font-size:.75rem}.lesson-view-buttons button[aria-pressed=true]{background:var(--selected);color:var(--primary)}.lesson-controls label{margin:0 0 18px;font-size:.8125rem;display:block}.lesson-controls input,.lesson-controls select{width:100%;margin-top:8px;display:block}.lesson-controls p{margin:12px 0;font-size:.8125rem;line-height:1.6}.lesson-controls .lesson-limits{color:var(--muted);font-size:.75rem}.lesson-open-lab{padding:10px 0;font-size:.875rem;display:inline-block}.lesson-spectrum{max-width:520px}.reading:has(.optics-lesson){max-width:1080px}@media (width<=700px){.optics-lesson{padding:12px}.lesson-layout{grid-template-columns:1fr}.lesson-stage{min-height:220px}.lesson-controls{grid-template-columns:1fr 1fr;gap:0 12px;display:grid}.lesson-controls p,.lesson-controls a{grid-column:1/-1}.lesson-controls label{min-width:0}}.lesson-stage{width:100%}.spectrum-bars rect{stroke:#c4d6e1;stroke-width:.35px;stroke-opacity:.6}.spectrum-polarization{color:var(--muted);margin:6px 0;font-size:.75rem}#lab-tool-properties output,#source-axis-value{color:var(--muted);margin:4px 0 12px;font-size:.75rem;display:block}.lesson-controls .lesson-check{align-items:center;gap:8px;display:flex}.lesson-controls .lesson-check input{width:20px;height:20px;margin:0}.spectrum-stokes{color:var(--muted);margin:4px 0;font:.6875rem ui-monospace,monospace}
