:root{--message-warning-background:#fff6e0;--message-warning-content-default:#584311;--message-error-background:#fae2e8;--message-error-content-default:#8d0e33;--message-info-background:#e7e9eb;--message-info-content-default:#2b2e38;--border-radius:4px;--space:4px;--brand:#1a56db;--brand-light:#ebf1fd;--surface:#fff;--bg:#f0f2f5;--text-primary:#1a1d23;--text-secondary:#6b7280;--border:#e5e7eb;--shadow:0 1px 3px #00000014, 0 4px 16px #0000000f}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background-color:var(--bg);color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#app{flex-direction:column;min-height:100dvh;display:flex}.container{max-width:800px;padding:calc(var(--space) * 5);margin:0 auto}.loading{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;display:flex}.loading p{color:var(--text-secondary);letter-spacing:.01em;font-size:14px}.spinner{border:3px solid var(--border);border-top-color:var(--brand);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--message-error-content-default);box-shadow:var(--shadow);text-align:center;border-radius:8px;max-width:480px;margin:32px auto;padding:28px 24px}.error .error-icon{margin-bottom:10px;font-size:28px;line-height:1}.error h3{color:var(--message-error-content-default);margin-bottom:8px;font-size:16px;font-weight:600}.error p{color:var(--text-secondary);margin-bottom:16px;font-size:13px;line-height:1.6}.error button{background:var(--brand);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:8px 20px;font-size:13px;font-weight:500;transition:opacity .15s;display:inline-block}.error button:hover{opacity:.88}.welcome-container{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.welcome-content{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);text-align:center;border-radius:12px;width:100%;max-width:440px;padding:40px 36px}.welcome-icon{margin-bottom:16px;font-size:40px;line-height:1}.welcome-content h1{color:var(--text-primary);margin-bottom:8px;font-size:22px;font-weight:600}.welcome-message{color:var(--text-secondary);margin-bottom:28px;font-size:14px}.welcome-info{background:var(--brand-light);text-align:left;border-radius:8px;margin-bottom:20px;padding:16px 20px}.welcome-info h3{text-transform:uppercase;letter-spacing:.06em;color:var(--brand);margin-bottom:10px;font-size:12px;font-weight:600}.welcome-info ul{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.welcome-info li{color:var(--text-primary);padding-left:16px;font-size:13px;position:relative}.welcome-info li:before{content:"→";color:var(--brand);font-size:12px;position:absolute;left:0}.debug-info{background:var(--bg)!important;border:1px solid var(--border)!important;color:var(--text-secondary)!important;text-align:left!important;border-radius:8px!important;margin-top:20px!important;padding:12px 16px!important;font-size:11px!important;line-height:1.7!important}.debug-info strong{color:var(--text-primary);margin-bottom:4px;display:block}.offline-banner{background-color:var(--message-warning-background);color:var(--message-warning-content-default);text-align:center;padding:10px calc(var(--space) * 2.5);font-size:13px;display:none}.offline-banner.show{display:block}.ticket-content{padding:20px}@media (width<=440px){.container{padding:0}}.alert{width:100%;padding:calc(var(--space) * 1.5);margin:calc(var(--space) * 4);border-radius:var(--border-radius);text-align:center;font-size:13px;line-height:1.5em}.alert-warning{color:var(--message-warning-content-default);background-color:var(--message-warning-background)}.alert-error{color:var(--message-error-content-default);background-color:var(--message-error-background)}.alert-info{color:var(--message-info-content-default);background-color:var(--message-info-background)}:root{--surface-border:#edeef0;--surface-background:#fff;--surface-shadow:#66738333;--canvas-background:#f8f9ff;--text-primary:#000;--text-highlight:#d30d42;--font-family-base:Arial;--font-weight-normal:400;--font-weight-bold:700;--font-size-xs:13px;--font-size-sm:14px;--font-size-base:15px;--font-size-lg:20px;--spacing-xs:2px;--spacing-sm:4px;--spacing-md:8px;--spacing-lg:10px;--spacing-xl:12px;--spacing-2xl:16px;--spacing-3xl:20px;--radius-sm:5px;--radius-md:12px;--shadow-sm:0 2px 4px 0 var(--surface-shadow);--shadow-md:0 2px 10px #0000001a;--barcode-size:118px;--barcode-section-width:150px;--barcode-section-height:176px;--ticket-width:400px;--ticket-id-max-width:250px}.ticket-container{background:var(--canvas-background);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-top:var(--spacing-3xl);padding:var(--spacing-md);width:var(--ticket-width);padding-top:var(--spacing-3xl);padding-bottom:var(--spacing-3xl);max-width:100%;margin:0 auto;overflow:hidden}.ticket-container h1{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.detail-section{margin-top:var(--spacing-2xl);padding:var(--spacing-sm) var(--spacing-md);width:100%}.detail-section p,.validity-section p{color:var(--text-primary);font-family:var(--font-family-base);font-size:var(--font-size-base);font-style:normal;font-weight:var(--font-weight-normal);line-height:normal}.validity-section p{font-weight:var(--font-weight-bold)}.barcode-section{z-index:10;width:var(--barcode-section-width);height:var(--barcode-section-height);padding:var(--spacing-2xl) var(--spacing-2xl) var(--spacing-xl) var(--spacing-2xl);border-radius:var(--radius-sm);border:1px solid var(--surface-border);background-color:var(--surface-background);box-shadow:var(--shadow-sm);margin:0 auto;position:relative}.barcode-area{flex-direction:column;align-items:center;display:flex}.barcode-section img{width:var(--barcode-size);height:var(--barcode-size)}.barcode-section p{text-align:center;margin-top:var(--spacing-md);text-align:center;font-size:var(--font-size-sm)}.id-hint p{color:var(--text-highlight);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal)}.ticket-id-image-section img{width:100%;max-width:var(--ticket-id-max-width);margin:0 auto;display:block}.icon-section{justify-content:center;align-items:flex-start;gap:var(--spacing-lg);margin:0 auto;display:flex}.icon-section .captcha-image{flex-shrink:0}.icon-section .icon-content{gap:var(--spacing-xs);flex-direction:column;display:flex}.icon-section .icons{gap:var(--spacing-md);flex-wrap:wrap;align-items:center;display:flex}.icon-section .icon-content p{color:var(--text-primary);font-family:var(--font-family-base);font-size:var(--font-size-base);font-style:normal;font-weight:var(--font-weight-bold);line-height:normal}.ticket-header{max-width:var(--ticket-width);border-radius:var(--radius-md) var(--radius-md) 0 0;align-items:center;margin:20px auto 0;padding:10px 16px;display:flex}.ticket-header-name{font-family:var(--font-family-base);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);letter-spacing:.04em;text-transform:uppercase}.ticket-header+.ticket-container{border-radius:0 0 var(--radius-md) var(--radius-md);margin-top:0}.ticket-tenant-bvg-header{color:#fff;background-color:#d30d42}.ticket-tenant-bvg .id-hint p{color:#d30d42}.ticket-tenant-nahsh-header{color:#fff;background-color:#007a3d}.ticket-tenant-nahsh{--canvas-background:#f6fbf8}.ticket-tenant-nahsh .id-hint p{color:#007a3d}.ticket-tenant-default-header{color:#fff;background-color:#1a56db}.ticket-tenant-default .id-hint p{color:#1a56db}.ticket-tenant-eos_ets4demo-header{color:#fff;background-color:#e87722}.ticket-tenant-eos_ets4demo .id-hint p{color:#e87722}.ets4-ticket{--bodyLvl1-gap:24px;--bodyLvl1-marginTop:16px;--bodyLvl1-marginBottom:16px;--navigationBar-backgroundColor:#f8f9ff;--groupLvl2-gap:12px;--canvasLvl2-backgroundColor:#f8f9ff;--canvasLvl2-marginLeftRight:8px;--canvasLvl2-gap:12px;--canvasLvl2-sectionLvl3-paddingLeftRight:0px;--canvasLvl2-sectionLvl3-gap:4px;--surfaceLvl2-backgroundColor:#fff;--surfaceLvl2-marginLeftRight:16px;--surfaceLvl2-gap:12px;--surfaceLvl2-sectionLvl3-paddingLeftRight:8px;--surfaceLvl2-sectionLvl3-paddingTopBottom:12px;--surfaceLvl2-sectionLvl3-gap:4px;--surfaceLvl2-sectionLvl3-borderColor:#edeef0;--surfaceLvl2-sectionLvl3-borderRadius:8px;--wrapperLvl4-paddingLeftRight:8px;--wrapperLvl4-paddingTopBottom:4px;--wrapperLvl4-borderRadius:4px;--colorsContent-neutral-contentDefault:#2b2e38;--colorsContent-neutral-contentMuted:#5c6776;background-color:var(--canvasLvl2-backgroundColor);max-width:720px;padding-bottom:var(--bodyLvl1-marginBottom);margin:0 auto;font-family:Arial,Helvetica,sans-serif}.ets4-ticket .fontBig{font-size:21px;line-height:32px}.ets4-ticket .fontNormal{font-size:15px;line-height:23px}.ets4-ticket .fontSmall{font-size:13px;line-height:20px}.ets4-ticket .contentDefault{color:var(--colorsContent-neutral-contentDefault)}.ets4-ticket .contentMuted{color:var(--colorsContent-neutral-contentMuted)}.ets4-ticket .center{text-align:center}.ets4-ticket .right{text-align:right}.ets4-ticket .bodyLvl1{gap:var(--bodyLvl1-gap);padding-top:var(--bodyLvl1-marginTop);padding-bottom:var(--bodyLvl1-marginBottom);flex-wrap:wrap;display:flex}.ets4-ticket .groupLvl2{gap:var(--groupLvl2-gap);flex-wrap:wrap;flex-basis:100%;display:flex}.ets4-ticket .canvasLvl2{margin:0 var(--canvasLvl2-marginLeftRight);gap:var(--canvasLvl2-gap);flex-wrap:wrap;flex-basis:100%;display:flex}.ets4-ticket .canvasLvl2 .sectionLvl3{gap:var(--canvasLvl2-sectionLvl3-gap);padding:0 var(--canvasLvl2-sectionLvl3-paddingLeftRight);flex-wrap:wrap;flex-basis:100%;display:flex}.ets4-ticket .surfaceLvl2{margin:0 var(--surfaceLvl2-marginLeftRight);gap:var(--surfaceLvl2-gap);flex-wrap:wrap;flex-basis:100%;display:flex}.ets4-ticket .surfaceLvl2 .sectionLvl3{gap:var(--surfaceLvl2-sectionLvl3-gap);padding:var(--surfaceLvl2-sectionLvl3-paddingTopBottom) var(--surfaceLvl2-sectionLvl3-paddingLeftRight);background-color:var(--surfaceLvl2-backgroundColor);border:1px solid var(--surfaceLvl2-sectionLvl3-borderColor);border-radius:var(--surfaceLvl2-sectionLvl3-borderRadius);flex-wrap:wrap;flex-basis:100%;display:flex}.ets4-ticket .groupRowLvl4{justify-content:space-between;gap:var(--groupLvl2-gap);flex-basis:100%;display:flex}.ets4-ticket .wrapperLvl4{padding:var(--wrapperLvl4-paddingTopBottom) var(--wrapperLvl4-paddingLeftRight);border-radius:var(--wrapperLvl4-borderRadius);flex-basis:100%}.ets4-ticket .logos{justify-content:space-between;align-items:center;display:flex}.ets4-ticket .logos img{height:30px}.ets4-ticket .ets4-header{background-color:var(--navigationBar-backgroundColor);text-align:center;margin-bottom:8px;padding:12px 16px;box-shadow:0 8px 8px #66738314}.ets4-ticket .progress-indicator{justify-content:center;align-items:center;gap:8px;height:16px;display:flex}.ets4-ticket .dot{background-color:#5c6776;border-radius:50%;flex-shrink:0;width:10px;height:10px;transition:width .3s ease-in-out,background-color .3s ease-in-out,border-radius .3s ease-in-out}.ets4-ticket .dot.active{background-color:#0d998f;border-radius:5px;width:28px}.ets4-ticket .countup{margin-top:4px}.ets4-ticket .timeel{font-size:15px;line-height:23px}.ets4-ticket #ets4-train-container{justify-content:center;align-items:center;width:100%;height:50px;display:flex;position:relative}.ets4-ticket #ets4-train{width:200px;height:auto;transition:transform .2s linear;position:absolute;left:50%;transform:translate(-50%)}.ets4-ticket .ets4-watermark{object-fit:cover;pointer-events:none;opacity:.08;z-index:0;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.ets4-ticket .bodyLvl1>.groupLvl2,.ets4-ticket .bodyLvl1>.canvasLvl2{z-index:1;position:relative}.ets4-ticket .ets4-footer{background-color:var(--navigationBar-backgroundColor);text-align:center;margin-top:8px;padding:12px 16px;box-shadow:0 -8px 8px #66738314}.ets4-ticket .ets4-footer img{max-height:48px}.ets4-ticket.ets4-tenant-nahsh{--navigationBar-backgroundColor:#f5f6f8;--canvasLvl2-backgroundColor:#f5f6f8;font-family:Nunito Sans,ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji}.ets4-ticket.ets4-tenant-nahsh .dot.active{background-color:#02747b}
