/* Bangla digits (০-৯) use Noto Sans Bengali; everything else stays Hind Siliguri. */
.sob-ticket-a4{width:794px;background:#fff;margin:0 auto;padding:0;box-sizing:border-box;font-family:'Sob Bn Digits','Hind Siliguri',Arial,sans-serif;color:#000}
.sob-ticket-a4-banner{position:relative;height:170px;background-image:url("data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20800%20130%22%20preserveAspectRatio%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Crect%20width%3D%22800%22%20height%3D%22130%22%20fill%3D%22%230a3d2e%22/%3E%3Cpath%20d%3D%22M0%20100%20Q200%2070%20400%2095%20T800%2085%20V130%20H0%20Z%22%20fill%3D%22%230c4d3a%22/%3E%3Cpath%20d%3D%22M0%20115%20Q220%2095%20420%20112%20T800%20105%20V130%20H0%20Z%22%20fill%3D%22%23087f5b%22/%3E%3Ccircle%20cx%3D%22620%22%20cy%3D%2235%22%20r%3D%2218%22%20fill%3D%22%23f0d896%22%20opacity%3D%220.85%22/%3E%3Crect%20x%3D%22520%22%20y%3D%2220%22%20width%3D%226%22%20height%3D%2270%22%20fill%3D%22%230c4d3a%22%20opacity%3D%220.5%22/%3E%3Ccircle%20cx%3D%22523%22%20cy%3D%2218%22%20r%3D%229%22%20fill%3D%22%230c4d3a%22%20opacity%3D%220.5%22/%3E%3Crect%20x%3D%2290%22%20y%3D%2240%22%20width%3D%228%22%20height%3D%2255%22%20fill%3D%22%230c4d3a%22%20opacity%3D%220.4%22/%3E%3Crect%20x%3D%22130%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2240%22%20fill%3D%22%230c4d3a%22%20opacity%3D%220.4%22/%3E%3Crect%20x%3D%22170%22%20y%3D%2235%22%20width%3D%228%22%20height%3D%2260%22%20fill%3D%22%230c4d3a%22%20opacity%3D%220.4%22/%3E%3Cg%20transform%3D%22translate%28300%2C60%29%22%3E%3Crect%20x%3D%220%22%20y%3D%2210%22%20width%3D%22150%22%20height%3D%2238%22%20rx%3D%228%22%20fill%3D%22%23fff%22/%3E%3Crect%20x%3D%2210%22%20y%3D%220%22%20width%3D%2260%22%20height%3D%2218%22%20rx%3D%226%22%20fill%3D%22%23fff%22/%3E%3Ccircle%20cx%3D%2230%22%20cy%3D%2252%22%20r%3D%2210%22%20fill%3D%22%2318362e%22/%3E%3Ccircle%20cx%3D%22120%22%20cy%3D%2252%22%20r%3D%2210%22%20fill%3D%22%2318362e%22/%3E%3Crect%20x%3D%2218%22%20y%3D%2218%22%20width%3D%22120%22%20height%3D%2214%22%20rx%3D%223%22%20fill%3D%22%23bfe6d5%22/%3E%3C/g%3E%3C/svg%3E");background-size:100% 100%;background-repeat:no-repeat}
.sob-ticket-a4-brandrow{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:flex-start;padding:18px 22px;height:100%;box-sizing:border-box}
.sob-ticket-a4-brand{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.sob-ticket-a4-op-info{font-size:10.5px;color:#2b4d40;line-height:1.5;max-width:280px;text-shadow:0 1px 2px rgba(255,255,255,.7)}
.sob-ticket-a4-logo{height:44px;max-width:150px;object-fit:contain;background:#fff;border-radius:8px;padding:4px 8px}
.sob-ticket-a4-trip-notice{background:#fff6e0;border:1.5px solid #f0d896;color:#7a5c00;border-radius:10px;padding:10px 14px;font-size:12px;font-weight:600;line-height:1.5;margin-top:16px;text-align:center}
.sob-ticket-a4-due-callout{background:#fdecec;border:1.5px solid #f6c9c9;color:#a51d1d;border-radius:10px;padding:12px 14px;font-size:14px;font-weight:800;text-align:center;margin-top:16px}
.sob-ticket-a4-trip-notice span{margin-right:6px}
.sob-ticket-a4-bottom-table{width:calc(100% - 44px);margin:18px 22px 0;border-top:2px solid var(--line,#dce9e3);border-collapse:collapse;padding-top:16px;table-layout:fixed}
.sob-ticket-a4-col{background:var(--paper,#f7faf8);border:1px solid var(--line,#dce9e3);border-radius:12px;padding:16px;box-sizing:border-box;vertical-align:top}
.sob-ticket-a4-col:first-child{width:33%}
.sob-ticket-a4-gap{width:20px}
.sob-ticket-a4-col:first-child{flex:0 0 33%}
.sob-ticket-a4-col:last-child{flex:1 1 auto;min-width:0}
.sob-ticket-a4-colhead{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;margin-bottom:12px;color:var(--ink,#18362e)}
.sob-ticket-a4-legend{display:flex;gap:16px;justify-content:center;margin-top:10px;font-size:10.5px;color:var(--muted,#71827c)}
.sob-ticket-a4-legend i{width:11px;height:11px;border-radius:3px;background:#fff;border:1px solid var(--line,#dce9e3);display:inline-block;margin-right:5px;vertical-align:-1px}
.sob-ticket-a4-legend i.mine{background:var(--g,#087f5b);border-color:var(--g,#087f5b)}
.sob-ticket-a4-rules-empty{color:#a3b3ac;font-size:12px;font-style:italic}
.sob-ticket-a4-rules-bullet{margin:0;padding-left:18px}
.sob-ticket-a4-rules-bullet li{font-size:10px;line-height:1.4;margin-bottom:3px}
.sob-ticket-a4-rules-plain div{font-size:10px;line-height:1.4;margin-bottom:3px}
.sob-ticket-qr-canvas{width:90px;height:90px;flex-shrink:0;border:5px solid #fff;outline:1px solid var(--line,#dce9e3);border-radius:6px;background:#fff;display:flex;align-items:center;justify-content:center}
.sob-ticket-qr-canvas img,.sob-ticket-qr-canvas canvas{display:block;width:100%!important;height:100%!important}
.sob-ticket-field-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-start;text-align:left}
.sob-ticket-field-icon{color:var(--g,#087f5b);display:inline-flex;flex-shrink:0}
.sob-ticket-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#71827c);font-weight:700;flex-shrink:0}
.sob-ticket-value{font-size:13.5px;font-weight:700;color:#000}
.sob-ticket-seat-row{display:flex;gap:4px;justify-content:center;margin-bottom:4px}
.sob-ticket-seat-cell{width:24px;height:22px;border:1px solid var(--line,#dce9e3);border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;font-size:8px;font-family:monospace;color:var(--muted,#71827c)}
.sob-ticket-seat-cell.mine{background:var(--g,#087f5b);color:#fff;border-color:var(--g,#087f5b);font-weight:800}
.sob-ticket-seat-aisle{width:10px;flex:0 0 auto}
.sob-ticket-actions{display:flex;gap:10px;max-width:520px;margin:18px auto 0}
.sob-ticket-scale-wrap{width:100%;overflow:hidden}
.sob-ticket-actions button{flex:1;padding:12px;border-radius:11px;font-weight:700}
.sob-toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(140%);background:var(--dark,#103d32);color:#fff;padding:13px 20px;border-radius:12px;font-size:13.5px;z-index:500;transition:transform .3s}
.sob-toast.show{transform:translateX(-50%) translateY(0)}
/* ================= A4 Ticket — v2 design (markup: assets/js/ticket.js) ================= */
.sob-ticket-a4{overflow:hidden;position:relative}
.sob-ticket-a4-banner{height:140px}
.sob-ticket-a4-brandrow{padding:16px 24px}
.sob-ticket-a4-top{padding:14px 24px 0}
.sob-ticket-qr-wrap{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center}
.sob-ticket-qr-caption{font-size:9.5px;color:#6b7c75;max-width:100px;line-height:1.3}
.sob-ticket-qr-canvas{width:92px;height:92px;border-radius:10px}
/* status block (top right) — three rows, identical width, perfectly stacked */
.tk-status-wrap{display:flex;flex-direction:column;align-items:stretch;gap:7px;width:170px;flex-shrink:0}
.tk-status{display:flex;align-items:center;justify-content:center;gap:8px;height:34px;padding:0 14px;border-radius:99px;background:linear-gradient(135deg,#0a8a5f,#087f5b);box-shadow:0 4px 10px -4px rgba(8,127,91,.6);box-sizing:border-box}
.tk-status-ic{width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tk-status-ic svg{display:block}
.tk-status-tx{font-size:13px;font-weight:800;letter-spacing:.08em;color:#fff;line-height:20px;display:block}
.tk-ref{display:flex;align-items:center;height:26px;border-radius:8px;background:rgba(255,255,255,.95);border:1px solid #cfe4da;overflow:hidden;font-size:12px;box-sizing:border-box}
.tk-ref span{flex:0 0 52px;text-align:center;background:#e8f5ee;color:#0a6b4c;font-weight:800;font-size:9.5px;letter-spacing:.08em;line-height:26px;height:26px}
.tk-ref b{flex:1;text-align:center;font-family:'Courier New',monospace;font-weight:800;color:#12332a;line-height:26px;letter-spacing:.04em;white-space:nowrap}
/* title */
.tk-titlerow{display:flex;justify-content:space-between;align-items:center;gap:18px}
.tk-titletx{flex:1;min-width:0}
.tk-title{font-size:26px;font-weight:800;line-height:1.3;color:#10231c}
.tk-operator{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:14px;color:#51645c;font-weight:600;line-height:26px}
.tk-op-ic{width:26px;height:26px;flex:0 0 26px;border-radius:8px;background:#e8f5ee;color:#087f5b;display:flex;align-items:center;justify-content:center}
.tk-op-ic svg{display:block}
.tk-op-name{display:block;line-height:26px}
/* journey card */
.tk-journey{margin-top:12px;border-radius:18px;padding:16px 22px 14px;color:#fff;position:relative;overflow:hidden;
  background:radial-gradient(circle at 92% -20%,rgba(255,255,255,.16),transparent 45%),radial-gradient(circle at 5% 120%,rgba(255,255,255,.10),transparent 40%),linear-gradient(135deg,#0a3d2e,#087f5b)}
.tk-route{display:flex;align-items:flex-end;gap:14px}
.tk-city{flex:0 1 auto;min-width:0}
.tk-city small{display:block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;opacity:.7;font-weight:700}
.tk-city b{display:block;font-size:24px;font-weight:800;line-height:1.3}
.tk-city.right{text-align:right}
.tk-way{flex:1;display:flex;align-items:center;gap:10px;min-width:60px;height:36px;margin-bottom:-2px}
.tk-dash{flex:1;height:0;border-top:2px dashed rgba(255,255,255,.55)}
.tk-bus{width:36px;height:36px;border-radius:50%;background:#fff;color:#087f5b;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.tk-jgrid{display:grid;grid-template-columns:1.25fr .8fr 1.2fr 1fr;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.22)}
.tk-jc{padding:0 12px;border-left:1px solid rgba(255,255,255,.22);min-width:0}
.tk-jc:first-child{padding-left:0;border-left:0}
.tk-jc small{display:block;font-size:10px;opacity:.72;font-weight:700;letter-spacing:.04em}
.tk-jc b{display:block;font-size:15px;font-weight:800;margin-top:3px;line-height:1.3}
.tk-jc.seats div{margin-top:4px;display:flex;flex-wrap:wrap;gap:5px}
.tk-seatchip{display:inline-block;background:#fff;color:#087f5b;font-weight:800;font-size:15px;font-family:'Courier New',monospace;line-height:1;padding:7px 11px;border-radius:9px}
/* tiles */
.tk-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.tk-tile{display:flex;align-items:center;gap:9px;border:1px solid #dfece5;background:#fafdfb;border-radius:12px;padding:8px 10px;min-width:0}
.tk-tile.fare{background:#eaf8f2;border-color:#bfe6d5}
.tk-tile-ic{width:28px;height:28px;border-radius:9px;background:#e1f3ea;color:#087f5b;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.tk-tile-tx{min-width:0}
.tk-tile-l{font-size:9.5px;color:#7a8b84;font-weight:700;letter-spacing:.03em;line-height:1.3}
.tk-tile-v{font-size:12.5px;font-weight:800;color:#10231c;line-height:1.3;word-break:break-word}
.tk-tile.fare .tk-tile-v{font-size:15px;color:#087f5b}
.tk-tile-v em{display:block;font-style:normal;font-size:9.5px;color:#7a8b84;font-weight:600}
.sob-ticket-a4-trip-notice{margin-top:10px;padding:9px 14px;font-size:12.5px}
.sob-ticket-a4-due-callout{margin-top:10px;padding:9px 14px}
/* seat plan + rules */
.sob-ticket-a4-bottom-table{width:calc(100% - 48px);margin:12px 24px 0;border-top:0}
.sob-ticket-a4-col{background:#fafdfb;border:1px solid #dfece5;border-radius:14px;padding:10px 14px}
.sob-ticket-a4-gap{width:14px}
.sob-ticket-a4-colhead{font-size:13.5px;margin-bottom:8px}
.tk-ch-ic{width:24px;height:24px;border-radius:8px;background:#e1f3ea;color:#087f5b;display:inline-flex;align-items:center;justify-content:center}
.sob-ticket-a4-col .sob-ticket-seat-mini{margin-top:0;padding-top:0;border-top:0}
.sob-ticket-a4-col .sob-ticket-label{display:none}
/* footer */
.tk-footer{margin:14px 24px 20px;border-radius:16px;overflow:hidden;color:#fff;position:relative;
  background:radial-gradient(circle at 100% 0,rgba(255,255,255,.14),transparent 40%),linear-gradient(135deg,#0a3d2e,#087f5b)}
.tk-footer:before{content:'';position:absolute;left:0;right:0;top:-1px;height:5px;background:repeating-linear-gradient(90deg,#37d07e 0 14px,transparent 14px 22px)}
.tk-foot-main{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 28px 16px}
.tk-thanks{font-size:20px;font-weight:800;line-height:1.3}
.tk-thanks-sub{font-size:11.5px;opacity:.8;margin-top:1px}
.tk-foot-right{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.tk-foot-label{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;opacity:.75;font-weight:700}
.tk-foot-brand{display:inline-flex;align-items:center;gap:8px;background:#fff;color:#0a3d2e;border-radius:10px;padding:5px 12px;min-height:30px}
.tk-foot-brand img{height:26px;max-width:130px;object-fit:contain;display:block}
.tk-foot-brand b{font-size:14px;font-weight:800;line-height:22px}
.tk-foot-brand b span{color:#087f5b}
.tk-foot-brand b i{font-style:normal;color:#e94c48;font-weight:700}
/* boarding landmark + delay alert */
.tk-jc-sub{display:block;font-style:normal;font-size:10.5px;font-weight:600;opacity:.78;margin-top:2px;line-height:1.3}
.tk-delay{margin-top:8px;padding:6px 14px;border-radius:12px;background:#fff1f0;border:1px solid #f3b9b3;color:#a32a1d;font-size:12.5px;font-weight:700;line-height:1.5}
/* SobSeatGrid — free-form seat layout renderer + editor */
.sob-sg{--sg-gap:8px;--sg-cell:44px;margin:0 auto 14px;max-width:100%;overflow-x:auto;text-align:center}
.sob-sg-cust{--sg-cell:min(44px,calc((100vw - 72px - (var(--sg-cols) - 1) * var(--sg-gap)) / var(--sg-cols)))}
.sob-sg-op{--sg-gap:6px;--sg-cell:34px}
.sob-sg-mini{--sg-gap:3px;--sg-cell:22px;margin-bottom:6px}
.sob-sg-deckname{font-weight:800;font-size:12.5px;color:var(--muted,#71827c);margin:6px 0 8px;letter-spacing:.02em}
.sob-sg-grid{display:inline-grid;grid-template-columns:repeat(var(--sg-cols),var(--sg-cell));grid-template-rows:repeat(var(--sg-rows),var(--sg-cell));gap:var(--sg-gap);justify-content:center;text-align:center}
.sob-sg .sob-sg-seat{width:100%;height:100%;min-width:0;padding:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;font-size:12px;line-height:1}
.sob-sg-op .sob-sg-seat{font-size:11px}
.sob-sg-mini .sob-sg-seat{font-size:8px;border-radius:4px}
.sob-sg .sob-sg-seat.sleeper{border-radius:10px;font-size:11px}
.sob-sg .sob-sg-seat.sleeper:not(.wide){writing-mode:horizontal-tb}
.sob-sg-decor{display:flex;align-items:center;justify-content:center;color:var(--muted,#71827c);font-size:10px;min-width:0}
.sob-sg-decor svg{width:70%;height:70%;max-width:26px;max-height:26px}
.sob-sg-decor b{font-size:11px}
.sob-sg-text{font-size:10.5px;font-weight:700;color:var(--muted,#71827c);line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sob-sg-mini .sob-sg-decor svg{width:80%;height:80%}
.sob-sg-prev:disabled{opacity:1;cursor:default}
/* editor */
.sob-sge{text-align:left;font-size:13px}
.sob-sge-row{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-bottom:10px}
.sob-sge label{display:flex;flex-direction:column;gap:3px;font-weight:700;font-size:12px;color:#425}
.sob-sge label.chk{flex-direction:row;align-items:center;gap:6px;font-weight:600}
.sob-sge input:not([type=checkbox]){height:36px;border:1.5px solid var(--line,#dce9e3);border-radius:8px;padding:0 10px;width:110px;font-size:13px;box-sizing:border-box}
.sob-sge-box{background:var(--mint,#eaf8f2);border:1px dashed #bfe6d5;border-radius:12px;padding:12px;margin-bottom:12px}
.sob-sge-hint{color:var(--muted,#71827c);font-size:11.5px;font-weight:500}
.sob-sge-quick{margin:10px 0 0}
.sob-sge-btn{height:36px;padding:0 14px;border:0;border-radius:8px;background:var(--g,#087f5b);color:#fff;font-weight:700;cursor:pointer;font-size:13px}
.sob-sge-btn.ghost{background:#fff;color:var(--g,#087f5b);border:1.5px solid var(--g,#087f5b)}
.sob-sge-btn.danger{background:#fff;color:#c0392b;border:1.5px solid #f3b4ae}
.sob-sge-tab{border:1.5px solid var(--line,#dce9e3);background:#fff;border-radius:99px;padding:6px 14px;font-weight:700;cursor:pointer;font-size:12.5px}
.sob-sge-tab.on{background:var(--g,#087f5b);color:#fff;border-color:var(--g,#087f5b)}
.sob-sge-tab.add{border-style:dashed;color:var(--g,#087f5b)}
.sob-sge-tools{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px;margin-bottom:12px}
.sob-sge-tool{border:1.5px solid var(--line,#dce9e3);background:#fff;border-radius:10px;padding:7px 4px;cursor:pointer;font-size:11.5px;font-weight:700;display:flex;flex-direction:column;align-items:center;gap:2px}
.sob-sge-tool span{font-size:18px}
.sob-sge-tool.on{border-color:var(--g,#087f5b);background:var(--mint,#eaf8f2);color:var(--g,#087f5b)}
.sob-sge-canvaswrap{overflow:auto;max-width:100%;background:#f7faf8;border:1px solid var(--line,#dce9e3);border-radius:12px;padding:12px;margin-bottom:10px}
.sob-sge-canvas{--c:38px;display:inline-grid;grid-template-columns:repeat(var(--sg-cols),var(--c));grid-template-rows:repeat(var(--sg-rows),var(--c));gap:4px;user-select:none;-webkit-user-select:none}
.sob-sge-cell{border:1.5px dashed #cfe0d8;border-radius:7px;background:#fff}
.sob-sge-item{border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:11px;pointer-events:auto;border:1.5px solid #bad5ca;background:#fff;color:var(--g,#087f5b);z-index:1;overflow:hidden}
.sob-sge-item.t-sleeper{background:#eef6ff;border-color:#a9c9ee;color:#255b9c}
.sob-sge-item.t-driver,.sob-sge-item.t-door,.sob-sge-item.t-wc,.sob-sge-item.t-stairs,.sob-sge-item.t-text{background:#f1f3f4;border-color:#d8dde0;color:#6b7a75}
.sob-sge-item svg{width:22px;height:22px}
.sob-sge-item.sel{outline:3px solid #f5a623;outline-offset:1px}
.sob-sge-sel{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;background:#fff8df;border:1px solid #f3e3a8;border-radius:10px;padding:10px;margin-bottom:10px}
.sob-sge-count{margin:8px 0;font-size:13px}
.sob-sge-prevtitle{font-weight:800;margin:12px 0 8px}
.sob-sge-preview{background:#fff;border:1px solid var(--line,#dce9e3);border-radius:14px;padding:14px 8px;text-align:center}
.sob-sge-legend{display:flex;justify-content:center;gap:14px;font-size:11.5px;margin-bottom:10px;color:#425}
.sob-sge-legend .sw{display:inline-block;width:12px;height:12px;border-radius:4px;border:1px solid rgba(0,0,0,.1);margin-right:5px;vertical-align:-1px}
.sob-sge-legend .sw.available{background:#fff;border-color:#bad5ca}.sob-sge-legend .sw.taken{background:#e5484d}.sob-sge-legend .sw.selected{background:var(--g,#087f5b)}
.sob-sge-modal{position:fixed;inset:0;background:rgba(9,26,17,.55);z-index:99999;display:flex;align-items:center;justify-content:center;padding:16px}
.sob-sge-modal>div{background:#fff;border-radius:16px;max-width:560px;width:100%;max-height:90vh;overflow:auto;padding:18px;position:relative}
.sob-sge-modal h3{margin:0 0 10px;font-size:16px}
.sob-sge-x{position:absolute;top:10px;right:12px;border:0;background:#f1f3f4;border-radius:50%;width:30px;height:30px;cursor:pointer;font-size:16px}
.sob-sg-op .sob-op-seat{display:flex;align-items:center;justify-content:center}
.sob-agg-lookup-field,#sobAggLookup>.sob-agg-search-btn{max-width:420px}
#sobAggLookup .sob-ticket-actions{max-width:794px}
.sob-agg-tk-item{margin-bottom:26px}
