.phy-page h2{font-size:var(--step-1);font-weight:600;margin:0 0 10px}.phy-head h1{font-size:var(--step-3);line-height:1.1;margin:0}.phy-chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}.phy-card-topic,.phy-chips span{font-size:.8rem;font-weight:500;padding:3px 10px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}.phy-aim{margin:14px 0 22px;font-size:var(--step-0);max-width:70ch}.phy-loading{padding:60px 0;text-align:center;color:var(--muted)}.phy-book-stat{margin:0 0 14px;color:var(--muted);font-size:var(--step--1)}.phy-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.phy-tabs button{flex:1 0 auto;display:grid;grid-gap:2px;gap:2px;padding:10px 18px;border-radius:14px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-weight:500;cursor:pointer}.phy-tabs button small{color:var(--muted);font-size:.75rem;font-weight:400}.phy-tabs button.is-on{background:#0084ff;border-color:#0084ff;color:#fff}.phy-tabs button.is-on small{color:#e3f0ff}.phy-book-blurb{margin:16px 0;color:var(--muted)}.phy-book-blurb strong{color:var(--ink);font-weight:500}.phy-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:16px;gap:16px;margin:0;padding:0;list-style:none}.phy-cards li>*{display:grid;grid-gap:8px;gap:8px;justify-items:start;align-content:start;height:100%;padding:18px;border-radius:18px;border:1px solid var(--line);background:var(--surface);color:var(--ink);text-decoration:none}.phy-cards a:hover{border-color:#0084ff;transform:translateY(-2px)}.phy-cards a{transition:transform .15s,border-color .15s}.phy-cards strong{font-weight:600;font-size:1.1rem;line-height:1.25}.phy-card-icon{font-size:2rem;line-height:1}.phy-card-aim{color:var(--muted);font-size:.92rem;line-height:1.4}.phy-card-foot{display:flex;gap:12px;align-items:center;margin-top:auto;font-size:.82rem;color:var(--muted)}.phy-card-stars{color:#ffb300;letter-spacing:2px}.phy-card-stars i,.phy-stars span{font-style:normal;color:var(--line)}.phy-cards .is-soon>*{background:transparent;border-style:dashed}.phy-cards .is-soon .phy-card-icon{filter:grayscale(1);opacity:.6}.phy-cards .is-soon strong{color:var(--muted)}.phy-how{margin-top:40px}.phy-how ol{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px;gap:14px;padding:0;margin:0;list-style:none;counter-reset:how}.phy-how li{counter-increment:how;padding:16px;border-radius:16px;background:var(--surface);border:1px solid var(--line);color:var(--muted);font-size:.95rem}.phy-how li strong{display:block;color:var(--ink);font-weight:600;margin-bottom:4px}.phy-how li:before{content:counter(how);display:inline-grid;place-items:center;width:26px;height:26px;margin-bottom:8px;border-radius:50%;background:#ffb300;color:#fff;font-weight:600;font-size:.85rem}.play-feature.is-physics .play-feature-icon{background:#0084ff}.phy{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:22px;gap:22px}.phy-intro{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);grid-gap:16px;gap:16px}.phy-analogy,.phy-need,.phy-outcome,.phy-record,.phy-results{padding:18px 20px;border-radius:18px;background:var(--surface);border:1px solid var(--line)}.phy-analogy{border-left:4px solid #ffb300}.phy-analogy p,.phy-need ul{margin:0;line-height:1.55}.phy-analogy strong{font-weight:600;color:#ffcf5a}.phy-need ul{padding-left:1.1em;color:var(--muted);font-size:.95rem}.phy-work{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);grid-gap:16px;gap:16px;align-items:start}.phy-bench{position:relative;height:clamp(320px,52vw,480px);border-radius:18px;overflow:hidden;border:1px solid var(--line);background:radial-gradient(120% 90% at 70% 0,#1b2d55 0,#0b1020 70%);touch-action:none}.phy-bench canvas{display:block;width:100%;height:100%;cursor:-webkit-grab;cursor:grab}.phy-bench canvas:active{cursor:-webkit-grabbing;cursor:grabbing}.phy-bench-hint{position:absolute;left:12px;bottom:10px;font-size:.75rem;color:#a5aec6;pointer-events:none}.phy-bench-fail{display:grid;place-items:center;height:100%;margin:0;padding:24px;text-align:center;color:var(--muted)}.phy-controls{display:grid;grid-gap:12px;gap:12px;margin-top:12px;padding:14px 16px;border-radius:16px;background:var(--surface);border:1px solid var(--line)}.phy-row{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center}.phy-btn{font:inherit;font-size:.95rem;font-weight:500;padding:.5em 1em;border-radius:999px;border:1.5px solid var(--line);background:transparent;color:var(--ink);cursor:pointer}.phy-btn.is-go,.phy-btn:hover:not(:disabled){border-color:#0084ff}.phy-btn.is-go{background:#0084ff;color:#fff}.phy-btn.is-stop{background:#e5332a;border-color:#e5332a;color:#fff}.phy-btn.is-on{border-color:#ffb300;color:#ffcf5a}.phy-btn:disabled{opacity:.4;cursor:default}.phy-slider{display:grid;grid-gap:6px;gap:6px}.phy-count strong,.phy-slider strong{font-weight:600;color:#ffcf5a}.phy-slider input{width:100%;accent-color:#ffb300;height:28px}.phy-check,.phy-count{font-size:.92rem;color:var(--muted)}.phy-check input{accent-color:#ffb300}.phy-steps{margin:0 0 14px;padding:16px 18px 16px 2.4em;border-radius:16px;background:var(--surface);border:1px solid var(--line);line-height:1.45;font-size:.97rem}.phy-steps li+li{margin-top:7px}.phy-steps li::marker{color:#ffb300;font-weight:600}.phy-insts{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.phy-inst{flex:1 1 150px;max-width:230px;margin:0}.phy-inst.is-wide{flex-basis:100%;max-width:420px}.phy-inst.is-digital{max-width:260px}.phy-inst figcaption{font-size:.82rem;font-weight:500;color:var(--muted);margin-bottom:6px}.phy-inst svg{display:block;width:100%;height:auto}.phy-inst-note{margin:6px 0 0;font-size:.78rem;color:var(--muted);line-height:1.35}.phy-lcd{display:flex;align-items:baseline;justify-content:flex-end;gap:8px;padding:12px 14px;margin-bottom:8px;border-radius:10px;background:#0c1a12;border:2px solid #2b3550;color:#6dff9c;font-family:var(--font-mono);font-size:1.7rem;white-space:pre}.phy-lcd small{font-size:.9rem;opacity:.8}.phy-stack{display:grid;grid-gap:10px;gap:10px;flex:1 1 180px}.phy-record{display:grid;grid-template-columns:64px minmax(0,1fr);grid-gap:16px;gap:16px;align-items:center;border-color:#0084ff}.phy-record.is-good{border-color:#1f9d55}.phy-record.is-bad{border-color:#ffb300}.phy-duck{position:relative;width:64px;aspect-ratio:300/470}.phy-tip{margin:0 0 12px;font-size:1rem;line-height:1.4}.phy-record-row{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end}.phy-set{padding:.55em 0;color:var(--muted)}.phy-set strong{color:var(--ink);font-weight:600}.phy-record-row label{display:grid;grid-gap:4px;gap:4px;font-size:.82rem;color:var(--muted)}.phy-record-row input{width:9.5em;font:inherit;font-size:1.05rem;padding:.5em .7em;border-radius:10px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink)}.phy-record-row input:focus{outline:2px solid #0084ff;outline-offset:1px}.phy-table-wrap{overflow-x:auto}.phy-table{width:100%;border-collapse:collapse;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.phy-table td,.phy-table th{padding:8px 10px;border:1px solid var(--line);text-align:center}.phy-table th{font-weight:500;font-size:.9rem;background:var(--paper)}.phy-table th small{color:var(--muted);font-weight:400}.phy-key .is-read,.phy-table td.is-read{color:#6dd0ff}.phy-key .is-calc,.phy-table td.is-calc{color:#ffcf5a}.phy-empty{padding:18px!important}.phy-empty,.phy-x{color:var(--muted)}.phy-x{border:0;background:none;font-size:1.2rem;cursor:pointer}.phy-x:hover{color:#ff6b5e}.phy-key{display:flex;flex-wrap:wrap;gap:6px 18px;margin:10px 0 0;font-size:.82rem;color:var(--muted)}.phy-key span:before{content:"● "}.phy-key .phy-stat{margin-left:auto}.phy-key .phy-stat:before{content:""}.phy-ref{margin-top:16px}.phy-ref h3{margin:0 0 8px;font-size:1rem;font-weight:600}.phy-ref ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.phy-ref li{padding:4px 12px;border-radius:999px;border:1px solid var(--line);font-size:.9rem;color:var(--muted)}.phy-ref li strong{color:var(--ink);font-weight:600}.phy-ref p{margin:10px 0 0;color:var(--muted)}.phy-graph{margin:0}.phy-graph svg{display:block;width:100%;max-width:640px;height:auto;font-family:var(--font-body)}.phy-graph figcaption{margin-top:8px;color:var(--muted);font-size:.92rem}.phy-graph figcaption strong{color:var(--ink);font-weight:600}.phy-outcome{border-color:#ffb300;text-align:center}.phy-outcome h2{font-size:var(--step-2)}.phy-outcome p{margin:8px auto 0;max-width:64ch;color:var(--muted);line-height:1.5}.phy-stars{font-size:2.4rem;letter-spacing:6px;color:#ffb300;margin:0!important}.phy-working{font-family:var(--font-mono);font-size:.85rem}.phy-more{margin-top:36px}.phy-more ul{display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none}.phy-more a{display:block;padding:8px 14px;border-radius:999px;border:1px solid var(--line);color:var(--ink);text-decoration:none;font-size:.95rem}.phy-more a:hover{border-color:#0084ff}@media (max-width:860px){.phy-intro,.phy-work{grid-template-columns:minmax(0,1fr)}.phy-record{grid-template-columns:44px minmax(0,1fr);gap:12px}.phy-duck{width:44px}.phy-record-row input{width:100%}.phy-record-row .btn,.phy-record-row label{flex:1 1 100%}.phy-key .phy-stat{margin-left:0;flex-basis:100%}}body:has(.phy) .guide,body:has(.phy) .guide-tab{display:none}.phy-inst.is-dial{flex-basis:100%;max-width:360px}