@font-face{font-family:STIX Two Text;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/stix-two-text-latin-400-normal-Dm29J5Fl.woff2) format("woff2"),url(/assets/stix-two-text-latin-400-normal-rLRKR-Xb.woff) format("woff")}@font-face{font-family:STIX Two Text;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/stix-two-text-latin-400-italic-BLib6pG4.woff2) format("woff2"),url(/assets/stix-two-text-latin-400-italic-CPbPgQcn.woff) format("woff")}:root{font-family:Songti SC,SimSun,"Noto Serif CJK SC",serif;color:#292a28;background:#f7f6f0;font-synthesis:none;--paper:#f7f6f0;--ink:#292a28;--muted:#73796f;--line:#bfc3b8;--fine:#daddd1;--soft:#eeeee5;--accent:#347fa9;--shadow:rgba(37,42,33,.12);color-scheme:light}:root[data-theme=dark]{color:#e4e3d9;background:#191d20;--paper:#191d20;--ink:#e4e3d9;--muted:#a0aaa8;--line:#667277;--fine:#353f44;--soft:#262e32;--accent:#85b9d7;--shadow:rgba(0,0,0,.3);color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-width:320px;overflow:hidden}button,input{font:inherit}button{color:inherit;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button:disabled{opacity:.45;cursor:default}button{transition:background-color .15s,border-color .15s,opacity .15s}button:hover{background:var(--soft)}.app-shell{height:100dvh;min-height:500px;padding:22px 28px 16px 31px;display:grid;grid-template-rows:70px minmax(0,1fr) 72px;gap:0;transform:translate(var(--shake-x,0px),var(--shake-y,0px))}.app-header{display:flex;justify-content:space-between;align-items:flex-start}.wordmark h1{margin:0;font-size:35px;line-height:1.12;letter-spacing:3px;font-weight:400}.wordmark p{margin:5px 0 0;font-size:16px;letter-spacing:2px}.toolbar{display:flex;gap:17px;padding-top:4px;align-items:center}.toolbar button{height:42px;min-width:78px;border:1px solid var(--muted);border-radius:5px;display:inline-flex;justify-content:center;align-items:center;gap:8px;font-size:16px;letter-spacing:2px;padding:0 13px;position:relative}.toolbar .theme-button{min-width:52px;width:52px;padding:0}.toolbar button[aria-pressed=true]{background:var(--soft)}.discovery-dot{position:absolute;width:4px;height:4px;border-radius:50%;background:var(--accent);top:7px;right:7px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 254px;gap:22px;min-height:0}.stage{position:relative;min-width:0;min-height:0;border:1px dashed var(--fine);overflow:hidden}.physics-canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.physics-canvas:active{cursor:grabbing}.canvas-zoom{position:absolute;right:14px;bottom:13px;z-index:4;display:flex;align-items:center;height:32px;border:1px solid var(--line);border-radius:4px;background:var(--paper);overflow:hidden}.canvas-zoom button{width:31px;height:30px;border:0;display:flex;align-items:center;justify-content:center;padding:0}.canvas-zoom .zoom-value{width:46px;font:11px system-ui,sans-serif;font-variant-numeric:tabular-nums;color:var(--muted);border-left:1px solid var(--fine);border-right:1px solid var(--fine)}.sidebar{overflow-y:auto;scrollbar-width:thin;padding-bottom:15px}.symbol-palette{border:1px solid var(--line);border-radius:4px;padding:15px 16px 16px}.symbol-palette h2{font-weight:400;font-size:18px;line-height:1.2;margin:0;padding-bottom:12px;border-bottom:1px solid var(--line)}.symbol-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:6px}.symbol{border:0;min-width:0;height:61px;padding:0;font-family:STIX Two Text,Times New Roman,serif;font-size:31px;font-style:italic;line-height:1;border-radius:4px;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}.symbol:active{cursor:grabbing}.symbol-palette p{font-size:15px;letter-spacing:.8px;line-height:1.5;margin:17px 0 0;white-space:nowrap}.app-footer{display:flex;align-items:center;border-top:1px solid var(--line);margin-top:25px;font-size:15px;letter-spacing:1px;padding-top:8px;gap:25px}.instructions-button{border:0;display:flex;align-items:center;gap:12px;padding:4px 0}.instructions-button svg{opacity:0;transition:opacity .15s}.instructions-button:hover svg{opacity:.7}.keyboard-hint{color:var(--muted);font-family:system-ui,sans-serif;font-size:11px;letter-spacing:0}kbd{font:inherit;border:1px solid var(--fine);padding:1px 5px;border-radius:3px;margin-right:4px}.clear-button{margin-left:auto;display:flex;align-items:center;gap:16px;border:0;padding:3px 0 3px 10px;font-size:16px;letter-spacing:2px}.drag-ghost{position:fixed;left:0;top:0;z-index:30;pointer-events:none;display:none;font-family:STIX Two Text,serif;font-size:43px;font-style:italic;opacity:.75;color:var(--ink)}.onboarding{position:absolute;left:34px;bottom:70px;max-width:300px;background:var(--paper);padding:18px 22px 15px;border-left:1px solid var(--line);box-shadow:0 0 34px 15px var(--paper)}.onboarding h2{font-size:21px;letter-spacing:1px;margin:0 0 12px;font-weight:400}.onboarding p{font-size:16px;line-height:1.9;color:var(--muted);margin:0 0 9px}.onboarding i{font-family:STIX Two Text,serif;font-size:24px;color:var(--ink)}.text-button{font-size:13px;border:0;border-bottom:1px solid var(--line);padding:4px 0;letter-spacing:.5px}.pause-indicator{position:absolute;top:13px;left:50%;transform:translate(-50%);font-size:12px;color:var(--muted);background:var(--paper);padding:6px 10px;white-space:nowrap;display:flex;align-items:center;gap:7px;pointer-events:none}.pause-indicator span{height:5px;width:5px;background:var(--muted);border-radius:50%}.toast{position:absolute;bottom:42px;left:50%;transform:translate(-50%);font-size:14px;background:var(--paper);border:1px solid var(--line);box-shadow:0 4px 25px var(--shadow);padding:12px 20px;max-width:85%;text-align:center;line-height:1.7;pointer-events:none;animation:appear .2s ease-out}.screen-reader-objects{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap}.inspector{position:relative;margin-top:18px;border-top:1px solid var(--line);padding:16px 4px 0}.inspector-heading{display:flex;align-items:center;justify-content:space-between;gap:9px;font-size:14px;color:var(--muted);padding-right:21px}.inspector-close{position:absolute;right:0;top:15px;color:var(--muted)}.math{font-family:STIX Two Text,Times New Roman,serif}.selected-expression{font-size:30px;line-height:1.2;color:var(--ink);max-width:150px;overflow-wrap:anywhere}.inspector-hint{font-size:13px;line-height:1.8;color:var(--muted);margin:13px 0}.object-actions{display:flex;gap:7px;margin:12px 0 18px}.object-actions button{font-size:12px;padding:6px;display:flex;gap:4px;align-items:center;border:1px solid var(--fine);border-radius:3px;white-space:nowrap}.object-actions button.active,.segmented button.active{background:var(--soft);border-color:var(--muted)}.range-control{display:block;margin:15px 0;font-family:system-ui,Microsoft YaHei,sans-serif;font-size:11px}.range-control>span{display:flex;justify-content:space-between;color:var(--muted);margin-bottom:8px}.range-control output{font-variant-numeric:tabular-nums;color:var(--ink)}.range-control input{display:block;width:100%;height:15px;margin:0;accent-color:var(--muted);cursor:ew-resize}.polarity{width:100%;padding:8px 5px;border:0;border-bottom:1px solid var(--fine);font-family:system-ui,Microsoft YaHei,sans-serif;font-size:13px;text-align:left}.polarity>span{float:right;font-size:10px;color:var(--muted);margin-top:3px}.segmented{display:flex;gap:0;margin:14px 0}.segmented button{width:50%;border:1px solid var(--fine);font-size:12px;padding:6px}.segmented button+button{border-left:0}.quiet-note{font-size:12px;color:var(--muted);line-height:1.8}.fraction{display:inline-flex;flex-direction:column;text-align:center;vertical-align:middle;line-height:1.12;font-size:.87em;padding:0 3px}.fraction>span:first-child{border-bottom:1px solid currentColor;padding:0 3px 3px}.fraction>span:last-child{padding:3px 3px 0}.math sup{font-size:.58em;line-height:0}.math sub{font-size:.52em}.notebook{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:5px;padding:0;width:min(760px,calc(100vw - 40px));max-height:85dvh;box-shadow:0 18px 80px var(--shadow)}.notebook::backdrop{background:#1d221e4d;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.notebook-inner{padding:28px 32px}.notebook header{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:20px}.notebook h2{font-size:28px;margin:0 0 8px;font-weight:400;letter-spacing:2px}.notebook header p{font-size:12px;margin:0;color:var(--muted)}.icon-button{border:0;padding:6px;display:inline-flex;align-items:center;justify-content:center;border-radius:3px}.recipe{display:grid;grid-template-columns:27px minmax(0,1fr) 104px;gap:16px;padding:24px 0;border-bottom:1px solid var(--fine);align-items:start}.recipe-number{font-size:11px;color:var(--muted);padding-top:5px;font-family:system-ui,sans-serif}.recipe h3{font-size:18px;font-weight:400;margin:0 0 9px}.recipe p{font-size:13px;line-height:1.85;color:var(--muted);margin:5px 0 9px}.recipe-mark{font-size:29px;align-self:center;color:var(--faint,var(--muted));text-align:center}.recipe-formula{font:italic 21px STIX Two Text,serif;margin:7px 0 10px}.notebook-foot{font-size:12px;color:var(--muted);margin:22px 0 0;line-height:1.8}.help-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:transparent;align-items:center;justify-content:center;padding:20px;margin:0;border:0;width:100%;height:100%;max-width:none;max-height:none;color:var(--ink)}.help-backdrop[open]{display:flex}.help-backdrop::backdrop{background:#1d221e4d;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.help-panel{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:5px;max-width:550px;max-height:90dvh;overflow:auto;padding:32px 38px;box-shadow:0 18px 80px var(--shadow)}.help-close{position:absolute;right:15px;top:15px}.help-panel h2{font-size:26px;font-weight:400;margin:0 0 18px}.help-panel>p{font-size:14px;line-height:1.8}.help-panel dl{display:grid;grid-template-columns:85px minmax(0,1fr);gap:17px 14px;font-size:13px;line-height:1.8;margin:28px 0}.help-panel dt{color:var(--ink)}.help-panel dd{margin:0;color:var(--muted)}.help-panel i{font-family:STIX Two Text,serif}.reference-button{border:1px solid var(--muted);border-radius:3px;font-size:14px;padding:11px 20px;margin-top:12px}.equation-inspector{display:block}.equation-inspector .selected-expression{display:block;font-size:19px;max-width:100%;margin-bottom:10px}.vacuum-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;pointer-events:none;overflow:hidden}.vacuum-piece{position:fixed;transform-origin:center;will-change:transform,opacity;pointer-events:none}.vacuum-mask{position:fixed;left:0;top:0;background:#080c0e;border-radius:50%;pointer-events:none;will-change:transform,width,height}.vacuum-active .physics-canvas{pointer-events:none}.vacuum-active .sidebar{overflow:hidden}.vacuum-active .wordmark,.vacuum-active .toolbar,.vacuum-active .sidebar,.vacuum-active .app-footer,.vacuum-active .toast,.vacuum-active .onboarding,.vacuum-active .pause-indicator{visibility:hidden}.vacuum-finished .physics-canvas{pointer-events:auto}.restart-after-vacuum{position:absolute;left:50%;bottom:45px;transform:translate(-50%);font-size:13px;letter-spacing:1px;border:0;color:var(--muted);padding:12px;animation:ending-hint 2.5s both}@keyframes ending-hint{0%,65%{opacity:0}to{opacity:.75}}@keyframes appear{0%{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}@media(min-width:1700px){.workspace{grid-template-columns:minmax(0,1fr) 270px}.symbol{height:65px;font-size:33px}}@media(max-width:1100px){.app-shell{padding:18px 20px 12px;grid-template-rows:67px minmax(0,1fr) 51px}.workspace{grid-template-columns:minmax(0,1fr) 205px;gap:16px}.symbol-palette{padding:12px}.symbol{height:49px;font-size:28px}.symbol-palette p{font-size:12px;letter-spacing:0}.wordmark h1{font-size:31px}.wordmark p{font-size:13px}.toolbar{gap:10px}.toolbar button{min-width:65px;height:38px;font-size:14px}.toolbar .theme-button{width:43px;min-width:43px}.selected-expression{max-width:115px;font-size:25px}.object-actions{gap:4px}.object-actions button{font-size:11px;padding:5px}.keyboard-hint{display:none}.onboarding{left:20px;bottom:58px;padding:14px 17px}.onboarding h2{font-size:19px}}@media(max-width:700px){body{overflow:hidden}.app-shell{min-height:480px;padding:14px 8px 8px;grid-template-rows:63px minmax(0,1fr) 43px}.workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;gap:10px}.wordmark h1{font-size:26px;letter-spacing:1px}.wordmark p{font-size:11px;letter-spacing:1px}.toolbar{gap:6px;padding-top:1px}.toolbar button{min-width:43px;height:34px;padding:0 8px;font-size:12px;letter-spacing:0;gap:3px}.toolbar button:first-child svg{display:none}.toolbar .theme-button{width:34px;min-width:34px}.sidebar{position:relative;overflow:visible;padding:0}.symbol-palette{position:relative;padding:10px 12px 8px}.symbol-palette h2{font-size:14px;padding:0;border:0;line-height:20px}.symbol-palette p{position:absolute;right:12px;top:10px;font-size:11px;line-height:20px;margin:0}.symbol-grid{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:6px}.symbol{height:42px;font-size:26px}.canvas-zoom{right:10px;top:10px;bottom:auto}.pause-indicator{left:12px;transform:none;max-width:calc(100% - 140px);white-space:normal;font-size:10px;line-height:1.6;top:10px;gap:4px;padding:4px}.app-footer{font-size:11px;letter-spacing:0;gap:8px;margin-top:16px}.instructions-button{gap:5px}.instructions-button svg{display:none}.clear-button{font-size:12px;gap:7px;letter-spacing:0}.clear-button svg{width:19px}.onboarding{left:12px;bottom:35px;padding:12px;max-width:calc(100% - 24px)}.onboarding h2{font-size:16px}.onboarding p{font-size:12px;line-height:1.8}.onboarding i{font-size:19px}.onboarding .text-button{font-size:11px}.inspector{position:absolute;left:0;right:0;bottom:calc(100% + 10px);z-index:6;margin:0;padding:14px 18px 6px;max-height:240px;overflow-y:auto;overscroll-behavior:contain;background:var(--paper);border:1px solid var(--line);border-radius:4px;box-shadow:0 -6px 24px var(--shadow)}.inspector-close{right:12px;top:12px}.inspector-heading{font-size:13px;padding-right:25px}.selected-expression{max-width:70%}.inspector-hint{font-size:12px;margin:8px 0}.object-actions{gap:8px;margin:8px 0 12px}.object-actions button{font-size:12px;padding:8px 12px}.range-control{font-size:11px;margin:12px 0}.polarity{font-size:12px}.recipe{grid-template-columns:20px minmax(0,1fr);gap:10px}.recipe-mark{display:none}.notebook-inner{padding:22px 20px}.notebook h2{font-size:24px}.notebook header{padding-bottom:15px}.help-panel{padding:28px 23px}.help-panel h2{font-size:23px}.help-panel dl{grid-template-columns:65px minmax(0,1fr);gap:14px 10px;font-size:12px}.toast{font-size:12px;padding:9px 13px}.quiet-note{font-size:11px}}@media(min-width:520px)and (max-width:700px),(max-width:700px)and (max-height:640px){.symbol-grid{grid-template-columns:repeat(10,minmax(0,1fr))}.symbol{height:38px;font-size:23px}.symbol-palette{padding-left:5px;padding-right:5px}}@media(prefers-reduced-motion:reduce){button,.toast{animation:none;transition:none}}
