@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2) format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2) format("woff2-variations");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-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;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2) format("woff2-variations");unicode-range:U+0000-00FF,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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2) format("woff2-variations");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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2) format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2) format("woff2-variations");unicode-range:U+0000-00FF,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,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}:root{--cf-brand-1: oklch(.22 .033 200);--cf-brand-2: oklch(.28 .052 200);--cf-brand-3: oklch(.36 .079 200);--cf-brand-4: oklch(.45 .108 200);--cf-brand-5: oklch(.55 .128 200);--cf-brand-6: oklch(.65 .139 200);--cf-brand-7: oklch(.75 .136 200);--cf-brand-8: oklch(.84 .106 200);--cf-brand-9: oklch(.92 .058 200);--cf-neutral-0: oklch(.13 .006 75);--cf-neutral-1: oklch(.17 .007 75);--cf-neutral-2: oklch(.21 .008 75);--cf-neutral-3: oklch(.26 .009 75);--cf-neutral-4: oklch(.34 .01 75);--cf-neutral-5: oklch(.52 .011 75);--cf-neutral-6: oklch(.6 .012 75);--cf-neutral-7: oklch(.74 .01 75);--cf-neutral-8: oklch(.88 .007 75);--cf-neutral-9: oklch(.97 .004 75);--cf-positive-2: oklch(.27 .055 150);--cf-positive-4: oklch(.45 .105 150);--cf-positive-6: oklch(.64 .145 150);--cf-positive-7: oklch(.74 .15 150);--cf-caution-2: oklch(.28 .048 75);--cf-caution-4: oklch(.47 .092 75);--cf-caution-6: oklch(.68 .13 75);--cf-caution-7: oklch(.8 .135 75);--cf-negative-2: oklch(.27 .07 25);--cf-negative-4: oklch(.45 .14 25);--cf-negative-6: oklch(.62 .19 25);--cf-negative-7: oklch(.72 .175 25);--cf-color-surface-sunken: oklch(.13 .006 75);--cf-color-surface-base: oklch(.13 .006 75);--cf-color-surface-raised: oklch(.17 .007 75);--cf-color-surface-overlay: oklch(.21 .008 75);--cf-color-surface-inset: oklch(.17 .007 75);--cf-color-border-subtle: oklch(.26 .009 75);--cf-color-border-default: oklch(.34 .01 75);--cf-color-border-control: oklch(.52 .011 75);--cf-color-border-strong: oklch(.6 .012 75);--cf-color-text-primary: oklch(.88 .007 75);--cf-color-text-secondary: oklch(.74 .01 75);--cf-color-text-muted: oklch(.6 .012 75);--cf-color-text-disabled: oklch(.52 .011 75);--cf-color-text-on-accent: oklch(.13 .006 75);--cf-color-accent: oklch(.75 .136 200);--cf-color-accent-hover: oklch(.84 .106 200);--cf-color-accent-active: oklch(.65 .139 200);--cf-color-accent-surface: oklch(.22 .033 200);--cf-color-accent-border: oklch(.36 .079 200);--cf-color-accent-text: oklch(.84 .106 200);--cf-color-positive: oklch(.74 .15 150);--cf-color-positive-surface: oklch(.27 .055 150);--cf-color-positive-border: oklch(.45 .105 150);--cf-color-caution: oklch(.8 .135 75);--cf-color-caution-surface: oklch(.28 .048 75);--cf-color-caution-border: oklch(.47 .092 75);--cf-color-negative: oklch(.72 .175 25);--cf-color-negative-surface: oklch(.27 .07 25);--cf-color-negative-border: oklch(.45 .14 25);--cf-color-focus: oklch(.75 .136 200);--cf-color-scrim: oklch(0 0 0 / .28);--cf-font-display: "Bricolage Grotesque Variable", "Bricolage Grotesque", "Segoe UI", Roboto, ui-sans-serif, system-ui, sans-serif;--cf-font-sans: "IBM Plex Sans Variable", "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--cf-font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--cf-text-2xs: .64rem;--cf-text-xs: .75rem;--cf-text-sm: .8125rem;--cf-text-md: .875rem;--cf-text-lg: 1.09rem;--cf-text-xl: 1.37rem;--cf-text-2xl: 1.71rem;--cf-text-3xl: 2.14rem;--cf-text-display: clamp(2.14rem, 1.6rem + 2.7vw, 3.34rem);--cf-weight-regular: 400;--cf-weight-medium: 500;--cf-weight-semibold: 600;--cf-weight-bold: 700;--cf-leading-tight: 1.15;--cf-leading-snug: 1.3;--cf-leading-normal: 1.55;--cf-tracking-tighter: -.022em;--cf-tracking-tight: -.011em;--cf-tracking-normal: 0;--cf-tracking-wide: .06em;--cf-space-0: 0;--cf-space-1: .25rem;--cf-space-2: .375rem;--cf-space-3: .5rem;--cf-space-4: .75rem;--cf-space-5: 1rem;--cf-space-6: 1.5rem;--cf-space-7: 2rem;--cf-space-8: 3rem;--cf-space-9: 4rem;--cf-density-compact: .5rem;--cf-density-comfortable: 1.5rem;--cf-density-generous: 2rem;--cf-radius-xs: 3px;--cf-radius-sm: 6px;--cf-radius-md: 10px;--cf-radius-full: 999px;--cf-shadow-subtle: 0 1px 2px oklch(0 0 0 / .4);--cf-shadow-raised: 0 4px 12px -2px oklch(0 0 0 / .5);--cf-shadow-overlay: 0 16px 40px -8px oklch(0 0 0 / .62), 0 0 0 1px oklch(.75 .136 200 / .1);--cf-shadow-focus: 0 0 0 2px oklch(.13 .006 75), 0 0 0 4px oklch(.75 .136 200 / .85);--cf-duration-fast: .12s;--cf-duration-base: .2s;--cf-duration-slow: .32s;--cf-ease-out: cubic-bezier(.2, .8, .2, 1);--cf-ease-spring: cubic-bezier(.34, 1.4, .64, 1);--cf-layout-max-width: 1240px;--cf-layout-topbar-height: 52px;--cf-layout-overlay-width: 340px}:root{color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--cf-color-surface-base);color:var(--cf-color-text-primary);font-family:var(--cf-font-sans);font-size:var(--cf-text-md);line-height:var(--cf-leading-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}table,.num,.stat strong,.verdict-numbers,.calc-table,.price,.mono{font-variant-numeric:tabular-nums}a{color:var(--cf-color-accent-text);text-decoration:none;transition:color var(--cf-duration-fast) var(--cf-ease-out)}a:hover{color:var(--cf-color-accent);text-decoration:underline;text-underline-offset:.2em}:focus-visible{outline:none;box-shadow:var(--cf-shadow-focus);border-radius:var(--cf-radius-sm)}::selection{background:var(--cf-color-accent);color:var(--cf-color-text-on-accent)}h1,h2,h3{margin:0 0 var(--cf-space-4);font-weight:var(--cf-weight-semibold)}h1{font-family:var(--cf-font-display);font-size:var(--cf-text-display);font-weight:var(--cf-weight-bold);line-height:var(--cf-leading-tight);letter-spacing:var(--cf-tracking-tighter);color:var(--cf-color-text-primary)}h2{font-size:var(--cf-text-xl);line-height:var(--cf-leading-snug);letter-spacing:var(--cf-tracking-tight)}h3{font-size:var(--cf-text-2xs);font-weight:var(--cf-weight-semibold);text-transform:uppercase;letter-spacing:var(--cf-tracking-wide);color:var(--cf-color-text-muted);margin:var(--cf-space-6) 0 var(--cf-space-3)}h1:first-child,h2:first-child,h3:first-child{margin-top:0}p{margin:0 0 var(--cf-space-3)}.muted{color:var(--cf-color-text-muted)}.small{font-size:var(--cf-text-xs)}.hint{color:var(--cf-color-text-muted);font-size:var(--cf-text-xs)}.error{color:var(--cf-color-negative)}.ok{color:var(--cf-color-positive)}.warn{color:var(--cf-color-caution)}.strong{font-weight:var(--cf-weight-semibold)}.mono{font-family:var(--cf-font-mono);font-size:var(--cf-text-xs);color:var(--cf-color-text-secondary)}.label{color:var(--cf-color-text-muted);font-size:var(--cf-text-2xs);text-transform:uppercase;letter-spacing:var(--cf-tracking-wide);font-weight:var(--cf-weight-medium)}.disclaimer{color:var(--cf-color-text-muted);font-size:var(--cf-text-xs);margin-top:var(--cf-space-5)}.shell{display:flex;flex-direction:column;min-height:100%}.topbar{display:flex;align-items:center;gap:var(--cf-space-6);padding:var(--cf-density-compact) var(--cf-space-6);min-height:var(--cf-layout-topbar-height);border-bottom:1px solid var(--cf-color-border-subtle);background:color-mix(in oklab,var(--cf-color-surface-base) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0;z-index:10}.topbar nav{display:flex;gap:var(--cf-space-1);flex:1;flex-wrap:wrap}.topbar nav a{color:var(--cf-color-text-muted);font-size:var(--cf-text-sm);font-weight:var(--cf-weight-medium);padding:var(--cf-space-2) var(--cf-space-3);border-radius:var(--cf-radius-sm);transition:color var(--cf-duration-fast) var(--cf-ease-out),background var(--cf-duration-fast) var(--cf-ease-out)}.topbar nav a:hover{color:var(--cf-color-text-primary);background:var(--cf-color-surface-raised);text-decoration:none}.topbar nav a.active{color:var(--cf-color-text-primary);background:var(--cf-color-surface-raised)}.topbar-right{display:flex;align-items:center;gap:var(--cf-space-4)}.brand{font-family:var(--cf-font-display);font-size:var(--cf-text-lg);font-weight:var(--cf-weight-bold);letter-spacing:var(--cf-tracking-tighter);color:var(--cf-color-text-primary);white-space:nowrap}.brand:hover{text-decoration:none;color:var(--cf-color-text-primary)}.brand span{color:var(--cf-color-accent)}main{flex:1;width:100%;max-width:var(--cf-layout-max-width);margin:0 auto;padding:var(--cf-space-7) var(--cf-space-6) var(--cf-space-9)}.footer{border-top:1px solid var(--cf-color-border-subtle);padding:var(--cf-space-5) var(--cf-space-6);color:var(--cf-color-text-muted);font-size:var(--cf-text-xs);text-align:center;max-width:var(--cf-layout-max-width);margin:0 auto}.panel{background:var(--cf-color-surface-raised);border:1px solid var(--cf-color-border-default);border-radius:var(--cf-radius-md);padding:var(--cf-density-comfortable);margin-bottom:var(--cf-space-5);box-shadow:var(--cf-shadow-subtle)}.stack>*{margin-bottom:var(--cf-space-5)}.row{display:flex;gap:var(--cf-space-4);align-items:center;flex-wrap:wrap;margin-bottom:var(--cf-space-4)}.inline{display:flex;align-items:center;gap:var(--cf-space-2);color:var(--cf-color-text-muted);font-size:var(--cf-text-sm)}button,.button{font:inherit;font-weight:var(--cf-weight-medium);border-radius:var(--cf-radius-sm);border:1px solid transparent;padding:var(--cf-space-3) var(--cf-space-5);cursor:pointer;display:inline-block;text-align:center;transition:background var(--cf-duration-fast) var(--cf-ease-out),border-color var(--cf-duration-fast) var(--cf-ease-out),color var(--cf-duration-fast) var(--cf-ease-out),transform var(--cf-duration-fast) var(--cf-ease-out)}button:active:not(:disabled),.button:active{transform:translateY(1px)}.primary{background:var(--cf-color-accent);color:var(--cf-color-text-on-accent);font-weight:var(--cf-weight-semibold)}.primary:hover{background:var(--cf-color-accent-hover);color:var(--cf-color-text-on-accent);text-decoration:none}.ghost{background:transparent;color:var(--cf-color-text-secondary);border-color:var(--cf-color-border-control)}.ghost:hover{color:var(--cf-color-text-primary);border-color:var(--cf-color-border-strong);background:var(--cf-color-surface-overlay);text-decoration:none}.danger{background:var(--cf-color-negative-surface);color:var(--cf-color-negative);border-color:var(--cf-color-negative-border)}button.small{padding:var(--cf-space-1) var(--cf-space-3);font-size:var(--cf-text-xs)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{background:var(--cf-color-surface-base);border:1px solid var(--cf-color-border-control);color:var(--cf-color-text-primary);border-radius:var(--cf-radius-sm);padding:var(--cf-space-3) var(--cf-space-4);font:inherit;width:100%;transition:border-color var(--cf-duration-fast) var(--cf-ease-out)}input:hover,select:hover,textarea:hover{border-color:var(--cf-color-border-strong)}input[type=checkbox]{width:auto;accent-color:var(--cf-color-accent)}.field{display:grid;gap:var(--cf-space-1);margin-bottom:var(--cf-space-4);font-size:var(--cf-text-sm)}.field>span:first-child{color:var(--cf-color-text-secondary);font-size:var(--cf-text-xs);font-weight:var(--cf-weight-medium)}.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0 var(--cf-space-5)}.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--cf-space-5);margin-bottom:var(--cf-space-5)}.cards .panel{margin-bottom:0}@media (max-width: 720px){.cards{grid-template-columns:1fr}}.auth{max-width:26rem;margin:var(--cf-space-8) auto}.auth .panel{padding:var(--cf-density-generous)}.auth button.primary{width:100%;margin-top:var(--cf-space-2)}.workspace,.two-column{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:var(--cf-space-5);align-items:start}.result-column{min-width:0}@media (max-width: 940px){.workspace,.two-column{grid-template-columns:1fr}}.dropzone{border:1px dashed var(--cf-color-border-control);border-radius:var(--cf-radius-sm);min-height:170px;display:flex;align-items:center;justify-content:center;margin-bottom:var(--cf-space-4);overflow:hidden;padding:var(--cf-space-3);background:var(--cf-color-surface-base);transition:border-color var(--cf-duration-base) var(--cf-ease-out),background var(--cf-duration-base) var(--cf-ease-out)}.dropzone:hover{border-color:var(--cf-color-accent-border);background:var(--cf-color-accent-surface)}.dropzone img{max-width:100%;max-height:260px;border-radius:var(--cf-radius-xs)}.file-button{position:relative;overflow:hidden;background:transparent;color:var(--cf-color-text-secondary);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-sm);padding:var(--cf-space-3) var(--cf-space-5);cursor:pointer}.file-button input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.camera{width:100%;border-radius:var(--cf-radius-sm);margin-bottom:var(--cf-space-4);background:var(--cf-color-surface-sunken)}.stage-log ol{list-style:decimal inside;padding:0;margin:0}.stage-log li{display:flex;justify-content:space-between;border-bottom:1px dashed var(--cf-color-border-subtle);padding:var(--cf-space-1) 0;color:var(--cf-color-text-muted);font-size:var(--cf-text-xs);font-variant-numeric:tabular-nums}.result-panel{border-color:var(--cf-color-accent-border);box-shadow:var(--cf-shadow-raised)}.result-head{display:flex;justify-content:space-between;gap:var(--cf-space-5);align-items:flex-start;flex-wrap:wrap}.result-head h2{margin-bottom:var(--cf-space-3)}.result-actions{display:flex;gap:var(--cf-space-2)}.chips{display:flex;flex-wrap:wrap;gap:var(--cf-space-2)}.chip{background:var(--cf-color-surface-overlay);border:1px solid var(--cf-color-border-default);border-radius:var(--cf-radius-full);padding:2px var(--cf-space-3);font-size:var(--cf-text-2xs);font-weight:var(--cf-weight-medium);color:var(--cf-color-text-secondary);letter-spacing:var(--cf-tracking-normal)}.chip.good{color:var(--cf-color-positive);border-color:var(--cf-color-positive-border);background:var(--cf-color-positive-surface)}.chip.warn{color:var(--cf-color-caution);border-color:var(--cf-color-caution-border);background:var(--cf-color-caution-surface)}.chip.bad{color:var(--cf-color-negative);border-color:var(--cf-color-negative-border);background:var(--cf-color-negative-surface)}.verdict{display:flex;justify-content:space-between;gap:var(--cf-space-6);flex-wrap:wrap;padding:var(--cf-space-5);padding-left:var(--cf-space-6);border-radius:var(--cf-radius-sm);margin:var(--cf-space-5) 0;border:1px solid transparent;border-left-width:4px}.verdict-buy{background:var(--cf-color-positive-surface);border-color:var(--cf-color-positive-border);border-left-color:var(--cf-color-positive)}.verdict-fair{background:var(--cf-color-caution-surface);border-color:var(--cf-color-caution-border);border-left-color:var(--cf-color-caution)}.verdict-avoid{background:var(--cf-color-negative-surface);border-color:var(--cf-color-negative-border);border-left-color:var(--cf-color-negative)}.verdict-neutral{background:var(--cf-color-surface-overlay);border-color:var(--cf-color-border-default);border-left-color:var(--cf-color-border-strong)}.verdict-label{font-family:var(--cf-font-display);font-weight:var(--cf-weight-bold);font-size:var(--cf-text-xl);line-height:var(--cf-leading-tight);letter-spacing:var(--cf-tracking-tight);margin-bottom:var(--cf-space-1)}.verdict-buy .verdict-label{color:var(--cf-color-positive)}.verdict-fair .verdict-label{color:var(--cf-color-caution)}.verdict-avoid .verdict-label{color:var(--cf-color-negative)}.verdict-neutral .verdict-label{color:var(--cf-color-text-secondary)}.verdict-blurb{color:var(--cf-color-text-secondary);font-size:var(--cf-text-sm)}.verdict-numbers{display:flex;gap:var(--cf-space-6)}.verdict-numbers strong{display:block;font-family:var(--cf-font-display);font-size:var(--cf-text-2xl);font-weight:var(--cf-weight-bold);line-height:var(--cf-leading-tight);letter-spacing:var(--cf-tracking-tight);color:var(--cf-color-text-primary)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--cf-space-3);margin:var(--cf-space-4) 0}.stat{background:var(--cf-color-surface-inset);border:1px solid var(--cf-color-border-subtle);border-radius:var(--cf-radius-xs);padding:var(--cf-space-3) var(--cf-space-4)}.stat strong{display:block;font-size:var(--cf-text-lg);font-weight:var(--cf-weight-semibold);margin-top:2px}.tone-good{color:var(--cf-color-positive)}.tone-bad{color:var(--cf-color-negative)}.factors{list-style:none;padding:0;margin:0 0 var(--cf-space-4)}.factor{display:flex;gap:var(--cf-space-4);padding:var(--cf-space-2) 0;border-bottom:1px dashed var(--cf-color-border-subtle);font-size:var(--cf-text-sm)}.factor-label{min-width:170px;font-weight:var(--cf-weight-medium)}.factor-detail{color:var(--cf-color-text-muted)}.factor-positive .factor-label{color:var(--cf-color-positive)}.factor-negative .factor-label{color:var(--cf-color-negative)}.abstain-panel{border-color:var(--cf-color-caution-border)}.abstain-panel h2{color:var(--cf-color-caution)}.notice{border-radius:var(--cf-radius-sm);padding:var(--cf-space-4) var(--cf-space-5);margin:var(--cf-space-4) 0;font-size:var(--cf-text-sm);border:1px solid transparent}.notice ul{margin:var(--cf-space-2) 0 0;padding-left:var(--cf-space-6)}.notice-warn{background:var(--cf-color-caution-surface);border-color:var(--cf-color-caution-border);color:var(--cf-color-caution)}.notice-info{background:var(--cf-color-accent-surface);border-color:var(--cf-color-accent-border);color:var(--cf-color-accent-text)}.calc summary{cursor:pointer;color:var(--cf-color-accent-text);font-size:var(--cf-text-sm)}.calc-table{width:100%;border-collapse:collapse;margin-top:var(--cf-space-3)}.calc-table th{text-align:left;color:var(--cf-color-text-muted);font-weight:var(--cf-weight-medium);padding:var(--cf-space-1) var(--cf-space-3) var(--cf-space-1) 0;white-space:nowrap}.calc-table td{padding:var(--cf-space-1) var(--cf-space-3) var(--cf-space-1) 0}.table{width:100%;border-collapse:collapse;font-size:var(--cf-text-sm)}.table th{text-align:left;color:var(--cf-color-text-muted);font-weight:var(--cf-weight-semibold);font-size:var(--cf-text-2xs);text-transform:uppercase;letter-spacing:var(--cf-tracking-wide);border-bottom:1px solid var(--cf-color-border-default);padding:var(--cf-space-2) var(--cf-space-3) var(--cf-space-2) 0}.table td{border-bottom:1px solid var(--cf-color-border-subtle);padding:var(--cf-space-3) var(--cf-space-3) var(--cf-space-3) 0;vertical-align:top}.table tbody tr{transition:background var(--cf-duration-fast) var(--cf-ease-out)}.table tbody tr:hover{background:var(--cf-color-surface-inset)}.table .num,.num{text-align:right}.table .title{max-width:320px}.row-excluded{opacity:.5}.chart{margin:0 0 var(--cf-space-4)}.chart svg{width:100%;height:auto}.chart-plot{fill:var(--cf-color-surface-base);stroke:var(--cf-color-border-subtle)}.chart-grid{stroke:var(--cf-color-border-subtle)}.chart-axis{fill:var(--cf-color-text-muted);font-size:var(--cf-text-2xs)}.chart-point{fill:var(--cf-color-accent)}.chart-point.adjusted{fill:none;stroke:var(--cf-color-caution);stroke-width:1.5}.chart-fair{stroke:var(--cf-color-positive);stroke-dasharray:4 4}.chart-fair-label{fill:var(--cf-color-positive);font-size:var(--cf-text-2xs)}.list{list-style:none;padding:0;margin:0}.list li{border-bottom:1px solid var(--cf-color-border-subtle);padding:var(--cf-space-3) 0}.list-item{display:block;width:100%;text-align:left;background:transparent;border:none;color:inherit;padding:var(--cf-space-1) 0;cursor:pointer;border-radius:var(--cf-radius-xs)}.list-item:hover .list-title{color:var(--cf-color-accent)}.list-title{display:block;font-weight:var(--cf-weight-semibold);transition:color var(--cf-duration-fast) var(--cf-ease-out)}.plan{display:flex;flex-direction:column;gap:var(--cf-space-2)}.plan .price{font-family:var(--cf-font-display);font-size:var(--cf-text-2xl);font-weight:var(--cf-weight-bold);letter-spacing:var(--cf-tracking-tight);margin:0}.plan ul{padding-left:var(--cf-space-6);margin:var(--cf-space-1) 0 var(--cf-space-4);font-size:var(--cf-text-sm);color:var(--cf-color-text-secondary)}.plan-current{border-color:var(--cf-color-accent-border);box-shadow:var(--cf-shadow-raised)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
