@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bricolage Grotesque Fallback;src:local("Arial");ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.00%;size-adjust:105.43%}.__className_1243c3{font-family:Bricolage Grotesque,Bricolage Grotesque Fallback;font-style:normal}.__variable_1243c3{--font-display:"Bricolage Grotesque","Bricolage Grotesque Fallback"}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/6fe53d21e6e7ebd8-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/8ebc6e9dde468c4a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/9e7b0a821b9dfcb4-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/636a5ac981f94f8b-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Plus Jakarta Sans Fallback;src:local("Arial");ascent-override:98.88%;descent-override:21.15%;line-gap-override:0.00%;size-adjust:104.98%}.__className_532bb9{font-family:Plus Jakarta Sans,Plus Jakarta Sans Fallback;font-style:normal}.__variable_532bb9{--font-body:"Plus Jakarta Sans","Plus Jakarta Sans Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/886030b0b59bc5a7-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/0aa834ed78bf6d07-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/67957d42bae0796d-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/f911b923c6adde36-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/939c4f875ee75fbb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/bb3ef058b751a6ad-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_4dc837{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_4dc837{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}:root{color-scheme:light;--bg:#f5f7fb;--surface:#ffffff;--surface-2:#eef2f7;--text:#0f1a2a;--muted:#4f5d70;--border:#dde3ec;--control-border:#7a8699;--accent:#0c7a64;--accent-strong:#08604f;--accent-soft:#e2f5ef;--accent-contrast:#ffffff;--accent-2:#6246ea;--link:#0a5fb4;--focus:#c25a0a;--fresh-bg:#e0f5ea;--fresh-fg:#12603a;--stale-bg:#fff1d2;--stale-fg:#7a4600;--unavail-bg:#edf0f4;--unavail-fg:#3b4757;--estimate-bg:#e9edff;--estimate-fg:#2c3f94;--error:#b42318;--error-bg:#fdecea;--hero-glow-1:rgb(12 122 100/16%);--hero-glow-2:rgb(98 70 234/13%);--header-bg:rgb(255 255 255/82%);--shadow:0 1px 2px rgb(15 26 42/5%),0 2px 8px rgb(15 26 42/5%);--shadow-lg:0 2px 4px rgb(15 26 42/5%),0 12px 28px rgb(15 26 42/10%);--radius:16px;--radius-sm:10px;--font:var(--font-body),system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans",Arial,sans-serif;--display:var(--font-display),var(--font);--mono:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--ease:cubic-bezier(0.2,0.7,0.2,1)}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;overflow-x:clip;background:var(--bg);color:var(--text);font-family:var(--font);font-size:1rem;line-height:1.6;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"cv11","ss01"}::selection{background:var(--accent);color:var(--accent-contrast)}img,svg{max-width:100%}a{color:var(--link);text-underline-offset:3px;text-decoration-thickness:1px;transition:color .15s var(--ease)}a:hover{text-decoration-thickness:2px}h1,h2,h3{font-family:var(--display);line-height:1.15;margin:0 0 .5rem;letter-spacing:-.02em;font-weight:700;text-wrap:balance}h1{font-size:clamp(1.75rem,5vw,2.6rem);font-weight:800;letter-spacing:-.03em}h2{font-size:clamp(1.25rem,3vw,1.5rem);margin-top:.25rem}h3{font-size:1.08rem;letter-spacing:-.01em}p{margin:0 0 .75rem}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:8px;top:-48px;z-index:100;background:var(--surface);color:var(--text);padding:8px 12px;border-radius:var(--radius-sm);border:2px solid var(--focus)}.skip-link:focus{top:8px}.container{width:100%;max-width:1120px;margin:0 auto;padding-left:16px;padding-right:16px}.main{padding-top:1.25rem;padding-bottom:3rem;min-height:60vh}@media (min-width:720px){.main{padding-top:2rem;padding-bottom:4rem}}.main:focus{outline:none}.muted{color:var(--muted)}.small{font-size:.875rem}.m-0{margin:0}.mono{font-family:var(--mono)}.site-header{position:relative;z-index:50;background:var(--header-bg);border-bottom:1px solid var(--border);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px)}@media (min-width:720px){.site-header{position:-webkit-sticky;position:sticky;top:0}html{scroll-padding-top:120px}}@supports not (((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))) or (-webkit-backdrop-filter:blur(1px))){.site-header{background:var(--surface)}}.header-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;padding-top:10px;padding-bottom:10px}.brand{display:inline-flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;font-family:var(--display);font-weight:800;font-size:1.25rem;letter-spacing:-.03em;min-height:44px}.brand-mark{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--accent) 0,var(--accent-2) 100%);color:#fff;font-weight:800;font-size:1.05rem;box-shadow:0 4px 12px var(--hero-glow-1),inset 0 1px 0 rgb(255 255 255/25%);transition:transform .25s var(--ease)}.brand:hover .brand-mark{transform:rotate(-6deg) scale(1.05)}.header-search{order:3;flex:1 1 100%}@media (max-width:719.98px){.header-search .search-btn-label{display:none}.header-search .btn{padding-left:12px;padding-right:12px}}.theme-toggle{margin-left:auto}@media (min-width:720px){.header-search{order:0;flex:1 1 320px;max-width:520px;margin-left:16px}}.cat-nav ul{list-style:none;margin:0 auto;padding-top:4px;padding-bottom:4px;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr));grid-gap:2px 8px;gap:2px 8px}.cat-nav a{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:999px;color:var(--muted);text-decoration:none;white-space:nowrap;font-size:.94rem;font-weight:600;transition:background .15s var(--ease),color .15s var(--ease)}.cat-nav a:hover{background:var(--surface-2);color:var(--text)}.cat-nav a[aria-current=page]{background:var(--accent-soft);color:var(--accent);font-weight:700}@media (min-width:720px){.cat-nav a{min-height:36px}}.cat-nav-bar{display:none}.nav-toggle{padding-left:6px;padding-right:10px}.nav-toggle-icon{display:inline-block;width:1.25em;text-align:center}@media (max-width:719.98px){.js .cat-nav-bar{display:block;padding-top:2px;padding-bottom:2px}.js .cat-nav[data-open=false] ul{display:none}.js .cat-nav[data-open=true] ul{border-top:1px solid var(--border);padding-bottom:8px;grid-template-columns:1fr 1fr;animation:drop-in .2s var(--ease)}.cat-nav a{color:var(--text)}}@media (min-width:720px){.cat-nav ul{display:flex;flex-wrap:wrap;gap:2px;padding-top:6px;padding-bottom:6px}}@keyframes drop-in{0%{opacity:0;transform:translateY(-4px)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 18px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-weight:650;letter-spacing:-.005em;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s var(--ease),border-color .15s var(--ease),box-shadow .15s var(--ease),transform .15s var(--ease)}.btn:hover{background:var(--surface-2);border-color:var(--control-border)}.btn:active:not([disabled]){transform:translateY(1px)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);box-shadow:0 1px 0 rgb(255 255 255/18%) inset,0 4px 14px var(--hero-glow-1)}.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.spinner{width:1em;height:1em;border-radius:50%;border:2px solid;border-right:2px solid transparent;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{border-color:var(--border)}.btn-small{min-height:44px;padding:4px 12px;font-size:.9rem}.btn-danger{color:var(--error)}.btn[disabled]{opacity:.6;cursor:not-allowed}.theme-label{font-weight:500}input,select,textarea{font:inherit;font-size:max(1rem,16px);color:var(--text);background:var(--surface);border:1px solid var(--control-border);border-radius:var(--radius-sm);padding:10px 12px;min-height:46px;width:100%;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}input::placeholder,textarea::placeholder{color:var(--muted);opacity:.85}input:hover,select:hover,textarea:hover{border-color:var(--text)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--hero-glow-1),0 0 0 1px var(--accent)}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%237a8699' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;cursor:pointer;text-overflow:ellipsis}input[type=date],input[type=datetime-local]{min-width:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}textarea{min-height:96px}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--error);box-shadow:0 0 0 1px var(--error);background-color:var(--error-bg)}.search-form{display:flex;gap:8px}.search-form input{flex:1 1;min-width:0}.search-form-lg input{min-height:56px;font-size:1.08rem;padding-left:18px;border-radius:14px}.search-form-lg .btn{min-height:56px;padding-left:22px;padding-right:22px;border-radius:14px}.search-icon{flex:none}@media (max-width:479.98px){.search-form-lg .search-btn-label{display:none}.search-form-lg .btn{padding-left:16px;padding-right:16px}}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field label{font-weight:650;font-size:.95rem}.field-end{justify-content:flex-end}.field .unit{font-weight:400;color:var(--muted);font-size:.9rem}.field .help{color:var(--muted);font-size:.875rem}.field-error{display:flex;gap:6px;align-items:baseline;color:var(--error);font-size:.88rem;font-weight:600;animation:drop-in .15s var(--ease)}.field-error:before{content:"!";flex:none;display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:var(--error);color:var(--surface);font-size:.7rem;font-weight:800;transform:translateY(2px)}.form-grid{display:grid;grid-template-columns:1fr;grid-gap:16px 18px;gap:16px 18px}@media (min-width:640px){.form-grid{grid-template-columns:1fr 1fr}}.form-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}@media (max-width:479.98px){.form-actions .btn{flex:1 1 auto}}.inline-form{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}.inline-form .field{flex:1 1 160px}.checkbox{display:inline-flex;align-items:center;gap:8px}.checkbox input{width:20px;min-height:20px;height:20px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);min-width:0}@media (min-width:720px){.card{padding:22px}}.section{margin-top:2.25rem}@media (min-width:720px){.section{margin-top:3rem}}.grid{display:grid;grid-gap:14px;gap:14px;list-style:none;margin:0;padding:0}.grid-tools{grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr))}.grid-2{grid-template-columns:1fr}@media (min-width:820px){.grid-2{grid-template-columns:1fr 1fr}}.grid-cats{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr))}@media (min-width:720px){.grid-cats{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}}.tool-card{position:relative;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease)}.tool-card p{margin:0;color:var(--muted);font-size:.92rem;line-height:1.5}.tool-card-title{font-size:1.05rem;margin-bottom:6px;padding-right:22px;text-wrap:pretty}.tool-card a.stretched{text-decoration:none;color:var(--text)}.tool-card a.stretched:before{content:"→";position:absolute;top:16px;right:16px;font-size:1.1rem;line-height:1;color:var(--accent);opacity:0;transform:translateX(-6px);transition:opacity .2s var(--ease),transform .2s var(--ease)}.tool-card:focus-within a.stretched:before,.tool-card:hover a.stretched:before{opacity:1;transform:none}@media (hover:none){.tool-card a.stretched:before{opacity:.8;transform:none}}@media (max-width:479.98px){.grid-tools .card{padding:14px 16px}}.tool-card a.stretched:after{content:"";position:absolute;inset:0;border-radius:var(--radius)}.tool-card:focus-within,.tool-card:hover{border-color:var(--accent);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.tool-card:hover a.stretched{color:var(--accent)}.tool-card-muted{background:var(--surface-2);box-shadow:none}.tool-card-muted:hover{border-color:var(--border);box-shadow:none;transform:none}.cat-tile a{text-decoration:none;color:var(--text)}.cat-tile .counts{color:var(--muted);font-size:.86rem;margin:0}.cat-tile .tool-card-title{font-size:1rem}.page-head{margin-bottom:1rem}.lead{font-size:clamp(1rem,2.2vw,1.15rem);color:var(--muted);max-width:62ch;line-height:1.6}.prose{max-width:72ch}.prose h2{margin-top:1.75rem}.link-list{display:grid;grid-gap:8px}.chips,.link-list{list-style:none;padding:0;margin:0;gap:8px}.chips{display:flex;flex-wrap:wrap}.chips a{display:inline-flex;align-items:center;min-height:44px;padding:6px 16px;border:1px solid var(--border);border-radius:999px;text-decoration:none;background:var(--surface);color:var(--text);font-size:.93rem;font-weight:600;transition:border-color .15s var(--ease),background .15s var(--ease)}.chips a:hover{border-color:var(--accent);background:var(--accent-soft)}.chips a[aria-current=page]{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.hero{position:relative;isolation:isolate;padding:1.75rem 0 .75rem}.hero:before{content:"";position:absolute;z-index:-1;top:-3rem;left:calc(50% - 50vw);right:calc(50% - 50vw);height:30rem;background:radial-gradient(38rem 18rem at 18% 30%,var(--hero-glow-1),transparent 70%),radial-gradient(32rem 16rem at 82% 15%,var(--hero-glow-2),transparent 70%);-webkit-mask-image:linear-gradient(180deg,#000 55%,transparent);mask-image:linear-gradient(180deg,#000 55%,transparent);pointer-events:none}.hero h1{margin-bottom:.6rem;font-size:clamp(2.1rem,7vw,3.6rem);line-height:1.04}.hero h1 .grad{background:linear-gradient(100deg,var(--accent) 10%,var(--accent-2) 90%);-webkit-background-clip:text;background-clip:text;color:transparent}.hero .lead{margin-bottom:1.25rem}.hero .search-form{max-width:720px}.eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0 0 .9rem;padding:4px 12px 4px 6px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);font-size:.82rem;font-weight:600}.eyebrow-dot{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-weight:700}@media (min-width:720px){.hero{padding:2.5rem 0 1rem}}.breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:0 4px;list-style:none;padding:0;margin:-6px 0 .5rem;font-size:.9rem;color:var(--muted)}.breadcrumbs li{display:flex}.breadcrumbs a,.breadcrumbs li{align-items:center;min-height:44px}.breadcrumbs a{display:inline-flex}.breadcrumbs li+li:before{content:"›";margin-right:4px}.rate-hero{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}.rate-value{font-family:var(--display);font-size:clamp(2.2rem,9vw,3.4rem);font-weight:800;letter-spacing:-.035em;line-height:1.05;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.rate-unit{color:var(--muted);font-weight:600}.kv{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--border)}.kv:last-child{border-bottom:0}.kv .v{font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.label-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0 10px}.market-label{font-size:.9rem;color:var(--muted)}.source-line{display:flex;flex-wrap:wrap;gap:4px 18px;margin:10px 0 0;font-size:.85rem;color:var(--muted)}.source-line div{display:flex;min-width:0}.source-line dt{font-weight:600}.source-line dt:after{content:":"}.source-line dd{margin:0;min-width:0}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:.78rem;font-weight:700;white-space:nowrap;letter-spacing:.01em}.badge-dot{width:8px;height:8px;border-radius:50%;background:currentColor}.badge-fresh{background:var(--fresh-bg);color:var(--fresh-fg)}.badge-stale{background:var(--stale-bg);color:var(--stale-fg)}.badge-unavailable{background:var(--unavail-bg);color:var(--unavail-fg)}.badge-estimate,.badge-info{background:var(--estimate-bg);color:var(--estimate-fg)}.pill{display:inline-block;font-size:.75rem;font-weight:700;padding:1px 8px;border-radius:999px;vertical-align:middle;white-space:nowrap}.pill-live{background:var(--fresh-bg);color:var(--fresh-fg)}.pill-planned{background:var(--unavail-bg);color:var(--unavail-fg)}.pill-blocked{background:var(--stale-bg);color:var(--stale-fg)}.notice{padding:12px 16px;border-radius:var(--radius-sm);margin:12px 0;border:1px solid transparent}.notice-stale{background:var(--stale-bg);color:var(--stale-fg)}.notice-info,.notice-unavailable{background:var(--unavail-bg);color:var(--unavail-fg)}.notice-warn{background:var(--stale-bg);color:var(--stale-fg)}.notice-error{background:var(--error-bg);color:var(--error);border-color:color-mix(in srgb,var(--error) 35%,transparent);font-weight:600}.notice-draft{background:var(--stale-bg);color:var(--stale-fg);border:1px dashed}.unavailable{border:1px dashed var(--border);border-radius:var(--radius);padding:18px;background:var(--surface-2)}.unavailable-title{font-weight:700;margin-bottom:6px}.unavailable-body>:last-child{margin-bottom:0}.estimate{border-left:4px solid var(--estimate-fg)}.table-wrap{position:relative;overflow-x:auto;max-width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}tbody tr{transition:background .12s var(--ease)}tbody tr:hover{background:var(--surface-2)}table{border-collapse:collapse;width:100%;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}caption{font-weight:700;padding:10px 12px}caption,td,th{text-align:left}td,th{padding:9px 12px;border-bottom:1px solid var(--border);white-space:nowrap}tbody tr:last-child td,tbody tr:last-child th{border-bottom:0}thead th{background:var(--surface-2);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}td.num,th.num{text-align:right}.block{display:block}table.compact td,table.compact th{white-space:normal;padding:8px}td.wrap{white-space:normal;min-width:200px}.result{margin-top:16px}.result-headline{font-family:var(--display);font-size:clamp(1.9rem,8vw,2.8rem);font-weight:800;letter-spacing:-.03em;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin:2px 0 6px;color:var(--accent);overflow-wrap:anywhere}.result>.card,.result>section.card{border-color:color-mix(in srgb,var(--accent) 40%,var(--border));background:linear-gradient(180deg,var(--accent-soft),transparent 9rem),var(--surface);animation:drop-in .25s var(--ease)}.result-label{color:var(--muted);font-weight:600;margin:0}.slab-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:4px 10px;gap:4px 10px;align-items:start;padding:8px 0 12px;border-bottom:1px solid var(--border);margin-bottom:8px}.slab-row-head{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:8px}.slab-row-title{font-weight:700}.slab-row .field label{font-size:.9rem}fieldset{border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;margin:0;min-width:0}legend{font-weight:700;padding:0 6px}.formula,.methodology code{font-family:var(--mono);background:var(--surface-2);padding:2px 6px;border-radius:6px;font-size:.9rem}.formula{display:block;padding:10px 12px;white-space:pre-wrap}.faq details{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);margin-bottom:10px;transition:border-color .15s var(--ease)}.faq details[open]{border-color:var(--accent)}.faq summary{cursor:pointer;padding:14px 16px;font-weight:650;list-style:none;display:flex;justify-content:space-between;gap:12px;align-items:center}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";flex:none;font-size:1.3rem;line-height:1;color:var(--accent);transition:transform .2s var(--ease)}.faq details[open] summary:after{transform:rotate(45deg)}.faq details p{padding:0 14px 12px;margin:0}.times-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,140px),1fr));grid-gap:10px;gap:10px;list-style:none;padding:0;margin:0}.times-grid li{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px}.times-grid .t{font-family:var(--display);font-size:1.6rem;font-weight:800;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;display:block}.forecast-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr));grid-gap:10px}.clock-grid,.forecast-grid{display:grid;gap:10px;list-style:none;padding:0;margin:0}.clock-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));grid-gap:10px}.clock-time{font-family:var(--display);font-size:1.75rem;font-weight:800;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.attributions{margin-top:2.5rem;padding:12px 16px;border-top:1px solid var(--border);font-size:.875rem;color:var(--muted)}.attributions-title{font-size:.9rem;margin:0 0 4px}.attributions ul{padding-left:18px}.site-footer{background:var(--surface);border-top:1px solid var(--border);padding:32px 0 16px}.footer-grid{display:grid;grid-gap:8px 20px;gap:8px 20px;grid-template-columns:1fr 1fr}.footer-grid>:first-child{grid-column:1/-1;margin-bottom:8px}@media (min-width:720px){.footer-grid{grid-template-columns:2fr 1fr 1fr;gap:24px}.footer-grid>:first-child{grid-column:auto;margin-bottom:0}}.footer-brand{font-family:var(--display);font-weight:800;font-size:1.3rem;letter-spacing:-.03em;margin-bottom:2px}.footer-h{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-family:var(--font);font-weight:700}.site-footer li a{color:var(--text);text-decoration:none}.site-footer li a:hover{color:var(--accent);text-decoration:underline}.site-footer ul{list-style:none;margin:0;padding:0;display:grid;grid-gap:0;gap:0}.site-footer li a{display:inline-flex;align-items:center;min-height:40px}.footer-bottom{margin-top:16px;padding-top:12px;border-top:1px solid var(--border)}.admin-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 16px;padding:0;list-style:none}.admin-tabs button[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.stat-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr));grid-gap:10px;gap:10px}.stat{font-family:var(--display);font-size:1.7rem;font-weight:800;letter-spacing:-.02em}.table-wrap summary{display:flex;align-items:center;min-height:44px;cursor:pointer}.admin-doc-links a{display:inline-flex;align-items:center;min-height:44px}pre.json{font-family:var(--mono);font-size:.8rem;white-space:pre-wrap;margin:0;max-width:420px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media print{.form-actions,.site-footer,.site-header{display:none}}.market-table .unit{display:block;font-weight:400;font-size:.85rem;color:var(--muted)}.strong{font-weight:700}.chg{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.chg-up{color:var(--chg-up,#b42318)}.chg-down{color:var(--chg-down,#067647)}.chg-flat{color:var(--muted)}.spark{display:block;color:var(--accent,currentColor);max-width:100%;height:auto}.spi-source{margin-bottom:12px}.moon-row{display:flex;flex-wrap:wrap;gap:20px;align-items:center}.moon-row .stat-row{flex:1 1 260px}.moon-icon .moon-dark{fill:var(--moon-dark,#2b3340);stroke:var(--control-border,#768293);stroke-width:1}.moon-icon .moon-lit{fill:var(--moon-lit,#f4e7b4)}.city-picker{margin:12px 0}.city-picker>summary{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--control-border,#768293);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;font-weight:600}.city-picker[open]>summary{margin-bottom:10px}@media (max-width:479px){.hide-narrow{display:none}.market-table td,.market-table th{padding-left:6px;padding-right:6px}}:root{--bg:#f6f7fb;--border:#e4e8ef;--surface-2:#f1f4f8;--shadow:0 1px 2px rgb(15 26 42/4%),0 4px 14px rgb(15 26 42/4%);--shadow-lg:0 2px 6px rgb(15 26 42/6%),0 16px 32px rgb(15 26 42/9%);--gold:#c88a12;--gold-soft:#fff4dc;--up:#c0362c;--down:#12805c}.site-header{position:-webkit-sticky;position:sticky;top:0}.header-row{flex-wrap:nowrap}.header-search{flex:1 1 auto;min-width:0}.cat-nav{border-top:1px solid var(--border)}.hub{position:relative;flex:0 0 auto}.hub-btn{display:inline-flex;align-items:center;gap:10px;height:42px;padding:0 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-weight:700;cursor:pointer;box-shadow:var(--shadow);transition:transform .15s var(--ease),box-shadow .15s var(--ease)}.hub-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg)}.hub-badges,.hub-flame{display:inline-flex;align-items:center;gap:4px}.hub-flame .icon{color:#e8590c}.hub-badges .icon{color:var(--gold)}.hub-sep{width:1px;height:18px;background:var(--border)}.hub-panel{position:absolute;right:0;top:calc(100% + 10px);width:min(360px,calc(100vw - 32px));padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:pop .18s var(--ease);z-index:60}@keyframes pop{0%{opacity:0;transform:translateY(-6px) scale(.98)}}.progress-skeleton{height:220px;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--surface-2),#fff,var(--surface-2));background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.progress-summary{display:grid;grid-gap:16px;gap:16px}.ps-row{justify-content:space-between;gap:12px;flex-wrap:wrap}.ps-row,.ps-stat{display:flex;align-items:center}.ps-stat{gap:10px}.ps-stat strong{display:block;font-family:var(--display);font-size:1.6rem;line-height:1}.ps-stat span:not(.ps-icon){font-size:.8rem;color:var(--muted)}.ps-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px}.ps-flame{background:#fff1e6;color:#e8590c}.week-dots{display:flex;gap:6px;list-style:none;margin:0;padding:0}.week-dots li{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface-2);color:var(--muted);font-size:.7rem;font-weight:700}.week-dots li.on{background:linear-gradient(135deg,#ff922b,#e8590c);color:#fff}.ps-explore-head{display:flex;justify-content:space-between;font-size:.85rem;color:var(--muted);margin-bottom:6px}.ps-explore-head strong{color:var(--text)}.bar{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden}.bar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .6s var(--ease)}.badge-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;list-style:none;margin:0;padding:0}.badge-grid li{display:grid;justify-items:center;grid-gap:4px;gap:4px;padding:10px 6px;border-radius:var(--radius-sm);background:var(--surface-2);text-align:center;color:var(--muted)}.badge-grid li.got{background:var(--gold-soft);color:var(--text)}.badge-medal{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#fff;color:#9aa5b4;box-shadow:inset 0 0 0 1px var(--border)}.badge-medal.got,.got .badge-medal{background:linear-gradient(135deg,#ffd43b,var(--gold));color:#fff;box-shadow:0 3px 10px rgb(200 138 18/30%)}.badge-name{font-size:.75rem;font-weight:700;line-height:1.2}.badge-hint{font-size:.68rem;line-height:1.2}.ps-note{margin:0;font-size:.75rem;color:var(--muted);text-align:center}.toast-region{position:fixed;right:16px;bottom:16px;z-index:80}.toast{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);animation:toast-in .35s var(--ease)}.toast strong{display:block;font-size:.75rem;color:var(--muted);font-weight:600}.toast span:last-child{font-weight:700}@keyframes toast-in{0%{opacity:0;transform:translateY(12px) scale(.96)}}.hero{padding:2.25rem 0 1rem;text-align:center}.hero h1{font-size:clamp(1.9rem,5.5vw,3rem);max-width:18ch;margin:0 auto 1.25rem}.hero .search-form{max-width:620px;margin:0 auto}.quick{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;list-style:none;margin:14px 0 0;padding:0}.quick a{display:inline-block;padding:6px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:.875rem;font-weight:600;text-decoration:none;transition:border-color .15s var(--ease),color .15s var(--ease)}.quick a:hover{border-color:var(--accent);color:var(--accent-strong)}.tiles{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:12px;gap:12px;margin-top:1.5rem}@media (min-width:820px){.tiles{grid-template-columns:repeat(4,1fr)}}.tile{display:grid;grid-gap:2px;gap:2px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text);text-decoration:none;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}.tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.tile-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.tile-label{font-size:.8rem;color:var(--muted);font-weight:600}.tile-value{font-family:var(--display);font-size:clamp(1.25rem,3.4vw,1.6rem);font-weight:800;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tile-note{font-size:.75rem;color:var(--muted)}.dot{width:9px;height:9px;border-radius:50%;background:#22b573;box-shadow:0 0 0 3px rgb(34 181 115/18%)}.dot-stale{background:#f59f00;box-shadow:0 0 0 3px rgb(245 159 0/18%)}.dot-unavailable{background:#adb5bd;box-shadow:none}.icon{flex:0 0 auto;vertical-align:middle}.icon-chip{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--accent-soft);color:var(--accent-strong);flex:0 0 auto}.icon-chip-lg{width:54px;height:54px;border-radius:15px}.play{display:grid;grid-gap:16px;gap:16px}@media (min-width:900px){.play{grid-template-columns:1.4fr 1fr}}.game{display:grid;grid-gap:14px;gap:14px;background:radial-gradient(28rem 12rem at 100% 0,rgb(98 70 234/7%),transparent 70%),var(--surface)}.game-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.game-head h2{margin:0}.game-sub{margin:2px 0 0;color:var(--muted);font-size:.9rem}.game-meter{display:flex;align-items:center;gap:10px}.game-run{display:inline-flex;align-items:center;gap:3px;padding:4px 10px;border-radius:999px;background:#fff1e6;color:#c2410c;font-weight:700;font-size:.85rem}.game-score{font-family:var(--display);font-weight:800;font-size:1.6rem;line-height:1}.game-score small{font-size:.9rem;color:var(--muted)}.game-steps{display:flex;gap:4px;list-style:none;margin:0;padding:0}.game-steps li{flex:1 1;height:5px;border-radius:999px;background:var(--surface-2)}.game-steps li.past{background:var(--accent)}.game-steps li.now{background:var(--accent-2)}.game-card{padding:20px;border-radius:var(--radius);background:var(--surface-2);text-align:center;transition:background .3s var(--ease)}.game-card.is-right{background:#e7f7ef;animation:bump .35s var(--ease)}.game-card.is-wrong{background:#fdeeec;animation:shake .35s var(--ease)}@keyframes bump{50%{transform:scale(1.015)}}@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}.game-item{margin:0;font-family:var(--display);font-size:clamp(1.15rem,3vw,1.4rem);font-weight:800;letter-spacing:-.02em}.game-unit{margin:2px 0 14px;color:var(--muted);font-size:.85rem}.game-prices{display:flex;justify-content:center;align-items:center;gap:18px;margin-bottom:16px}.game-prices span{display:block;font-size:.75rem;color:var(--muted)}.game-prices strong{font-size:1.2rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.game-arrow{color:var(--muted)}.game-hidden{display:inline-block;min-width:4ch;padding:0 10px;border-radius:8px;background:#fff;color:var(--accent-2)}.game-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.game-btn{display:inline-flex;align-items:center;gap:6px;min-width:120px;justify-content:center;height:48px;border:0;border-radius:14px;font:inherit;font-weight:800;font-size:1rem;color:#fff;cursor:pointer;transition:transform .12s var(--ease),box-shadow .12s var(--ease)}.game-btn:hover{transform:translateY(-2px)}.game-btn:active{transform:translateY(0) scale(.98)}.game-btn.up{background:linear-gradient(135deg,#f06a5f,var(--up));box-shadow:0 6px 16px rgb(192 54 44/25%)}.game-btn.down{background:linear-gradient(135deg,#2bb37f,var(--down));box-shadow:0 6px 16px rgb(18 128 92/25%)}.game-reveal p{display:inline-flex;align-items:center;gap:6px;font-weight:700;margin:0 0 12px}.game-reveal .ok{color:var(--down)}.game-reveal .no{color:var(--up)}.game-done .game-unit{margin-bottom:16px}.game-trophy{display:inline-grid;place-items:center;width:58px;height:58px;margin-bottom:8px;border-radius:50%;background:linear-gradient(135deg,#ffd43b,var(--gold));color:#fff;box-shadow:0 8px 20px rgb(200 138 18/30%);animation:bump .6s var(--ease)}.game-foot{margin:0;font-size:.75rem;color:var(--muted);text-align:center}.icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));grid-gap:10px;gap:10px;list-style:none;margin:0;padding:0}.icon-tile{display:flex;flex-direction:column;align-items:flex-start;gap:10px;height:100%;padding:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-weight:650;font-size:.92rem;line-height:1.3;text-decoration:none;transition:transform .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease)}.icon-tile:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 40%,var(--border));box-shadow:var(--shadow-lg)}.cat-strip{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}.cat-pill{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-weight:600;font-size:.9rem;text-decoration:none;transition:border-color .15s var(--ease)}.cat-pill .icon{color:var(--accent-strong)}.cat-pill small{padding:1px 7px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-weight:700}.cat-pill:hover{border-color:var(--accent)}.tool-card{display:flex;gap:12px;align-items:flex-start}.tool-card-body{min-width:0}.tool-card-title{margin-bottom:2px}.clamp-1{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;margin:0;font-size:.85rem;color:var(--muted)}.page-head{margin:.5rem 0 1.25rem}.page-head .lead{margin-bottom:0}.page-head-icon{display:flex;gap:14px;align-items:center}.page-head-icon h1{margin-bottom:2px}.section-label{font-size:1rem;text-transform:none;color:var(--muted)}.filter-bar{display:flex;align-items:center;gap:8px;max-width:420px;padding:0 14px;height:44px;margin-bottom:4px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted)}.filter-bar input{flex:1 1;min-width:0;border:0;outline:0;background:transparent;font:inherit;color:var(--text);min-height:0;padding:0;box-shadow:none}.filter-bar:focus-within{outline:3px solid var(--focus);outline-offset:2px}.more{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.more>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;cursor:pointer;font-weight:700;list-style:none}.more>summary::-webkit-details-marker{display:none}.more>summary:after{content:"+";font-size:1.3rem;line-height:1;color:var(--muted);transition:transform .2s var(--ease)}.more[open]>summary:after{transform:rotate(45deg)}.more-body{padding:0 18px 14px}.more-body>:last-child{margin-bottom:0}.disclaimer{margin:10px 0 0;font-size:.8rem;color:var(--muted)}.source-line{gap:2px 14px;font-size:.78rem}.source-line div{display:inline-flex;gap:4px}.attributions{margin-top:2rem;padding:10px 0 0;font-size:.78rem}.attributions-title{display:inline;font-size:inherit;font-family:inherit;font-weight:700;margin-right:6px}.attributions ul{display:inline;padding:0;margin:0}.attributions li{display:inline}.attributions li+li:before{content:" · "}.site-footer{padding:22px 0 18px;margin-top:3rem}.footer-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 24px}.footer-brand{margin:0}.site-footer .footer-links{display:flex;flex-wrap:wrap;gap:4px 18px;list-style:none;margin:0;padding:0}.site-footer .footer-links a{min-height:32px;color:var(--muted);text-decoration:none;font-size:.875rem}.site-footer .footer-links a:hover{color:var(--text)}.footer-note{margin:12px auto 0;font-size:.75rem;color:var(--muted)}@media (max-width:560px){.header-row{flex-wrap:wrap}.header-search{order:3;flex-basis:100%}.hub{margin-left:auto}.badge-grid{grid-template-columns:repeat(3,1fr)}.game-btn{min-width:0;flex:1 1}}@media (prefers-reduced-motion:reduce){.game-card,.game-trophy,.hub-panel,.progress-skeleton,.toast{animation:none!important}}.card+.grid,.card+.table-wrap,.unavailable+.grid{margin-top:16px}