/* Reset, page frame, typography and the shared keyframes. Units: 1rem = 10dp (see tokens.css). */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--font);
  font-size:1.6rem;
  line-height:2.3rem;
  color:var(--text-hi);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
  overscroll-behavior-y:none;
  touch-action:manipulation;
}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit;color:inherit;border:0;background:none;outline:0;-webkit-appearance:none;appearance:none;border-radius:0}
button{cursor:pointer}
img,svg{display:block;max-width:100%}
ul,ol{list-style:none}
[hidden]{display:none!important}
::selection{background:var(--green-soft)}

/* The page background: the pale green of the design, a touch deeper towards the bottom */
body.app-bg{background:linear-gradient(180deg,var(--bg) 0,var(--bg) 55%,var(--bg-deep) 100%) fixed}

/* The frame of the driver app: a phone-width column, centred on a wide screen */
.app{
  position:relative;
  width:100%;
  max-width:48rem;
  margin:0 auto;
  min-height:100vh;
  min-height:100dvh;
}

/* A screen with the tab bar below it */
.screen{
  min-height:100vh;min-height:100dvh;
  padding-bottom:calc(var(--bar-h) + var(--safe-bottom) + 1.2rem);
}
.screen.no-bar{padding-bottom:calc(var(--safe-bottom) + 2.4rem)}

/* ---- typography (the Material 3 scale of the app) ---- */
.t-display{font-weight:900;font-size:3.6rem;line-height:4rem;letter-spacing:-.05rem}
.t-headline-m{font-weight:800;font-size:2.7rem;line-height:3.2rem;letter-spacing:-.03rem}
.t-headline-s{font-weight:700;font-size:2.2rem;line-height:2.8rem}
.t-title-l{font-weight:700;font-size:2rem;line-height:2.6rem}
.t-title-m{font-weight:600;font-size:1.7rem;line-height:2.2rem}
.t-title-s{font-weight:600;font-size:1.5rem;line-height:2rem}
.t-body-l{font-size:1.6rem;line-height:2.3rem}
.t-body-m{font-size:1.4rem;line-height:2rem}
.t-body-s{font-size:1.2rem;line-height:1.6rem}
.t-label-l{font-weight:700;font-size:1.5rem;letter-spacing:.02rem}
.t-label-m{font-weight:500;font-size:1.2rem;letter-spacing:.02rem}
.t-label-s{font-weight:500;font-size:1.1rem;letter-spacing:.03rem}
.c-hi{color:var(--text-hi)}.c-mid{color:var(--text-mid)}.c-lo{color:var(--text-lo)}
.c-taxi{color:var(--taxi)}.c-coral{color:var(--coral)}.c-sky{color:var(--sky)}.c-violet{color:var(--violet)}.c-mint{color:var(--mint)}.c-amber{color:var(--amber)}
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.center{text-align:center}
.bold{font-weight:700}

/* ---- layout helpers ---- */
.row{display:flex;align-items:center}
.col{display:flex;flex-direction:column}
.grow{flex:1 1 auto;min-width:0}
.gap-4{gap:.4rem}.gap-6{gap:.6rem}.gap-8{gap:.8rem}.gap-10{gap:1rem}.gap-12{gap:1.2rem}.gap-14{gap:1.4rem}.gap-16{gap:1.6rem}
.wrap{flex-wrap:wrap}
.pad{padding:0 1.6rem}
.stack-10>*+*{margin-top:1rem}
.stack-12>*+*{margin-top:1.2rem}
.stack-8>*+*{margin-top:.8rem}
.scroll-x{overflow-x:auto;display:flex;gap:.8rem;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}
.scroll-x::-webkit-scrollbar{display:none}

/* ---- keyframes ---- */
@keyframes sg-appear{from{opacity:0;transform:translateY(2.2rem) scale(.97)}to{opacity:1;transform:none}}
@keyframes sg-fade{from{opacity:0}to{opacity:1}}
@keyframes sg-spin{to{transform:rotate(360deg)}}
@keyframes sg-pulse{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes sg-float{0%,100%{transform:translateY(-.5rem)}50%{transform:translateY(.5rem)}}
@keyframes sg-shimmer{from{transform:translateX(-120%)}to{transform:translateX(120%)}}
@keyframes sg-pop{0%{transform:scale(1.45)}60%{transform:scale(.92)}100%{transform:scale(1)}}
@keyframes sg-ring{from{transform:scale(.4);opacity:.7}to{transform:scale(1.5);opacity:0}}
@keyframes sg-sheen{from{transform:translateX(-130%)}to{transform:translateX(230%)}}
@keyframes sg-slide-in{from{opacity:0;transform:translateX(3.6rem)}to{opacity:1;transform:none}}
@keyframes sg-slide-out{from{opacity:0;transform:translateX(-3.6rem)}to{opacity:1;transform:none}}
@keyframes sg-sheet-in{from{transform:translateY(100%)}to{transform:none}}
@keyframes sg-dialog-in{from{opacity:0;transform:translateY(2.4rem) scale(.88)}to{opacity:1;transform:none}}
@keyframes sg-breathe{0%,100%{opacity:.35;transform:scale(1)}50%{opacity:.8;transform:scale(1.12)}}

/* A block that rises in when it is first shown; set --i for the stagger (55 ms per step, at most 8) */
.appear{animation:sg-appear .42s var(--ease) both;animation-delay:calc(min(var(--i,0),8) * 55ms)}

/* Page change: a short fade, no flash of the background */
body.page-enter .screen{animation:sg-fade .22s ease both}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* Icons: the Material Icons font, the same glyphs the Android app draws */
.mi{font-family:'Material Icons';font-weight:400;font-style:normal;font-size:2.4rem;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;direction:ltr;-webkit-font-feature-settings:'liga';font-feature-settings:'liga';-webkit-font-smoothing:antialiased;flex:none;user-select:none}
.mi.o{font-family:'Material Icons Outlined'}
