.location-picker,.voucher-dashboard,.plan-card{margin-top:14px}
.location-fields{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(150px,.8fr) minmax(150px,.8fr);gap:9px;margin:12px 0}
.location-actions{display:flex;gap:8px;flex-wrap:wrap}
.location-mission-grid,.voucher-offer-grid,.voucher-wallet-grid,.plan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
.location-mission,.voucher-offer,.demo-voucher,.plan-option{border:1px solid var(--line);border-radius:14px;background:var(--white);padding:13px;min-width:0}
.location-mission h4{margin:0 0 7px;font-size:12px;line-height:1.4}
.mission-meta{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 8px}
.mission-reward{display:block;margin:5px 0 8px;color:var(--green);font-size:11px}
.location-mission h3,.voucher-offer h3,.demo-voucher h3,.plan-option h3{margin:0 0 5px;font-size:13px}
.location-mission p,.voucher-offer p,.demo-voucher p,.plan-option p{margin:0 0 10px;color:var(--muted);font-size:11px;line-height:1.5}
.voucher-offer{display:flex;flex-direction:column;align-items:flex-start;gap:7px}
.voucher-offer .voucher-cost{margin-top:auto;color:var(--green);font-weight:900;font-size:12px}
.demo-voucher{display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;align-items:center}
.voucher-qr{width:120px;aspect-ratio:1;background:#fff;border:1px solid var(--line);border-radius:10px;padding:5px}
.voucher-qr svg{display:block;width:100%;height:100%}
.voucher-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:900;letter-spacing:.06em;overflow-wrap:anywhere}
.voucher-redeem-form{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}
.voucher-redeem-form input{flex:1;min-width:150px}
.voucher-status{display:inline-flex;border-radius:999px;padding:4px 8px;background:#eaf6e9;color:#17603a;font-size:10px;font-weight:850}
.plan-option.unavailable{background:var(--paper);border-style:dashed}
.location-note{margin-top:8px}
@media(max-width:600px){.location-fields,.location-mission-grid,.voucher-offer-grid,.voucher-wallet-grid,.plan-grid{grid-template-columns:1fr}.demo-voucher{grid-template-columns:90px minmax(0,1fr)}.voucher-qr{width:90px}}

.owner-admin-panel{margin-bottom:16px;border-color:#9fc7a6;background:linear-gradient(145deg,#f7fcf6,#fff)}
.owner-setup-hint{padding:10px 12px;border:1px solid #e5c681;border-radius:10px;background:#fff8e5;color:#6c4c0b;line-height:1.5}
.owner-admin-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin:12px 0}
.owner-admin-users,.owner-admin-log{display:grid;gap:8px;margin-top:10px}
.owner-user,.owner-log-row{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--white)}
.owner-user-summary{display:grid;gap:3px;overflow-wrap:anywhere}
.owner-user-summary small,.owner-log-row small,.owner-log-row span{color:var(--muted);font-size:10px;line-height:1.45}
.owner-user-controls{display:grid;grid-template-columns:minmax(100px,.4fr) minmax(180px,1fr);gap:7px;align-items:center}
.owner-user-controls .account-actions{grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap}
.owner-log-row{grid-template-columns:minmax(110px,.5fr) minmax(130px,1fr) minmax(160px,1.3fr);align-items:center}
@media(max-width:600px){.location-fields{grid-template-columns:1fr}.owner-admin-search,.owner-user-controls,.owner-log-row{grid-template-columns:1fr}.owner-user-controls .account-actions{grid-column:auto}}

.photo-reviewer-card{margin-top:14px}.photo-reviewer-queue{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.photo-review-item{border:1px solid var(--line);border-radius:14px;background:var(--white);padding:13px;min-width:0}.photo-review-item h3{font-size:13px;margin:0 0 5px}.photo-review-preview{display:block;width:100%;max-height:280px;object-fit:contain;background:#eef2ee;border-radius:10px;margin:8px 0}.voucher-scanner-tools{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;margin-top:10px}.voucher-scanner{display:grid;gap:8px;width:min(100%,360px)}.voucher-scanner video{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;background:#14231b}
@media(max-width:600px){.photo-reviewer-queue{grid-template-columns:1fr}}
.weather-metrics{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.weather-metrics span{padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--paper);font-size:10px;color:var(--muted)}.weather-tip{margin-top:10px;padding:10px 12px;border-radius:11px;background:var(--pale);color:var(--ink);font-size:11px;line-height:1.5}.weather-subhead{margin:14px 0 6px;font-size:12px}.weather-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;overflow-x:auto}.weather-day{min-width:70px;padding:8px 6px;border:1px solid var(--line);border-radius:10px;background:var(--paper);text-align:center;font-size:10px}.weather-day b,.weather-day span{display:block}.weather-day b{margin-bottom:5px}.weather-day .weather-rain{color:var(--muted);margin-top:4px;font-size:9px}

.hub-team{display:grid;gap:10px;margin:10px 0;padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--paper);min-width:0}.hub-team .hub-team{background:var(--white)}.hub-team-members{display:flex;flex-wrap:wrap;gap:6px}.hub-team .account-actions{display:flex;flex-wrap:wrap;gap:6px}.hub-team .hub-form{padding-top:9px;border-top:1px solid var(--line)}#communityOwnerTools{margin-top:12px}#communityOwnerTools details{padding:12px;border:1px solid #b5d6b9;border-radius:12px;background:#f7fcf6}#communityOwnerTools summary{cursor:pointer;font-size:12px;font-weight:850;color:var(--green)}#communityOwnerTools .hub-form{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}#communityOwnerTools .hub-form+.hub-form{margin-top:10px}

.music-card{max-width:900px;margin:0 auto}.music-heading{display:flex;align-items:center;gap:13px;margin-bottom:16px}.music-heading h2{margin:0 0 4px}.music-heading p{margin:0}.music-mark{display:grid;place-items:center;flex:0 0 48px;height:48px;border-radius:15px;background:var(--pale);color:var(--green);font-size:27px;font-weight:900}.music-form{display:grid;gap:7px}.music-controls{display:grid;grid-template-columns:minmax(160px,1fr) auto auto;gap:8px;align-items:center}.music-controls a{text-decoration:none}.spotify-player{margin-top:13px}.spotify-player iframe{display:block;width:100%;border:0;border-radius:13px;background:#111}.music-footnote{margin:12px 0 0}.music-controls .field{min-height:42px}
@media(max-width:760px){.music-controls{grid-template-columns:1fr 1fr}.music-controls input{grid-column:1/-1}.music-controls .btn{width:100%;padding:10px 8px;font-size:11px}.mobile-nav{grid-template-columns:repeat(5,minmax(0,1fr))}.mobile-nav button{white-space:nowrap;font-size:9px}}

@media(min-width:761px) and (max-width:1400px){
 .topbar{gap:8px;padding-inline:clamp(10px,1.6vw,22px)}
 .brand{font-size:18px;gap:8px}
 .brandmark{width:34px;height:34px}
 .topnav{flex:1;min-width:0;justify-content:center;gap:0}
 .navbtn{padding:8px 5px;font-size:10px;white-space:nowrap}
 .top-right{gap:5px;flex:none}
 .points-pill{padding:7px 8px;font-size:10px}
}
/* Route entry stays above the full-width map; supporting planner cards follow it. */
.map-layout{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:14px!important}
.route-controls-card{order:0;width:100%;scroll-margin-top:12px}
.route-controls-card .plan-actions{grid-template-columns:minmax(0,1fr)}
.route-more-options{margin-top:9px;border-top:1px solid var(--line);padding-top:8px}
.route-more-options summary{cursor:pointer;color:var(--green);font-size:12px;font-weight:800}
.route-more-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}
.route-options-card{order:1;width:100%;scroll-margin-top:12px}
.route-vehicle-card{order:2;width:100%;scroll-margin-top:12px}
.route-vehicle-card>.field-label{display:block;margin:0 0 6px}
.route-vehicle-card>#vehicleType{max-width:520px}
.route-vehicle-note{margin:8px 0 0}
.map-layout>.map-panel{order:3;width:100%;height:min(76vh,850px);min-height:540px}
.map-layout>.planner{order:4;width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px}
.map-layout>.planner>.location-picker{grid-column:1/-1}
.route-primary-actions{align-items:center}
.route-primary-actions #startNav{min-width:185px}
.greener-route-settings{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(145px,.8fr);gap:10px;align-items:center;margin-top:11px;padding:11px 12px;border:1px solid #cfe5d2;border-radius:13px;background:linear-gradient(135deg,#f0faf0,#fff)}
.greener-route-toggle{display:flex;align-items:flex-start;gap:10px;min-width:0;cursor:pointer}
.greener-route-toggle input{width:19px;height:19px;flex:0 0 19px;margin:2px 0 0;accent-color:var(--green)}
.greener-route-toggle span{display:grid;gap:3px;min-width:0}
.greener-route-toggle strong{font-size:12px;color:var(--ink)}
.greener-route-toggle small{font-size:10px;line-height:1.45;color:var(--muted)}
.greener-route-limit{display:grid;gap:5px;font-size:10px;font-weight:800;color:var(--muted)}
.greener-route-limit .field{min-height:38px;margin:0;padding:7px 9px;font-size:11px}
.greener-route-limit .field:disabled{opacity:.62}
.route-options-card .empty-routes[role=status]{border-color:#d7e8c9;background:#f5faef;color:#345c38;line-height:1.45}
@media(max-width:600px){.greener-route-settings{grid-template-columns:1fr}.greener-route-limit{grid-template-columns:1fr auto;align-items:center}.greener-route-limit .field{min-width:128px}}
.nav-guidance{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:8px 0 12px;padding:14px;border:1px solid #d6e9d7;border-radius:15px;background:linear-gradient(130deg,#f4fbf3,#fff);min-height:96px}
.nav-guidance-copy{display:grid;gap:5px;min-width:0}
.nav-guidance-copy b{font-size:17px;line-height:1.25}
.nav-guidance-copy small{color:var(--muted);font-size:12px}
.speed-limit-sign{display:grid;place-items:center;flex:0 0 78px;min-height:68px;border:3px solid #bd3f3b;border-radius:15px;background:#fff;color:#1c3024;text-align:center;padding:6px}
.speed-limit-sign span{font-size:22px;font-weight:950;line-height:1}
.speed-limit-sign small{font-size:9px;font-weight:850;color:#6d786f;margin-top:4px}
.vehicle-setup{margin:12px 0 0;padding:10px 12px;border:1px solid var(--line);border-radius:13px;background:var(--paper)}
.vehicle-setup summary{cursor:pointer;font-size:13px;font-weight:850;color:var(--green)}
.vehicle-form{display:grid;gap:8px;margin-top:12px}
.vehicle-form>label{font-size:11px;font-weight:800}
.vehicle-form input,.vehicle-form select{width:100%}
.vehicle-input-unit{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
.vehicle-input-unit span{font-size:11px;color:var(--muted);white-space:nowrap}
.vehicle-form [hidden]{display:none!important}
.vehicle-form .statusline{margin-top:0}
.hub-feature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.hub-feature-card{display:flex;gap:13px;align-items:flex-start;min-width:0;padding:15px;border:1px solid var(--line);border-radius:16px;background:var(--white);box-shadow:var(--shadow)}
.hub-feature-icon{display:grid;place-items:center;flex:0 0 46px;width:46px;height:46px;border-radius:14px;background:var(--pale);font-size:24px}
.hub-feature-body{min-width:0;flex:1}
.hub-feature-title{display:flex;align-items:center;justify-content:space-between;gap:8px}
.hub-feature-title h3{margin:0;font-size:14px}
.hub-feature-card p{margin:8px 0 10px}
@media(max-width:760px){
 .topnav{display:none}
 .map-layout{gap:10px!important}
 .route-controls-card,.route-options-card,.route-vehicle-card{padding:14px!important}
 .map-layout>.map-panel{height:48vh;min-height:340px;max-height:520px}
 .map-layout>.planner{grid-template-columns:minmax(0,1fr);gap:10px}
 .map-layout>.planner>.location-picker{grid-column:auto}
 .route-primary-actions{display:grid;grid-template-columns:1fr 1fr}
 .route-primary-actions #startNav{grid-column:1/-1;width:100%}
 .nav-guidance{align-items:stretch;padding:11px;gap:8px}
 .nav-guidance-copy b{font-size:15px}
 .speed-limit-sign{flex-basis:68px;min-height:62px}
 .hub-feature-grid{grid-template-columns:1fr}
}

/* Mobile viewport guard: prevent content and form controls from widening the page. */
html,body{width:100%;max-width:100%;min-width:0;overflow-x:clip}
.screen,.section-head,.map-layout,.map-layout>*,.planner,.planner>.card,.map-panel{min-width:0;max-width:100%}
img,video,iframe,canvas,svg{max-width:100%}
input,select,textarea,button{max-width:100%}
/* Compact route vehicle chips directly below the From/To fields. */
.vehicle-choice-block{margin-top:12px;min-width:0}
.vehicle-chip-row{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:6px}
.vehicle-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:0;min-height:47px;padding:5px 3px;border:1px solid #dce7dd;border-radius:11px;background:#fff;color:#52645a;font-size:17px;line-height:1.05;transition:background .15s,border-color .15s,color .15s}
.vehicle-chip span{font-size:10px;font-weight:800;white-space:nowrap}
.vehicle-chip.active,.vehicle-chip[aria-pressed=true]{border-color:var(--green);background:var(--pale);color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}
.vehicle-chip:focus-visible{outline:3px solid #8ccf9f;outline-offset:2px}
.vehicle-choice-hint{margin:7px 0 0}
@media(max-width:760px){
 html,body{overflow-x:hidden}
 .screen{width:100%;max-width:100vw;padding-inline:10px}
 .section-head,.map-layout,.map-layout>*,.planner,.planner>.card,.map-panel{width:100%;max-width:100%;min-width:0}
 .topbar{width:100%;min-width:0;gap:7px}
 .top-right{min-width:0;gap:6px}
 input:not([type=checkbox]),select,textarea{font-size:16px!important}
 .vehicle-chip-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
 .vehicle-chip{min-height:45px}
}
@media(max-width:360px){
 .topbar{padding-inline:8px}
 .brand{gap:5px;font-size:15px}
 .brandmark{width:29px;height:29px}
 .top-right{gap:4px}
 .points-pill{padding:6px 7px}
 .vehicle-chip-row{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* A pinch-zoomed-out mobile viewport can be wider than the original layout canvas.
   Expand the page shell to the visible area instead of leaving a blank strip. */
html.eco-zoomed-out,
html.eco-zoomed-out body{
 width:var(--eco-zoomed-visible-width)!important;
 max-width:none!important;
}
html.eco-zoomed-out body{min-width:var(--eco-zoomed-visible-width)!important}
html.eco-zoomed-out .screen{
 width:var(--eco-zoomed-visible-width)!important;
 max-width:var(--eco-zoomed-visible-width)!important;
 margin-left:0!important;
 margin-right:0!important;
}
