
:root{--eazo-safe-area-top:max(56px,env(safe-area-inset-top,0px));--eazo-safe-area-bottom:max(34px,env(safe-area-inset-bottom,0px));--ink:#f8eee5;--muted:#b8a8a0;--ground:#151722;--panel:#28222d;--panel2:#332735;--amber:#e7a25d;--amber2:#ffc579;--red:#d66b5e;--road:#3d3b4b;--road2:#5e5360;--green:#91a36a}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--ground);color:var(--ink);font-family:ui-rounded,"Arial Rounded MT Bold","Trebuchet MS",system-ui,sans-serif}body{overflow-x:hidden}.app{min-height:100%;padding-top:var(--eazo-safe-area-top);padding-bottom:var(--eazo-safe-area-bottom);display:flex;flex-direction:column;position:relative;isolation:isolate}.live{position:relative;flex:1;min-height:520px;overflow:hidden;background:#171927}.live:after{content:"";pointer-events:none;position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,16,26,.42),transparent 35%,rgba(19,15,25,.72) 100%)}#map{position:absolute;inset:0;width:100%;height:100%;display:block}.topbar{position:absolute;z-index:3;top:18px;left:18px;right:18px;display:flex;align-items:center;justify-content:space-between}.brand{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#d9b9a0;font-weight:700}.lang{min-height:44px;padding:0 13px;border:1px solid rgba(255,194,117,.34);border-radius:999px;background:rgba(30,26,37,.76);color:var(--ink);font:inherit;font-size:12px;cursor:pointer;white-space:nowrap}.lang strong{color:var(--amber2)}.status{position:absolute;z-index:3;top:72px;left:18px;color:var(--muted);font-size:12px;letter-spacing:.04em}.eta-wrap{position:absolute;z-index:3;top:94px;left:18px;text-shadow:0 2px 18px rgba(0,0,0,.45)}.eta-label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#ceb5a5;margin-bottom:2px}.eta{font-variant-numeric:tabular-nums;letter-spacing:-.06em;font-size:clamp(60px,19vw,88px);line-height:.92;font-weight:700}.eta small{font-size:.43em;color:#d6b39a;letter-spacing:-.02em}.bubble{position:absolute;z-index:4;max-width:min(260px,68%);right:18px;top:145px;background:#f2c18c;color:#34232a;border-radius:18px 18px 4px 18px;padding:11px 13px;font-size:13px;line-height:1.25;box-shadow:0 8px 28px rgba(0,0,0,.24);opacity:0;transform:translateY(8px);transition:.3s ease;pointer-events:none}.bubble.show{opacity:1;transform:translateY(0)}.toast{position:absolute;z-index:5;top:206px;left:50%;transform:translate(-50%,-12px);opacity:0;background:rgba(51,39,53,.95);border:1px solid rgba(231,162,93,.5);padding:10px 14px;border-radius:12px;font-size:12px;white-space:nowrap;transition:.3s ease}.toast.show{opacity:1;transform:translate(-50%,0)}.float{position:absolute;z-index:5;right:28px;top:273px;color:var(--red);font-weight:700;font-variant-numeric:tabular-nums;animation:floatup 1.2s ease forwards;pointer-events:none}@keyframes floatup{0%{opacity:0;transform:translateY(10px)}25%{opacity:1}100%{opacity:0;transform:translateY(-28px)}}.live-card{position:absolute;z-index:3;left:14px;right:14px;bottom:14px;background:rgba(40,34,45,.94);border:1px solid rgba(255,194,117,.15);border-radius:24px;padding:18px 17px 16px;box-shadow:0 14px 42px rgba(4,5,11,.46);backdrop-filter:blur(5px)}.instruction{font-size:15px;line-height:1.42;color:#f4e6db;margin:0 0 15px;max-width:43em}.nudge{width:100%;min-height:50px;border:0;border-radius:15px;background:var(--amber);color:#30212a;font:inherit;font-weight:800;font-size:15px;cursor:pointer;box-shadow:inset 0 -2px 0 rgba(79,35,26,.18);transition:transform .15s,background .2s}.nudge:active{transform:scale(.985)}.nudge:disabled{cursor:default;background:#755e58;color:#d0beb7}.cooldown{margin-top:8px;text-align:center;min-height:16px;color:#c5aaa0;font-size:11px}.sheet{display:none;position:absolute;z-index:8;inset:0;align-items:flex-end;background:rgba(9,10,17,.7);animation:fadein .7s ease}.sheet.open{display:flex}@keyframes fadein{from{opacity:0}to{opacity:1}}.cancel-card{width:100%;background:#f1e4d7;color:#322630;border-radius:26px 26px 0 0;padding:25px 20px 20px;box-shadow:0 -12px 40px rgba(5,4,10,.4)}.cancel-kicker{color:#a25d4f;font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:800}.cancel-card h2{font-size:28px;line-height:1.05;margin:7px 0 9px}.cancel-card p{margin:0 0 18px;color:#65555a;font-size:14px}.rate{display:flex;gap:4px;margin:3px 0 18px}.star{width:44px;height:44px;border:0;background:transparent;color:#bda9a0;font-size:30px;cursor:pointer;padding:0}.star.selected{color:#d27b52}.submit{width:100%;min-height:48px;border-radius:14px;border:0;background:#3b2937;color:#fff1e5;font:inherit;font-weight:700;cursor:pointer}.result{display:none;flex:1;padding:26px 16px 18px;overflow:auto;background:linear-gradient(180deg,#211d29,#151722)}.result.show{display:block}.result-head{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:20px}.result h1{font-size:31px;letter-spacing:-.04em;line-height:1;margin:0 0 7px}.result-sub{margin:0;color:var(--muted);font-size:13px}.result-mark{width:38px;height:38px;border-radius:50%;background:#d27b52;color:#2b2028;display:grid;place-items:center;font-size:20px;font-weight:900}.receipt{background:#f1e4d7;color:#322630;border-radius:22px;padding:18px;margin-bottom:16px;box-shadow:0 12px 32px rgba(3,4,10,.28)}.reason{font-size:18px;font-weight:800;line-height:1.15;margin-bottom:16px}.facts{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.fact dt{font-size:10px;color:#806c6d;text-transform:uppercase;letter-spacing:.11em}.fact dd{margin:3px 0 0;font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}.voucher{margin-top:16px;padding:11px 12px;border-radius:12px;background:#e7b46f;color:#3a2930;font-size:13px;font-weight:700}.actions{display:grid;gap:9px;margin-bottom:14px}.replay,.share{min-height:48px;border-radius:14px;font:inherit;font-weight:800;cursor:pointer;white-space:nowrap}.replay{border:0;background:var(--amber);color:#30212a}.share{border:1px solid rgba(231,162,93,.5);background:transparent;color:var(--amber2)}.log-toggle{width:100%;min-height:48px;text-align:left;padding:0 2px;background:transparent;border:0;color:#e5c0a0;font:inherit;font-size:13px;cursor:pointer;white-space:nowrap}.log{display:none;margin-top:9px;border-top:1px solid rgba(255,255,255,.11);padding-top:10px}.log.open{display:block}.log-item{display:flex;gap:9px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:12px;line-height:1.3;color:#c4b5b0}.log-time{font-variant-numeric:tabular-nums;color:#d69867;min-width:40px}.share-note{color:#c4b5b0;font-size:12px;text-align:center;min-height:16px}.hidden{display:none!important}@media(min-width:680px){.live-card{left:auto;right:28px;bottom:28px;width:min(390px,42%)}.eta-wrap{left:28px;top:112px}.status{left:28px}.topbar{left:28px;right:28px}.result{padding-left:clamp(24px,8vw,120px);padding-right:clamp(24px,8vw,120px)}.result-inner{max-width:640px;margin:auto}.cancel-card{max-width:620px;margin:auto;border-radius:26px 26px 0 0}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Eazo host fit: keep the primary action visible without an initial scroll on short viewports */
html,body{height:100%}
.app{min-height:100svh;min-height:100dvh}
.live{flex:1 1 auto;min-height:0}
/* ensure the floating card and its nudge button never sit under the bottom safe inset */
.live-card{bottom:max(14px,env(safe-area-inset-bottom,0px))}
@media(min-width:680px){.live-card{bottom:max(28px,env(safe-area-inset-bottom,0px))}}
/* touch targets */
.lang{min-height:44px;padding:0 14px;display:inline-flex;align-items:center}
.star{min-width:44px;min-height:44px}
.replay,.share{min-height:48px}
.log-toggle{min-height:44px}
