:root{color-scheme:light;--ink:#141414;--grey:#737373;--line:#d3d3d3}*{box-sizing:border-box}body{margin:0;background:#f6f6f6;color:var(--ink);font-family:Inter,"Noto Sans TC",Arial,sans-serif;font-size:16px;line-height:1.65}button,input,select{font:inherit}button,a,select,input{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:5px;padding:.45rem .8rem;min-height:44px}button:hover{background:#eaeaea}button:disabled{cursor:wait;opacity:.45}button[aria-pressed=true],.primary{background:var(--ink);color:#fff;border-color:var(--ink)}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #666;outline-offset:4px}header{display:flex;align-items:center;justify-content:space-between;padding:14px max(24px,calc((100vw - 1400px)/2));border-bottom:1px solid var(--line);background:#fff}header img{width:185px;height:auto;display:block}.back{font-size:14px;font-weight:600}main{max-width:1400px;margin:auto;padding:26px 24px 0}.heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.eyebrow{font-size:12px;font-weight:700;letter-spacing:.1em;margin:0;color:#6d6d6d}h1{font-size:clamp(24px,2.6vw,34px);line-height:1.3;margin:6px 0}.badge{font-size:14px;background:#e5e5e5;padding:5px 12px;white-space:nowrap;border-radius:3px}.intro{color:#626262;font-size:14px;margin:8px 0 22px;max-width:900px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px}.viewer{min-width:0;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}.stage{position:relative;background:#e6e6e6;height:clamp(380px,47vw,550px)}#canvas{width:100%;height:100%}#canvas canvas{display:block;width:100%;height:100%}.stage-top{position:absolute;left:18px;right:18px;top:14px;display:flex;justify-content:space-between;gap:10px;pointer-events:none}.stage-top span{background:#fff9;padding:3px 9px;font-size:12px;border-radius:3px}#loading{position:absolute;inset:0;display:grid;place-content:center;background:#e6e6e6;padding:24px;text-align:center}#loading[hidden]{display:none}.camera{position:absolute;bottom:16px;right:16px;display:flex;gap:4px}.camera button{min-height:38px;font-size:14px;padding:5px 10px}.transport{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:14px 18px 8px}.transport button{font-size:14px}.transport label{font-size:14px;display:flex;align-items:center;gap:6px}.transport output{margin-left:auto;font-size:14px;font-variant-numeric:tabular-nums;color:#606060}.loop input{width:17px;height:17px;accent-color:#141414}select{border:1px solid var(--line);border-radius:4px;background:#fff;min-height:40px;padding:5px 8px;color:var(--ink)}.timeline{display:flex;align-items:center;gap:12px;padding:0 18px;font-size:14px}.timeline input{width:100%;height:32px;accent-color:#141414;cursor:pointer}.phase-row{display:flex;gap:8px;flex-wrap:wrap;padding:8px 18px 0}.phase-row button{font-size:14px;padding:5px 12px}.cue{font-size:14px;background:#f1f1f1;padding:10px 14px;margin:12px 18px 18px;border-left:3px solid #444;min-height:43px}.panel{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.motions{padding:12px;border-bottom:1px solid var(--line);display:grid;gap:6px}.motions button{display:flex;gap:14px;align-items:center;text-align:left;padding:12px;border-color:transparent}.motions button[aria-pressed=false]{background:#f3f3f3}.number{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;opacity:.55}.motions strong{display:block;font-size:18px}.motions small{display:block;font-size:12px;opacity:.75;margin-top:2px}.selectors{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px;border-bottom:1px solid var(--line)}.selectors label{font-size:14px;display:grid;gap:4px;min-width:0}.selectors select{width:100%;font-size:14px}.description{padding:16px}.description h2{margin:3px 0 8px;font-size:24px;line-height:1.4}.description p{font-size:14px;color:#606060;margin:6px 0}.source{margin:16px 0 14px;padding-top:14px;border-top:1px solid var(--line)}.source span{font-size:12px;color:#6d6d6d;display:block}.source strong{font-size:14px;display:block;margin:3px 0}.source a{font-size:14px}.tutorial{display:block;font-weight:700;font-size:14px;border:1px solid var(--line);text-align:center;padding:8px}.description .fine{font-size:12px;margin-top:6px}.research{margin-top:16px;border:1px solid var(--line);background:#fff;border-radius:6px;padding:12px 18px}.research summary{cursor:pointer;font-size:14px;font-weight:600}.research p{font-size:14px;color:#555;max-width:960px}.table-wrap{overflow-x:auto;margin-top:12px}table{border-collapse:collapse;width:100%;font-size:14px;min-width:660px}th,td{text-align:left;vertical-align:top;padding:12px 10px;border-bottom:1px solid #ddd}th{background:#f0f0f0}td:first-child{width:27%}td:nth-child(2){width:28%}footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:24px 0;font-size:12px;color:#777}@media(max-width:900px){.workspace{grid-template-columns:minmax(0,1fr) 270px}.selectors{grid-template-columns:1fr}.stage{height:480px}}@media(max-width:700px){header{padding:12px 18px}header img{width:160px}main{padding:18px 14px 0}.heading{align-items:flex-start}.badge{font-size:12px}.workspace{display:flex;flex-direction:column}.panel{order:-1}.motions{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:8px}.motions button{display:block;padding:8px;text-align:center}.number{display:none}.motions strong{font-size:16px}.motions small{display:none}.selectors{grid-template-columns:1fr 1fr;padding:10px 12px}.description{display:none}.stage{height:420px}.transport{gap:8px;padding:12px 12px 6px}.transport output{font-size:12px}.timeline{padding:0 12px}.phase-row{padding:8px 12px 0}.phase-row button{font-size:12px}.cue{margin:12px}.stage-top{left:12px;right:12px}.intro{margin-bottom:14px}.camera{bottom:12px;right:12px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}

@media(max-width:700px){.panel{display:contents}.motions,.selectors{background:#fff;border:1px solid var(--line);border-radius:6px}.description{display:block;order:1;border:1px solid var(--line);border-radius:6px;background:#fff}.viewer{order:0}}

.orbit-hint{margin:0;padding:12px 18px 0;font-size:.875rem;line-height:1.6;color:#555}#canvas canvas:focus-visible{outline:3px solid #555;outline-offset:-4px}@media(max-width:700px){.orbit-hint{padding:12px 12px 0}}
