:root{--color-surface: #faf7f2;--color-card: #ffffff;--color-ink: #1f1b16;--color-muted: #8a8378;--color-border: #e8e2d8;--color-accent: #e53e3e;--color-success: #2f7a5b;--font-sans: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: ui-monospace, "SF Mono", "SFMono-Regular", Consolas, Menlo, monospace;--radius-card: 12px;--radius-button: 8px;--transition: .18s ease-out}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-surface);color:var(--color-ink);font-family:var(--font-sans);font-size:15px}.tabular-num{font-variant-numeric:tabular-nums}.app-shell{display:flex;flex-direction:column;height:100%;max-width:480px;margin:0 auto;background:var(--color-surface)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top,0px) + 16px) 20px 12px;border-bottom:1px solid var(--color-border)}.wordmark{display:flex;align-items:center;gap:4px;font-weight:700;font-size:17px}.wordmark-dot{width:6px;height:6px;border-radius:50%;background:var(--color-accent);display:inline-block;margin-top:-8px}.status-pill{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--color-border);color:var(--color-muted)}.status-pill.status-connected{color:var(--color-success);border-color:var(--color-success)}.status-pill.status-error{color:var(--color-accent);border-color:var(--color-accent)}.app-main{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px}.tab-bar{display:flex;border-top:1px solid var(--color-border);background:var(--color-card);padding-bottom:env(safe-area-inset-bottom,0px)}.tab-item{flex:1;padding:12px 0 10px;background:none;border:none;font-family:inherit;font-size:12px;color:var(--color-muted);cursor:pointer;border-top:2px solid transparent;transition:color var(--transition),border-color var(--transition)}.tab-item-active{color:var(--color-accent);border-top-color:var(--color-accent);font-weight:600}button{font-family:inherit}.btn-primary{font-size:15px;font-weight:600;padding:12px 20px;white-space:nowrap;border:none;background:var(--color-ink);color:var(--color-card);border-radius:var(--radius-button);cursor:pointer;transition:background var(--transition),opacity var(--transition)}.btn-primary:disabled{opacity:.5;cursor:default}.btn-secondary{font-size:13px;font-weight:600;padding:8px 14px;border:1px solid var(--color-border);background:var(--color-card);color:var(--color-ink);border-radius:var(--radius-button);cursor:pointer;transition:border-color var(--transition)}.btn-secondary.btn-danger{color:var(--color-accent);border-color:var(--color-accent)}.btn-text{font-size:13px;padding:8px 0;border:none;background:none;color:var(--color-muted);cursor:pointer;text-align:left}.card{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:16px}.measure-screen{display:flex;flex-direction:column;gap:16px}.measure-empty{align-items:center;justify-content:center;text-align:center;min-height:60vh;gap:12px}.empty-copy{color:var(--color-muted);font-size:15px;margin:0 0 4px}.empty-copy-sub{color:var(--color-muted);font-size:13px;margin:0}.measure-empty .btn-primary{width:auto;min-width:200px}.measure-error{color:var(--color-accent);font-size:13px;margin:0}.btn-measure{width:100%}.measure-pulse{width:64px;height:64px;border-radius:50%;background:var(--color-card);border:1px solid var(--color-border);animation:metric-pulse 1s ease-in-out infinite}@keyframes metric-pulse{0%{opacity:1}50%{opacity:.55}to{opacity:1}}.result-card{display:flex;flex-direction:column;gap:12px}.result-timestamp{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px;color:var(--color-muted);margin:0}.result-score-hero{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 0}.result-score-label{font-size:13px;color:var(--color-muted)}.result-score-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:48px;font-weight:700;line-height:1}.result-confidence{font-size:12px;color:var(--color-muted)}.result-invalid-copy{color:var(--color-accent);font-size:14px;line-height:1.6;margin:0}.result-metrics{display:flex;flex-direction:column;gap:8px}.result-metric-row{display:flex;align-items:center;gap:8px;font-size:15px}.result-metric-label{color:var(--color-muted);flex:1}.result-metric-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600}.result-metric-note{font-size:12px}.note-good{color:var(--color-success)}.note-muted{color:var(--color-muted)}.briefing-text{font-size:14px;line-height:1.6;color:var(--color-ink);background:var(--color-surface);border-radius:var(--radius-button);padding:12px;margin:0}.history-screen{display:flex;flex-direction:column;gap:16px}.segmented-control{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-button);overflow:hidden}.segmented-control-small{align-self:flex-start}.segmented-item{flex:1;padding:8px 14px;white-space:nowrap;background:var(--color-card);border:none;border-right:1px solid var(--color-border);font-size:13px;color:var(--color-muted);cursor:pointer;transition:background var(--transition),color var(--transition)}.segmented-item:last-child{border-right:none}.segmented-item-active{background:var(--color-ink);color:var(--color-card);font-weight:600}.trend-chart{width:100%;height:auto;display:block}.chart-grid-line{stroke:var(--color-border);stroke-width:1}.chart-good-band{fill:var(--color-success);opacity:.08}.chart-line{stroke:var(--color-ink);stroke-width:2}.chart-last-point{fill:var(--color-accent)}.chart-axis-label{font-size:10px;fill:var(--color-muted);font-family:var(--font-mono)}.chart-empty{color:var(--color-muted);font-size:13px;text-align:center;padding:24px 0}.measurement-group{margin-bottom:12px}.measurement-group-header{font-size:12px;color:var(--color-muted);font-weight:600;margin:0 0 8px}.measurement-row{border-bottom:1px solid var(--color-border)}.measurement-row-main{width:100%;display:flex;align-items:center;gap:12px;padding:10px 0;background:none;border:none;cursor:pointer;font-family:inherit;color:var(--color-ink);text-align:left}.measurement-row-time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px;color:var(--color-muted);width:48px;flex-shrink:0}.measurement-row-score{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;width:40px;flex-shrink:0}.measurement-row-values{flex:1;display:flex;gap:12px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px}.measurement-row-chevron{color:var(--color-muted);transition:transform var(--transition)}.chevron-open{transform:rotate(90deg)}.measurement-row-detail{padding:0 0 12px 60px;display:flex;flex-direction:column;gap:8px}.measurement-row-briefing{font-size:13px;color:var(--color-muted);margin:0;line-height:1.5}.list-empty{color:var(--color-muted);font-size:13px;text-align:center;padding:24px 0}.device-screen{display:flex;flex-direction:column;gap:16px}.transport-cards{display:flex;flex-direction:column;gap:12px}.transport-card{display:flex;align-items:center;justify-content:space-between;gap:12px}.transport-card-title{font-size:15px;font-weight:600;margin:0 0 2px}.transport-card-support{font-size:12px;color:var(--color-muted);margin:0}.connected-panel{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.connected-label{font-size:12px;color:var(--color-muted);margin:0}.connected-kind{font-size:17px;font-weight:600;margin:0 0 8px}.connected-device-info{font-family:var(--font-mono);font-size:12px;color:var(--color-muted);margin:-4px 0 4px}.connected-device-error{font-size:13px;color:var(--color-accent);margin:-4px 0 4px}.wifi-mixed-content-warning{font-size:12px;color:var(--color-accent);margin:8px 0 0;line-height:1.5}.list-row{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 16px;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-card);font-size:15px;color:var(--color-ink);cursor:pointer}.list-row-chevron{color:var(--color-muted)}.footer-tagline{color:var(--color-muted);font-size:12px;text-align:center;margin:12px 0 0}.console-screen{display:flex;flex-direction:column;gap:12px;min-height:320px}.console-toolbar{display:flex;gap:8px}.console-log{flex:1;overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:12px;font-family:var(--font-mono);font-size:13px;min-height:200px}.console-empty{color:var(--color-muted)}.log-line{display:flex;gap:8px;padding:2px 0}.log-ts{color:var(--color-muted);flex-shrink:0;font-variant-numeric:tabular-nums}.log-dir{width:32px;flex-shrink:0;font-weight:600}.log-rx .log-dir{color:var(--color-success)}.log-tx .log-dir{color:var(--color-accent)}.log-sys .log-dir{color:var(--color-muted)}.log-text{word-break:break-all}.console-input-row{display:flex;gap:8px}.console-input-row input{flex:1;font-family:var(--font-mono);font-size:14px;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-button);background:var(--color-card);color:var(--color-ink)}
