@font-face{font-family:Bricolage Grotesque;src:url(/fonts/bricolage.woff2) format("woff2");font-weight:200 800;font-display:swap}@font-face{font-family:Hanken Grotesk;src:url(/fonts/hanken.woff2) format("woff2");font-weight:100 900;font-display:swap}:root{color-scheme:light;--paper: #f2f4f6;--card: #ffffff;--ink: #11151b;--muted: #4a5562;--line: #d3d9e0;--cut: #d3322a;--engrave: #1d4ed8;--dot: #c3cbd5;--radius: 6px;--maxw: 1120px;--gutter: clamp(16px, 4vw, 32px);--display: "Bricolage Grotesque", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--body: "Hanken Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:1.0625rem;line-height:1.6;-webkit-font-smoothing:antialiased}img,svg{max-width:100%}a{color:var(--engrave);text-underline-offset:.18em}a:hover{color:var(--ink)}:focus-visible{outline:3px solid var(--engrave);outline-offset:2px}.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip{position:absolute;left:8px;top:-60px;background:var(--ink);color:#fff;padding:8px 12px;border-radius:var(--radius);z-index:10}.skip:focus{top:8px}[hidden]{display:none!important}.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}.site-head{border-bottom:1px solid var(--line);background:var(--card)}.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;padding-top:14px;padding-bottom:14px}.brand{display:inline-flex;align-items:center;gap:10px;font-family:var(--display);font-weight:700;font-size:1.15rem;letter-spacing:-.01em;color:var(--ink);text-decoration:none}.brand svg{width:28px;height:28px;flex:none}.site-nav{display:flex;flex-wrap:wrap;gap:4px 20px;font-size:.95rem}.site-nav a{color:var(--muted);text-decoration:none;padding:4px 0;border-bottom:2px solid transparent}.site-nav a:hover{color:var(--ink)}.site-nav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--cut)}.hero{padding:clamp(28px,6vw,56px) 0 clamp(18px,3vw,28px)}.hero h1{margin:0;max-width:18ch;font-family:var(--display);font-weight:750;font-size:clamp(2.3rem,6.2vw,4rem);line-height:1.02;letter-spacing:-.03em;text-wrap:balance}.hero .lede{margin:16px 0 0;max-width:58ch;font-size:clamp(1.05rem,2vw,1.2rem);color:var(--muted)}.bench{position:relative;background-color:var(--card);background-image:radial-gradient(var(--dot) 1px,transparent 1.2px);background-size:20px 20px;border:1px solid var(--line);border-radius:var(--radius);padding:clamp(14px,3vw,28px)}.bench__in{display:block}.drop{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;min-height:260px;padding:clamp(20px,4vw,40px);background:#ffffffeb;border:2px dashed var(--cut);border-radius:var(--radius);cursor:pointer}.drop:hover,.drop.is-over,.drop:focus-within{background:#fff;border-style:solid}.drop:focus-within{outline:3px solid var(--engrave);outline-offset:3px}.drop__title{font-family:var(--display);font-weight:700;font-size:clamp(1.4rem,3vw,1.9rem);letter-spacing:-.02em;line-height:1.15}.drop__hint{color:var(--muted);max-width:52ch}.drop__btn{margin-top:8px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:inherit;font-weight:650;line-height:1.2;padding:.7rem 1.1rem;border-radius:var(--radius);border:2px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;text-decoration:none}.btn:hover{background:#26303c;color:#fff}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn--ghost{background:transparent;color:var(--ink)}.btn--ghost:hover{background:#fff;color:var(--ink)}.work{display:grid;gap:20px}@media(min-width:920px){.work{grid-template-columns:minmax(0,1fr) 320px;align-items:start}}.stage{--ar: 1;--split: 50%;position:relative;width:min(100%,calc(72vh * var(--ar)));aspect-ratio:var(--ar);margin:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background-color:#fff;background-image:conic-gradient(#e8ecf0 25%,#fff 0 50%,#e8ecf0 0 75%,#fff 0);background-size:18px 18px;touch-action:pan-y;cursor:ew-resize;transition:opacity .15s}.work.is-busy .stage{opacity:.55}.stage.is-solo{cursor:default}.stage__traced,.stage__orig{position:absolute;inset:0}.stage__traced svg,.stage__orig img{display:block;width:100%;height:100%}.stage__orig img{object-fit:fill;pointer-events:none;-webkit-user-drag:none}.stage__orig{background-color:#fff;background-image:conic-gradient(#e8ecf0 25%,#fff 0 50%,#e8ecf0 0 75%,#fff 0);background-size:18px 18px;clip-path:inset(0 calc(100% - var(--split)) 0 0)}.stage__line{position:absolute;top:0;bottom:0;left:var(--split);width:2px;margin-left:-1px;background:var(--cut);pointer-events:none}.stage__line:after{content:"";position:absolute;top:50%;left:50%;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;background:#fff;border:2px solid var(--cut)}.stage.is-solo .stage__orig,.stage.is-solo .stage__line{display:none}.stage .cutline{fill:none;stroke:var(--cut);stroke-width:1.4px;vector-effect:non-scaling-stroke;stroke-linejoin:round}.compare{margin-top:10px;display:flex;align-items:center;gap:12px;font-size:.9rem;color:var(--muted)}.compare input[type=range]{flex:1;max-width:320px}.stage.is-solo+.compare{display:none}.side{display:grid;gap:16px}.controls{display:grid;gap:14px;padding:16px;background:#fffffff0;border:1px solid var(--line);border-radius:var(--radius)}.field{display:grid;gap:4px}.field label,.field .label{font-weight:650;font-size:.95rem}.field .row{display:flex;align-items:center;gap:10px}.field output{min-width:2.5ch;text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.95rem}.field small{color:var(--muted);font-size:.85rem;line-height:1.4}.field select,.field input[type=number]{font:inherit;padding:.5rem .6rem;border:1px solid #aeb7c2;border-radius:var(--radius);background:#fff;color:var(--ink);width:100%}.field input[type=range]{flex:1;accent-color:var(--engrave);min-width:0}.field--check{display:flex;align-items:flex-start;gap:10px}.field--check input{margin-top:.3rem;width:18px;height:18px;accent-color:var(--engrave)}.out{display:grid;gap:10px}.out .stats{margin:0;font-size:.95rem;color:var(--muted);min-height:1.5em}.out .notes{margin:0;padding:10px 12px;border-left:3px solid var(--cut);background:#fff;font-size:.92rem}.out .btns{display:flex;flex-wrap:wrap;gap:10px}.status{min-height:1.5em;margin:14px 0 0;color:var(--muted);font-size:.95rem}.status.is-error{color:var(--cut);font-weight:600}.content{padding:clamp(32px,6vw,64px) 0}.content .cols{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(28px,5vw,56px)}@media(min-width:960px){.content .cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.content .span-2{grid-column:1 / -1}}.content h2{margin:0 0 12px;font-family:var(--display);font-weight:700;font-size:clamp(1.45rem,3vw,1.9rem);line-height:1.15;letter-spacing:-.02em}.content p{margin:0 0 1em;max-width:66ch}.content ol,.content ul{margin:0 0 1em;padding-left:1.3em;max-width:66ch}.content li{margin-bottom:.5em}.content ol li::marker{font-family:var(--display);font-weight:700;color:var(--cut)}.content dl{margin:0;max-width:66ch}.content dt{font-weight:700;margin-top:.9em}.content dd{margin:.1em 0 0;color:var(--muted)}.faq details{border-bottom:1px solid var(--line)}.faq details:first-of-type{border-top:1px solid var(--line)}.faq summary{cursor:pointer;list-style:none;padding:14px 28px 14px 0;position:relative;font-family:var(--display);font-weight:650;font-size:1.12rem;line-height:1.3}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";position:absolute;right:2px;top:12px;font-size:1.4rem;line-height:1;color:var(--cut)}.faq details[open] summary:after{content:"\2212"}.faq details p{padding-bottom:6px}.tools-list{list-style:none;padding:0;margin:0;display:grid;gap:0 32px;max-width:none!important}@media(min-width:720px){.tools-list{grid-template-columns:1fr 1fr}}.tools-list li{margin:0;border-top:1px solid var(--line)}.tools-list a{display:block;padding:14px 0;text-decoration:none;color:var(--ink)}.tools-list a strong{display:block;font-family:var(--display);font-size:1.12rem;color:var(--engrave)}.tools-list a:hover strong{text-decoration:underline}.tools-list a span{color:var(--muted);font-size:.95rem}.prose-page{padding:clamp(28px,6vw,56px) 0 clamp(40px,7vw,72px)}.prose-page h1{margin:0 0 20px;font-family:var(--display);font-weight:750;font-size:clamp(2rem,5vw,3rem);line-height:1.05;letter-spacing:-.03em}.prose-page h2{margin:1.6em 0 .5em;font-family:var(--display);font-size:1.4rem;letter-spacing:-.02em}.site-foot{border-top:1px solid var(--line);background:var(--card);padding:28px 0 36px;font-size:.93rem;color:var(--muted)}.site-foot .wrap{display:grid;gap:18px}.site-foot nav{display:flex;flex-wrap:wrap;gap:6px 20px}.site-foot a{color:var(--muted)}.site-foot a:hover{color:var(--ink)}.site-foot p{margin:0;max-width:70ch}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.content .col section{margin-bottom:2rem}.content .faq-wrap,.content .more{margin-top:clamp(28px,5vw,48px)}.content .more h2{margin-bottom:4px}.foot-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:22px 28px}.foot-cols>div{display:flex;flex-direction:column;gap:6px}.foot-cols h2{margin:0 0 4px;font-size:.95rem;color:var(--ink)}.tbl{overflow-x:auto;margin:14px 0 6px;border:1px solid var(--line);border-radius:10px}.tbl table{width:100%;border-collapse:collapse;font-size:.93rem}.tbl th,.tbl td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}.tbl thead th{background:var(--card);font-weight:650}.tbl tbody th{font-weight:600;white-space:nowrap}.tbl tr:last-child th,.tbl tr:last-child td{border-bottom:0}.content .wide{margin-top:clamp(28px,5vw,48px);max-width:60rem}.tbl td{min-width:11rem}.pro-note{margin:10px 0 0;font-size:.88rem;color:var(--muted)}.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin:18px 0}.plan{border:1px solid var(--line);border-radius:10px;background:var(--card);padding:18px;display:flex;flex-direction:column;gap:8px}.plan h2,.plan h3{margin:0;font-size:1.1rem}.plan p{margin:0;color:var(--muted)}.plan .btn{margin-top:auto;align-self:flex-start}.plan .plan__price{font:700 1.9rem/1.1 var(--display);color:var(--ink)}.plan__price span{font:500 .95rem var(--body);color:var(--muted)}.upgrade{width:min(860px,calc(100vw - 32px));border:1px solid var(--line);border-radius:12px;padding:22px;background:var(--paper);color:var(--ink)}.upgrade::backdrop{background:#11151b8c}.upgrade h2{margin:0 0 8px}.upgrade__close{float:right}.upgrade__err{color:var(--cut);margin:8px 0 0}.upgrade__code{margin-top:14px}.upgrade__code .row,.thanks__ok .row{display:flex;gap:8px;margin-top:8px}.upgrade__code input,.thanks__ok input{flex:1;min-width:0;padding:10px;border:1px solid var(--line);border-radius:var(--radius);font:inherit}.upgrade__fine{margin:14px 0 0;font-size:.85rem;color:var(--muted)}.prose-page .lede{color:var(--muted);font-size:1.12rem;max-width:60ch;margin:0 0 1.4em}.post{max-width:720px}.post p,.post li{line-height:1.7;font-size:1.04rem}.post h2{margin-top:1.9em}.post h3{margin:1.5em 0 .4em;font-family:var(--display);font-size:1.15rem;letter-spacing:-.01em}.post ul,.post ol{padding-left:1.3em}.post li{margin:.35em 0}.post a{text-decoration:underline;text-underline-offset:2px}.post .crumb{margin:0 0 10px;font-size:.9rem}.post-meta{color:var(--muted);font-size:.92rem;margin:-6px 0 1.4em}.tbl{overflow-x:auto;margin:1.2em 0}.tbl table{border-collapse:collapse;width:100%;font-size:.96rem}.tbl th,.tbl td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}.tbl th{font-family:var(--display)}.post-cta{margin:2.2em 0 0;padding:18px 20px;border:1px solid var(--line);border-left:4px solid var(--accent, #d3322a);border-radius:8px;background:var(--card)}.post-cta p{margin:6px 0 0}.post-list{list-style:none;padding:0;margin:1.2em 0;display:grid;gap:14px}.post-list a{display:grid;gap:4px;padding:16px 18px;border:1px solid var(--line);border-radius:8px;background:var(--card);text-decoration:none;color:inherit}.post-list a:hover{border-color:var(--ink)}.post-list span{color:var(--muted);font-size:.97rem}.post-list em{color:var(--muted);font-size:.86rem;font-style:normal}.ustage{min-height:240px;display:grid;place-items:center;padding:12px;overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background-color:#fff;background-image:conic-gradient(#e8ecf0 25%,#fff 0 50%,#e8ecf0 0 75%,#fff 0);background-size:20px 20px}.ustage canvas,.ustage svg{max-width:100%;max-height:70vh;height:auto}.ustage [data-sel]{filter:drop-shadow(0 0 3px #1a73e8)}.work.is-busy .ustage{opacity:.6}.field input[type=color]{width:56px;height:36px;padding:2px;border:1px solid var(--line);border-radius:6px;background:#fff}.ed-extra{display:grid;gap:10px}.ed-extra .label{margin:8px 0 0;font-weight:600}.ed-colors{display:flex;flex-wrap:wrap;gap:8px}.ed-colors input[type=color]{width:36px;height:36px;padding:2px;border:1px solid var(--line);border-radius:6px;background:#fff;cursor:pointer}.ed-row{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-block;justify-self:start;padding:2px 9px;border-radius:999px;background:var(--line);color:var(--ink);font-size:.78rem;font-weight:600}.cat-row{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 1.4em}.cat-row a{padding:6px 12px;border:1px solid var(--line);border-radius:999px;text-decoration:none;color:inherit;font-size:.93rem;background:var(--card)}.cat-row a[aria-current=page]{background:var(--ink);color:#fff;border-color:var(--ink)}.cat-row small{opacity:.7;margin-left:2px}.post-feature{display:grid;gap:8px;padding:22px 24px;border:1px solid var(--line);border-left:4px solid #d3322a;border-radius:10px;background:var(--card);text-decoration:none;color:inherit;margin:0 0 1.6em}.post-feature strong{font-family:var(--display);font-size:1.5rem;line-height:1.15;letter-spacing:-.02em}.post-feature span:not(.chip){color:var(--muted)}.post-feature em{color:var(--muted);font-size:.86rem;font-style:normal}.post-top{margin:0 0 1.4em;padding:10px 14px;background:var(--card);border:1px solid var(--line);border-radius:8px;font-size:.95rem}.toc{margin:0 0 1.8em;padding:14px 18px;border:1px solid var(--line);border-radius:8px;background:var(--card)}.toc ol{margin:8px 0 0;padding-left:1.2em}.toc li{margin:4px 0;font-size:.97rem;line-height:1.4}.post h2[id]{scroll-margin-top:80px}.post-cta--end{margin:2.6em 0 1.6em;padding:24px}.post-cta--end h2{margin:0 0 6px;font-size:1.35rem}.post-cta--end .cta-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.post-cta--end .btn{text-decoration:none}.tag-row,.share{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:1.2em 0;font-size:.93rem}.tag-row>span:first-child,.share>span{color:var(--muted);margin-right:4px}.tag-row a,.tag-plain,.share a{padding:3px 10px;border:1px solid var(--line);border-radius:999px;background:var(--card);text-decoration:none!important;color:inherit}.tag-plain{color:var(--muted)}.author{margin:1.8em 0;padding:16px 18px;border-top:1px solid var(--line)}.author p{margin:6px 0 0;color:var(--muted);font-size:.97rem}.post-more .tools-list{margin-top:1em}.post .tools-list a,.post .post-list a,.post .post-cta .btn,.post .author a.btn{text-decoration:none}.post .tools-list a{color:inherit}.post .tools-list strong{color:var(--ink)}.post .tools-list span{color:var(--muted);text-decoration:none}.post .post-cta--end .btn{color:#fff}.post .post-cta--end .btn--ghost{color:var(--ink)}
