/* Public portal: mobile-first ADS composition. */
.public{font:var(--ds-font-body-large)}
.public .button,.public input:not([type="checkbox"]):not([type="radio"]),.public select,.public textarea{font:var(--ds-font-body-large);min-height:44px}
.public .button.compact{min-height:40px}
.public .education-bar{font:var(--ds-font-body-large);font-weight:var(--ds-font-weight-medium)}
.public .brand small,.public .home-quick-link small,.public .source-note{font:var(--ds-font-body)}
.field-error{color:var(--ds-text-danger);font:var(--ds-font-body)}
.public-danger-choice{margin-bottom:var(--ds-space-200);padding:var(--ds-space-100) var(--ds-space-150);border:1px solid var(--ds-border);border-radius:var(--ds-border-radius-100)}
.public-danger-choice legend{font:var(--ds-font-body-large);font-weight:var(--ds-font-weight-medium)}
.public-danger-choice label{display:flex;align-items:center;gap:var(--ds-space-100);min-height:44px;cursor:pointer}
.public-danger-choice input{width:20px;height:20px;min-height:0}
.public-danger-choice small{display:block;margin-top:var(--ds-space-100)}
.report-optional-details{margin:var(--ds-space-150) 0}.report-optional-details summary{min-height:44px;cursor:pointer}
.report-optional-details[open] .field{margin:var(--ds-space-150) 0}
.report-map-choice{margin-bottom:var(--ds-space-200);border:1px solid var(--ds-border);border-radius:var(--ds-border-radius-100);background:var(--ds-surface);overflow:hidden}
.report-map-choice summary{display:flex;justify-content:flex-start;width:100%;min-height:48px;cursor:pointer}
.report-map-choice>.button,.report-map-choice>p{margin:var(--ds-space-150)}
.report-map-choice .map-frame{min-height:360px}
.report-location-side>.panel{margin-top:var(--ds-space-200)}
.receipt-panel .tracking-code{overflow-wrap:anywhere;letter-spacing:.04em}
.home-shell{width:100%;max-width:1280px;margin:0 auto;padding:var(--ds-space-200) 0 var(--ds-space-400)}
.home-hero{display:grid;gap:var(--ds-space-200);padding:0 0 var(--ds-space-300)}
.home-hero h1{max-width:720px;margin:0 0 var(--ds-space-100);font:var(--ds-font-heading-xlarge)}
.home-lead{max-width:680px;margin:0 0 var(--ds-space-200);font:var(--ds-font-body-large);color:var(--ds-text-subtle)}
.home-actions{display:grid;grid-template-columns:1fr;gap:var(--ds-space-100)}
.home-actions .button{width:100%;min-height:44px}
.home-status{border:1px solid var(--ds-border);border-radius:var(--ds-border-radius-100);background:var(--ds-surface);overflow:hidden}
.home-status-head{min-height:44px;padding:0 var(--ds-space-150);display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-100);border-bottom:1px solid var(--ds-border);font:var(--ds-font-body);font-weight:var(--ds-font-weight-medium)}
.home-status-head a{font-weight:var(--ds-font-weight-medium)}
.home-alert-summary,.home-clear-summary{display:grid;grid-template-columns:24px minmax(0,1fr) 20px;gap:var(--ds-space-100);align-items:center;min-height:56px;padding:var(--ds-space-100) var(--ds-space-150);color:var(--ds-text)}
.home-alert-summary+.home-alert-summary{border-top:1px solid var(--ds-border)}
.home-alert-summary:hover{background:var(--ds-background-neutral);text-decoration:none}
.home-alert-summary>.icon{color:var(--ds-icon-warning)}
.home-clear-summary>.icon{color:var(--ds-icon-success)}
.home-alert-summary small,.home-alert-summary strong,.home-clear-summary small,.home-clear-summary strong{display:block}
.home-alert-summary small,.home-clear-summary small{font:var(--ds-font-body-small);color:var(--ds-text-subtle)}
.home-alert-summary strong,.home-clear-summary strong{font:var(--ds-font-body);font-weight:var(--ds-font-weight-medium)}
.home-emergency-numbers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ds-space-050);margin-bottom:var(--ds-space-300);padding:var(--ds-space-050);border:1px solid var(--ds-border);border-radius:var(--ds-border-radius-100);background:var(--ds-surface)}
.home-emergency-numbers a{min-height:56px;padding:var(--ds-space-100);border-radius:var(--ds-border-radius-050);color:var(--ds-text)}
.home-emergency-numbers a:hover{background:var(--ds-background-neutral);text-decoration:none}
.home-emergency-numbers small,.home-emergency-numbers strong{display:block}
.home-emergency-numbers small{font:var(--ds-font-body-small);color:var(--ds-text-subtle)}
.home-emergency-numbers strong{font:var(--ds-font-heading-small)}
.home-map-section{padding:var(--ds-space-300) 0;border-top:1px solid var(--ds-border)}
.home-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--ds-space-150);margin-bottom:var(--ds-space-150)}
.home-section-heading h2{margin:0;font:var(--ds-font-heading-medium)}
.home-map-stage{min-width:0}
.home-map-stage .map-frame,.home-map-stage .map-large .map-frame{height:420px;min-height:420px}
.home-quick-links{display:grid;grid-template-columns:1fr;gap:var(--ds-space-100);padding-top:var(--ds-space-300);border-top:1px solid var(--ds-border)}
.home-quick-link{display:grid;grid-template-columns:24px minmax(0,1fr) 20px;gap:var(--ds-space-100);align-items:center;min-height:64px;padding:var(--ds-space-100) var(--ds-space-150);border:1px solid var(--ds-border);border-radius:var(--ds-border-radius-100);background:var(--ds-surface);color:var(--ds-text)}
.home-quick-link:hover{background:var(--ds-background-neutral);text-decoration:none}
.home-quick-link>svg:first-child{color:var(--ds-icon-brand)}
.home-quick-link strong,.home-quick-link small{display:block}
.home-quick-link strong{font:var(--ds-font-body);font-weight:var(--ds-font-weight-medium)}
.home-quick-link small{color:var(--ds-text-subtle);font:var(--ds-font-body-small)}

/* Demo is intentionally map-led, not a marketing page. */
.demo-shell{width:100%;max-width:1440px;margin:0 auto}
.demo-page-heading{margin-bottom:var(--ds-space-150)}
.demo-title-line{display:flex;align-items:center;gap:var(--ds-space-100);flex-wrap:wrap}
.demo-title-line h1{margin:0;font:var(--ds-font-heading-large)}
.demo-map-wrap{min-width:0}
.demo-map-wrap .map-frame{height:min(72vh,760px);min-height:520px}

/* Project information stays plain and student-readable. */
.project-page{width:100%;max-width:960px;margin:0 auto}
.project-heading{margin-bottom:var(--ds-space-200)}
.project-index{display:flex;gap:var(--ds-space-050);overflow:auto;margin-bottom:var(--ds-space-300);padding-bottom:var(--ds-space-050);scrollbar-width:thin}
.project-index a{display:inline-flex;align-items:center;min-height:36px;padding:0 var(--ds-space-100);border-radius:var(--ds-border-radius-050);color:var(--ds-text-subtle);font-weight:var(--ds-font-weight-medium);white-space:nowrap}
.project-index a:hover{background:var(--ds-background-neutral);color:var(--ds-text);text-decoration:none}
.project-content{display:grid;gap:var(--ds-space-400)}
.project-section{scroll-margin-top:calc(var(--app-banner-height) + var(--app-topnav-height) + var(--ds-space-200))}
.project-section h2{margin-bottom:var(--ds-space-150)}
.project-section>p{max-width:760px;color:var(--ds-text-subtle)}
.project-feature-grid{display:grid;grid-template-columns:1fr;gap:var(--ds-space-100)}
.project-feature-grid>div{padding:var(--ds-space-150);border:1px solid var(--ds-border);border-radius:var(--ds-border-radius-100);background:var(--ds-surface)}
.project-feature-grid p{margin:var(--ds-space-050) 0 0;color:var(--ds-text-subtle)}
.project-source-list{margin:0;border-top:1px solid var(--ds-border)}
.project-source-list>div{display:grid;gap:var(--ds-space-050);padding:var(--ds-space-150) 0;border-bottom:1px solid var(--ds-border)}
.project-source-list dt{font-weight:var(--ds-font-weight-semibold)}
.project-source-list dd{margin:0;color:var(--ds-text-subtle)}

.warning-strip{display:flex;align-items:center;gap:var(--ds-space-100);flex-wrap:wrap;margin-bottom:var(--ds-space-200);padding:var(--ds-space-150);border-left:3px solid var(--ds-border-warning);border-radius:var(--ds-border-radius-050);background:var(--ds-background-warning);color:var(--ds-text-warning);font:var(--ds-font-body)}
.warning-strip>span{flex:1;min-width:160px}
.shelter-summary,.facility-summary{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-150);padding:var(--ds-space-150) 0;border-bottom:1px solid var(--ds-border)}
.shelter-summary:last-child,.facility-summary:last-child{border-bottom:0}
.shelter-summary strong,.facility-summary strong{display:block;font:var(--ds-font-body);font-weight:var(--ds-font-weight-medium)}
.shelter-summary small,.facility-summary small{display:block}
.shelter-summary b{font:var(--ds-font-metric-medium);text-align:right}
.facility-summary>div{flex:1;min-width:0}

@media (min-width:600px){
  .home-actions{display:flex;align-items:center;flex-wrap:wrap}.home-actions .button{width:auto}
  .home-emergency-numbers{grid-template-columns:repeat(4,minmax(0,1fr))}
  .home-quick-links{grid-template-columns:repeat(3,minmax(0,1fr))}
  .project-feature-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .project-source-list>div{grid-template-columns:180px minmax(0,1fr);gap:var(--ds-space-200)}
}
@media (min-width:960px){
  .home-shell{padding-top:var(--ds-space-300)}
  .home-hero{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:var(--ds-space-400);align-items:start;padding-bottom:var(--ds-space-400)}
  .home-hero h1{font:var(--ds-font-heading-xxlarge)}
  .home-map-stage .map-frame,.home-map-stage .map-large .map-frame{height:min(60vh,640px);min-height:480px}
}

/* Public portal is phone-first. Interactive targets are comfortable on touch while
   desktop can use the normal compact ADS application density. */
@media (max-width:900px){
  .public .button:not(.compact),
  .public input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),
  .public select,
  .public textarea{min-height:44px}
  .public .icon-button{width:40px;height:40px}
}
