:root{--bg-base: #faf9f7;--bg-surface: #ffffff;--bg-elevated: #f4f2ee;--bg-hover: #efece6;--bg-active: #e6e2da;--border-subtle: #e8e4dc;--border-default: #d8d3c8;--border-strong: #b6afa0;--text-primary: #1b1a17;--text-secondary: #45423c;--text-tertiary: #6d6961;--text-muted: #96918a;--accent: #2d4f9e;--accent-hover: #23408a;--accent-dim: rgba(45, 79, 158, .08);--accent-line: rgba(45, 79, 158, .26);--status-good: #2f7d4f;--status-warn: #8a6321;--status-bad: #a8342a;--status-info: #2d4f9e;--warn-bg: #fdfaf3;--warn-line: #ddd0b0;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Helvetica, Arial, sans-serif;--font-mono: "SF Mono", ui-monospace, "Cascadia Code", "Fira Code", Consolas, monospace;--fs-xs: .6875rem;--fs-sm: .75rem;--fs-base: .875rem;--fs-lg: 1rem;--fs-xl: 1.125rem;--fs-2xl: 1.5rem;--fs-3xl: 2rem;--sp-xs: .25rem;--sp-sm: .5rem;--sp-md: .75rem;--sp-lg: 1rem;--sp-xl: 1.5rem;--sp-2xl: 2rem;--sp-3xl: 3rem;--radius-sm: 5px;--radius-md: 9px;--radius-lg: 14px;--t-fast: .13s ease;--t-normal: .22s ease;color-scheme:light}[hidden]{display:none!important}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg-base);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.65;-webkit-font-smoothing:antialiased;overflow-wrap:break-word}button{font:inherit;color:inherit;cursor:pointer}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}::selection{background:var(--accent-dim)}#app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.main-content{flex:1 0 auto;width:100%;max-width:1020px;margin:0 auto;padding:var(--sp-2xl) var(--sp-lg) var(--sp-3xl)}.site-footer{flex-shrink:0}.site-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);padding:var(--sp-md) var(--sp-lg);background:#faf9f7e6;backdrop-filter:blur(12px);border-bottom:1px solid var(--border-subtle)}.brand{display:inline-flex;align-items:center;gap:var(--sp-sm);font-size:var(--fs-lg);font-weight:600;letter-spacing:-.015em}.brand svg{color:var(--accent);flex-shrink:0}.header-nav{display:flex;gap:var(--sp-xs);flex-wrap:wrap}.nav-btn{background:none;border:1px solid transparent;border-radius:var(--radius-sm);padding:var(--sp-xs) var(--sp-sm);font-size:var(--fs-sm);color:var(--text-secondary);transition:color var(--t-fast),background var(--t-fast)}.nav-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.intro{margin-bottom:var(--sp-2xl)}.intro h1{margin:0 0 var(--sp-md);font-size:var(--fs-3xl);font-weight:600;line-height:1.18;letter-spacing:-.025em;max-width:20ch}.lede{margin:0 0 var(--sp-lg);font-size:var(--fs-lg);color:var(--text-secondary);max-width:64ch}.trust-badge{display:inline-flex;align-items:center;gap:var(--sp-sm);background:var(--accent-dim);border:1px solid var(--accent-line);border-radius:999px;padding:var(--sp-xs) var(--sp-md);font-size:var(--fs-sm);color:var(--accent);transition:background var(--t-fast);text-align:left}.trust-badge:hover{background:#2d4f9e24}.trust-badge svg{flex-shrink:0}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-sm);min-height:220px;padding:var(--sp-2xl) var(--sp-lg);border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--bg-surface);text-align:center;transition:border-color var(--t-fast),background var(--t-fast);-webkit-tap-highlight-color:transparent}.dropzone:hover,.dropzone:focus-visible{border-color:var(--accent);background:var(--bg-elevated)}.dropzone.is-dragging{border-color:var(--accent);background:var(--accent-dim)}.dropzone svg{color:var(--text-tertiary);margin-bottom:var(--sp-xs)}.dropzone.is-dragging svg,.dropzone:hover svg{color:var(--accent)}.dz-title{margin:0;font-size:var(--fs-lg);font-weight:550}.dz-hint{margin:0;font-size:var(--fs-sm);color:var(--text-tertiary)}.dz-privacy{margin:var(--sp-sm) 0 0;font-size:var(--fs-xs);color:var(--text-muted)}kbd{font-family:var(--font-mono);font-size:.9em;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:4px;padding:0 4px}.samples{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-sm);margin-top:var(--sp-lg)}.samples-label{font-size:var(--fs-sm);color:var(--text-tertiary);width:100%}.sample-pill{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:999px;padding:var(--sp-xs) var(--sp-md);font-size:var(--fs-sm);color:var(--text-secondary);transition:all var(--t-fast)}.sample-pill:hover{border-color:var(--accent-line);color:var(--accent);background:var(--accent-dim)}.sample-pill.is-trap{border-style:dashed}.sample-pill .pill-tag{font-size:var(--fs-xs);color:var(--text-muted);margin-left:var(--sp-xs)}.progress-panel{margin-top:var(--sp-xl);padding:var(--sp-lg);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.progress-row{display:flex;justify-content:space-between;gap:var(--sp-md);font-size:var(--fs-sm);margin-bottom:var(--sp-sm)}.progress-phase{color:var(--text-primary)}.progress-count{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--fs-xs)}.progress-track{height:5px;background:var(--bg-active);border-radius:999px;overflow:hidden}.progress-fill{height:100%;width:0;background:var(--accent);border-radius:999px;transition:width var(--t-fast)}.error-panel{margin-top:var(--sp-xl);padding:var(--sp-lg);background:#a8342a0d;border:1px solid rgba(168,52,42,.3);border-radius:var(--radius-md)}.error-title{display:flex;align-items:center;gap:var(--sp-sm);margin:0 0 var(--sp-sm);font-size:var(--fs-base);font-weight:600;color:var(--status-bad)}.error-detail{margin:0 0 var(--sp-lg);color:var(--text-secondary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-sm);padding:var(--sp-sm) var(--sp-lg);min-height:40px;border-radius:var(--radius-sm);border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-primary);font-size:var(--fs-base);font-weight:500;transition:all var(--t-fast)}.btn:hover{background:var(--bg-hover);border-color:var(--border-strong)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:disabled:hover{background:var(--bg-surface);border-color:var(--border-default)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary:disabled:hover{background:var(--accent);border-color:var(--accent)}.btn-sm{padding:var(--sp-xs) var(--sp-md);min-height:34px;font-size:var(--fs-sm)}.btn-ghost{background:none;border-color:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.results{margin-top:var(--sp-xl);display:flex;flex-direction:column;gap:var(--sp-xl)}.result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap;padding-bottom:var(--sp-lg);border-bottom:1px solid var(--border-subtle)}.result-file{margin:0;font-family:var(--font-mono);font-size:var(--fs-base);word-break:break-all}.result-meta{margin:var(--sp-xs) 0 0;font-size:var(--fs-sm);color:var(--text-tertiary)}.verdict{padding:var(--sp-xl);border-radius:var(--radius-md);border:1px solid var(--border-default);background:var(--bg-surface);border-left:3px solid var(--accent)}.verdict-headline{margin:0;font-size:var(--fs-2xl);font-weight:600;letter-spacing:-.02em;line-height:1.25}.verdict-sub{margin:var(--sp-md) 0 0;color:var(--text-secondary);font-size:var(--fs-base);max-width:68ch}.baserate{padding:var(--sp-lg);border:1px solid var(--warn-line);border-radius:var(--radius-md);background:var(--warn-bg);font-size:var(--fs-base);color:var(--text-secondary);display:flex;gap:var(--sp-md)}.baserate svg{color:var(--status-warn);flex-shrink:0;margin-top:3px}.baserate p{margin:0 0 var(--sp-sm)}.baserate p:last-child{margin-bottom:0}.baserate strong{color:var(--text-primary)}.panel{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);padding:var(--sp-md) var(--sp-lg);border-bottom:1px solid var(--border-subtle);background:var(--bg-elevated)}.panel-title{margin:0;font-size:var(--fs-sm);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary)}.panel-body{padding:var(--sp-lg)}.panel-body>:first-child{margin-top:0}.panel-body>:last-child{margin-bottom:0}.revisions{display:flex;flex-direction:column;gap:var(--sp-md)}.rev-card{border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-surface);overflow:hidden}.rev-card.is-broken{border-color:#a8342a66}.rev-head{display:flex;align-items:center;gap:var(--sp-md);flex-wrap:wrap;padding:var(--sp-md) var(--sp-lg);background:var(--bg-elevated);border-bottom:1px solid var(--border-subtle)}.rev-number{font-size:var(--fs-base);font-weight:600;letter-spacing:-.01em}.rev-size{font-size:var(--fs-sm);color:var(--text-tertiary);margin-left:auto;font-family:var(--font-mono)}.badge{display:inline-flex;align-items:center;padding:1px var(--sp-sm);border-radius:999px;border:1px solid var(--border-default);background:var(--bg-base);font-size:var(--fs-xs);color:var(--text-secondary);white-space:nowrap}.badge-current{border-color:var(--accent-line);color:var(--accent);background:var(--accent-dim)}.badge-broken{border-color:#a8342a66;color:var(--status-bad)}.rev-body{padding:var(--sp-lg)}.rev-what{margin:0 0 var(--sp-md);color:var(--text-primary)}.field-grid{display:grid;grid-template-columns:max-content 1fr;gap:var(--sp-xs) var(--sp-lg);margin:0 0 var(--sp-md);font-size:var(--fs-sm)}.field-grid dt{color:var(--text-tertiary)}.field-grid dd{margin:0;color:var(--text-secondary)}.field-grid dd .mono{font-family:var(--font-mono);font-size:var(--fs-xs);word-break:break-all}.producer-note{margin:var(--sp-xs) 0 0;font-size:var(--fs-sm);color:var(--text-tertiary);max-width:68ch}.card-actions{display:flex;gap:var(--sp-sm);flex-wrap:wrap}.compare-controls{display:flex;gap:var(--sp-md);flex-wrap:wrap;align-items:flex-end;margin-bottom:var(--sp-lg)}.control{display:flex;flex-direction:column;gap:var(--sp-xs);font-size:var(--fs-sm);color:var(--text-tertiary)}.control select,.control input[type=number]{font:inherit;font-size:var(--fs-base);color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:var(--sp-xs) var(--sp-sm);min-height:36px}.compare-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-lg)}.compare-pane{display:flex;flex-direction:column;gap:var(--sp-sm)}.compare-label{font-size:var(--fs-sm);font-weight:600;color:var(--text-secondary)}.compare-page{border:1px solid var(--border-default);border-radius:var(--radius-sm);background:#fff;width:100%;height:auto;display:block}.compare-empty{border:1px dashed var(--border-default);border-radius:var(--radius-sm);padding:var(--sp-2xl) var(--sp-lg);text-align:center;color:var(--text-muted);font-size:var(--fs-sm)}.diff-note{margin:var(--sp-lg) 0 0;font-size:var(--fs-sm);color:var(--text-secondary)}.diff-lines{margin:var(--sp-sm) 0 0;padding:var(--sp-md);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-elevated);font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.6;max-height:260px;overflow:auto;white-space:pre-wrap;word-break:break-word}.diff-add{color:var(--status-good)}.diff-del{color:var(--status-bad)}.table-scroll{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}table.data th,table.data td{text-align:left;padding:var(--sp-sm) var(--sp-md);border-bottom:1px solid var(--border-subtle);vertical-align:top}table.data th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);font-weight:600;white-space:nowrap}table.data td{color:var(--text-secondary)}table.data tbody tr:last-child td{border-bottom:none}table.data code{font-family:var(--font-mono);color:var(--text-primary)}.findings{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-md)}.finding{display:flex;gap:var(--sp-md);font-size:var(--fs-base)}.finding svg{flex-shrink:0;margin-top:4px}.finding-title{color:var(--text-primary);font-weight:550}.finding-detail{color:var(--text-secondary)}.lv-good{color:var(--status-good)}.lv-warn{color:var(--status-warn)}.lv-bad{color:var(--status-bad)}.lv-info{color:var(--status-info)}.action-grid{display:flex;flex-direction:column;gap:var(--sp-lg)}.action-note{margin:0;font-size:var(--fs-sm);color:var(--text-tertiary);max-width:70ch}.action-row{display:flex;gap:var(--sp-sm);flex-wrap:wrap;align-items:center}.modal-actions{margin-top:var(--sp-xl)}.glossary-link{border-bottom:1px dotted var(--text-tertiary);cursor:help;color:inherit}.glossary-link:hover{border-bottom-color:var(--accent);color:var(--accent)}#glossary-tip{position:fixed;z-index:90;max-width:320px;padding:var(--sp-md);background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:0 12px 32px #1e1a1229;font-size:var(--fs-sm);line-height:1.5;color:var(--text-secondary)}#glossary-tip strong{display:block;color:var(--text-primary);margin-bottom:var(--sp-xs)}.modal-backdrop{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--sp-lg);background:#28231a6b;backdrop-filter:blur(3px)}.modal-panel{position:relative;width:100%;max-width:660px;max-height:min(84vh,780px);display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:0 24px 64px #1e1a1242;overflow:hidden}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);padding:var(--sp-lg);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.modal-title{margin:0;font-size:var(--fs-xl);font-weight:600;letter-spacing:-.015em}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;background:none;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-tertiary);transition:all var(--t-fast)}.icon-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.modal-body{padding:var(--sp-lg);overflow-y:auto;-webkit-overflow-scrolling:touch}.modal-body>:first-child{margin-top:0}.modal-body>:last-child{margin-bottom:0}.modal-body h3{font-size:var(--fs-base);margin:var(--sp-xl) 0 var(--sp-sm);color:var(--text-primary)}.modal-body p,.modal-body li{color:var(--text-secondary)}.modal-body ul{padding-left:var(--sp-xl);margin:0 0 var(--sp-lg)}.modal-body li{margin-bottom:var(--sp-sm)}.modal-body code{font-family:var(--font-mono);font-size:.9em;color:var(--text-primary)}.steps{list-style:none;padding:0;margin:0;counter-reset:step}.steps li{position:relative;counter-increment:step;padding-left:var(--sp-2xl);margin-bottom:var(--sp-lg)}.steps li:before{content:counter(step);position:absolute;left:0;top:2px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--accent-dim);border:1px solid var(--accent-line);color:var(--accent);font-size:var(--fs-xs);font-weight:600}.steps strong{color:var(--text-primary)}.trust-list{list-style:none;padding:0;margin:0 0 var(--sp-lg)}.trust-list li{position:relative;padding-left:var(--sp-xl);margin-bottom:var(--sp-sm)}.trust-list li:before{position:absolute;left:0;font-weight:700}.trust-yes li:before{content:"+";color:var(--status-good)}.trust-no li:before{content:"−";color:var(--status-bad)}.trust-eye li:before{content:"·";color:var(--text-tertiary);font-size:1.4em;line-height:1}.drawer-backdrop{position:fixed;inset:0;z-index:60;background:#28231a4d}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:61;width:min(440px,100vw);display:flex;flex-direction:column;background:var(--bg-surface);border-left:1px solid var(--border-default);box-shadow:-12px 0 40px #1e1a1233}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);padding:var(--sp-md) var(--sp-lg);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.drawer-log{flex:1;overflow-y:auto;padding:var(--sp-md) var(--sp-lg);font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.7}.log-line{display:flex;gap:var(--sp-sm);padding:2px 0}.log-time{color:var(--text-muted);flex-shrink:0}.log-mark{flex-shrink:0;width:1ch}.log-msg{color:var(--text-secondary);word-break:break-word}.log-empty{color:var(--text-muted);font-style:italic}.log-toggle{position:fixed;right:var(--sp-lg);bottom:var(--sp-lg);z-index:40;display:inline-flex;align-items:center;gap:var(--sp-sm);padding:var(--sp-sm) var(--sp-lg);min-height:44px;border-radius:999px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:var(--fs-sm);box-shadow:0 6px 20px #1e1a1224;transition:all var(--t-fast)}.log-toggle:hover{border-color:var(--accent-line);color:var(--accent)}.site-footer{border-top:1px solid var(--border-subtle);background:var(--bg-surface);padding:var(--sp-lg)}.footer-inner{max-width:1020px;margin:0 auto;display:flex;gap:var(--sp-md);flex-wrap:wrap;align-items:center;justify-content:center;font-size:var(--fs-sm);color:var(--text-tertiary);text-align:center}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(max-width:640px){.log-toggle{gap:var(--sp-xs);min-width:44px;height:44px;padding:0 var(--sp-md);justify-content:center;right:var(--sp-md);bottom:var(--sp-md)}.log-toggle .log-toggle-label{display:none}.main-content{padding:var(--sp-xl) var(--sp-md) 5.5rem}.site-footer{padding-bottom:4.5rem}.intro h1{font-size:var(--fs-2xl)}.lede{font-size:var(--fs-base)}.site-header{padding:var(--sp-sm) var(--sp-md)}.header-nav{gap:0}.nav-btn{padding:var(--sp-xs);font-size:var(--fs-xs)}.modal-panel{max-height:88vh;max-height:88dvh}.modal-body{padding:var(--sp-md)}.verdict{padding:var(--sp-lg)}.verdict-headline{font-size:var(--fs-xl)}.field-grid{grid-template-columns:1fr;gap:0}.field-grid dd{margin-bottom:var(--sp-sm)}.rev-size{margin-left:0;width:100%}.action-row .btn{flex:1 1 auto}.compare-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
