.app-nav{position:sticky;top:0;z-index:60;background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}.app-navin{height:62px;justify-content:space-between;gap:12px}.app-brand,.app-navin{display:flex;align-items:center}.app-brand{font:700 15px var(--font-display);gap:8px}.app-brand .m-dot{width:8px;height:8px}.app-navlinks{display:flex;align-items:center;gap:10px}.btn{border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:12px;padding:10px 15px;font:600 12px var(--font-mono);transition:.16s var(--ease);display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn:hover{border-color:var(--purple)}.btn:disabled{opacity:.55;cursor:default}.btn-primary{border:0;background:var(--grad);color:#fff;text-transform:uppercase;letter-spacing:.02em;box-shadow:0 12px 28px -18px var(--purple)}.btn-primary:hover{transform:translateY(-1px)}.btn-cyan{border:0;background:var(--cyan);color:#04211d}.btn-ghost{background:transparent}.btn-sm{padding:7px 11px;font-size:11px;border-radius:10px}.btn-block{width:100%}.page{padding-block:40px 72px}.page-kicker{font:600 11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--purple)}.page-title{font:720 clamp(1.6rem,5vw,2.6rem)/1.08 var(--font-display);letter-spacing:-.02em;margin-top:10px}.page-lead{color:var(--muted);line-height:1.65;max-width:64ch;margin-top:12px}.card{background:var(--surface);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow);padding:22px}.card-raised{background:var(--raised)}.grid-2{display:grid;gap:18px}@media (min-width:900px){.grid-2{grid-template-columns:1.15fr .85fr;align-items:start}}.field{display:grid;gap:6px;margin-bottom:14px}.field label{font:600 9px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}.field input,.field select{width:100%;min-height:44px;border:1px solid var(--border-strong);background:var(--raised);color:var(--ink);border-radius:12px;padding:10px 12px;font:500 14px var(--font-body)}.field input:focus,.field select:focus{outline:none;border-color:var(--purple)}.auth-wrap{max-width:440px;margin:60px auto}.form-error{color:var(--pink);font:600 12px var(--font-mono);margin-top:6px;min-height:16px}.form-hint{color:var(--muted);font-size:13px;margin-top:10px}.form-hint a{color:var(--purple);font-weight:600}.stat-row{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}@media (min-width:620px){.stat-row{grid-template-columns:repeat(4,1fr)}}.stat{padding:13px;border-radius:14px;background:var(--raised);border:1px solid var(--border)}.stat small{display:block;font:500 8px var(--font-mono);color:var(--dim);text-transform:uppercase;letter-spacing:.06em}.stat b{display:block;margin-top:5px;font-size:15px;font-family:var(--font-mono)}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font:600 10px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--border)}.badge-ok{color:var(--cyan);border-color:color-mix(in srgb,var(--cyan) 40%,var(--border));background:var(--cyan-soft)}.badge-warn{color:var(--pink);border-color:color-mix(in srgb,var(--pink) 40%,var(--border));background:var(--pink-soft)}.badge-muted{color:var(--muted)}.itin{display:grid;gap:8px;margin-top:8px}.itin-block{display:grid;grid-template-columns:62px 1fr;gap:10px}.itin-time{font:600 11px var(--font-mono);color:var(--muted);padding-top:12px}.itin-event{padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:var(--raised)}.itin-event.type-transit,.itin-event.type-walk{background:color-mix(in srgb,var(--cyan) 9%,var(--surface))}.itin-event.type-photo{background:color-mix(in srgb,var(--pink) 8%,var(--surface))}.itin-event.type-buffer{opacity:.72}.itin-event.conflict{border-color:var(--pink);background:var(--pink-soft)}.itin-event .row{display:flex;justify-content:space-between;align-items:center;gap:8px}.itin-event b{font-size:13.5px}.itin-event small{display:block;color:var(--muted);margin-top:3px;font-size:12px;line-height:1.45}.itin-lock{font:600 8px var(--font-mono);color:var(--purple);white-space:nowrap}.day-head,.itin-lock{text-transform:uppercase}.day-head{font:700 13px var(--font-mono);color:var(--ink);margin:18px 0 8px;letter-spacing:.05em}.map-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}.map-link{display:inline-flex;align-items:center;gap:5px;padding:7px 9px;border:1px solid var(--border);border-radius:9px;background:var(--surface);font:600 10px var(--font-mono);color:var(--blue)}.map-link.primary-map{color:#fff;background:var(--blue);border-color:var(--blue)}.coord{font:500 9px var(--font-mono);color:var(--dim);margin-top:5px}.notice{border-radius:12px;padding:11px 13px;font-size:12.5px;line-height:1.5;border:1px solid var(--border)}.notice-info{background:var(--blue-soft);color:var(--muted)}.notice-warn{background:var(--pink-soft);color:var(--muted)}.advisories{display:grid;gap:6px;margin-top:12px}.pass-card{border-radius:20px;overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow);background:var(--surface)}.pass-card .head{background:var(--grad);color:#fff;padding:15px 18px;display:flex;justify-content:space-between;align-items:center}.pass-card .head b{font:700 13px var(--font-display)}.pass-card .head span{font:600 9px var(--font-mono);letter-spacing:.05em}.pass-card .body{padding:18px}.pass-barcode{height:30px;margin-top:14px;border-top:1px dashed var(--border);padding-top:10px;background-image:repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 5px,var(--ink) 5px 6px,transparent 6px 10px,var(--ink) 10px 14px,transparent 14px 17px);background-origin:content-box;background-clip:content-box;opacity:.72;position:relative}.pass-barcode:after{content:attr(data-code);position:absolute;right:0;bottom:-14px;font:500 8px var(--font-mono);letter-spacing:.08em;color:var(--dim)}.trip-grid{display:grid;gap:14px;margin-top:24px}@media (min-width:640px){.trip-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1000px){.trip-grid{grid-template-columns:repeat(3,1fr)}}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--purple);border-radius:50%;animation:dashSpin .7s linear infinite}