/* Homepage height follows its content; tall monitors do not stretch the hero. */
#app:has(.hero) { display: block; min-height: 0; }
#app:has(.hero) > .shell { width: min(1600px, calc(100% - 64px)); }
#app:has(.hero) .hero { min-height: 0; grid-template-columns: minmax(0,.78fr) minmax(0,1.22fr); gap: 36px; padding: 34px 0 26px; align-items: center; }
#app:has(.hero) .hero-copy { padding-top: 0; }
#app:has(.hero) .hero-title { font-size: clamp(30px,2.8vw,44px); line-height: 1.38; }
#app:has(.hero) .hero-gallery { min-width: 0; }
#app:has(.hero) .hero-gallery .hero-media img, #app:has(.hero) .hero-gallery .hero-secondary img { display: block; aspect-ratio: 16 / 9; width: 100%; height: auto; object-fit: contain; }
#app:has(.hero) .application-choices { padding: 10px 0 18px; gap: 20px; align-items: stretch; }
#app:has(.hero) .apply-choice { min-height: 84px; }
#app:has(.hero) .compact-groups { padding: 18px 0 16px; gap: 18px; }
#app:has(.hero) .group-list { gap: 16px 24px; }
#app:has(.hero) .consultation { display: grid; grid-template-columns: max-content minmax(0,1fr) max-content; gap: 5px 22px; min-height: 48px; padding-top: 11px; padding-bottom: 11px; }
#app:has(.hero) .consultation > strong { grid-column: 1; grid-row: 1; }
#app:has(.hero) .consultation > span { grid-column: 2; grid-row: 1; }
#app:has(.hero) .consultation > a { grid-column: 3; grid-row: 1; overflow-wrap: anywhere; }
#app:has(.hero) .consultation > small { grid-column: 2 / -1; grid-row: 2; }
#app:has(.hero) .consultation span { overflow-wrap: anywhere; }
#app:has(.hero) .footer { min-height: 44px; align-items: center; padding: 10px 0; }
.gallery-credits, .home-image-attribution { grid-column: 1 / -1; margin: 0; font-size: 10px; line-height: 1.65; color: #8a796d; overflow-wrap: anywhere; }
.gallery-credits a, .footer a { text-underline-offset: 3px; }
.gallery-credits a:hover, .footer a:hover { text-decoration: underline; }
.footer nav { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; }
#app:has(.hero) .consultation > span { display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px 20px; min-width: 0; }
#app:has(.hero) .consultation a { text-decoration: underline; text-underline-offset: 3px; }
#app:has(.hero) .consultation small { font-size: 11px; line-height: 1.7; }
.home-registration-deadline { font-size: 12px; color: var(--muted); margin: 15px 0 0; line-height: 1.7; }
.policy-page { max-width: 1000px; padding-bottom: 40px; }
.policy-heading { padding: 34px 0 24px; border-bottom: 1px solid var(--line); }
.policy-heading h1 { font-size: clamp(30px,4vw,42px); line-height: 1.3; margin: 12px 0; }
.policy-event { font-size: 15px; margin: 10px 0; line-height: 1.75; }
.policy-version { font-size: 12px; color: var(--muted); margin: 8px 0 0; }
.policy-body { font-size: 14px; color: #55474a; line-height: 1.95; overflow-wrap: anywhere; }
.policy-lead { margin: 24px 0 20px; }
.policy-body a { color: var(--wine); text-decoration: underline; text-underline-offset: 3px; }
.policy-config-note { display: grid; gap: 5px; padding: 13px 16px; margin: 18px 0; background: #f8ebd5; border: 1px solid #d9bd86; font-size: 13px; }
.policy-config-note strong { color: #805818; }
.policy-facts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0 24px; padding: 12px 20px; margin: 22px 0 26px; background: var(--cream); border: 1px solid var(--line); }
.policy-facts > div { padding: 9px 0; min-width: 0; }
.policy-facts dt { color: var(--muted); font-size: 12px; }
.policy-facts dd { margin: 2px 0 0; color: var(--ink); font-size: 14px; }
.policy-body section { margin: 27px 0; scroll-margin-top: 18px; }
.policy-body h2 { font-size: 19px; color: var(--wine-dark); line-height: 1.5; margin: 0 0 12px; }
.policy-body p { margin: 10px 0; }
.policy-body ul { margin: 10px 0; padding-left: 22px; }
.policy-body li { margin: 8px 0; padding-left: 3px; }
.policy-deadline { padding: 12px 15px; background: #fff6e8; border-left: 3px solid var(--gold); }
.policy-bottom-links { display: flex; flex-wrap: wrap; gap: 12px 26px; border-top: 1px solid var(--line); padding: 19px 0 0; margin-top: 30px; }
.policy-consent > label { display: flex; align-items: flex-start; gap: 9px; font-size: 13px; line-height: 1.8; }
.policy-consent input[type="checkbox"] { flex: 0 0 16px; width: 16px; height: 16px; min-height: 0; margin: 4px 0 0; }
.policy-consent a { color: var(--wine); text-decoration: underline; text-underline-offset: 3px; }
.policy-consent small { display: block; color: var(--muted); font-size: 11px; line-height: 1.7; margin-top: 4px; }
@media (min-width: 1600px) { #app:has(.hero) .hero { padding: 42px 0 32px; gap: 44px; } #app:has(.hero) .event-name { font-size: 20px; } }
@media (max-width: 1100px) { #app:has(.hero) > .shell { width: calc(100% - 48px); } #app:has(.hero) .hero { grid-template-columns: minmax(0,.88fr) minmax(0,1.12fr); gap: 24px; padding: 28px 0 22px; } #app:has(.hero) .hero-title { font-size: 30px; } #app:has(.hero) .event-name { font-size: 16px; } #app:has(.hero) .application-choices { gap: 12px; } #app:has(.hero) .apply-choice { padding: 13px; } }
@media (max-width: 900px) { #app:has(.hero) > .shell { width: calc(100% - 40px); } #app:has(.hero) .hero { grid-template-columns: 1fr; gap: 20px; padding: 24px 0 20px; } #app:has(.hero) .hero-copy { max-width: 680px; } #app:has(.hero) .rule { margin: 10px 0 15px; } #app:has(.hero) .hero-title { font-size: clamp(28px,4.6vw,38px); } #app:has(.hero) .event-name { margin: 10px 0; } #app:has(.hero) .group-list { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px 16px; } #app:has(.hero) .group { white-space: normal; line-height: 1.6; } }
@media (min-width: 641px) and (max-width: 820px) { #app:has(.hero) .application-choices { grid-template-columns: repeat(3,minmax(0,1fr)); } #app:has(.hero) .apply-choice { min-height: 96px; gap: 6px; } #app:has(.hero) .apply-choice strong { font-size: 16px; } #app:has(.hero) .apply-choice small { line-height: 1.6; } #app:has(.hero) .go-icon { width: 24px; height: 24px; font-size: 15px; } }
@media (max-width: 640px) { #app:has(.hero) > .shell { width: calc(100% - 28px); } #app:has(.hero) .hero { padding: 20px 0 16px; gap: 17px; } #app:has(.hero) .hero-title { font-size: clamp(27px,7vw,34px); } #app:has(.hero) .application-choices { grid-template-columns: 1fr; gap: 10px; padding-top: 6px; } #app:has(.hero) .apply-choice { min-height: 66px; padding: 12px 16px; } #app:has(.hero) .compact-groups { gap: 14px; padding-top: 15px; } #app:has(.hero) .group-list { gap: 10px; } .policy-facts { grid-template-columns: 1fr; padding: 10px 15px; } .policy-heading { padding: 24px 0 18px; } .policy-body { font-size: 13px; } .policy-body h2 { font-size: 17px; } .policy-config-note { padding: 11px 13px; } }
@media (max-width: 1100px) { #app:has(.hero) .consultation { grid-template-columns: max-content minmax(0,1fr); gap: 5px 18px; } #app:has(.hero) .consultation > a { grid-column: 2; grid-row: 2; } #app:has(.hero) .consultation > small { grid-row: 3; } }
@media (max-width: 640px) { #app:has(.hero) .consultation { grid-template-columns: minmax(0,1fr); gap: 4px; } #app:has(.hero) .consultation > strong, #app:has(.hero) .consultation > span, #app:has(.hero) .consultation > a, #app:has(.hero) .consultation > small { grid-column: 1; grid-row: auto; } }
