:root{--accent:#20313b;--ink:#17232b;--muted:#637079;--line:#e1e5e7;--surface:#f4f6f7;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:#fff;color-scheme:light}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,.stage:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button,a,input,select{touch-action:manipulation}[hidden]{display:none!important}
.viewer{width:100%;max-width:1280px;height:100vh;height:100svh;min-height:480px;margin:0 auto;padding:22px 28px 14px;display:flex;flex-direction:column;gap:12px;background:#fff;overflow:hidden}
.heading{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-shrink:0}.heading h1{font-size:23px;font-weight:600;letter-spacing:-.6px;margin:0}.heading p{font-size:12px;letter-spacing:.1px;color:var(--muted);margin:5px 0 0}.badge{font-size:13px;letter-spacing:1px;border:1px solid var(--line);border-radius:24px;padding:9px 13px;color:var(--muted)}
.workspace{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;isolation:isolate}.stage{position:relative;width:100%;height:100%;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none;outline-offset:-4px}.stage.dragging{cursor:grabbing}.stage img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.markers{position:absolute;inset:0;pointer-events:none}.marker{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;width:44px;height:44px;border:0;background:transparent;border-radius:50%;padding:0;pointer-events:auto;cursor:pointer;touch-action:manipulation}.marker span{display:grid;place-items:center;width:27px;height:27px;border:2px solid #fff;border-radius:50%;background:var(--accent);color:#fff;box-shadow:0 0 0 1px #20313b35,0 2px 6px #0002;font-size:14px;font-weight:500;transition:transform .15s}.marker:hover span,.marker[aria-expanded=true] span{transform:scale(1.14)}.marker[aria-expanded=true] span{background:#fff;color:var(--accent);border-color:var(--accent)}
.detail{position:absolute;left:10px;bottom:8px;z-index:3;width:min(310px,calc(100% - 20px));max-height:calc(100% - 16px);overflow:auto;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 12px 36px #15293414;cursor:auto}.detail h2{font-size:19px;line-height:1.25;letter-spacing:-.4px;margin:10px 20px 10px 0}.detail p{font-size:14px;line-height:1.55;color:#4a5860;margin:0}.detail a{display:inline-flex;align-items:center;min-height:44px;color:var(--accent);font-size:14px;font-weight:600;text-underline-offset:4px;margin-top:8px}.detail-kicker{font-size:9px;letter-spacing:1.5px;color:var(--muted)}.close{position:absolute;top:8px;right:8px;width:38px;height:38px;border:0;background:#fff;border-radius:50%;font-size:26px;color:#637079}
.components{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;flex-shrink:0}.component{display:inline-flex;align-items:center;gap:9px;min-height:42px;border:1px solid var(--line);border-radius:25px;padding:8px 15px;background:#fff;font-size:13px}.component .number{color:var(--muted);font-size:11px}.component:hover{background:var(--surface)}.component[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:var(--surface)}.mobile-components{display:none}.controls{display:flex;align-items:center;gap:10px;flex-shrink:0;max-width:780px;width:100%;margin:0 auto}.icon-button,.play{border:1px solid var(--line);background:#fff;border-radius:25px;height:44px;flex-shrink:0}.icon-button{width:44px;font-size:22px}.play{min-width:82px;padding:0 16px;font-size:13px}.icon-button:hover,.play:hover{background:var(--surface)}input[type=range]{min-width:0;flex:1;height:44px;margin:0 5px;accent-color:var(--accent);cursor:pointer}.footer{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--muted);font-size:11px;min-height:20px;flex-shrink:0}.footer output{font-variant-numeric:tabular-nums;white-space:nowrap}.footer button{background:#fff;border:0;color:var(--accent);text-decoration:underline;font-size:12px;min-height:30px}.no-script{font-size:12px}.viewer:fullscreen{max-width:none;height:100vh;min-height:0}
@media(max-width:640px){.viewer{padding:16px 12px 10px;gap:9px}.heading h1{font-size:20px}.heading p{font-size:11px}.badge{font-size:11px;padding:8px 10px}.components{display:none}.mobile-components{display:flex;gap:10px;align-items:center;font-size:11px;color:var(--muted);flex-shrink:0}.mobile-components select{min-width:0;flex:1;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:10px;min-height:44px;font-size:13px}.detail{left:0;bottom:0;width:100%;max-height:70%;padding:16px 20px;border-radius:14px}.detail p{font-size:13px}.detail h2{font-size:18px;margin-top:7px}.detail-kicker{font-size:9px}.controls{gap:6px}.play{min-width:68px;padding:0 12px}.full{display:none}.footer{font-size:10px}.footer #status{max-width:80%}.marker span{width:26px;height:26px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
