:root{--ink:#0f1b2d;--muted:#6b7686;--line:#e6e9ee;--bg:#f5f6f8;--brand:#f5a300}
html,body{height:100%}
body{font-family:'Plus Jakarta Sans',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);-webkit-tap-highlight-color:transparent}
.es-nav{padding-top:env(safe-area-inset-top)}
.es-mark{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--brand);color:var(--ink)}
.es-btn{background:var(--brand);color:var(--ink);font-weight:700;border:0}
.es-btn:hover,.es-btn:focus{background:var(--brand);color:var(--ink);filter:brightness(.94)}
.es-btn:disabled{background:#d9dde3;color:#8a93a0}
.form-control:focus,.form-select:focus{border-color:var(--brand);box-shadow:0 0 0 .2rem color-mix(in srgb,var(--brand) 25%,transparent)}
.btn:focus-visible,a:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
.card{border:1px solid var(--line);border-radius:16px;box-shadow:none}

/* landing */
.hero{background:var(--ink);color:#fff;padding:56px 0 72px;position:relative;overflow:hidden}
.hero h1{font-weight:800;font-size:clamp(2.2rem,7vw,4rem);line-height:1.05;letter-spacing:-.02em;max-width:12ch}
.hero p{color:#b9c3d3;max-width:42ch;font-size:1.1rem}
.hero svg{position:absolute;right:-40px;bottom:-10px;width:min(560px,70vw);opacity:.95}
.perk{display:flex;gap:14px;align-items:flex-start}
.perk i{font-size:1.4rem;color:var(--ink);background:var(--brand);width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex:none}

/* auth */
.auth-card{max-width:460px;margin:24px auto;padding:0 12px}

/* map screens */
.map-wrap{position:relative;height:calc(100dvh - 57px - env(safe-area-inset-top))}
#map,#dmap{position:absolute;inset:0;z-index:0}
.sheet{position:absolute;left:0;right:0;bottom:0;z-index:1000;background:#fff;border-radius:22px 22px 0 0;box-shadow:0 -8px 30px rgba(15,27,45,.18);padding:16px 16px calc(16px + env(safe-area-inset-bottom));max-height:72%;overflow:auto}
.sheet::before{content:"";display:block;width:40px;height:4px;border-radius:4px;background:#d5d9e0;margin:-6px auto 12px}
@media(min-width:768px){.sheet{left:16px;top:16px;bottom:16px;right:auto;width:390px;max-height:none;border-radius:18px}.sheet::before{display:none}}
.route-box{border:1px solid var(--line);border-radius:14px}
.route-box .row-in{display:flex;align-items:center;gap:10px;padding:2px 12px}
.route-box .row-in+.row-in{border-top:1px solid var(--line)}
.route-box input{border:0;box-shadow:none!important;padding:12px 0;background:transparent}
#results{position:absolute;left:16px;right:16px;z-index:1100;max-height:210px;overflow:auto;box-shadow:0 10px 30px rgba(0,0,0,.15)}
.vopt{display:flex;align-items:center;gap:12px;padding:12px;border:2px solid var(--line);border-radius:14px;margin-bottom:8px;cursor:pointer;background:#fff;width:100%;text-align:left}
.vopt.sel{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,#fff)}
.vopt i{font-size:1.6rem}
.vopt .fare{margin-left:auto;font-weight:800}
.dot{width:10px;height:10px;border-radius:50%;flex:none}
.pin-dot{background:#16a34a}.pin-sq{background:var(--ink);border-radius:2px}
.status-pill{display:inline-block;padding:4px 10px;border-radius:99px;background:var(--ink);color:#fff;font-size:.8rem;font-weight:700}
.stars button{font-size:2rem;color:#cdd3dc;background:none;border:0;padding:0 2px}
.stars button.on{color:var(--brand)}
.pulse{width:14px;height:14px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 0 var(--brand);animation:pulse 1.6s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 16px transparent}100%{box-shadow:0 0 0 0 transparent}}
@media(prefers-reduced-motion:reduce){.pulse{animation:none}}
.car-ico{background:var(--ink);color:#fff;border-radius:50%;width:34px;height:34px;display:grid;place-items:center;border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.stat{padding:16px}.stat .n{font-size:1.7rem;font-weight:800;line-height:1}.stat .l{color:var(--muted);font-size:.85rem}
.table>:not(caption)>*>*{padding:.7rem .75rem}
.logo-preview{max-height:64px;max-width:200px;border:1px dashed var(--line);border-radius:10px;padding:6px;background:#fff}
