/* V1.7: only new sections/dialogs. Approved V1.6 hero/footer CSS is not edited. */
:focus-visible {outline:2px solid var(--cyan);outline-offset:4px}
.participation-hub {display:block;min-height:0}
.participation-hub .registration-bg {opacity:.5}
.participation-hub .section-heading {align-items:center;margin-bottom:30px}
.participation-hub .section-heading h2 {max-width:680px}
.participation-hub .section-heading > p {max-width:390px}
.participation-toolbar {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px;position:relative}
.participation-filters {display:flex;flex-wrap:wrap;gap:8px}
.participation-filter {display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;padding:0 15px;border:1px solid var(--line);background:rgba(4,6,32,.75);color:#d6e1f5;font:700 11px/1.2 var(--font-ui);letter-spacing:.07em;text-transform:uppercase;cursor:pointer;transition:background .2s,border-color .2s}
.participation-filter span {color:var(--cyan);font-size:10px}
.participation-filter.is-selected {background:rgba(0,223,247,.12);border-color:var(--cyan);color:#fff;box-shadow:inset 0 -2px 0 var(--cyan)}
.participation-filter:hover {background:rgba(0,223,247,.15)}
.participation-count {color:var(--muted);font:600 11px/1.2 var(--font-ui);margin:0;white-space:nowrap}
.modality-grid {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:stretch}
.modality-card {min-width:0;display:flex;flex-direction:column;position:relative;border:1px solid rgba(0,223,247,.25);background:linear-gradient(145deg,#0a1033,#070822);clip-path:polygon(0 0,calc(100% - 20px) 0,100% 20px,100% 100%,20px 100%,0 calc(100% - 20px));transition:border-color .2s,transform .2s}
.modality-card:hover {border-color:var(--cyan);transform:translateY(-3px)}
.modality-art {--art-accent:#00dff7;position:relative;isolation:isolate;aspect-ratio:16/9;overflow:hidden;width:100%;background:radial-gradient(ellipse at 80% 70%,#18337a88,transparent 65%),linear-gradient(145deg,#0c123c,#080b24);border-bottom:1px solid var(--line)}
.modality-art::before {content:"";position:absolute;inset:0;background:repeating-linear-gradient(135deg,transparent 0 38px,#a5baff09 38px 39px);z-index:-1}
.modality-art::after {content:"";position:absolute;left:6%;bottom:25%;height:2px;width:38%;background:var(--art-accent);box-shadow:0 0 18px var(--art-accent);opacity:.65;transform:skewX(-25deg)}
.modality-art[data-theme="cosplay"],.modality-art[data-theme="artist-alley"] {--art-accent:#bd64ff;background:radial-gradient(ellipse at 85% 40%,#5f198c55,transparent 60%),linear-gradient(145deg,#100f38,#080b24)}
.modality-art[data-theme="mortal-kombat"] {--art-accent:#ff3849;background:radial-gradient(ellipse at 85% 40%,#8c194955,transparent 60%),linear-gradient(145deg,#180f38,#080b24)}
.modality-art[data-theme="kpop"] {--art-accent:#ff59c9}
.modality-art[data-theme="fifa"] {--art-accent:#1edffc}
.modality-art[data-theme="standistas"] {--art-accent:#ffe04d}
.art-marker {position:absolute;top:18px;left:20px;color:#e7eefe;letter-spacing:.15em;font:800 10px/1 var(--font-ui)}
.art-code {position:absolute;right:7%;top:18%;font:800 clamp(52px,7vw,92px)/1 var(--font-numeric);color:#d9e6ff20;letter-spacing:-.06em}
.art-frame {position:absolute;inset:25% 8% 31% 55%;border:1px solid var(--art-accent);opacity:.26;transform:skewX(-14deg)}
.art-rails {position:absolute;top:0;left:0;width:34%;height:3px;background:var(--art-accent)}
.art-hint {position:absolute;left:20px;bottom:15px;font:600 8px/1.4 var(--font-ui);letter-spacing:.16em;color:#bdc9e4}
.modality-art>img {position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.modality-art.has-art::before,.modality-art.has-art::after,.modality-art.has-art>span {display:none}
.modality-copy {padding:22px;display:flex;flex-direction:column;flex:1;min-width:0}
.modality-meta {display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.modality-category {color:var(--cyan);font:700 9px/1 var(--font-ui);letter-spacing:.13em;text-transform:uppercase}
.modality-status {color:#c5cfeb;background:#121d3d;border:1px solid #4b638d66;padding:5px 7px;font:700 8px/1 var(--font-ui);letter-spacing:.1em}
.modality-card h3 {margin:0;font:800 clamp(24px,2.5vw,30px)/1.08 var(--font-display);text-transform:uppercase;overflow-wrap:break-word}
.modality-summary {font-size:17px;line-height:1.4;margin:12px 0 20px;min-height:48px}
.modality-details {margin-top:auto;width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;background:#07132d;border:1px solid var(--line);border-left:3px solid var(--cyan);padding:0 13px;color:#edfaff;font:700 11px/1 var(--font-ui);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
.modality-details:hover {background:#122946;border-color:var(--cyan)}
.modality-arrow {font-size:19px;color:var(--cyan)}
.commercial-regulation {display:flex;align-items:center;justify-content:space-between;gap:30px;margin-top:24px;padding:26px;border:1px solid var(--line);background:linear-gradient(110deg,#090c29ed,#10152abf);border-left:3px solid var(--yellow)}
.commercial-kicker {display:block;color:var(--cyan);font:700 9px/1.5 var(--font-ui);letter-spacing:.12em}
.commercial-regulation h3 {margin:7px 0 6px;font:800 22px/1.15 var(--font-display);text-transform:uppercase}
.commercial-regulation p {max-width:720px;margin:0;font-size:16px;line-height:1.45}
.outline-action {display:inline-flex;align-items:center;justify-content:center;gap:15px;min-height:44px;flex:none;padding:12px 16px;border:1px solid var(--line);background:#050d27;color:#effcff;font:700 10px/1.3 var(--font-ui);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
.outline-action span {color:var(--cyan);font-size:18px}
.participation-note {display:flex;align-items:baseline;gap:10px;margin:20px 0 0;font-size:14px;line-height:1.4;color:#aab8d5}
.note-marker {width:6px;height:6px;background:var(--yellow);flex:none}
.partner-strip {padding-block:50px;border-block:1px solid var(--line)}
.partner-strip img {width:100%;max-height:180px;object-fit:contain;margin-top:24px}
.no-script-participation {padding:24px;border:1px solid var(--line)}
/* Browser-native dialogs preserve focus, Escape handling and modality. */
.amx-dialog {padding:0;border:1px solid #45d9f582;border-top:3px solid var(--cyan);background:#070a25;color:var(--white);width:min(720px,calc(100vw - 36px));max-width:calc(100vw - 36px);max-height:90vh;max-height:90dvh;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 32px 100px #000b;scrollbar-width:thin;scrollbar-color:#365079 #080b25}
.amx-dialog::backdrop {background:#020415ed;backdrop-filter:blur(5px)}
.dialog-topline {position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:18px;background:#060b24f5;padding:12px 20px;border-bottom:1px solid var(--line)}
.dialog-topline>span {font:700 10px/1.3 var(--font-ui);letter-spacing:.1em;color:var(--cyan)}
.dialog-close {display:inline-flex;align-items:center;gap:12px;min-height:38px;background:#0d1736;border:1px solid var(--line);color:#effaff;cursor:pointer;padding:8px 12px;font:700 10px/1 var(--font-ui);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}
.dialog-close>span {font-size:22px;font-family:Arial,sans-serif;font-weight:400;line-height:1}
.part-dialog-art {aspect-ratio:16/5.4;min-height:120px}
.part-dialog-art .art-code {font-size:105px}
.part-dialog-art .art-marker {left:30px;top:24px}
.part-dialog-art .art-hint {left:30px}
.part-dialog-copy {padding:30px}
.part-dialog-copy h2 {font:800 clamp(30px,4vw,42px)/1.05 var(--font-display);text-transform:uppercase;margin:0;max-width:100%;overflow-wrap:break-word}
.part-dialog-copy>p {color:var(--muted);font-size:18px;line-height:1.5;margin:18px 0}
.review-message {padding:14px 16px;border-left:2px solid var(--yellow);background:#fcce2408;margin-top:22px}
.review-message>strong {font:700 10px/1.3 var(--font-ui);color:#ffe891;text-transform:uppercase;letter-spacing:.06em}
.review-message>p {color:#b8c0d9;font-size:15px;line-height:1.4;margin:6px 0 0}
.part-dialog-facts {margin:22px 0}
.part-dialog-facts>div {display:grid;grid-template-columns:minmax(140px,.7fr) minmax(0,1.3fr);gap:18px;padding:14px 0;border-bottom:1px solid var(--line)}
.part-dialog-facts dt {font:700 10px/1.5 var(--font-ui);color:var(--cyan);text-transform:uppercase;letter-spacing:.05em}
.part-dialog-facts dd {margin:0;font-size:16px;line-height:1.4;color:#d7e1f1}
.part-dialog-actions {display:flex;flex-wrap:wrap;gap:12px}
.part-dialog-actions .button {min-height:48px;font-size:10px;padding:14px 16px}
.button--unavailable {cursor:not-allowed;opacity:.45;box-shadow:none}
.button--unavailable:hover {transform:none}
.button--unavailable::after {display:none}
.part-dialog-copy .dialog-contact {font-size:15px;line-height:1.5;margin-bottom:0}
.dialog-contact a {color:var(--cyan);text-decoration:underline;text-underline-offset:3px}
/* Both maps coexist: diagram stays visible; Google Maps gets its own arrival dialog. */
.map-purpose-note {font-size:14px;line-height:1.5;margin-top:16px;color:#aebbd7}
.arrival-dialog {width:min(960px,calc(100vw - 36px))}
.arrival-copy {padding:28px 28px 20px}
.arrival-copy h2 {font:800 clamp(26px,3vw,38px)/1.1 var(--font-display);text-transform:uppercase;margin:0}
.arrival-copy p {color:var(--muted);font-size:16px;margin:10px 0 0}
.arrival-frame {position:relative;margin:0 28px;border:1px solid #24465e;height:clamp(260px,48vh,460px);background:#0e1930;overflow:hidden}
.arrival-frame iframe {width:100%;height:100%;border:0;display:block;background:#0b1830}
.arrival-loading {position:absolute;z-index:1;inset:0;display:grid;place-items:center;text-align:center;pointer-events:none;margin:0;padding:20px;color:#c7dded;font-size:16px;background:#0b1420}
.arrival-bottom {display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 28px 28px}
.arrival-bottom p {font-size:14px;line-height:1.5;color:#bcc7db;margin:0;max-width:480px}
.arrival-bottom .button {flex:none;font-size:10px;padding-inline:18px;min-height:48px}
@media(max-width:1100px){.modality-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.participation-toolbar{align-items:flex-start}.participation-count{padding-top:15px}}
@media(max-width:820px){.commercial-regulation{align-items:flex-start;flex-direction:column;gap:18px}.part-dialog-copy{padding:24px}.participation-toolbar{flex-direction:column;gap:10px}.participation-count{padding-top:0}.arrival-bottom{flex-direction:column;align-items:stretch;gap:16px}}
@media(max-width:560px){.modality-grid{grid-template-columns:1fr;gap:20px}.modality-art{aspect-ratio:16/9}.art-code{font-size:88px}.modality-copy{padding:22px}.modality-card h3{font-size:29px}.modality-summary{min-height:0}.participation-filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}.participation-filter{justify-content:space-between;min-height:44px;padding-inline:14px}.participation-hub .section-heading{margin-bottom:26px}.commercial-regulation{padding:22px}.commercial-regulation .outline-action{width:100%}.participation-note{font-size:13px}.amx-dialog{width:calc(100vw - 20px);max-width:calc(100vw - 20px);max-height:92vh;max-height:92dvh}.dialog-topline{padding:10px 12px;gap:10px}.dialog-topline>span{font-size:8px}.dialog-close{min-height:40px}.part-dialog-copy{padding:22px 18px}.part-dialog-copy>p{font-size:17px}.part-dialog-facts>div{grid-template-columns:1fr;gap:6px}.part-dialog-actions{display:grid;grid-template-columns:1fr;width:100%}.part-dialog-art{aspect-ratio:16/7}.part-dialog-art .art-code{font-size:72px}.part-dialog-art .art-marker,.part-dialog-art .art-hint{left:20px}.arrival-copy{padding:24px 18px 16px}.arrival-copy h2{font-size:28px}.arrival-copy p{font-size:14px}.arrival-frame{margin-inline:14px;height:40vh;min-height:230px}.arrival-bottom{padding:18px 18px 24px}.arrival-bottom .button{width:100%}.local-directions .button{width:100%;min-height:48px;font-size:10px}}
@media(prefers-reduced-motion:reduce){.modality-card:hover{transform:none}}

.map-retry{min-height:38px;margin-top:8px;border:0;padding:0 4px;background:transparent;color:var(--cyan);text-decoration:underline;text-underline-offset:3px;cursor:pointer;font:600 12px/1.3 var(--font-ui)}
