:root{--n-0: oklch(.16 .006 260);--n-1: oklch(.19 .006 260);--n-2: oklch(.23 .007 260);--n-3: oklch(.28 .008 260);--n-4: oklch(.34 .009 260);--n-5: oklch(.42 .01 260);--n-6: oklch(.52 .011 260);--n-7: oklch(.62 .011 260);--n-8: oklch(.72 .01 260);--n-9: oklch(.82 .008 260);--n-10: oklch(.9 .006 260);--n-11: oklch(.97 .004 260);--bg: var(--n-0);--bg-raised: var(--n-1);--bg-inset: oklch(.13 .006 260);--border: oklch(.32 .01 260 / .55);--border-strong: oklch(.4 .012 260 / .7);--text: var(--n-10);--text-muted: var(--n-7);--text-faint: var(--n-6);--accent: oklch(.78 .13 175);--accent-strong: oklch(.84 .14 175);--accent-contrast: oklch(.18 .02 175);--accent-subtle: oklch(.78 .13 175 / .1);--accent-border: oklch(.78 .13 175 / .35);--ok: oklch(.75 .15 155);--warn: oklch(.8 .14 85);--danger: oklch(.68 .19 25);--ok-subtle: oklch(.75 .15 155 / .12);--warn-subtle: oklch(.8 .14 85 / .12);--danger-subtle: oklch(.68 .19 25 / .12);--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.5rem;--s-6: 2rem;--s-7: 3rem;--s-8: 4rem;--r-s: 6px;--r-m: 10px;--r-l: 16px;--shadow-1: 0 1px 2px oklch(0 0 0 / .3);--shadow-pop: 0 8px 30px oklch(0 0 0 / .45);--font-ui: "InterVariable", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Code", "JetBrains Mono", Menlo, Consolas, monospace;--header-h: 3.5rem;--container-max: 72rem;color-scheme:dark}:root[data-theme=light]{--n-0: oklch(.985 .002 260);--bg: var(--n-0);--bg-raised: oklch(1 0 0);--bg-inset: oklch(.955 .004 260);--border: oklch(.85 .008 260 / .9);--border-strong: oklch(.78 .01 260);--text: oklch(.25 .01 260);--text-muted: oklch(.45 .012 260);--text-faint: oklch(.55 .012 260);--accent: oklch(.55 .12 175);--accent-strong: oklch(.48 .12 175);--accent-contrast: oklch(.99 .005 175);--accent-subtle: oklch(.55 .12 175 / .09);--accent-border: oklch(.55 .12 175 / .3);--ok: oklch(.55 .15 155);--warn: oklch(.6 .13 85);--danger: oklch(.55 .2 25);--ok-subtle: oklch(.55 .15 155 / .1);--warn-subtle: oklch(.6 .13 85 / .12);--danger-subtle: oklch(.55 .2 25 / .09);--shadow-1: 0 1px 2px oklch(.2 .01 260 / .07);--shadow-pop: 0 8px 30px oklch(.2 .01 260 / .16);color-scheme:light}@font-face{font-family:InterVariable;src:url(/fonts/InterVariable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Inter-fallback;src:local("Helvetica Neue"),local("Arial");size-adjust:107%;ascent-override:90%;descent-override:22.5%;line-gap-override:0%}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}body{background:var(--bg);color:var(--text);font-family:var(--font-ui),"Inter-fallback",sans-serif;font-size:1rem;line-height:1.6;min-height:100dvh;display:flex;flex-direction:column}main{flex:1}img,svg,video{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}code,kbd,pre{font-family:var(--font-mono);font-size:.9em}h1,h2,h3,h4{line-height:1.25;font-weight:650;letter-spacing:-.015em;text-wrap:balance}.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--s-4)}.site-header{position:sticky;top:0;z-index:50;height:var(--header-h);background:color-mix(in oklab,var(--bg) 82%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.header-inner{height:100%;display:flex;align-items:center;gap:var(--s-5)}.logo{display:flex;align-items:center;gap:var(--s-2);color:var(--text);font-weight:700;font-size:1.05rem;letter-spacing:-.01em}.logo:hover{text-decoration:none}.logo-mark{color:var(--accent);font-size:1.15rem}.site-nav{display:flex;gap:var(--s-4)}.site-nav a{color:var(--text-muted);font-size:.925rem;font-weight:500}.site-nav a:hover{color:var(--text);text-decoration:none}.header-actions{margin-left:auto;display:flex;align-items:center;gap:var(--s-3)}.search-trigger{display:flex;align-items:center;gap:var(--s-3);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--r-s);padding:var(--s-1) var(--s-3);color:var(--text-faint);font-size:.875rem;cursor:pointer}.search-trigger:hover{border-color:var(--border-strong);color:var(--text-muted)}.search-trigger kbd{font-size:.75rem;border:1px solid var(--border);border-radius:4px;padding:0 var(--s-1);color:var(--text-faint)}.theme-toggle{background:none;border:1px solid transparent;border-radius:var(--r-s);padding:var(--s-2);color:var(--text-muted);cursor:pointer;display:grid;place-items:center}.theme-toggle:hover{background:var(--bg-inset);color:var(--text)}:root[data-theme=dark] .icon-moon,:root[data-theme=light] .icon-sun{display:none}.site-footer{margin-top:var(--s-8);border-top:1px solid var(--border);background:var(--bg-raised);font-size:.9rem}.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:var(--s-6);padding-block:var(--s-6)}@media(max-width:720px){.footer-grid{grid-template-columns:1fr 1fr}}.footer-brand p{color:var(--text-muted);margin-top:var(--s-2);max-width:32ch}.footer-heading{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin-bottom:var(--s-3)}.footer-col ul{list-style:none;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.footer-col a{color:var(--text-muted)}.footer-col a:hover{color:var(--text)}.footer-legal{border-top:1px solid var(--border);padding-block:var(--s-4);color:var(--text-faint);font-size:.8rem}.breadcrumbs{margin-block:var(--s-4) var(--s-2);font-size:.85rem}.breadcrumbs ol{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:var(--s-2)}.breadcrumbs li{display:flex;gap:var(--s-2);color:var(--text-faint)}.breadcrumbs a{color:var(--text-muted)}.crumb-sep{color:var(--text-faint)}.tool-page{max-width:52rem}.tool-page h1{font-size:2rem;margin-top:var(--s-2)}.tool-lede{color:var(--text-muted);margin-block:var(--s-2) var(--s-4);font-size:1.05rem;max-width:60ch}.prose{margin-top:var(--s-7);max-width:68ch}.prose h2{font-size:1.35rem;margin:var(--s-6) 0 var(--s-3)}.prose h3{font-size:1.1rem;margin:var(--s-5) 0 var(--s-2)}.prose p,.prose ul,.prose ol{margin-bottom:var(--s-3);color:var(--text-muted)}.prose li{margin-bottom:var(--s-1)}.prose strong{color:var(--text)}.prose code{background:var(--bg-inset);border:1px solid var(--border);border-radius:4px;padding:.1em .35em}.prose pre{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--r-m);padding:var(--s-4);overflow-x:auto;margin-bottom:var(--s-4)}.prose pre code{background:none;border:none;padding:0}.prose table{border-collapse:collapse;width:100%;margin-bottom:var(--s-4);font-size:.9rem}.prose th,.prose td{border:1px solid var(--border);padding:var(--s-2) var(--s-3);text-align:left}.prose th{background:var(--bg-inset);color:var(--text)}.toast{position:fixed;bottom:var(--s-5);left:50%;translate:-50% 16px;background:var(--bg-raised);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--r-m);box-shadow:var(--shadow-pop);padding:var(--s-2) var(--s-4);font-size:.9rem;opacity:0;pointer-events:none;transition:opacity .15s ease,translate .15s ease;z-index:100}.toast-visible{opacity:1;translate:-50% 0}.toast[data-kind=error]{border-color:var(--danger)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.tool{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-l);padding:var(--s-5);display:flex;flex-direction:column;gap:var(--s-4);box-shadow:var(--shadow-1)}.pane{width:100%;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--r-m);padding:var(--s-3);color:var(--text);resize:vertical}.pane:focus{border-color:var(--accent-border);outline:none}textarea.pane{min-height:9rem}.pane-mono{font-family:var(--font-mono);font-size:.9rem;tab-size:2;line-height:1.5}.pane-group{display:flex;flex-direction:column;gap:var(--s-2)}.pane-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2)}.pane-toolbar .pane-label{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.pane-toolbar .pane-actions{display:flex;gap:var(--s-2)}.field{display:flex;flex-direction:column;gap:var(--s-1)}.field>label{font-size:.875rem;font-weight:550;color:var(--text-muted)}.field-row{display:flex;flex-wrap:wrap;gap:var(--s-4);align-items:end}.field-error{color:var(--danger);font-size:.85rem;min-height:1.2em}.field-hint{color:var(--text-faint);font-size:.8rem}input[type=text].pane,input[type=url].pane,input[type=email].pane,input[type=password].pane,input[type=number].pane,input[type=search].pane{resize:none}.checkbox-row{display:flex;align-items:center;gap:var(--s-2);font-size:.925rem;color:var(--text-muted)}.checkbox-row input[type=checkbox]{width:1.05rem;height:1.05rem;accent-color:var(--accent)}.range-row{display:flex;align-items:center;gap:var(--s-3)}.range-row input[type=range]{flex:1;accent-color:var(--accent)}.range-value{font-family:var(--font-mono);font-size:.9rem;min-width:3ch;text-align:right;color:var(--text)}.select{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--r-s);padding:var(--s-2) var(--s-3);color:var(--text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);border-radius:var(--r-s);border:1px solid var(--border-strong);background:var(--bg-raised);color:var(--text);padding:var(--s-2) var(--s-4);font-size:.925rem;font-weight:550;cursor:pointer;transition:background .12s ease,border-color .12s ease}.btn:hover{background:var(--bg-inset);border-color:var(--text-faint)}.btn-primary{background:var(--accent);border-color:transparent;color:var(--accent-contrast)}.btn-primary:hover{background:var(--accent-strong);border-color:transparent}.btn-ghost{background:none;border-color:transparent;color:var(--text-muted)}.btn-ghost:hover{background:var(--bg-inset);border-color:transparent;color:var(--text)}.btn-sm{padding:var(--s-1) var(--s-2);font-size:.825rem}.btn:disabled{opacity:.5;cursor:not-allowed}.action-row{display:flex;flex-wrap:wrap;gap:var(--s-2)}.dropzone{border:1.5px dashed var(--border-strong);border-radius:var(--r-m);background:var(--bg-inset);padding:var(--s-6);text-align:center;color:var(--text-muted);cursor:pointer}.dropzone:hover,.dropzone-active{border-color:var(--accent);background:var(--accent-subtle)}.result-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.result-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--r-s);padding:var(--s-2) var(--s-3);font-family:var(--font-mono);font-size:.9rem;overflow-wrap:anywhere}.stat-row{display:flex;flex-wrap:wrap;gap:var(--s-3)}.stat{flex:1 1 8rem;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--r-m);padding:var(--s-3)}.stat .stat-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.stat .stat-value{font-size:1.15rem;font-weight:650;font-family:var(--font-mono)}.badge{display:inline-flex;align-items:center;gap:var(--s-1);font-size:.775rem;font-weight:600;border-radius:999px;padding:.15rem var(--s-2);background:var(--accent-subtle);color:var(--accent);border:1px solid var(--accent-border)}.badge-ok{background:var(--ok-subtle);color:var(--ok);border-color:transparent}.badge-warn{background:var(--warn-subtle);color:var(--warn);border-color:transparent}.badge-danger{background:var(--danger-subtle);color:var(--danger);border-color:transparent}.privacy-badge{display:flex;align-items:center;gap:var(--s-2);font-size:.875rem;border-radius:var(--r-s);padding:var(--s-2) var(--s-3);margin-bottom:var(--s-4);width:fit-content}.privacy-badge svg{flex-shrink:0}.privacy-badge-local{background:var(--ok-subtle);color:var(--ok)}.privacy-badge-api{background:var(--warn-subtle);color:var(--warn)}.faq{margin-top:var(--s-7);max-width:68ch}.faq h2{font-size:1.35rem;margin-bottom:var(--s-3)}.faq-item{border-bottom:1px solid var(--border)}.faq-item summary{cursor:pointer;padding:var(--s-3) 0;font-weight:550;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:var(--s-3)}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:"+";color:var(--text-faint);font-size:1.2rem;line-height:1}.faq-item[open] summary:after{content:"–"}.faq-answer{padding-bottom:var(--s-4);color:var(--text-muted);max-width:62ch}.faq-answer p+p{margin-top:var(--s-2)}.related-tools{margin-top:var(--s-7)}.related-tools h2{font-size:1.35rem;margin-bottom:var(--s-3)}.related-grid{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:var(--s-3)}.related-card{display:flex;flex-direction:column;gap:var(--s-1);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-m);padding:var(--s-3);color:var(--text);height:100%}.related-card:hover{border-color:var(--accent-border);text-decoration:none}.related-card span{font-size:.825rem;color:var(--text-faint);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.affiliate-box{margin-top:var(--s-7);border:1px solid var(--border-strong);border-radius:var(--r-m);padding:var(--s-4);background:var(--bg-raised)}.affiliate-kicker{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);margin-bottom:var(--s-3)}.affiliate-offer{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding-block:var(--s-2)}.affiliate-copy p{color:var(--text-muted);font-size:.9rem;max-width:48ch}.affiliate-disclosure{margin-top:var(--s-3);font-size:.78rem;color:var(--text-faint)}@media(max-width:560px){.affiliate-offer{flex-direction:column;align-items:flex-start}}.ad-container{margin-top:var(--s-7);display:flex;justify-content:center;align-items:center}kbd{background:var(--bg-inset);border:1px solid var(--border);border-bottom-width:2px;border-radius:4px;padding:0 .35em;font-size:.85em}.palette{margin:15vh auto auto;width:min(40rem,calc(100vw - 2rem));padding:0;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-m);box-shadow:var(--shadow-pop);color:var(--text)}.palette::backdrop{background:#0006;backdrop-filter:blur(4px)}.palette-frame{display:flex;flex-direction:column}.palette-input{width:100%;padding:var(--s-3) var(--s-4);background:transparent;border:none;border-bottom:1px solid var(--border);font:inherit;font-size:1.05rem;color:var(--text)}.palette-input:focus{outline:none}.palette-input::placeholder{color:var(--text-faint)}.palette-results{list-style:none;margin:0;padding:var(--s-2);max-height:min(50vh,26rem);overflow-y:auto;display:flex;flex-direction:column;gap:2px}.palette-item{display:flex;flex-direction:column;gap:2px;padding:var(--s-2) var(--s-3);border-radius:var(--r-s);cursor:pointer}.palette-item:hover{background:var(--bg-inset)}.palette-item[aria-selected=true]{background:var(--accent-subtle);outline:1px solid var(--accent-border);outline-offset:-1px}.palette-item-top{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.palette-item-name{font-weight:550}.palette-item-top .badge{flex-shrink:0}.palette-item-desc{font-size:.825rem;color:var(--text-faint);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.palette-empty{padding:var(--s-4);text-align:center;color:var(--text-muted);font-size:.9rem}.hero{padding:var(--s-8) 0 var(--s-6);border-bottom:1px solid var(--border);background:radial-gradient(60rem 30rem at 50% -10rem,var(--accent-subtle),transparent 70%)}.hero h1{font-size:clamp(1.9rem,4vw,2.8rem);max-width:20ch}.hero-sub{color:var(--text-muted);font-size:1.1rem;max-width:60ch;margin-top:var(--s-3)}.hero-search{display:inline-flex;align-items:center;gap:var(--s-3);margin-top:var(--s-5);background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--r-m);padding:var(--s-3) var(--s-4);color:var(--text-muted);cursor:pointer;font-size:1rem}.hero-search:hover{border-color:var(--accent-border)}.hero-search kbd{margin-left:var(--s-2)}.home-main{padding-top:var(--s-6)}.home-section{margin-bottom:var(--s-7)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-4)}.section-head h2{font-size:1.3rem;display:flex;align-items:center;gap:var(--s-2)}.section-icon{color:var(--accent);display:inline-flex}.section-head a{font-size:.9rem;color:var(--text-muted);white-space:nowrap}.home-editorial{margin-top:var(--s-8);padding-top:var(--s-6);border-top:1px solid var(--border);max-width:68ch}.home-editorial h2{font-size:1.4rem;margin-bottom:var(--s-3)}.home-editorial p{color:var(--text-muted);margin-bottom:var(--s-3)}.tool-grid{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:var(--s-3)}.tool-card{display:flex;gap:var(--s-3);align-items:flex-start;height:100%;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-m);padding:var(--s-3) var(--s-4);color:var(--text)}.tool-card:hover{border-color:var(--accent-border);text-decoration:none;transform:translateY(-1px);transition:transform .12s ease,border-color .12s ease}.tool-card-icon{color:var(--accent);display:inline-flex;padding-top:2px;flex-shrink:0}.tool-card-body{display:flex;flex-direction:column;gap:2px;min-width:0}.tool-card-name{font-weight:600;display:flex;align-items:center;gap:var(--s-2)}.tool-card-desc{font-size:.83rem;color:var(--text-faint);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.dot-local{background:var(--ok)}.dot-api{background:var(--warn)}.hub-page,.tools-index,.article-page{max-width:60rem}.hub-intro,.article-prose{max-width:68ch}.hub-intro{margin-top:var(--s-6)}.article-prose h1{font-size:2rem;margin-bottom:var(--s-2)}.article-meta{color:var(--text-faint);font-size:.85rem;margin-bottom:var(--s-5)}.try-tool,.related-guides{margin-top:var(--s-7);max-width:68ch}.try-tool h2,.related-guides h2{font-size:1.3rem;margin-bottom:var(--s-3)}.related-guides ul{list-style:none;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.guide-list{list-style:none;padding:0;display:grid;gap:var(--s-3);margin-top:var(--s-5)}.guide-list a{display:flex;flex-direction:column;gap:2px;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-m);padding:var(--s-4);color:var(--text)}.guide-list a:hover{border-color:var(--accent-border);text-decoration:none}.guide-list span{color:var(--text-faint);font-size:.9rem}.kofi-link{display:inline-block;margin-top:var(--s-3);font-weight:550}
