:root{--tg-bg: #eef2f6;--tg-surface: #ffffff;--tg-text: #1b2430;--tg-hint: #64707e;--tg-link: #2f6fed;--tg-button: #2f6fed;--tg-button-text: #ffffff;--app-height: 100vh;--good: #22b573;--warn: #ee9e1f;--bad: #e6544f;--brand: #2f6fed;--good-bg: #e5f7ef;--warn-bg: #fdf2df;--bad-bg: #fce9e8;--brand-bg: #e5edfd;--line: rgba(120, 134, 150, .22);--ink-faint: color-mix(in srgb, var(--tg-hint) 70%, transparent);--font-display: "Space Grotesk", system-ui, sans-serif;--font-body: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--radius-lg: 20px;--radius-md: 16px;--radius-sm: 12px;--tap: 44px}:root[data-theme=dark]{--good-bg: #123726;--warn-bg: #3a2c0f;--bad-bg: #3a1b19;--brand-bg: #182a4d;--line: rgba(150, 165, 180, .2)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{background:var(--tg-bg);color:var(--tg-text);font-family:var(--font-body);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button{font:inherit;color:inherit;cursor:pointer}.app{min-height:var(--app-height);padding:14px 14px calc(20px + env(safe-area-inset-bottom));max-width:640px;margin:0 auto}.screen{animation:fade .18s ease}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}h1,h2,h3{font-family:var(--font-display);margin:0;font-weight:600}.section-label{font-size:13px;color:var(--tg-hint);font-weight:600;margin:22px 0 10px;display:flex;justify-content:space-between;align-items:center}.section-label:first-child{margin-top:4px}.muted{color:var(--tg-hint)}.card{background:var(--tg-surface);border:1px solid var(--line);border-radius:var(--radius-md)}.score-card{display:flex;align-items:center;gap:16px;padding:18px;border-radius:var(--radius-lg);margin-bottom:16px}.score-text h2{font-size:16px;line-height:1.25;margin-bottom:4px}.score-text p{margin:0;color:var(--tg-hint);font-size:13px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat-tile{padding:13px;text-align:left;border:1px solid var(--line);background:var(--tg-surface);border-radius:var(--radius-md);min-height:calc(var(--tap) * 2);display:flex;flex-direction:column;gap:6px;transition:background .12s ease}.stat-tile:active{background:var(--tg-bg)}.stat-tile h5{margin:0;font-size:12px;color:var(--tg-hint);font-weight:500}.stat-tile .val{font-family:var(--font-display);font-size:14px;font-weight:600}.dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;display:inline-block}.dot.good{background:var(--good)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}.dot.unknown{background:var(--ink-faint)}.rec-card{border-radius:var(--radius-md);overflow:hidden;margin-bottom:10px;background:var(--tg-surface);border:1px solid var(--line)}.rec-head{display:flex;align-items:flex-start;gap:12px;padding:14px;width:100%;background:none;border:none;text-align:left;min-height:var(--tap)}.rec-head:active{background:var(--tg-bg)}.rec-badge{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex-shrink:0}.rec-badge.good{background:var(--good-bg);color:var(--good)}.rec-badge.warn{background:var(--warn-bg);color:var(--warn)}.rec-badge.bad{background:var(--bad-bg);color:var(--bad)}.rec-badge.unknown{background:var(--tg-bg);color:var(--tg-hint)}.rec-title{font-family:var(--font-display);font-size:14.5px;font-weight:600;margin:0 0 3px}.rec-sub{font-size:13px;color:var(--tg-hint);margin:0}.rec-chevron{margin-left:auto;color:var(--ink-faint);flex-shrink:0;transition:transform .2s ease}.rec-card.open .rec-chevron{transform:rotate(180deg)}.rec-body{padding:0 14px 16px}.fix{font-size:13.5px;margin:0 0 10px}.analogy{font-size:13px;color:var(--tg-hint);font-style:italic;margin:0 0 10px}.code-row{background:#161b22;border-radius:var(--radius-sm);padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px}.code-row code{color:#8fd6a8;font-family:var(--font-mono);font-size:12px;overflow-wrap:anywhere}.copy-btn{background:#293040;border:none;color:#c7d0db;font-size:12px;font-weight:600;padding:0 14px;border-radius:100px;flex-shrink:0;min-height:var(--tap);min-width:var(--tap)}.copy-btn:active{background:#3a4356}.link-btn{background:none;border:none;color:var(--tg-link);font-size:13.5px;font-weight:600;padding:12px 0 0;min-height:var(--tap)}.metric-row{display:flex;align-items:center;gap:12px;background:var(--tg-surface);border:1px solid var(--line);border-radius:14px;padding:12px 13px;margin-bottom:8px;width:100%;text-align:left;min-height:var(--tap)}.metric-row:active{background:var(--tg-bg)}.metric-row .mtxt{flex:1;min-width:0}.metric-row .mtxt b{display:block;font-size:13.5px;font-weight:600}.metric-row .mtxt span{font-size:12px;color:var(--tg-hint)}.nav-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--tg-surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px;width:100%;text-align:left;min-height:var(--tap);margin-top:10px}.nav-row:active{background:var(--tg-bg)}.nav-row b{display:block;font-family:var(--font-display);font-size:14px}.nav-row span{font-size:12px;color:var(--tg-hint)}.chart-card{background:var(--tg-surface);border:1px solid var(--line);border-radius:18px;padding:16px 12px 12px;margin-bottom:14px;overflow:hidden}.chart-legend{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:10px;padding:0 4px}.leg{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--tg-hint)}.leg i{width:10px;height:10px;border-radius:3px;display:inline-block}.explain-card{background:var(--brand-bg);border-radius:14px;padding:14px 15px;display:flex;gap:10px;color:var(--tg-text)}.explain-card p{margin:0;font-size:13.5px}.notice{border-radius:14px;padding:12px 14px;font-size:13px;display:flex;gap:10px;align-items:flex-start;margin-bottom:12px}.notice.info{background:var(--brand-bg)}.notice.warn{background:var(--warn-bg);color:#6b4a05}.notice.bad{background:var(--bad-bg);color:#7d2320}:root[data-theme=dark] .notice.warn,:root[data-theme=dark] .notice.bad{color:var(--tg-text)}.upload-wrap{padding-top:32px;text-align:center}.drop-icon{width:56px;height:56px;margin:0 auto 16px;border-radius:15px;background:var(--brand-bg);color:var(--brand);display:grid;place-items:center}.hint-box{margin-top:22px;background:var(--tg-surface);border:1px solid var(--line);border-radius:14px;padding:14px;text-align:left;font-size:13px;color:var(--tg-hint)}.hint-box b{color:var(--tg-text)}.file-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--tg-button);color:var(--tg-button-text);border:none;border-radius:var(--radius-sm);padding:0 22px;min-height:var(--tap);font-weight:600;font-size:15px}.file-button:active{opacity:.85}.progress{height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:16px}.progress i{display:block;height:100%;background:var(--brand);transition:width .2s ease}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand);animation:spin .8s linear infinite;margin:0 auto 14px}@keyframes spin{to{transform:rotate(360deg)}}.center-state{padding:56px 24px;text-align:center;color:var(--tg-hint)}.chip{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:100px;background:var(--tg-bg);border:1px solid var(--line);font-size:12px;color:var(--tg-hint)}.source-links{margin-top:10px;font-size:12px;color:var(--tg-hint)}.source-links a{color:var(--tg-link);text-decoration:none}.fallback-note{font-size:12px;color:var(--tg-hint);margin-top:14px;text-align:center}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:8px}.fallback-back{display:inline-flex;align-items:center;gap:4px;background:none;border:none;color:var(--tg-link);font-size:15px;font-weight:600;padding:0 12px 0 0;margin-bottom:8px;min-height:var(--tap)}.fallback-back:active{opacity:.6}.app--with-mainbutton{padding-bottom:calc(76px + env(safe-area-inset-bottom))}.fallback-mainbutton{position:fixed;left:0;right:0;bottom:0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:var(--tg-bg);border-top:1px solid var(--line)}.fallback-mainbutton>button{display:block;width:100%;max-width:612px;margin:0 auto;background:var(--tg-button);color:var(--tg-button-text);border:none;border-radius:var(--radius-sm);min-height:var(--tap);font-size:15px;font-weight:600}.fallback-mainbutton>button:active{opacity:.85}.tuning-row{background:var(--tg-surface);border:1px solid var(--line);border-radius:14px;padding:13px;margin-bottom:8px}.tuning-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;flex-wrap:wrap}.tuning-setting{font-family:var(--font-mono);font-size:12px;color:var(--tg-hint);overflow-wrap:anywhere}.tuning-change{font-family:var(--font-display);font-size:14px;white-space:nowrap}.tuning-change s{color:var(--tg-hint);text-decoration-thickness:1px}.tuning-change b{color:var(--good)}.tuning-reason{font-size:13px;margin:0 0 10px}.tuning-confidence{font-size:11.5px;color:var(--tg-hint);margin:8px 0 0}.craft-row{display:flex;align-items:center;gap:12px;background:var(--tg-surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px;width:100%;text-align:left;min-height:var(--tap);margin-top:10px}.craft-row:active{background:var(--tg-bg)}.craft-main{flex:1;min-width:0}.craft-main b{display:block;font-family:var(--font-display);font-size:14px}.craft-main>span{display:block;font-size:12px;color:var(--tg-hint)}.craft-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.field{display:block;margin-bottom:18px}.field-label{display:block;font-size:13px;font-weight:600;margin-bottom:8px}.field-hint{display:block;font-size:12px;color:var(--tg-hint);margin-top:6px;line-height:1.4}.field input{width:100%;background:var(--tg-surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--tg-text);font-size:16px;font-family:var(--font-body);min-height:var(--tap);padding:0 14px}.field input:disabled{color:var(--tg-hint);background:var(--tg-bg)}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip-select{background:var(--tg-surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--tg-text);font-size:13.5px;font-weight:600;padding:0 14px;min-height:var(--tap)}.chip-select.on{background:var(--brand-bg);border-color:var(--brand);color:var(--brand)}.link-btn.danger{color:var(--bad)}
