/* Public previews of future sections. All colours inherit the Hub design system. */
.future-page main.fp-wrap { max-width:1320px; margin:0 auto; padding:0 32px 72px; overflow-wrap:anywhere; }
.fp-hero { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,.9fr); align-items:center; gap:64px; padding:64px 0 46px; }
.fp-hero-copy { min-width:0; }
.fp-eyebrow,.fp-kicker { display:block; font:700 11px/1.6 var(--font-sans); letter-spacing:.13em; text-transform:uppercase; color:var(--color-link); margin:0 0 16px; }
.fp-eyebrow::before { content:""; display:inline-block; width:26px; height:2px; margin:0 10px 3px 0; background:var(--color-brand); }
.fp-badge { display:inline-flex; align-items:center; gap:7px; padding:6px 11px; border:1px solid var(--color-accent); border-radius:var(--radius-pill); background:var(--color-warning-bg); color:var(--text-primary); font:650 11px/1.5 var(--font-sans); letter-spacing:.02em; margin-bottom:18px; }
.fp-badge::before { content:""; width:6px; height:6px; flex-shrink:0; border-radius:50%; background:var(--color-accent); }
.fp-title { font:600 clamp(38px,4.5vw,62px)/1.1 var(--font-serif); letter-spacing:-.035em; color:var(--color-heading); margin:0 0 22px; }
.fp-title :is(em,span) { font-style:normal; color:var(--color-brand-text); }
.fp-lead { max-width:590px; font-size:16px; line-height:1.85; color:var(--text-secondary); margin:0 0 25px; }
.fp-actions { display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:22px 0 0; }
.fp-meta { color:var(--text-secondary); font-size:12px; line-height:1.8; margin:14px 0 0; }
.fp-hero-art { position:relative; min-height:350px; display:grid; align-items:center; justify-items:center; overflow:hidden; isolation:isolate; border-radius:26px; color:var(--text-on-navy); background:radial-gradient(ellipse at 85% 12%,rgba(199,91,58,.28),transparent 55%),radial-gradient(ellipse at 10% 95%,rgba(116,167,223,.25),transparent 55%),var(--surface-navy); }
.fp-hero-art::before { content:""; position:absolute; inset:0; z-index:-1; opacity:.15; background-image:linear-gradient(rgba(255,255,255,.25) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.25) 1px,transparent 1px); background-size:30px 30px; mask-image:linear-gradient(transparent,black 20%,black 70%,transparent); }
.fp-hero-art::after { content:""; position:absolute; z-index:-1; width:280px; height:280px; border-radius:50%; border:1px solid rgba(255,255,255,.16); animation:fp-drift 9s ease-in-out infinite; }
.fp-hero-art .icon { width:26px; height:26px; flex-shrink:0; }
.fp-orbit { position:relative; width:100%; min-height:350px; display:grid; place-items:center; }
.fp-orbit::before { content:""; position:absolute; width:240px; height:240px; border-radius:50%; border:1px dashed rgba(255,255,255,.25); transform:rotate(-15deg); }
.fp-orbit-core { position:relative; display:grid; justify-items:center; align-content:center; gap:12px; width:155px; height:155px; border:1px solid rgba(255,255,255,.3); border-radius:50%; background:rgba(255,255,255,.08); backdrop-filter:blur(6px); text-align:center; font:600 23px/1.25 var(--font-serif); padding:18px; box-shadow:0 15px 45px rgba(0,0,0,.18); }
.fp-orbit-core .icon { width:32px; height:32px; }
.fp-orbit-node { position:absolute; display:flex; align-items:center; gap:10px; padding:13px 16px; border:1px solid rgba(255,255,255,.24); border-radius:13px; background:var(--surface-navy); font:550 12px/1.5 var(--font-sans); box-shadow:0 10px 30px rgba(0,0,0,.15); }
.fp-orbit-node:nth-of-type(1) { top:40px; left:22px; transform:rotate(-5deg); }
.fp-orbit-node:nth-of-type(2) { top:142px; right:20px; transform:rotate(5deg); }
.fp-orbit-node:nth-of-type(3) { bottom:38px; left:45px; transform:rotate(-3deg); }
.fp-ticket { width:min(80%,340px); padding:25px; border:1px solid rgba(255,255,255,.3); border-radius:18px; background:rgba(255,255,255,.07); transform:rotate(-4deg); box-shadow:0 22px 45px rgba(0,0,0,.22); }
.fp-ticket-label { font:650 10px/1.6 var(--font-sans); letter-spacing:.14em; text-transform:uppercase; color:var(--text-on-navy); }
.fp-ticket :is(h2,h3,strong) { display:block; font:600 29px/1.25 var(--font-serif); color:var(--text-on-navy); margin:14px 0 22px; }
.fp-ticket-row { display:flex; align-items:center; gap:12px; padding:12px 0; font-size:12px; border-top:1px dashed rgba(255,255,255,.23); }
.fp-ticket-row .icon { width:20px; height:20px; }
.fp-photo-stack { width:100%; min-height:350px; position:relative; }
.fp-photo-frame { position:absolute; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; width:170px; height:190px; border:7px solid var(--surface-card); border-bottom-width:30px; border-radius:7px; background:var(--color-primary-light); color:var(--color-heading); box-shadow:0 18px 45px rgba(0,0,0,.3); font:600 12px/1.4 var(--font-sans); }
.fp-photo-frame .icon { width:46px; height:46px; color:var(--color-link); }
.fp-photo-frame:nth-child(1) { left:11%; top:42px; transform:rotate(-12deg); }
.fp-photo-frame:nth-child(2) { right:9%; top:59px; transform:rotate(13deg); background:var(--color-brand-soft); }
.fp-photo-frame:nth-child(3) { left:30%; bottom:28px; transform:rotate(-3deg); }
.fp-notice { display:flex; align-items:flex-start; gap:15px; padding:19px 23px; border:1px solid var(--color-accent); border-radius:14px; background:var(--color-warning-bg); font-size:13px; line-height:1.8; margin:0 0 30px; color:var(--text-primary); }
.fp-notice .icon { width:21px; height:21px; margin-top:3px; flex-shrink:0; }
.fp-notice p { margin:0; }
.fp-notice strong { font-weight:700; }
.fp-tabs { display:flex; flex-wrap:wrap; gap:5px; padding:7px; border:1px solid var(--border-default); background:var(--surface-card); border-radius:14px; margin:0 0 36px; }
.fp-tabs a { display:flex; align-items:center; justify-content:center; gap:8px; flex:1; min-width:130px; min-height:48px; padding:13px 17px; font:600 12px/1.5 var(--font-sans); color:var(--text-secondary); text-decoration:none; text-align:center; border:1px solid transparent; border-radius:9px; transition:background var(--dur-fast),color var(--dur-fast); }
.fp-tabs a:hover { background:var(--surface-warm); color:var(--color-link); }
.fp-tabs a[aria-selected="true"] { color:var(--color-link); background:var(--color-primary-light); border-color:var(--color-primary-border); }
.fp-tabs .icon { width:18px; height:18px; flex-shrink:0; }
.fp-panel { margin-bottom:38px; scroll-margin-top:100px; }
.fp-panel[hidden] { display:none; }
.fp-panel:focus-visible { outline:3px solid var(--color-focus); outline-offset:7px; border-radius:10px; }
.fp-section-heading { max-width:780px; margin-bottom:26px; }
.fp-section-heading h2 { font:600 clamp(27px,3vw,37px)/1.2 var(--font-serif); letter-spacing:-.02em; margin:0 0 13px; color:var(--color-heading); }
.fp-section-heading p { color:var(--text-secondary); font-size:14px; line-height:1.85; margin:0; }
.fp-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:19px; margin:24px 0; }
.fp-two-column { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; margin:24px 0; }
.fp-card { min-width:0; border:1px solid var(--border-default); border-radius:16px; padding:25px; background:var(--surface-card); }
.fp-card-icon { display:grid; place-items:center; width:43px; height:43px; border-radius:12px; color:var(--color-link); background:var(--color-primary-light); margin-bottom:19px; }
.fp-card-icon .icon { width:23px; height:23px; }
.fp-card h3 { font:650 17px/1.45 var(--font-sans); color:var(--color-heading); margin:0 0 11px; }
.fp-card p,.fp-card li { color:var(--text-secondary); font-size:13px; line-height:1.85; }
.fp-card p:last-child { margin-bottom:0; }
.fp-card ul { padding-left:18px; margin:14px 0 0; }
.fp-card li + li { margin-top:7px; }
.fp-pill { display:inline-flex; align-items:center; gap:6px; padding:5px 9px; border:1px solid var(--border-default); border-radius:var(--radius-pill); font:600 10px/1.5 var(--font-sans); background:var(--surface-warm); color:var(--text-secondary); margin:0 0 13px; }
.fp-empty { border:1px dashed var(--border-input); border-radius:17px; background:var(--surface-warm); padding:30px; text-align:center; margin:25px 0; }
.fp-empty > .icon { width:32px; height:32px; color:var(--color-link); margin:0 auto 15px; }
.fp-empty h3 { font:600 23px/1.3 var(--font-serif); margin:0 0 12px; }
.fp-empty p { color:var(--text-secondary); font-size:13px; line-height:1.85; max-width:680px; margin:0 auto; }
.fp-empty .fp-actions { justify-content:center; }
.fp-callout { border-left:3px solid var(--color-brand); border-radius:0 12px 12px 0; background:var(--surface-warm); padding:22px 25px; margin:25px 0; }
.fp-callout h3 { font:650 16px/1.5 var(--font-sans); margin:0 0 10px; }
.fp-callout p,.fp-callout li { font-size:13px; line-height:1.85; color:var(--text-secondary); }
.fp-callout p:last-child { margin-bottom:0; }
.fp-process { list-style:none; counter-reset:fp-step; padding:0; margin:25px 0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.fp-process > li { counter-increment:fp-step; min-width:0; padding:21px; border:1px solid var(--border-default); background:var(--surface-card); border-radius:14px; }
.fp-process > li::before { content:"0" counter(fp-step); display:block; color:var(--color-brand-text); font:600 26px/1.3 var(--font-serif); margin-bottom:14px; }
.fp-process :is(strong,h3) { display:block; color:var(--color-heading); font:650 13px/1.6 var(--font-sans); margin:0 0 8px; }
.fp-process p,.fp-process > li > span { display:block; font-size:12px; line-height:1.8; color:var(--text-secondary); margin:0; }
.fp-definition { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); margin:20px 0 0; gap:18px; }
.fp-definition > div { min-width:0; padding-top:14px; border-top:1px solid var(--border-default); }
.fp-definition dt { font-size:12px; font-weight:700; color:var(--text-primary); margin-bottom:7px; }
.fp-definition dd { font-size:12px; line-height:1.8; color:var(--text-secondary); margin:0; }
.fp-links { display:flex; gap:13px 23px; flex-wrap:wrap; margin:22px 0 0; }
.fp-links a { display:inline-flex; align-items:center; gap:7px; font-size:12px; font-weight:650; min-height:44px; }
.fp-links .icon { width:17px; height:17px; }
.fp-city-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; margin:25px 0; }
.fp-city-tile { min-width:0; border:1px solid var(--border-default); border-radius:17px; background:var(--surface-card); padding:24px; overflow:hidden; }
.fp-city-tile::before { content:""; display:block; width:34px; height:3px; background:var(--color-brand); margin-bottom:22px; }
.fp-city-tile[data-city="oslo"]::before { background:var(--city-oslo); }
.fp-city-tile[data-city="rotterdam"]::before { background:var(--city-rotterdam); }
.fp-city-tile[data-city="innsbruck"]::before { background:var(--city-innsbruck); }
.fp-city-tile > .icon { width:38px; height:38px; color:var(--color-link); margin-bottom:20px; }
.fp-city-tile h3 { font:600 24px/1.3 var(--font-serif); margin:0 0 12px; color:var(--color-heading); }
.fp-city-tile p { font-size:12px; line-height:1.85; color:var(--text-secondary); }
.fp-city-tile .fp-pill { margin-top:10px; }
.fp-next,.fp-footer { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:20px; padding:27px 30px; margin-top:35px; border:1px solid var(--border-default); border-radius:17px; background:var(--surface-card); }
.fp-next { display:block; }
.fp-next h2,.fp-footer h2 { font:600 25px/1.3 var(--font-serif); margin:0 0 8px; }
.fp-next p,.fp-footer p { font-size:13px; line-height:1.8; color:var(--text-secondary); margin:0; }
.fp-next .fp-eyebrow { margin-bottom:12px; }
.fp-next .fp-links { margin-top:16px; }
.fp-footer .fp-links { margin-top:0; }
@keyframes fp-drift { 0%,100% { transform:translate(35px,-22px); } 50% { transform:translate(-10px,20px); } }
@media(max-width:1050px) { .fp-hero { gap:35px; } .fp-hero-art { min-height:320px; } .fp-orbit,.fp-photo-stack { min-height:320px; } .fp-orbit-node { padding:11px; } .fp-orbit-node:nth-of-type(1) { left:15px; } .fp-orbit-node:nth-of-type(2) { right:12px; } .fp-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .fp-process { grid-template-columns:repeat(2,minmax(0,1fr)); } .fp-city-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:760px) { .future-page main.fp-wrap { padding:0 24px 50px; } .fp-hero { grid-template-columns:1fr; gap:28px; padding:40px 0 30px; } .fp-title { max-width:600px; } .fp-hero-art { min-height:300px; } .fp-orbit,.fp-photo-stack { min-height:300px; } .fp-orbit-node:nth-of-type(1) { left:10%; top:25px; } .fp-orbit-node:nth-of-type(2) { right:8%; top:123px; } .fp-orbit-node:nth-of-type(3) { left:16%; bottom:25px; } .fp-orbit-core { width:140px; height:140px; } .fp-notice { padding:17px 19px; } .fp-tabs { margin-bottom:27px; } .fp-tabs a { min-width:140px; } .fp-two-column { grid-template-columns:1fr; } .fp-photo-frame { width:160px; height:170px; } .fp-photo-frame:nth-child(1) { left:15%; top:22px; } .fp-photo-frame:nth-child(2) { right:15%; top:40px; } .fp-photo-frame:nth-child(3) { left:35%; bottom:22px; } .fp-next,.fp-footer { padding:24px; align-items:flex-start; } }
@media(max-width:540px) { .future-page main.fp-wrap { padding:0 18px 42px; } .fp-title { font-size:39px; } .fp-lead { font-size:14px; } .fp-hero-art { min-height:280px; } .fp-orbit,.fp-photo-stack { min-height:280px; } .fp-hero-art .icon { width:21px; height:21px; } .fp-orbit-node { font-size:10px; padding:10px; gap:7px; } .fp-orbit-node:nth-of-type(1) { left:14px; top:22px; } .fp-orbit-node:nth-of-type(2) { right:12px; top:114px; } .fp-orbit-node:nth-of-type(3) { left:25px; bottom:24px; } .fp-orbit-core { width:120px; height:120px; font-size:20px; } .fp-orbit::before { width:210px; height:210px; } .fp-notice { font-size:12px; gap:10px; padding:15px; } .fp-tabs { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); } .fp-tabs a { min-width:0; padding:11px 10px; font-size:11px; } .fp-grid,.fp-process { grid-template-columns:1fr; } .fp-grid,.fp-two-column { gap:14px; } .fp-card { padding:22px; } .fp-section-heading h2 { font-size:28px; } .fp-section-heading p { font-size:13px; } .fp-city-grid { gap:12px; } .fp-city-tile { padding:18px; } .fp-city-tile h3 { font-size:21px; } .fp-city-tile > .icon { width:30px; height:30px; } .fp-definition { grid-template-columns:1fr; } .fp-empty { padding:24px 19px; } .fp-ticket { padding:22px; } .fp-ticket :is(h2,h3,strong) { font-size:25px; } .fp-photo-frame { width:135px; height:155px; border-width:5px; border-bottom-width:23px; } .fp-photo-frame:nth-child(1) { left:10%; top:25px; } .fp-photo-frame:nth-child(2) { right:9%; top:43px; } .fp-photo-frame:nth-child(3) { left:29%; bottom:25px; } .fp-photo-frame .icon { width:38px; height:38px; } }
@media(prefers-reduced-motion:reduce) { .fp-hero-art::after { animation:none; } .fp-tabs a { transition:none; } }
@media print { .fp-hero-art,.fp-tabs,.fp-actions { display:none!important; } .fp-hero { display:block; padding:20px 0; } .fp-panel[hidden] { display:block!important; } .fp-panel,.fp-card,.fp-city-tile { break-inside:avoid; } .fp-grid,.fp-process { grid-template-columns:repeat(2,minmax(0,1fr)); } }
