:root{color-scheme:light;--bg: #f3f4f6;--surface: #ffffff;--text: #111827;--muted: #6b7280;--primary: #111827;--primary-text: #ffffff;--border: #d1d5db;--warning-bg: #fff7ed;--warning-text: #9a3412;--radius: 12px;--space: 16px;font-family:Hiragino Sans,Yu Gothic,Meiryo,system-ui,sans-serif;line-height:1.5;font-size:16px;color:var(--text);background:var(--bg)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%}body{min-height:100dvh}#app{min-height:100dvh;max-width:480px;margin:0 auto;background:var(--surface);display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:1;display:flex;flex-direction:column;gap:8px;padding:calc(12px + env(safe-area-inset-top)) var(--space) 12px;background:var(--surface);border-bottom:1px solid var(--border)}.app-header-titles h1{margin:0;font-size:1.25rem}.subtitle,.muted,.lead{margin:0}.subtitle,.muted{color:var(--muted);font-size:.9rem}.app-main{flex:1;padding:var(--space);padding-bottom:calc(var(--space) + env(safe-area-inset-bottom))}.stack{display:flex;flex-direction:column;gap:12px}.panel{border:1px solid var(--border);border-radius:var(--radius);padding:var(--space);background:#fafafa}.panel h2{margin:0 0 8px;font-size:1rem}.btn{appearance:none;border:1px solid var(--border);border-radius:10px;min-height:48px;padding:12px 16px;font-size:1rem;font-weight:600;cursor:pointer}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--primary-text);border-color:var(--primary)}.btn-secondary{background:var(--surface);color:var(--text)}.btn-danger{background:#b91c1c;color:#fff;border-color:#991b1b}.route-card{border:1px solid var(--border);border-radius:var(--radius);padding:12px;background:var(--surface)}.route-card h3{margin:0;font-size:1.05rem}.danger-panel{border-color:#fecaca;background:#fef2f2}.danger-panel h2{color:#991b1b}.screen-root{min-height:100%;display:flex;flex-direction:column}.btn-ghost{align-self:flex-start;background:transparent;border-color:transparent;min-height:40px;padding:8px 0;color:var(--text);text-decoration:underline}.btn-measure{min-height:64px;font-size:1.15rem}.field{display:flex;flex-direction:column;gap:6px}.field input{min-height:48px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-size:1rem}.guide{margin:0;padding-left:1.25rem}.progress,.role-label{font-size:1.1rem;font-weight:700}.status-badge{display:inline-block;margin:0;padding:6px 10px;border-radius:999px;background:#e5e7eb;font-weight:700}.status-measuring{background:#dbeafe;color:#1e3a8a}.fix-list .panel p{margin:0}.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.chip-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.chip{min-height:44px;padding:8px;font-size:.9rem}.check-row{display:flex;align-items:center;gap:8px;min-height:44px;font-weight:600}.plot-wrap{width:100%;aspect-ratio:1 / 1;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#f9fafb}.plot-canvas{display:block;width:100%;height:100%;touch-action:manipulation}.panel-failed{border-color:#fecaca;background:#fff1f2}.warning{margin:0;padding:12px;border-radius:var(--radius);background:var(--warning-bg);color:var(--warning-text);font-size:.9rem}.error{padding:var(--space);color:#b91c1c}
