:root{--paper:#ECE7DC;--paper2:#E2DCCD;--ink:#1B1D24;--blue:#2633D9;--blue2:#1A24A8;--verm:#FF4D1F;--yel:#F4C21A;--mute:#55586A;
--disp:"Bahnschrift","DIN Condensed","Roboto Condensed","Arial Narrow","Noto Sans",sans-serif;--body:"Segoe UI","Noto Sans","Ubuntu","Cantarell",system-ui,sans-serif;--mono:ui-monospace,"Cascadia Mono","Consolas","DejaVu Sans Mono",monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.6 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:99;opacity:.05;background-image:repeating-linear-gradient(90deg,var(--ink) 0 1px,transparent 1px 4px)}
a{color:var(--blue)}a:hover{color:var(--verm)}:focus-visible{outline:3px solid var(--verm);outline-offset:3px}
img{max-width:100%;display:block}
.mono{font-family:var(--mono)}.small{font-size:.8rem}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.skip{position:absolute;left:-999px;top:0;background:var(--verm);color:var(--paper);padding:.6rem 1rem;z-index:100}.skip:focus{left:1rem}
.wrap{max-width:1240px;margin:0 auto;padding:0 clamp(1rem,4vw,2.5rem)}
h1,h2,h3{font-family:var(--disp);line-height:1.02;letter-spacing:-.01em;margin:0 0 .6em}
h2{font-size:clamp(1.8rem,4vw,3rem);text-transform:uppercase}h3{font-size:1.2rem;text-transform:uppercase;letter-spacing:.04em}
.eyebrow{font-family:var(--mono);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--verm);margin:0 0 1rem}
.btn{display:inline-flex;align-items:center;gap:.5rem;font:600 .95rem var(--body);padding:.75rem 1.2rem;border:2px solid var(--blue);background:var(--blue);color:var(--paper);text-decoration:none;cursor:pointer;border-radius:999px;transition:transform .2s,background .2s}
.btn:hover{color:var(--paper);background:var(--verm);border-color:var(--verm);transform:translateX(4px)}
.btn.ghost{background:transparent;color:var(--blue)}.btn.ghost:hover{color:var(--paper)}.btn.inv{background:var(--paper);color:var(--blue);border-color:var(--paper)}.btn.big{padding:1rem 1.6rem;font-size:1.05rem}
.linkbtn{background:none;border:0;color:inherit;font:inherit;text-decoration:underline;cursor:pointer;padding:0}
/* header */
.top{position:sticky;top:0;z-index:50;background:var(--paper);border-bottom:2px solid var(--ink)}
.bar{display:flex;justify-content:space-between;align-items:center;padding:.6rem clamp(1rem,4vw,2.5rem)}
.wm{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--blue)}.wm-t{font-family:var(--disp);font-size:1.45rem;line-height:.9;display:flex;flex-direction:column;text-transform:uppercase;letter-spacing:.06em}
.wm-t b{color:var(--ink)}.wm-t i{font-style:normal;color:var(--blue);letter-spacing:.32em}
.bar-r{display:flex;align-items:center;gap:1rem}.hours{font-size:.75rem;color:var(--mute)}
.lang{font:700 .8rem var(--mono);border:2px solid var(--ink);padding:.3rem .6rem;text-decoration:none;color:var(--ink);border-radius:4px}
.burger{display:none;background:none;border:0;width:44px;height:44px;cursor:pointer}.burger span{display:block;height:3px;background:var(--ink);margin:6px 8px;transition:transform .2s}
.line ol{list-style:none;margin:0;padding:.2rem clamp(1rem,4vw,2.5rem) .7rem;display:flex;position:relative}
.line ol::before{content:"";position:absolute;left:clamp(1rem,4vw,2.5rem);right:clamp(1rem,4vw,2.5rem);top:1.05rem;height:6px;background:var(--blue);border-radius:3px}
.st{flex:1;position:relative;display:flex;align-items:flex-start}
.st>a{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;text-decoration:none;color:var(--ink);font:600 .82rem var(--body);padding-top:.25rem}
.dot{width:20px;height:20px;border-radius:50%;background:var(--paper);border:4px solid var(--blue);position:relative;z-index:1;transition:transform .2s}
.st>a:hover .dot{transform:scale(1.3)}.st.cur .dot{background:var(--verm);border-color:var(--ink)}.st.cur .lbl{color:var(--verm)}
.dd-btn{background:none;border:0;cursor:pointer;margin-top:1.75rem;padding:.2rem;color:var(--ink)}
.dd{display:none;position:absolute;top:100%;left:0;list-style:none;margin:0;padding:.5rem;background:var(--ink);border-left:6px solid var(--verm);min-width:220px;z-index:60}
.dd a{display:block;color:var(--paper);text-decoration:none;padding:.45rem .6rem;font-size:.9rem}.dd a:hover{background:var(--blue)}
.has-dd.open .dd,.has-dd:focus-within .dd{display:block}
/* hero */
.hero{position:relative;min-height:min(88dvh,780px);display:grid;grid-template-columns:1.1fr 1fr;background:var(--blue);color:var(--paper);clip-path:polygon(0 0,100% 0,100% 88%,0 100%);overflow:hidden}
.hero-in{padding:clamp(2rem,6vw,5rem) clamp(1rem,4vw,2.5rem);position:relative;z-index:2;align-self:center}
.hero .eyebrow{color:var(--yel)}
.hero-h{font-size:clamp(3rem,9vw,7.5rem);text-transform:uppercase;line-height:.88;margin-bottom:1.5rem}
.hl{display:block}.ind{padding-left:1.2em}.ind2{padding-left:2.4em}.hero-h em{font-style:normal;color:var(--verm);background:var(--paper);padding:0 .12em}
.lede{font-size:1.15rem;max-width:44ch}.hero .lede{color:#d6d9ff}
.cta{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:1.8rem}.hero .btn{background:var(--verm);border-color:var(--verm)}.hero .btn.ghost{background:transparent;border-color:var(--paper);color:var(--paper)}
.city{position:relative}.city svg{position:absolute;inset:0;width:100%;height:100%}
.blocks rect{fill:var(--blue2)}.rt{fill:none;stroke-width:12;stroke-linejoin:round;stroke-linecap:round}.rt1{stroke:var(--paper)}.rt2{stroke:var(--yel)}.rt3{stroke:var(--verm)}
.rt{stroke-dasharray:1400;stroke-dashoffset:1400;animation:draw 2.4s .3s cubic-bezier(.6,0,.2,1) forwards}.rt2{animation-delay:.7s}.rt3{animation-delay:1.1s}
@keyframes draw{to{stroke-dashoffset:0}}
.veh{fill:var(--ink);stroke:var(--paper);stroke-width:3}.hubs circle{fill:var(--paper);stroke:var(--ink);stroke-width:5}
.ticker{background:var(--ink);color:var(--yel);overflow:hidden;white-space:nowrap;font:600 .9rem var(--mono);padding:.8rem 0;margin-top:-3rem;position:relative;transform:rotate(-1.5deg)}
.tk{display:inline-block;animation:tick 40s linear infinite}@keyframes tick{to{transform:translateX(-50%)}}
section{margin:5rem auto}.hero,.ticker{margin:0}
.sec-h{max-width:780px}
.linemap{list-style:none;padding:0;margin:0;border-top:2px solid var(--ink)}
.linemap a{display:grid;grid-template-columns:90px 1fr 40px;gap:1.2rem;align-items:center;padding:1.4rem 0;border-bottom:2px solid var(--ink);text-decoration:none;color:var(--ink);transition:padding .25s}
.linemap a:hover{padding-left:1rem;color:var(--ink)}.linemap strong{font:700 1.6rem var(--disp);text-transform:uppercase;display:block}.ln-b span{color:var(--mute)}
.arr{font-size:1.8rem;color:var(--verm);transition:transform .25s}.linemap a:hover .arr{transform:translateX(8px)}
.code{display:inline-grid;place-items:center;width:64px;height:64px;border-radius:50%;font:700 1.1rem var(--mono);color:var(--paper);background:var(--blue)}
.code.c1{background:var(--verm)}.code.c2{background:var(--yel);color:var(--ink)}.code.c3{background:var(--ink)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:start}.more{font-weight:700;text-decoration:none}
.crit{margin:0;display:grid;gap:0}.crit div{display:grid;grid-template-columns:150px 1fr;gap:1rem;padding:1rem 0;border-bottom:1px dashed var(--ink)}
.crit dt{font:700 1.3rem var(--disp);color:var(--blue)}.crit dd{margin:0}
.jr{list-style:none;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:0;position:relative;margin:2rem 0}
.jr::before{content:"";position:absolute;top:22px;left:0;right:0;height:6px;background:repeating-linear-gradient(90deg,var(--ink) 0 18px,transparent 18px 28px)}
.jr li{position:relative;padding:3.5rem 1rem 0 0;display:flex;flex-direction:column;gap:.3rem}
.jr li::before{content:"";position:absolute;top:10px;left:0;width:30px;height:30px;border-radius:50%;background:var(--verm);border:5px solid var(--paper)}
.jn{color:var(--verm);font-weight:700}.jr strong{font:700 1.2rem var(--disp);text-transform:uppercase}.jr span:last-child{color:var(--mute);font-size:.95rem}
.band{background:var(--verm);color:var(--paper);padding:4rem 0;clip-path:polygon(0 8%,100% 0,100% 100%,0 92%);margin:5rem 0}
.band-in{max-width:900px}.band p{font-size:1.1rem}
.fmt{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin:1.5rem 0 2rem}.fmt div{border-top:4px solid var(--paper);padding-top:.8rem}.fmt strong{font:700 1.3rem var(--disp);text-transform:uppercase}
/* photos */
.photo{margin:0}.ph-frame{position:relative;aspect-ratio:16/9;overflow:hidden;border:3px solid var(--ink);background:var(--paper2);min-height:200px}
.ph-frame img{width:100%;height:100%;object-fit:cover;filter:saturate(.8) contrast(1.05);transition:transform 1.2s}
.photo:hover img{transform:scale(1.04)}
.photo.wide .ph-frame{clip-path:polygon(0 0,100% 0,100% 86%,92% 100%,0 100%);box-shadow:14px 14px 0 var(--blue)}
.photo.tilt .ph-frame{box-shadow:-14px 14px 0 var(--verm);clip-path:polygon(8% 0,100% 0,100% 100%,0 100%,0 14%)}
.photo figcaption{font-size:.82rem;color:var(--mute);margin-top:1.2rem;max-width:80ch}.photo figcaption b{color:var(--ink)}
/* page head */
.ph{position:relative;background:var(--ink);color:var(--paper);margin:0;padding:clamp(3rem,7vw,6rem) clamp(1rem,4vw,2.5rem) 5rem;overflow:hidden}
.ph-in{max-width:900px;position:relative;z-index:2}.ph h1{font-size:clamp(2.4rem,7vw,5.5rem);text-transform:uppercase}.ph .lede{color:#cfd0d8}.ph .eyebrow{color:var(--yel)}
.ph-route{position:absolute;right:0;bottom:0;width:60%;height:120px;opacity:.9}.ph-route svg{width:100%;height:100%}
.ph-route path{fill:none;stroke:var(--blue);stroke-width:10;stroke-dasharray:900;stroke-dashoffset:900;animation:draw 1.6s .2s forwards}.ph-route circle{fill:var(--verm)}
.ph-route .code{position:absolute;right:2rem;top:-80px;width:84px;height:84px;background:var(--verm)}
/* route sheet */
.sheet{max-width:1240px;margin:4rem auto;padding:0 clamp(1rem,4vw,2.5rem);display:grid;grid-template-columns:240px 1fr;gap:3rem}
.stops{position:sticky;top:140px;align-self:start}.stops ol{list-style:none;margin:0;padding:0 0 0 1.4rem;border-left:6px solid var(--blue)}
.stops li{position:relative;margin:.2rem 0}.stops li::before{content:"";position:absolute;left:-2.05rem;top:.55rem;width:14px;height:14px;border-radius:50%;background:var(--paper);border:3px solid var(--blue)}
.stops a{text-decoration:none;color:var(--ink);font-weight:600;display:block;padding:.3rem 0}.stops a:hover{color:var(--verm)}
.stop{padding:0 0 2.5rem;margin-bottom:2.5rem;border-bottom:2px solid var(--ink);scroll-margin-top:150px}
.stop h2{display:flex;gap:1rem;align-items:baseline}.stop-n{font-size:1rem;color:var(--paper);background:var(--blue);padding:.2rem .5rem}
.ticks{list-style:none;padding:0}.ticks li{padding:.35rem 0 .35rem 1.8rem;position:relative}
.ticks li::before{content:"";position:absolute;left:0;top:.95rem;width:1.1rem;height:4px;background:var(--verm)}
/* planner */
.planner{display:grid;grid-template-columns:360px 1fr;gap:3rem;align-items:start}
.fld{display:flex;flex-direction:column;gap:.3rem;margin-bottom:1rem}
.fld label,legend{font:700 .78rem var(--mono);text-transform:uppercase;letter-spacing:.08em}
input,select,textarea{font:inherit;padding:.7rem .8rem;border:2px solid var(--ink);background:#F6F2EA;color:var(--ink);border-radius:0;width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--blue);outline:3px solid rgba(38,51,217,.25)}
.pl-form{background:var(--paper2);padding:1.5rem;border-left:8px solid var(--blue)}
.pl-kpi{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}.pl-kpi div{background:var(--ink);color:var(--paper);padding:1rem}
.pl-kpi b{display:block;font:700 2.6rem var(--disp);color:var(--yel)}
.pl-route{list-style:none;padding:0;margin:0 0 2rem;border-left:6px solid var(--verm)}
.pl-route li{padding:.7rem 1rem;position:relative;animation:pop .4s both}.pl-route li::before{content:"";position:absolute;left:-13px;top:1.05rem;width:20px;height:20px;border-radius:50%;background:var(--paper);border:4px solid var(--ink)}
.pl-route b{font-family:var(--disp);text-transform:uppercase}.pl-route .w{font-family:var(--mono);color:var(--blue);margin-left:.4rem}
@keyframes pop{from{opacity:0;transform:translateX(-10px)}}
.pl-act{display:flex;flex-wrap:wrap;gap:.8rem;align-items:center}.fine{font-size:.82rem;color:var(--mute)}
/* about */
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:4rem}.principles{list-style:none;padding:0;margin:0}
.principles li{padding:1.2rem 0;border-top:2px solid var(--ink)}.principles .mono{color:var(--verm);font-weight:700;margin-right:.6rem}.principles strong{font:700 1.3rem var(--disp);text-transform:uppercase}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0;margin:0;border:2px solid var(--ink)}
.kv div{padding:1rem;border:1px solid var(--ink)}.kv dt{font:700 .75rem var(--mono);text-transform:uppercase;color:var(--mute)}.kv dd{margin:.3rem 0 0;font-weight:600;overflow-wrap:anywhere}
/* resources */
.plats{display:grid;gap:2rem}.plat{display:grid;grid-template-columns:140px 1fr;gap:2rem;padding:2rem;background:var(--paper2);border-left:10px solid var(--blue)}
.plat:nth-child(even){border-left-color:var(--verm)}.plat-n{display:flex;flex-direction:column}.plat-n .mono{font-size:.7rem;letter-spacing:.15em}
.plat-n b{font:700 5rem/1 var(--disp);color:var(--blue)}.plat:nth-child(even) .plat-n b{color:var(--verm)}
.gl div{padding:.5rem 0;border-bottom:1px dashed var(--ink)}.gl dt{font-weight:700}.gl dd{margin:0}
/* help */
.dep{width:100%;border-collapse:collapse;background:var(--ink);color:var(--paper);font-size:.95rem}
.dep caption{text-align:left;font:700 .8rem var(--mono);text-transform:uppercase;padding:.6rem 0;color:var(--ink)}
.dep th,.dep td{text-align:left;padding:.9rem 1rem;border-bottom:1px solid #3a3d48}.dep th{color:var(--yel);font:700 .75rem var(--mono);text-transform:uppercase}.dep td.mono{color:var(--yel)}
.faq{margin:3rem 0}details{border-bottom:2px solid var(--ink)}summary{cursor:pointer;padding:1.1rem 0;font:700 1.15rem var(--disp);text-transform:uppercase;list-style:none;display:flex;justify-content:space-between;gap:1rem}
summary::after{content:"+";color:var(--verm);font-size:1.5rem;transition:transform .2s}details[open] summary::after{transform:rotate(45deg)}details p{margin:0 0 1.2rem;max-width:70ch}
/* contact */
.contact{display:grid;grid-template-columns:1.4fr 1fr;gap:3rem;align-items:start}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
.kind{border:2px solid var(--ink);padding:.8rem 1rem;margin:0 0 1.2rem;display:flex;flex-wrap:wrap;gap:1.5rem}.kind label{display:flex;gap:.4rem;align-items:center;font-weight:600}.kind input{width:auto}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.consent{display:flex;gap:.6rem;align-items:flex-start;margin:1rem 0 1.4rem;font-size:.92rem}.consent input{width:22px;height:22px;flex:none;margin-top:.15rem}
.status{margin-top:1.2rem;padding:0}.status:not(:empty){padding:1rem;border-left:8px solid var(--blue);background:var(--paper2)}.status.err{border-color:var(--verm)}.status.ok{border-color:#1f8a4c}
.mapph{margin:1.5rem 0 0;border:3px dashed var(--ink);background:var(--paper2);color:var(--ink)}.mapph svg{width:100%;height:180px;display:block}
.mapph figcaption{padding:1rem;display:flex;flex-direction:column;gap:.6rem;align-items:flex-start}
/* footer */
.term{background:var(--ink);color:var(--paper);margin-top:6rem;position:relative}
.term-in{max-width:1240px;margin:0 auto;padding:4rem clamp(1rem,4vw,2.5rem) 2rem;display:grid;grid-template-columns:1fr 1.3fr;gap:3rem}
.term-big{font:700 clamp(2rem,4vw,3.2rem)/1 var(--disp);text-transform:uppercase;color:var(--yel)}
.board{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:.88rem}.board th{text-align:left;color:var(--verm);padding:.6rem 1rem .6rem 0;text-transform:uppercase;font-size:.72rem;vertical-align:top;white-space:nowrap}
.board td{padding:.6rem 0;border-bottom:1px solid #3a3d48}.term a,.term .linkbtn{color:var(--paper)}.term a:hover{color:var(--yel)}
.term-links{grid-column:1/-1;list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.4rem 1.6rem;border-top:6px solid var(--blue);padding-top:1.2rem}
.fine{grid-column:1/-1}.term .fine{color:#9a9cab}
.endcap{height:16px;background:repeating-linear-gradient(90deg,var(--yel) 0 30px,var(--ink) 30px 60px)}
/* cookie */
.cookie{position:fixed;left:1rem;bottom:1rem;max-width:440px;z-index:90;background:var(--paper);border:3px solid var(--ink);box-shadow:10px 10px 0 var(--blue);padding:1.2rem;font-size:.92rem}
.ck-t{font:700 1.2rem var(--disp);text-transform:uppercase;margin:0}.ck-b{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.ck-b .btn{justify-content:center;font-size:.85rem;padding:.7rem .5rem}
/* reveal */
.js .rv{opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--d,0)*90ms)}
.js .rv.in{opacity:1;transform:none}
@media (max-width:1000px){.line .lbl{font-size:.72rem}.hours{display:none}}
@media (max-width:860px){
 .burger{display:block}.line{display:none;max-height:calc(100dvh - 70px);overflow:auto}.line.open{display:block}
 .line ol{flex-direction:column;padding:1rem 1.5rem 1.5rem 2.2rem}.line ol::before{left:2.55rem;right:auto;top:1rem;bottom:1.5rem;width:6px;height:auto}
 .st>a{flex-direction:row;align-items:center;gap:1rem;padding:.55rem 0;font-size:1rem}.dd-btn{margin:0 0 0 auto;padding:.7rem}
 .dd{position:static;min-width:0;margin:.2rem 0 .4rem 2.4rem}.st.has-dd{flex-wrap:wrap}
 .hero{grid-template-columns:1fr;clip-path:polygon(0 0,100% 0,100% 95%,0 100%)}.city{height:260px}
 .split,.about-grid,.planner,.contact,.sheet,.term-in{grid-template-columns:1fr;gap:2rem}.stops{position:static}
 .jr{grid-template-columns:1fr}.jr::before{left:12px;right:auto;top:0;bottom:0;width:6px;height:auto;background:var(--ink)}.jr li{padding:0 0 1.5rem 3rem}.jr li::before{top:0}
 .plat{grid-template-columns:1fr;gap:.5rem}.plat-n{flex-direction:row;gap:1rem;align-items:baseline}.plat-n b{font-size:3rem}
 .ph-route{width:100%;opacity:.5}.dep{font-size:.85rem}
}
@media (max-width:520px){.grid2,.pl-kpi{grid-template-columns:1fr}.linemap a{grid-template-columns:56px 1fr 24px}.code{width:48px;height:48px;font-size:.9rem}.crit div{grid-template-columns:1fr}
 .ind,.ind2{padding-left:.4em}.ck-b{grid-template-columns:1fr}.cookie{left:.5rem;right:.5rem}.dep th,.dep td{padding:.6rem .5rem}.photo.wide .ph-frame,.photo.tilt .ph-frame{box-shadow:6px 6px 0 var(--blue)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.rt,.ph-route path{stroke-dashoffset:0}.js .rv{opacity:1;transform:none}.veh{display:none}}
