@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-semi-condensed-vietnamese-400-normal-Dj7eBp_3.woff2)format("woff2"),url(/assets/barlow-semi-condensed-vietnamese-400-normal-D1YxRXwC.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-semi-condensed-latin-ext-400-normal-BDztQS4c.woff2)format("woff2"),url(/assets/barlow-semi-condensed-latin-ext-400-normal-Bm5hzUPR.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-semi-condensed-latin-400-normal-DlzeKIMS.woff2)format("woff2"),url(/assets/barlow-semi-condensed-latin-400-normal-CwTnoNB3.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-semi-condensed-vietnamese-500-normal-DGADhYWF.woff2)format("woff2"),url(/assets/barlow-semi-condensed-vietnamese-500-normal-hJ2t9k9e.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-semi-condensed-latin-ext-500-normal-BXdp1BvY.woff2)format("woff2"),url(/assets/barlow-semi-condensed-latin-ext-500-normal-rZeYuEMb.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-semi-condensed-latin-500-normal-G0uxJNrM.woff2)format("woff2"),url(/assets/barlow-semi-condensed-latin-500-normal-CFOoVYFH.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-vietnamese-600-normal-b1FQiZcx.woff2)format("woff2"),url(/assets/barlow-semi-condensed-vietnamese-600-normal-DzVrjA0Q.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-latin-ext-600-normal-BkQ9hN72.woff2)format("woff2"),url(/assets/barlow-semi-condensed-latin-ext-600-normal-BuP8AaxH.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-latin-600-normal-BkLiAYu4.woff2)format("woff2"),url(/assets/barlow-semi-condensed-latin-600-normal-DyOfdMBA.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--frame:#e4e7e1;--stage:#d6dbd4;--ink:#1e292d;--ink-soft:#56646a;--rule:#c3c9c0;--pei:#b8912f;--pei-deep:#8a6a1c;--warn:#8c3b1a;--field-bg:#f3f4f1;--ink-hover:#2c3b40;--chip:#e4e7e1e6;--th-wall-off:#8b979b;--th-rib-off:#56646a;--th-rib-on:#56646a;--font:"Barlow Semi Condensed", "Arial Narrow", system-ui, sans-serif;--step--1:.8125rem;--step-0:.9375rem;--step-1:1.125rem;--step-2:1.5rem;--step-5:clamp(2.75rem, 5vw, 4.5rem);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--frame:#161c1f;--stage:#1e2629;--ink:#e3e7e1;--ink-soft:#9aa6a9;--rule:#344044;--pei:#c9a43a;--pei-deep:#a5852c;--warn:#e8956b;--field-bg:#212a2e;--ink-hover:#c9d0cb;--chip:#161c1fe0;--th-wall-off:#4b585c;--th-rib-off:#2a3337;--th-rib-on:#8d9a9e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.i18n-pending .app{visibility:hidden}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--font);font-size:var(--step-0);color:var(--ink);background:var(--frame);-webkit-font-smoothing:antialiased;line-height:1.4}button,input{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--pei);outline-offset:2px}.app{height:100vh;grid-template-columns:minmax(19rem,23rem) 1fr;height:100dvh;display:grid}.panel{border-right:1px solid var(--rule);flex-direction:column;gap:1.25rem;padding:1.75rem 1.5rem 1.5rem;display:flex;overflow-y:auto}.brand h1{font-size:var(--step-2);letter-spacing:-.01em;margin:0;font-weight:600;line-height:1.1}.lede{color:var(--ink-soft);max-width:34ch;margin:.35rem 0 0}.params{flex-direction:column;gap:1.25rem;display:flex}fieldset{border:0;border-top:1px solid var(--rule);flex-direction:column;gap:.7rem;margin:0;padding:1rem 0 0;display:flex}legend{float:left;width:100%;font-size:var(--step-1);margin-bottom:.15rem;padding:0;font-weight:600}legend+*{clear:both}.field{grid-template-columns:1fr auto;grid-template-areas:"label num""range range";align-items:center;row-gap:.1rem;display:grid}.field label{color:var(--ink);grid-area:label}.field .num{color:var(--ink-soft);font-size:var(--step--1);grid-area:num;align-items:baseline;gap:.3rem;display:inline-flex}.field input[type=number]{border:1px solid var(--rule);background:var(--field-bg);width:4.6rem;font-size:var(--step-0);font-variant-numeric:tabular-nums;text-align:right;appearance:textfield;border-radius:4px;padding:.2rem .4rem}.field input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.field input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.field input[type=number]:focus-visible{outline-offset:0;border-color:var(--pei)}.field input[type=range]{width:100%;accent-color:var(--ink);cursor:pointer;background:0 0;grid-area:range;height:1.25rem;margin:.25rem 0 0}.field[hidden],.segmented[hidden],.check[hidden],.text-field[hidden]{display:none}.field.is-disabled{opacity:.45}.note{color:var(--ink-soft);font-size:var(--step--1);max-width:40ch;margin:0}.prefs{gap:.5rem;margin-top:.85rem;display:flex}.prefs .segmented{border-color:var(--rule)}.prefs .segmented label+label{border-left-color:var(--rule)}.segmented.two{grid-template-columns:repeat(2,1fr)}.segmented.small span{font-size:var(--step--1);padding:.25rem .6rem}.segmented{border:1px solid var(--ink);border-radius:6px;grid-template-columns:repeat(3,1fr);display:grid;overflow:hidden}.segmented label{cursor:pointer;position:relative}.segmented label+label{border-left:1px solid var(--ink)}.segmented input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.segmented span{text-align:center;white-space:nowrap;padding:.45rem .25rem;font-weight:500;display:block}.segmented input:checked+span{background:var(--ink);color:var(--frame)}.segmented input:focus-visible+span{outline:2px solid var(--pei);outline-offset:-4px}.section{border-top:1px solid var(--rule)}.section summary{font-size:var(--step-1);cursor:pointer;align-items:baseline;gap:.6rem;padding:1rem 0 .15rem;font-weight:600;list-style:none;display:flex}.section summary::-webkit-details-marker{display:none}.section summary:after{content:"";border-right:2px solid var(--ink-soft);border-bottom:2px solid var(--ink-soft);width:.45rem;height:.45rem;margin-left:auto;transition:transform .15s;transform:translateY(-.15rem)rotate(45deg)}.section[open] summary:after{transform:translateY(.1rem)rotate(-135deg)}.summary-value{color:var(--ink-soft);font-size:var(--step--1);white-space:nowrap;text-overflow:ellipsis;font-weight:400;overflow:hidden}.section-body{flex-direction:column;gap:.7rem;padding:.6rem 0 .2rem;display:flex}.check{cursor:pointer;align-items:center;gap:.5rem;display:flex}.check input{width:1.05rem;height:1.05rem;accent-color:var(--ink);margin:0}.check.is-disabled{opacity:.45;cursor:default}.text-field{flex-direction:column;gap:.3rem;display:flex}.text-field input,.save-form input{border:1px solid var(--rule);background:var(--field-bg);border-radius:4px;padding:.4rem .55rem}.text-field input:focus-visible,.save-form input:focus-visible{outline-offset:0;border-color:var(--pei)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.save-form{gap:.4rem;display:flex}.save-form input{flex:1;min-width:0}.saved-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.saved-list li{border-bottom:1px solid var(--rule);align-items:center;gap:.5rem;padding:.35rem 0;display:flex}.saved-list .load{text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;flex:1;min-width:0;padding:0;overflow:hidden}.saved-list .load:hover{text-decoration:underline}.saved-list small{color:var(--ink-soft);font-size:var(--step--1);white-space:nowrap}.saved-list .delete{font-size:var(--step--1);padding:.15rem .5rem}.saved-list .delete.is-confirming{border-color:var(--warn);color:var(--warn)}.action-row{flex-wrap:wrap;gap:.5rem;display:flex}.action-row .quiet{white-space:nowrap;flex:auto}.printer-select{border:1px solid var(--rule);max-width:11rem;color:var(--ink-soft);font:inherit;font-size:var(--step--1);background:0 0;border-radius:6px;padding:.4rem .5rem}.auto-toggle{border:1px solid var(--rule);color:var(--ink-soft);font-size:var(--step--1);background:0 0;border-radius:999px;margin-right:.25rem;padding:.15rem .45rem;line-height:1.2}.auto-toggle[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--frame)}.auto-toggle:disabled{opacity:.45;cursor:default}.patterns{grid-template-columns:repeat(4,1fr);gap:.4rem;display:grid}.patterns button{--th-wall:var(--th-wall-off);--th-hole:var(--field-bg);--th-rib:var(--th-rib-off);border:1px solid var(--rule);color:var(--ink-soft);font-size:var(--step--1);text-align:center;background:0 0;flex-direction:column;gap:.25rem;padding:.3rem .3rem .35rem;line-height:1.1;display:flex}.patterns button:hover{border-color:var(--ink-soft);color:var(--ink)}.patterns button[aria-checked=true]{--th-wall:var(--ink);--th-rib:var(--th-rib-on);--th-hole:var(--frame);border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);color:var(--ink);font-weight:600}.patterns svg{width:100%;height:auto;display:block}.th-wall{fill:var(--th-wall)}.th-hole{fill:var(--th-hole)}.th-rib{fill:none;stroke:var(--th-rib);stroke-width:3px;stroke-linecap:round}.th-web{fill:none;stroke:var(--th-wall);stroke-width:3.4px;stroke-linejoin:round}.segmented.is-disabled,#reseed[disabled]{opacity:.45;pointer-events:none}#reseed{align-self:flex-start}.actions{flex-direction:column;gap:.5rem;margin-top:auto;padding-top:.5rem;display:flex}button{cursor:pointer;border-radius:6px}button:disabled{cursor:progress}.primary{background:var(--ink);color:var(--frame);font-size:var(--step-1);border:0;padding:.8rem 1rem;font-weight:600}.primary:hover:not(:disabled){background:var(--ink-hover)}.primary:disabled{opacity:.6}.quiet{border:1px solid var(--rule);color:var(--ink-soft);background:0 0;padding:.45rem .75rem}.quiet:hover{color:var(--ink);border-color:var(--ink-soft)}.stage{background:var(--stage);min-height:0;position:relative;overflow:hidden}#view{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:absolute;inset:0}#view:active{cursor:grabbing}.stage-head{z-index:1;pointer-events:none;flex-direction:column;align-items:flex-start;gap:.6rem;display:flex;position:absolute;top:1.25rem;left:1.75rem;right:1.5rem}.readout{font-size:var(--step-5);letter-spacing:-.02em;font-variant-numeric:tabular-nums;align-items:baseline;gap:.5rem;margin:0;font-weight:500;line-height:1;display:flex}.readout small{font-size:var(--step-1);letter-spacing:0;color:var(--ink-soft);font-weight:500}.status{color:var(--ink-soft);font-size:var(--step--1);margin:0;transition:opacity .2s}.status.is-idle{display:none}.status.is-error{color:var(--warn)}.warnings{flex-direction:column;gap:.4rem;max-width:36rem;display:flex}.warnings:empty{display:none}.warnings p{border-left:3px solid var(--warn);background:var(--chip);color:var(--warn);font-size:var(--step--1);border-radius:0 6px 6px 0;margin:0;padding:.45rem .75rem}.stage-foot{z-index:1;pointer-events:none;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;display:flex;position:absolute;bottom:1.25rem;left:1.25rem;right:1.25rem}.stage-foot>*{pointer-events:auto}.stats{background:var(--chip);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:6px;gap:1.75rem;margin:0;padding:.55rem .9rem;display:flex}.stats dt{color:var(--ink-soft);font-size:var(--step--1)}.stats dd{font-size:var(--step-1);font-variant-numeric:tabular-nums;margin:0;font-weight:600}.view-tools{background:var(--chip);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:6px;align-items:center;gap:.75rem;padding:.4rem .4rem .4rem .6rem;display:flex}.view-tools .quiet{background:0 0}.color-picker{position:relative}.color-button{align-items:center;gap:.45rem;display:inline-flex}.color-dot{background:var(--swatch);width:1.1rem;height:1.1rem;box-shadow:0 0 0 1px var(--rule);border-radius:50%}.color-menu{z-index:5;border:1px solid var(--rule);background:var(--frame);border-radius:8px;grid-template-columns:repeat(6,1.75rem);gap:.45rem;padding:.65rem;display:grid;position:absolute;bottom:calc(100% + .6rem);right:0;box-shadow:0 8px 28px #0003}.color-menu[hidden]{display:none}.color-caption{color:var(--ink-soft);font-size:var(--step--1);grid-column:1/-1;margin:0 0 .1rem}.color-menu button{border:2px solid var(--frame);background:var(--swatch);width:1.75rem;height:1.75rem;box-shadow:0 0 0 1px var(--rule);border-radius:50%;padding:0}.color-menu button[aria-checked=true]{box-shadow:0 0 0 2px var(--ink)}@media (max-width:860px){.app{grid-template-rows:auto auto;grid-template-columns:1fr;height:auto}.stage{order:-1;height:62vh;min-height:22rem}.panel{border-right:0;border-top:1px solid var(--rule);overflow:visible}.stage-head{top:.9rem;left:1rem;right:1rem}.readout{font-size:2.25rem}.stage-foot{gap:.5rem;bottom:.75rem;left:.75rem;right:.75rem}.printer-select{max-width:8.5rem}.stats{gap:.9rem;padding:.4rem .65rem}.stats dd{font-size:var(--step-0)}.color-name{display:none}.view-tools{padding:.3rem}}@media (prefers-reduced-motion:reduce){.status{transition:none}}
