:root{--bg:#0c1f1d;--panel:#14302c;--ink:#f4fffb;--muted:#9bb8b2;--accent:#3dd6a5;--warn:#e07a3d;--font:"Noto Sans KR",sans-serif;--display:"Outfit",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font)}#app{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto}.app-bar{display:flex;justify-content:space-between;align-items:center;padding:.9rem 1rem;background:#081c1aeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:5}.app-bar strong{display:block;font-family:var(--display);font-size:1.15rem}.app-bar span{color:var(--muted);font-size:.78rem}.app-bar button{border:0;background:var(--warn);color:#fff;border-radius:999px;padding:.45rem .8rem;font-weight:700}.map-panel{position:relative;min-height:42vh}.map-fake{min-height:42vh;background:radial-gradient(circle at 30% 40%,#1f6b5f,#0c1f1d 60%),url(/images/hero-island.jpg) center/cover;display:grid;align-content:end;padding:1rem;gap:.6rem}.map-label{margin:0;font-weight:700;text-shadow:0 1px 8px #000}.station-chips{display:flex;gap:.4rem;flex-wrap:wrap}.station-chips button{border:0;background:#ffffff24;color:#fff;border-radius:999px;padding:.4rem .7rem;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.fab{position:absolute;right:1rem;bottom:1rem;border:0;border-radius:999px;background:var(--accent);color:#04241c;font-weight:700;padding:.7rem 1rem}.sheet{background:var(--panel);border-radius:22px 22px 0 0;padding:1rem 1rem 1.4rem;margin-top:-1rem;box-shadow:0 -8px 30px #00000040}.tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem;margin-bottom:.9rem}.tabs button{border:0;background:transparent;color:var(--muted);padding:.55rem 0;border-bottom:2px solid transparent;font-weight:700}.tabs button.active{color:var(--ink);border-color:var(--accent)}.tab{display:none;gap:.65rem}.tab.active{display:grid}label{font-size:.82rem;color:var(--muted)}input{width:100%;border:1px solid rgba(255,255,255,.12);background:#0d2320;color:var(--ink);border-radius:12px;padding:.75rem .8rem}.row{display:grid;grid-template-columns:1fr auto;gap:.5rem}button.wide,.wide{width:100%}button,.wide{border:0;border-radius:12px;padding:.8rem;background:#214842;color:var(--ink);font-weight:700}button.primary,.primary{background:var(--accent);color:#04241c}.hint{margin:0;color:var(--muted);font-size:.82rem;line-height:1.4}.log{margin:0;background:#0a1a18;border-radius:12px;padding:.7rem;color:#b7e7d8;font-size:.75rem;white-space:pre-wrap;max-height:180px;overflow:auto}.ride h3{margin:0;font-family:var(--display)}.ride p{margin:.2rem 0}.empty{color:var(--muted)}.hidden{display:none!important}
