/* Shared mobile safeguards for every JR Grace page family. */
html,body{max-width:100%;overflow-x:clip}
img,video,iframe,canvas{max-width:100%}
button,a,input,select,textarea{touch-action:manipulation}

@media(max-width:900px){
  .menu,.nav-toggle,.standard-nav-toggle{display:block!important;margin-left:auto!important}
  .standard-nav-toggle,.nav-toggle,.menu{min-width:44px;min-height:44px}
  header,.nav,.site-header,.city-nav{isolation:isolate}
  .standard-site-nav{justify-content:flex-start!important;max-height:calc(100dvh - 102px);overflow-y:auto;overscroll-behavior:contain}
  .standard-site-nav>.global-pm-nav>.global-pm-trigger,.standard-site-nav>a{min-height:46px!important}
  .global-pm-nav{display:block;align-self:stretch}
  .global-pm-trigger{width:100%;justify-content:flex-start!important;text-align:left}
  .global-pm-menu,.global-pm-nav:hover .global-pm-menu,.global-pm-nav:focus-within .global-pm-menu{position:static;display:none;grid-template-columns:1fr;gap:22px;max-height:none;padding:17px;overflow:visible;border:1px solid #d9e0e7;box-shadow:none}
  .global-pm-nav.open .global-pm-menu{display:grid}
  .global-service-links,.global-city-links{grid-template-columns:1fr}
  .global-pm-actions{flex-direction:column}
  .global-service-links a,.global-city-links a{min-height:44px;display:flex!important;align-items:center}
  .global-pm-actions a{min-height:46px;display:flex;align-items:center;justify-content:center}
  .calculator-grid form#calculator-form{grid-template-columns:repeat(2,minmax(0,1fr))}
  .calculator-grid form#calculator-form fieldset{min-width:0}
  .calculator-grid form#calculator-form input[type=number],.calculator-grid input[type=range],.affordability-ratio input[type=range]{min-height:44px}
  .filters input,.filters select{min-height:44px}
  .reset-map-control button{min-height:44px}
  .topbar{display:none}
}

@media(max-width:760px){
  :root{--mobile-gutter:16px}
  .wrap,.shell,.detail-shell{width:calc(100% - 32px)!important;max-width:none!important}
  h1{overflow-wrap:anywhere}
  .button,.btn,.primary,.gold-button,.outline-button{min-height:46px}

  /* Homepage */
  .hero{min-height:500px;height:auto}
  .hero-copy{padding:72px 16px 150px}
  .choice{margin-top:-105px;padding:0 16px}
  .floating-card{width:100%;max-width:380px}
  .leadership{margin-top:55px}
  .leadership-copy{padding-right:0!important;padding-left:0!important}
  .portrait-panel{min-height:310px}
  .rating-panel{flex-direction:column;gap:20px;text-align:center}
  .manage,.difference,.benefit-cards,.trusted{padding-top:58px;padding-bottom:58px}
  .big-number{font-size:7rem}
  .areas{height:auto;min-height:300px;padding:50px 0}
  .footer-grid{gap:28px!important;padding-top:52px;padding-bottom:52px}

  /* Rental search and map/list view */
  .rental-hero h1{font-size:clamp(2.7rem,13vw,4.2rem)}
  .rental-hero:after{width:310px;height:310px;right:-170px;top:-170px}
  .hero-stat strong{font-size:4rem}
  .heading-shell{padding-top:45px;padding-bottom:28px}
  .section-heading h2{font-size:2.65rem}
  .filters{display:grid;grid-template-columns:1fr!important}
  .filters .searchbox{grid-column:auto!important;padding-left:16px!important}
  .filters label,.filter-toggle{height:auto;min-height:64px;border-right:0;border-bottom:1px solid #dfe2e6}
  .filters input,.filters select{min-height:44px;text-align:left}
  .advanced-filters,.advanced-filters.open{display:none;flex-direction:column;padding:14px 16px}
  .advanced-filters.open{display:flex}
  .advanced-filters select{width:100%;min-height:44px}
  .results-split #map{height:min(56vh,430px);min-height:320px}
  .results-panel{padding:12px}
  .property-card .hover-tools,.property-card .photo-arrow{opacity:1;transform:none}
  .hover-tools button{width:52px;height:48px}
  .photo-arrow,.map-photo-arrow,.viewer-arrow,.viewer-close,.rent-lead-close,.agent-referral-close{min-width:44px;min-height:44px}
  .map-preview-actions a{min-height:44px}
  .actions a,.actions button{min-height:44px}
  .compare-tray{bottom:10px;width:calc(100% - 20px);padding:12px;gap:8px}
  #compareDialog{width:100vw!important;max-width:none!important;height:100dvh;max-height:none;margin:0}
  .compare-close{min-width:44px;min-height:44px}
  #compareContent{padding:24px 14px 0}
  .comparison-grid{grid-template-columns:repeat(3,minmax(260px,82vw));scroll-snap-type:x mandatory}
  .compare-property{scroll-snap-align:start;min-height:0!important}
  .compare-media{height:220px;margin:0 10px}
  .compare-location{min-height:300px}
  .compare-map{height:220px}
  #map .gm-style-iw-d .map-property-preview{width:min(290px,calc(100vw - 70px))}

  /* Listing details */
  .breadcrumbs{overflow-x:auto;white-space:nowrap;padding-top:22px}
  .gallery{height:390px!important;margin-right:auto;margin-left:auto}
  .content-grid{grid-template-columns:minmax(0,1fr)!important;gap:28px;padding-top:36px}
  .content-grid>article,.content-grid>aside{min-width:0;width:100%}
  .content-grid h1{font-size:2.35rem}
  .summary,.tour-block,.costs,.sticky-card{padding:24px!important}
  .stat-grid strong{font-size:1.35rem}
  article section h2,.nearby h2,.sticky-card h2{font-size:1.95rem}
  .tour-days{display:flex;min-width:0;width:100%;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:5px}
  .tour-days button{flex:0 0 115px;scroll-snap-align:start}
  .tour-days button:nth-child(n){display:block}
  .tour-times{grid-template-columns:repeat(2,1fr)}
  .schools-section{padding:54px 0}
  .schools-section h2{font-size:2.35rem}
  .schools-layout{margin:0;min-height:0}
  .school-map{min-height:320px}
  .school-map-legend{max-width:230px;flex-wrap:wrap}
  .final-cta{padding:58px 0}
  .final-cta h2{font-size:2.45rem}
  .final-cta .outline-button{margin:10px 0 0}
  .photo-viewer{height:100dvh;padding:58px 8px 96px}
  .photo-viewer figure{height:calc(100dvh - 145px)}
  .photo-viewer figure img{max-height:calc(100dvh - 205px)}

  /* Owner calculator and lead dialogs */
  .hero h1,.owner-faq .hero h1{font-size:clamp(2.65rem,12vw,4rem)}
  .calculator-head h2{font-size:2rem}
  #calculator-form label{grid-template-columns:1fr;gap:6px;margin-bottom:14px}
  #calculator-form label span{min-height:46px}
  #calculator-form input[type=number],#calculator-form input[type=range],.affordability-ratio input[type=range]{min-height:44px}
  .years small{gap:12px;font-size:10px}
  .recommendation{padding:19px}
  .recommendation strong{font-size:26px}
  .chart{min-width:0;gap:3px}
  .resources a{padding:20px}
  .rent-lead-modal,.lead-modal{padding:0;align-items:stretch}
  .rent-lead-dialog,.lead-dialog{width:100%;max-height:100dvh;border-top-width:4px;padding:30px 18px}
  .rent-lead-dialog h2,.lead-dialog h2{font-size:2rem}
  .rent-lead-mask,.lead-mask{position:fixed;padding:24px}

  /* City guides, service pages and long-form content */
  .city-hero,.article-hero,.service-pages .hero{padding-top:64px;padding-bottom:64px}
  .city-hero h1,.article-hero h1,.service-pages .hero h1{font-size:clamp(2.5rem,12vw,3.8rem)}
  .city-guide,.city-content,.section{padding-top:58px;padding-bottom:58px}
  .city-stats{margin:30px 0 54px}
  .city-stats div,.city-card,.neighborhood-grid article,.attraction-grid a{padding:22px}
  .guide-block{padding:52px 0}
  .relocation li{padding-right:0}
  .city-school-card{grid-template-columns:38px minmax(0,1fr);padding:17px}
  .city-rental-image{height:210px}
  .proof-strip strong{font-size:18px}
  .service-card,.review-panel,.map-list{padding:24px}
  .check-grid{gap:14px}
  .area-grid{grid-template-columns:1fr!important}
  .area-card{min-height:210px}
  .service-map{min-height:390px}
  .fee{font-size:50px}
  .comparison-table{font-size:.85rem}
  .comparison-table th,.comparison-table td{min-width:170px;padding:13px}
  .worked-example{padding:24px}
}

@media(max-width:420px){
  .wrap,.shell,.detail-shell{width:calc(100% - 24px)!important}
  .standard-site-nav{padding-right:16px!important;padding-left:16px!important}
  .standard-site-nav>a,.standard-site-nav>.global-pm-nav>.global-pm-trigger{font-size:13px!important}
  .global-pm-menu{padding:13px}
  .hero-copy{padding-right:10px;padding-left:10px}
  .associations{gap:12px;flex-wrap:wrap}
  .associations img{max-width:100px}
  .property-card .media{height:230px}
  .actions{grid-template-columns:1fr}
  .details-button{grid-column:auto}
  .gallery{height:350px!important}
  .stat-grid div{padding:15px 12px}
  .stat-grid strong{font-size:1.2rem}
  .tour-block,.costs,.sticky-card{margin-right:-4px;margin-left:-4px;padding:20px!important}
  .compare-tray button{flex:1;padding:10px 8px}
  .school-card{grid-template-columns:40px 1fr;gap:10px;padding:14px 12px}
  .school-number{width:36px;height:36px}
}

@media(hover:none){
  .global-pm-nav:hover .global-pm-menu,.global-pm-nav:focus-within .global-pm-menu{display:none}
  .global-pm-nav.open .global-pm-menu{display:grid}
  .area-card:hover,.feature-grid article:hover .feature-photo img{transform:none}
}

/* Aptly-fed extended tour calendar */
.tour-days{grid-template-columns:repeat(6,minmax(0,1fr))}
.tour-other .tour-calendar-icon{display:inline-block;width:17px;height:15px;border:2px solid currentColor;border-radius:2px;position:relative;vertical-align:-2px}
.tour-other .tour-calendar-icon:before{content:"";position:absolute;left:-2px;right:-2px;top:3px;border-top:2px solid currentColor}
.tour-other .tour-calendar-icon:after{content:"";position:absolute;top:-4px;left:3px;width:7px;height:4px;border-right:2px solid currentColor;border-left:2px solid currentColor}
.tour-selected-date{margin:16px 0 0;padding:12px 14px;border-left:3px solid var(--gold,#bca35c);background:#fff;color:var(--ink,#172435)}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.tour-date-dialog{width:min(520px,calc(100% - 30px));max-width:520px;border:0;padding:0;color:var(--ink,#172435);background:#fff;box-shadow:0 24px 70px rgba(10,28,47,.32)}
.tour-date-dialog::backdrop{background:rgba(10,28,47,.64);backdrop-filter:blur(2px)}
.tour-date-panel{position:relative;padding:34px}
.tour-date-close{position:absolute;top:16px;right:16px;width:42px;height:42px;border:0;background:transparent;color:var(--ink,#172435);font-size:31px;line-height:1;cursor:pointer}
.tour-date-panel h3{margin:4px 48px 5px 0;font:700 2rem/1.1 "Inter Tight",sans-serif;color:var(--ink,#172435)}
.tour-date-help{margin:0 0 24px;color:var(--muted,#66717f)}
.tour-calendar-head{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;margin-bottom:10px}
.tour-calendar-head strong{text-align:center;font:700 1rem/1.2 "Inter Tight",sans-serif}
.tour-calendar-head button{width:44px;height:44px;border:1px solid #c9d2d9;background:#fff;color:var(--ink,#172435);font-size:26px;cursor:pointer}
.tour-calendar-head button:disabled{opacity:.3;cursor:not-allowed}
.tour-calendar-weekdays,.tour-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.tour-calendar-weekdays span{padding:7px 0;text-align:center;color:#65717c;font-size:11px;font-weight:800;text-transform:uppercase}
.tour-calendar-empty,.tour-calendar-day{min-height:44px}
.tour-calendar-day{border:1px solid #d7dde2;background:#fff;color:var(--ink,#172435);font:700 14px/1 "Plus Jakarta Sans",sans-serif;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}
.tour-calendar-day:not(:disabled):hover,.tour-calendar-day:not(:disabled):focus-visible{border-color:#244b84;background:#e9f1fb;outline:0}
.tour-calendar-day.is-selected{border-color:#244b84;background:#244b84;color:#fff}
.tour-calendar-day:disabled{border-color:transparent;background:#f5f5f3;color:#b2b8bd;cursor:not-allowed}
.tour-date-footnote{margin:20px 0 0;color:#65717c;font-size:12px;line-height:1.5}

@media(max-width:520px){
  .tour-date-dialog{width:calc(100% - 20px);max-width:none}
  .tour-date-panel{padding:27px 18px 22px}
  .tour-date-panel h3{font-size:1.55rem}
  .tour-calendar-weekdays,.tour-calendar-grid{gap:2px}
  .tour-calendar-empty,.tour-calendar-day{min-height:40px}
}

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