/* VAIZO V52 — responsive phone / foldable / tablet / landscape layout */
:root{
  --vaizu-tablet-gutter:20px;
  --vaizu-tablet-panel:430px;
  --vaizu-tablet-nav:560px;
}

/* Keep desktop pages comfortable on medium-size touch screens. */
@media (min-width:700px) and (max-width:1199px){
  .container,.nav{width:min(1080px,calc(100% - 40px))}
  .page{padding-left:4px;padding-right:4px}
  .auth-wrap{padding-left:24px;padding-right:24px}
  .auth-card{width:min(560px,100%)}
  .form-grid{gap:18px}
  .panel-head,.panel-body{padding-left:22px;padding-right:22px}
}

/* The map app must use the tablet canvas instead of emulating a narrow phone. */
@media (min-width:700px){
  body:has(.ws-app){overflow:hidden;background:#F6F7FB!important;padding-bottom:0!important}
  .ws-app{
    width:100vw!important;max-width:none!important;height:100dvh!important;max-height:none!important;
    margin:0!important;border:0!important;box-shadow:none!important;border-radius:0!important;
  }
  .ws-app #map{position:absolute!important;inset:0!important}

  /* Search becomes a compact floating command panel. */
  .ws-app .search-card{
    left:var(--vaizu-tablet-gutter)!important;right:auto!important;
    top:max(var(--vaizu-tablet-gutter),calc(env(safe-area-inset-top) + 14px))!important;
    width:min(var(--vaizu-tablet-panel),calc(100vw - 126px))!important;
    min-height:62px!important;padding:5px 7px!important;border-radius:21px!important;
  }
  .ws-app .search-card .location-row{height:52px!important;min-height:52px!important}
  .ws-app .search-card .location-input{font-size:15px!important}
  /* Tablet: keep destination search clean; recent destinations stay a phone-only shortcut. */
  .ws-app #quickRecentTop,.ws-app #quickRecent{display:none!important}
  .ws-app .quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .ws-app .search-results{max-height:min(58vh,520px)!important}
  .ws-app .header{
    left:auto!important;right:var(--vaizu-tablet-gutter)!important;
    top:max(var(--vaizu-tablet-gutter),calc(env(safe-area-inset-top) + 14px))!important;
    width:52px!important;height:52px!important;
  }
  .ws-app .options-btn{width:52px!important;height:52px!important;border-radius:17px!important}
  .ws-app .guest-trial-pill{max-width:220px}
  .ws-app .traffic-radar{left:var(--vaizu-tablet-gutter)!important;max-width:var(--vaizu-tablet-panel)!important}

  /* Planning is a side card; the route stays visible next to it. */
  .ws-app .sheet{
    left:var(--vaizu-tablet-gutter)!important;right:auto!important;
    bottom:max(var(--vaizu-tablet-gutter),calc(env(safe-area-inset-bottom) + 14px))!important;
    width:var(--vaizu-tablet-panel)!important;max-width:calc(100vw - 40px)!important;
    max-height:min(62vh,620px)!important;overflow:auto!important;overscroll-behavior:contain;
    border-radius:27px!important;padding:9px 14px 14px!important;
  }
  .ws-app .sheet::-webkit-scrollbar{width:0;height:0}
  .ws-app .sheet .grab{display:none!important}
  .ws-app .quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .ws-app .route-variants{flex-wrap:wrap!important;overflow:visible!important}
  .ws-app .route-variant{flex:1 1 96px!important;max-width:none!important}
  .ws-app .destination-confirm{
    left:var(--vaizu-tablet-gutter)!important;right:auto!important;
    bottom:max(var(--vaizu-tablet-gutter),calc(env(safe-area-inset-bottom) + 14px))!important;
    width:var(--vaizu-tablet-panel)!important;max-width:calc(100vw - 40px)!important;
    border-radius:24px!important;
  }

  /* Drawers use the right side instead of stretching edge to edge. */
  .ws-app .account-drawer,.ws-app .prefs-drawer{
    left:auto!important;right:var(--vaizu-tablet-gutter)!important;
    width:min(400px,calc(100vw - 40px))!important;
    max-height:min(76vh,720px)!important;overflow:auto!important;
  }
  .ws-app .safety-drawer{
    left:auto!important;right:var(--vaizu-tablet-gutter)!important;
    width:min(430px,calc(100vw - 40px))!important;
    max-height:min(76vh,720px)!important;
  }
  .ws-app .permission{
    left:50%!important;right:auto!important;width:min(560px,calc(100vw - 40px))!important;
    transform:translate(-50%,calc(-100% - 28px))!important;
  }
  .ws-app .permission.show{transform:translate(-50%,0)!important}

  /* Navigation: compact information blocks, maximum map visibility. */
  .body-nav .nav-maneuver-top{
    left:var(--vaizu-tablet-gutter)!important;right:auto!important;
    width:min(520px,calc(100vw - 130px))!important;min-height:78px!important;
    top:max(var(--vaizu-tablet-gutter),calc(env(safe-area-inset-top) + 14px))!important;
    padding:11px 14px 11px 10px!important;border-radius:23px!important;
  }
  .body-nav .nav-maneuver-icon{width:56px!important;height:56px!important;flex-basis:56px!important}
  .body-nav .nav-maneuver-copy b{font-size:18px!important}
  .body-nav .nav-maneuver-copy span{font-size:11px!important}
  .body-nav .nav-panel.nav-minimal{
    left:var(--vaizu-tablet-gutter)!important;right:auto!important;
    bottom:max(var(--vaizu-tablet-gutter),calc(env(safe-area-inset-bottom) + 14px))!important;
    width:min(var(--vaizu-tablet-nav),calc(100vw - 110px))!important;
    border-radius:22px!important;padding:9px!important;
  }
  .body-nav .nav-summary-row{grid-template-columns:repeat(3,minmax(110px,1fr)) 54px!important;gap:7px!important}
  .body-nav .nav-summary-item{height:62px!important}
  .body-nav .nav-summary-item small{font-size:7px!important}
  .body-nav .nav-summary-item strong{font-size:14px!important}
  .body-nav .nav-search-btn{width:54px!important;height:62px!important}
  .body-nav .nav-street-chip{
    left:var(--vaizu-tablet-gutter)!important;right:auto!important;
    bottom:max(102px,calc(env(safe-area-inset-bottom) + 102px))!important;
    width:min(450px,calc(100vw - 120px))!important;height:44px!important;
  }
  .body-nav .nav-control-stack{right:var(--vaizu-tablet-gutter)!important;gap:8px!important}
  .body-nav .nav-stack-btn,.body-nav .nav-audio-toggle{width:48px!important;height:48px!important;border-radius:15px!important}
  .body-nav .nav-audio-toggle{right:var(--vaizu-tablet-gutter)!important}
  .body-nav .floating-speedo{right:var(--vaizu-tablet-gutter)!important;width:62px!important;height:62px!important;min-width:62px!important}
  .body-nav .nav-map-mode.show{right:86px!important;max-width:260px!important}
  .body-nav .nav-alt-hint.show{
    left:var(--vaizu-tablet-gutter)!important;width:min(420px,calc(100vw - 120px))!important;
    top:max(108px,calc(env(safe-area-inset-top) + 104px))!important;
  }
  .body-nav .nav-feedback.show{left:var(--vaizu-tablet-gutter)!important}

  /* Larger touch targets on tablet while avoiding oversized typography. */
  .ws-app button,.ws-app [role="button"]{touch-action:manipulation}
  .ws-app .chip-shortcut{min-height:42px}
}

/* Large tablets: give planning and nav a little more breathing room. */
@media (min-width:1000px){
  :root{--vaizu-tablet-gutter:24px;--vaizu-tablet-panel:460px;--vaizu-tablet-nav:590px}
  .ws-app .search-card{width:460px!important}
  .ws-app .sheet,.ws-app .destination-confirm{width:460px!important}
  .body-nav .nav-maneuver-top{width:550px!important}
}

/* Tablet landscape: use a true side-panel composition. */
@media (min-width:800px) and (orientation:landscape) and (max-height:760px){
  :root{--vaizu-tablet-gutter:16px;--vaizu-tablet-panel:390px;--vaizu-tablet-nav:520px}
  .ws-app .search-card{top:max(16px,calc(env(safe-area-inset-top) + 10px))!important;width:390px!important}
  .ws-app .sheet{
    top:94px!important;bottom:16px!important;width:390px!important;max-height:none!important;
  }
  .ws-app .destination-confirm{width:390px!important;bottom:16px!important}
  .ws-app .header{top:max(16px,calc(env(safe-area-inset-top) + 10px))!important;right:16px!important}
  .body-nav .nav-maneuver-top{left:16px!important;top:16px!important;width:470px!important}
  .body-nav .nav-panel.nav-minimal{left:16px!important;bottom:16px!important;width:500px!important}
  .body-nav .nav-street-chip{left:16px!important;bottom:101px!important;width:390px!important}
  .body-nav .nav-control-stack{right:16px!important;bottom:250px!important}
  .body-nav .nav-audio-toggle{right:16px!important;bottom:194px!important}
  .body-nav .floating-speedo{right:16px!important;bottom:122px!important}
  .body-nav .nav-map-mode.show{right:82px!important;bottom:326px!important}
}

/* Foldables / small tablets: switch only after there is genuinely enough room. */
@media (min-width:600px) and (max-width:699px){
  .ws-app{max-width:none!important;width:100vw!important;border:0!important;box-shadow:none!important}
  .ws-app .search-card{left:12px!important;right:76px!important}
  .ws-app .sheet,.ws-app .destination-confirm{left:12px!important;right:12px!important}
}

/* Very wide desktop preview: center map UI in a bounded working region without hiding map. */
@media (min-width:1200px){
  body:has(.ws-app){overflow:hidden;background:#EEF0F7!important;padding-bottom:0!important}
  .ws-app{width:100vw!important;max-width:none!important;height:100dvh!important;margin:0!important;box-shadow:none!important}
  .ws-app .search-card{left:24px!important;right:auto!important;width:440px!important}
  .ws-app .sheet,.ws-app .destination-confirm{left:24px!important;right:auto!important;width:440px!important}
  .ws-app .header{right:24px!important}
  .body-nav .nav-maneuver-top{left:24px!important;right:auto!important;width:540px!important}
  .body-nav .nav-panel.nav-minimal{left:24px!important;right:auto!important;width:580px!important}
  .body-nav .nav-street-chip{left:24px!important;right:auto!important;width:450px!important}
  .body-nav .nav-control-stack,.body-nav .nav-audio-toggle,.body-nav .floating-speedo{right:24px!important}
}

@media (min-width:700px){
  .ws-app .sheet.sheet-collapsed{transform:none!important}
  .ws-app .sheet.sheet-collapsed .welcome,.ws-app .sheet.sheet-collapsed #routeState{opacity:1!important;pointer-events:auto!important}
}


/* ============================================================
   VAIZO V54 — tablet search layering + entry redesign
   ============================================================ */
@media (min-width:700px){
  /* Search always owns the foreground while the user is choosing a place. */
  .ws-app .search-card{z-index:64!important;transition:box-shadow .2s ease,transform .2s ease,background .2s ease!important}
  .ws-app .search-results{
    z-index:66!important;
    max-height:min(62dvh,560px)!important;
    overflow:auto!important;
    overscroll-behavior:contain!important;
    border-radius:20px!important;
    box-shadow:0 20px 55px rgba(34,41,74,.18)!important;
  }
  .ws-app.search-open .search-card{box-shadow:0 22px 64px rgba(34,41,74,.22)!important}
  .ws-app.search-open .sheet{
    opacity:0!important;
    transform:translateY(18px) scale(.985)!important;
    pointer-events:none!important;
  }
  .ws-app.search-open .destination-confirm{opacity:0!important;pointer-events:none!important;transform:translateY(14px)!important}
  .ws-app.search-open .traffic-radar{opacity:.35!important}

  body[data-mood="day"] .ws-app .search-results,
  .ws-app .search-results{
    background:rgba(255,255,255,.985)!important;
    color:#182033!important;
    border-color:#DDE2EC!important;
  }
  .ws-app .search-label{color:#737E90!important;border-bottom:1px solid #EEF0F5!important}
  .ws-app .search-item{color:#182033!important;min-height:62px!important;border-radius:14px!important}
  .ws-app .search-item:hover,.ws-app .search-item:active{background:#F2F3FF!important}
  .ws-app .result-icon{background:#F0F1FF!important;color:#5B5CE2!important}
  .ws-app .result-copy b{color:#182033!important;font-size:13px!important}
  .ws-app .result-address,.ws-app .result-copy small{color:#6F7A8D!important;font-size:9px!important}
  .ws-app .result-meta{color:#626D80!important;border-color:#E2E5ED!important;background:#F7F8FB!important}
  .ws-app .search-message{color:#687386!important}

  /* Tablet entry: true two-column composition instead of a stretched phone. */
  body:has(.sparker-entry){background:#EEF1F8!important}
  .sparker-entry{display:grid!important;place-items:center!important;padding:24px!important;background:linear-gradient(145deg,#F7F8FC 0%,#EEF1F8 100%)!important}
  .auth-screen{
    width:min(1120px,calc(100vw - 48px))!important;
    height:min(760px,calc(100svh - 48px))!important;
    min-height:650px!important;
    display:grid!important;
    grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr)!important;
    grid-template-rows:auto minmax(0,1fr)!important;
    padding:0!important;
    border-radius:32px!important;
    border:1px solid #E1E4ED!important;
    background:#fff!important;
    overflow:hidden!important;
    box-shadow:0 32px 90px rgba(41,49,86,.14)!important;
  }
  .auth-copy{grid-column:1;grid-row:1;padding:46px 48px 18px!important;align-self:start!important}
  .auth-copy h1{font-size:clamp(42px,5vw,62px)!important;max-width:560px!important;letter-spacing:-2.6px!important}
  .auth-copy p{max-width:520px!important;font-size:15px!important;line-height:1.55!important}
  .auth-brandline{margin-bottom:24px!important}
  .city-art{
    grid-column:1;grid-row:2;
    min-height:0!important;height:100%!important;
    margin:0!important;border-radius:0!important;box-shadow:none!important;
  }
  .city-art:before{height:15%!important;background:linear-gradient(180deg,#fff 0%,rgba(255,255,255,.45),transparent 100%)!important}
  .city-art:after{height:15%!important;background:linear-gradient(0deg,rgba(255,255,255,.9),transparent)!important}
  .city-art img{object-position:center 46%!important;transform:translateX(-50%) scale(1.02)!important}
  .city-route-badge{left:36px!important;bottom:28px!important;height:36px!important;padding:0 13px!important;font-size:9px!important}
  .auth-actions{
    grid-column:2;grid-row:1/3;
    justify-content:center!important;
    align-self:stretch!important;
    padding:54px 50px!important;
    gap:11px!important;
    border-left:1px solid #E6E8F0!important;
    background:linear-gradient(180deg,#FBFBFE 0%,#F6F7FC 100%)!important;
  }
  .auth-actions-head{display:block;margin-bottom:18px}
  .auth-actions-head>span{display:block;color:#5B5CE2;font-size:10px;font-weight:900;letter-spacing:.13em}
  .auth-actions-head h2{margin:8px 0 0;color:#182033;font-size:30px;line-height:1.05;letter-spacing:-1.15px}
  .auth-actions-head p{margin:10px 0 0;color:#6F7A8D;font-size:13px;line-height:1.5;max-width:330px}
  .auth-choice,.auth-google,.auth-guest{height:58px!important;min-height:58px!important;border-radius:17px!important;font-size:15px!important}
  .auth-legal{font-size:10px!important;padding-top:9px!important}
  .auth-divider{padding:3px 0!important}

  /* Auth form becomes a centered dialog on tablet/desktop. */
  .auth-sheet{align-items:center!important;padding:24px!important}
  .sheet-card{
    width:min(480px,calc(100vw - 48px))!important;
    max-height:min(82svh,760px)!important;
    margin:auto!important;
    border:1px solid #E0E4ED!important;
    border-radius:26px!important;
    padding:20px 24px 24px!important;
    box-shadow:0 30px 90px rgba(29,36,67,.2)!important;
    transform:translateY(18px) scale(.985)!important;
    opacity:0!important;
    transition:transform .24s ease,opacity .2s ease!important;
  }
  .auth-sheet:target .sheet-card,.auth-sheet.is-open .sheet-card{transform:none!important;opacity:1!important}
  .sheet-grab{display:none!important}
}

@media (min-width:700px) and (max-height:700px){
  .sparker-entry{padding:14px!important}
  .auth-screen{height:calc(100svh - 28px)!important;min-height:560px!important}
  .auth-copy{padding:30px 36px 12px!important}
  .auth-copy h1{font-size:42px!important}
  .auth-actions{padding:34px 38px!important}
  .auth-actions-head{margin-bottom:10px!important}
  .auth-actions-head h2{font-size:25px!important}
  .auth-choice,.auth-google,.auth-guest{height:50px!important;min-height:50px!important}
}

@media (max-width:699px){
  .auth-actions-head{display:none!important}
}
