/* DOMSTADT 110 / LYROX — MOTION & PAGES 13.0. Standalone CSS; no third-party assets. */
:root{--portal-red:#e51e41;--portal-ink:#10131d;--portal-paper:#f5f6f9;--ease-out:cubic-bezier(.16,1,.3,1)}
@view-transition{navigation:auto}
body{min-width:0}
.site-head{position:sticky;top:0;box-shadow:0 18px 45px #00000014;transition:background .3s,box-shadow .3s;backdrop-filter:blur(18px)}
.site-head.scrolled{background:#0d1119f7;box-shadow:0 15px 50px #0006}
.site-nav a[aria-current="page"]{color:#fff}.site-nav a[aria-current="page"]::after{right:0}
.motion-switch{border:1px solid #ffffff44;color:#fff;background:#ffffff0d;border-radius:10px;padding:11px 12px;min-height:43px;font:800 10px Arial,sans-serif;letter-spacing:.06em;white-space:nowrap}
.motion-switch[aria-pressed="true"]{background:#fff;color:#151722}
.menu-toggle{flex-shrink:0}
.site-nav a{font-size:11px}
@media(max-width:1370px){.site-nav{position:absolute;display:none;top:100%;left:0;right:0;height:auto;padding:15px clamp(14px,4vw,70px) 24px;background:#121622;box-shadow:0 24px 50px #0008;flex-direction:column;align-items:stretch;gap:0}.site-nav.open{display:flex}.site-nav a{height:49px;font-size:12px;border-bottom:1px solid #ffffff1b}.site-nav a::after{display:none}.menu-toggle{display:flex}.nav-play{margin-left:auto}.nav-row{min-height:80px}.motion-switch{margin-left:auto}.nav-play+.motion-switch{margin-left:0}}
@media(max-width:600px){.motion-switch{font-size:0;width:40px;padding:0}.motion-switch::after{content:'✦';font-size:18px}.nav-row{gap:7px}}
/* Multi-page editorial shell */
.subpage{background:#f2f3f6;color:#202431}.page-hero{color:#fff;position:relative;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 73% 26%,#f234564f,transparent 45%),linear-gradient(123deg,#0c101b,#151b29 58%,#23121f);padding:clamp(66px,7vw,118px) 0 clamp(74px,8vw,130px)}
.page-hero::before{content:'';position:absolute;z-index:-1;inset:0;background-image:linear-gradient(#ffffff0c 1px,transparent 1px),linear-gradient(90deg,#ffffff0c 1px,transparent 1px);background-size:70px 70px;mask-image:linear-gradient(90deg,transparent,#000)}
.page-hero::after{content:'';position:absolute;z-index:-1;right:3%;bottom:-26%;width:min(670px,55vw);aspect-ratio:1;background:url('/assets/dom-silhouette.svg') bottom/contain no-repeat;opacity:.23;filter:drop-shadow(0 0 50px #ec315b);animation:cathedralFloat 9s ease-in-out infinite}
.page-hero .container{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,.48fr);align-items:center;gap:clamp(15px,4vw,80px)}
.page-hero .page-word{font:900 clamp(66px,9.8vw,175px)/.84 var(--display);letter-spacing:-.045em;text-transform:uppercase;max-width:1280px;margin:26px 0}.page-word span{color:#ff4a67;display:block}
.page-intro{font-size:clamp(17px,1.4vw,23px);color:#c5cada;line-height:1.65;max-width:780px}.page-hero-icon{width:100%;max-width:390px;aspect-ratio:1;justify-self:center;border:1px solid #ffffff25;border-radius:50%;display:grid;place-items:center;position:relative;background:#ffffff08;box-shadow:0 0 0 18px #ffffff05,0 0 110px #ef31502e;animation:cathedralFloat 8s ease-in-out infinite}.page-hero-icon::before{content:'';position:absolute;inset:-19px;border:1px dashed #ffffff45;border-radius:50%;animation:spin 75s linear infinite}.page-hero-icon img{height:84%;width:84%;object-fit:contain;border-radius:50%;background:white}.page-index{font:900 12px Arial,sans-serif;color:#ff8195;letter-spacing:.17em}.page-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.page-main{padding:clamp(50px,5vw,92px) 0 110px}.page-section{margin-bottom:clamp(55px,6vw,105px)}.page-headline{font:900 clamp(40px,4vw,74px)/.98 var(--display);letter-spacing:-.025em;color:#151b27;text-transform:uppercase;margin-bottom:15px}.page-subtitle{font-size:16px;max-width:800px;color:#657080;line-height:1.7;margin-bottom:30px}.page-kicker{color:#d91c3c;font-size:11px;font-weight:900;letter-spacing:.15em;margin-bottom:14px;display:block}.editorial-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.editorial-card{border-radius:17px;background:#fff;border:1px solid #e1e5eb;padding:clamp(22px,2.4vw,37px);color:#1c2330;position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;min-height:280px;box-shadow:0 8px 28px #1b25300b;transition:transform .45s var(--ease-out),box-shadow .45s}
.editorial-card::before{content:'';position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,#db163a,#ff8c9a);transform:scaleX(0);transform-origin:left;transition:transform .55s var(--ease-out)}.editorial-card:hover::before,.editorial-card:focus-within::before{transform:scaleX(1)}.editorial-card:hover{transform:translateY(-7px);box-shadow:0 25px 75px #18212f23}.editorial-card .card-top{font-size:10px;font-weight:900;letter-spacing:.13em;color:#d7193f;display:flex;align-items:center;justify-content:space-between}.editorial-card .card-icon{font-size:46px;margin:25px 0;color:#d91d42;line-height:1}.editorial-card h3{font:900 clamp(27px,2.25vw,42px)/1.03 var(--display);letter-spacing:-.025em;margin:0 0 15px}.editorial-card p{color:#697381;font-size:14px;line-height:1.7;max-width:540px}.editorial-card .card-link{font-size:11px;letter-spacing:.1em;font-weight:900;margin-top:auto;padding-top:27px;color:#bd1230}.editorial-card.dark{background:linear-gradient(135deg,#191f2e,#0d121c);border-color:#303947;color:#fff}.editorial-card.dark p{color:#abb6c8}.editorial-card.dark .card-link{color:#ff788c}.editorial-card.wide{grid-column:span 2}.editorial-card.red{background:linear-gradient(125deg,#c61134,#ef3855);border-color:#f0425e;color:#fff}.editorial-card.red .card-top,.editorial-card.red .card-link,.editorial-card.red p{color:#fff}
.editorial-card:has(.card-image){padding-top:245px}.card-image{position:absolute;inset:0 0 auto 0;height:214px;width:100%;object-fit:cover;transition:transform .8s var(--ease-out)}.editorial-card:hover .card-image{transform:scale(1.055)}
.page-band{background:#0f1420;color:#fff;border-radius:21px;padding:clamp(28px,4vw,60px);display:flex;align-items:center;justify-content:space-between;gap:30px;overflow:hidden;position:relative}.page-band:before{content:'';position:absolute;width:40%;aspect-ratio:1;right:-10%;top:-90%;border:65px solid #ee244730;border-radius:50%;animation:cathedralFloat 11s infinite}.page-band h2{font:900 clamp(35px,4.5vw,70px)/1 var(--display);margin-bottom:12px}.page-band p{color:#b9c2d1;line-height:1.6}.page-band .button{flex-shrink:0}
/* NEW: interactive update timeline */
.filterbar{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:30px}.filterbar button{border-radius:9px;border:1px solid #cbd1db;background:#fff;padding:13px 18px;color:#3b4554;font-weight:850;font-size:12px;min-height:44px;transition:background .2s,color .2s,transform .2s}.filterbar button:hover{transform:translateY(-2px)}.filterbar button[aria-pressed="true"]{background:#cb1738;color:#fff;border-color:#cb1738}.filter-input{border:1px solid #cbd1db;background:#fff;color:#111722;border-radius:9px;padding:12px 15px;min-height:44px;flex:1 1 190px;max-width:450px;font:inherit}.timeline{display:grid;gap:15px}.release{display:grid;grid-template-columns:180px minmax(0,1fr);background:#fff;border:1px solid #e0e4eb;border-radius:16px;overflow:hidden;box-shadow:0 10px 30px #17202e0a;transition:transform .35s var(--ease-out)}.release:hover{transform:translateX(5px)}.release[hidden]{display:none}.release-date{background:#181d29;color:#fff;padding:29px;display:flex;flex-direction:column;gap:8px}.release-date b{font:900 37px var(--display)}.release-date small{font-size:10px;letter-spacing:.1em;color:#f1738b;font-weight:900}.release-body{padding:29px 35px}.release-body h3{font:900 clamp(28px,2.6vw,42px)/1 var(--display);margin-bottom:12px}.release-body p{color:#67717f;line-height:1.7}.release-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:17px}.release-tags span{color:#b71335;background:#fff1f4;padding:7px 10px;border-radius:4px;font-weight:900;font-size:10px;letter-spacing:.06em}.no-results{background:#fff;padding:30px;border-radius:15px}
/* Route-themed schematic map. Clearly labelled as an illustration, not street navigation. */
.koeln-map{min-height:460px;border:1px solid #e1e5ed;border-radius:24px;position:relative;overflow:hidden;background:linear-gradient(100deg,#edf1f6,#fff);box-shadow:0 14px 65px #1b263019}.koeln-map:before{content:'';position:absolute;inset:0;background-image:linear-gradient(#9ea9b91a 1px,transparent 1px),linear-gradient(90deg,#9ea9b91a 1px,transparent 1px);background-size:45px 45px;transform:rotate(-9deg) scale(1.2)}.koeln-map svg{position:absolute;inset:0;width:100%;height:100%}.koeln-map svg path.rhine-draw{stroke-dasharray:8 4;animation:riverFlow 18s linear infinite}.district-point{position:absolute;border:2px solid #fff;border-radius:11px;background:#111827;color:white;min-height:41px;padding:10px 13px;font-weight:850;font-size:11px;box-shadow:0 12px 30px #13233849;transition:transform .2s,background .2s;z-index:2;cursor:pointer}.district-point:hover,.district-point[aria-pressed="true"]{transform:scale(1.08);background:#d72142}.district-point:after{content:'';position:absolute;inset:-7px;border:1px solid #df2d495d;border-radius:15px;animation:ringOut 2.6s infinite;pointer-events:none}.district-detail{position:relative;z-index:2;padding:28px;background:white;border:1px solid #dee4eb;border-radius:16px;box-shadow:0 20px 40px #00000012;margin-top:20px}.district-detail h3{font:900 33px var(--display);margin-bottom:8px}.district-detail p{line-height:1.65;color:#647080}.district-detail strong{display:block;color:#d61c3a;font-size:12px;margin-top:12px}.district-note{position:absolute;bottom:12px;left:18px;color:#526071;font-size:10px;z-index:1;letter-spacing:.04em}
/* gallery is genuine local packaged media */
.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.gallery-tile{border:1px solid #dfe3e9;background:#fff;border-radius:19px;padding:0;overflow:hidden;text-align:left;cursor:pointer;color:#111827;min-width:0;box-shadow:0 12px 45px #0001;transition:transform .35s var(--ease-out),box-shadow .35s}.gallery-tile:hover{transform:translateY(-7px);box-shadow:0 25px 65px #12203330}.gallery-frame{height:clamp(190px,24vw,370px);overflow:hidden;background:linear-gradient(140deg,#121923,#f5f6fa);display:grid;place-items:center}.gallery-frame img{width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .75s var(--ease-out)}.gallery-tile:hover img{transform:scale(1.06)}.gallery-tile.logo .gallery-frame img{object-fit:contain;padding:34px;background:radial-gradient(circle,#fff 20%,#e3e7ef)}.gallery-tile>div:last-child{padding:20px 23px;display:grid;gap:5px}.gallery-tile strong{font:900 25px var(--display)}.gallery-tile small{font-size:12px;color:#6c7684}.gallery-modal[hidden]{display:none}.gallery-modal{position:fixed;inset:0;z-index:1000;background:#07101aef;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:15px;padding:clamp(15px,3vw,35px);color:#fff}.gallery-modal-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}.gallery-modal-bar button{background:#fff;color:#161a24;border:0;border-radius:9px;min-height:44px;padding:10px 20px;font-weight:900}.gallery-modal img{max-height:100%;max-width:100%;height:100%;width:100%;object-fit:contain}.gallery-modal p{text-align:center;font-size:13px;color:#bfc8d6}
/* Developer, help and feature sections */
.step-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.step-card{border:1px solid #dee3eb;background:#fff;border-radius:14px;padding:27px}.step-card b{font:900 45px var(--display);color:#e02648}.step-card h3{font:900 24px var(--display);margin:17px 0 9px}.step-card p{color:#697482;font-size:14px;line-height:1.7}.station-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.station{display:flex;gap:16px;align-items:flex-start;background:#fff;border:1px solid #e0e5ec;padding:23px;border-radius:13px}.station-icon{display:grid;place-items:center;flex-shrink:0;width:46px;height:46px;border-radius:12px;background:#ffe4e9;color:#b91e3b;font-size:25px}.station strong{font:900 22px var(--display)}.station small{display:block;color:#667282;font-size:12px;line-height:1.6;margin-top:5px}.faq{display:grid;gap:12px;max-width:1150px}.faq details{background:#fff;border:1px solid #dfe3e9;border-radius:13px;padding:0 22px;transition:border-color .2s}.faq details[open]{border-color:#e33552}.faq summary{font-weight:900;cursor:pointer;list-style:none;padding:23px 7px;display:flex;align-items:center;justify-content:space-between;gap:20px}.faq summary:after{content:'+';font-size:25px;color:#d81e41}.faq details[open] summary:after{content:'−'}.faq details p{padding:0 8px 22px;max-width:1000px;color:#657080;line-height:1.75}.prose-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px}.prose-card{background:white;border:1px solid #e0e5ec;padding:30px;border-radius:16px}.prose-card h3{font:900 32px var(--display);margin-bottom:12px}.prose-card p{color:#66717f;line-height:1.8}.prose-card a{color:#c31a3b;font-weight:850}.page-footer{background:#0c101a;color:#fff;padding:53px 0}.page-footer .container{display:flex;gap:25px;justify-content:space-between;align-items:start;flex-wrap:wrap}.page-footer b{font:900 30px var(--display)}.page-footer p{color:#a8b4c4;max-width:600px;font-size:12px;line-height:1.7}.page-footer nav{display:flex;gap:17px;flex-wrap:wrap;font-size:11px;font-weight:900;letter-spacing:.05em}.page-footer a:hover{color:#ff667d}
/* new homepage navigation hub */
.portal-hub{padding:90px 0;background:#f2f4f7;color:#1b2230}.portal-hub .section-top h2{color:#141a25}.portal-hub .section-top p{color:#657080}.portal-hub .editorial-card.wide{min-height:320px}.portal-hub .editorial-card.red{background:linear-gradient(120deg,#da153a,#fe435c)}.hub-marquee{background:#e61e40;color:white;overflow:hidden;padding:12px 0;font:900 13px var(--display);letter-spacing:.15em}.hub-marquee>div{display:flex;gap:50px;white-space:nowrap;width:max-content;animation:marqueeLeft 30s linear infinite}.hub-marquee b{white-space:nowrap}.hero-scene{transform-style:preserve-3d}.hero-scene .scene-tile{will-change:transform}.site-page-chip{display:inline-flex;align-items:center;border:1px solid #ffffff44;color:#c9d0de;border-radius:30px;padding:8px 12px;font-size:10px;letter-spacing:.1em;font-weight:900;margin-top:22px}
/* Animation layers: deliberate and light on touch hardware */
.motion-entry{animation:pageEnter .75s var(--ease-out) both}.motion-sweep{position:relative;overflow:hidden}.motion-sweep:after{content:'';position:absolute;inset:-80% auto -80% -45%;width:35%;transform:rotate(19deg);background:linear-gradient(90deg,transparent,#ffffff42,transparent);animation:sweepFlash 8s ease-in-out infinite;pointer-events:none}.motion-stagger>*{animation:cardArrive .75s var(--ease-out) both}.motion-stagger>*:nth-child(2){animation-delay:.08s}.motion-stagger>*:nth-child(3){animation-delay:.16s}.motion-stagger>*:nth-child(4){animation-delay:.24s}.motion-stagger>*:nth-child(5){animation-delay:.32s}.motion-stagger>*:nth-child(6){animation-delay:.4s}.motion-stagger>*:nth-child(7){animation-delay:.48s}.tilt-card{--tiltX:0deg;--tiltY:0deg;transform:perspective(900px) rotateX(var(--tiltX)) rotateY(var(--tiltY));transition:transform .25s var(--ease-out)}.tilt-card:hover{transform:perspective(900px) translateY(-3px) rotateX(var(--tiltX)) rotateY(var(--tiltY))}.pointer-light{--pointer-x:50%;--pointer-y:50%;background-image:radial-gradient(circle at var(--pointer-x) var(--pointer-y),#fff8,transparent 45%)}
@keyframes pageEnter{from{opacity:0;transform:translateY(23px)}to{opacity:1;transform:translateY(0)}}@keyframes cardArrive{from{opacity:0;transform:translateY(27px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes cathedralFloat{50%{transform:translateY(-13px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ringOut{0%{opacity:.7;transform:scale(.97)}80%,100%{opacity:0;transform:scale(1.22)}}@keyframes sweepFlash{0%,54%{left:-65%}82%,100%{left:140%}}@keyframes riverFlow{to{stroke-dashoffset:-290}}@keyframes marqueeLeft{to{transform:translateX(-50%)}}
@media(max-width:1100px){.editorial-grid,.station-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.step-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-hero .container{grid-template-columns:1fr minmax(170px,.33fr)}.page-hero-icon{width:min(100%,275px)}}
@media(max-width:720px){.page-hero .container{grid-template-columns:1fr}.page-hero-icon{display:none}.page-hero{padding:55px 0 65px}.page-hero .page-word{font-size:clamp(58px,13vw,99px)}.page-main{padding:45px 0 75px}.editorial-grid,.gallery-grid,.station-grid,.prose-cards{grid-template-columns:1fr}.editorial-card.wide{grid-column:auto}.page-band{display:block}.page-band .button{margin-top:22px}.release{grid-template-columns:1fr}.release-date{padding:18px 24px;flex-direction:row;align-items:center;justify-content:space-between}.release-body{padding:24px}.step-grid{grid-template-columns:1fr 1fr}.koeln-map{min-height:440px}.district-point{font-size:10px;padding:8px;min-height:39px}.portal-hub{padding:60px 0}}
@media(max-width:430px){.step-grid{grid-template-columns:1fr}.hero-scene .scene-tile{max-width:180px}.page-headline{font-size:clamp(38px,12vw,60px)}}
@media(hover:none){.tilt-card,.tilt-card:hover{transform:none!important}.editorial-card:hover,.gallery-tile:hover{transform:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.motion-entry,.motion-stagger>*{opacity:1!important;transform:none!important}.page-hero-icon:before,.district-point:after{animation:none!important}}
html.motion-off *,html.motion-off *:before,html.motion-off *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}html.motion-off .motion-entry,html.motion-off .motion-stagger>*{opacity:1!important;transform:none!important}
.motion-reveal{opacity:0;transform:translateY(25px);transition:opacity .75s var(--ease-out),transform .75s var(--ease-out)}.motion-reveal.is-visible{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.motion-reveal{opacity:1;transform:none}}html.motion-off .motion-reveal{opacity:1;transform:none}
/* Robust by default: site content is visible when scripts are unavailable or blocked. */
.rv,.motion-reveal{opacity:1;transform:none}
html.js-motion .rv:not(.in),html.js-motion .motion-reveal:not(.is-visible){opacity:0;transform:translateY(25px)}
html.motion-off .rv,html.motion-off .motion-reveal{opacity:1!important;transform:none!important}
