:root{--bg-base: #faf9f7;--bg-surface: #ffffff;--bg-elevated: #f4f2ee;--bg-hover: #efece6;--bg-active: #e7e3dc;--border-subtle: #e9e5de;--border-default: #d8d2c8;--border-strong: #b6ada0;--text-primary: #1c1917;--text-secondary: #56514b;--text-tertiary: #8b8378;--text-muted: #b0a89c;--accent: #0d5c56;--accent-hover: #0a4a45;--accent-soft: #e4efed;--good: #15803d;--good-soft: #e8f4ec;--warn: #b45309;--warn-soft: #fdf3e6;--bad: #b91c1c;--bad-soft: #fbeceb;--add-bg: #e9f5ec;--del-bg: #fbecec;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "Fira Code", "Cascadia Code", Consolas, monospace;--fs-xs: .6875rem;--fs-sm: .78125rem;--fs-base: .875rem;--fs-lg: 1rem;--fs-xl: 1.25rem;--fs-2xl: 1.75rem;--sp-xs: .25rem;--sp-sm: .5rem;--sp-md: .75rem;--sp-lg: 1rem;--sp-xl: 1.5rem;--sp-2xl: 2.5rem;--r-sm: 4px;--r-md: 8px;--r-lg: 14px;--t-fast: .12s ease}[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.55;-webkit-font-smoothing:antialiased}code,kbd,pre,.mono{font-family:var(--font-mono);font-size:.92em}code{background:var(--bg-elevated);padding:.08em .32em;border-radius:var(--r-sm)}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:2px}button{font:inherit;color:inherit}#app{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1 0 auto;width:100%;max-width:62rem;margin:0 auto;padding:0 var(--sp-lg) var(--sp-2xl)}.site-footer{flex-shrink:0}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);padding:var(--sp-md) var(--sp-lg);background:color-mix(in srgb,var(--bg-base) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--border-subtle)}.brand{display:flex;align-items:center;gap:var(--sp-sm);font-weight:600;letter-spacing:-.01em}.brand-mark{width:18px;height:18px;border-radius:5px;background:linear-gradient(140deg,var(--accent),#14857c);box-shadow:inset 0 0 0 1px #0000000f}.brand-name{font-size:var(--fs-lg)}.topnav{display:flex;align-items:center;gap:var(--sp-xs);flex-wrap:wrap}.nav-btn{background:none;border:1px solid transparent;border-radius:var(--r-md);padding:var(--sp-sm) var(--sp-md);min-height:36px;color:var(--text-secondary);font-size:var(--fs-sm);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.nav-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-log{border-color:var(--border-subtle)}.log-count{display:inline-block;min-width:1.4em;padding:0 .35em;margin-left:.2em;background:var(--bg-elevated);border-radius:999px;font-family:var(--font-mono);font-size:var(--fs-xs);text-align:center}.lede{padding:var(--sp-2xl) 0 var(--sp-xl);max-width:46rem}.lede h1{margin:0 0 var(--sp-md);font-size:var(--fs-2xl);line-height:1.2;letter-spacing:-.02em}.lede p{margin:0 0 var(--sp-lg);color:var(--text-secondary);font-size:var(--fs-lg)}.trust-badge{display:inline-flex;align-items:center;gap:var(--sp-sm);padding:var(--sp-sm) var(--sp-md);min-height:36px;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);border-radius:999px;color:var(--accent);font-size:var(--fs-sm);font-weight:500;cursor:pointer}.trust-badge:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--good)}.trust-badge:hover{background:color-mix(in srgb,var(--accent-soft) 70%,var(--bg-surface))}.notice{margin:0 0 var(--sp-xl);padding:var(--sp-md) var(--sp-lg);background:var(--warn-soft);border:1px solid color-mix(in srgb,var(--warn) 25%,transparent);border-radius:var(--r-md);color:#6b3d05;font-size:var(--fs-sm)}.notice strong{color:#4d2c03}.step{padding:var(--sp-xl) 0;border-top:1px solid var(--border-subtle)}.step:first-of-type{border-top:none;padding-top:0}.step h2{display:flex;align-items:center;gap:var(--sp-md);margin:0 0 var(--sp-lg);font-size:var(--fs-xl);font-weight:600;letter-spacing:-.01em}.step-n{display:inline-grid;place-items:center;width:26px;height:26px;background:var(--bg-elevated);border-radius:50%;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-tertiary)}.step-lede{margin:calc(var(--sp-lg) * -1) 0 var(--sp-lg);color:var(--text-secondary)}.dropzone{border:1.5px dashed var(--border-default);border-radius:var(--r-lg);background:var(--bg-surface);padding:var(--sp-2xl) var(--sp-lg);text-align:center;cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast)}.dropzone:hover,.dropzone:focus-visible{border-color:var(--accent);background:var(--accent-soft)}.dropzone.dragging{border-color:var(--accent);background:var(--accent-soft);border-style:solid}.dz-title{margin:0 0 var(--sp-xs);font-size:var(--fs-lg);font-weight:600}.dz-sub{margin:0 0 var(--sp-lg);color:var(--text-tertiary);font-size:var(--fs-sm)}.dz-actions{display:flex;gap:var(--sp-sm);justify-content:center;flex-wrap:wrap;margin-bottom:var(--sp-md)}.pill{background:none;border:1px solid var(--border-default);border-radius:999px;padding:var(--sp-xs) var(--sp-md);min-height:32px;color:var(--text-secondary);font-size:var(--fs-sm);cursor:pointer}.pill:hover{border-color:var(--accent);color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-sm);min-height:38px;padding:var(--sp-sm) var(--sp-lg);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--r-md);font-size:var(--fs-sm);font-weight:500;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast)}.btn:hover{background:var(--bg-hover);border-color:var(--border-strong)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn-danger:hover{background:#a01818;border-color:#a01818}.btn-sm{min-height:32px;padding:var(--sp-xs) var(--sp-md);font-size:var(--fs-xs)}.icon-btn{display:grid;place-items:center;width:44px;height:44px;background:none;border:none;border-radius:var(--r-md);font-size:1.4rem;line-height:1;color:var(--text-tertiary);cursor:pointer}.icon-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.row{display:flex;gap:var(--sp-sm);align-items:center;flex-wrap:wrap}.hint{color:var(--text-tertiary);font-size:var(--fs-sm)}.progress{margin-top:var(--sp-lg)}.progress-bar{height:4px;background:var(--bg-active);border-radius:999px;overflow:hidden}.progress-bar span{display:block;height:100%;width:0;background:var(--accent);transition:width 90ms linear}.progress-text{margin:var(--sp-sm) 0 0;color:var(--text-tertiary);font-size:var(--fs-sm);font-family:var(--font-mono)}.summary{display:flex;flex-wrap:wrap;gap:var(--sp-lg);padding:var(--sp-lg);margin-top:var(--sp-lg);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md)}.stat{min-width:7rem}.stat-value{display:block;font-size:var(--fs-xl);font-weight:600;letter-spacing:-.01em}.stat-label{display:block;color:var(--text-tertiary);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em}.filelist{margin-top:var(--sp-lg);max-height:22rem;overflow:auto;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md)}.file-row{display:flex;align-items:center;gap:var(--sp-md);padding:var(--sp-xs) var(--sp-md);border-bottom:1px solid var(--border-subtle);font-family:var(--font-mono);font-size:var(--fs-sm)}.file-row:last-child{border-bottom:none}.file-row.is-out{color:var(--text-muted)}.file-path{flex:1;overflow-wrap:anywhere}.file-why{color:var(--text-tertiary);font-family:var(--font-sans);font-size:var(--fs-xs)}.file-size{color:var(--text-muted);font-size:var(--fs-xs)}.reply-input{width:100%;min-height:8rem;resize:vertical;padding:var(--sp-md);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--r-md);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.5;color:var(--text-primary)}.reply-input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}.queue{margin-bottom:var(--sp-xl);padding:var(--sp-lg);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--r-md)}.queue h3{margin:0 0 var(--sp-xs);font-size:var(--fs-lg)}.queue-lede{margin:0 0 var(--sp-lg);color:var(--text-secondary);font-size:var(--fs-sm)}.queue-item{padding:var(--sp-md) 0;border-top:1px solid var(--border-subtle)}.queue-item:first-of-type{border-top:none}.queue-head{display:flex;align-items:baseline;gap:var(--sp-md);margin-bottom:var(--sp-sm);flex-wrap:wrap}.queue-label{font-weight:600;font-size:var(--fs-sm)}.queue-lang{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-tertiary)}.queue-preview{margin:0 0 var(--sp-sm);padding:var(--sp-sm) var(--sp-md);background:var(--bg-elevated);border-radius:var(--r-sm);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);white-space:pre;overflow-x:auto;max-height:6rem}.assign-row{display:flex;gap:var(--sp-sm);align-items:center;flex-wrap:wrap}.assign-input{flex:1;min-width:14rem;min-height:38px;padding:var(--sp-sm) var(--sp-md);border:1px solid var(--border-default);border-radius:var(--r-md);font-family:var(--font-mono);font-size:var(--fs-sm);background:var(--bg-surface)}.assign-input:focus{outline:2px solid var(--accent);outline-offset:-1px}.change{margin-bottom:var(--sp-lg);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md);overflow:hidden}.change.is-refused{border-color:color-mix(in srgb,var(--bad) 35%,transparent)}.change-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)}.change-path{flex:1;font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:600;overflow-wrap:anywhere}.tag{padding:.1em .5em;border-radius:999px;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.tag-new{background:var(--good-soft);color:var(--good)}.tag-mod{background:var(--accent-soft);color:var(--accent)}.tag-bad{background:var(--bad-soft);color:var(--bad)}.tag-warn{background:var(--warn-soft);color:var(--warn)}.tag-info{background:var(--bg-active);color:var(--text-secondary)}.evidence{color:var(--text-tertiary);font-size:var(--fs-xs);font-family:var(--font-mono)}.change-body{padding:0}.banner{padding:var(--sp-md) var(--sp-lg);font-size:var(--fs-sm);border-bottom:1px solid var(--border-subtle)}.banner-bad{background:var(--bad-soft);color:#7d1414}.banner-warn{background:var(--warn-soft);color:#6b3d05}.banner p{margin:0 0 var(--sp-sm)}.banner p:last-child{margin-bottom:0}.override-row{display:flex;gap:var(--sp-sm);align-items:center;flex-wrap:wrap;margin-top:var(--sp-sm)}.override-input{min-height:34px;padding:var(--sp-xs) var(--sp-md);width:12rem;border:1px solid var(--border-default);border-radius:var(--r-md);font-family:var(--font-mono);font-size:var(--fs-sm)}.hunk{border-bottom:1px solid var(--border-subtle)}.hunk:last-child{border-bottom:none}.hunk-head{display:flex;align-items:center;gap:var(--sp-md);padding:var(--sp-sm) var(--sp-lg);background:var(--bg-base);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-tertiary)}.hunk-head label{display:flex;align-items:center;gap:var(--sp-sm);cursor:pointer;font-family:var(--font-sans)}.hunk-lines{margin:0;overflow-x:auto;font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.5}.dline{display:block;padding:0 var(--sp-lg);white-space:pre}.dline-add{background:var(--add-bg)}.dline-del{background:var(--del-bg)}.dline-meta{color:var(--text-muted);font-style:italic}.hunk.rejected .hunk-lines{opacity:.35}.skipped{margin-top:var(--sp-xl);padding:var(--sp-lg);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md)}.skipped h3{margin:0 0 var(--sp-md);font-size:var(--fs-lg)}.skip-row{padding:var(--sp-sm) 0;border-top:1px solid var(--border-subtle);font-size:var(--fs-sm)}.skip-row:first-of-type{border-top:none}.skip-label{font-family:var(--font-mono);font-weight:600}.skip-why{color:var(--text-secondary)}.deliver{margin-top:var(--sp-xl);padding:var(--sp-lg);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--r-md)}.deliver h3{margin:0 0 var(--sp-sm);font-size:var(--fs-lg)}.deliver p{margin:0 0 var(--sp-lg);color:var(--text-secondary);font-size:var(--fs-sm)}.deliver .row{margin-bottom:var(--sp-md)}.invariants{margin:var(--sp-md) 0 0;padding:0;list-style:none;font-size:var(--fs-xs);color:var(--text-tertiary)}.invariants li:before{content:"✓ ";color:var(--good)}.invariants li.failed:before{content:"✗ ";color:var(--bad)}.overlay{position:fixed;inset:0;z-index:60}.overlay-backdrop{position:fixed;inset:0;background:#1c19176b}.modal{display:grid;place-items:center;padding:var(--sp-lg)}.modal-panel{position:relative;z-index:1;width:min(46rem,100%);max-height:min(85vh,52rem);display:flex;flex-direction:column;background:var(--bg-surface);border-radius:var(--r-lg);box-shadow:0 20px 60px #1c19173d}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);padding:var(--sp-md) var(--sp-md) var(--sp-md) var(--sp-xl);border-bottom:1px solid var(--border-subtle)}.modal-head h2{margin:0;font-size:var(--fs-xl)}.modal-body{padding:var(--sp-xl);overflow-y:auto}.modal-body h3{margin:var(--sp-xl) 0 var(--sp-sm);font-size:var(--fs-lg)}.modal-body h3:first-child{margin-top:0}.modal-body p,.modal-body li{color:var(--text-secondary)}.modal-body ul,.modal-body ol{padding-left:1.25rem}.modal-body li{margin-bottom:var(--sp-sm)}.step-list li{margin-bottom:var(--sp-md)}.tm-good,.tm-bad,.tm-trust{padding:var(--sp-md) var(--sp-lg);border-radius:var(--r-md);border-left:3px solid}.tm-good{background:var(--good-soft);border-color:var(--good)}.tm-bad{background:var(--bad-soft);border-color:var(--bad)}.tm-trust{background:var(--bg-elevated);border-color:var(--border-strong)}.drawer{display:block}.drawer-panel{position:absolute;top:0;right:0;bottom:0;z-index:1;width:min(34rem,100%);display:flex;flex-direction:column;background:var(--bg-surface);border-left:1px solid var(--border-default);box-shadow:-14px 0 40px #1c191729}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-md) var(--sp-md) var(--sp-md) var(--sp-xl);border-bottom:1px solid var(--border-subtle)}.drawer-head h2{margin:0;font-size:var(--fs-lg)}.drawer-foot{padding:var(--sp-md) var(--sp-xl);border-top:1px solid var(--border-subtle)}.log-list{flex:1;overflow-y:auto;padding:var(--sp-md) var(--sp-lg);font-family:var(--font-mono);font-size:var(--fs-xs)}.log-row{display:flex;gap:var(--sp-md);padding:2px 0}.log-time{color:var(--text-muted);flex-shrink:0}.log-text{overflow-wrap:anywhere}.log-good .log-text{color:var(--good)}.log-warn .log-text{color:var(--warn)}.log-bad .log-text{color:var(--bad)}.glossary-link{border-bottom:1px dotted var(--text-tertiary);cursor:help}.glossary-link:hover,.glossary-link:focus-visible{border-bottom-color:var(--accent);color:var(--accent)}.glossary-tip{position:fixed;z-index:90;padding:var(--sp-md);background:var(--text-primary);color:#f7f5f2;border-radius:var(--r-md);font-size:var(--fs-sm);line-height:1.5;box-shadow:0 10px 30px #1c191747}.site-footer{border-top:1px solid var(--border-subtle);background:var(--bg-surface)}.footer-inner{max-width:62rem;margin:0 auto;padding:var(--sp-lg);color:var(--text-tertiary);font-size:var(--fs-sm);text-align:center}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}@media(max-width:640px){.lede{padding-top:var(--sp-xl)}.lede h1{font-size:1.4rem}.lede p{font-size:var(--fs-base)}.topbar{padding:var(--sp-sm) var(--sp-md)}.nav-btn{padding:var(--sp-sm);font-size:var(--fs-xs)}.main-content{padding:0 var(--sp-md) var(--sp-xl)}.dropzone{padding:var(--sp-xl) var(--sp-md)}.modal{padding:0}.modal-panel{width:100%;max-height:100vh;height:100%;border-radius:0}.modal-body{padding:var(--sp-lg)}.drawer-panel{width:100%}.summary{gap:var(--sp-md)}.stat{min-width:5.5rem}.stat-value{font-size:var(--fs-lg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
