.table-container{overflow-x:auto;border-radius:8px;border:1px solid #E0E0E0;background-color:var(--color-background, #FFFFFF);contain:layout style paint}.table{width:100%;border-collapse:collapse;font-size:var(--font-size-base, 16px);font-family:var(--font-family, "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif)}.table__header{background-color:var(--color-primary, #6B1F1F);color:#fff;position:sticky;top:0;z-index:10}.table__header-cell{padding:var(--space-2, 16px) var(--space-3, 24px);text-align:left;font-weight:600;-webkit-user-select:none;user-select:none;white-space:nowrap}.table__header-cell--sortable{cursor:pointer;transition:background-color .15s ease-in-out}.table__header-cell--sortable:hover{background-color:#0000001a}.table__header-cell--sortable:focus{outline:2px solid var(--color-accent, #E85D2A);outline-offset:-2px}.table__header-cell--right{text-align:right}.table__header-cell--center{text-align:center}.table__sort-icon{display:inline-block;margin-left:var(--space-1, 8px);font-size:14px;opacity:.8}.table__body{background-color:var(--color-background, #FFFFFF)}.table__row{border-bottom:1px solid #E0E0E0;transition:background-color .15s ease-in-out}.table__row:nth-child(2n){background-color:#f9f9f9}.table__row:hover{background-color:#e85d2a0d}.table__cell{padding:var(--space-2, 16px) var(--space-3, 24px);vertical-align:middle}.table__cell--left{text-align:left}.table__cell--right{text-align:right}.table__cell--center{text-align:center}.table__loading{text-align:center;padding:var(--space-5, 40px);color:#666}.table__empty{text-align:center;padding:var(--space-5, 40px);color:#666;font-style:italic}@media (max-width: 768px){.table__header-cell,.table__cell{padding:var(--space-2, 16px)}.table{font-size:var(--font-size-sm, 14px)}}.table-container:focus-within{outline:2px solid var(--color-accent, #E85D2A);outline-offset:2px}@media (prefers-reduced-motion: reduce){.table__header-cell--sortable,.table__row{transition:none}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-3, 24px);overflow-y:auto;animation:modal-fade-in .2s ease-in-out}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.modal-content{background:#fff;border-radius:8px;box-shadow:var(--shadow-modal, 0 10px 24px rgba(0, 0, 0, .2));max-width:600px;width:100%;max-height:90vh;display:flex;flex-direction:column;position:relative;animation:modal-scale-in .25s ease-in-out;contain:layout style}@keyframes modal-scale-in{0%{opacity:0;transform:scale(.95) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content--small{max-width:400px}.modal-content--medium{max-width:600px}.modal-content--large{max-width:800px}.modal-content--full{max-width:95vw;max-height:95vh}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3, 24px);border-bottom:1px solid #E0E0E0;flex-shrink:0}.modal-header h2,.modal-header h3{margin:0;font-size:var(--font-size-xl, 24px);font-weight:600;color:var(--color-text, #000000)}.modal-close{background:none;border:none;font-size:24px;cursor:pointer;padding:var(--space-1, 8px);color:#666;line-height:1;border-radius:4px;transition:color .2s ease-in-out,background-color .2s ease-in-out;display:flex;align-items:center;justify-content:center;width:32px;height:32px}.modal-close:hover{color:#333;background-color:#0000000d}.modal-close:focus-visible{outline:2px solid var(--color-accent, #E85D2A);outline-offset:2px}.modal-body{padding:var(--space-4, 32px) var(--space-3, 24px);overflow-y:auto;flex:1}.modal-body p{margin:0 0 var(--space-2, 16px) 0;line-height:1.5}.modal-body p:last-child{margin-bottom:0}.modal-footer{display:flex;justify-content:flex-end;gap:var(--space-2, 16px);padding:var(--space-3, 24px);border-top:1px solid #E0E0E0;flex-shrink:0}.modal-footer button{min-width:100px}.modal-overlay--closing{animation:modal-fade-out .2s ease-in-out forwards}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.modal-content--closing{animation:modal-scale-out .25s ease-in-out forwards}@keyframes modal-scale-out{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(-20px)}}@media (max-width: 768px){.modal-overlay{padding:var(--space-2, 16px)}.modal-content{max-width:100%;max-height:95vh}.modal-content--small,.modal-content--medium,.modal-content--large{max-width:100%}.modal-header{padding:var(--space-2, 16px)}.modal-header h2,.modal-header h3{font-size:var(--font-size-lg, 20px)}.modal-body{padding:var(--space-3, 24px) var(--space-2, 16px)}.modal-footer{padding:var(--space-2, 16px);flex-direction:column}.modal-footer button{width:100%}}body.modal-open{overflow:hidden}@media (prefers-reduced-motion: reduce){.modal-overlay,.modal-content,.modal-overlay--closing,.modal-content--closing{animation:none}.modal-close{transition:none}}.bilingual-text{display:inline-flex;gap:var(--spacing-xs, 4px)}.bilingual-text--stacked{flex-direction:column;gap:var(--spacing-2xs, 2px)}.bilingual-text--inline{flex-direction:row;align-items:baseline;gap:var(--spacing-xs, 4px)}.bilingual-text--align-left{text-align:left;align-items:flex-start}.bilingual-text--align-center{text-align:center;align-items:center}.bilingual-text--align-right{text-align:right;align-items:flex-end}.bilingual-text__en,.bilingual-text__sw{font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit}.bilingual-text__separator{opacity:.6;font-weight:400}.bilingual-text--display{font-size:var(--passenger-font-size-display, var(--font-size-display, 72px));font-weight:var(--passenger-font-weight-display, var(--font-weight-display, 700));line-height:var(--passenger-line-height-display, var(--line-height-display, 1.2))}.bilingual-text--heading{font-size:var(--passenger-font-size-heading, var(--font-size-heading, 48px));font-weight:var(--passenger-font-weight-heading, var(--font-weight-heading, 600));line-height:var(--passenger-line-height-heading, var(--line-height-heading, 1.3))}.bilingual-text--body{font-size:var(--passenger-font-size-body, var(--font-size-body, 36px));font-weight:var(--passenger-font-weight-body, var(--font-weight-body, 400));line-height:var(--passenger-line-height-body, var(--line-height-body, 1.5))}.bilingual-text--caption{font-size:var(--passenger-font-size-caption, var(--font-size-caption, 24px));font-weight:var(--passenger-font-weight-caption, var(--font-weight-caption, 400));line-height:var(--passenger-line-height-caption, var(--line-height-caption, 1.4))}.bilingual-text--label{font-size:var(--passenger-font-size-small, 18px);font-weight:400;line-height:1.4;opacity:.8}@media (max-width: 768px){.bilingual-text--display{font-size:48px}.bilingual-text--heading{font-size:32px}.bilingual-text--body{font-size:24px}.bilingual-text--caption{font-size:18px}.bilingual-text--label{font-size:14px}}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-height:var(--passenger-badge-height);padding:var(--passenger-badge-padding-y) var(--passenger-badge-padding-x);border-radius:var(--passenger-badge-border-radius);font-family:var(--passenger-font-family);font-weight:600;text-align:center;box-shadow:var(--passenger-shadow-sm);transition:all var(--passenger-transition-fast)}.status-badge__content{display:flex;align-items:center;gap:var(--passenger-spacing-sm)}.status-badge__icon{font-size:var(--passenger-font-size-body);line-height:1}.status-badge__text{display:flex;flex-direction:column;gap:var(--passenger-spacing-xs)}.status-badge__text-en{font-size:var(--passenger-font-size-body);line-height:1.2}.status-badge__text-sw{font-size:var(--passenger-font-size-caption);line-height:1.2;opacity:.95}.status-badge--scheduled{background-color:var(--passenger-color-status-scheduled-bg);color:var(--passenger-color-status-scheduled);border:var(--passenger-border-width-medium) solid var(--passenger-color-status-scheduled)}.status-badge--boarding{background-color:var(--passenger-color-status-boarding-bg);color:var(--passenger-color-status-boarding);border:var(--passenger-border-width-medium) solid var(--passenger-color-status-boarding)}.status-badge--final_call{background-color:var(--passenger-color-status-final-call-bg);color:#92400e;border:var(--passenger-border-width-medium) solid var(--passenger-color-status-final-call);animation:pulse-subtle 2s ease-in-out infinite}.status-badge--delayed{background-color:var(--passenger-color-status-delayed-bg);color:#991b1b;border:var(--passenger-border-width-medium) solid var(--passenger-color-status-delayed)}.status-badge--cancelled{background-color:var(--passenger-color-status-cancelled-bg);color:var(--passenger-color-status-cancelled);border:var(--passenger-border-width-medium) solid var(--passenger-color-status-cancelled)}.status-badge--arrived{background-color:var(--passenger-color-status-boarding-bg);color:var(--passenger-color-status-boarding);border:var(--passenger-border-width-medium) solid var(--passenger-color-status-boarding)}.status-badge--expected{background-color:var(--passenger-color-status-scheduled-bg);color:var(--passenger-color-status-scheduled);border:var(--passenger-border-width-medium) solid var(--passenger-color-status-scheduled)}@keyframes pulse-subtle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.95;transform:scale(1.02)}}@media (prefers-contrast: high){.status-badge{border-width:var(--passenger-border-width-thick)}}@media (prefers-reduced-motion: reduce){.status-badge{transition:none}.status-badge--final_call{animation:none}}@media (max-width: 1365px){.status-badge{min-height:50px;padding:10px 24px}.status-badge__text-en{font-size:30px}.status-badge__text-sw{font-size:20px}}@media (max-width: 768px){.status-badge{min-height:40px;padding:8px 16px}.status-badge__text-en{font-size:20px}.status-badge__text-sw{font-size:16px}}.status-badge--large{min-height:80px;padding:16px 48px}.status-badge--large .status-badge__text-en{font-size:48px}.status-badge--large .status-badge__text-sw{font-size:32px}.status-badge--small{min-height:40px;padding:8px 16px}.status-badge--small .status-badge__text-en{font-size:24px}.status-badge--small .status-badge__text-sw{font-size:18px}.passenger-train-row{display:flex;align-items:center;justify-content:space-between;min-height:var(--passenger-row-height);padding:var(--passenger-spacing-lg) var(--passenger-spacing-xl);background-color:var(--passenger-color-bg-card);border-radius:var(--passenger-border-radius-lg);border:var(--passenger-border-width-thin) solid var(--passenger-color-border-light);box-shadow:var(--passenger-shadow-sm);font-family:var(--passenger-font-family);transition:all var(--passenger-transition-fast)}.passenger-train-row:hover{box-shadow:var(--passenger-shadow-md);border-color:var(--passenger-color-border-medium)}.passenger-train-row__main{display:flex;align-items:center;gap:var(--passenger-spacing-column-gap);flex:1}.passenger-train-row__details{display:flex;align-items:center;gap:var(--passenger-spacing-column-gap);flex-shrink:0}.passenger-train-row__train-number{display:flex;flex-direction:column;min-width:200px}.passenger-train-row__train-number .passenger-train-row__value{font-size:var(--passenger-font-size-display);font-weight:var(--passenger-font-weight-display);line-height:var(--passenger-line-height-display);letter-spacing:var(--passenger-letter-spacing-display);color:var(--passenger-color-text-primary)}.passenger-train-row__destination,.passenger-train-row__origin{display:flex;flex-direction:column;gap:var(--passenger-spacing-xs);flex:1}.passenger-train-row__destination .passenger-train-row__value,.passenger-train-row__origin .passenger-train-row__value{font-size:var(--passenger-font-size-heading);font-weight:var(--passenger-font-weight-heading);line-height:var(--passenger-line-height-heading);letter-spacing:var(--passenger-letter-spacing-heading);color:var(--passenger-color-text-primary)}.passenger-train-row__time{display:flex;flex-direction:column;gap:var(--passenger-spacing-xs);min-width:150px;text-align:right}.passenger-train-row__time .passenger-train-row__value{font-size:var(--passenger-font-size-body);font-weight:var(--passenger-font-weight-body);line-height:var(--passenger-line-height-body);color:var(--passenger-color-text-primary);font-variant-numeric:tabular-nums}.passenger-train-row__label{font-size:var(--passenger-font-size-caption);font-weight:var(--passenger-font-weight-caption);line-height:var(--passenger-line-height-caption);color:var(--passenger-color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.passenger-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.passenger-train-row__delay{display:inline-block;margin-top:var(--passenger-spacing-xs);padding:var(--passenger-spacing-xs) var(--passenger-spacing-sm);font-size:var(--passenger-font-size-caption);font-weight:600;color:var(--passenger-color-status-delayed);background-color:var(--passenger-color-status-delayed-bg);border-radius:var(--passenger-border-radius-sm)}.passenger-train-row__delay-info{display:flex;align-items:center}.passenger-train-row__status{display:flex;align-items:center;margin-left:var(--passenger-spacing-lg)}.passenger-train-row--intermediate .passenger-train-row__details{gap:var(--passenger-spacing-column-gap-small)}.passenger-train-row--intermediate .passenger-train-row__time{min-width:120px}.passenger-train-row--intermediate .passenger-train-row__time--arrival .passenger-train-row__value{font-size:var(--passenger-font-size-body);font-weight:600}.passenger-train-row--intermediate .passenger-train-row__time--departure .passenger-train-row__value{font-size:calc(var(--passenger-font-size-body) * .9);font-weight:400;color:var(--passenger-color-text-secondary)}.passenger-train-row--cancelled{opacity:.7}.passenger-train-row--cancelled .passenger-train-row__train-number .passenger-train-row__value,.passenger-train-row--cancelled .passenger-train-row__destination .passenger-train-row__value,.passenger-train-row--cancelled .passenger-train-row__origin .passenger-train-row__value{text-decoration:line-through;color:var(--passenger-color-text-secondary)}@keyframes fade-in-row{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.passenger-train-row--entering{animation:fade-in-row var(--passenger-transition-fade)}@keyframes fade-out-row{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}.passenger-train-row--exiting{animation:fade-out-row var(--passenger-transition-fade)}@media (prefers-contrast: high){.passenger-train-row{border-width:var(--passenger-border-width-medium)}.passenger-train-row__train-number .passenger-train-row__value{font-weight:800}}@media (prefers-reduced-motion: reduce){.passenger-train-row{transition:none}.passenger-train-row--entering,.passenger-train-row--exiting{animation:none}}@media (min-width: 1920px){.passenger-train-row{min-height:160px;padding:var(--passenger-spacing-xl) var(--passenger-spacing-2xl)}.passenger-train-row__train-number{min-width:240px}.passenger-train-row__time{min-width:180px}}@media (max-width: 1919px) and (min-width: 1366px){.passenger-train-row{min-height:140px}}@media (max-width: 1365px){.passenger-train-row{min-height:var(--passenger-row-height-compact);padding:var(--passenger-spacing-md) var(--passenger-spacing-lg)}.passenger-train-row__main,.passenger-train-row__details{gap:var(--passenger-spacing-lg)}.passenger-train-row__train-number{min-width:160px}.passenger-train-row__time{min-width:120px}}@media (max-width: 768px){.passenger-train-row{flex-direction:column;align-items:flex-start;min-height:auto;padding:var(--passenger-spacing-md);gap:var(--passenger-spacing-md)}.passenger-train-row__main{width:100%;flex-direction:column;align-items:flex-start;gap:var(--passenger-spacing-sm)}.passenger-train-row__details{width:100%;flex-wrap:wrap;gap:var(--passenger-spacing-sm)}.passenger-train-row__train-number,.passenger-train-row__destination,.passenger-train-row__origin,.passenger-train-row__time{min-width:auto;text-align:left}.passenger-train-row__status{margin-left:0;width:100%}}.passenger-screen-layout{display:flex;flex-direction:column;min-height:100vh;background-color:var(--passenger-color-bg-primary);font-family:var(--passenger-font-family);color:var(--passenger-color-text-primary)}.passenger-screen-header{display:flex;align-items:center;justify-content:space-between;height:var(--passenger-header-height);padding:0 var(--passenger-spacing-screen-padding);background-color:var(--passenger-color-bg-header);color:var(--passenger-color-text-inverse);box-shadow:var(--passenger-shadow-md);z-index:var(--passenger-z-header)}.passenger-screen-header__brand{display:flex;align-items:center;gap:var(--passenger-spacing-md)}.passenger-screen-header__logo{display:flex;align-items:center}.passenger-screen-header__logo-text{font-size:var(--passenger-font-size-heading);font-weight:700;letter-spacing:-.02em}.passenger-screen-header__info{display:flex;flex-direction:column;align-items:center;gap:var(--passenger-spacing-xs);flex:1}.passenger-screen-header__station{font-size:var(--passenger-font-size-heading);font-weight:700;margin:0;text-align:center}.passenger-screen-header__type{font-size:var(--passenger-font-size-caption);font-weight:400;opacity:.9;text-transform:uppercase;letter-spacing:.1em}.passenger-screen-header__time{display:flex;align-items:center}.passenger-screen-header__time-value{font-size:var(--passenger-font-size-heading);font-weight:600;font-variant-numeric:tabular-nums}.passenger-screen-content{flex:1;padding:var(--passenger-spacing-screen-padding);overflow-y:auto}.passenger-screen-content--centered{display:flex;align-items:center;justify-content:center}.passenger-train-list{display:flex;flex-direction:column;gap:var(--passenger-spacing-row);max-width:1600px;margin:0 auto}.passenger-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--passenger-spacing-xl);padding:var(--passenger-spacing-3xl);text-align:center}.passenger-empty-state__icon{font-size:120px;opacity:.3}.passenger-empty-state__message{display:flex;flex-direction:column;gap:var(--passenger-spacing-md)}.passenger-empty-state__text-en{font-size:var(--passenger-font-size-heading);font-weight:600;color:var(--passenger-color-text-primary);margin:0}.passenger-empty-state__text-sw{font-size:var(--passenger-font-size-body);font-weight:400;color:var(--passenger-color-text-secondary);margin:0}.passenger-boarding-display{display:flex;flex-direction:column;align-items:center;gap:var(--passenger-spacing-2xl);width:100%;max-width:1400px}.passenger-boarding-display__banner{display:flex;justify-content:center;width:100%}.passenger-boarding-display__banner .status-badge{transform:scale(1.5);box-shadow:var(--passenger-shadow-lg)}.passenger-boarding-display__train{width:100%}.passenger-boarding-display__train .passenger-train-row{transform:scale(1.2);box-shadow:var(--passenger-shadow-lg)}.passenger-screen-footer{display:flex;align-items:center;justify-content:center;padding:var(--passenger-spacing-lg) var(--passenger-spacing-screen-padding);background-color:var(--passenger-color-bg-card);border-top:var(--passenger-border-width-thin) solid var(--passenger-color-border-light)}.passenger-screen-footer__text{font-size:var(--passenger-font-size-caption);color:var(--passenger-color-text-secondary);margin:0;text-align:center}.passenger-screen-layout--boarding-gate .passenger-screen-content{background:linear-gradient(to bottom,var(--passenger-color-bg-primary) 0%,rgba(255,255,255,.5) 50%,var(--passenger-color-bg-primary) 100%)}.passenger-screen-layout--arrival-hall .passenger-screen-header{background-color:var(--passenger-color-status-boarding)}@keyframes fade-in-content{0%{opacity:0}to{opacity:1}}.passenger-train-list{animation:fade-in-content var(--passenger-transition-fade)}@media (prefers-contrast: high){.passenger-screen-header{border-bottom:var(--passenger-border-width-thick) solid var(--passenger-color-text-inverse)}.passenger-screen-footer{border-top-width:var(--passenger-border-width-thick)}}@media (prefers-reduced-motion: reduce){.passenger-train-list{animation:none}.passenger-boarding-display__banner .status-badge,.passenger-boarding-display__train .passenger-train-row{transition:none}}@media (min-width: 1920px){.passenger-train-list{max-width:1800px}.passenger-boarding-display{max-width:1600px}.passenger-boarding-display__banner .status-badge{transform:scale(1.8)}.passenger-boarding-display__train .passenger-train-row{transform:scale(1.4)}}@media (max-width: 1919px) and (min-width: 1366px){.passenger-train-list{max-width:1400px}}@media (max-width: 1365px){.passenger-screen-header{height:100px;padding:0 var(--passenger-spacing-lg)}.passenger-screen-content{padding:var(--passenger-spacing-lg)}.passenger-train-list{max-width:1200px;gap:var(--passenger-spacing-row-compact)}.passenger-boarding-display__banner .status-badge{transform:scale(1.3)}.passenger-boarding-display__train .passenger-train-row{transform:scale(1.1)}}@media (max-width: 768px){.passenger-screen-header{height:var(--passenger-header-height-mobile);padding:0 var(--passenger-spacing-md);flex-wrap:wrap}.passenger-screen-header__brand{width:100%;justify-content:center}.passenger-screen-header__info{width:50%}.passenger-screen-header__time{width:50%;justify-content:flex-end}.passenger-screen-content{padding:var(--passenger-spacing-md)}.passenger-train-list{gap:var(--passenger-spacing-sm)}.passenger-empty-state{padding:var(--passenger-spacing-xl)}.passenger-boarding-display__banner .status-badge,.passenger-boarding-display__train .passenger-train-row{transform:scale(1)}}@media print{.passenger-screen-layout{min-height:auto}.passenger-screen-header{background-color:transparent;color:var(--passenger-color-text-primary);border-bottom:2px solid var(--passenger-color-text-primary)}.passenger-screen-content{padding:20px}.passenger-train-list{gap:10px}}
