/* GEO mobile screen layout. Desktop styling and the original deck engine stay intact. */
@media(max-width:760px){
 html:has(body.geo-visual){height:100%;overflow:hidden;overscroll-behavior:none}
 body.geo-visual{position:fixed;inset:0 auto auto 0;width:100%;height:var(--geo-mobile-height,100dvh);min-height:0;max-height:var(--geo-mobile-height,100dvh);overflow:hidden;overscroll-behavior:none}
 .geo-visual .geo-scroll-shell{display:flex;flex-direction:column;flex:1 1 0;min-height:0;overflow:hidden;scrollbar-gutter:auto;scroll-behavior:auto;overscroll-behavior:none}
 .geo-visual .geo-header{box-sizing:border-box;flex:0 0 56px;height:56px;min-height:0;width:100%;padding:8px 18px;margin:0}
 .geo-visual .geo-header .brand img{width:84px;height:auto}
 .geo-visual .geo-header .product{font-size:12px}
 .geo-visual .geo-main{box-sizing:border-box;flex:1 1 0;width:100%;min-height:0!important;max-width:none;margin:0;padding:14px 18px 10px;overflow:hidden;display:flex;flex-direction:column}
 .geo-visual .geo-main>section:not([hidden]){box-sizing:border-box;flex:1 1 0;min-height:0;width:100%;max-width:none;margin:0;animation:none!important}
 .geo-visual .geo-main>section[hidden]{display:none!important}
 .geo-visual[data-geo-screen=entry] .geo-scroll-shell{display:block;overflow-y:auto;overscroll-behavior-y:contain}
 .geo-visual[data-geo-screen=entry] .geo-main{display:block;overflow:visible;height:auto;padding:24px 18px 28px}
 .geo-visual .geo-offer-dock{width:calc(100% - 24px);margin:6px auto max(6px,env(safe-area-inset-bottom))}
 .geo-visual .geo-offer-dock-frame{padding:8px 12px}
 .geo-visual .geo-offer-dock-action{gap:12px}
 .geo-visual .geo-offer-dock-action strong{font-size:13px;line-height:1.3}
 .geo-visual .geo-offer-dock-action button{min-height:44px;padding:8px 13px;font-size:14px}
 .geo-visual .geo-community-row{gap:10px}
 .geo-visual .geo-community-row .geo-community-logo{width:28px;height:28px;flex-basis:28px}
 .geo-visual .geo-community-name{font-size:11px;line-height:14px}
 .geo-visual .geo-community-row strong{font-size:13px;line-height:18px}
 .geo-visual:is([data-geo-screen=report],[data-geo-screen=opportunity],[data-geo-screen=visibility],[data-geo-screen=growth]) .geo-community-row{margin-top:8px;padding-top:8px}
 /* Short, centered presentation screens. */
 .geo-visual .geo-main>.geo-finish,.geo-visual .geo-main>.geo-opportunity-screen,.geo-visual .geo-main>.geo-story-screen{display:flex;flex-direction:column;justify-content:center;align-items:stretch;padding:0;text-align:left}
 .geo-visual .geo-story-screen h1,.geo-visual .geo-opportunity-screen h1,.geo-visual .geo-finish h2{font-size:clamp(27px,7.2vw,33px);line-height:1.15;margin:0 0 14px;letter-spacing:-.035em}
 .geo-visual .geo-story-step{font-size:12px;line-height:18px;margin-bottom:12px}
 .geo-visual .geo-story-copy{font-size:15px;line-height:1.5;margin:10px 0}
 .geo-visual .geo-story-brands{gap:17px;margin:16px 0}
 .geo-visual .geo-story-brands span{font-size:14px;gap:6px}
 .geo-visual .geo-story-brands img{width:22px;height:22px}
 .geo-visual .geo-primary-link,.geo-visual .geo-submit{box-sizing:border-box;min-height:48px;font-size:15px;line-height:1.4;padding:12px 16px}
 .geo-visual .geo-story-screen .geo-primary-link,.geo-visual .geo-opportunity-screen .geo-primary-link,.geo-visual .geo-finish .geo-primary-link{width:100%;min-width:0;max-width:none;margin:16px 0 0}
 .geo-visual .geo-text-button{align-self:flex-start;font-size:14px;min-height:44px;padding:10px 0;margin:8px 0 0}
 .geo-visual .geo-finish-mark{width:42px;height:42px;margin:0 0 16px}
 .geo-visual .geo-finish p:not(.geo-kicker){font-size:15px;line-height:1.5;margin:8px 0}
 .geo-visual .geo-opportunity-icon{width:36px;height:36px;margin:0 0 12px;font-size:30px}
 .geo-visual .geo-button-secondary{min-height:44px;font-size:14px;padding:10px 14px}
 /* Phone form keeps its action in the same screen. */
 .geo-visual .geo-offer-screen h1{font-size:28px;margin:0 0 8px}
 .geo-visual .geo-offer-screen .geo-report-business{font-size:14px;line-height:1.4;margin:0 0 8px}
 .geo-visual .geo-offer-screen .geo-story-copy{font-size:14px;line-height:1.5;margin:0 0 12px}
 .geo-visual .geo-offer-form{box-sizing:border-box;width:100%;max-width:none;margin:0;padding:16px;min-height:0}
 .geo-visual .geo-offer-form label{font-size:14px;line-height:20px;margin:0 0 8px}
 .geo-visual .geo-offer-form input{font-size:16px;line-height:22px;min-height:48px;padding:11px 12px}
 .geo-visual .geo-offer-privacy{font-size:12px;line-height:1.5;margin:10px 0}
 .geo-visual .geo-offer-form .geo-primary-link{margin:12px 0 0}
 .geo-visual #geoOfferStatus{font-size:13px;line-height:1.4;margin:8px 0 0}
 .geo-visual #geoOfferStatus:empty{display:none}
 /* Report: card, controls and original arc deck share one bounded layout. */
 .geo-visual .geo-report-screen{display:flex;flex-direction:column;gap:7px;overflow:hidden}
 .geo-visual .geo-report-heading{margin:0}
 .geo-visual .geo-report-heading h1{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%)}
 .geo-visual .geo-report-heading .geo-report-business{font-size:13px;line-height:18px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .geo-visual #geoReportSummary{flex:0 0 auto;padding:7px 0;margin:0;gap:14px;align-items:center}
 .geo-visual .geo-score-metric strong{font-size:36px;line-height:1}
 .geo-visual .geo-score-metric span{font-size:14px}
 .geo-visual .geo-score-copy h2{font-size:15px;line-height:1.3;margin:0}
 .geo-visual #geoDeckRoot{display:grid;grid-template-rows:20px minmax(0,1fr) 44px 80px;gap:5px;flex:1 1 0;min-height:0;width:100%;max-width:none;margin:0}
 .geo-visual .geo-deck-toolbar{font-size:13px;line-height:20px;margin:0}
 .geo-visual .geo-deck-toolbar strong{font-size:13px}
 .geo-visual .geo-analysis-stage{min-height:0;height:100%;overflow:hidden}
 .geo-visual #geoActiveCard{height:100%;min-height:0}
 .geo-visual .geo-analysis-card{box-sizing:border-box;position:relative;width:100%;height:100%;min-height:0;padding:16px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
 .geo-visual .geo-card-brand{font-size:16px;gap:10px;margin-bottom:12px;flex:0 0 auto}
 .geo-visual .geo-card-icon{width:28px;height:28px}
 .geo-visual .geo-card-headline{font-size:21px;line-height:1.25;margin:0 0 12px}
 .geo-visual .geo-card-description{font-size:14px;line-height:1.5;margin:0 0 12px}
 .geo-visual .geo-card-status{font-size:13px;line-height:1.4;margin-top:auto;padding:7px 0 0}
 .geo-visual .geo-deck-controls{padding:0;gap:10px}
 .geo-visual .geo-deck-controls>span{font-size:13px;line-height:1.35;text-align:center}
 .geo-visual .geo-deck-controls .round{width:44px;height:44px;font-size:20px}
 .geo-visual .geo-analysis-deck{box-sizing:border-box;align-self:stretch;align-items:center;height:80px;min-height:0;padding:4px calc(50% - 36px);margin:0;gap:3px}
 .geo-visual .deck-card,.geo-visual .deck-card[aria-pressed=true]{box-sizing:border-box;flex:0 0 72px;width:72px;height:68px;min-height:0;padding:8px 10px;margin:0;gap:7px;border-radius:4px;box-shadow:none}
 .geo-visual .deck-card .geo-deck-number{font-size:11px;line-height:14px}
 .geo-visual .deck-card .geo-deck-mark{width:25px;height:25px;margin:0}
 .geo-visual .deck-card .geo-deck-mark img,.geo-visual .deck-card .geo-deck-mark svg{width:25px;height:25px}
 .geo-visual .deck-card strong{display:none}
 .geo-visual .geo-method-note{flex:0 0 auto;font-size:12px;line-height:16px;margin:0;text-align:left}
 .geo-visual .geo-maps-card .geo-card-brand{font-size:15px;margin:0 42px 12px 0}
 .geo-visual .geo-maps-card .geo-map-business{font-size:21px;line-height:1.25;margin:0 0 10px}
 .geo-visual .geo-map-rating-row{margin:0 0 6px;gap:7px}
 .geo-visual .geo-map-rating{font-size:28px;line-height:1.15}
 .geo-visual .geo-map-reviews{font-size:14px}
 .geo-visual .geo-map-stars{margin:0 0 12px}
 .geo-visual .geo-map-star,.geo-visual .geo-map-star svg{width:20px;height:20px}
 .geo-visual .geo-map-star{flex-basis:20px}
 .geo-visual .geo-map-location,.geo-visual .geo-map-review-note{font-size:14px;line-height:1.4;margin:0 0 8px}
 .geo-visual .geo-map-open{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:44px;height:44px;min-height:44px;padding:0;margin:0;font-size:0}
 .geo-visual .geo-map-open>span{font-size:20px}
 .geo-visual .geo-rivals-card{overflow:hidden}
 .geo-visual .geo-rivals-card>.geo-card-brand{margin-bottom:12px}
 .geo-visual .geo-rivals-card>.geo-card-brand .geo-card-headline{font-size:21px;line-height:1.25}
 .geo-visual .geo-rival-list{display:block;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding-right:3px}
 .geo-visual .geo-rival-row{padding:14px;margin-bottom:10px}
 .geo-visual .geo-rival-row:last-child{margin-bottom:0}
 .geo-visual .geo-rival-row h3{font-size:20px;line-height:1.3}
 .geo-visual .geo-rival-row .geo-rival-address{font-size:13px;line-height:1.45;margin-bottom:12px}
 .geo-visual .geo-rival-channels>.geo-rival-tag{font-size:12px;line-height:18px;padding:4px 6px;gap:5px}
 .geo-visual .geo-rival-tag-icon{width:18px;height:18px;flex-basis:18px}
 .geo-visual .geo-rival-tag-icon img,.geo-visual .geo-rival-tag-icon svg{width:18px;height:18px}
 .geo-visual .geo-rival-row .geo-rival-unverified{font-size:12px;line-height:1.45}
 .geo-visual .geo-tactics-card{align-items:center;justify-content:center}
 .geo-visual .geo-tactics-card .geo-primary-link{margin:0;min-height:48px;width:100%;font-size:16px}
 /* The journal scrolls inside its console; the screen itself remains fixed. */
 body.geo-visual[data-geo-screen=working] .geo-main{padding:14px 18px 10px}
 .geo-visual .geo-working{display:flex;flex-direction:column;overflow:hidden}
 .geo-visual .geo-working-heading{flex:0 0 auto;margin:0 0 12px}
 .geo-visual .geo-working-heading h2{font-size:22px;margin:0 0 5px}
 .geo-visual #geoWorkingBusiness{font-size:12px;line-height:1.4}
 .geo-visual #geoProgress{display:flex;flex:1 1 0;min-height:0;width:100%;margin:0}
 .geo-visual .geo-radar-shell,.geo-visual .geo-checkpoint-terminal{height:100%;min-height:0;width:100%}
 .geo-visual .geo-checkpoint-terminal .geo-terminal-lines{flex:1 1 0;height:auto;min-height:0;padding-block:8px}
 .geo-visual .geo-checkpoint-terminal .geo-terminal-top,.geo-visual .geo-checkpoint-terminal .geo-terminal-context,.geo-visual .geo-checkpoint-terminal .geo-terminal-bottom,.geo-visual .geo-console-activity{flex-shrink:0}
 /* A keyboard-sized offer viewport prioritizes the actual phone controls. */
 .geo-visual.geo-keyboard-open .geo-header{height:40px;flex-basis:40px;padding-block:4px}
 .geo-visual.geo-keyboard-open .geo-community-name{display:none}
 .geo-visual.geo-keyboard-open .geo-community-row strong{font-size:12px;line-height:16px}
 .geo-visual.geo-keyboard-open .geo-community-row .geo-community-logo{width:22px;height:22px;flex-basis:22px}
 .geo-visual.geo-keyboard-open #geoOfferScreen h1,.geo-visual.geo-keyboard-open #geoOfferBusiness,.geo-visual.geo-keyboard-open #geoOfferScreen>.geo-story-copy{display:none}
 .geo-visual.geo-keyboard-open .geo-offer-form{padding:12px;overflow-y:auto}
 .geo-visual.geo-keyboard-open .geo-offer-privacy{margin-block:8px}
}
@media(max-width:760px) and (max-height:700px){
 .geo-visual .geo-header{height:44px;flex-basis:44px;padding-block:5px}
 .geo-visual .geo-main{padding:10px 16px 8px}
 .geo-visual .geo-main>.geo-story-screen h1,.geo-visual .geo-main>.geo-opportunity-screen h1,.geo-visual .geo-main>.geo-finish h2{font-size:26px;margin-bottom:12px}
 .geo-visual .geo-story-step{margin-bottom:8px}
 .geo-visual .geo-story-copy{font-size:14px;line-height:1.45;margin-block:8px}
 .geo-visual .geo-story-brands{margin-block:12px}
 .geo-visual .geo-main>.geo-offer-screen h1{font-size:26px;margin-bottom:8px}
 .geo-visual .geo-report-heading,.geo-visual .geo-method-note{display:none}
 .geo-visual #geoReportSummary{padding:5px 0}
 .geo-visual .geo-score-metric strong{font-size:30px}
 .geo-visual .geo-score-copy h2{font-size:14px}
 .geo-visual #geoDeckRoot{grid-template-rows:18px minmax(0,1fr) 44px 60px;gap:4px}
 .geo-visual .geo-deck-toolbar{line-height:18px}
 .geo-visual .geo-analysis-deck{height:60px;padding-block:2px}
 .geo-visual .deck-card,.geo-visual .deck-card[aria-pressed=true]{height:54px;padding:5px 9px;gap:3px}
 .geo-visual .deck-card .geo-deck-mark,.geo-visual .deck-card .geo-deck-mark svg,.geo-visual .deck-card .geo-deck-mark img{width:23px;height:23px}
 .geo-visual .geo-analysis-card{padding:12px}
 .geo-visual .geo-card-brand{margin-bottom:8px;font-size:14px}
 .geo-visual .geo-card-icon{width:24px;height:24px}
 .geo-visual .geo-card-headline{font-size:19px;margin-bottom:8px}
 .geo-visual .geo-card-description{line-height:1.4;margin-bottom:8px}
 .geo-visual .geo-maps-card .geo-card-brand{font-size:14px;margin-bottom:8px}
 .geo-visual .geo-maps-card .geo-map-business{font-size:19px;margin-bottom:8px}
 .geo-visual .geo-map-rating{font-size:25px}
 .geo-visual .geo-map-stars{margin-bottom:8px}
 .geo-visual .geo-rivals-card>.geo-card-brand .geo-card-headline{font-size:19px}
 .geo-visual .geo-rivals-card>.geo-card-brand{margin-bottom:8px}
 body.geo-visual[data-geo-screen=working] .geo-main{padding:10px 16px 8px}
}


/* Search is a native document flow: iOS must be able to reveal the focused input.
   The keyboard never compresses this step into a fixed-height body. */
@media(max-width:760px){
 html:has(body.geo-visual[data-geo-screen=entry]){height:auto;min-height:100%;overflow-x:clip;overflow-y:auto;overscroll-behavior-y:auto;scroll-padding-top:12px}
 body.geo-visual[data-geo-screen=entry]{position:relative;inset:auto;width:100%;height:auto;min-height:100svh;max-height:none;overflow:visible;overscroll-behavior-y:auto;padding-bottom:var(--geo-entry-keyboard-space,0px)}
 .geo-visual[data-geo-screen=entry] .geo-scroll-shell{display:block;flex:1 0 auto;min-height:0;overflow:visible;overscroll-behavior:auto}
 .geo-visual[data-geo-screen=entry] .geo-main{height:auto;overflow:visible}
 .geo-visual[data-geo-screen=entry] .geo-offer-dock{position:relative;inset:auto;flex:0 0 auto}
 .geo-visual[data-geo-screen=entry] #geoBusiness{scroll-margin-top:12px}
}


/* Overall GEO score uses a reserved footer in the mobile Maps card.
   It is separate from Google's rating and never overlays business information. */
.geo-map-score{display:none}
@media(max-width:760px){
 .geo-visual .geo-report-screen:has(#geoActiveCard .geo-maps-card) #geoReportSummary{display:none}
 .geo-visual .geo-map-score{display:flex;align-items:flex-end;justify-content:flex-end;align-self:stretch;flex:0 0 auto;gap:14px;width:100%;max-width:100%;margin-top:auto;padding-top:14px}
 .geo-visual .geo-map-score-label{max-width:105px;color:#afc9c3;font:450 12px/1.5 Manrope,system-ui,sans-serif;text-align:right;letter-spacing:0}
 .geo-visual .geo-map-score-metric{display:inline-flex;align-items:baseline;gap:5px;white-space:nowrap}
 .geo-visual .geo-map-score-value{font:500 44px/1 Manrope,system-ui,sans-serif;color:#a0d8cc;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
 .geo-visual .geo-map-score-base{font:450 14px/1.2 Manrope,system-ui,sans-serif;color:#b4c9c7}
}
@media(max-width:760px) and (max-height:700px){
 .geo-visual .geo-map-score{padding-top:12px;gap:12px}
 .geo-visual .geo-map-score-value{font-size:38px}
}


/* Slightly stronger mobile headlines; body copy and input sizes remain unchanged. */
@media(max-width:760px){
 .geo-visual .geo-story-screen h1,.geo-visual .geo-opportunity-screen h1,.geo-visual .geo-finish h2{font-size:clamp(30px,8vw,36px)}
 .geo-visual .geo-card-headline{font-size:24px}
 .geo-visual .geo-rivals-card>.geo-card-brand .geo-card-headline{font-size:24px}
 .geo-visual .geo-maps-card .geo-map-business{font-size:23px}
 .geo-visual .geo-offer-screen h1{font-size:31px}
}
@media(max-width:760px) and (max-height:700px){
 .geo-visual .geo-main>.geo-story-screen h1,.geo-visual .geo-main>.geo-opportunity-screen h1,.geo-visual .geo-main>.geo-finish h2{font-size:29px}
 .geo-visual .geo-card-headline{font-size:22px}
 .geo-visual .geo-rivals-card>.geo-card-brand .geo-card-headline{font-size:22px}
 .geo-visual .geo-maps-card .geo-map-business{font-size:21px}
 .geo-visual .geo-main>.geo-offer-screen h1{font-size:29px}
}


/* Decorative radar must not expand the native mobile search viewport. */
@media(max-width:760px){
 .geo-visual[data-geo-screen=entry] .gm-radar{width:min(330px,100%);height:auto;aspect-ratio:1;overflow:hidden}
}

/* Offer entry must stay in native document flow while iOS pans for its keyboard.
   Do not compress or independently scroll its body, main, section, or form. */
@media(max-width:760px){
 html:has(body.geo-visual[data-geo-screen="offer"]){height:auto;min-height:100%;overflow-x:clip;overflow-y:auto;overscroll-behavior-y:auto;scroll-padding-block:20px}
 body.geo-visual[data-geo-screen="offer"]{position:relative;inset:auto;width:100%;height:auto;min-height:100svh;max-height:none;overflow:visible;overscroll-behavior-y:auto}
 body.geo-visual[data-geo-screen="offer"] #geoScrollShell{display:block;flex:none;height:auto;min-height:0;max-height:none;overflow:visible!important;overscroll-behavior:auto;padding-bottom:max(24px,env(safe-area-inset-bottom))!important}
 body.geo-visual[data-geo-screen="offer"] .geo-main{display:block;flex:none;height:auto;min-height:0!important;max-height:none;overflow:visible;padding:16px 16px 24px}
 body.geo-visual[data-geo-screen="offer"] #geoOfferScreen{display:block;flex:none;height:auto!important;max-height:none;overflow:visible;padding:0 0 20px;justify-content:flex-start}
 body.geo-visual[data-geo-screen="offer"] #geoOfferForm{height:auto;min-height:0;max-height:none;overflow:visible;flex:none}
 body.geo-visual[data-geo-screen="offer"] #geoOfferForm :is(input,textarea){font-size:16px;scroll-margin-block:24px}
 body.geo-visual[data-geo-screen="offer"] #geoOfferSubmit{scroll-margin-block:24px}
}
