*{box-sizing:border-box}body{margin:0;background:#f4f7fb;color:#172033;font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif}a{text-decoration:none;color:inherit}input,select,textarea{font:inherit;border:1px solid #dfe6ed;border-radius:10px;padding:10px;background:#fff;width:100%}textarea{min-height:70px}label{font-size:12px;font-weight:800;display:block;margin-bottom:10px}h1{font-size:22px;margin:4px 0}h2{font-size:18px;margin:3px 0 14px}.muted{color:#718096;font-size:12px}.eyebrow{font-size:10px;letter-spacing:1.5px;font-weight:900;opacity:.68}.topbar{background:linear-gradient(135deg,#064e49,#0f766e);color:#fff;padding:16px max(16px,calc((100% - 1180px)/2));display:flex;justify-content:space-between;gap:12px;align-items:center}.nav-actions,.row-actions,.bus-tabs{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.admin-name{font-size:12px;opacity:.85}.tour-switch select{width:auto;min-width:170px;padding:7px}.btn{border:0;border-radius:10px;padding:9px 13px;font-weight:800;display:inline-block;cursor:pointer}.primary{background:#0f766e;color:#fff}.danger{background:#dc2626;color:#fff}.ghost{background:#ffffff18;color:#fff;border:1px solid #ffffff35}.secondary{background:#e9eef3;color:#243244}.wide{width:100%;text-align:center}.tabs{max-width:1180px;margin:auto;padding:10px 16px;display:flex;gap:6px;overflow:auto}.tabs a{padding:9px 12px;border-radius:9px;font-size:13px;font-weight:800;white-space:nowrap}.tabs a:hover{background:#e7eeef}.wrap{max-width:1180px;margin:auto;padding:10px 16px 70px}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px}.stat,.card{background:#fff;border:1px solid #e2e8f0;border-radius:16px}.stat{padding:12px}.stat span{font-size:11px;color:#718096}.stat b{display:block;font-size:19px;margin-top:3px}.card{padding:16px;margin-bottom:16px}.head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.legend{display:flex;gap:16px;font-size:12px;color:#718096;margin:8px 0 14px}.dot{display:inline-block;width:12px;height:12px;border-radius:50%;vertical-align:-2px;margin-right:4px}.green{background:#22c55e}.red{background:#ef4444}.orange{background:#f97316}.bus-tab{border:1px solid #dbe3ea;background:#fff;border-radius:10px;padding:9px 13px;font-weight:900;cursor:pointer}.bus-tab.active{background:#0f766e;color:#fff}.bus-tab small{opacity:.7}.seat-map{display:grid;grid-template-columns:1fr 1fr 26px 1fr 1fr 1fr;gap:8px;max-width:720px;margin:auto}.seat{border:0;border-radius:11px;min-height:50px;background:#dcfce7;color:#166534;font-weight:900;position:relative;cursor:pointer}.seat.booked{background:#fee2e2;color:#991b1b}.seat.due{background:#ffedd5;color:#9a3412}.seat small{display:block;font-size:9px;font-weight:600;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aisle{min-height:1px}.driver{grid-column:1/-1;width:110px;margin:auto;background:#172033;color:#fff;border-radius:8px;padding:7px;text-align:center;font-size:10px;font-weight:900}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:850px}th,td{padding:9px;border-bottom:1px solid #e5eaf0;text-align:left;font-size:12px}th{font-size:10px;color:#718096}.badge{display:inline-block;border-radius:999px;padding:4px 8px;background:#ecfdf5;color:#047857;font-size:10px;font-weight:900}.badge.due{background:#fff7ed;color:#c2410c}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.full{grid-column:1/-1}.room-card{border:1px solid #e5eaf0;border-radius:12px;padding:12px}.alert{padding:10px;border-radius:10px;background:#ecfdf5;margin-bottom:12px;font-size:13px}.alert.danger{background:#fee2e2;color:#991b1b}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(420px,100%);background:#fff;border:1px solid #e2e8f0;border-radius:20px;padding:24px;box-shadow:0 15px 45px #0f172a18}.brand{font-weight:900;letter-spacing:1.6px;color:#0f766e;font-size:13px}.hint{font-size:11px;color:#718096;margin-top:15px}.pay-inline{display:grid;grid-template-columns:100px 100px 130px auto;gap:5px}.check{display:flex;gap:8px;align-items:center}.check input{width:auto}.print-sheet .card{border:0}.ticket{max-width:760px;margin:auto}.no-print{display:block}@media(max-width:850px){.stats{grid-template-columns:repeat(3,1fr)}.grid2{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.nav-actions{width:100%}.tour-switch select{width:100%}}@media(max-width:520px){.stats{grid-template-columns:1fr 1fr}.formgrid{grid-template-columns:1fr}.full{grid-column:auto}.seat-map{gap:5px}.seat{min-height:44px;font-size:11px}.tabs{padding-left:8px}.topbar{padding:14px}.wrap{padding:8px}.grid3{grid-template-columns:1fr}.pay-inline{grid-template-columns:1fr 1fr}.pay-inline button{grid-column:1/-1}}@media print{body{background:#fff}.topbar,.tabs,.no-print{display:none!important}.wrap{padding:0}.card{border:0;box-shadow:none}.stats{grid-template-columns:repeat(3,1fr)}}

.contact-row{border:1px solid #e2e8f0;border-radius:14px;padding:12px;margin:10px 0;background:#f8fafc}.contact-row .btn{margin-top:4px}


/* GMJS V3.2 — Lively Green & White UI refresh */
:root{
 --gm-green:#39c957;--gm-green-dark:#159447;--gm-green-deep:#08783d;
 --gm-green-soft:#eaffef;--gm-lime:#8bea70;--gm-ink:#123025;
 --gm-muted:#6d8177;--gm-bg:#f5faf7;--gm-card:#fff;--gm-line:#e1eee6;
 --gm-red:#ef4b5f;--gm-red-soft:#fff0f2;--gm-orange:#f59e0b;--gm-orange-soft:#fff8e8;
 --gm-blue:#3182ce;--gm-blue-soft:#eef6ff;
 --gm-shadow:0 12px 35px rgba(20,92,50,.08);
}
body{background:linear-gradient(180deg,#f8fcf9 0,#f3f8f5 100%);color:var(--gm-ink)}
.topbar{background:linear-gradient(135deg,var(--gm-green-deep),var(--gm-green));box-shadow:0 8px 30px rgba(8,120,61,.20)}
.topbar h1{letter-spacing:-.35px}.eyebrow{color:inherit}
.tabs{background:#fff;border-bottom:1px solid var(--gm-line);box-shadow:0 2px 12px rgba(20,92,50,.04)}
.tabs a{color:#426254}.tabs a:hover,.tabs a.active{background:var(--gm-green-soft);color:var(--gm-green-deep)}
.card,.stat{border:1px solid var(--gm-line);box-shadow:var(--gm-shadow)}
.stat{position:relative;overflow:hidden}.stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--gm-green)}
.btn.primary{background:linear-gradient(135deg,var(--gm-green),var(--gm-green-dark));box-shadow:0 5px 15px rgba(57,201,87,.18)}
.btn.primary:hover{filter:brightness(.96);transform:translateY(-1px)}
input:focus,select:focus,textarea:focus{border-color:#65d97c;box-shadow:0 0 0 3px rgba(57,201,87,.14);outline:none}
.seat-map{background:#fbfefc;border:1px solid var(--gm-line);border-radius:22px;padding:18px;box-shadow:inset 0 1px 0 #fff}
.driver{background:linear-gradient(135deg,#123025,#24543b);border-radius:12px;box-shadow:0 5px 12px rgba(18,48,37,.16)}
.seat{
 background:linear-gradient(145deg,#f2fff5,#dcfae4);color:#14823b;
 box-shadow:inset 0 0 0 1px #9be6ae,0 4px 10px rgba(34,139,68,.08);
 transition:transform .15s,box-shadow .15s,filter .15s;
}
.seat:hover{transform:translateY(-2px);box-shadow:0 8px 16px rgba(34,139,68,.16);filter:brightness(.99)}
.seat.booked{background:linear-gradient(145deg,#fff4f5,#ffdfe3);color:#bd2940;box-shadow:inset 0 0 0 1px #f4a2ae,0 4px 10px rgba(239,75,95,.08)}
.seat.due,.seat.pending{background:linear-gradient(145deg,#fffaf0,#ffedc2);color:#b86a00;box-shadow:inset 0 0 0 1px #f4c96f,0 4px 10px rgba(245,158,11,.10)}
.seat:after{content:"";position:absolute;right:7px;top:7px;width:6px;height:6px;border-radius:50%;background:#49d96a}
.seat.booked:after{background:var(--gm-red)}.seat.due:after,.seat.pending:after{background:var(--gm-orange)}
.legend .dot{box-shadow:0 0 0 3px rgba(0,0,0,.025)}
.badge{background:var(--gm-green-soft);color:var(--gm-green-deep)}
.badge.due{background:var(--gm-orange-soft);color:#a75b00}
.alert{border:1px solid #bdeec9;background:var(--gm-green-soft);color:#176d35}
.alert.danger{border-color:#f4bbc3;background:var(--gm-red-soft);color:#a61d31}
.table-wrap table tbody tr:hover{background:#f7fcf8}
.room-card{border-color:var(--gm-line);background:linear-gradient(180deg,#fff,#fbfefc);transition:.15s}
.room-card:hover{transform:translateY(-1px);box-shadow:var(--gm-shadow)}
.login-page{background:radial-gradient(circle at 50% 0,#e9ffe9 0,#f5faf7 45%,#eef7f1 100%)}
.login-card{border-color:#d6eadc;box-shadow:0 25px 60px rgba(20,92,50,.12)}
.brand{color:var(--gm-green-deep)}
.toast{background:#123025;border-left:4px solid var(--gm-green);box-shadow:0 10px 25px rgba(0,0,0,.16)}
@media(max-width:520px){
 .seat-map{padding:11px;border-radius:16px;gap:5px}
 .seat{min-height:48px;border-radius:10px}
 .seat small{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2px}
}

/* Passenger dropdown polish */
select{cursor:pointer;appearance:auto}
/* GMJS live update: responsive seat map + tables + room guests */
.seat-map{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 16px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);width:100%;max-width:760px;overflow:hidden}
.seat{min-width:0;overflow:hidden;padding:7px 4px}
.responsive-table{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.responsive-table table{min-width:760px}
.guest-list{margin-top:12px;border-top:1px solid var(--gm-line);padding-top:4px}.guest-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 0;border-bottom:1px dashed var(--gm-line)}.guest-row:last-child{border-bottom:0}.room-actions{margin-top:10px;padding-top:10px;border-top:1px solid var(--gm-line)}
.nowrap{white-space:nowrap}
@media(max-width:650px){
 .seat-map{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 12px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);gap:4px;padding:9px}
 .seat{min-height:50px;font-size:10px;border-radius:9px}.seat small{font-size:8px;max-width:100%}.driver{width:86px;font-size:9px;padding:6px}
 .responsive-table table{min-width:0}.responsive-table table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:100%}.responsive-table thead{display:none}.responsive-table tr{background:#fff;border:1px solid var(--gm-line);border-radius:12px;margin-bottom:10px;padding:7px}.responsive-table td{display:flex;justify-content:space-between;align-items:center;gap:12px;border:0;padding:7px 4px;font-size:12px}.responsive-table td:before{content:attr(data-label);font-size:10px;font-weight:900;color:var(--gm-muted);text-transform:uppercase;flex:0 0 82px}.responsive-table td>input,.responsive-table td>select,.responsive-table td>textarea{max-width:68%}.pay-inline{grid-template-columns:1fr 1fr}.pay-inline input,.pay-inline select{min-width:0}.room-actions{align-items:flex-start}
}
@media(max-width:380px){.seat-map{gap:3px;padding:7px}.seat{min-height:46px;font-size:9px}.seat small{font-size:7px}.driver{width:76px}}

.filterbar{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:10px 0}.filter-form{display:flex;gap:8px;flex:1;min-width:280px}.filter-form select{max-width:230px}.qr-small{width:54px;height:54px;display:block}.qr-ticket{width:150px;height:150px;object-fit:contain}.ticket-due{font-size:22px;font-weight:900;color:#b86a00}@media(max-width:520px){.filter-form{flex-direction:column}.filter-form select{max-width:none}.filterbar .btn{width:100%;text-align:center}}


/* GMJS — stable dashboard seat-map layout */
#seatMap.seat-map{
  display:flex;
  flex-direction:column;
  gap:8px;
  width:100%;
  max-width:820px;
  margin:0 auto;
  padding:18px;
  overflow-x:hidden;
}

#seatMap .driver{
  flex:0 0 auto;
  width:130px;
  margin:0 auto 8px;
}

#seatMap .seat-row{
  display:grid;
  align-items:stretch;
  width:100%;
  gap:10px;
}

#seatMap .normal-seat-row{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) 34px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);
}

#seatMap .front-single-row{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) 34px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);
}

#seatMap .front-single-seat{
  grid-column:1;
}

#seatMap .seat-row-aisle{
  min-width:0;
}

#seatMap .seat{
  width:100%;
  min-width:0;
  min-height:58px;
  padding:9px 8px 8px;
  border-radius:13px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  line-height:1.1;
}

#seatMap .seat strong{
  display:block;
  font-size:15px;
  line-height:1;
  white-space:nowrap;
}

#seatMap .seat small{
  display:block;
  width:100%;
  max-width:100%;
  margin-top:5px;
  font-size:9px;
  line-height:1.15;
  font-weight:700;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  text-align:center;
}

#seatMap .seat.checked-in{
  background:linear-gradient(145deg,#eff6ff,#dbeafe)!important;
  color:#1d4ed8!important;
  box-shadow:inset 0 0 0 1px #93c5fd,0 4px 10px rgba(37,99,235,.10)!important;
}

#seatMap .seat.checked-in:after{
  background:#2563eb!important;
}

@media(max-width:700px){
  #seatMap.seat-map{
    padding:12px;
    gap:7px;
    border-radius:18px;
  }

  #seatMap .seat-row{
    gap:7px;
  }

  #seatMap .normal-seat-row,
  #seatMap .front-single-row{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) 22px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);
  }

  #seatMap .seat{
    min-height:54px;
    padding:8px 4px;
    border-radius:11px;
  }

  #seatMap .seat strong{
    font-size:13px;
  }

  #seatMap .seat small{
    font-size:8px;
  }
}

@media(max-width:430px){
  #seatMap.seat-map{
    padding:9px;
    gap:6px;
  }

  #seatMap .seat-row{
    gap:5px;
  }

  #seatMap .normal-seat-row,
  #seatMap .front-single-row{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) 16px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);
  }

  #seatMap .seat{
    min-height:50px;
    padding:7px 3px;
  }

  #seatMap .seat strong{
    font-size:12px;
  }

  #seatMap .seat small{
    font-size:7px;
    margin-top:4px;
  }

  #seatMap .driver{
    width:100px;
    font-size:9px;
  }
}


/* GMJS — drag & drop seat swap */
#seatMap .seat[draggable="true"]{
  cursor:grab;
}
#seatMap .seat[draggable="true"]:active{
  cursor:grabbing;
}
#seatMap .seat.dragging{
  opacity:.45;
  transform:scale(.97);
}
#seatMap .seat.drag-over{
  outline:3px solid #39c957;
  outline-offset:2px;
  transform:translateY(-2px) scale(1.02);
  box-shadow:0 10px 24px rgba(57,201,87,.24);
}
#seatMap .seat.drag-over.booked,
#seatMap .seat.drag-over.due,
#seatMap .seat.drag-over.checked-in{
  outline-color:#39c957;
}


/* GMJS drag/drop hint */
#seatMap .seat[draggable="true"]{
  cursor:grab;
  user-select:none;
}
#seatMap .seat[draggable="true"]:active{cursor:grabbing}
#seatMap .seat.dragging{
  opacity:.45!important;
  transform:scale(.97)!important;
}
#seatMap .seat.drag-over{
  outline:3px solid #39c957!important;
  outline-offset:2px;
  transform:translateY(-2px) scale(1.03)!important;
}


/* GoTM brand system — official GoZyraa Tour Management palette */
:root{--gotm-navy:#0B2A49;--gotm-gold:#F7AB17;--gotm-white:#FFFFFF;--gotm-navy-soft:#123B60;--gotm-gold-soft:#FFF4D6}
.topbar{background:linear-gradient(135deg,var(--gotm-navy),#123B60)!important}
.btn.primary{background:linear-gradient(135deg,var(--gotm-gold),#D88B00)!important;color:#10243A!important}
.tabs a:hover,.tabs a.active{background:#FFF4D6!important;color:#0B2A49!important}
.stat:before{background:var(--gotm-gold)!important}
.brand{color:var(--gotm-navy)!important}
.toast{background:var(--gotm-navy)!important;border-left-color:var(--gotm-gold)!important}
.seat-tab.active,.bus-tab.active{background:var(--gotm-navy)!important}
