@font-face{font-family:Outfit;src:url('/assets/fonts/outfit.ttf') format('truetype');font-weight:100 900;font-display:swap}
:root{color-scheme:light;--bg:#faf9fc;--surface:#fff;--ink:#2b2333;--muted:#62586d;--accent:#6540ad;--on-accent:#fff;--tint:#ece7f5;--line:#d7cfdf;--field:#897a99;--error:#a32336;--focus:#6540ad;--radius:.375rem;--gap:1.5rem;--shadow:0 14px 35px #2b233321;font-size:100%;accent-color:var(--accent)}
:root[data-theme=dark]{color-scheme:dark;--bg:#18131f;--surface:#211a2a;--ink:#f5effb;--muted:#c5b6d6;--accent:#c4a2ff;--on-accent:#21112f;--tint:#30233e;--line:#554464;--field:#9d88af;--error:#ffadb7;--focus:#dcc3ff;--shadow:0 14px 35px #0005}
:root[data-contrast=high]{--bg:#fff;--surface:#fff;--ink:#000;--muted:#000;--accent:#502180;--on-accent:#fff;--tint:#fff;--line:#000;--field:#000;--error:#990019;--focus:#502180}
:root[data-theme=dark][data-contrast=high]{--bg:#000;--surface:#000;--ink:#fff;--muted:#fff;--accent:#ffe66b;--on-accent:#000;--tint:#111;--line:#fff;--field:#fff;--error:#ffc0cb;--focus:#ffe66b}
:root[data-text-size="125"]{font-size:125%}:root[data-text-size="150"]{font-size:150%}:root[data-text-size="200"]{font-size:200%}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Outfit,Arial,sans-serif;font-size:1.0625rem;line-height:1.55;overflow-wrap:break-word}::selection{background:var(--accent);color:var(--on-accent)}html{scrollbar-color:var(--field) var(--bg)}a{color:var(--accent);text-underline-offset:.2em;text-decoration-thickness:.075em}a:hover{text-decoration-thickness:.13em}button,input,select,summary{font:inherit}input{caret-color:var(--accent)}button,a,summary,input,select{-webkit-tap-highlight-color:transparent}button,summary,select,label.choice{cursor:pointer}button,input,select{max-width:100%}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:2.75rem;padding:.65rem 1rem;border:1px solid var(--field);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-weight:550;line-height:1.3;text-decoration:none;transition:background-color .14s,color .14s,transform .14s}button:hover,.button:hover{background:var(--tint)}button:active,.button:active{transform:translateY(1px)}button:disabled{cursor:not-allowed;opacity:.55;transform:none}.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.primary:hover{background:var(--ink);border-color:var(--ink);color:var(--surface)}:focus-visible{outline:3px solid var(--focus);outline-offset:4px}input:focus-visible,select:focus-visible{outline-offset:2px}input[aria-invalid=true]{border:2px solid var(--error)}[hidden]{display:none!important}.skip{position:absolute;top:.5rem;left:1rem;z-index:10;background:var(--surface);padding:.7rem}.skip:not(:focus){width:1px;height:1px;overflow:hidden;clip-path:inset(50%);padding:0}
.shell{max-width:82rem;margin:auto;padding-inline:2.5rem}.site-header{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;padding-block:1.25rem;border-bottom:1px solid var(--line)}.brand{font-size:2rem;font-weight:650;letter-spacing:-.04em;color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;gap:.6rem}.brand svg{width:1.5rem;height:1.5rem;color:var(--accent)}.site-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;font-size:.9375rem}.site-nav a{color:var(--ink)}.appearance{border-bottom:1px solid var(--line);padding:.7rem 0}.appearance summary{font-weight:500;padding:.2rem 0;min-height:2rem}.display-controls{display:flex;flex-wrap:wrap;align-items:end;gap:1rem;margin-block:1rem}.display-controls label:not(.check){display:grid;gap:.3rem;flex:1;min-width:min(100%,10rem)}.display-controls select{width:100%}.display-controls .check{padding-bottom:.6rem}.display-status{font-size:.875rem;color:var(--muted);margin:0;min-height:1.4em}select,input[type=text]{width:100%;min-height:2.75rem;padding:.6rem .7rem;border:1px solid var(--field);border-radius:var(--radius);background:var(--surface);color:var(--ink);line-height:1.3}input[type=checkbox],input[type=radio]{width:1.15rem;height:1.15rem;flex-shrink:0;margin:0}.check{display:flex;align-items:center;gap:.6rem;min-height:2.75rem}.intro{display:flex;gap:2rem;align-items:end;justify-content:space-between;padding:2.75rem 0 2rem}.intro h1{font-size:clamp(2.3rem,3vw,3.4rem);line-height:1.08;font-weight:550;letter-spacing:-.035em;max-width:18ch;margin:0;text-wrap:balance}.intro p{max-width:31rem;margin:0;color:var(--muted);font-size:1.0625rem}.workbench{display:grid;grid-template-columns:minmax(19rem,26rem) minmax(0,1fr);background:var(--surface);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.controls{padding:1.75rem 2rem 1.75rem 0;min-width:0}.controls fieldset{margin:0 0 1.35rem;border:0;padding:0;min-width:0}.controls legend{font-weight:600;margin-bottom:.7rem}.type-options{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.choice{display:flex;align-items:center;gap:.65rem;padding:.7rem;border:1px solid var(--field);border-radius:var(--radius);min-width:0;font-size:.9375rem;line-height:1.2}.choice:has(:checked){border-color:var(--accent);background:var(--tint);box-shadow:inset 0 0 0 1px var(--accent)}.choice:hover{background:var(--tint)}.sample{width:2rem;height:2.5rem;flex-shrink:0;stroke:currentColor;stroke-width:.8;fill:none}.choice span{min-width:0}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}.field{display:grid;gap:.4rem;align-content:start;min-width:0}.field>label{font-weight:500}.field small,.hint{font-size:.875rem;color:var(--muted);line-height:1.45}.input-unit{display:flex;align-items:center;gap:.6rem}.input-unit span{flex-shrink:0}.field-error{font-size:.875rem;color:var(--error);line-height:1.4}.field-error:empty{display:none}.more{padding:.2rem 0 1rem;margin:.5rem 0;border-bottom:1px solid var(--line)}.more summary{min-height:2.75rem;display:list-item;align-content:center;color:var(--accent);font-weight:500}.more .field{margin:1rem 0}.more .check{align-items:start;padding:.4rem 0}.more .check input{margin-top:.25rem}.fixed-spacing{font-size:.875rem;color:var(--muted);padding:.2rem 0}.exports{display:grid;grid-template-columns:1fr auto;gap:.65rem;margin-top:1rem}.exports svg{width:1.2rem;height:1.2rem;stroke:currentColor;fill:none;stroke-width:1.7;flex-shrink:0}.print-hint{font-size:.875rem;color:var(--muted);margin:.75rem 0}.status{font-size:.875rem;min-height:2.7em;color:var(--muted);margin:.8rem 0}.error-summary{color:var(--error);font-weight:500;padding:.6rem 0}.reset{background:none;border:0;padding:.4rem 0;color:var(--muted);font-size:.875rem;text-decoration:underline;text-underline-offset:.2em}.stage{background:var(--tint);padding:1.5rem 2rem 2rem;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1rem}.stage-head{display:flex;justify-content:space-between;gap:1rem;width:100%;font-size:.875rem;color:var(--muted);font-variant-numeric:tabular-nums}.stage-head strong{font-weight:500}.sheet{width:min(100%,25.5rem);box-shadow:var(--shadow);background:white;line-height:0}.sheet svg{width:100%;height:auto;display:block}.stage figure{margin:0;width:100%;display:flex;flex-direction:column;align-items:center;gap:1rem}.stage figcaption{text-align:center;font-size:.875rem;max-width:45ch;color:var(--muted)}.stage figcaption span{display:block}.stage .hint{margin:0;text-align:center;max-width:48ch}.below{display:grid;grid-template-columns:minmax(0,1fr) minmax(16rem,.65fr);gap:5rem;padding:3rem 0 4rem}.below h2{font-size:1.75rem;line-height:1.2;font-weight:550;letter-spacing:-.025em;margin:0 0 1rem}.below p{max-width:66ch;color:var(--muted)}.below h3{font-size:1.2rem;margin:1.7rem 0 .6rem;font-weight:550}.related{margin:0;padding:0;list-style:none}.related a{display:block;padding:.85rem 0;border-bottom:1px solid var(--line);text-decoration:none;font-weight:500}.related small{display:block;color:var(--muted);font-size:.875rem;font-weight:400}.related a:hover{color:var(--ink)}.steps{padding-left:1.4rem}.steps li{padding:.4rem 0 .4rem .3rem}.article{max-width:48rem;margin:0 auto;padding:3rem 0 4rem}.article h1{font-size:2.75rem;line-height:1.1;letter-spacing:-.03em;font-weight:550;margin:0 0 1.4rem}.article h2{font-size:1.65rem;line-height:1.25;font-weight:550;margin:2.5rem 0 .8rem}.article p{max-width:70ch}.article li{margin:.5rem 0}.article table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.9375rem}.article th,.article td{border-bottom:1px solid var(--line);padding:.65rem;text-align:left}.site-footer{border-top:1px solid var(--line);padding:1.5rem 0 2.5rem;display:flex;gap:2rem;justify-content:space-between;align-items:start;font-size:.875rem;color:var(--muted)}.site-footer p{margin:0}.site-footer nav{display:flex;gap:.5rem 1.4rem;flex-wrap:wrap}.site-footer a{color:var(--muted)}#no-script-fallback{border:1px solid var(--field);padding:1.5rem;margin:1rem 0 2rem}#no-script-fallback h2{margin-top:0}#no-script-fallback a{display:inline-flex;margin:.4rem}.print-only,#print-sheet{display:none}
@media(max-width:68em){.shell{padding-inline:1.5rem}.intro{display:block}.intro h1{max-width:24ch}.intro p{max-width:55ch;margin-top:1rem}.workbench{grid-template-columns:minmax(18rem,23rem) minmax(0,1fr)}.controls{padding-right:1.5rem}.stage{padding-inline:1.4rem}.choice{gap:.5rem}.sample{display:none}.below{gap:3rem}}
@media(max-width:48em){.shell{padding-inline:1.1rem}.site-header{gap:.75rem;align-items:start}.brand{font-size:1.7rem}.site-nav{justify-content:end;gap:.25rem 1rem;font-size:.875rem}.intro{padding:2rem 0 1.5rem}.intro h1{font-size:2.35rem}.workbench{display:flex;flex-direction:column}.controls{padding:1.4rem 0 1rem}.sample{display:block}.stage{padding:1.25rem;margin-inline:-1.1rem}.sheet{max-width:18rem}.below{display:block;padding:2.5rem 0}.below aside{margin-top:2.5rem}.site-footer{display:block}.site-footer nav{margin-top:1rem}.article{padding-top:2rem}.article h1{font-size:2.1rem}.appearance summary{font-size:.9375rem}.exports{grid-template-columns:1fr 1fr}}
@media(max-width:24em){.sample{display:none}.choice{font-size:.9375rem}.site-header{flex-wrap:wrap}.site-nav{justify-content:start}.field-grid{gap:.75rem}.stage-head{flex-wrap:wrap}}
html[data-text-size="150"] .workbench,html[data-text-size="200"] .workbench{display:flex;flex-direction:column}html[data-text-size="150"] .controls,html[data-text-size="200"] .controls{padding-right:0}html[data-text-size="200"] .sample{display:none}html[data-text-size="200"] .below{display:block}html[data-text-size="200"] .below aside{margin-top:2rem}
@media(max-width:40em){html[data-text-size="150"] .field-grid,html[data-text-size="200"] .field-grid,html[data-text-size="200"] .type-options,html[data-text-size="200"] .exports{grid-template-columns:1fr}html[data-text-size="150"] .site-header,html[data-text-size="200"] .site-header{flex-wrap:wrap}html[data-text-size="200"] .site-nav{justify-content:start}html[data-text-size="200"] .intro h1,html[data-text-size="200"] .article h1{font-size:1.8rem}html[data-text-size="200"] .shell{padding-inline:.65rem}html[data-text-size="200"] .stage{margin-inline:-.65rem;padding:.65rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(forced-colors:active){button,.choice,input,select{border:1px solid ButtonText}.choice:has(:checked){outline:2px solid Highlight}.sheet{forced-color-adjust:none}.sample{color:CanvasText}}
@media print{html{font-size:100%!important;color-scheme:light}body{margin:0!important;background:#fff!important;color:#000!important}body>*,.shell{display:none!important}body>#print-sheet{display:block!important;margin:0;padding:0;line-height:0;width:max-content;height:max-content}#print-sheet svg{display:block;print-color-adjust:exact;-webkit-print-color-adjust:exact;max-width:none}.print-invalid>#print-sheet{display:none!important}.print-invalid>.print-only{display:block!important;padding:20mm;font-family:Arial,sans-serif;font-size:14pt}body[data-paper=""]>.shell{display:block!important}.article{margin:0;max-width:100%;padding:15mm}.site-header,.site-footer,.appearance{display:none!important}}

.theme-toggle{font-size:.875rem;min-height:2.75rem;padding:.5rem .7rem}.site-nav{gap:.5rem 1rem}
.article dt{margin-block-start:1rem}.article dd{margin:.3rem 0 1.25rem}
.field-grid,.type-options{grid-template-columns:repeat(auto-fit,minmax(min(100%,8rem),1fr))}
.exports{grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr))}.exports button{min-width:0}
@media(max-width:48em){.sample{display:none}.choice span{overflow-wrap:normal}.site-header{flex-wrap:wrap}}
@media(max-width:24em){.intro h1,.article h1{font-size:clamp(1.45rem,8vw + .5rem,2.35rem);overflow-wrap:normal}.intro{padding-block:1.5rem 1rem}}
