:root{--paper:#f4efdf;--ink:#30342f;--red:#862e35;--rule:#ccc4ae;--dark:#233a35;--muted:#686a60;--white:#fffdf5}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;line-height:1.55}a{color:var(--red);text-underline-offset:4px}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #b66e22;outline-offset:3px}button{cursor:pointer;border:1px solid var(--red);border-radius:2px;background:var(--red);color:white;padding:13px 19px;font-weight:700;min-height:48px}button:disabled{opacity:.5;cursor:not-allowed}button span{margin-left:20px}button.secondary{color:var(--ink);border-color:var(--rule);background:transparent}.textbutton{color:var(--ink);background:transparent;border:0;padding:8px 0;text-decoration:underline;font-size:14px}.danger{color:var(--red)}[hidden]{display:none!important}.topline{text-align:center;background:var(--dark);color:#f6f0dc;font-size:10px;font-weight:700;letter-spacing:2.5px;padding:10px}header{max-width:1200px;margin:auto;padding:26px 30px;display:flex;align-items:center;gap:32px;border-bottom:1px solid var(--rule)}.brand{display:block;text-decoration:none;color:var(--red)}.brand img{width:150px;max-height:75px;object-fit:contain}.brand-type{font-weight:900;letter-spacing:-3px;font-size:44px;display:flex;align-items:center;gap:15px}.brand-type span{font-size:10px;letter-spacing:1px;line-height:1.5}.head-label{font:700 12px 'Courier New',monospace;border-left:1px solid var(--rule);padding-left:25px;letter-spacing:2px}.head-label span{display:block;font-size:9px;margin-top:5px}nav{margin-left:auto;display:flex;gap:18px;align-items:center;flex-wrap:wrap}nav a{font-size:13px;color:var(--ink)}main{max-width:1140px;margin:36px auto 70px;padding:0 24px}.hero{background:var(--dark);color:var(--paper);padding:48px 48px 0;border:1px solid var(--dark);position:relative;margin-bottom:30px}.hero:after{content:'GDL · KÖLN DEUTZ';position:absolute;right:35px;top:75px;writing-mode:vertical-rl;font:12px 'Courier New',monospace;letter-spacing:4px;opacity:.45}.eyebrow{font:700 11px 'Courier New',monospace;letter-spacing:2px;text-transform:uppercase}h1{font-family:Georgia,'Times New Roman',serif;font-size:42px;line-height:1.13;font-weight:400;margin:15px 0 22px}h2{font-family:Georgia,'Times New Roman',serif;font-size:27px;font-weight:400;line-height:1.2;margin:10px 0 22px}.hero h1{font-size:clamp(42px,6.8vw,78px);margin:25px 0}.hero em{color:#dbc799;font-style:italic}.hero p{color:#d4d9cb;font-size:17px}.route{font:700 15px 'Courier New',monospace;letter-spacing:2px;margin:30px 0}.route span{padding:0 20px}.hero-foot{display:flex;gap:22px;justify-content:space-between;border-top:1px solid #5a6a5b;padding:18px 0;font:10px 'Courier New',monospace;letter-spacing:1px}.grid{display:grid;grid-template-columns:1.15fr 1fr;gap:25px}.panel{border:1px solid var(--rule);background:var(--white);padding:30px;margin-bottom:26px;box-shadow:0 3px 0 #e3dcc9}.panel p{font-size:15px}.panel.narrow{max-width:620px;margin:60px auto}.panel h1{font-size:36px}.panel hr{border:0;border-top:1px solid var(--rule);margin:26px 0}label{display:block;font-size:13px;font-weight:700;margin:15px 0}input,select,textarea{display:block;width:100%;border:1px solid #b8b6a7;background:#fffdf8;color:var(--ink);padding:11px 12px;margin-top:7px;border-radius:2px;min-height:47px}textarea{resize:vertical;font-family:'Courier New',monospace;font-size:14px}form>button{margin-top:8px}dl{margin:22px 0}dt{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-top:15px}dd{margin:3px 0;font-size:16px}.muted{color:var(--muted);font-size:13px!important}.notice{border:1px solid #698473;background:#e7eee4;color:#24432e;padding:17px 20px;margin:20px 0;white-space:pre-line}.notice.error{border-color:#ac6264;background:#f7e5df;color:#7b202a}.pageheading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:30px 0}.pageheading h1{margin-bottom:5px}.capacity{border:2px solid var(--ink);padding:12px 24px;flex-shrink:0;text-align:center}.capacity b{display:block;font:700 29px 'Courier New',monospace}.capacity span{font-size:10px;letter-spacing:1px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:27px}.stats span{border-bottom:2px solid var(--red);padding:12px 5px;font-size:12px}.stats b{font:700 24px 'Courier New',monospace;display:block}.issue-form{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.issue-form button{grid-column:1/-1;justify-self:start}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;font:700 11px 'Courier New',monospace;background:#ede8d9;letter-spacing:.5px}th,td{padding:15px 12px;border-bottom:1px solid var(--rule);vertical-align:top}td small,.user-row small{display:block;font-size:11px;color:var(--muted);margin-top:4px}td form{display:flex;gap:12px;flex-wrap:wrap}.search{max-width:400px;margin-bottom:24px}.logo-preview{display:block;max-width:200px;max-height:140px;object-fit:contain;margin:20px 0}.user-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:18px 0;border-bottom:1px solid var(--rule)}.ticket{border:2px solid #80735b;background:#f1e7ce;margin:24px 0 30px;box-shadow:0 6px 0 #ded4bb}.ticket-band{background:var(--red);color:#fff4dc;padding:14px 25px;display:flex;justify-content:space-between;font:11px 'Courier New',monospace;letter-spacing:1px}.ticket-main{display:grid;grid-template-columns:1fr 250px;gap:30px;padding:35px}.ticket h2{font-size:30px;margin-top:20px}.ticket-route{font:700 20px 'Courier New',monospace;border-top:1px solid #ab9b7c;border-bottom:1px solid #ab9b7c;padding:14px 0}.ticket-route span{padding:0 10px}.passenger{font:700 24px 'Courier New',monospace;margin:25px 0}.ticket dl{display:grid;grid-template-columns:140px 1fr;gap:7px}.ticket dt,.ticket dd{margin:0;font-family:'Courier New',monospace}.qr{align-self:center;text-align:center}.qr img{display:block;width:240px;height:240px;background:white;max-width:100%;object-fit:contain}.qr span{font:10px 'Courier New',monospace;display:block;margin:12px 0;letter-spacing:1px}.punches{display:grid;grid-template-columns:repeat(3,1fr);border-top:2px dashed #a39375}.punch{padding:23px 15px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px;border-right:1px dashed #a39375;font-family:'Courier New',monospace}.punch:last-child{border-right:0}.punch small{font-size:9px;letter-spacing:2px}.punch b{font-size:19px}.punch span{font-size:11px}.punch.punched{color:var(--red);background:repeating-linear-gradient(-45deg,transparent,transparent 9px,#862e3508 9px,#862e3508 11px)}.punch.punched b{border:2px solid var(--red);padding:2px 12px;transform:rotate(-5deg)}.ticket-bottom{border-top:1px solid #ab9b7c;padding:12px 20px;font:10px 'Courier New',monospace;text-align:center}.invalid{color:var(--red);font-size:24px}.scanner{max-width:650px;margin:20px auto}.scanner video{display:block;width:100%;max-height:380px;background:#26342d;border:1px solid #586557;margin:20px 0;aspect-ratio:4/3;object-fit:cover}.buttonrow{display:flex;gap:12px}.scanner #redeem-ticket{width:100%;background:#2d5e41;border-color:#2d5e41;font-size:18px;padding:20px}footer{max-width:1140px;margin:auto;border-top:1px solid var(--rule);padding:24px;display:flex;gap:25px;flex-wrap:wrap;font-size:12px;color:var(--muted)}footer a{color:var(--muted)}footer span{margin-right:auto}.mono{font-family:'Courier New',monospace}@media(max-width:780px){header{padding:20px;flex-wrap:wrap;gap:15px}.head-label{display:none}nav{gap:13px}main{padding:0 15px;margin-top:20px}.grid{grid-template-columns:1fr;gap:0}.hero{padding:28px 25px 0}.hero:after{display:none}.hero-foot{flex-direction:column;gap:10px}.panel{padding:23px}.pageheading{align-items:flex-start;flex-wrap:wrap}h1{font-size:34px}.stats{grid-template-columns:1fr 1fr}.ticket-main{grid-template-columns:1fr;padding:23px;gap:15px}.qr{justify-self:center}.ticket-band{gap:15px;flex-wrap:wrap}.ticket-route{font-size:17px}.ticket dl{grid-template-columns:110px 1fr}.punch{padding:18px 6px}.punch b{font-size:16px}.punch span{font-size:10px}.punch.punched b{padding:2px 5px}.issue-form{grid-template-columns:1fr}footer{gap:15px}.panel.narrow{margin:20px auto}.brand img{width:130px}}@media print{body{background:white;color:black}.topline,nav,footer,.pageheading button,.notice{display:none}header{padding:10px 0;border:0}main{margin:0;padding:0;max-width:none}.ticket{box-shadow:none;break-inside:avoid}.ticket-main{grid-template-columns:1fr 230px}.qr img{width:220px;height:220px}.panel{box-shadow:none;break-inside:avoid}.ticket-band{color:black;background:white;border-bottom:2px solid black}a{color:black}.pageheading h1{font-size:25px}.ticket,.panel{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

.check{display:flex;gap:12px;align-items:flex-start;font-weight:400;font-size:14px}.check input{width:20px;height:20px;min-height:20px;flex-shrink:0;margin:2px 0}.button-link{display:inline-block;background:var(--red);color:white;text-decoration:none;padding:14px 20px;font-weight:bold;border-radius:2px}.booking-banner{display:grid;grid-template-columns:1.4fr 1fr;align-items:center;gap:24px;border-top:5px solid var(--red)}fieldset{border:1px solid var(--rule);padding:20px;margin:25px 0}legend{padding:0 10px;font-weight:bold}@media(max-width:780px){.booking-banner{grid-template-columns:1fr}}

.test-banner{background:#ffd84d;color:#251b00;border-bottom:3px solid #382d13;padding:14px 20px;text-align:center;font-weight:800;letter-spacing:.3px}.mail-preview{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.6 'Courier New',monospace;border:1px solid var(--rule);padding:18px;background:#fffdf8}.test-actions{display:flex;flex-wrap:wrap;gap:14px}@media print{.test-banner{display:block!important;border:3px solid black;background:white;color:black}}
