*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--brand-primary:#0a7a4b;--brand-accent:#f5a623;--brand-dark:#0a4a2e;--brand-primary-rgb:10,122,75;--brand-accent-rgb:245,166,35;--text-primary:#0a0a0a;--text-secondary:#4a4a4a;--text-muted:#8a8a8a;--surface:#fff;--surface-raised:#f8f9fa;--surface-border:#e5e7eb;--danger:#c0392b;--success:#0a7a4b;--warning:#c8891a;--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Helvetica Neue",Arial,sans-serif;--font-mono:"SF Mono","Fira Mono","Droid Sans Mono","Courier New",monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:6px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-sm:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.04);--shadow-md:0 4px 6px rgba(0,0,0,.07),0 2px 4px rgba(0,0,0,.05);--shadow-lg:0 10px 15px rgba(0,0,0,.08),0 4px 6px rgba(0,0,0,.04);--touch-min:48px;--page-max:480px}html{font-size:16px;text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-sans);font-size:1rem;line-height:1.5;background-color:var(--surface-raised);-webkit-font-smoothing:antialiased;min-height:100dvh;padding-bottom:env(safe-area-inset-bottom)}body,h1,h2,h3,h4,h5,h6{color:var(--text-primary)}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.25}h1{font-size:1.75rem}h2{font-size:1.375rem}h3{font-size:1.125rem}h4{font-size:1rem}p{color:var(--text-secondary)}a{color:var(--brand-primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:var(--font-sans);cursor:pointer;border:none;border-radius:var(--radius-md);font-weight:600;transition:background .15s ease,transform .1s ease,opacity .15s ease;min-height:var(--touch-min);touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn-primary{background:var(--brand-primary);color:#fff;padding:var(--space-4) var(--space-6);font-size:1rem;width:100%;border-radius:var(--radius-lg);letter-spacing:.01em}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{background:var(--text-muted);cursor:not-allowed;transform:none}.btn-secondary{background:transparent;color:var(--brand-primary);border:2px solid var(--brand-primary);padding:var(--space-3) var(--space-6);font-size:1rem;width:100%;border-radius:var(--radius-lg)}.btn-ghost{background:transparent;color:var(--text-secondary);padding:var(--space-3) var(--space-4);font-size:.9rem}input,select,textarea{font-family:var(--font-sans);font-size:1rem;border:1.5px solid var(--surface-border);border-radius:var(--radius-md);padding:var(--space-4);width:100%;min-height:var(--touch-min);background:#fff;color:var(--text-primary);transition:border-color .15s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand-primary);box-shadow:0 0 0 3px rgba(var(--brand-primary-rgb),.15)}.page-container{max-width:var(--page-max);margin:0 auto;min-height:100dvh;background:var(--surface);position:relative}.page-content{padding:var(--space-5) var(--space-5) calc(var(--space-12) + env(safe-area-inset-bottom))}.card{background:#fff;border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-sm);border:1px solid var(--surface-border)}.section-gap{margin-bottom:var(--space-6)}.label{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-1)}.value{font-size:1rem;font-weight:500;color:var(--text-primary)}.route-arrow{color:var(--text-muted);font-size:.875rem}.badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:.75rem;font-weight:600;padding:3px 10px;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.05em}.badge-success{background:#e8f5ee;color:#0a7a4b}.badge-warning{background:#fdf6e3;color:#c8891a}.badge-danger{background:#fdecea;color:#c0392b}.badge-neutral{background:var(--surface-raised);color:var(--text-secondary)}.demo-banner{background:#fdf6e3;border-bottom:2px solid var(--brand-accent);padding:var(--space-2) var(--space-4);text-align:center;font-size:.8rem;font-weight:600;color:#c8891a;letter-spacing:.03em}.ticket-code{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;letter-spacing:.2em;color:var(--text-primary)}.divider{border:none;border-top:1px solid var(--surface-border);margin:var(--space-5) 0}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm)}.offline-indicator{position:fixed;bottom:calc(var(--space-4) + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:var(--text-primary);color:#fff;padding:var(--space-2) var(--space-5);border-radius:var(--radius-full);font-size:.85rem;font-weight:600;z-index:100;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}:focus-visible{outline:3px solid var(--brand-primary);outline-offset:3px}