@import url(https://fonts.cdnfonts.com/css/jetbrains-mono-2);:root{--font-family:"JetBrains Mono",monospace;--line-height:1.20rem;--border-thickness:2px;--text-color:#000;--text-color-alt:#666;--background-color:#fff;--background-color-alt:#eee;--font-weight-normal:500;--font-weight-medium:600;--font-weight-bold:800;font-family:var(--font-family);font-optical-sizing:auto;font-size:16px;font-style:normal;font-variant-numeric:tabular-nums lining-nums;font-weight:var(--font-weight-normal)}@media (prefers-color-scheme:dark){:root{--text-color:#fff;--text-color-alt:#aaa;--background-color:#000;--background-color-alt:#111}}*{box-sizing:border-box}*+*{margin-top:var(--line-height)}html{align-items:center;background:var(--background-color);color:var(--text-color);display:flex;flex-direction:column;padding:0}body,html{margin:0;width:100%}body{line-height:var(--line-height);max-width:calc(min(80ch, round(down, 100%, 1ch)));overflow-x:hidden;padding:var(--line-height) 2ch;position:relative}@media screen and (max-width:480px){:root{font-size:14px}body{padding:var(--line-height) 1ch}}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-bold);line-height:var(--line-height);margin:calc(var(--line-height)*2) 0 var(--line-height)}h1{font-size:2rem;line-height:calc(var(--line-height)*2);margin-bottom:calc(var(--line-height)*2)}h1,h2{text-transform:uppercase}h2{font-size:1rem}hr{border:none;color:var(--text-color);height:var(--line-height);margin:calc(var(--line-height)*1.5) 0;position:relative}hr,hr:after{display:block}hr:after{border-top:calc(var(--border-thickness)*3) double var(--text-color);content:"";height:0;left:0;position:absolute;top:calc(var(--line-height)/2 - var(--border-thickness));width:100%}a{text-decoration-thickness:var(--border-thickness)}a:link,a:visited{color:var(--text-color)}p{margin-bottom:var(--line-height)}strong{font-weight:var(--font-weight-bold)}em{font-style:italic}sub{display:inline-block;font-size:.75rem;line-height:0;margin:0;vertical-align:sub;width:1.33333ch}sub,table{position:relative}table{border-collapse:collapse;margin:0 0 calc(var(--line-height)*2);top:calc(var(--line-height)/2);width:calc(round(down, 100%, 1ch))}td,th{border:var(--border-thickness) solid var(--text-color);line-height:var(--line-height);padding:calc(var(--line-height)/2) calc(1ch - var(--border-thickness)/2) calc(var(--line-height)/2 - var(--border-thickness));text-align:left;vertical-align:top}table tbody tr:first-child>*{padding-top:calc(var(--line-height)/2 - var(--border-thickness))}th{font-weight:700}.width-min{width:0}.width-auto{width:100%}.header{margin-bottom:calc(var(--line-height)*2)}.header h1{margin:0}.header tr td:last-child{text-align:right}p{word-break:break-word;word-wrap:break-word;hyphens:auto}img,video{display:block;object-fit:contain;overflow:hidden;width:100%}img{color:var(--text-color-alt);font-style:italic}details{border:var(--border-thickness) solid var(--text-color);margin-bottom:var(--line-height);padding:calc(var(--line-height) - var(--border-thickness)) 1ch}summary{cursor:pointer;font-weight:var(--font-weight-medium)}details[open] summary{margin-bottom:var(--line-height)}details ::marker{content:"▶";display:inline-block;margin:0}details[open] ::marker{content:"▼"}details :last-child{margin-bottom:0}pre{margin:var(--line-height) 0;overflow-x:auto;overflow-y:hidden;white-space:pre}figure pre{margin:0}code,pre{font-family:var(--font-family)}code{font-weight:var(--font-weight-medium)}figure{margin:calc(var(--line-height)*2) 3ch;overflow-x:auto;overflow-y:hidden}figcaption{display:block;font-style:italic;margin-top:var(--line-height)}ol,ul{margin:0 0 var(--line-height);padding:0}ul{list-style-type:square;padding:0 0 0 2ch}ol{counter-reset:item;list-style-type:none;padding:0}ol ol,ol ul,ul ol,ul ul{margin:0;padding:0 0 0 3ch}ol li:before{content:counters(item,".") ". ";counter-increment:item;font-weight:var(--font-weight-medium)}li{margin:0;padding:0}li::marker{line-height:0}::-webkit-scrollbar{height:var(--line-height)}button,input,textarea{background:var(--background-color);border:var(--border-thickness) solid var(--text-color);color:var(--text-color);font:inherit;font-weight:inherit;height:calc(var(--line-height)*2);line-height:normal;margin:0;overflow:visible;padding:calc(var(--line-height)/2 - var(--border-thickness)) calc(1ch - var(--border-thickness));width:auto;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}input[type=checkbox],input[type=radio]{cursor:pointer;display:inline-grid;height:var(--line-height);place-content:center;vertical-align:top;width:2ch}input[type=checkbox]:checked:before,input[type=radio]:checked:before{background:var(--text-color);content:"";height:calc(var(--line-height)/2);width:1ch}input[type=radio],input[type=radio]:before{border-radius:100%}button:focus,input:focus{--border-thickness:3px;outline:none}input{width:calc(round(down, 100%, 1ch))}::placeholder{color:var(--text-color-alt);opacity:1}::-ms-input-placeholder{color:var(--text-color-alt)}button::-moz-focus-inner{border:0;padding:0}button{cursor:pointer;font-weight:var(--font-weight-medium);text-transform:uppercase}button:hover{background:var(--background-color-alt)}button:active{transform:translate(2px,2px)}label{display:block;font-weight:var(--font-weight-medium);height:auto;line-height:var(--line-height);margin:0;width:calc(round(down, 100%, 1ch))}label input{width:100%}.tree,.tree ul{line-height:var(--line-height);list-style-type:none;padding-left:0;position:relative}.tree ul{margin:0}.tree ul li{border-left:var(--border-thickness) solid var(--text-color);margin-left:1.5ch;padding-left:1.5ch;position:relative}.tree ul li:before{border-bottom:var(--border-thickness) solid var(--text-color);content:"";display:block;left:0;position:absolute;top:calc(var(--line-height)/2);width:1ch}.tree ul li:last-child{border-left:none}.tree ul li:last-child:after{border-left:var(--border-thickness) solid var(--text-color);content:"";display:block;height:calc(var(--line-height)/2);left:0;position:absolute;top:0}.grid{--grid-cells:0;display:flex;gap:1ch;margin-bottom:var(--line-height);width:calc(round(down, 100%, (1ch * var(--grid-cells)) - (1ch * var(--grid-cells) - 1)))}.grid>*,.grid>input{flex:0 0 calc(round(down, (100% - (1ch * (var(--grid-cells) - 1))) / var(--grid-cells), 1ch))}.grid:has(>:last-child:first-child){--grid-cells:1}.grid:has(>:last-child:nth-child(2)){--grid-cells:2}.grid:has(>:last-child:nth-child(3)){--grid-cells:3}.grid:has(>:last-child:nth-child(4)){--grid-cells:4}.grid:has(>:last-child:nth-child(5)){--grid-cells:5}.grid:has(>:last-child:nth-child(6)){--grid-cells:6}.grid:has(>:last-child:nth-child(7)){--grid-cells:7}.grid:has(>:last-child:nth-child(8)){--grid-cells:8}.grid:has(>:last-child:nth-child(9)){--grid-cells:9}.debug .debug-grid{--color:color-mix(in srgb,var(--text-color) 10%,var(--background-color) 90%);background-image:repeating-linear-gradient(var(--color) 0 1px,transparent 1px 100%),repeating-linear-gradient(90deg,var(--color) 0 1px,transparent 1px 100%);background-size:1ch var(--line-height);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;z-index:-1}.debug .off-grid{background:rgba(255,0,0,.1)}.debug-toggle-label{text-align:right}:root{--bg-page:#f7f3e6;--bg:#fff;--bg-alt:#f2f2f2;--border:#ccc;--text:#000;--text-muted:#666;--link:#069;--link-hover:#046;--link-visited:#636;--accent:#f90;--accent-dark:#cc7a00;--accent-bg:#d9e1f2;--accent-border:#c7d4eb}body,html{background:var(--bg-page);color:var(--text);font-family:var(--mono-font);line-height:var(--mono-line-height);margin:0;padding:0}body{padding:4ch}a{color:var(--link);text-decoration:none}a:hover{color:var(--link-hover);text-decoration:underline}a:visited{color:var(--link-visited)}.panel{background:var(--bg);border:1px solid var(--border);margin-bottom:4ch;padding:3ch}.panel-header{background:var(--accent-bg);border-bottom:1px solid var(--accent-border);font-weight:700;padding:2ch 3ch}.panel-accent{border-left:1ch solid var(--accent);padding-left:3ch}h1,h2,h3{font-weight:700}h1,h2,h3,p{margin:0 0 2ch}.muted{color:var(--text-muted)}.table{border-collapse:collapse;width:100%}.table th{background:var(--accent-bg);border-bottom:1px solid var(--accent-border);padding:2ch;text-align:left}.table td{border-bottom:1px solid var(--border);padding:2ch}.table tr:nth-child(2n){background:var(--bg-alt)}.table tr:hover td{border-bottom:1px solid var(--accent)}.divider{background:var(--accent);height:1px;margin:4ch 0}.button,.button-primary{align-items:center;background:var(--accent);border:1px solid var(--border);color:var(--bg);cursor:pointer;display:inline-flex;font-family:var(--mono-font);justify-content:center;line-height:1.2;padding:1.5ch 3ch}.button:hover{background:var(--accent);color:#fff}.form-row{margin-bottom:2ch}.form-errors{color:#f44;font-size:.9rem;list-style:none;margin:4px 0 0;padding:0}.flash{animation:flash-slide .3s ease-out,flash-fade .4s ease-in 4s forwards;border-radius:6px;box-shadow:0 2px 6px rgba(0,0,0,.08);font-size:15px;font-weight:500;line-height:1.4;margin:12px auto;max-width:600px;padding:12px 16px;position:relative;z-index:1000}.flash-container{display:flex;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;top:20px}.flash.success{background:#e6f7ec;border-left:4px solid #2e8b57;color:#1f5f3d}.flash.error{background:#fdecea;border-left:4px solid #d93025;color:#8a1f17}.flash.info{background:#e8f1fd;border-left:4px solid #1a73e8;color:#174ea6}.flash.warning{background:#fff8e1;border-left:4px solid #f9a825;color:#8c6d1f}@keyframes flash-slide{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes flash-fade{to{opacity:0;transform:translateY(-4px)}}