/* Visitor guide: reference-inspired, page-scoped cards. */
.visit-guide { padding-top: 4px; padding-bottom: 48px; }
.visit-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.visit-card { position:relative; overflow:hidden; border:1px solid #dce8fa; border-radius:13px; background:linear-gradient(115deg,#fcfdff 5%,#f3f8ff 65%,#e7f1ff); box-shadow:0 6px 24px #2e75cf05; }
.visit-card h2 { position:relative; z-index:2; display:flex; align-items:center; gap:16px; margin:0; color:#0d1d3b; font-size:25px; font-weight:700; line-height:1.35; letter-spacing:.02em; }
.visit-icon { flex:none; width:32px; height:32px; color:#2184ff; }
.visit-card--info { min-height:224px; padding:25px 30px; }
.visit-card--info::after { content:""; position:absolute; z-index:0; right:-12%; bottom:-68px; width:80%; height:135px; border-radius:50%; background:linear-gradient(120deg,#eaf3ff44,#c4dcfc77); transform:rotate(-14deg); }
.visit-card ul { position:relative; z-index:2; width:calc(100% - 140px); margin:21px 0 0; padding-left:22px; color:#303b4c; font-size:16px; line-height:1.75; }
.visit-card li { padding-left:2px; margin:4px 0; }
.visit-card li::marker { color:#0665c9; }
.visit-card a { color:inherit; }
.visit-card li a:hover { color:#0675e9; text-decoration:underline; }
.visit-art { position:absolute; z-index:1; width:174px; height:174px; right:4px; bottom:3px; background-image:url('../assets/guide-illustrations-transparent.png'); background-size:200% 200%;  pointer-events:none; }
.visit-art--clock { background-position:0 0; }
.visit-art--robot { background-position:100% 0; }
.visit-art--tickets { background-position:0 100%; }
.visit-art--calendar { background-position:100% 100%; width:165px; height:165px; }
.visit-card--route,.visit-card--map { grid-column:1 / -1; padding:26px; }
.visit-card--route h2,.visit-card--map h2 { font-size:23px; gap:14px; margin:0 8px 18px; }
.visit-route-body { position:relative; overflow:hidden; min-height:300px; border-top:1px solid #dce5f1; border-radius:0 0 9px 9px; }
.visit-route-art { position:absolute; inset:0; background:url('../assets/guide-elevator.png') center right / auto 100% no-repeat; }
.visit-route-art::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,#f8fbff 0%,#f8fbfff5 37%,#f8fbff80 60%,transparent 78%); }
.visit-route-steps { position:relative; z-index:1; width:55%; padding:15px 20px; }
.visit-route-steps>div { display:flex; align-items:center; gap:15px; min-height:88px; }
.visit-route-steps .visit-icon { box-sizing:content-box; width:28px; height:28px; padding:9px; border-radius:9px; background:#e7f0fd; }
.visit-route-steps p { margin:0; font-size:14px; color:#344153; line-height:1.55; }
.visit-route-steps strong { display:block; font-size:16px; color:#10233e; margin-bottom:2px; }
.visit-route-steps span { display:block; }
.visit-map { position:relative; display:block; overflow:hidden; border-radius:11px; aspect-ratio:1336 / 728; background:#e8f0f7; }
.visit-map img { display:block; width:100%; height:100%; object-fit:contain; }
.visit-map-label { position:absolute; top:27%; left:50%; transform:translateX(-50%); border-radius:9px; padding:8px 14px; background:#0879fa; box-shadow:0 3px 10px #0759c02b; color:white; text-align:center; font-size:15px; font-weight:700; line-height:1.3; white-space:nowrap; }
.visit-map-label small { display:block; font-size:11px; font-weight:400; }
.visit-map-label::after { content:""; position:absolute; bottom:-6px; left:calc(50% - 6px); border-left:6px solid transparent; border-right:6px solid transparent; border-top:7px solid #0879fa; }
.visit-map-expand { position:absolute; right:10px; bottom:10px; padding:6px 10px; background:white; border-radius:5px; box-shadow:0 2px 8px #173b5720; color:#24517b; font-size:12px; }
.visit-map:focus-visible { outline:3px solid #2184ff; outline-offset:3px; }
@media(min-width:1200px) { .visit-card--info { min-height:230px; } }
@media(max-width:1100px) and (min-width:761px) { .visit-card--info { padding:22px; } .visit-card h2 { font-size:23px; } .visit-card ul { font-size:13px; width:calc(100% - 105px); } .visit-art { width:150px; height:150px; right:0; } .visit-art--calendar { width:130px; height:130px; } .visit-route-steps { width:90%; } }
@media(max-width:760px) { .visit-grid { grid-template-columns:1fr; gap:18px; } .visit-guide { padding-bottom:32px; } .visit-card--info { min-height:210px; padding:23px; } .visit-card h2 { font-size:23px; gap:13px; } .visit-card ul { font-size:15px; width:calc(100% - 105px); } .visit-art { width:155px; height:155px; right:0; } .visit-art--calendar { width:135px; height:135px; } .visit-card--route,.visit-card--map { padding:18px; } }
@media(max-width:390px) { .visit-card--info { padding:20px 16px; } .visit-card ul { width:calc(100% - 86px); font-size:14px; } .visit-art { width:125px; height:125px; right:-5px; } .visit-route-steps { width:95%; padding-left:0; } .visit-route-steps>div { gap:10px; } }

/* Keep each arrival section on its own row at every screen size. */
@media(min-width:1101px) { .visit-card--info { min-height:240px; } }
@media(max-width:760px) {
  .visit-card--info { min-height:236px; }
  .visit-route-body { min-height:300px; }
  .visit-route-steps { width:86%; padding:12px 4px; }
  .visit-route-steps p { font-size:12px; }
  .visit-route-steps strong { font-size:14px; }
  .visit-route-art { background-position:center right; }
  .visit-route-art::after { background:linear-gradient(90deg,#f8fbff 0%,#f8fbfff5 40%,#f8fbffb0 70%,#f8fbff20); }
  .visit-map-label { font-size:12px; padding:5px 8px; }
  .visit-map-label small { font-size:10px; }
}

/* Parking route banner with a floating three-step panel. */
.visit-arrival { grid-column:1 / -1; min-height:410px; padding:34px 48px 26px; border:0; border-radius:13px; background:#e8f1ff url('../assets/guide-arrival-banner-v2.png') center / cover no-repeat; }
.arrival-heading { position:relative; z-index:1; color:#fff; padding:3px 0 0 20px; }
.arrival-heading>.arrival-icon { width:30px; height:30px; padding:3px; margin-bottom:4px; border:1px solid #ffffff55; border-radius:50%; color:#fff; background:#6a9eff33; }
.visit-arrival h2 { color:#fff; font-size:32px; font-weight:700; line-height:1.3; margin:0 0 7px; text-shadow:0 2px 10px #143b8740; }
.arrival-heading>p { margin:0; color:#edf5ff; font-size:16px; line-height:1.8; letter-spacing:.03em; }
.arrival-heading-line { display:block; margin-top:10px; width:36px; height:3px; border-radius:4px; background:linear-gradient(90deg,#d8f8ff,#82c7ff00); box-shadow:0 0 10px #9de6ff; }
.arrival-steps { position:relative; z-index:1; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; list-style:none; padding:14px 30px; margin:99px 0 0; border:1px solid #fff; border-radius:17px; background:linear-gradient(110deg,#ffffffed,#eaf1ffe8); box-shadow:0 8px 24px #3663b326,inset 0 1px 0 #ffffff; backdrop-filter:blur(12px); }
.arrival-steps>li { position:relative; display:flex; align-items:center; gap:16px; min-width:0; }
.arrival-steps>li:not(:last-child)::after { content:'→'; position:absolute; right:-24px; top:50%; transform:translateY(-50%); color:#6b9aff; font-size:28px; font-weight:300; }
.arrival-icon { display:block; width:27px; height:27px; flex:none; }
.arrival-step-icon { display:grid; place-items:center; flex:none; width:52px; height:52px; color:#fff; border:1px solid #bad9ff; border-radius:50%; background:linear-gradient(145deg,#84b9ff,#4678ff); box-shadow:0 4px 10px #5b8dfa44,inset 0 1px 3px #ffffff70; }
.arrival-steps h3 { display:flex; align-items:baseline; gap:12px; margin:0 0 5px; color:#152b52; font-size:18px; font-weight:700; line-height:1.4; }
.arrival-steps h3 span { color:#588aff; font-size:23px; font-weight:700; }
.arrival-steps p { margin:0; color:#34445d; font-size:15px; line-height:1.7; }
@media(min-width:1200px) { .visit-arrival { min-height:460px; } .arrival-steps { margin-top:146px; } }
@media(max-width:1000px) and (min-width:761px) { .visit-arrival { padding:28px 26px 24px; } .arrival-heading { padding-left:6px; } .arrival-steps { gap:26px; padding:12px 16px; margin-top:92px; } .arrival-steps>li { gap:10px; } .arrival-step-icon { width:42px; height:42px; } .arrival-steps h3 { font-size:18px; gap:7px; } .arrival-steps h3 span { font-size:20px; } .arrival-steps p { font-size:15px; } }
@media(max-width:760px) { .visit-arrival { min-height:0; padding:28px 20px 20px; border-radius:13px; background-size:auto 300px; background-position:top right; background-color:#e6f0ff; } .arrival-heading { padding:0; } .visit-arrival h2 { font-size:26px; } .arrival-heading>p { max-width:235px; font-size:12px; text-shadow:0 1px 5px #12315a; } .arrival-steps { grid-template-columns:1fr; gap:24px; padding:16px 22px; margin-top:97px; } .arrival-steps>li { gap:16px; } .arrival-steps>li:not(:last-child)::after { content:'↓'; right:10px; top:auto; bottom:-25px; transform:none; font-size:22px; } .arrival-steps h3 { font-size:18px; } .arrival-steps p { font-size:15px; } .arrival-steps p br { display:none; } .arrival-step-icon { width:46px; height:46px; } }
