:root,html[data-theme=light]{--ink: #1a2420;--muted: #4a5a52;--paper: #e8efe8;--paper-deep: #cfdbd2;--panel: rgba(255, 255, 255, .55);--surface: #ffffff;--accent: #0f6b5c;--accent-2: #c45c26;--line: #8fa396;--viz: #0f6b5c;--bg-spot-1: #b9d4c8;--bg-spot-2: #e0c9b2;--bg-base-start: #f3f7f3;--bg-base-end: #dfe8e1;--noise-opacity: .35;--btn-primary-fg: #f4fbf8;--font-display: "Fraunces", Georgia, serif;--font-body: "IBM Plex Sans", system-ui, sans-serif}html[data-theme=dark]{--ink: #e6f0ea;--muted: #9bb0a4;--paper: #15201b;--paper-deep: #0f1613;--panel: rgba(22, 34, 29, .78);--surface: #1e2b25;--accent: #3dbaa0;--accent-2: #e08a55;--line: #4d6358;--viz: #3dbaa0;--bg-spot-1: #1a3d34;--bg-spot-2: #3d2e22;--bg-base-start: #101814;--bg-base-end: #18241f;--noise-opacity: .22;--btn-primary-fg: #06241e}*{box-sizing:border-box}html,body{margin:0;min-height:100%;color:var(--ink);font-family:var(--font-body);background:radial-gradient(1200px 600px at 10% -10%,var(--bg-spot-1) 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,var(--bg-spot-2) 0%,transparent 50%),linear-gradient(165deg,var(--bg-base-start) 0%,var(--paper) 45%,var(--bg-base-end) 100%)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:var(--noise-opacity);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.35'/%3E%3C/svg%3E")}#app{position:relative;display:grid;grid-template-columns:minmax(220px,280px) 1fr;min-height:100vh}.sidebar{border-right:1px solid color-mix(in srgb,var(--line) 55%,transparent);background:color-mix(in srgb,var(--panel) 80%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:1rem .85rem 2rem;display:flex;flex-direction:column;gap:.75rem;max-height:100vh;position:sticky;top:0}.sidebar h1{font-family:var(--font-display);font-size:1.15rem;margin:0;letter-spacing:-.02em}.eyebrow{font-size:.75rem;color:var(--muted);margin:0 0 .35rem}.eyebrow a{color:var(--accent);text-decoration:none;font-weight:600}.eyebrow a:hover{text-decoration:underline}.sidebar-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.theme-toggle{flex-shrink:0;width:2.35rem;height:2.35rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);cursor:pointer;padding:0;transition:transform .2s ease,border-color .2s ease,background .2s ease}.theme-toggle:hover{transform:translateY(-1px);border-color:var(--accent)}.theme-toggle svg{width:1.15rem;height:1.15rem;display:block}.search{width:100%;border:1px solid var(--line);border-radius:6px;padding:.45rem .6rem;background:var(--surface);color:var(--ink);font:inherit}.tree{overflow:auto;flex:1;font-size:.9rem}.tree details{margin:.15rem 0}.tree summary{cursor:pointer;font-weight:600;color:var(--muted);list-style:none}.tree summary::-webkit-details-marker{display:none}.tree button.term{display:block;width:100%;text-align:left;border:0;background:transparent;padding:.28rem .35rem;border-radius:4px;cursor:pointer;font:inherit;color:var(--ink)}.tree button.term.term-home{font-weight:700;color:var(--accent);margin-bottom:.35rem}.home-cta{display:flex;flex-wrap:wrap;align-items:center;gap:.85rem 1.15rem;margin:1rem 0 1.5rem}.github-cta{display:inline-flex;align-items:center;gap:.85rem}.land-btn.github-btn{width:2.65rem;height:2.65rem;padding:0;flex-shrink:0}.github-logo{display:block;width:1.45rem;height:1.45rem}.github-stars{display:inline-flex;align-items:center;line-height:0;opacity:.92;transition:opacity .2s ease}.github-stars:hover{opacity:1}.github-stars img{display:block;height:20px;width:auto}.land-btn{display:inline-flex;align-items:center;justify-content:center;padding:.65rem 1.1rem;border-radius:8px;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--ink);text-decoration:none;font:inherit;font-weight:600;font-size:.95rem;cursor:pointer;transition:transform .2s ease,background .2s ease,border-color .2s ease}.land-btn:hover{transform:translateY(-1px);border-color:var(--accent)}.land-btn.primary{background:var(--accent);border-color:var(--accent);color:var(--btn-primary-fg)}.land-btn.primary:hover{filter:brightness(.92)}.main-home .hero-name{font-size:clamp(2.2rem,5vw,3.2rem)}.main-home .home-viz{height:200px}.related-links{list-style:none;margin:.75rem 0 0;padding:0;display:grid;gap:.85rem;max-width:40rem}.related-links li{display:grid;gap:.2rem}.related-links a{color:var(--accent);font-weight:600;text-decoration:none}.related-links a:hover{text-decoration:underline}.related-links .meta{color:var(--muted);font-size:.9rem;line-height:1.45}.main{padding:1.25rem 1.5rem 3rem;max-width:920px}.hero-name{font-family:var(--font-display);font-size:clamp(1.8rem,3vw,2.6rem);margin:.15rem 0 .35rem;letter-spacing:-.03em;line-height:1.1}.summary{font-size:1.05rem;color:var(--muted);margin:0 0 1.25rem;max-width:42rem}.section{margin:1.25rem 0}.section h2{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin:0 0 .4rem}.section p{margin:0;line-height:1.55;max-width:42rem}.stub-flag{display:inline-block;font-size:.75rem;color:var(--accent-2);margin-left:.5rem}.viz-wrap{margin:1rem 0 .5rem;height:160px;border-bottom:1px solid color-mix(in srgb,var(--line) 50%,transparent)}.viz-wrap canvas{width:100%;height:100%;display:block}.controls{display:grid;gap:.65rem;margin:1rem 0}.controls:has([data-param^=g]){grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.45rem .85rem}.control{display:grid;grid-template-columns:7.5rem 1fr 6rem;gap:.5rem;align-items:center;font-size:.9rem}.controls:has([data-param^=g]) .control{grid-template-columns:4.2rem 1fr 3.25rem;font-size:.82rem}.control .param-value{white-space:nowrap;text-align:right;justify-self:end;font-variant-numeric:tabular-nums;min-width:0}.control input[type=range]{width:100%;accent-color:var(--accent)}.transport{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:1.25rem 0}.transport button,.transport select,.panel button{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:.4rem .75rem;cursor:pointer}.transport button.primary{background:var(--accent);border-color:var(--accent);color:var(--btn-primary-fg)}.fx-toggle{display:inline-flex;align-items:center;gap:.55rem;padding:.35rem .7rem .35rem .45rem!important;border-radius:999px!important;background:color-mix(in srgb,var(--surface) 78%,var(--paper-deep))!important;transition:background .25s ease,border-color .25s ease,box-shadow .25s ease}.fx-toggle.is-on{border-color:color-mix(in srgb,#1a9a4a 55%,var(--line))!important;box-shadow:0 0 0 1px color-mix(in srgb,#1a9a4a 25%,transparent)}.fx-toggle.is-off{border-color:color-mix(in srgb,#c62828 50%,var(--line))!important;box-shadow:0 0 0 1px color-mix(in srgb,#c62828 20%,transparent)}.fx-lamp{width:.7rem;height:.7rem;border-radius:50%;flex-shrink:0;transition:background .25s ease,box-shadow .25s ease,transform .25s ease}.fx-toggle.is-on .fx-lamp{background:radial-gradient(circle at 35% 30%,#b6ffce,#22c55e 45%,#15803d);box-shadow:0 0 0 2px color-mix(in srgb,#22c55e 35%,transparent),0 0 10px 2px color-mix(in srgb,#22c55e 55%,transparent);animation:fx-pulse-green 1.8s ease-in-out infinite}.fx-toggle.is-off .fx-lamp{background:radial-gradient(circle at 35% 30%,#ffb4b4,#ef4444 45%,#b91c1c);box-shadow:0 0 0 2px color-mix(in srgb,#ef4444 30%,transparent),0 0 8px 1px color-mix(in srgb,#ef4444 45%,transparent);animation:fx-pulse-red 1.8s ease-in-out infinite}.fx-switch{position:relative;width:2.35rem;height:1.25rem;border-radius:999px;background:#c5d0c8;flex-shrink:0;transition:background .25s ease}.fx-toggle.is-on .fx-switch{background:color-mix(in srgb,#22c55e 55%,#9cb8a8)}.fx-toggle.is-off .fx-switch{background:color-mix(in srgb,#ef4444 45%,#b0a8a8)}.fx-thumb{position:absolute;top:.15rem;left:.15rem;width:.95rem;height:.95rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .28s cubic-bezier(.22,1,.36,1)}.fx-toggle.is-on .fx-thumb{transform:translate(1.05rem)}.fx-toggle.is-off .fx-thumb{transform:translate(0)}.fx-copy{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15;min-width:4.2rem}.fx-title{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.fx-state{font-size:.88rem;font-weight:600;color:var(--ink)}.fx-toggle.is-on .fx-state{color:#15803d}.fx-toggle.is-off .fx-state{color:#b91c1c}@keyframes fx-pulse-green{0%,to{box-shadow:0 0 0 2px color-mix(in srgb,#22c55e 35%,transparent),0 0 8px 1px color-mix(in srgb,#22c55e 40%,transparent)}50%{box-shadow:0 0 0 2px color-mix(in srgb,#22c55e 45%,transparent),0 0 14px 3px color-mix(in srgb,#22c55e 65%,transparent)}}@keyframes fx-pulse-red{0%,to{box-shadow:0 0 0 2px color-mix(in srgb,#ef4444 28%,transparent),0 0 6px 1px color-mix(in srgb,#ef4444 35%,transparent)}50%{box-shadow:0 0 0 2px color-mix(in srgb,#ef4444 40%,transparent),0 0 12px 2px color-mix(in srgb,#ef4444 55%,transparent)}}@media(prefers-reduced-motion:reduce){.fx-toggle.is-on .fx-lamp,.fx-toggle.is-off .fx-lamp{animation:none}.fx-thumb{transition:none}}.export pre{background:color-mix(in srgb,var(--paper-deep) 70%,#000);color:var(--ink);border:1px solid color-mix(in srgb,var(--line) 40%,transparent);padding:.85rem 1rem;border-radius:8px;overflow:auto;font-size:.82rem;line-height:1.45}.panel{margin-top:1rem;padding:.85rem 0;border-top:1px solid color-mix(in srgb,var(--line) 45%,transparent)}.sample-list{list-style:none;padding:0;margin:.5rem 0 0}.sample-list li{display:grid;gap:.15rem;padding:.55rem 0;border-bottom:1px solid color-mix(in srgb,var(--line) 35%,transparent);font-size:.9rem}.sample-list .meta{color:var(--muted);font-size:.8rem}.about-line{margin-top:2rem;font-size:.8rem;color:var(--muted)}@media(max-width:800px){#app{grid-template-columns:1fr}.sidebar{position:relative;max-height:none;border-right:0;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}.control{grid-template-columns:1fr}}
