:root{--c-brand: #1b44c8;--c-brand-deep: #14309a;--c-brand-soft: #e8eefb;--c-ink: #0f1e4b;--c-ink-soft: #4a5680;--c-bg: #f5f8fd;--c-surface: #ffffff;--c-line: #dde5f4;--c-ok: #1f7a4d;--c-ok-soft: #e6f4ec;--c-warn: #8a5d00;--c-warn-soft: #fdf3dc;--c-danger: #b3362b;--c-danger-soft: #fbeae8;--c-focus: #14309a;--sans: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", sans-serif;--t-brand: 800 24px/1.1 var(--sans);--t-title: 800 22px/1.25 var(--sans);--t-section: 700 17px/1.3 var(--sans);--t-body: 400 16px/1.5 var(--sans);--t-label: 600 13px/1.35 var(--sans);--t-small: 400 13px/1.45 var(--sans);--t-badge: 700 12px/1.2 var(--sans);--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--r1: 10px;--r2: 16px;--tap-min: 44px;--shadow: 0 1px 2px rgba(15, 30, 75, .06), 0 4px 14px rgba(15, 30, 75, .07);--m-fast: .12s ease;--w-max: 640px}@media(prefers-reduced-motion:reduce){:root{--m-fast: 0ms}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--c-bg);color:var(--c-ink);font:var(--t-body)}#root{max-width:var(--w-max);margin:0 auto;min-height:100vh;display:flex;flex-direction:column}.bar{position:sticky;top:0;z-index:10;background:var(--c-surface);border-bottom:1px solid var(--c-line);display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);min-height:var(--tap-min)}.bar-brand{height:28px;width:auto;display:block}.bar-context{font:var(--t-small);color:var(--c-ink-soft);margin-left:auto;text-align:right}.content{flex:1;padding:var(--s4);padding-bottom:calc(var(--tap-min) + var(--s6));display:flex;flex-direction:column;gap:var(--s4)}.tabs{position:fixed;bottom:0;left:0;right:0;z-index:10;background:var(--c-surface);border-top:1px solid var(--c-line);display:flex;max-width:var(--w-max);margin:0 auto}.tab{flex:1;min-height:var(--tap-min);border:0;background:none;font:var(--t-label);color:var(--c-ink-soft);padding:var(--s2);cursor:pointer;border-top:3px solid transparent}.tab[aria-current=page]{color:var(--c-brand);border-top-color:var(--c-brand)}.card{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r2);box-shadow:var(--shadow);padding:var(--s4);display:flex;flex-direction:column;gap:var(--s3)}.card-tap{cursor:pointer;text-align:left;font:var(--t-body);color:var(--c-ink);width:100%;transition:border-color var(--m-fast)}.card-tap:hover{border-color:var(--c-brand)}.note{background:var(--c-brand-soft);border-radius:var(--r1);padding:var(--s3) var(--s4);font:var(--t-small);color:var(--c-ink)}.note-warn{background:var(--c-warn-soft)}.note-danger{background:var(--c-danger-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:var(--tap-min);padding:0 var(--s4);border-radius:var(--r1);border:1px solid transparent;font:var(--t-label);cursor:pointer;transition:background var(--m-fast),border-color var(--m-fast)}.btn-primary{background:var(--c-brand);color:var(--c-surface)}.btn-primary:hover{background:var(--c-brand-deep)}.btn-primary:active{background:var(--c-ink)}.btn-quiet{background:var(--c-surface);color:var(--c-brand);border-color:var(--c-line)}.btn-quiet:hover{border-color:var(--c-brand)}.btn-quiet:active{background:var(--c-brand-soft)}.btn-danger{background:var(--c-surface);color:var(--c-danger);border-color:var(--c-line)}.btn-danger:hover{border-color:var(--c-danger)}.btn-danger:active{background:var(--c-danger-soft)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:focus-visible,.tab:focus-visible,.card-tap:focus-visible,a:focus-visible,.field-in:focus-visible{outline:3px solid var(--c-focus);outline-offset:2px}.btn-row{display:flex;gap:var(--s2);flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:var(--s1)}.field-label{font:var(--t-label);color:var(--c-ink-soft)}.field-help{font:var(--t-small);color:var(--c-ink-soft)}.field-in{min-height:var(--tap-min);border:1px solid var(--c-line);border-radius:var(--r1);padding:var(--s2) var(--s3);font:var(--t-body);color:var(--c-ink);background:var(--c-surface);width:100%}textarea.field-in{min-height:88px;resize:vertical}.field-error{font:var(--t-small);color:var(--c-danger)}.badge{display:inline-block;font:var(--t-badge);border-radius:var(--r1);padding:var(--s1) var(--s2);background:var(--c-brand-soft);color:var(--c-brand-deep)}.badge-ok{background:var(--c-ok-soft);color:var(--c-ok)}.badge-warn{background:var(--c-warn-soft);color:var(--c-warn)}.badge-danger{background:var(--c-danger-soft);color:var(--c-danger)}.badge-quiet{background:var(--c-bg);color:var(--c-ink-soft)}.t-title{font:var(--t-title);margin:0}.t-section{font:var(--t-section);margin:0}.t-small{font:var(--t-small);color:var(--c-ink-soft)}.t-fact{font:var(--t-small);color:var(--c-ink-soft);display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}.row{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}.row-between{display:flex;align-items:center;gap:var(--s2);justify-content:space-between}.stack{display:flex;flex-direction:column;gap:var(--s3)}.stack-tight{display:flex;flex-direction:column;gap:var(--s1)}.divider{border:0;border-top:1px solid var(--c-line);margin:0}.route-line{display:flex;align-items:center;gap:var(--s1);flex-wrap:wrap;font:var(--t-small);color:var(--c-ink-soft)}.route-stop{color:var(--c-ink);font:var(--t-label)}.state{display:flex;flex-direction:column;align-items:center;gap:var(--s3);text-align:center;padding:var(--s6) var(--s4);color:var(--c-ink-soft);font:var(--t-small)}.state-title{font:var(--t-section);color:var(--c-ink);margin:0}.modal-veil{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1e4b73;z-index:20;display:flex;align-items:flex-end;justify-content:center}.modal{background:var(--c-surface);border-radius:var(--r2) var(--r2) 0 0;width:100%;max-width:var(--w-max);padding:var(--s5) var(--s4);display:flex;flex-direction:column;gap:var(--s4);max-height:85vh;overflow-y:auto}.msg{max-width:85%;border-radius:var(--r2);padding:var(--s2) var(--s3);font:var(--t-small);color:var(--c-ink);background:var(--c-bg);align-self:flex-start}.msg-mine{background:var(--c-brand-soft);align-self:flex-end}.msg-meta{font:var(--t-badge);color:var(--c-ink-soft)}a{color:var(--c-brand)}.btn-link-reset{border:0;background:none;padding:0;cursor:pointer;font:inherit;color:inherit;text-decoration:underline}.tab-badge{display:inline-block;min-width:18px;margin-inline-start:var(--s1);padding:0 var(--s1);border-radius:var(--r1);background:var(--c-brand);color:var(--c-surface);font:var(--t-badge)}
