@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-vietnamese-400-normal-Dpl4UHAZ.woff2)format("woff2"),url(/assets/barlow-vietnamese-400-normal-BFeobeCK.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;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-ext-400-normal-HxX4XjxC.woff2)format("woff2"),url(/assets/barlow-latin-ext-400-normal-CvBsJvxq.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;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-qiz4-Cze.woff2)format("woff2"),url(/assets/barlow-latin-400-normal-fsAxiSwU.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;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-vietnamese-600-normal-DcjprdFV.woff2)format("woff2"),url(/assets/barlow-vietnamese-600-normal-CA_GiK2e.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;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-ext-600-normal-B8NK_A3D.woff2)format("woff2"),url(/assets/barlow-latin-ext-600-normal-DMVRjfRT.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;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DILqtrty.woff2)format("woff2"),url(/assets/barlow-latin-600-normal-CNwfPWQD.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 Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-vietnamese-500-normal-DjeaNLFD.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-500-normal-CsrJDWc5.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 Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-ext-500-normal-yA5ONLQ9.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-500-normal-B1RE8WP7.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 Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-500-normal-BgYH2mbd.woff2)format("woff2"),url(/assets/barlow-condensed-latin-500-normal-HIEiP5Ov.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 Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-700-normal-DhIzd8Tb.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 Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-700-normal-BIHFfxf0.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 Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.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{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--panel:#f7f9fa;--surface:#dfe5e8;--raised:#fff;--raised-hover:#e6eef2;--line:#a9b7be;--line-strong:#5f717a;--text:#0f171b;--heading:#1d2b31;--muted:#3f4f57;--signal:#f2c230;--on-signal:#1b2429;--ok:#3f9c52;--warn:#d99a12;--bad:#c9392d;--ok-tint:#dcefe0;--bad-tint:#f6dcd8;--font-body:"Barlow", system-ui, sans-serif;--font-sign:"Barlow Condensed", "Arial Narrow", system-ui, sans-serif;font-family:var(--font-body);color:var(--text);background:var(--surface);font-size:15px;line-height:1.45}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--panel:#151c20;--surface:#0b1013;--raised:#232d33;--raised-hover:#2e3b42;--line:#43535c;--line-strong:#8a9ea8;--text:#f2f5f6;--heading:#e2e9ec;--muted:#b8c5cb;--ok:#57c26a;--warn:#f2b630;--bad:#e0483b;--ok-tint:#1f3a29;--bad-tint:#43211e}}*{box-sizing:border-box}body{background:var(--surface);margin:0}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.small{margin:.25rem 0;font-size:.8667rem}.app-shell{grid-template:"header header header""palette viewport side"minmax(0,1fr)"footer footer footer"/15.5rem minmax(0,1fr) 19rem;height:100vh;display:grid}.app-shell__header{background:var(--panel);border-bottom:1px solid var(--line);grid-area:header;align-items:center;gap:1.5rem;padding:.5rem 1rem;display:flex}.app-shell__title{font-family:var(--font-sign);letter-spacing:.01em;white-space:nowrap;margin:0;font-size:1.6rem;font-weight:700;line-height:1}.app-shell__palette,.app-shell__side{background:var(--panel);padding:.75rem 1rem 1.5rem;overflow:auto}.app-shell__palette{border-right:1px solid var(--line);grid-area:palette}.app-shell__side{border-left:1px solid var(--line);grid-area:side}.app-shell__viewport{flex-direction:column;grid-area:viewport;min-width:0;min-height:0;display:flex}.app-shell__footer{border-top:1px solid var(--line);background:var(--panel);color:var(--muted);grid-area:footer;padding:.25rem 1rem;font-size:.8rem}.panel-title{font-family:var(--font-sign);margin:.5rem 0;font-size:1.35rem;font-weight:700;line-height:1.1}.palette__top{z-index:1;background:var(--panel);border-bottom:1px solid var(--line);gap:.4rem;margin:-.75rem -1rem .25rem;padding:.75rem 1rem .6rem;display:grid;position:sticky;top:-.75rem}.palette__top .panel-title{margin:0}.palette__search,.palette__item{border:1px solid var(--line);background:var(--raised);width:100%;height:2.2rem;color:var(--text);border-radius:3px;padding:0 .6rem}.palette__search{font:inherit}.palette__search::placeholder{color:var(--muted);opacity:1}.palette__hint{margin:0}.palette__heading,.stats__heading{font-family:var(--font-sign);letter-spacing:.02em;color:var(--heading);margin:.75rem 0 .25rem;font-size:1.05rem;font-weight:700}summary.palette__heading{cursor:pointer;justify-content:space-between;align-items:center;margin:0;padding:.65rem 0 .4rem;list-style:none;display:flex}summary.palette__heading::-webkit-details-marker{display:none}summary.palette__heading:after{content:"";border-bottom:2px solid;border-right:2px solid;width:.45rem;height:.45rem;margin-right:.3rem;transform:translateY(-25%)rotate(45deg)}.palette__group:not([open])>summary.palette__heading:after{transform:rotate(-45deg)}.palette__group:last-child{margin-bottom:0}.palette__grid{grid-template-columns:repeat(auto-fill,minmax(5.75rem,1fr));gap:.35rem;margin:0 0 .25rem;padding:0;list-style:none;display:grid}.palette__item{text-align:left;cursor:pointer;align-items:center;gap:.6rem;display:flex}.palette__tile{border:1px solid var(--line);background:var(--raised);width:100%;color:var(--text);text-align:center;font-family:var(--font-sign);cursor:pointer;border-radius:3px;grid-template-rows:1.6rem 2.2em;place-items:start center;row-gap:.25rem;padding:.45rem .3rem .35rem;font-size:.95rem;font-weight:500;line-height:1.1;display:grid;position:relative}.palette__tile .glyph{align-self:center}.palette__item:hover,.palette__tile:hover{background:var(--raised-hover);border-color:var(--line-strong)}.palette__item[aria-pressed=true],.palette__tile[aria-pressed=true]{background:var(--signal);border-color:var(--signal);color:var(--on-signal)}.palette__tile-name{text-wrap:balance;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;align-self:center;max-width:100%;display:-webkit-box;overflow:hidden}.palette__tile .palette__count{font-family:var(--font-body);font-size:.7333rem;line-height:1;position:absolute;top:.2rem;right:.3rem}.palette__blocked{color:var(--muted);margin:0;padding:0 0 0 1.1rem;font-size:.8667rem}.palette__item--remove[aria-pressed=true]{border-color:var(--bad);background:var(--bad);color:#fff}.palette__name{flex:1}.palette__count{font-variant-numeric:tabular-nums;font-size:.8rem;font-weight:400}.palette__tile:not([aria-pressed=true]) .palette__count{color:var(--muted)}kbd{font:inherit;border:1px solid;border-radius:2px;padding:0 .3rem;font-size:.75rem}.glyph{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linejoin:round;stroke-linecap:round;flex:none}.glyph__solid{fill:currentColor;fill-opacity:.2;fill-rule:evenodd;stroke:none}.toolbar{flex-wrap:wrap;flex:1;align-items:center;gap:.75rem 1.25rem;display:flex}.toolbar__group{align-items:center;gap:.25rem;display:flex}.toolbar__group--end{margin-left:auto}.toolbar__rotation{text-align:center;min-width:3.2rem;font-family:var(--font-sign);font-variant-numeric:tabular-nums;font-size:1.1rem}.segmented{border:1px solid var(--line);border-radius:3px;display:flex;overflow:hidden}.segmented button{border:0;border-right:1px solid var(--line);background:var(--raised);font-family:var(--font-sign);cursor:pointer;padding:.3rem .8rem;font-size:1.05rem}.segmented button:hover:not([aria-pressed=true]){background:var(--raised-hover)}.segmented button:last-child{border-right:0}.segmented button[aria-pressed=true]{background:var(--signal);color:var(--on-signal)}.icon-button,.text-button{border:1px solid var(--line);background:var(--raised);cursor:pointer;border-radius:3px;min-width:2.2rem;height:2.2rem;padding:0 .6rem}.icon-button:hover:not(:disabled,[aria-pressed=true]),.text-button:hover:not(:disabled,[aria-pressed=true],.text-button--primary,.text-button--danger){background:var(--raised-hover);border-color:var(--line-strong)}.icon-button{font-size:1.15rem;line-height:1}.icon-button:disabled,.text-button:disabled{opacity:.4;cursor:default}.text-button--danger{border-color:var(--bad);background:var(--bad);color:#fff}.app-shell__actions{align-items:center;gap:.5rem;display:flex}.text-button[aria-pressed=true]{border-color:var(--signal);background:var(--signal);color:var(--on-signal)}.text-button--primary{border-color:var(--signal);background:var(--signal);color:var(--on-signal);font-weight:600}.button-row{gap:.5rem;margin:.25rem 0 .5rem;display:flex}.share{position:relative}.share__manual{z-index:10;border:1px solid var(--line);background:var(--panel);border-radius:3px;gap:.5rem;width:min(28rem,80vw);padding:.75rem;display:grid;position:absolute;top:calc(100% + .4rem);right:0;box-shadow:0 6px 24px #00000040}.share__manual label{gap:.25rem;font-size:.8667rem;display:grid}.share__manual input{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--text);font:inherit;border-radius:2px;padding:.3rem .4rem}.notice{border-bottom:1px solid var(--line);background:var(--panel);border-left:.5rem solid var(--signal);align-items:center;gap:1rem;padding:.4rem 1rem;font-size:.9333rem;display:flex}.notice span{flex:1}.viewport{background:#9fb7c4;flex:1;min-height:0;position:relative}.viewport canvas{touch-action:none;display:block}.viewport--loading{color:#1b2429;font-family:var(--font-sign);place-items:center;font-size:1.25rem;display:grid}.status{border-left:.5rem solid var(--line);background:var(--panel);min-height:4.12rem;font-family:var(--font-sign);align-items:center;gap:1rem;padding:.5rem 1rem .5rem 1.25rem;font-size:1.3rem;line-height:1.2;display:flex}.status--ok{border-left-color:var(--ok);background:var(--ok-tint)}.status--warn{border-left-color:var(--warn);background:var(--panel)}.status--error{border-left-color:var(--bad);background:var(--bad-tint)}.status__aside{font-family:var(--font-body);color:var(--muted);white-space:nowrap;font-size:.95rem}.status__text{flex:1}.status__actions{font-family:var(--font-body);gap:.5rem;font-size:.95rem;display:flex}.stat-list{margin:0}.stat-row{border-bottom:1px solid var(--line);justify-content:space-between;gap:1rem;padding:.25rem 0;display:flex}.stat-row dt{color:var(--muted)}.stat-row dd{align-items:center;gap:.5rem;margin:0;font-weight:600;display:flex}.stat-row dd.stat-stack{text-align:right;flex-direction:column;align-items:flex-end;gap:0}.stat-stack .small{margin:0;font-weight:400}.stats__subheading{margin:.4rem 0 .1rem;font-size:.8667rem;font-weight:600}.materials{margin:0;padding:0;list-style:none}.materials li{justify-content:space-between;padding:.1rem 0;display:flex}.badge{border-radius:2px;padding:0 .4rem;font-size:.8rem;font-weight:600}.badge--ok{background:var(--ok);color:#fff}.badge--bad{background:var(--bad);color:#fff}.badge--info{background:var(--surface);color:var(--text)}.headroom-list{margin-top:.5rem}.headroom{gap:.2rem;margin-bottom:.5rem;display:grid}.headroom__label{font-weight:600}.headroom__text{margin:0}.meter{background:var(--line);border-radius:2px;height:.45rem;position:relative}.meter__now{background:var(--ok);border-radius:2px;position:absolute;inset:0 auto 0 0}.meter__best{background:var(--text);width:2px;margin-left:-1px;position:absolute;top:-.2rem;bottom:-.2rem}.stats__header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.details-backdrop{z-index:50;background:#00000073;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.details-backdrop[hidden]{display:none}.details{border:1px solid var(--line-strong);background:var(--panel);width:min(40rem,100%);max-height:min(85vh,52rem);color:var(--text);border-radius:4px;padding:.75rem 1.25rem 1rem;overflow:auto;box-shadow:0 12px 40px #00000059}.details__header{background:var(--panel);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:.5rem;margin:-.75rem -1.25rem 0;padding:.75rem 1.25rem .25rem;display:flex;position:sticky;top:-.75rem}.details__body .stat-row dd{text-align:right}.diagnostics{margin-top:1.25rem}.diagnostics__ok{color:var(--ok);margin:0}.diagnostics__list{margin:0;padding:0;list-style:none}.diagnostic{border-left:3px solid var(--warn);gap:.1rem;margin-bottom:.4rem;padding:.4rem 0 .4rem .6rem;display:grid}.diagnostic--error{border-left-color:var(--bad)}.diagnostic__kind{font-family:var(--font-sign);font-size:.95rem;font-weight:700}@media (width<=900px){.app-shell{grid-template:"header""viewport"65vh"palette""side""footer"/1fr;height:auto}.app-shell__header{flex-wrap:wrap}.app-shell__palette,.app-shell__side{border:0;border-top:1px solid var(--line)}}
