@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(../media/bricolage-grotesque-vietnamese-wdth-normal.2mlz56fp8ar66.woff2)format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(../media/bricolage-grotesque-latin-ext-wdth-normal.3j44z7nu9fy0b.woff2)format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(../media/bricolage-grotesque-latin-wdth-normal.1wb8qz68xbxwc.woff2)format("woff2-variations");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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-cyrillic-ext-wght-normal.1o60yhwqd7ueg.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-cyrillic-wght-normal.0n0q_nh7u2mrm.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-vietnamese-wght-normal.0nt7ek_nfk5a4.woff2)format("woff2-variations");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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-latin-ext-wght-normal.39q78sztp1ci5.woff2)format("woff2-variations");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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-latin-wght-normal.20f3xrkj613ah.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-mono-cyrillic-ext-wght-normal.2ij5maosbedmv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-mono-cyrillic-wght-normal.33c6-jfmyetfr.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-mono-symbols2-wght-normal.0peao-xekk45v.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-mono-vietnamese-wght-normal.3lyzf0uofk1_2.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-mono-latin-ext-wght-normal.18_jyrw-ln1dm.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/geist-mono-latin-wght-normal.1t7tphccnfzmb.woff2)format("woff2-variations");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;--bg:#f5f4f0;--surface:#fff;--surface-2:#efeee9;--border:#e3e1d9;--border-strong:#cdcac0;--text:#0e0e0d;--text-2:#56544e;--text-3:#8c8a83;--accent:#2a3cf5;--accent-ink:#1f2ec4;--accent-soft:#e8eaff;--on-accent:#fff;--ink:#0e0e0d;--on-ink:#fff;--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--good:#0ca30c;--good-ink:#006300;--warn:#fab219;--warn-ink:#7a5200;--crit:#d03b3b;--crit-ink:#a32222;--frame:#15161a;--part:#24252a;--tire:#111112;--carbon:#2a2b31;--metal:#9b9ca1;--shine:#fff3;--shade:#00000052;--seam:#ffffff29;--spoke:#3a3b40;--rubber:#35363c;--skin:#dba781;--skin-shade:#b98562;--kit:#2a3cf5;--bib:#1b1d22;--sock:#f4f3ef;--shoe:#f4f3ef;--helmet:#f4f3ef;--body-line:#14141473;--grid-dot:#dedcd3;--shadow:0 1px 2px #18160f0a, 0 10px 30px #18160f12;--radius:18px;--radius-sm:10px;--header-h:56px;--font:"Geist Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--display:"Bricolage Grotesque Variable", var(--font);--mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e0e0f;--surface:#17171a;--surface-2:#222226;--border:#2d2d32;--border-strong:#45454c;--text:#f5f4f0;--text-2:#b9b7ae;--text-3:#85837b;--accent:#8794ff;--accent-ink:#aab3ff;--accent-soft:#24274d;--on-accent:#0e0e0f;--ink:#f5f4f0;--on-ink:#0e0e0f;--s1:#3987e5;--s2:#d95926;--s3:#199e70;--good-ink:#5ed35e;--warn-ink:#fab219;--crit-ink:#f08a8a;--frame:#ecebe5;--part:#b9b8b0;--tire:#7c7b74;--carbon:#45464e;--metal:#8f9096;--shine:#ffffff80;--shade:#0003;--seam:#00000038;--spoke:#8f9096;--rubber:#9d9c95;--kit:#6373ff;--bib:#3a3e46;--body-line:#0009;--grid-dot:#26262b;--shadow:0 1px 2px #0000004d, 0 10px 30px #00000059}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:15px/1.45 var(--font);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,dl,dd,ul,ol,figure{margin:0;padding:0}ul,ol{list-style:none}h1{font-family:var(--display);letter-spacing:-.025em;font-size:2rem;font-weight:700;font-stretch:88%;line-height:1.05}.card h2,.card h3,.bike-form h3,.eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.09em;color:var(--text-2);font-size:.7rem;font-weight:500;line-height:1.3}.card h2,.card h3{margin-bottom:12px}.card h2:not(:first-child),.card h3:not(:first-child){margin-top:20px}a{color:inherit}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.unit{color:var(--text-3);font-weight:400}.hint{color:var(--text-2);font-size:.8rem;line-height:1.4}.hint a,.home-steps a{color:var(--accent-ink)}.lead{color:var(--text-2);max-width:62ch;font-size:1.05rem}.site-header{z-index:20;height:var(--header-h);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);align-items:center;gap:20px;padding:0 20px;display:flex;position:sticky;top:0}.brand{font-family:var(--display);letter-spacing:-.03em;align-items:center;gap:9px;font-size:1.3rem;font-weight:800;font-stretch:85%;text-decoration:none;display:inline-flex}.brand-mark{background:var(--accent);border-radius:50%;width:12px;height:12px}.site-header nav{flex:1;justify-content:flex-end;gap:2px;display:flex}.site-header nav a{color:var(--text-2);border-radius:999px;padding:6px 12px;font-size:.92rem;font-weight:500;text-decoration:none}.site-header nav a:hover{color:var(--text)}.site-header nav a[aria-current=page]{color:var(--text);background:var(--surface-2)}.lang-switch{font-family:var(--mono);gap:2px;font-size:.78rem;display:flex}.lang-switch a{color:var(--text-3);border-radius:6px;padding:4px 6px;text-decoration:none}.lang-switch a:hover{color:var(--text)}.lang-switch a[aria-current=true]{color:var(--text);background:var(--surface-2)}.btn{border:1px solid var(--border-strong);background:var(--surface);white-space:nowrap;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:6px;min-height:36px;padding:6px 14px;font-size:.86rem;font-weight:550;text-decoration:none;transition:background .12s,border-color .12s,transform 80ms;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.btn.primary:hover:not(:disabled){background:color-mix(in srgb, var(--ink) 84%, var(--bg))}.btn.accent{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.accent:hover:not(:disabled){background:var(--accent-ink);border-color:var(--accent-ink)}.btn.ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn.danger{color:var(--crit-ink)}.btn.wide{width:100%}.btn.lg{min-height:46px;padding:10px 22px;font-size:1rem}.btn[aria-pressed=true]{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}.btn.theme{min-width:36px;padding:6px}.btn-row{flex-wrap:wrap;gap:8px;display:flex}button.link{color:var(--accent-ink);text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;font-weight:550;text-decoration:underline}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field label,.field .field-label,.slider label{color:var(--text-2);font-size:.8rem;font-weight:550}.field input,.field select{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:38px;padding:6px 12px}.field select:disabled{opacity:.45}.grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.grid-2 .span-2{grid-column:1/-1}.slider{min-width:0}.slider-head{align-items:baseline;gap:8px;display:flex}.slider-head label{flex:1}.slider output{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:600}.slider output.auto{color:var(--text-3);font-weight:450}.auto-toggle{border:1px solid var(--border-strong);font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);cursor:pointer;background:0 0;border-radius:999px;padding:0 7px;font-size:.66rem}.auto-toggle[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}.slider-row{align-items:center;gap:8px;margin-top:4px;display:flex}.slider-row input[type=range]{appearance:none;cursor:pointer;background:0 0;flex:1;min-width:0;height:26px;margin:0}.slider-row input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--fill,50%), var(--border-strong) var(--fill,50%));border-radius:999px;height:4px}.slider-row input[type=range]::-moz-range-track{background:linear-gradient(to right, var(--accent) var(--fill,50%), var(--border-strong) var(--fill,50%));border-radius:999px;height:4px}.slider-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--surface);border:2px solid var(--accent);border-radius:50%;width:18px;height:18px;margin-top:-7px;box-shadow:0 1px 3px #0003}.slider-row input[type=range]::-moz-range-thumb{background:var(--surface);border:2px solid var(--accent);border-radius:50%;width:14px;height:14px;box-shadow:0 1px 3px #0003}.step{border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;border-radius:50%;flex:none;width:26px;height:26px;font-size:1rem;line-height:1}.step:hover{background:var(--surface-2)}.slider .hint{margin-top:4px}.toggle{cursor:pointer;align-items:center;gap:8px;min-height:38px;font-size:.88rem;display:inline-flex}.toggle input{appearance:none;background:var(--border-strong);cursor:pointer;border-radius:999px;flex:none;width:36px;height:20px;margin:0;transition:background .15s;position:relative}.toggle input:after{content:"";background:var(--surface);border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000004d}.toggle input:checked{background:var(--accent)}.toggle input:checked:after{transform:translate(16px)}.segments{background:var(--surface-2);border-radius:999px;padding:3px;display:inline-flex}.segments button{color:var(--text-2);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 14px;font-size:.86rem;font-weight:550}.segments button[aria-selected=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001f}.chip{white-space:nowrap;vertical-align:middle;border:1px solid;border-radius:999px;align-items:center;gap:4px;padding:1px 9px;font-size:.74rem;font-weight:600;display:inline-flex}.chip.opt,.dot.opt{color:var(--good-ink)}.chip.ok,.dot.ok{color:var(--warn-ink)}.chip.bad,.dot.bad{color:var(--crit-ink)}.dot{border:1.5px solid;border-radius:50%;flex:none;place-items:center;width:18px;height:18px;font-size:.66rem;font-weight:700;line-height:1;display:inline-grid}.tag{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--text-2);border:1px solid var(--border-strong);vertical-align:middle;border-radius:999px;padding:1px 8px;font-size:.66rem;font-weight:500}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:20px}.cards .span-2{grid-column:1/-1}.big{font-family:var(--display);letter-spacing:-.03em;margin:0 0 10px;font-size:2.2rem;font-weight:700;font-stretch:85%;line-height:1}.big .unit{font-family:var(--font);letter-spacing:0;font-size:.9rem}.kv{grid-template-columns:1fr auto;gap:6px 12px;font-size:.86rem;display:grid}.kv dt{color:var(--text-2)}.kv dd{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.82rem;font-weight:500}.tiles{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:8px;display:grid}.tiles>div{border-radius:var(--radius-sm);background:var(--surface-2);min-width:0;padding:9px 12px}.tiles dt{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;font-size:.74rem;overflow:hidden}.tiles dd{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.95rem;font-weight:600}.swatch{border-radius:3px;width:10px;height:10px;margin-right:4px;display:inline-block}.legend{color:var(--text-2);flex-wrap:wrap;gap:4px 16px;font-size:.82rem;display:flex}.atelier{height:calc(100dvh - var(--header-h));grid-template:"top top top""side canvas rail"minmax(0,1fr)/348px minmax(0,1fr) 316px;gap:12px;min-height:600px;padding:12px 16px 16px;display:grid}.atelier-top{flex-wrap:wrap;grid-area:top;justify-content:space-between;align-items:center;gap:12px;display:flex}.stepper,.slots{background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:4px;display:inline-flex}.stepper button,.slot{color:var(--text-2);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:8px;padding:6px 16px 6px 7px;font-size:.9rem;font-weight:550;display:inline-flex}.stepper button:hover,.slot:hover:not(:disabled){color:var(--text)}.step-n,.slot-n{background:var(--surface-2);width:24px;height:24px;font-family:var(--mono);border-radius:50%;flex:none;place-items:center;font-size:.74rem;font-weight:600;display:inline-grid}.stepper button[aria-current=step]{background:var(--ink);color:var(--on-ink)}.stepper button[aria-current=step] .step-n{background:var(--accent);color:var(--on-accent)}.slot{font-size:.84rem}.slot:disabled{opacity:.4;cursor:not-allowed}.slot.active{background:var(--accent-soft);color:var(--accent-ink)}.slot.active .slot-n{background:var(--accent);color:var(--on-accent)}.canvas{border:1px solid var(--border);border-radius:var(--radius);background-color:var(--surface);background-image:radial-gradient(var(--grid-dot) 1px, transparent 1px);background-size:22px 22px;grid-area:canvas;min-width:0;min-height:0;position:relative;overflow:hidden}.hero{z-index:1;pointer-events:none;position:absolute;top:20px;left:24px}.hero-value{font-family:var(--display);letter-spacing:-.045em;font-variant-numeric:tabular-nums;margin-top:8px;font-size:clamp(2.8rem,4.6vw,4.8rem);font-weight:700;font-stretch:78%;line-height:.92}.hero-label{color:var(--text-2);margin-top:6px;font-size:.95rem}.hero-label strong{color:var(--text);font-weight:600}.layer-chips{gap:6px;display:flex;position:absolute;bottom:14px;left:16px}.layer-chips button{border:1px solid var(--border-strong);background:var(--surface);color:var(--text-3);cursor:pointer;border-radius:999px;padding:4px 12px;font-size:.78rem;font-weight:550}.layer-chips button[aria-pressed=true]{border-color:var(--ink);color:var(--text)}.layer-chips button[aria-pressed=true]:before{content:"";background:var(--accent);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}.empty{text-align:center;height:100%;color:var(--text-2);place-content:center;justify-items:center;gap:12px;padding:40px 20px;display:grid}.empty h1{color:var(--text)}.rail{scrollbar-width:thin;flex-direction:column;grid-area:rail;gap:10px;min-height:0;display:flex;overflow-y:auto}.rail .card{border-radius:16px;flex:none;padding:16px}.rail .card h2{margin-bottom:10px}.rail .big{font-size:1.9rem}.side{flex-direction:column;grid-area:side;gap:10px;min-width:0;min-height:0;display:flex}.side-scroll{scrollbar-width:thin;flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow-y:auto}.side .card{border-radius:16px;flex:none;padding:16px}.side .card h2{margin-bottom:12px}.card-head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:12px;display:flex}.side .card-head h2{margin:0}.card-head a{white-space:nowrap;font-size:.8rem}.side .card-intro{margin:-6px 0 12px}.side-foot{flex:none}.side .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.side .btn-row .btn{flex:auto}.ctl-grid{grid-template-columns:minmax(0,1fr);align-items:start;gap:14px;display:grid}.ctl-grid.two{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.bike-choice{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.bike-actions{flex-wrap:wrap;gap:8px;display:flex}.bike-note:empty{display:none}.picker{grid-template-columns:1fr 1fr;gap:10px;display:grid}.bike-figure{width:100%;height:auto;max-height:68vh;display:block}.canvas .bike-figure{width:calc(100% - 24px);height:calc(100% - 108px);max-height:none;position:absolute;inset:64px 12px 44px}.bike-figure .ground{stroke:var(--border-strong);stroke-width:4px}.bike-figure .bk-far{opacity:.45}.bike-figure .bk-shadow{fill:#00000017}.bike-figure .bk-frame{fill:var(--frame)}.bike-figure .bk-hi{fill:var(--shine)}.bike-figure .bk-lo{fill:var(--shade)}.bike-figure .bk-gloss{fill:none;stroke:var(--shine);stroke-linecap:round}.bike-figure .bk-gloss.faint{opacity:.5}.bike-figure .bk-gloss.thin{stroke-width:4px}.bike-figure .bk-seam{fill:none;stroke:var(--seam);stroke-width:2.5px}.bike-figure .bk-hood{fill:var(--rubber)}.bike-figure .bk-part,.bike-figure .bk-grip,.bike-figure .bk-crank,.bike-figure .bk-saddle-pad,.bike-figure .bk-paddle{fill:var(--part)}.bike-figure .bk-saddle-shell,.bike-figure .bk-caliper,.bike-figure .bk-lever-blade,.bike-figure .bk-pedal,.bike-figure .bk-hub,.bike-figure .bk-chainring-face{fill:var(--carbon)}.bike-figure .bk-hood,.bike-figure .bk-saddle-pad,.bike-figure .bk-lever-blade{stroke:var(--body-line);stroke-width:2px;stroke-linejoin:round}.bike-figure .bk-rail{fill:none;stroke:var(--carbon);stroke-width:6px;stroke-linejoin:round;stroke-linecap:round}.bike-figure .bk-bar{fill:none;stroke:var(--part);stroke-width:25px;stroke-linecap:round;stroke-linejoin:round}.bike-figure .bk-tape{fill:none;stroke:var(--seam);stroke-width:25px;stroke-dasharray:2.5 9}.bike-figure .bk-lever{fill:none;stroke:var(--metal);stroke-width:10px;stroke-linecap:round}.bike-figure .bk-tire{fill:none;stroke:var(--tire)}.bike-figure .bk-rim{fill:none;stroke:var(--carbon)}.bike-figure .bk-rim-edge{fill:none;stroke:var(--metal);stroke-width:2px;opacity:.6}.bike-figure .bk-spoke{stroke:var(--spoke);stroke-width:1.8px}.bike-figure .bk-rotor{fill:none;stroke:var(--metal);stroke-width:5px;stroke-dasharray:20 5}.bike-figure .bk-rotor-carrier{fill:none;stroke:var(--metal);stroke-width:3px}.bike-figure .bk-cassette,.bike-figure .bk-metal{fill:var(--metal)}.bike-figure .bk-cog{fill:none;stroke:var(--carbon);stroke-width:2px;opacity:.7}.bike-figure .bk-chain{fill:none;stroke:var(--metal);stroke-width:6px;stroke-dasharray:9 3}.bike-figure .bk-teeth{fill:none;stroke:var(--metal);stroke-width:8px;stroke-dasharray:5 4.2}.bike-figure .bk-spider{stroke:var(--part);stroke-width:20px}.bike-figure .body path,.bike-figure .body circle,.bike-figure .body ellipse{stroke:var(--body-line);stroke-width:3px;stroke-linejoin:round}.bike-figure .body .flat{stroke:none}.bike-figure .body .skin{fill:var(--skin)}.bike-figure .body .ear{fill:var(--skin-shade);stroke:none}.bike-figure .body .jersey{fill:var(--kit)}.bike-figure .body .bib{fill:var(--bib)}.bike-figure .body .sock{fill:var(--sock)}.bike-figure .body .shoe{fill:var(--shoe)}.bike-figure .body .sole{fill:var(--bib);stroke:none}.bike-figure .body .cleat{fill:var(--metal);stroke:none}.bike-figure .body .shoe-line{fill:none;stroke-width:2.5px}.bike-figure .body .dial{fill:var(--bib);stroke:none}.bike-figure .body .crease{fill:none;stroke-width:2.5px;stroke-linecap:round}.bike-figure .body .trim{fill:#00000038}.bike-figure .body .helmet{fill:var(--helmet)}.bike-figure .body .vent{fill:none;stroke:var(--bib);stroke-linecap:round;opacity:.75}.bike-figure .body .glasses{fill:var(--bib);stroke:none}.bike-figure .body .strap{fill:none;stroke:var(--bib);stroke-width:6px}.bike-figure .body.far{filter:brightness(.7)saturate(.8)}.bike-figure .joints circle{fill:#fff;stroke:#0b0b0b;stroke-width:4px}.bike-figure .fig-label{fill:var(--text-2);stroke:var(--surface);paint-order:stroke;stroke-linejoin:round;font-family:var(--mono);font-variant-numeric:tabular-nums}.bike-figure .fig-label.strong{fill:var(--text);font-weight:600}.bike-figure .dim line{stroke:var(--text-3);stroke-width:3px;stroke-dasharray:14 10}.bike-figure .mass{fill:var(--text);opacity:.55}.bike-figure .com{fill:var(--surface);stroke:var(--text);stroke-width:5px}.bike-figure .com-cross{stroke:var(--text);stroke-width:5px}.bike-figure .com-line{stroke:var(--text);stroke-width:3px;stroke-dasharray:6 12;opacity:.6}.checks{flex-direction:column;gap:12px;display:flex}.check-head{align-items:center;gap:8px;display:flex}.check-label{flex:1;font-weight:550}.check-value{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.88rem;font-weight:600}.checks.compact{gap:8px;font-size:.88rem}.checks.compact .check-label{font-weight:500}.checks.compact .hint{margin:2px 0 2px 26px}.weight-bar{gap:2px;height:12px;display:flex}.weight-bar .rear{background:var(--s1);border-radius:4px 0 0 4px}.weight-bar .front{background:var(--s2);border-radius:0 4px 4px 0;flex:1}.weight-legend{color:var(--text-2);flex-wrap:wrap;justify-content:space-between;gap:4px 12px;margin-top:8px;font-size:.82rem;display:flex}.weight-legend strong{color:var(--text);font-family:var(--mono);font-weight:600}.swatch.rear{background:var(--s1)}.swatch.front{background:var(--s2)}.scores .legend{margin-bottom:10px}.score-table{border-collapse:collapse;width:100%;font-size:.88rem}.score-table th[scope=row]{text-align:left;white-space:nowrap;width:1%;padding:7px 14px 7px 0;font-weight:550}.score-table th small{color:var(--text-3);font-size:.75rem;font-weight:400;display:block}.score-table td.bars{background:linear-gradient(to right, var(--border) 1px, transparent 1px) 0 0 / 25% 100%;border-right:1px solid var(--border);padding:7px 0}.score-table .bar{border-radius:0 4px 4px 0;min-width:2px;height:7px;display:block}.score-table .bar+.bar{margin-top:2px}.score-table td.num{text-align:right;width:1%;font-family:var(--mono);font-variant-numeric:tabular-nums;padding-left:12px;font-size:.82rem;font-weight:500}.score-table tbody tr:hover{background:var(--surface-2)}.scores+.hint{margin-top:10px}.table-wrap{overflow-x:auto}table.data{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.86rem}table.data th,table.data td{text-align:right;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px}table.data td{font-family:var(--mono);font-size:.82rem}table.data th:first-child{text-align:left;color:var(--text-2);font-weight:450}table.data thead th{color:var(--text);font-weight:600}table.data thead th.current{color:var(--accent-ink)}table.data tr.group th{text-align:left;font-family:var(--mono);text-transform:uppercase;letter-spacing:.09em;color:var(--text-3);padding-top:16px;font-size:.68rem}.delta{color:var(--text-3);font-size:.78rem;font-weight:400}.report{max-width:1240px;scroll-margin-top:var(--header-h);margin:0 auto;padding:44px 16px 72px}.report-head{margin-bottom:20px}.report-head h2{font-family:var(--display);letter-spacing:-.035em;margin-top:6px;font-size:clamp(1.8rem,4vw,2.8rem);font-weight:700;font-stretch:82%;line-height:1}.modal{z-index:50;-webkit-backdrop-filter:blur(4px);background:#0a0a0a6b;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal-box{background:var(--surface);width:min(760px,100%);max-height:calc(100dvh - 32px);box-shadow:var(--shadow);border-radius:22px;overflow-y:auto}.bike-form{flex-direction:column;gap:16px;padding:24px;display:flex}.bike-form h3{font-family:var(--display);text-transform:none;letter-spacing:-.02em;color:var(--text);font-size:1.5rem;font-weight:700;font-stretch:85%}.modal .bike-form .grid-2{grid-template-columns:repeat(3,minmax(0,1fr))}.bike-form>.btn{align-self:flex-start}.bike-form .btn-row{justify-content:flex-end}.errors{color:var(--crit-ink);padding-left:18px;font-size:.84rem;list-style:outside}.home{max-width:1240px;margin:0 auto;padding:0 20px 72px}.home-hero{min-height:calc(86dvh - var(--header-h));grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:center;gap:24px;padding:32px 0;display:grid}.home-hero h1{letter-spacing:-.035em;margin:14px 0 22px;font-size:clamp(3rem,7.6vw,6.6rem);font-weight:800;font-stretch:78%;line-height:.92}.home-hero h1 em{color:var(--accent);font-style:normal}.home-hero .btn-row{margin-top:28px}.home-figure{border:1px solid var(--border);background-color:var(--surface);background-image:radial-gradient(var(--grid-dot) 1px, transparent 1px);background-size:22px 22px;border-radius:28px;padding:20px 12px 8px}.home-steps{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.home-steps li{border-top:2px solid var(--ink);padding:20px}.home-steps .n{font-family:var(--mono);color:var(--accent-ink);font-size:.78rem}.home-steps h2{font-family:var(--display);letter-spacing:-.02em;margin:6px 0;font-size:1.5rem;font-weight:700;font-stretch:85%}.home-steps p{color:var(--text-2);font-size:.92rem}.summary,.compare,.measures{max-width:1240px;margin:0 auto;padding:36px 16px 64px}.summary,.compare{flex-direction:column;gap:14px;display:flex}.summary h1,.compare h1,.measures h1{letter-spacing:-.04em;margin-bottom:8px;font-size:clamp(2.2rem,5vw,3.6rem);font-stretch:80%}.summary-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.summary .kv+.kv{margin-top:6px}.views{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.view{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);break-inside:avoid;padding:16px}.view figcaption{color:var(--text-2);margin-bottom:6px;font-size:.86rem}.view figcaption strong{color:var(--text)}.measures-head{margin-bottom:20px}.measures-layout{grid-template-columns:minmax(280px,400px) minmax(0,1fr);align-items:start;gap:14px;display:grid}.measures-figure{top:calc(var(--header-h) + 14px);position:sticky}.measures-body{flex-direction:column;gap:14px;display:flex}.measures-body .card>*+*{margin-top:10px}.measures-body>.btn{align-self:flex-start}.measure-figure{width:100%;height:auto;max-height:calc(100dvh - 190px);display:block}.measure-figure .silhouette path,.measure-figure .silhouette rect,.measure-figure .silhouette ellipse{fill:var(--surface-2)}.measure-figure .silhouette.outline path,.measure-figure .silhouette.outline rect,.measure-figure .silhouette.outline ellipse{stroke:var(--text-3);stroke-width:10px;stroke-linejoin:round}.measure-figure .floor{stroke:var(--border-strong);stroke-width:6px}.measure-figure .guide{fill:none;stroke:var(--text-3);stroke-width:3px;stroke-dasharray:12 10}.measure-figure .book{fill:var(--text-3)}.measure-figure .dim line{stroke:var(--accent);stroke-width:7px}.measure-figure .dim .end{fill:var(--accent)}.measure-figure .dim .badge{fill:var(--accent);stroke:var(--surface);stroke-width:6px}.measure-figure .dim text{fill:var(--on-accent);font:600 40px var(--mono)}.guide-head{align-items:center;gap:12px;display:flex}.card .guide-head h2{font-family:var(--display);text-transform:none;letter-spacing:-.02em;color:var(--text);margin:0;font-size:1.4rem;font-weight:700;font-stretch:85%}.guide-n{background:var(--accent);width:34px;height:34px;color:var(--on-accent);font-family:var(--mono);border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid}.guide-span{color:var(--text-2);font-size:.88rem}.numbered{gap:4px;padding-left:22px;list-style:decimal;display:grid}.bullets{gap:4px;padding-left:20px;list-style:outside;display:grid}.pitfall{border-left:3px solid var(--warn);color:var(--text-2);padding-left:10px}.pitfall strong{color:var(--text)}.guide:target{border-color:var(--accent)}.compare-entries{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;display:grid}.entry{border-top:4px solid;flex-direction:column;gap:14px;display:flex}.entry-head{justify-content:space-between;align-items:center;display:flex}.card .entry-head h2{color:var(--text);margin:0}.add-entry{border:1px dashed var(--border-strong);border-radius:var(--radius);min-height:120px;color:var(--text-2);cursor:pointer;background:0 0;font-weight:550}.add-entry:hover{border-color:var(--accent);color:var(--text)}.compare-figure{width:100%;height:auto;max-height:62vh;display:block}.compare-figure .bb-mark{fill:var(--surface);stroke:var(--text);stroke-width:4px}.radar{width:100%;height:auto;max-height:320px;display:block}.radar-grid{fill:none;stroke:var(--border);stroke-width:1px}.radar-label{fill:var(--text-2);font-size:9.5px;font-family:var(--font)}.gaps{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.gaps li{border:1px solid var(--border);border-radius:var(--radius-sm);grid-template-columns:auto auto 1fr auto;align-items:center;gap:8px;padding:10px 12px;display:grid}.gaps li.best{border-color:var(--good)}.gaps small{color:var(--text-2);display:block}@media (min-width:981px) and (max-height:820px){:root{--header-h:48px}.atelier{gap:8px;padding:8px 16px 12px}.hero-value{font-size:clamp(2.6rem,4vw,3.6rem)}}@media (min-width:981px) and (max-width:1240px){.atelier{grid-template-columns:328px minmax(0,1fr);grid-template-rows:auto calc(100dvh - var(--header-h) - 84px) auto;grid-template-areas:"top top""side canvas""rail rail";height:auto}.rail{grid-template-columns:repeat(3,minmax(0,1fr));display:grid;overflow:visible}.rail>.btn{display:none}}@media (max-width:980px){.atelier{flex-direction:column;height:auto;min-height:0;display:flex}.atelier-top{scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.canvas{top:var(--header-h);z-index:5;height:46dvh;min-height:290px;box-shadow:var(--shadow);flex-direction:column;flex:none;display:flex;position:sticky}.canvas .bike-figure{flex:1;width:100%;height:auto;min-height:0;position:static}.hero{flex-wrap:wrap;align-items:baseline;gap:0 10px;padding:10px 14px 0;display:flex;position:static}.hero .eyebrow{width:100%}.hero-value{margin-top:2px;font-size:2.2rem}.hero-label{margin:0;font-size:.82rem}.layer-chips{padding:0 10px 8px;position:static}.atelier-top{order:1}.canvas{order:2}.side{order:3}.side-scroll{overflow:visible}.rail{order:4;overflow:visible}.cards,.views,.measures-layout,.home-hero{grid-template-columns:minmax(0,1fr)}.cards .span-2{grid-column:auto}.home-hero{min-height:0}.home-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.measures-figure{position:static}.measure-figure{max-height:70vh}.modal .bike-form .grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.site-header{gap:4px;padding:0 10px}.brand{gap:6px;font-size:1.05rem}.site-header nav{scrollbar-width:none;justify-content:flex-start;gap:0;min-width:0;overflow-x:auto}.site-header nav::-webkit-scrollbar{display:none}.site-header nav a{flex:none;padding:6px 7px;font-size:.82rem}.lang-switch,.btn.theme{flex:none}.btn.theme{min-width:32px}.lang-switch a{padding:4px 3px}.atelier{gap:8px;padding:8px}.stepper button{padding:6px 12px 6px 6px;font-size:.84rem}.layer-chips button{padding:3px 9px;font-size:.72rem}.score-table th small{display:none}.home-steps{grid-template-columns:minmax(0,1fr)}}@media print{.site-header,.no-print{display:none!important}body{background:#fff}.summary{max-width:none;padding:0}.card,.view{break-inside:avoid}}.badge-pending{background:color-mix(in srgb, var(--warn) 22%, transparent);color:var(--text);border-radius:999px;padding:1px 8px;font-size:.74rem;font-weight:600;display:inline-block}.toast{z-index:60;background:var(--text);max-width:calc(100vw - 32px);color:var(--bg);border-radius:10px;padding:10px 16px;font-size:.88rem;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0000002e}.bike-review h4{text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);margin:14px 0 6px;font-size:.8rem}.review-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);align-items:start;gap:20px;display:grid}@media (max-width:720px){.review-grid{grid-template-columns:minmax(0,1fr)}}.admin{max-width:1200px;margin:0 auto;padding:24px 20px 60px}.admin-spacer{flex:1}.admin-login{gap:12px;max-width:380px;margin:40px auto;display:grid}.admin-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.admin-tabs{gap:4px;display:flex}.admin-tabs a{color:var(--text-2);border-radius:999px;padding:6px 12px;text-decoration:none}.admin-tabs a[aria-current=page]{color:var(--text);background:var(--surface-2)}.admin-list .card{margin-bottom:14px}.admin-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.admin-editor-head{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.admin-editor-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start;gap:16px;margin-top:16px;display:grid}.badge-status{background:var(--surface-2);border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:600}.badge-status.pending{background:color-mix(in srgb, var(--warn) 25%, transparent)}.badge-status.verified{background:color-mix(in srgb, var(--good) 25%, transparent)}.badge-status.rejected{background:color-mix(in srgb, var(--crit) 25%, transparent)}@media (max-width:820px){.admin-editor-grid{grid-template-columns:minmax(0,1fr)}}
