:root{color-scheme:light;--bg: #f6f5f0;--surface: #fffdf7;--line: #e0ddd2;--ink: #1d1f1a;--muted: #6e7067;--accent: #5b7fe5;--radius: 14px}body.dark{color-scheme:dark;--bg: #14150f;--surface: #1d1f19;--line: #33362c;--ink: #f2f0e6;--muted: #a5a89d;--accent: #6689ea}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;padding:0 24px 64px;background:var(--bg);color:var(--ink);font:15px/1.55 ui-sans-serif,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;transition:background .16s ease,color .16s ease}main{max-width:1080px;margin:0 auto}.masthead{max-width:1080px;margin:0 auto;padding:32px 0 24px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}h1{margin:0;font-size:26px;letter-spacing:-.02em}h2{margin:40px 0 4px;font-size:18px;letter-spacing:-.01em}.sub,.section-sub{margin:6px 0 0;color:var(--muted);font-size:13.5px}.credit{margin:10px 0 0;max-width:62ch;color:var(--muted);font-size:12.5px;line-height:1.5;padding-left:10px;border-left:2px solid var(--line)}.masthead-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.pill{font-size:13.5px;padding:7px 14px;border-radius:999px;border:1px solid var(--line);color:var(--ink);text-decoration:none;white-space:nowrap}.pill:hover{border-color:var(--accent)}.stage-row{display:grid;grid-template-columns:minmax(280px,1fr) minmax(280px,380px);gap:20px;align-items:start}@media(max-width:820px){.stage-row{grid-template-columns:1fr}}.stage{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;display:flex;flex-direction:column;align-items:center;gap:12px;min-height:340px;justify-content:center;touch-action:none}#hero{width:min(280px,60vw);height:min(280px,60vw)}.hint{margin:0;color:var(--muted);font-size:12.5px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:14px}.actions{display:flex;flex-wrap:wrap;gap:8px}button{font:inherit;font-size:13.5px;padding:7px 14px;border-radius:999px;border:1px solid transparent;background:var(--accent);color:#fff;cursor:pointer}button.ghost{background:transparent;border-color:var(--line);color:var(--ink)}button:hover{filter:brightness(1.06)}.field{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted)}select,input[type=range]{font:inherit;font-size:14px;color:var(--ink);accent-color:var(--accent)}select{padding:7px 9px;border-radius:9px;border:1px solid var(--line);background:var(--bg)}.toggles{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;font-size:13px}.toggles label{display:flex;align-items:center;gap:7px}.snippet{margin:0;padding:12px;border-radius:10px;background:var(--bg);border:1px solid var(--line);font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);overflow-x:auto;white-space:pre}.grid{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:12px}.cell{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 8px 9px;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;transition:border-color .12s ease,transform .12s ease}.cell:hover{border-color:var(--accent);transform:translateY(-1px)}.cell canvas{width:72px;height:72px}.cell span{font-size:12px;color:var(--muted)}code{font:12.5px ui-monospace,SFMono-Regular,Menlo,monospace}footer{max-width:1080px;margin:48px auto 0;padding-top:20px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}footer p{margin:0 0 6px;max-width:74ch;line-height:1.55}a{color:var(--accent)}.colors{margin:0;padding:12px;border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;gap:10px}.colors legend{padding:0 6px;font-size:12px;color:var(--muted)}.swatches{display:flex;flex-wrap:wrap;gap:7px}.swatch{width:26px;height:26px;padding:0;border-radius:8px;border:1px solid rgba(0,0,0,.14);cursor:pointer}.swatch[aria-pressed=true]{outline:2px solid var(--ink);outline-offset:2px}.color-inputs{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.color-inputs label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.color-inputs input[type=color]{width:42px;height:28px;padding:0;border:1px solid var(--line);border-radius:7px;background:none;cursor:pointer}.color-inputs button{margin-left:auto;padding:5px 12px;font-size:12.5px}
