
:root{--navy:#081a33;--navy2:#102b50;--accent:#16c7a1;--bg:#f3f6fa;--card:#fff;--text:#102035;--muted:#64748b;--border:#dbe4ef;--danger:#d94152;--warning:#f0a126;--blue:#2c7be5;--shadow:0 12px 35px rgba(8,26,51,.09);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text)}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:var(--bg);min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.sidebar{position:fixed;left:0;top:0;bottom:0;width:250px;background:var(--navy);color:#fff;padding:20px 14px;display:flex;flex-direction:column;z-index:30}.brand{display:flex;align-items:center;gap:12px;padding:4px 8px 24px}.brand strong{display:block}.brand small{display:block;color:#9fb0c7;margin-top:3px}.brand-mark{width:58px;height:58px;border-radius:18px;background:linear-gradient(145deg,var(--accent),#42e4c4);display:grid;place-items:center;color:var(--navy);font-weight:900;font-size:22px;box-shadow:0 10px 30px rgba(22,199,161,.3)}.brand-mark.small{width:42px;height:42px;border-radius:13px;font-size:15px}.sidebar nav{display:grid;gap:5px;overflow:auto}.nav-item{display:flex;align-items:center;gap:12px;border-radius:12px;padding:12px 13px;color:#bfcbe0;transition:.15s}.nav-item:hover,.nav-item.active{background:rgba(255,255,255,.1);color:#fff}.nav-item span{width:24px;text-align:center;font-size:19px}.nav-item b{font-size:14px}.logout{margin-top:auto}.main{margin-left:250px;padding:28px;max-width:1600px}.mobile-header,.bottom-nav{display:none}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:20px}.page-head h1{font-size:27px;line-height:1.15;margin:4px 0}.page-head p{margin:0;color:var(--muted)}.page-head a{color:var(--blue);font-size:14px}.sticky-head{position:sticky;top:0;background:rgba(243,246,250,.94);backdrop-filter:blur(12px);padding:10px 0;z-index:8}.btn{border:0;border-radius:11px;padding:11px 15px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px}.btn.primary{background:var(--accent);color:var(--navy)}.btn.ghost{background:#e9eff6;color:var(--navy)}.btn.danger{background:#fee4e7;color:#9f1c2a}.btn.full{width:100%}.icon-btn{border:0;background:transparent;font-size:24px}.card{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:20px;box-shadow:var(--shadow);margin-bottom:20px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.card h2,.card-head h2{margin:0;font-size:18px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.metric-grid.six{grid-template-columns:repeat(6,1fr)}.metric{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:17px;box-shadow:var(--shadow)}.metric span{display:block;color:var(--muted);font-size:13px;margin-bottom:8px}.metric strong{font-size:24px}.trip-list{display:grid}.trip-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:15px 2px;border-top:1px solid var(--border)}.trip-row:first-child{border-top:0}.trip-row strong,.trip-row small{display:block}.trip-row small{color:var(--muted);margin-top:5px}.trip-progress{min-width:105px;text-align:right}.trip-progress div{width:100%;height:6px;background:#e5ebf2;border-radius:9px;margin-top:6px;overflow:hidden}.trip-progress i{display:block;height:100%;background:var(--accent)}.badge{display:inline-flex;border-radius:999px;padding:4px 9px;background:#edf2f7;color:#42526a;font-size:11px;font-weight:800}.status-active,.status-sold,.status-paid{background:#dff8f1;color:#087c63}.status-booked,.status-partial,.status-open{background:#fff0d7;color:#a06100}.status-cancelled,.status-refunded,.status-inactive,.status-expired{background:#fde5e8;color:#aa2635}.table-card{overflow:auto;padding:0}.table-card .card-head{padding:18px 20px 0}table{width:100%;border-collapse:collapse;min-width:650px}th,td{text-align:left;padding:14px 18px;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#f8fafc}td strong,td small{display:block}td small{margin-top:5px;color:var(--muted)}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.bus-card,.route-card{background:#fff;border:1px solid var(--border);border-radius:17px;padding:18px;box-shadow:var(--shadow)}.bus-card{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center}.bus-card h3,.route-card h3{margin:0 0 6px}.bus-card p,.route-card p{margin:0;color:var(--muted)}.bus-icon{width:50px;height:50px;background:#e2f9f4;color:#087c63;border-radius:14px;display:grid;place-items:center;font-size:24px}.inline{display:flex;gap:8px;align-items:center;margin-top:10px;font-size:12px;color:var(--muted)}.route-card span{font-size:12px;color:var(--muted)}.route-card h3{font-size:18px;margin-top:10px}.trip-cards{display:grid;gap:12px}.trip-card{background:#fff;border:1px solid var(--border);border-radius:17px;padding:15px;display:flex;gap:14px;align-items:center;box-shadow:var(--shadow)}.date-tile{width:58px;height:58px;border-radius:14px;background:var(--navy);color:#fff;display:grid;place-content:center;text-align:center}.date-tile b{font-size:20px}.date-tile span{font-size:11px;color:#b6c4d8;text-transform:uppercase}.grow{flex:1}.trip-card h3{margin:0 0 5px}.trip-card p{margin:0;color:var(--muted);font-size:13px}.occupancy{text-align:right}.occupancy strong,.occupancy small{display:block}.occupancy small{color:var(--muted);margin-top:5px}.seat-workspace{display:grid;grid-template-columns:minmax(360px,1fr) 390px;gap:20px;align-items:start}.booking-panel{position:sticky;top:110px}.legend{display:flex;gap:13px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:16px}.legend i{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:4px;vertical-align:-1px}.driver{margin-left:auto;width:90px;padding:9px;text-align:center;border-radius:9px;background:#dbe4ef;color:#53657c;font-size:12px;margin-bottom:20px}.seat-grid{display:grid;gap:12px;max-width:520px;margin:auto}.seat-grid.cols-2{grid-template-columns:repeat(2,1fr);column-gap:80px}.seat-grid.cols-3{grid-template-columns:repeat(3,1fr)}.seat-grid.cols-3>*:nth-child(3n+2){margin-right:42px}.seat-grid.cols-4{grid-template-columns:repeat(4,1fr)}.seat-grid.cols-4>*:nth-child(4n+2){margin-right:42px}.seat{border:0;border-radius:12px;display:grid;place-items:center;min-height:48px;font-weight:900;box-shadow:inset 0 -3px 0 rgba(0,0,0,.08);transition:.12s}.seat.available,.legend .available{background:#e3f9f4;color:#087a62}.seat.selected{background:var(--navy);color:#fff;transform:scale(1.05)}.seat.booked,.legend .booked{background:#ffe7bc;color:#985c00}.seat.sold,.legend .sold{background:#ffdce1;color:#a32838}.seat.blocked,.legend .blocked{background:#d8dee8;color:#758195}.seat[disabled]{cursor:not-allowed}.seat-layout-admin form{margin:0}.selected-summary{padding:13px;border-radius:11px;background:#eef4fa;margin:15px 0;color:#42526a}.stack{display:grid;gap:13px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:11px}label{display:grid;gap:6px;color:#495970;font-size:13px;font-weight:700}input,select,textarea{width:100%;border:1px solid #ccd7e4;background:#fff;border-radius:10px;padding:11px 12px;outline:0;color:var(--text)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(22,199,161,.14)}textarea{resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid h3,.span-2{grid-column:1/-1}.check{display:flex;align-items:center;gap:8px}.check input{width:auto}.check-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}fieldset{border:1px solid var(--border);border-radius:12px;padding:12px}legend{font-size:13px;font-weight:700}.dashboard-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px}.counter-bars>div,.expense-list>div{display:flex;justify-content:space-between;gap:15px;padding:13px 0;border-top:1px solid var(--border)}.counter-bars>div:first-child,.expense-list>div:first-child{border-top:0}.counter-bars span b,.counter-bars span small,.expense-list span b,.expense-list span small{display:block}.counter-bars small,.expense-list small{color:var(--muted);margin-top:4px}.empty{text-align:center;padding:30px;color:var(--muted)}dialog{border:0;border-radius:18px;padding:0;box-shadow:0 30px 90px rgba(0,0,0,.3);width:min(520px,calc(100% - 24px))}dialog::backdrop{background:rgba(5,18,35,.65);backdrop-filter:blur(3px)}.modal-form{padding:20px;display:grid;gap:14px}.modal-form.wide{width:min(760px,calc(100vw - 24px))}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{margin:0}.dialog-head button{border:0;background:#eef2f7;width:34px;height:34px;border-radius:10px;font-size:21px}.alert{padding:13px 15px;border-radius:11px;margin-bottom:15px}.alert.success{background:#dcf7ef;color:#08785f}.alert.error{background:#fde5e8;color:#a22635}.auth-body{background:radial-gradient(circle at top right,#153b6b,var(--navy) 55%);min-height:100vh;display:grid;place-items:center;padding:18px}.login-card,.install-card{width:min(430px,100%);background:#fff;border-radius:24px;padding:30px;box-shadow:0 30px 100px rgba(0,0,0,.35)}.install-card{width:min(760px,100%)}.login-card .brand-mark{margin:auto}.login-card h1,.install-card h1{text-align:center;margin:16px 0 4px}.login-card>p,.install-card>p{text-align:center}.muted{color:var(--muted)}.tiny{font-size:11px}.offline-banner{display:none;background:#fff0d7;color:#995a00;border-radius:10px;padding:10px 14px;margin-bottom:14px}.install-prompt{position:fixed;right:20px;bottom:20px;background:#fff;border:1px solid var(--border);border-radius:18px;padding:13px;display:flex;align-items:center;gap:12px;box-shadow:0 25px 80px rgba(0,0,0,.2);z-index:99;max-width:430px}.install-prompt[hidden]{display:none}.install-prompt p{margin:3px 0 0;color:var(--muted);font-size:12px}.app-icon{width:46px;height:46px;border-radius:12px;background:var(--navy);color:var(--accent);display:grid;place-items:center;font-weight:900}.ticket-page{background:#e7edf5;padding:18px}.ticket-actions{max-width:900px;margin:0 auto 18px;display:flex;justify-content:space-between;gap:10px}.ticket-actions>div{display:flex;gap:8px;flex-wrap:wrap}.thermal-ticket{background:#fff;margin:auto;padding:14px;color:#000;box-shadow:0 15px 50px rgba(0,0,0,.15);font-family:Arial,sans-serif}.thermal-ticket.width-58{width:58mm}.thermal-ticket.width-80{width:80mm}.ticket-brand{text-align:center;border-bottom:1px dashed #333;padding-bottom:10px}.ticket-brand .brand-mark{margin:auto}.ticket-brand h1{font-size:18px;margin:7px 0 2px}.ticket-brand p{font-size:10px;margin:0}.ticket-number{text-align:center;padding:10px 0}.ticket-number span,.ticket-number strong{display:block}.ticket-number strong{font-size:15px;margin:2px}.route-line{display:flex;justify-content:space-between;align-items:center;border-top:1px dashed #333;border-bottom:1px dashed #333;padding:10px 0}.route-line div{text-align:center}.route-line small,.ticket-grid small{display:block;font-size:9px;color:#555}.route-line b{font-size:12px}.ticket-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:11px 0}.ticket-grid b{font-size:11px}.ticket-grid .big-seats{font-size:17px}.fare-lines{border-top:1px dashed #333;border-bottom:1px dashed #333;padding:8px 0}.fare-lines div{display:flex;justify-content:space-between;font-size:10px;margin:4px 0}.fare-lines .total{font-size:13px}.ticket-meta,.ticket-footer{text-align:center;font-size:9px}.ticket-meta p{margin:4px 0}.cancel-form{max-width:80mm;margin:18px auto;text-align:center}.avatar{width:34px;height:34px;border-radius:10px;background:var(--accent);display:grid;place-items:center;color:var(--navy);font-weight:900}

.seat.occupied{cursor:pointer}.seat-info-dialog{width:min(520px,calc(100% - 24px))}.seat-detail-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px;border-radius:12px;background:#eef4fa}.seat-detail-title strong{font-size:18px}.seat-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}.seat-detail-grid>div{border:1px solid var(--border);border-radius:11px;padding:11px}.seat-detail-grid dt{font-size:11px;color:var(--muted);margin-bottom:5px}.seat-detail-grid dd{margin:0;font-weight:800;overflow-wrap:anywhere}.page-actions,.report-filter{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.report-filter label{min-width:145px}.metric-profit{border-color:#98e2c9;background:#f0fff9}.metric-profit strong,.finance-result.profit{color:#08785f}.metric-loss{border-color:#f3afb8;background:#fff6f7}.metric-loss strong,.finance-result.loss{color:#b42339}.finance-result{font-weight:900;white-space:nowrap}
@media(max-width:1100px){.metric-grid.six{grid-template-columns:repeat(3,1fr)}.card-grid{grid-template-columns:repeat(2,1fr)}.seat-workspace{grid-template-columns:1fr 360px}}
@media(max-width:780px){body{padding-bottom:72px}.sidebar{transform:translateX(-105%);transition:.2s;box-shadow:20px 0 70px rgba(0,0,0,.25)}.sidebar.open{transform:translateX(0)}.mobile-header{height:58px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 14px;position:sticky;top:0;z-index:20}.main{margin:0;padding:15px}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--border);z-index:25;padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -10px 30px rgba(8,26,51,.08)}.bottom-nav .nav-item{flex:1;display:grid;place-items:center;gap:2px;border-radius:0;padding:7px 2px;color:#65768b}.bottom-nav .nav-item.active{background:#e5f9f4;color:#087a62}.bottom-nav .nav-item span{font-size:18px}.bottom-nav .nav-item b{font-size:10px}.page-head{align-items:center}.page-head h1{font-size:21px}.metric-grid,.metric-grid.six{grid-template-columns:repeat(2,1fr);gap:10px}.metric{padding:14px}.metric strong{font-size:19px}.card{border-radius:15px;padding:15px}.card-grid{grid-template-columns:1fr}.bus-card{grid-template-columns:auto 1fr}.bus-card .btn{grid-column:1/-1}.seat-workspace{grid-template-columns:1fr}.booking-panel{position:static}.seat-panel{padding:12px}.seat-grid{gap:9px}.seat-grid.cols-2{column-gap:58px}.seat{min-height:46px}.form-grid{grid-template-columns:1fr}.span-2{grid-column:1}.dashboard-columns{grid-template-columns:1fr}.trip-card{padding:12px}.trip-card p{font-size:11px}.occupancy small{font-size:10px}.install-prompt{left:10px;right:10px;bottom:76px}.table-card{margin-left:-15px;margin-right:-15px;border-radius:0}.ticket-actions{display:grid}.ticket-actions>div{display:grid;grid-template-columns:repeat(2,1fr)}dialog{max-height:92vh;overflow:auto}.two-col{grid-template-columns:1fr}.seat-detail-grid{grid-template-columns:1fr}.report-filter{width:100%;display:grid;grid-template-columns:1fr 1fr}.report-filter .btn{grid-column:1/-1}.page-actions{width:100%}.page-actions .btn{flex:1}.thermal-ticket{box-shadow:none}.ticket-page{padding:8px}.check-grid{grid-template-columns:1fr}}
@media print{.no-print,.sidebar,.mobile-header,.bottom-nav,.install-prompt,.page-head button{display:none!important}body,.ticket-page,.main{background:#fff!important;padding:0!important;margin:0!important}.card,.metric,.thermal-ticket{box-shadow:none!important;border-color:#bbb}.thermal-ticket{margin:0 auto}.table-card{overflow:visible}table{min-width:0;font-size:10px}}


.seat-popup-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding-top:4px}
.seat-popup-actions[hidden]{display:none!important}
.seat-popup-actions form{margin:0}
.ticket-booking-actions{width:min(80mm,100%);margin:18px auto;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ticket-booking-actions form{margin:0}
.lang-bn,.lang-bn .thermal-ticket{font-family:"Noto Sans Bengali","Hind Siliguri","SolaimanLipi","Kalpurush",Arial,sans-serif}
.lang-bn .ticket-brand h1{line-height:1.35}
.lang-bn .ticket-grid b,.lang-bn .route-line b{line-height:1.45}
@media(max-width:540px){.seat-popup-actions,.ticket-booking-actions{grid-template-columns:1fr}}
