:root{color:#20242a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f7f7f5;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}#root{min-height:100vh}*{box-sizing:border-box;margin:0;padding:0}:root{--primary-color:#dd5000;--secondary-color:#b94000;--accent-color:#f90;--success-color:#2f7d4f;--danger-color:#b3261e;--warning-color:#a66300;--text-color:#212529;--muted-color:#6c757d;--border-color:#dee2e6;--background-color:#f8f9fa;--surface-color:#fff;--table-head:#f1f3f5;--shadow:0 2px 8px #21252914}body{color:var(--text-color);background-color:var(--background-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}button{cursor:pointer;border:none;border-radius:2px;padding:9px 18px;font-family:inherit;font-size:14px;transition:background-color .2s,border-color .2s,color .2s}button:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:var(--primary-color);color:#fff;font-weight:600}.btn-primary:hover:not(:disabled){background-color:var(--secondary-color)}.btn-secondary{color:#fff;background-color:#565656;font-weight:600}.btn-secondary:hover:not(:disabled){background-color:#444}.btn-danger{background-color:var(--danger-color);color:#fff;font-weight:600}.btn-danger:hover:not(:disabled){background-color:#b71c1c}.btn-refund{background-color:var(--warning-color);color:#fff;padding:6px 12px;font-size:12px}.btn-refund:hover:not(:disabled){background-color:#e65100}.btn-cancel{color:#fff;background-color:#999;padding:6px 12px;font-size:12px}.btn-cancel:hover:not(:disabled){background-color:#777}.link-button{color:var(--primary-color);background:0 0;padding:0;font-weight:600;text-decoration:underline}.link-button:hover{color:var(--secondary-color)}input,select,textarea{border:1px solid var(--border-color);color:var(--text-color);border-radius:2px;padding:10px 12px;font-family:inherit;font-size:14px}input:focus,select:focus,textarea:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 3px #dd500024}.error-message{border:1px solid var(--danger-color);color:var(--danger-color);background-color:#ffebee;border-radius:2px;margin-bottom:16px;padding:12px;font-weight:500}.success-message{border:1px solid var(--success-color);color:var(--success-color);background-color:#e8f5e9;border-radius:2px;margin-bottom:16px;padding:12px;font-weight:500}.warning-message{border:1px solid var(--warning-color);color:var(--warning-color);background-color:#fff3e0;border-radius:2px;margin-bottom:16px;padding:12px;font-weight:500}.loading{text-align:center;color:#999;padding:40px;font-size:16px}.form-group{margin-bottom:16px}.form-group label{color:var(--text-color);margin-bottom:8px;font-weight:600;display:block}.status-badge{border-radius:2px;margin-left:8px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-block}.status-badge.paid{color:var(--success-color);background-color:#e8f5e9}.status-badge.unpaid{color:var(--warning-color);background-color:#fff3df}.status-badge.cancelled{color:#666;background-color:#eee}.status-badge.matched{color:var(--primary-color);background-color:#e3f2fd}.status-badge.waiting{color:var(--warning-color);background-color:#fff3e0}@media (width<=640px){.form-row{grid-template-columns:1fr;gap:12px}.btn-primary,.btn-secondary{text-align:center;width:100%}input,select{font-size:16px}.auth-card{border-radius:8px;margin:8px;padding:20px 16px}.pagination{gap:4px}.page-btn{min-width:32px;height:32px;padding:0 6px;font-size:.8rem}.page-info{text-align:center;width:100%;margin-top:4px;margin-left:0}.my-bookings-header{flex-direction:column;align-items:flex-start;gap:8px}.schedule-filters{flex-direction:column;gap:8px}.service-hero{grid-template-columns:1fr!important}}.status-badge.expired{color:#c2185b;background-color:#fce4ec}.page-content{max-width:960px;margin:0 auto;padding:24px 16px}.page-content h2{color:var(--text-color);margin-bottom:6px;font-size:1.4rem;font-weight:700}.page-hint{color:var(--muted-color);margin-bottom:20px;font-size:.9rem}.search-form{background:var(--surface-color);border:1px solid var(--border-color);border-radius:4px;margin-bottom:24px;padding:16px}.search-form .form-row{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.search-form .form-group{flex:1;min-width:160px;margin-bottom:0}.search-form .btn-primary{flex-shrink:0;align-self:flex-end;height:40px}.data-table{border-collapse:collapse;background:var(--surface-color);border:1px solid var(--border-color);border-radius:4px;width:100%;font-size:.9rem;overflow:hidden}.data-table th{background:var(--table-head);text-align:left;border-bottom:1px solid var(--border-color);white-space:nowrap;padding:10px 14px;font-weight:600}.data-table td{border-bottom:1px solid var(--border-color);padding:10px 14px}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#fafafa}.empty-state{text-align:center;color:var(--muted-color);padding:40px;font-size:.95rem}.congestion-badge{border-radius:2px;padding:3px 10px;font-size:.8rem;font-weight:600;display:inline-block}.congestion-low{color:#2e7d32;background:#e8f5e9}.congestion-medium{color:#e65100;background:#fff3e0}.congestion-high{color:#c62828;background:#fce4ec}.congestion-full{color:#fff;background:#b71c1c}.occupancy-bar-wrap{align-items:center;gap:8px;min-width:120px;display:flex}.occupancy-bar-bg{background:#e0e0e0;border-radius:4px;flex:1;height:8px;overflow:hidden}.occupancy-bar-fill{border-radius:4px;height:100%;transition:width .3s}.page-dots{min-width:32px;height:32px;color:var(--muted-color);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:.9rem;display:inline-flex}.occupancy-label{white-space:nowrap;min-width:42px;font-size:.8rem;font-weight:600}@media (width<=640px){.data-table{font-size:.78rem}.data-table th,.data-table td{padding:8px}}.app{background:var(--background-color);flex-direction:column;min-height:100vh;display:flex}.page-container{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:0 18px 46px}.app-loading{color:#666;justify-content:center;align-items:center;min-height:100vh;font-size:16px;display:flex}@media (width<=768px){.page-container{padding:0 12px 28px}}.header{background:var(--surface-color);color:var(--text-color);border-top:5px solid var(--primary-color);margin-bottom:24px;box-shadow:0 2px 8px #21252914}.utility-bar{color:#f8f9fa;background:#343a40;justify-content:flex-end;align-items:center;gap:18px;height:30px;padding:0 calc(50vw - 584px);font-size:12px;display:flex}.utility-bar button{color:inherit;background:0 0;padding:0;font-size:12px}.utility-bar button.active,.utility-bar button:hover{color:var(--accent-color)}.header-container{grid-template-columns:minmax(320px,auto) 1fr auto;align-items:end;gap:20px;max-width:1200px;margin:0 auto;padding:18px 16px 0;display:grid}.brand-block{align-items:center;gap:14px;padding-bottom:16px;display:flex}.logo{letter-spacing:0;color:var(--primary-color);margin:0;font-size:25px;font-weight:800}.brand-block p{color:var(--muted-color);letter-spacing:.8px;margin:2px 0 0;font-size:12px}.main-nav{border-left:1px solid var(--border-color);align-self:stretch;align-items:stretch;gap:0;display:flex}.main-nav button{color:#343a40;border-right:1px solid var(--border-color);background-color:#0000;border-bottom:4px solid #0000;border-radius:0;min-width:108px;padding:20px 18px 16px;font-size:15px;font-weight:700}.main-nav button:hover,.main-nav button.active{color:var(--primary-color);border-bottom-color:var(--primary-color);background-color:#fff4ee}.header-actions{align-items:center;gap:12px;padding-bottom:16px;display:flex}.user-info{color:#343a40;white-space:nowrap;font-size:13px;font-weight:700}.btn-logout{color:#fff;background-color:#6c757d;border-radius:2px;padding:8px 14px;font-size:12px}.btn-logout:hover{background-color:var(--primary-color)}.auth-prompt{color:var(--muted-color);font-size:14px}@media (width<=900px){.utility-bar{justify-content:center;padding:0 12px}.header-container{grid-template-columns:1fr;align-items:stretch;gap:0;padding-top:14px}.brand-block,.header-actions{padding-bottom:12px}.main-nav{border-top:1px solid var(--border-color);overflow-x:auto}.main-nav button{flex:1 0 100px;padding:14px 12px 10px}}.site-footer{color:#adb5bd;background:#1a1a2e;border-top:3px solid #f47721;margin-top:auto;padding:0;font-size:.82rem}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;max-width:1120px;margin:0 auto;padding:20px 24px;display:flex}.footer-brand{color:#fff;align-items:center;gap:8px;font-size:.95rem;font-weight:700;display:flex}.footer-logo{font-size:1.3rem}.footer-links{align-items:center;gap:10px;display:flex}.footer-links a{color:#adb5bd;text-decoration:none;transition:color .15s}.footer-links a:hover{color:#f47721}.footer-divider{color:#495057}.footer-copy{color:#6c757d}.footer-copy a{color:#6c757d;text-underline-offset:2px;text-decoration:underline}.footer-copy a:hover{color:#adb5bd}@media (width<=640px){.footer-inner{flex-direction:column;align-items:flex-start;gap:10px}}.auth-container{background:linear-gradient(110deg,#60141feb,#8f1d2cc7),linear-gradient(#f8f9fa,#f8f9fa);place-items:center;min-height:100vh;padding:32px 16px;display:grid}.auth-card{background:var(--surface-color);border:1px solid var(--border-color);border-top:6px solid var(--primary-color);width:100%;max-width:430px;padding:34px 34px 28px;box-shadow:0 18px 50px #26181438}.auth-card h2{text-align:center;color:var(--primary-color);margin:0 0 24px;font-size:28px}.auth-card h2:after{content:"Taiwan High Speed Rail";color:var(--muted-color);letter-spacing:1px;margin-top:6px;font-size:12px;font-weight:600;display:block}.auth-card form{margin-bottom:22px}.auth-card .btn-primary{width:100%;min-height:44px}.auth-card .btn-secondary.btn-back{border:1.5px solid var(--border-color);width:100%;min-height:40px;color:var(--text-secondary,#555);cursor:pointer;background:0 0;border-radius:6px;margin-top:10px;font-size:.9rem;transition:background .15s}.auth-card .btn-secondary.btn-back:hover{background:#f1f3f5}.auth-tabs{border-bottom:2px solid var(--border-color);gap:0;margin-bottom:20px;display:flex}.auth-tabs button{color:#888;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;margin-bottom:-2px;padding:10px 0;font-size:.92rem;font-weight:500;transition:color .15s,border-color .15s}.auth-tabs button.active{color:#f47721;border-bottom-color:#f47721;font-weight:700}.google-signin-wrapper{margin-top:16px}.divider{color:#aaa;align-items:center;gap:10px;margin:14px 0;font-size:.8rem;display:flex}.divider:before,.divider:after{content:"";background:var(--border-color);flex:1;height:1px}.google-btn-container{justify-content:center;display:flex}.google-signin-btn{color:#3c4043;cursor:pointer;background:#fff;border:1.5px solid #dadce0;border-radius:6px;justify-content:center;align-items:center;gap:10px;width:100%;padding:10px 16px;font-family:inherit;font-size:.95rem;font-weight:500;transition:background .15s,box-shadow .15s;display:flex}.google-signin-btn:hover:not(:disabled){background:#f8f9fa;box-shadow:0 1px 4px #00000026}.google-signin-btn:disabled{opacity:.6;cursor:not-allowed}.google-loading{color:#888;font-size:.8rem}.lookup-section h2{margin-bottom:6px}.lookup-hint{color:#888;margin-bottom:16px;font-size:.88rem}.lookup-form-inline{gap:10px;margin-bottom:12px;display:flex}.lookup-input{border:1.5px solid var(--border-color);text-transform:uppercase;letter-spacing:2px;border-radius:6px;flex:1;padding:10px 12px;font-size:1rem;font-weight:600}.lookup-result{border:1px solid var(--border-color);background:#f8f9fa;border-radius:8px;margin-top:12px;overflow:hidden}.lookup-row{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:12px 16px;font-size:.92rem;display:flex}.lookup-row:last-child{border-bottom:none}.lookup-row span{color:#666}.status-unpaid{color:#f59e0b}.status-paid{color:#16a34a}.status-cancelled{color:#dc2626}.auth-toggle{text-align:center;border-top:1px solid var(--border-color);margin-top:14px;padding:16px 0;font-size:14px}.demo-accounts{border-left:5px solid var(--accent-color);background-color:#f8f9fa;margin-top:16px;padding:12px 14px;font-size:12px}.demo-accounts p{margin:5px 0}.demo-accounts strong{color:var(--primary-color)}.search-page{max-width:1120px;margin:0 auto}.service-hero{color:#fff;background:linear-gradient(105deg,#b43200d1 0%,#c8500099 55%,#0000004d 100%),url(/thsr-bg.jpg) 50% 40%/cover no-repeat;border-bottom:4px solid #343a40;grid-template-columns:minmax(0,1fr) 360px;align-items:center;gap:28px;min-height:200px;margin-bottom:16px;padding:36px 30px;display:grid;position:relative;overflow:hidden}.hero-kicker{letter-spacing:0;margin:0 0 6px;font-weight:800}.service-hero h2{letter-spacing:0;margin:0 0 8px;font-size:30px}.service-hero p{color:#fff7ef;margin:0}.train-line{color:#fff;justify-content:space-between;padding-top:36px;font-size:13px;font-weight:700;display:flex;position:relative}.train-line:before{content:"";background:#ffffffb8;height:4px;position:absolute;top:18px;left:0;right:0}.train-line span{position:relative}.train-line span:before{content:"";background:#fff;border:3px solid #343a40;width:16px;height:16px;position:absolute;top:-27px;left:50%;transform:translate(-50%)rotate(45deg)}.search-card,.schedules-list{background:var(--surface-color);border:1px solid var(--border-color);box-shadow:var(--shadow)}.search-card{margin-bottom:18px;padding:0 28px 28px}.query-tabs{border-bottom:1px solid var(--border-color);grid-template-columns:repeat(4,minmax(0,1fr));margin:0 -28px 24px;display:grid}.query-tabs button{color:#343a40;border-right:1px solid var(--border-color);background:#f1f3f5;border-radius:0;min-height:52px;font-weight:800}.query-tabs button.active{background:var(--primary-color);color:#fff}.search-heading{border-left:5px solid var(--primary-color);justify-content:space-between;gap:18px;margin-bottom:18px;padding-left:14px;display:flex}.search-heading h3{color:#343a40;margin:0;font-size:22px}.search-heading p{color:var(--muted-color);margin:0;font-size:13px}.trip-type{border:1px solid var(--border-color);background:#f8f9fa;gap:20px;margin-bottom:16px;padding:12px 14px;display:flex}.trip-type label{cursor:pointer;align-items:center;gap:8px;margin:0;font-weight:700;display:flex}.trip-type input[type=radio]{appearance:none;box-sizing:border-box;border:2px solid var(--border-color);background:#fff;border-radius:50%;place-content:center;width:18px;min-width:18px;height:18px;min-height:18px;padding:0;display:inline-grid}.trip-type input[type=radio]:before{content:"";background:var(--primary-color);border-radius:50%;width:8px;height:8px;transition:transform .15s;transform:scale(0)}.trip-type input[type=radio]:checked{border-color:var(--primary-color)}.trip-type input[type=radio]:checked:before{transform:scale(1)}.form-row{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));align-items:end;gap:14px;margin-bottom:18px;display:grid}.search-form label{color:#343a40;margin-bottom:6px;font-size:13px;font-weight:800;display:block}.search-form select,.search-form input{background:#fff;width:100%;min-height:44px}.quick-actions{justify-content:flex-end;gap:8px;margin-top:-42px;margin-bottom:6px;display:flex}.date-input-row{align-items:center;gap:8px;display:flex}.date-input-row input[type=date]{flex:1}.btn-date-shortcut{white-space:nowrap;color:#f47721;cursor:pointer;background:#fff;border:1.5px solid #f47721;border-radius:6px;height:38px;padding:0 14px;font-size:.875rem;font-weight:600;transition:background .15s,color .15s}.btn-date-shortcut:hover{color:#fff;background:#f47721}.schedules-list{padding:0}.schedule-filters{border-bottom:1px solid var(--border-color);background:#fafafa;flex-wrap:wrap;gap:10px 20px;padding:12px 20px;display:flex}.filter-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.filter-label{color:#888;white-space:nowrap;font-size:.8rem;font-weight:600}.filter-chip{border:1.5px solid var(--border-color);cursor:pointer;color:#555;white-space:nowrap;background:#fff;border-radius:20px;padding:4px 12px;font-size:.8rem;transition:all .12s}.filter-chip:hover{color:#f47721;border-color:#f47721}.filter-chip.active{color:#fff;background:#f47721;border-color:#f47721;font-weight:600}.train-type-badge{color:#06c;vertical-align:middle;background:#e8f4ff;border-radius:4px;margin-left:6px;padding:1px 7px;font-size:.72rem;font-weight:600;display:inline-block}.seats-badge{margin:0;font-size:.82rem;font-weight:600}.many-seats{color:#16a34a}.few-seats{color:#f59e0b}.no-seats{color:#dc2626}.pagination{border-top:1px solid var(--border-color);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;padding:16px 20px;display:flex}.page-btn{border:1.5px solid var(--border-color);min-width:36px;height:36px;color:var(--text-color,#333);cursor:pointer;background:#fff;border-radius:6px;padding:0 10px;font-size:.875rem;transition:background .12s,border-color .12s,color .12s}.page-btn:hover:not(:disabled){color:#f47721;border-color:#f47721}.page-btn.active{color:#fff;background:#f47721;border-color:#f47721;font-weight:700}.page-btn:disabled{opacity:.38;cursor:not-allowed}.page-info{color:#888;margin-left:8px;font-size:.8rem}.result-title{background:var(--table-head);border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.result-title h3{color:#343a40;margin:0}.result-title span{color:var(--primary-color);font-weight:800}.schedule-card{border-bottom:1px solid var(--border-color);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:20px;padding:18px 20px;transition:background-color .2s;display:grid}.schedule-card:hover{background:#fff7f2}.schedule-card:last-child{border-bottom:0}.route{color:#343a40;margin-bottom:10px;font-size:19px;font-weight:800}.station-from,.station-to{color:var(--primary-color)}.arrow{color:var(--primary-color);margin:0 10px}.details{color:var(--muted-color);flex-wrap:wrap;gap:10px 22px;font-size:13px;display:flex}.details p{margin:0}@media (width<=800px){.service-hero{grid-template-columns:1fr;padding:24px 20px}.query-tabs,.form-row{grid-template-columns:1fr}.quick-actions{justify-content:stretch;margin:8px 0 0}.quick-actions button,.search-form>.btn-primary{width:100%}.schedule-card{grid-template-columns:1fr}}.seat-selection-container{background:var(--surface-color);border:1px solid var(--border-color);max-width:820px;box-shadow:var(--shadow);margin:0 auto}.header-info{background:var(--table-head);border-bottom:1px solid var(--border-color);padding:20px 28px}.header-info h2{color:var(--primary-color);margin:0 0 6px}.route-info{color:var(--muted-color);align-items:center;gap:10px;font-size:14px;display:flex}.route-info span:first-child,.route-info span:nth-child(3){color:var(--primary-color);font-weight:800}.seat-selection{padding:20px 28px}.legend{border:1px solid var(--border-color);background:#f8f9fa;flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:20px;padding:12px 16px;font-size:13px;font-weight:600;display:flex}.legend div{align-items:center;gap:7px;display:flex}.legend-dot{border:2px solid #0000;border-radius:4px;flex-shrink:0;width:26px;height:26px;display:inline-block}.legend-dot.available{border-color:var(--success-color);background:#fff}.legend-dot.occupied{background:#e9ecef;border-color:#ced4da}.legend-dot.selected{background:var(--primary-color);border-color:var(--secondary-color)}.legend-dot.business-dot{border-color:var(--accent-color);box-shadow:inset 0 -4px 0 var(--accent-color);background:#fff}.carriage{border:1px solid var(--border-color);border-radius:4px;margin-bottom:28px;overflow:hidden}.carriage h4{background:var(--table-head);border-bottom:1px solid var(--border-color);color:var(--text-color);align-items:center;gap:10px;margin:0;padding:10px 16px;font-size:.9rem;font-weight:700;display:flex}.business-carriage h4{border-bottom-color:var(--accent-color);background:#fff8f0}.carriage-type-badge{color:#a65c00;background:#ffe0b2;border-radius:2px;padding:2px 8px;font-size:.72rem;font-weight:700}.seat-map{padding:14px 18px 18px;overflow-x:auto}.seat-row{align-items:center;gap:5px;margin-bottom:5px;display:flex}.seat-row-header{margin-bottom:8px}.row-num-cell{text-align:center;width:28px;color:var(--muted-color);flex-shrink:0;font-size:.72rem;font-weight:600}.seat-group{gap:5px;display:flex}.seat-col-label{text-align:center;width:44px;color:var(--muted-color);flex-shrink:0;font-size:.8rem;font-weight:700}.seat-aisle-gap{flex-shrink:0;justify-content:center;align-items:center;width:22px;display:flex}.aisle-line{background:repeating-linear-gradient(#ccc 0 4px,#0000 4px 8px);border-radius:1px;width:2px;height:38px}.seat-row-header .aisle-line{display:none}.seat-row-header .seat-aisle-gap:after{content:"│";color:#ccc;font-size:.9rem}.seat-placeholder{flex-shrink:0;width:44px;height:44px}.seat-button-wrapper{flex-shrink:0;position:relative}.seat-btn{border:2px solid var(--border-color);cursor:pointer;background:#fff;border-radius:5px;justify-content:center;align-items:center;width:44px;height:44px;padding:0;font-family:inherit;font-size:1rem;font-weight:800;transition:background .1s,border-color .1s,color .1s;display:flex}.seat-btn.available{color:var(--success-color);border-color:var(--success-color)}.seat-btn.available:hover{background:#e8f5e9}.seat-btn.occupied{color:#adb5bd;cursor:not-allowed;background:#e9ecef;border-color:#dee2e6}.seat-btn.selected{background:var(--primary-color);color:#fff;border-color:var(--secondary-color)}.seat-btn.selected:hover{background:var(--secondary-color)}.seat-btn.business{box-shadow:inset 0 -4px 0 var(--accent-color)}.seat-btn.business.selected{box-shadow:none}.ticket-type-menu{border:1px solid var(--border-color);z-index:50;background:#fff;border-radius:4px;min-width:130px;position:absolute;bottom:calc(100% + 6px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 16px #00000024}.ticket-type-menu-title{color:var(--muted-color);text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid var(--border-color);padding:7px 12px 5px;font-size:.75rem;font-weight:700}.ticket-type-option{text-align:left;border:none;border-bottom:1px solid var(--border-color);width:100%;color:var(--text-color);cursor:pointer;background:0 0;padding:9px 14px;font-size:13px;display:block}.ticket-type-option:last-child{border-bottom:none}.ticket-type-option:hover{color:var(--primary-color);background:#f8f9fa;font-weight:600}.booking-summary{border-top:4px solid var(--primary-color);background:#f8f9fa;justify-content:space-between;align-items:center;gap:20px;padding:18px 28px;display:flex}.summary-items p{margin:4px 0;font-size:14px}.total-price{color:var(--primary-color);font-size:1.25rem;font-weight:800}.actions{gap:12px;display:flex}@media (width<=640px){.seat-selection,.header-info,.booking-summary{padding-left:16px;padding-right:16px}.legend{gap:12px;font-size:12px}.seat-btn{width:38px;height:38px;font-size:.9rem}.seat-col-label{width:38px;font-size:.75rem}.booking-summary{flex-direction:column;align-items:stretch}.actions{flex-direction:column}.actions button{width:100%}}.booking-confirm-container{background:var(--surface-color);border:1px solid var(--border-color);border-top:5px solid var(--primary-color);max-width:720px;box-shadow:var(--shadow);margin:0 auto;padding:28px}.booking-confirm-container h2{color:var(--primary-color);text-align:center;margin-bottom:24px}.ticket-list{margin-bottom:24px}.ticket-list h3{color:#343a40;margin-bottom:12px;font-size:14px}.ticket-item{border-left:5px solid var(--accent-color);background-color:#fff;justify-content:space-between;align-items:center;margin-bottom:8px;padding:12px;display:flex}.ticket-number{color:var(--primary-color);min-width:80px;font-weight:600}.ticket-details{flex:1;margin:0 16px}.ticket-details p{color:var(--muted-color);margin:2px 0;font-size:13px}.ticket-details strong{color:#343a40}.summary{background-color:#f8f9fa;margin-bottom:24px;padding:16px}.summary-row{color:var(--muted-color);justify-content:space-between;margin-bottom:8px;font-size:14px;display:flex}.summary-row.total{border-top:2px solid var(--border-color);color:var(--primary-color);margin-top:8px;padding-top:8px;font-size:18px;font-weight:700}.terms{border:1px solid var(--border-color);background-color:#f8f9fa;margin-bottom:24px;padding:16px}.terms label{cursor:pointer;color:var(--muted-color);align-items:center;font-size:13px;display:flex}.terms input[type=checkbox]{cursor:pointer;width:16px;height:16px;margin-right:8px}.actions{justify-content:flex-end;gap:12px;display:flex}@media (width<=768px){.ticket-item{flex-direction:column;align-items:flex-start;gap:8px}.ticket-details{margin:8px 0}.actions{flex-direction:column}.actions button{width:100%}}.payment-container{max-width:620px;margin:0 auto;padding:24px 16px}.payment-card{background:var(--surface-color);border:1px solid var(--border-color);border-top:5px solid var(--primary-color);box-shadow:var(--shadow);padding:32px}.payment-card h2{color:var(--primary-color);text-align:center;margin-bottom:24px}.order-summary{border-left:5px solid var(--accent-color);background-color:#fff;margin-bottom:24px;padding:16px}.summary-item{justify-content:space-between;margin-bottom:8px;font-size:14px;display:flex}.summary-item span:first-child{color:var(--muted-color)}.summary-item strong{color:var(--primary-color);font-size:16px;font-weight:700}.payment-method{border-bottom:1px solid var(--border-color);margin-bottom:24px;padding-bottom:16px}.payment-method h3{color:#343a40;margin-bottom:12px;font-size:14px}.payment-method label{cursor:pointer;align-items:center;margin-bottom:8px;font-size:14px;display:flex}.payment-method input[type=radio]{cursor:pointer;width:16px;height:16px;margin-right:8px}.credit-card-form{background-color:#f8f9fa;margin-bottom:16px;padding:16px}.credit-card-form .form-group label{margin-bottom:6px;font-size:12px}.credit-card-form input{width:100%;padding:10px;font-size:13px}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.atm-info{color:var(--muted-color);background-color:#f8f9fa;margin-bottom:16px;padding:16px;font-size:13px}.atm-info p{margin:8px 0}.atm-info strong{color:var(--primary-color);margin-top:8px;display:block}.warning{border-left:5px solid var(--warning-color);color:var(--warning-color);background-color:#fff5e5;margin-top:12px;padding:8px;font-weight:500}.actions{justify-content:flex-end;gap:12px;margin-top:24px;display:flex}.actions button{min-width:120px}.test-info{border-left:5px solid var(--primary-color);color:var(--secondary-color);background-color:#f8f9fa;margin-top:24px;padding:12px;font-size:12px}.test-info p{margin:0}.summary-item.tgo-preview{border-top:1px dashed var(--border-color);margin-top:4px;margin-bottom:0;padding-top:8px}.tgo-points-preview{color:#a65c00!important;font-size:15px!important}.payment-success{text-align:center;padding:8px 0 4px}.success-icon{background:var(--success-color);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto 20px;font-size:2rem;font-weight:800;display:flex}.payment-success h2{color:var(--success-color);margin-bottom:8px}.tgo-earned-banner{border:1.5px solid var(--accent-color);text-align:left;background:linear-gradient(135deg,#fff8e1 0%,#fffde7 100%);border-radius:8px;align-items:center;gap:16px;margin:0 0 24px;padding:14px 20px;display:flex}.tgo-coin{color:#fff;letter-spacing:.5px;background:linear-gradient(135deg,#f90 0%,#e65c00 100%);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:.65rem;font-weight:800;display:flex;box-shadow:0 2px 8px #e65c0059}.tgo-earned-label{color:var(--muted-color);font-size:.8rem;font-weight:500}.tgo-earned-points{color:#a65c00;font-size:1.5rem;font-weight:800;line-height:1.2}@media (width<=768px){.payment-card{padding:20px}.form-row{grid-template-columns:1fr}.actions{flex-direction:column}.actions button{width:100%}}.my-bookings{max-width:1000px;margin:0 auto;padding:16px}.my-bookings-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.my-bookings-header h2{margin:0}.btn-export-csv{color:#16a34a;cursor:pointer;background:#fff;border:1.5px solid #16a34a;border-radius:6px;padding:7px 16px;font-size:.85rem;font-weight:600;transition:background .12s,color .12s}.btn-export-csv:hover{color:#fff;background:#16a34a}.my-bookings h2{color:var(--primary-color);border-left:5px solid var(--primary-color);margin-bottom:24px;padding-left:12px}.empty-state{background:var(--surface-color);border:1px solid var(--border-color);text-align:center;box-shadow:var(--shadow);padding:48px}.empty-state p{color:#999;font-size:16px}.orders-list{gap:16px;display:grid}.order-card{background:var(--surface-color);border:1px solid var(--border-color);box-shadow:var(--shadow);overflow:hidden}.order-header{background-color:var(--table-head);border-bottom:1px solid var(--border-color);cursor:pointer;justify-content:space-between;align-items:center;padding:16px;transition:background-color .3s;display:flex}.order-header:hover{background-color:#f8f9fa}.order-info{flex:1}.booking-code{margin-bottom:8px;font-size:14px}.booking-code strong{color:var(--primary-color)}.order-status{align-items:center;gap:8px;display:flex}.order-amount{color:var(--primary-color);text-align:right;flex-direction:column;align-items:flex-end;gap:3px;min-width:120px;font-size:18px;font-weight:700;display:flex}.tgo-points-badge{color:#a65c00;letter-spacing:.3px;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;padding:1px 7px;font-size:.72rem;font-weight:700}.expand-icon{color:var(--muted-color);margin-left:12px;font-size:12px;transition:transform .3s}.order-header[aria-expanded=true] .expand-icon{transform:rotate(180deg)}.order-details{border-top:1px solid var(--border-color);padding:16px}.tickets{margin-bottom:16px}.tickets h4{color:#343a40;text-transform:uppercase;margin-bottom:12px;font-size:13px;font-weight:600}.ticket-detail{background-color:#fff;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;padding:12px;display:flex}.ticket-info{flex:1}.ticket-info p{color:var(--muted-color);margin:4px 0;font-size:13px}.ticket-info strong{color:#343a40}.btn-refund{background-color:var(--warning-color);color:#fff;white-space:nowrap;cursor:pointer;border:none;padding:6px 12px;font-size:12px;transition:all .3s}.btn-refund:hover{background-color:#7f4a00}.order-actions{border-top:1px solid var(--border-color);justify-content:flex-end;gap:8px;padding-top:12px;display:flex}.btn-danger{background-color:var(--danger-color);color:#fff;cursor:pointer;border:none;padding:6px 12px;font-size:12px;transition:all .3s}.btn-danger:hover{background-color:#b71c1c}@media (width<=768px){.order-header{flex-direction:column;align-items:flex-start}.order-amount{text-align:left;margin-top:8px}.ticket-detail{flex-direction:column}.btn-refund{text-align:center;width:100%}}.waitlist-page{max-width:1000px;margin:0 auto;padding:16px}.waitlist-page h2{color:var(--primary-color);border-left:5px solid var(--primary-color);margin-bottom:24px;padding-left:12px}.waitlist-items{gap:16px;display:grid}.waitlist-card{background:var(--surface-color);border:1px solid var(--border-color);border-left:5px solid var(--accent-color);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex}.waitlist-info{flex:1}.route{align-items:center;gap:12px;margin-bottom:12px;font-size:16px;font-weight:600;display:flex}.station{color:var(--primary-color)}.arrow{color:var(--accent-color);font-size:14px}.details{gap:8px;display:grid}.details p{color:var(--muted-color);margin:0;font-size:13px}.details strong{color:#343a40}.btn-cancel{color:#fff;cursor:pointer;white-space:nowrap;background-color:#5f5a54;border:none;padding:8px 16px;font-size:13px;transition:all .3s}.btn-cancel:hover{background-color:#777}@media (width<=768px){.waitlist-card{flex-direction:column;align-items:flex-start}.btn-cancel{text-align:center;width:100%}}.admin-layout{min-height:100vh;display:flex}.admin-sidebar{color:#fff;z-index:100;background:#1c1c2e;flex-direction:column;width:240px;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.admin-sidebar-brand{border-bottom:1px solid #ffffff1a;flex-shrink:0;padding:20px 24px 16px}.admin-sidebar-brand h1{color:#dd5000;letter-spacing:.3px;font-size:.95rem;font-weight:700}.admin-sidebar-brand p{color:#ffffff73;margin-top:3px;font-size:.72rem}.admin-nav{flex:1;padding:8px 0}.admin-nav-item{color:#ffffffa6;cursor:pointer;text-align:left;background:0 0;border:none;border-left:3px solid #0000;border-radius:0;align-items:center;gap:10px;width:100%;padding:11px 24px;font-size:.875rem;transition:background .15s,color .15s,border-color .15s;display:flex}.admin-nav-item:hover{color:#fff;background:#ffffff12}.admin-nav-item.active{color:#dd5000;background:#dd50002e;border-left-color:#dd5000;font-weight:600}.admin-nav-icon{text-align:center;flex-shrink:0;width:20px;font-size:1rem}.admin-sidebar-footer{border-top:1px solid #ffffff1a;flex-shrink:0;padding:14px 24px}.admin-sidebar-user{color:#ffffff80;word-break:break-all;margin-bottom:10px;font-size:.78rem;line-height:1.5}.admin-sidebar-user strong{color:#ffffffe6;margin-bottom:1px;font-size:.85rem;display:block}.admin-logout{color:#fff9;cursor:pointer;background:#ffffff14;border:none;border-radius:2px;width:100%;padding:7px 12px;font-size:.8rem;transition:background .15s,color .15s}.admin-logout:hover{color:#fff;background:#dd500059}.admin-content{background:var(--background-color);flex:1;min-height:100vh;margin-left:240px}.admin-page{max-width:1200px;padding:28px 32px}.admin-page-header{margin-bottom:22px}.admin-page-header h2{color:var(--text-color);font-size:1.4rem;font-weight:700}.admin-page-header p{color:var(--muted-color);margin-top:3px;font-size:.875rem}.admin-stats-grid{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;display:grid}.admin-stat-card{background:var(--surface-color);border:1px solid var(--border-color);border-radius:8px;flex-direction:column;gap:5px;padding:18px 20px;display:flex}.admin-stat-label{color:var(--muted-color);text-transform:uppercase;letter-spacing:.4px;font-size:.75rem;font-weight:600}.admin-stat-value{color:var(--text-color);font-size:1.75rem;font-weight:700;line-height:1.1}.admin-stat-value.revenue{color:var(--success-color)}.admin-stat-sub{color:var(--muted-color);font-size:.78rem}.admin-order-breakdown{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px;display:grid}.admin-order-card{background:var(--surface-color);border:1px solid var(--border-color);border-radius:6px;justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.admin-order-card .count{font-size:1.5rem;font-weight:700;line-height:1}.admin-order-card .label{color:var(--muted-color);margin-top:2px;font-size:.82rem}.admin-order-card.paid .count{color:var(--success-color)}.admin-order-card.unpaid .count{color:var(--warning-color)}.admin-order-card.cancelled .count{color:#999}.admin-toolbar{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:16px;display:flex}.admin-toolbar .form-group{margin-bottom:0}.admin-toolbar label{color:var(--muted-color);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px;font-size:.78rem;font-weight:600;display:block}.admin-toolbar input,.admin-toolbar select{height:36px;padding:0 10px;font-size:.875rem}.admin-toolbar .spacer{flex:1}.admin-action-btn{cursor:pointer;border:none;border-radius:2px;margin-right:4px;padding:4px 10px;font-family:inherit;font-size:.78rem;transition:background .15s}.admin-action-btn.edit{color:#1565c0;background:#e3f2fd}.admin-action-btn.edit:hover{background:#bbdefb}.admin-action-btn.danger{color:var(--danger-color);background:#ffebee}.admin-action-btn.danger:hover{background:#ffcdd2}.admin-action-btn.success{color:var(--success-color);background:#e8f5e9}.admin-action-btn.success:hover{background:#c8e6c9}.admin-action-btn.warning{color:var(--warning-color);background:#fff3e0}.admin-action-btn.warning:hover{background:#ffe0b2}.admin-modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.admin-modal{background:var(--surface-color);border-radius:8px;width:100%;max-width:660px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #00000040}.admin-modal-header{border-bottom:1px solid var(--border-color);background:var(--surface-color);z-index:1;justify-content:space-between;align-items:center;padding:18px 24px;display:flex;position:sticky;top:0}.admin-modal-header h3{font-size:1.05rem;font-weight:700}.admin-modal-close{color:var(--muted-color);cursor:pointer;background:0 0;border:none;padding:2px 8px;font-size:1.3rem;line-height:1}.admin-modal-close:hover{color:var(--text-color)}.admin-modal-body{padding:20px 24px}.admin-modal-footer{border-top:1px solid var(--border-color);background:var(--surface-color);justify-content:flex-end;gap:10px;padding:14px 24px;display:flex;position:sticky;bottom:0}.stop-time-row{grid-template-columns:2fr 1fr 1fr auto;align-items:end;gap:8px;margin-bottom:8px;display:grid}.stop-time-row select,.stop-time-row input{height:36px;padding:0 8px;font-size:.85rem}.admin-section-title{color:var(--text-color);margin-bottom:10px;font-size:.9rem;font-weight:700}.user-type-badge{border-radius:2px;padding:3px 10px;font-size:.75rem;font-weight:600;display:inline-block}.user-type-badge.general{color:#2e7d32;background:#e8f5e9}.user-type-badge.corporate{color:#1565c0;background:#e3f2fd}.user-type-badge.admin{color:#c62828;background:#fce4ec}.price-edit-cell{align-items:center;gap:6px;display:flex}.price-edit-cell input{width:80px;height:30px;padding:0 8px;font-size:.875rem}.expanded-detail-row td{background:#f5f7fa!important;padding:14px 20px!important}.ticket-detail-table{border-collapse:collapse;border:1px solid var(--border-color);border-radius:4px;width:100%;margin-top:8px;font-size:.85rem;overflow:hidden}.ticket-detail-table th{background:var(--table-head);text-align:left;border-bottom:1px solid var(--border-color);padding:8px 12px;font-weight:600}.ticket-detail-table td{border-bottom:1px solid var(--border-color);padding:8px 12px}.ticket-detail-table tr:last-child td{border-bottom:none}.status-select{border:1px solid var(--border-color);border-radius:2px;height:30px;margin-right:4px;padding:0 8px;font-size:.8rem}
