/* My Tour Platform — Premium SaaS design system */
@import url('css/design-system.css');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  /* 8px spacing grid */
  --space-1:var(--space-xs);--space-2:var(--space-sm);--space-3:12px;--space-4:var(--space-md);--space-5:20px;--space-6:var(--space-lg);--space-8:var(--space-xl);--space-10:40px;--space-12:48px;--space-16:64px;
  /* Surfaces — alias to design system */
  --bg:var(--colour-bg-page);--white:var(--colour-bg-card);--card:var(--colour-bg-card);--bg-subtle:var(--colour-bg-subtle);
  /* Borders */
  --bd:var(--colour-border);--bd2:#d1d5db;--bd-focus:var(--colour-primary);
  /* Text hierarchy */
  --tx:var(--colour-text-primary);--tx2:var(--colour-text-secondary);--tx3:var(--colour-text-label);
  /* Accent (restrained) — alias to design system */
  --ac:var(--colour-primary);--ac2:var(--colour-primary-hover);--ac-hover:var(--colour-primary-hover);--ac-muted:var(--colour-primary-muted);
  /* Semantic */
  --gr:var(--colour-success);--gr-muted:var(--colour-success-light);--bl:#1e293b;--pk:#ec4899;--rd:var(--colour-destructive);--rd-muted:var(--colour-destructive-light);--pr:#6366f1;--bg2:#f1f5f9;
  --yellow:var(--colour-primary);--yellow-dark:var(--colour-primary-hover);--navy:#0f172a;--navy-light:#1e293b;
  /* Shadows — layered, subtle */
  --sh-xs:0 1px 2px rgba(0,0,0,0.04);
  --sh-sm:var(--shadow-card);
  --sh-md:var(--shadow-elevated);
  --sh-lg:0 8px 24px rgba(0,0,0,0.10);
  --sh:var(--sh-sm);--sh2:var(--sh-md);
  /* Radius */
  --radius:var(--radius-sm);--radius-xl:var(--radius-lg);
  --r:var(--radius);
  /* Typography */
  --font-sans:var(--font-family);
  --text-xs:var(--font-size-label);--text-sm:var(--font-size-micro);--text-base:var(--font-size-body);--text-md:var(--font-size-card-title);--text-lg:16px;--text-xl:18px;--text-2xl:20px;--text-3xl:var(--font-size-page-title);--text-4xl:28px;
  --leading-tight:var(--line-height-tight);--leading-normal:var(--line-height-normal);--leading-relaxed:var(--line-height-relaxed);
  --font-medium:var(--font-weight-medium);--font-semibold:var(--font-weight-semibold);--font-bold:var(--font-weight-bold);--font-extrabold:800;
  /* Transitions */
  --ease:150ms ease;--ease-out:200ms ease-out;
}
html{height:100%;overflow-x:clip;scroll-behavior:smooth;-webkit-tap-highlight-color:transparent;}
body{background:var(--bg);color:var(--tx);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);min-height:100%;overflow-x:clip;-webkit-font-smoothing:antialiased;}
::selection{background:var(--ac);color:#111;}
::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--bd2);border-radius:3px;}
::-webkit-scrollbar-thumb:hover{background:var(--tx3);}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important;}}
a,button,input,select,textarea,[onclick],[role="button"],.btn,.tour-card,.add-card,.access-card,.menu-btn,.ni,.tab,.chip{touch-action:manipulation;}
a{color:var(--ac);text-decoration:none;}
a:hover{text-decoration:underline;}
img{max-width:100%;height:auto;}

*{word-break:break-word;}
.container,.page-wrap{overflow-x:clip;max-width:100vw;}

/* ── TOPBAR ── */
.topbar{background:var(--white);border-bottom:1px solid var(--bd);padding:0 var(--space-6);height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:var(--sh-xs);}
.topbar-brand{font-size:var(--text-lg);font-weight:var(--font-extrabold);color:var(--tx);letter-spacing:-0.02em;}
.topbar-logo-link{display:flex;align-items:center;gap:var(--space-3);text-decoration:none;color:inherit;}
.topbar-logo-link:hover{text-decoration:none;color:inherit;}
.topbar-logo{height:32px;width:auto;max-height:32px;object-fit:contain;display:block;}
.topbar-logo-fallback{font-size:var(--text-xl);font-weight:var(--font-extrabold);}
.topbar-sitename{font-size:var(--text-md);font-weight:var(--font-extrabold);color:#1e293b;white-space:nowrap;letter-spacing:-0.3px;}
.topbar-sitename span{color:#eab308;}
@media(max-width:480px){.topbar-sitename{font-size:14px;}.topbar{padding:0 var(--space-4);height:52px;}}
.topbar-right{display:flex;align-items:center;gap:var(--space-4);font-size:var(--text-sm);}
.topbar-right .user-name{font-weight:var(--font-semibold);color:var(--tx);}
.topbar-right .user-role{color:var(--tx3);font-size:var(--text-xs);margin-left:var(--space-1);}
.btn-dashboard{background:var(--ac)!important;border-color:var(--ac)!important;color:#111!important;font-weight:var(--font-bold)!important;padding:var(--space-2) var(--space-4)!important;border-radius:var(--radius)!important;transition:background var(--ease),transform var(--ease)!important;}
.btn-dashboard:hover{background:var(--ac-hover)!important;border-color:var(--ac-hover)!important;color:#111!important;text-decoration:none!important;}

/* ── MENU DROPDOWN ── */
.menu-wrap{position:relative;}
.menu-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius);border:1px solid var(--bd);background:var(--white);cursor:pointer;font:inherit;font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--tx2);transition:border-color var(--ease),background var(--ease),color var(--ease);min-height:40px;}
.menu-btn:hover{border-color:var(--bd2);background:var(--bg-subtle);color:var(--tx);}
.menu-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.menu-drop{display:none;position:absolute;right:0;top:calc(100% + var(--space-2));background:var(--white);border:1px solid var(--bd);border-radius:var(--radius-lg);box-shadow:var(--sh-lg);min-width:220px;max-width:calc(100vw - 24px);max-height:calc(100vh - 70px);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;z-index:200;animation:menuIn .25s cubic-bezier(0.34,1.56,0.64,1);}
.menu-drop.open{display:block;}
body.menu-open{overflow:hidden;position:fixed;width:100%;}
@keyframes menuIn{from{opacity:0;transform:translateY(-6px) scale(0.97);}to{opacity:1;transform:translateY(0) scale(1);}}
.menu-user{padding:var(--space-4);border-bottom:1px solid var(--bd);background:var(--bg-subtle);}
.menu-user-name{font-size:var(--text-sm);font-weight:var(--font-bold);color:var(--tx);}
.menu-user-role{font-size:var(--text-xs);color:var(--tx3);margin-top:var(--space-1);}
.menu-drop a,.menu-drop button{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);font:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--tx2);text-decoration:none;border:none;background:none;cursor:pointer;text-align:left;transition:background var(--ease),color var(--ease);}
.menu-drop a:hover,.menu-drop button:hover{background:var(--bg-subtle);color:var(--tx);text-decoration:none;}
.menu-drop .menu-sep{height:1px;background:var(--bd);margin:var(--space-1) 0;}
.menu-drop .menu-danger{color:var(--rd);}
.menu-drop .menu-danger:hover{background:var(--rd-muted);}
.menu-locked{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--tx3);opacity:0.55;cursor:default;user-select:none;}
.menu-plan-badge{display:inline-block;font-size:12px;font-weight:700;background:var(--ac);color:#111;border-radius:4px;padding:1px 5px;margin-left:auto;letter-spacing:0.03em;}
.menu-sub-hint{display:block;font-size:12px;font-weight:400;color:var(--tx3);margin-top:-1px;line-height:1.3;}
.notif-badge{display:inline-block;min-width:20px;height:20px;padding:0 6px;font-size:var(--text-xs);font-weight:var(--font-bold);line-height:20px;text-align:center;background:var(--ac);color:#111;border-radius:10px;}
.menu-plan-link{display:flex;align-items:center;justify-content:space-between;}
.plan-badge-sm{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;}
.plan-badge-sm-basic{background:#f1f5f9;color:#64748b;}
.plan-badge-sm-pro{background:#fef3c7;color:#d97706;}
.plan-badge-sm-ultimate{background:#ede9fe;color:#7c3aed;}
.notif-item.read{opacity:0.7;}
.dashboard-alerts a{text-decoration:none;}
.dashboard-alerts a:hover{text-decoration:underline;}
.voucher-status{display:inline-block;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:capitalize;}
.voucher-status-generated{background:var(--bg-subtle);color:var(--tx2);}
.voucher-status-sent{background:#fef3c7;color:#92400e;}
.voucher-status-acknowledged{background:var(--gr-muted);color:#065f46;}
.menu-drop .mi{width:16px;height:16px;opacity:.6;flex-shrink:0;}
.menu-drop .menu-group-label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--tx3);padding:12px 16px 4px;pointer-events:none;user-select:none;}
.menu-drop .menu-group-label:first-child{padding-top:6px;}
.menu-drop .menu-ico{width:18px;height:18px;flex-shrink:0;stroke:#555;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;fill:none;}

/* ── ADMIN NAV (grouped menu) — same on Dashboard and all admin pages ── */
.admin-nav .admin-nav-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--colour-text-label,#888);padding:16px 16px 6px 16px;display:block;}
.admin-nav .admin-nav-group:first-of-type .admin-nav-label{padding-top:20px;}
.admin-nav .admin-nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;font-size:14px;color:var(--colour-text-primary,#1a1a1a);border-radius:var(--radius-sm);text-decoration:none;border:none;background:none;cursor:pointer;text-align:left;transition:background 0.15s ease;box-sizing:border-box;}
.admin-nav .admin-nav-item:hover{background:var(--colour-primary-light);color:var(--colour-primary);text-decoration:none;}
.admin-nav .admin-nav-item:hover .admin-nav-icon{stroke:var(--colour-primary);}
.admin-nav .admin-nav-item.active{background:var(--colour-primary);color:#fff;font-weight:600;}
.admin-nav .admin-nav-item.active .admin-nav-icon{stroke:#fff;}
.admin-nav .admin-nav-icon{width:16px;height:16px;flex-shrink:0;stroke:var(--colour-text-muted);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:stroke 0.15s ease;}
.admin-nav .admin-nav-icon path{stroke-width:1.5;}
.admin-nav .admin-nav-logout{margin-top:8px;padding-top:16px;border-top:1px solid var(--colour-border);color:var(--colour-destructive);font-weight:600;}
.admin-nav .admin-nav-logout:hover{background:#fff0f0;color:var(--colour-destructive);text-decoration:none;}
.admin-nav .admin-nav-logout .admin-nav-icon{stroke:var(--colour-destructive);}
.admin-nav .admin-nav-logout:hover .admin-nav-icon{stroke:var(--colour-destructive);}

/* ── ADMIN SETTINGS/INTEGRATIONS ── */
.admin-settings-wrap{max-width:640px;}
@media(min-width:1025px){.admin-settings-wrap{max-width:720px;}}

/* ── PROFILE WRAP ── */
.profile-wrap{max-width:560px;}
@media(min-width:1025px){.profile-wrap{max-width:680px;}}

/* ── BUTTONS — 3-tier system: primary / secondary / destructive ── */
.btn,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:10px 16px;min-height:44px;border-radius:var(--radius-sm);font-family:inherit;font-size:var(--font-size-body);font-weight:var(--font-weight-medium);cursor:pointer;border:1px solid var(--colour-border);background:var(--colour-bg-card);color:var(--colour-text-primary);transition:border-color var(--ease),background var(--ease),color var(--ease),box-shadow var(--ease);text-decoration:none;white-space:nowrap;}
.btn:hover,.btn-secondary:hover{border-color:var(--colour-border);color:var(--colour-text-primary);background:var(--colour-bg-subtle);box-shadow:var(--shadow-card);text-decoration:none;}
.btn:active{transform:translateY(0.5px);}
.btn-primary{background:var(--colour-primary);border-color:var(--colour-primary);color:#fff;font-weight:var(--font-weight-semibold);padding:10px 20px;}
.btn-primary:hover{background:var(--colour-primary-hover);border-color:var(--colour-primary-hover);color:#fff;box-shadow:0 2px 8px rgba(212,160,23,.2);}
.btn-danger,.btn-destructive{background:transparent;border:1px solid var(--colour-destructive);color:var(--colour-destructive);font-weight:var(--font-weight-medium);padding:10px 16px;}
.btn-danger:hover,.btn-destructive:hover{background:var(--colour-destructive-light);border-color:var(--colour-destructive);color:var(--colour-destructive);}
.btn-success{background:var(--colour-success);border-color:var(--colour-success);color:#fff;font-weight:var(--font-weight-semibold);border-radius:var(--radius-sm);}
.btn-success:hover{background:#047857;}
.btn-sm{min-height:36px;padding:8px 14px;font-size:var(--font-size-small);}
.btn-link{background:none;border:none;color:var(--colour-primary);cursor:pointer;font:inherit;font-weight:var(--font-weight-semibold);padding:0;min-height:0;}
.btn-link:hover{text-decoration:underline;}
.btn-del,.btn-ghost-destructive{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--colour-destructive);font-size:var(--font-size-small);font-weight:var(--font-weight-regular);padding:6px 10px;min-height:44px;cursor:pointer;font-family:inherit;border-radius:0;white-space:nowrap;transition:color var(--ease);}
.btn-del:hover,.btn-ghost-destructive:hover{text-decoration:underline;color:#aa2222;background:none;border:none;}

/* ── FORMS ── */
.form-group{margin-bottom:var(--space-4);}
.form-label{display:block;font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--tx2);margin-bottom:var(--space-1);text-transform:uppercase;letter-spacing:0.05em;}
.form-input,.form-select,.form-textarea{width:100%;padding:var(--space-3) var(--space-4);min-height:40px;border:1px solid var(--bd);border-radius:var(--radius);font:inherit;font-size:var(--text-base);color:var(--tx);background:var(--white);outline:none;transition:border-color var(--ease),box-shadow var(--ease);}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--bd-focus);box-shadow:0 0 0 3px var(--ac-muted);}
.form-input::placeholder{color:var(--tx3);}
.form-hint{font-size:var(--text-xs);color:var(--tx3);margin-top:var(--space-1);}
.form-textarea{resize:vertical;min-height:80px;}
.form-row{display:flex;gap:var(--space-3);}
.form-row > *{flex:1;min-width:0;}

/* ── CARDS ── */
.card{background:var(--card);border:none;border-radius:var(--radius-lg);box-shadow:var(--shadow-card);transition:box-shadow var(--ease);}
.card:hover{box-shadow:var(--shadow-elevated);}
.card-body{padding:var(--space-6);}

/* ── FLASH MESSAGES ── */
.flash{padding:var(--space-4);border-radius:var(--radius);margin-bottom:var(--space-4);font-size:var(--text-sm);font-weight:var(--font-medium);}
.flash-success{background:var(--gr-muted);border:1px solid #a7f3d0;color:#065f46;}
.flash-error{background:var(--rd-muted);border:1px solid #fecaca;color:#991b1b;}
.flash-info{background:#e0f2fe;border:1px solid #7dd3fc;color:#0369a1;}
.flash-warning{background:#fef3c7;border:1px solid #fcd34d;color:#92400e;}

/* ── AUTH PAGE (login/register) ── */
.auth-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:24px;}
.auth-card{width:100%;max-width:420px;}
.auth-logo{font-size:24px;font-weight:800;text-align:center;margin-bottom:4px;}
.auth-logo span{color:var(--ac);}
.portal-access-help{background:var(--colour-primary-light,#fef9c3);border:1px solid var(--colour-primary-border,#fde68a);border-left:4px solid var(--colour-primary,#D4A017);border-radius:var(--radius-sm,8px);padding:12px 16px;margin-bottom:16px;font-size:14px;color:var(--colour-text-secondary,#475569);line-height:1.5;}
.portal-access-help strong{color:var(--colour-text-primary,#0f172a);}
.portal-access-help p{margin:0 0 6px 0;}
.portal-access-help p:last-child{margin-bottom:0;}
.auth-logo img+.auth-logo-text{margin-top:4px;}
.auth-sub{text-align:center;color:var(--tx3);font-size:14px;margin-bottom:24px;}
.auth-tabs{display:flex;border-bottom:2px solid var(--bd);margin-bottom:20px;}
.auth-tab{flex:1;text-align:center;padding:10px;font-size:14px;font-weight:700;color:var(--tx3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;}
.auth-tab.active{color:var(--ac);border-bottom-color:var(--ac);}
.auth-panel{display:none;}
.auth-panel.active{display:block;}
.auth-actions{display:flex;gap:8px;margin-top:18px;}
.auth-actions .btn{flex:1;}
.auth-divider{text-align:center;color:var(--tx3);font-size:14px;margin:24px 0 16px;position:relative;}
.auth-divider::before,.auth-divider::after{content:'';position:absolute;top:50%;width:38%;height:1px;background:var(--bd);}
.auth-divider::before{left:0;}
.auth-divider::after{right:0;}
.access-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px;}
.access-card{background:var(--white);border:1px solid var(--bd);border-radius:var(--r);padding:16px;text-align:center;cursor:pointer;transition:all .15s;text-decoration:none;color:var(--tx);}
.access-card:hover{border-color:var(--ac);box-shadow:var(--sh2);text-decoration:none;}
.access-card .ac-icon{font-size:24px;margin-bottom:6px;}
.access-card .ac-title{font-size:14px;font-weight:700;margin-bottom:2px;}
.access-card .ac-desc{font-size:14px;color:var(--tx3);}

/* ── CONTAINER ── */
.container{max-width:960px;margin:0 auto;padding:var(--space-6) var(--space-5);}
.app-container{max-width:680px;margin:0 auto;padding:0 16px;}
.app-container .container{max-width:100%;padding-left:0;padding-right:0;}
.page-wrap{max-width:960px;margin:0 auto;padding:var(--space-8) var(--space-6);}
.page-title{font-size:var(--font-size-page-title);font-weight:var(--font-weight-bold);color:var(--colour-text-primary);margin-bottom:var(--space-md);line-height:var(--leading-tight);word-wrap:break-word;}
.page-sub{color:var(--tx2);font-size:var(--text-sm);margin-bottom:var(--space-5);line-height:var(--leading-normal);}
.page-hero{text-align:center;margin-bottom:var(--space-8);padding:0 var(--space-4);}
.page-hero .page-title{font-size:var(--text-4xl);letter-spacing:-0.02em;}
.page-hero .page-sub{font-size:var(--text-base);max-width:560px;margin-left:auto;margin-right:auto;color:var(--tx2);}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-4);}
.card-grid .card{transition:box-shadow var(--ease);}
.card-grid .card:hover{box-shadow:var(--sh-sm);}
.card-grid .card .card-body{text-align:center;padding:var(--space-6) var(--space-5);}
.card-grid .card .card-icon{font-size:24px;margin-bottom:var(--space-3);}
.card-grid .card .card-title{font-weight:var(--font-bold);font-size:var(--text-md);margin-bottom:var(--space-1);}
.card-grid .card .card-desc{font-size:var(--text-sm);color:var(--tx3);line-height:var(--leading-normal);}
.card-icon,.hp-feat-icon{width:48px;height:48px;margin:0 auto var(--space-3);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);font-size:20px;font-weight:var(--font-extrabold);color:#fff;line-height:1;}
.card-icon.cal{background:linear-gradient(135deg,#3b82f6,#2563eb);}
.card-icon.money{background:linear-gradient(135deg,#059669,#047857);}
.card-icon.hotel{background:linear-gradient(135deg,#d97706,#b45309);}
.card-icon.service{background:linear-gradient(135deg,#7c3aed,#6d28d9);}
.hp-feat-icon{width:40px;height:40px;font-size:18px;margin-bottom:var(--space-3);}
.hp-feat-icon.globe{background:linear-gradient(135deg,#3b82f6,#2563eb);}
.hp-feat-icon.people{background:linear-gradient(135deg,#ec4899,#db2777);}
.hp-feat-icon.share{background:linear-gradient(135deg,#059669,#047857);}
.hp-feat-icon.hotel{background:linear-gradient(135deg,#d97706,#b45309);}
.hp-feat-icon.cal{background:linear-gradient(135deg,#7c3aed,#6d28d9);}
.hp-feat-icon.sync{background:linear-gradient(135deg,#0891b2,#0e7490);}
.tc-ico{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;font-size:var(--text-xs);font-weight:var(--font-bold);border-radius:var(--radius-sm);margin-right:var(--space-1);background:var(--bg-subtle);color:var(--tx2);}
.tc-ico.people{background:#eff6ff;color:#1e40af;}
.tc-ico.earn{background:var(--gr-muted);color:var(--gr);}
.tc-ico.date{background:#fef3c7;color:#b45309;}
.te-icon{width:40px;height:40px;margin:0 auto var(--space-3);display:flex;align-items:center;justify-content:center;border-radius:var(--radius);background:var(--bg-subtle);color:var(--tx3);font-size:var(--text-xl);font-weight:var(--font-bold);}
@media(max-width:600px){.container,.page-wrap{padding:var(--space-4) var(--space-3);}}

/* ── TOUR SECTIONS (dashboard) ── */
.tour-section{margin-bottom:var(--space-8);}
.tour-section-title{font-size:var(--text-lg);font-weight:var(--font-extrabold);margin-bottom:var(--space-2);display:flex;align-items:center;gap:var(--space-2);letter-spacing:-0.01em;}
.tour-section-title .ts-icon{font-size:var(--text-sm);}
.tour-section-title .ts-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--gr);}
.tour-section-title .ts-cal{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-sm);background:#eff6ff;color:#1e40af;font-size:var(--text-xs);font-weight:var(--font-bold);}
.tour-section-title .ts-check{color:var(--gr);font-size:var(--text-lg);font-weight:var(--font-bold);}
.tour-section-title .ts-x{color:var(--rd);font-size:var(--text-xl);font-weight:var(--font-bold);}
.hp-tools-section,.hp-vouchers-section{margin-top:var(--space-10);padding-top:var(--space-8);border-top:1px solid var(--bd);}
.hp-section-title{font-size:var(--text-lg);font-weight:var(--font-extrabold);margin-bottom:var(--space-1);}
.hp-section-desc{font-size:var(--text-sm);color:var(--tx3);margin-bottom:var(--space-4);}
.card-grid-spaced{gap:var(--space-5);}
.hp-tools-grid{margin:0;padding:0;}
.hp-tools-grid .card{margin:0;}
.hp-tools-grid .card .card-body{min-height:140px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:var(--space-5) var(--space-4);text-align:center;}
.hp-tools-grid .card .card-icon{margin-bottom:var(--space-3);}
.hp-tools-grid .card .card-title{margin-bottom:var(--space-2);}
.hp-tools-grid .card .card-desc{margin:0;flex:1;}
.e-vouchers-grid .card .card-body{min-height:140px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:var(--space-5) var(--space-4);text-align:center;}
.e-vouchers-grid .card .card-desc{margin:0;flex:1;}
.tour-section-desc{font-size:var(--text-sm);color:var(--tx3);margin-bottom:var(--space-4);}
.tour-empty{background:var(--colour-bg-subtle);border:1.5px dashed var(--bd);border-radius:var(--radius-lg);padding:var(--space-8);text-align:center;color:var(--tx3);animation:emptyFadeIn .4s ease-out;}
.tour-empty .te-icon{font-size:var(--text-3xl);display:block;margin-bottom:var(--space-2);opacity:.6;}
.tour-empty p{margin:0;font-size:var(--text-sm);}
.tour-section-empty{margin-bottom:var(--space-3);border:1px solid var(--bd);border-radius:var(--radius);background:var(--bg-subtle);}
.tour-section-empty summary{font-size:var(--text-base);font-weight:var(--font-bold);padding:var(--space-3) var(--space-4);cursor:pointer;list-style:none;display:flex;align-items:center;gap:var(--space-2);}
.tour-section-empty summary::-webkit-details-marker{display:none;}
.tour-section-empty summary::before{content:'';display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--tx3);transition:transform var(--ease);}
.tour-section-empty[open] summary::before{transform:rotate(180deg);}
.tour-section-empty-badge{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--tx3);margin-left:var(--space-1);}
.tour-section-collapsible{margin-bottom:var(--space-3);border:1px solid var(--bd);border-radius:var(--radius-lg,12px);background:var(--white);overflow:hidden;}
.tour-section-collapsible summary{padding:var(--space-4);cursor:pointer;list-style:none;}
.tour-section-collapsible summary::-webkit-details-marker{display:none;}
.tour-section-collapsible[open] summary svg{transform:rotate(180deg);}
.tour-section-collapsible > .tour-section-desc,.tour-section-collapsible > .past-tour-notice,.tour-section-collapsible > .tour-grid{padding:0 var(--space-4);}
.tour-section-collapsible > .tour-grid{padding-bottom:var(--space-4);}
.tour-empty-compact{margin:0;padding:var(--space-2) var(--space-4) var(--space-3);font-size:var(--text-sm);color:var(--tx3);border-top:1px solid var(--bd);}

.tour-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4);}
.tour-card{background:var(--white);border:1px solid var(--bd);border-radius:var(--radius-md,12px);padding:var(--space-5);transition:border-color 0.2s ease,box-shadow 0.25s ease,transform 0.25s ease;color:var(--tx);display:flex;flex-direction:column;cursor:pointer;box-shadow:var(--sh-xs);}
.tour-card:hover{border-color:var(--colour-primary);box-shadow:var(--sh-lg);transform:translateY(-3px);}
.tour-card .tc-link{text-decoration:none;color:inherit;display:block;flex:1;cursor:pointer;padding:2px 0;}
.tour-card .tc-link:hover{text-decoration:none;}
.tour-card .tc-open-link{display:block;margin-top:var(--space-3);text-align:right;font-size:13px;font-weight:600;color:var(--colour-primary);text-decoration:none;transition:color .15s;}
.tour-card .tc-open-link:hover{text-decoration:underline;color:var(--colour-primary-hover);}
.tour-card .tc-code{font-size:var(--text-xs);font-weight:var(--font-bold);color:var(--colour-primary);letter-spacing:0.1em;text-transform:uppercase;margin-bottom:var(--space-2);}
.tour-card .tc-name{font-size:var(--text-md);font-weight:var(--font-bold);margin-bottom:var(--space-2);line-height:var(--leading-tight);}
.tour-card .tc-badge{font-size:var(--text-xs);font-weight:var(--font-bold);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);margin-left:var(--space-2);vertical-align:middle;}
.tour-card .tc-badge-active{background:var(--gr);color:#fff;}
.tour-card .tc-badge-past{background:var(--tx3);color:#fff;}
.tour-card .tc-badge-cancelled{background:var(--rd-muted);color:var(--rd);}
.tour-card .tc-dates{font-size:var(--text-sm);color:var(--tx2);margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-2);}
.tour-card .tc-stats{display:flex;gap:var(--space-4);margin-bottom:var(--space-2);flex-wrap:wrap;}
.tour-card .tc-stat{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--tx2);display:flex;align-items:center;gap:var(--space-1);}
.tour-card .tc-stat.tc-stat-pill{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:var(--colour-text-secondary);background:var(--colour-bg-page);border:1px solid var(--colour-border);border-radius:var(--radius-pill);padding:3px 8px;}
.tour-card .tc-stat .tc-ico{opacity:.9;}
.tour-card .tc-stat .tc-ico-svg{flex-shrink:0;stroke:currentColor;}
.tour-card .tc-stat.tc-earn{color:var(--colour-text-secondary);}
.tour-card .tc-meta{font-size:var(--text-xs);color:var(--tx3);}
.tour-card .tc-actions{display:flex;gap:var(--space-2);margin-top:var(--space-4);flex-shrink:0;padding-top:var(--space-4);border-top:1px solid var(--bd);}
.tour-card-active{border-left:4px solid var(--gr);}
.tour-card-active:hover{border-left-color:var(--gr);box-shadow:var(--sh-lg);}
.tour-card-past{opacity:.9;}
.tour-card-cancelled{opacity:.85;border-color:var(--bd2);}
.add-card{border:2px dashed var(--bd);background:var(--bg-subtle);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);min-height:140px;color:var(--tx3);font-size:var(--text-base);cursor:pointer;border-radius:var(--radius-lg);transition:border-color var(--ease),color var(--ease),background var(--ease);}
.add-card:hover{border-color:var(--ac);color:var(--ac);background:var(--ac-muted);}
.add-card .ac-icon{font-size:var(--text-3xl);font-weight:300;line-height:1;}
.add-card .ac-label{font-weight:var(--font-semibold);}
.city-ico,.section-ico{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-sm);background:var(--ac);color:#111;font-size:var(--text-xs);font-weight:var(--font-bold);margin-right:var(--space-2);vertical-align:middle;}
.section-ico{background:var(--bl);color:#fff;width:22px;height:22px;}

/* ── TABLE ── */
.tbl{width:100%;border-collapse:collapse;}
.tbl th{text-align:left;font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--tx3);text-transform:uppercase;letter-spacing:0.05em;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--bd);}
.tbl td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--bd);font-size:var(--text-sm);}
.tbl tr:hover td{background:var(--bg-subtle);}
.tbl .badge{display:inline-block;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--font-semibold);}
.badge-leader{background:#eff6ff;color:#1e40af;}
.badge-hotel{background:#fef3c7;color:#92400e;}
.badge-traveller{background:#f0fdf4;color:#166534;}
.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.table-responsive .tbl{min-width:500px;}

/* ── TABLE-TO-CARD (mobile responsive) ── */
/* Wrap table in .table-wrap and add .table-cards with .table-card per row. Use data-label on mobile. */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.table-cards{display:none;}
.table-card{background:var(--colour-bg-card,var(--white));border:none;border-radius:var(--radius-md,14px);padding:var(--space-4);margin-bottom:var(--space-sm);box-shadow:var(--shadow-card);}
.table-card-title{display:block;font-weight:700;font-size:15px;color:var(--colour-primary,var(--ac));text-decoration:none;margin-bottom:2px;}
.table-card-title:hover{text-decoration:underline;}
.table-card-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;gap:8px;}
.table-card-label{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--colour-text-label,var(--tx3));letter-spacing:.3px;flex-shrink:0;}
.table-card-val{font-size:14px;font-weight:600;color:var(--colour-text-primary,#1a1a1a);text-align:right;}
@media(max-width:599px){
  .table-wrap{display:none!important;}
  .table-cards{display:block;}
}

/* ── SPA: TOUR VIEW ── */
#app{display:flex;flex-direction:column;min-height:calc(100dvh - 56px);}
#app.app-scroll{min-height:calc(100dvh - 56px);}

/* ── TOUR BAR (sub-header with tour info + vouchers) ── */
.tour-bar{background:linear-gradient(135deg, #1e293b, #0f172a);border:none;border-radius:var(--radius-lg,16px);display:flex;align-items:flex-end;justify-content:space-between;padding:24px 24px;gap:var(--space-3);flex-shrink:0;margin:16px 0 0;box-shadow:0 10px 30px rgba(15,23,42,0.15);position:relative;color:#fff;}
.tour-bar-info{flex:1;min-width:0;overflow:hidden;}
.tour-bar-code{font-size:11px;font-weight:700;letter-spacing:0.1em;color:#eab308;text-transform:uppercase;line-height:1;display:inline-flex;padding:4px 10px;background:rgba(234,179,8,0.15);border-radius:var(--radius-pill);border:1px solid rgba(234,179,8,0.3);}
.tour-bar-name{font-size:24px;font-weight:800;color:#ffffff;line-height:1.2;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-0.02em;}
.tour-bar-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0;padding-bottom:6px;}
.back-link{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:var(--colour-text-secondary);padding:12px 0 4px;text-decoration:none;}
.back-link:hover{color:var(--colour-text-primary);text-decoration:none;}
.voucher-pill{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:600;color:var(--colour-text-secondary);background:var(--colour-bg-card);border:1px solid var(--colour-border);border-radius:var(--radius-pill,999px);text-decoration:none;white-space:nowrap;min-height:36px;transition:all .15s;cursor:pointer;flex-shrink:0;}
.voucher-pill:hover{border-color:var(--colour-primary,#D4A017);background:#fefce8;text-decoration:none;}
.td-shortcut{position:relative;}
.td-shortcut-tooltip{position:absolute;bottom:calc(100% + 6px);right:0;background:#1a1a1a;color:#fff;font-size:11px;font-weight:500;padding:5px 10px;border-radius:var(--radius-sm);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity 0.15s ease;z-index:100;}
.td-shortcut:hover .td-shortcut-tooltip{opacity:1;}
.save-dot{width:7px;height:7px;border-radius:50%;background:var(--gr);transition:background .3s;flex-shrink:0;}
.save-dot.saving{background:var(--ac2);}
.save-dot.save-error{background:var(--err,#ef4444);}
.save-dot.save-local{background:#3b82f6;animation:savePulse 1.5s infinite;}
@keyframes savePulse{0%,100%{opacity:1;}50%{opacity:.4;}}
.tour-back-arrow{font-size:20px;color:var(--tx2);text-decoration:none;line-height:1;padding:2px 4px;border-radius:4px;transition:color .12s;}
.tour-back-arrow:hover{color:var(--tx);text-decoration:none;}

/* ── NAV ── */
.app-nav{display:flex;flex-direction:column;background:var(--colour-bg-page,#f5f5f0);border:none;border-radius:0;position:sticky;top:56px;z-index:50;flex-shrink:0;margin:0;box-shadow:none;overflow:visible;}
.nav-row{display:flex;padding:var(--space-2) var(--space-3);overflow-x:auto;-webkit-overflow-scrolling:touch;align-items:center;gap:var(--space-2);scrollbar-width:none;}
.nav-row::-webkit-scrollbar{display:none;}
.nav-main{background:transparent;}
.nav-hotels{background:var(--bg-subtle);border-top:1px solid var(--bd);padding:var(--space-2) var(--space-3);gap:var(--space-2);}
.nav-row.nav-hotels .ni.on{background:var(--colour-primary-light,#FFF8E7);color:var(--colour-primary,#D4A017);border:1px solid var(--colour-primary-border,#e8d98a);border-bottom:1px solid var(--colour-primary-border,#e8d98a);}
.ni{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-bold);color:var(--tx3);cursor:pointer;border:1px solid var(--bd);border-radius:var(--radius);background:var(--bg-subtle);transition:border-color var(--ease),background var(--ease),color var(--ease),box-shadow var(--ease);white-space:nowrap;flex-shrink:0;-webkit-tap-highlight-color:transparent;}
.ni:hover{color:var(--tx);background:var(--white);border-color:var(--bd2);box-shadow:var(--sh-xs);}
.ni:active{transform:scale(.98);}
.ni.on{color:var(--colour-primary,#D4A017);}
.ni-icon{display:flex;align-items:center;gap:var(--space-2);}
.ni-ico{font-size:18px;line-height:1;}
.ni-lbl{font-size:var(--text-xs);font-weight:var(--font-bold);letter-spacing:0.02em;}
/* Main nav tabs — underline style */
.nav-row.nav-main{gap:0;padding:0 4px;background:var(--colour-bg-page,#f5f5f0);border-radius:0;box-shadow:none;margin-bottom:0;border-bottom:1px solid var(--colour-border,#e5e7eb);}
.nav-row.nav-main .ni.ni-icon{flex:0 0 auto;min-width:0;border:none;border-radius:0;background:transparent;padding:12px 14px;color:var(--colour-text-secondary);transition:all .2s ease;box-shadow:none;justify-content:center;text-align:center;gap:6px;position:relative;}
.nav-row.nav-main .ni.ni-icon::after{content:'';position:absolute;bottom:-1px;left:8px;right:8px;height:2.5px;border-radius:2px 2px 0 0;background:transparent;transition:background .2s ease;}
.nav-row.nav-main .ni.ni-icon:hover{color:var(--colour-text-primary);background:var(--colour-bg-subtle,#f8f9fa);}
.nav-row.nav-main .ni.ni-icon.on{color:var(--colour-text-primary);background:transparent;}
.nav-row.nav-main .ni.ni-icon.on::after{background:var(--colour-primary,#D4A017);}
.nav-row.nav-main .ni.ni-icon.on .ni-ico svg{stroke:var(--colour-primary);}
.nav-row.nav-main .ni.ni-icon.on .ni-lbl{color:var(--colour-text-primary);font-weight:700;}
.nav-row.nav-main .ni.ni-icon .ni-ico{display:flex;align-items:center;justify-content:center;width:16px;height:16px;}
.nav-row.nav-main .ni.ni-icon .ni-ico svg{width:16px;height:16px;transition:stroke .2s ease;}
.nav-row.nav-main .ni.ni-icon .ni-lbl{font-size:13px;font-weight:600;letter-spacing:0;transition:color .2s ease;}
.ni-hotel-label{cursor:default;color:var(--tx3);font-weight:var(--font-semibold);font-size:var(--text-xs);opacity:.8;padding-right:var(--space-1);}
.ni .cnt{display:inline-flex;align-items:center;justify-content:center;background:var(--rd);color:#fff;font-size:10px;font-weight:var(--font-bold);width:18px;height:18px;border-radius:50%;margin-left:var(--space-1);}

/* ── TOUR CONTENT (replaces body-wrap + sidebar) ── */
.tour-content{flex:1;max-width:100%;overflow-x:clip;}


/* ── SEARCH (shared) ── */
.search{width:100%;background:var(--white);border:1px solid var(--bd);border-radius:var(--radius-sm,8px);padding:var(--space-3) var(--space-4);min-height:40px;font:inherit;font-size:var(--text-base);color:var(--tx);outline:none;transition:border-color var(--ease),box-shadow var(--ease);}
.search:focus{border-color:var(--bd-focus);box-shadow:0 0 0 3px var(--ac-muted);}
.search::placeholder{color:var(--tx3);}

/* ── AVATARS ── */
.av{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0;color:#fff;}
.av.adult{background:linear-gradient(135deg,#6366f1,#4338ca);}
.av.driver{background:var(--bg);border:1px solid var(--bd);color:var(--tx3);}
.av.girl{background:linear-gradient(135deg,var(--pk),#be185d);}
.av.boy{background:linear-gradient(135deg,var(--bl),#1d4ed8);}

/* ── MAIN PANEL ── */
.main{display:flex;flex-direction:column;flex:1;min-width:0;}
.m-top{padding:var(--space-4) var(--space-5) 0;border-bottom:none;}
.city-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-2);}
.city-row h1{font-size:var(--font-size-page-title);font-weight:var(--font-weight-semibold);color:var(--colour-text-primary);letter-spacing:-0.02em;}
.h-tag{font-size:var(--text-xs);color:var(--tx2);background:var(--bg-subtle);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);}
.dates{font-size:var(--text-sm);color:var(--tx3);margin-bottom:var(--space-3);}
.qa-bar{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-3);}
.qa-btn{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--font-semibold);border-radius:var(--radius);background:var(--white);border:1px solid var(--bd);color:var(--tx2);cursor:pointer;text-decoration:none;transition:border-color var(--ease),color var(--ease),background var(--ease);}
.qa-btn:hover{border-color:var(--ac);color:var(--ac);background:var(--ac-muted);text-decoration:none;}
.stats{display:flex;gap:var(--space-5);padding-bottom:var(--space-4);}
.stat{flex-shrink:0;}
.snum{font-size:var(--text-2xl);font-weight:var(--font-extrabold);line-height:1;}
.snum.ok{color:var(--gr);}
.snum.warn{color:var(--rd);}
.snum.tbc{color:var(--ac);}
.slbl{font-size:var(--text-xs);color:var(--tx3);text-transform:uppercase;letter-spacing:0.05em;margin-top:var(--space-1);}
.tabs{display:flex;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.tabs::-webkit-scrollbar{display:none;}
.tab{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-bold);cursor:pointer;border-bottom:2px solid transparent;color:var(--tx3);transition:color var(--ease),border-color var(--ease);white-space:nowrap;flex-shrink:0;}
.tab:hover{color:var(--tx2);}
.tab.on{color:var(--ac);border-bottom-color:var(--ac);}
.m-body{flex:1;padding:var(--space-5);}

/* ── TOOLBAR ── */
.tbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center;}
.tbar-secondary{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap;align-items:center;padding:6px 0;border-top:1px dashed var(--bd);}
.tbar-secondary .btn{font-size:11px;padding:4px 10px;color:var(--tx3);background:var(--bg);}

/* ── ROOM CARDS ── */
.alert-b{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--r);padding:10px 14px;font-size:12px;color:#991b1b;margin-bottom:14px;}
.tbc-b{background:#fffbeb;border:1px solid #fde68a;border-radius:var(--r);padding:10px 14px;font-size:12px;color:#92400e;margin-bottom:14px;}
.sh{font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);letter-spacing:0;color:var(--colour-text-secondary);text-transform:none;margin-bottom:10px;padding-bottom:0;padding-left:10px;border-bottom:none;border-left:3px solid var(--colour-primary);}
.rg{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-bottom:24px;}
.rc{background:var(--white);border:1.5px solid var(--bd);border-radius:var(--r);overflow:hidden;transition:all .15s;cursor:pointer;}
.rc:hover{border-color:var(--bd2);box-shadow:var(--sh);}
.rc.hot:hover{border-color:var(--ac);box-shadow:var(--sh-sm);}
.rc.tbc-room{border-color:#fde68a;}
.rc-h{padding:10px 12px 7px;display:flex;align-items:center;justify-content:space-between;}
.rn{font-size:20px;font-weight:700;}
.rn.tbc{font-size:14px;color:var(--ac2);}
.tb{font-size:11px;padding:2px 7px;border-radius:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;}
.tb.twin{background:#eff6ff;color:var(--bl);}
.tb.single{background:#f5f3ff;color:#7c3aed;}
.tb.double{background:#fffbeb;color:#b45309;}
.tb.triple{background:#f0fdf4;color:#16a34a;}
.tb.quad{background:#fdf2f8;color:var(--pk);}
.tb.quint,.tb.sext{background:#fff7ed;color:var(--ac);}
.cbar{height:3px;background:var(--bd);margin:0 12px;}
.cfill{height:100%;border-radius:2px;transition:width .3s;background:var(--gr);}
.cfill.w{background:var(--ac2);}
.cfill.f{background:var(--rd);}
.rc-b{padding:8px 12px;min-height:34px;}
.or{display:flex;align-items:center;gap:6px;padding:3px;border-radius:4px;transition:background .1s;}
.or:hover{background:var(--bg);}
.on2{flex:1;font-size:12px;}
.ox{opacity:0;background:none;border:none;cursor:pointer;color:var(--rd);font-size:16px;padding:0 2px;min-width:20px;min-height:20px;display:flex;align-items:center;justify-content:center;}
.or:hover .ox{opacity:1;}
.re{font-size:12px;color:var(--tx3);padding:4px 0;font-style:italic;}
.rc-f{padding:6px 12px;background:var(--bg);font-size:11px;color:var(--tx3);display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--bd);}
.eb{color:var(--tx3);cursor:pointer;font-size:11px;background:none;border:none;font-family:inherit;padding:3px 2px;}
.eb:hover{color:var(--tx);}
.add-rt{border:1.5px dashed var(--bd);border-radius:var(--r);display:flex;align-items:center;justify-content:center;min-height:80px;cursor:pointer;color:var(--tx3);font-size:12px;gap:6px;transition:all .15s;background:transparent;}
.add-rt:hover{border-color:var(--ac);color:var(--ac);}

/* ── MANAGE SECTION ── */
.ms{background:var(--white);border:1px solid var(--bd);border-radius:var(--radius-md,12px);overflow:hidden;margin-bottom:var(--space-4);box-shadow:var(--sh-xs);}
.ms-h{padding:12px 16px;border-bottom:1px solid var(--bd);display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;}
.ms-t{font-size:var(--font-size-label);font-weight:var(--font-weight-bold);letter-spacing:0.08em;text-transform:uppercase;color:var(--colour-text-label);display:flex;align-items:center;gap:6px;}
.ms-a{display:flex;gap:6px;flex-wrap:wrap;}
.ar{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--bd);transition:background .1s;}
.ar:last-child{border-bottom:none;}
.ar:hover{background:var(--bg);}
.ar-m{flex:1;min-width:0;}
.ar-n{font-size:var(--font-size-card-title);font-weight:var(--font-weight-semibold);color:var(--colour-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ar-s{font-size:var(--font-size-small);font-weight:var(--font-weight-regular);color:var(--colour-text-secondary);margin-top:1px;}
.ar-a{display:flex;gap:4px;flex-shrink:0;}
.ms-a2{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 16px;border-bottom:1px solid var(--bd);background:var(--bg-subtle,#f8fafc);}
.ib{background:transparent;border:1.5px solid var(--colour-border);border-radius:var(--radius-sm);padding:4px 10px;cursor:pointer;font-size:var(--font-size-label);color:var(--colour-text-primary);transition:all .12s;font-family:inherit;font-weight:var(--font-weight-medium);min-width:58px;text-align:center;}
.ib:hover{color:var(--colour-text-primary);border-color:#999;}
.ib.del{background:none;border:none;border-radius:0;color:var(--colour-destructive);font-size:var(--font-size-small);font-weight:var(--font-weight-regular);padding:6px 10px;min-width:0;}
.ib.del:hover{text-decoration:underline;color:#aa2222;background:none;border-color:transparent;}

/* ── RENUMBER TABLE ── */
.rn-table{width:100%;border-collapse:collapse;margin-top:10px;}
.rn-table th{font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--tx3);padding:8px 12px;border-bottom:1px solid var(--bd);text-align:left;}
.rn-table td{padding:6px 8px;border-bottom:1px solid var(--bd);}
.rn-table tr:last-child td{border-bottom:none;}
.rn-table .occ-cell{font-size:12px;color:var(--tx2);}
.rn-input{background:var(--white);border:1px solid var(--bd);border-radius:var(--radius-sm,8px);padding:var(--space-3) var(--space-4);min-height:40px;font:inherit;font-size:var(--text-base);color:var(--tx);outline:none;width:100%;transition:border-color var(--ease),box-shadow var(--ease);}
.rn-input:focus{border-color:var(--bd-focus);box-shadow:0 0 0 3px var(--ac-muted);}
.cur-lbl{font-size:12px;font-weight:700;color:var(--tx2);}
.rn-type{font-size:10px;padding:2px 6px;border-radius:8px;}

/* ── BREAKFAST ── */
.bfc{background:var(--white);border:1px solid var(--bd);border-radius:var(--r);padding:12px 16px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:12px;}
.bfd{font-size:14px;font-weight:700;}
.bft{color:var(--tx2);font-size:12px;margin-top:2px;}

/* ── ROOM-FOR BADGES ── */
.room-for-badge{font-size:11px;padding:1px 5px;border-radius:8px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;margin-left:4px;}
.rf-staff,.rf-adults{background:#f0fdf4;color:#0d9488;}
.rf-family{background:#eff6ff;color:#3b82f6;}
.rf-girls{background:#fdf2f8;color:#ec4899;}
.rf-boys{background:#f0f4ff;color:#1e293b;}

/* ── PRIVATE ── */
.rc.private-room{opacity:.6;border-style:dashed;}

/* ── EMPTY STATE ── */
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--colour-text-label);text-align:center;gap:14px;min-height:200px;animation:emptyFadeIn .4s ease-out;}
@keyframes emptyFadeIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
.empty .empty-ico{display:flex;align-items:center;justify-content:center;width:72px;height:72px;margin:0 auto;background:var(--colour-bg-subtle);border-radius:50%;}
.empty .empty-ico svg{width:36px;height:36px;stroke:var(--colour-text-muted);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
.empty i{font-size:36px;font-style:normal;display:none;}
.empty h3{font-size:var(--font-size-section-title);font-weight:var(--font-weight-semibold);color:var(--colour-text-primary);margin:0;}
.empty p{font-size:var(--font-size-body);color:var(--colour-text-label);line-height:var(--line-height-relaxed);max-width:260px;margin:0;}
.empty .btn{margin-top:var(--space-xs);}

/* ── ITINERARY CARDS (traveller/leader view) ── */
.itin-card{transition:box-shadow .15s;}
.itin-card:hover{box-shadow:var(--sh);}

/* ── INFOBOX ── */
.infobox{background:var(--colour-bg-subtle);border:1px solid var(--bd);border-radius:var(--radius-md,12px);padding:var(--space-3) var(--space-4);font-size:var(--text-base);color:var(--colour-text-secondary);line-height:1.6;margin-bottom:var(--space-4);}
.infobox b{color:var(--colour-text-secondary);}

/* ── ACCESS CODE CARD ── */
.code-card{background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-md,12px);padding:var(--space-3) var(--space-4);display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2);}
.code-val{font-family:monospace;font-size:15px;font-weight:700;letter-spacing:1px;color:var(--tx);}
.code-meta{font-size:11px;color:var(--tx3);}

/* ── MODAL ── */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:500;display:flex;align-items:center;justify-content:center;padding:var(--space-6);animation:fadeIn .15s ease-out;}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{background:var(--white);border:1px solid var(--bd);border-radius:var(--radius-lg);padding:var(--space-6);width:100%;max-width:480px;max-height:85vh;overflow-y:auto;box-shadow:var(--sh-lg);animation:scaleIn .2s ease-out;}
@keyframes scaleIn{from{transform:scale(.98);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.modal-drag{width:36px;height:5px;background:var(--bd2);border-radius:3px;margin:0 auto var(--space-4);flex-shrink:0;}
.modal h2{font-size:var(--text-xl);font-weight:var(--font-extrabold);margin-bottom:var(--space-5);}
.modal .fr{margin-bottom:var(--space-4);}
.modal .fl{display:block;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:0.05em;color:var(--tx3);margin-bottom:var(--space-1);font-weight:var(--font-semibold);white-space:nowrap;}
.modal .fi,.modal .fs{width:100%;background:var(--white);border:1px solid var(--bd);border-radius:var(--radius);padding:var(--space-3) var(--space-4);font:inherit;font-size:var(--text-sm);color:var(--tx);outline:none;transition:border-color var(--ease),box-shadow var(--ease);}
.modal .fi:focus,.modal .fs:focus{border-color:var(--bd-focus);box-shadow:0 0 0 3px var(--ac-muted);}
.modal .fi::placeholder{color:var(--tx3);}
.modal .fhint{font-size:var(--text-xs);color:var(--tx3);margin-top:var(--space-1);}
.modal .ma,.modal-actions{display:flex;gap:var(--space-2);justify-content:flex-end;margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--bd);}
.modal input,.modal select,.modal textarea{max-width:100%;min-width:0;box-sizing:border-box;}
.modal input[type="checkbox"],.modal input[type="radio"]{width:auto;min-height:auto;}
.modal table{max-width:100%;overflow-x:auto;display:block;}

/* ── 2FA POPUP ── */
.tfa-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:9000;display:flex;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:fadeIn .2s ease-out;}
.tfa-popup{background:#fff;border-radius:16px;padding:32px 28px;width:100%;max-width:380px;box-shadow:0 16px 48px rgba(0,0,0,.2);animation:scaleIn .25s ease-out;}
.tfa-icon{width:56px;height:56px;border-radius:50%;background:#eab308;color:#000;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;}
@media(max-width:480px){
  .tfa-popup{padding:24px 18px;max-width:calc(100vw - 32px);border-radius:14px;}
}


/* ── HINT BAR ── */
.hint{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--white);border:1.5px solid var(--ac);padding:10px 18px;border-radius:40px;font-size:12px;box-shadow:var(--sh2);z-index:300;display:flex;align-items:center;gap:10px;white-space:nowrap;}
.hn{color:var(--ac);font-weight:600;max-width:160px;overflow:hidden;text-overflow:ellipsis;}
.hx{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:16px;}

/* ── HOTEL PAGE ── */
.hotel-city{margin-bottom:var(--space-8);}
.hotel-city h2{font-size:18px;font-weight:700;margin-bottom:4px;}
.hotel-city .hotel-meta{font-size:12px;color:var(--tx3);margin-bottom:var(--space-3);}
.room-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.room-table{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--bd);border-radius:var(--r);overflow:hidden;min-width:400px;}
.room-table th{background:var(--bg);font-size:11px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;padding:10px 14px;text-align:left;}
.room-table td{padding:10px 14px;border-top:1px solid var(--bd);font-size:13px;}
.room-table tr:hover td{background:var(--colour-bg-subtle);}
.room-table .room-num-input{border:1px solid var(--bd);border-radius:4px;padding:5px 8px;font:inherit;font-size:13px;width:100px;outline:none;}
.room-table .room-num-input:focus{border-color:var(--ac);}

/* ── HOTEL SUGGEST DROPDOWN ── */
.suggest-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--white);border:1px solid var(--bd);border-radius:0 0 var(--r) var(--r);max-height:200px;overflow-y:auto;z-index:120;display:none;box-shadow:0 4px 12px rgba(0,0,0,.1);}
.suggest-item{padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--bd);font-size:13px;}
.suggest-item:hover{background:var(--bg2);}
.suggest-item:last-child{border-bottom:none;}

/* ── OPS DASHBOARD ── */
.ops-dash{padding:10px 0 0;background:transparent;}
.ops-cards-row{display:flex;gap:10px;margin-bottom:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px;scroll-snap-type:x mandatory;}
.ops-cards-row.ops-cards-3{overflow:visible;}
.ops-cards-row::-webkit-scrollbar{display:none;}
.ops-scroll-track{width:100%;height:3px;border-radius:2px;background:var(--colour-border);margin-bottom:6px;overflow:hidden;}
.ops-scroll-fill{height:100%;border-radius:2px;background:var(--colour-primary);transition:width .1s,margin-left .1s;}
.ops-announce-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:var(--colour-bg-card);border:none;border-radius:var(--radius-md);margin-bottom:4px;box-shadow:var(--shadow-card);}
.ops-announce-bar .ops-announce-label{font-size:13px;font-weight:700;}
.ops-announce-list{font-size:12px;color:var(--tx3);padding:4px 0 0;}
.ops-card{background:var(--colour-bg-card,#fff);border:1px solid var(--colour-border);border-radius:var(--radius-md,14px);padding:14px 16px;display:flex;align-items:center;gap:10px;cursor:default;transition:box-shadow .2s ease,transform .2s ease;min-width:0;flex:1 1 0;white-space:nowrap;scroll-snap-align:start;box-shadow:var(--shadow-card);}
.ops-card:hover{box-shadow:var(--shadow-elevated);transform:translateY(-1px);}
.ops-card-urgent{background:#fef8f8;}
.ops-card-urgent .ops-val{color:#dc2626;}
.ops-card-ok{background:#f6fef9;}
.ops-card-ok .ops-val{color:#16a34a;}
.ops-ico{font-size:18px;flex-shrink:0;line-height:1;opacity:.7;}
.ops-val{font-size:17px;font-weight:700;color:var(--colour-text-primary);line-height:1.2;letter-spacing:-0.01em;}
.ops-plus{font-size:12px;color:var(--colour-text-muted);font-weight:500;}
.ops-lbl{font-size:12px;font-weight:500;color:var(--colour-text-muted);text-transform:none;letter-spacing:0;}
.ops-sub{font-size:11px;color:var(--colour-text-muted);margin-top:2px;}
.ops-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:3px;vertical-align:middle;}
.ops-dot.green{background:#22c55e;}
.ops-dot.red{background:#ef4444;}
.ops-dot.yellow{background:#f59e0b;}

/* ── MANAGE SECTION HEADERS ── */
.manage-section-hdr{font-size:16px;font-weight:700;color:var(--colour-text-primary);margin:var(--space-5) 0 var(--space-3);padding:0 2px;}
.manage-section-hdr:first-child{margin-top:0;}

/* ── QUICK ACTION ICON CARDS ── */
.mqa-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:20px;}
.mqa-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-3);background:var(--colour-bg-card);border:1px solid var(--colour-border);border-radius:var(--radius-md,12px);text-decoration:none;color:var(--colour-text-primary);transition:all .15s;cursor:pointer;text-align:center;box-shadow:var(--sh-xs);}
.mqa-card:hover{border-color:var(--colour-primary);box-shadow:var(--sh-sm);transform:translateY(-1px);text-decoration:none;color:var(--colour-text-primary);}
.mqa-card:active{transform:scale(.97);}
.mqa-ico{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;flex-shrink:0;}
.mqa-label{font-size:12px;font-weight:700;line-height:1.2;}

/* ── ROOM ASSIGN BUTTON ── */
.rc-add-btn{display:block;width:100%;margin-top:6px;padding:5px 8px;border:1.5px dashed #22c55e;border-radius:6px;background:#f0fdf4;color:#16a34a;font-size:11px;font-weight:700;cursor:pointer;text-align:center;transition:all .12s;font-family:inherit;}
.rc-add-btn:hover{background:#dcfce7;border-color:#16a34a;}

/* ── REMOVE OCCUPANT BUTTON ── */
.rm-occ-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:1px solid var(--rd);background:#fef2f2;color:var(--rd);font-size:14px;font-weight:700;cursor:pointer;transition:all .12s;flex-shrink:0;padding:0;line-height:1;font-family:inherit;}
.rm-occ-btn:hover{background:var(--rd);color:#fff;}

/* ── ASSIGN LIST (modal) ── */
.assign-list{max-height:300px;overflow-y:auto;border:1px solid var(--bd);border-radius:var(--r);margin-top:8px;}
.assign-item{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--bd);transition:background .1s;font-size:13px;}
.assign-item:last-child{border-bottom:none;}
.assign-item:hover{background:#f0fdf4;}

/* ── HOTEL LIST CARDS ── */
.hotel-list{display:flex;flex-direction:column;gap:10px;}
.hotel-list-card{display:flex;align-items:center;gap:14px;background:var(--white);border:1px solid var(--bd);border-radius:var(--r);padding:14px 16px;cursor:pointer;transition:all .15s;}
.hotel-list-card:hover{border-color:var(--ac);box-shadow:var(--sh);}
.hlc-icon{font-size:28px;flex-shrink:0;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#fef3c7;border-radius:10px;}
.hlc-info{flex:1;min-width:0;}
.hlc-name{font-size:15px;font-weight:600;color:var(--colour-text-primary);}
.hlc-hotel{font-size:13px;font-weight:400;color:var(--colour-text-secondary);}
.hlc-meta{font-size:13px;font-weight:400;color:var(--colour-text-secondary);margin-top:2px;}
.hlc-actions{display:flex;gap:4px;flex-shrink:0;}

/* ── SETTINGS CARD ── */
.sett-card .sett-grid{padding:16px;display:flex;flex-direction:column;gap:14px;}
.sett-section{background:var(--bg);border:1px solid var(--bd);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;gap:10px;}
.sett-section-title{font-size:11px;font-weight:700;color:var(--colour-text-label);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:2px;}
.sett-row-2{display:flex;gap:12px;}
.sett-row-2>.sett-field{flex:1;min-width:0;}
.sett-field{display:flex;flex-direction:column;gap:4px;}
.sett-lbl{font-size:11px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.4px;}
.sett-field .fi{font-size:14px;}
textarea.fi{width:100%;box-sizing:border-box;min-height:120px;resize:vertical;overflow-y:auto;line-height:1.6;font-family:inherit;}
#tourSummaryTxt{min-height:160px;}
#handoverTxt{min-height:180px;}
#tdrI{min-height:100px;}
.sett-divider{height:1px;background:var(--bd);margin:2px 0;}
.sett-toggle{display:flex;flex-direction:column;gap:4px;}
.sett-toggle-lbl{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;font-weight:600;color:var(--tx);}
.sett-toggle-lbl input[type="checkbox"]{width:18px;height:18px;accent-color:var(--ac);}
.sett-hint{font-size:11px;color:var(--tx3);padding-left:26px;}
.sett-code-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.sett-code{font-size:15px;font-weight:700;letter-spacing:1px;background:var(--bg);padding:6px 12px;border-radius:var(--r);word-break:break-all;}

/* ── FORM BUILDER ── */
.form-items-list{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
.form-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;border:1px solid var(--bd);}
.form-item-drag{cursor:grab;font-size:14px;color:var(--tx3);user-select:none;flex-shrink:0;line-height:1;}
.form-item-body{flex:1;min-width:0;}
.form-item-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.form-item-icon{font-size:14px;flex-shrink:0;}
.form-item-label{font-size:13px;word-break:break-word;}
.form-item-title{font-weight:700;font-size:14px;}
.form-item-ph{font-size:11px;color:var(--tx3);margin-top:2px;}
.form-item-badge{font-size:10px;color:var(--tx3);background:var(--white);padding:2px 7px;border-radius:4px;border:1px solid var(--bd);white-space:nowrap;flex-shrink:0;}
.form-item-btns{display:flex;gap:3px;flex-shrink:0;}
.form-item-btns .ib{padding:3px 6px;font-size:11px;}
.form-add-section{margin-top:14px;padding-top:14px;border-top:1px solid var(--bd);}
.form-add-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;}

/* ── SUPPLIER CARDS ── */
.sup-card{background:var(--colour-bg-card);border:none;border-radius:var(--radius-md,14px);overflow:hidden;margin-bottom:var(--space-sm);box-shadow:var(--shadow-card);transition:box-shadow .2s ease;}
.sup-card:hover{box-shadow:var(--shadow-elevated);}
.sup-ok{border-left:3px solid #22c55e;}
.sup-pending{border-left:3px solid #ef4444;}
.sup-card-header{padding:12px 16px;}
.sup-card-info{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px;}
.sup-card-name{font-weight:600;font-size:15px;color:var(--colour-text-primary);}
.sup-card-status{font-size:11px;white-space:nowrap;}
.sup-card-meta{font-size:13px;font-weight:400;color:var(--colour-text-secondary);line-height:1.4;}
.sup-card-desc{font-size:14px;color:var(--colour-text-secondary);margin-top:4px;line-height:1.6;}
.sup-card-actions{display:flex;gap:6px;padding:0 16px 12px;flex-wrap:wrap;}
.sup-card-actions .btn{flex:1;text-align:center;min-width:60px;}

/* ── PORTAL (Group Leader & Hotel) — premium, mobile-first ── */
body.portal-leader,
body.portal-hotel{background:#f1f5f9;}
.portal .tour-bar{background:var(--colour-bg-card);border:none;border-radius:var(--radius-md,14px);padding:var(--space-4) var(--space-5);box-shadow:var(--shadow-card);margin:12px 0 0;}
.portal .tour-bar-code{font-size:var(--text-xs);letter-spacing:0.06em;}
.portal .tour-bar-name{font-size:var(--text-lg);font-weight:500;}
.portal-section{margin-bottom:24px;}
.portal-section-title{font-size:12px;font-weight:600;letter-spacing:0;color:var(--colour-text-secondary);text-transform:none;margin-bottom:12px;padding-bottom:0;padding-left:10px;border-bottom:none;border-left:3px solid var(--ac);display:flex;align-items:center;gap:8px;}
.portal-section-title::before{display:none;}
.portal-card{background:var(--colour-bg-card);border-radius:var(--radius-md,14px);box-shadow:var(--shadow-card);border:none;overflow:hidden;}
.portal-card .card-body{padding:18px 20px;}
.portal-contact-strip{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:var(--white);border-radius:var(--radius-md,12px);border:1px solid var(--bd);box-shadow:var(--sh-xs);}
.portal-contact-strip .contact-icon{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#eab308,#ca8a04);color:#000;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;}
.portal-contact-strip .contact-text{flex:1;min-width:0;}
.portal-contact-strip .contact-label{font-size:11px;font-weight:700;letter-spacing:.5px;color:var(--tx3);text-transform:uppercase;}
.portal-contact-strip .contact-value{font-size:14px;font-weight:600;color:var(--tx);margin-top:2px;}
.portal-contact-strip a{color:var(--ac);text-decoration:none;font-weight:500;}
.portal-contact-strip a:hover{text-decoration:underline;}
.portal-checklist-card{background:var(--white);border-radius:var(--radius-md,12px);box-shadow:var(--sh-xs);border:1px solid var(--bd);padding:0;overflow:hidden;}
.portal-checklist-card .checklist-header{font-size:12px;font-weight:500;letter-spacing:1px;color:var(--tx3);text-transform:uppercase;padding:14px 20px;background:#f8fafc;border-bottom:1px solid var(--bd);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;}
.portal-checklist-item{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--bd);min-height:52px;}
.portal-checklist-item:last-child{border-bottom:none;}
.portal-checklist-item .item-done{font-size:13px;color:#166534;font-weight:600;}
.portal-checklist-item .btn{min-height:44px;padding:10px 18px;font-size:14px;border-radius:10px;}
.portal-checklist-export{padding:14px 20px;background:#f8fafc;border-top:1px solid var(--bd);}
.portal-checklist-export .btn{min-height:44px;padding:10px 16px;}
.portal-hero{text-align:center;padding:28px 20px 24px;}
.portal-hero .portal-badge{display:inline-block;font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--tx3);margin-bottom:10px;}
.portal-hero .page-title{font-size:24px;font-weight:700;line-height:1.25;margin-bottom:6px;}
.portal-hero .page-sub{font-size:14px;color:var(--tx2);max-width:420px;margin:0 auto;}
.portal-overview-grid{display:grid;gap:14px;}
.portal-overview-block{padding:16px 18px;background:#f8fafc;border-radius:12px;border:1px solid var(--bd);}
.portal-overview-block h3{font-size:13px;font-weight:700;margin-bottom:10px;color:var(--tx);}
.portal-overview-block p,.portal-overview-block ul{margin:0;font-size:13px;color:var(--tx2);line-height:1.6;}
.portal-overview-block ul{margin:4px 0 0 18px;padding:0;}
.hotel-section-title{font-size:18px;font-weight:700;color:var(--tx);margin:28px 0 14px;padding-bottom:8px;border-bottom:2px solid var(--ac);}
.hotel-section-title:first-of-type{margin-top:0;}
.hotel-add-room-form .form-group .form-input,.hotel-add-room-form .form-group .form-select{min-height:44px;}
@media(max-width:640px){
  .hotel-add-room-form{grid-template-columns:1fr 1fr !important;}
  .hotel-add-room-form .form-group:last-child{grid-column:1 / -1;}
}
.htl-room-card{min-height:52px;}
.htl-room-actions .btn{min-height:40px;}
.portal .btn{min-height:44px;padding:10px 18px;font-size:14px;border-radius:10px;}
.portal .btn-sm{min-height:40px;padding:8px 14px;font-size:13px;border-radius:8px;}
.portal .m-body{padding:var(--space-5) var(--space-4);}
@media(max-width:640px){
  body.portal-leader,body.portal-hotel{background:var(--bg-subtle);}
  .portal .tour-bar{padding:var(--space-3) var(--space-4);}
  .portal .tour-bar-name{font-size:var(--text-base);}
  .portal .m-body{padding:var(--space-4) var(--space-3);}
  .portal-checklist-card{margin:0 var(--space-3) var(--space-3) !important;}
  .portal-section{margin-bottom:20px;}
  .portal-section-title{margin-bottom:10px;}
  .portal-card .card-body,.portal-checklist-item,.portal-checklist-export{padding:14px 16px;}
  .portal-checklist-card .checklist-header{padding:12px 16px;}
  .portal-hero{padding:22px 16px 20px;}
  .portal-hero .page-title{font-size:20px;}
  .portal-overview-block{padding:14px 16px;}
  .hotel-section-title{font-size:16px;margin:22px 0 12px;}
}

/* ── GL HOME (Group Leader landing) ── */
.gl-home{padding:20px 16px 32px;max-width:520px;margin:0 auto;text-align:center;}
.gl-home .portal-section{margin-top:24px;}
.gl-home .portal-section:first-of-type{margin-top:20px;}
.gl-home .portal-section-title{justify-content:center;text-align:center;margin-top:0;margin-bottom:12px;}
.gl-td-contact{font-size:13px;color:var(--tx2);margin:0 auto var(--space-3);padding:var(--space-4) var(--space-5);background:var(--white);border-radius:var(--radius-md,12px);border:1px solid var(--bd);box-shadow:var(--sh-xs);text-align:left;max-width:100%;line-height:1.6;}
.gl-td-contact a{color:var(--ac);text-decoration:none;font-weight:500;}
.gl-td-contact a:hover{text-decoration:underline;}
.gl-tour-dates{font-size:14px;color:var(--tx2);margin:0 auto 16px;padding:12px 18px;background:var(--white);border-radius:10px;border:1px solid var(--bd);text-align:left;max-width:100%;line-height:1.5;}
.gl-countdown{font-weight:600;color:var(--ac);}
.gl-greeting{font-size:15px;color:var(--tx2);margin-bottom:4px;}
.gl-tour-name{font-size:22px;font-weight:600;color:var(--tx);margin-bottom:24px;}
.gl-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;justify-content:center;max-width:400px;margin:0 auto;}
.gl-card{min-width:0;background:var(--white);border:1px solid var(--bd);border-radius:var(--radius-md,12px);padding:var(--space-6) var(--space-4) var(--space-5);cursor:pointer;text-align:center;transition:all .2s;box-shadow:var(--sh-xs);}
.gl-card:hover,.gl-card:active{transform:translateY(-2px);box-shadow:var(--sh-md);border-color:var(--ac);}
.gl-card:focus-visible{outline:2px solid var(--ac);outline-offset:2px;}
.gl-card-icon{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:28px;margin:0 auto 14px;color:#fff;}
.gl-card-title{font-size:15px;font-weight:600;color:var(--tx);margin-bottom:4px;}
.gl-card-desc{font-size:12px;color:var(--tx3);}

/* ── GL INFO CARDS (TD contact & dates) ── */
.gl-info-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:16px 0 20px;}
.gl-info-card{background:var(--white);border:1px solid var(--bd);border-radius:12px;padding:18px 16px;text-align:center;}
.gl-info-card-title{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;color:var(--tx3);margin-bottom:8px;}
.gl-info-card-name{font-size:17px;font-weight:600;color:var(--tx);margin-bottom:6px;}
.gl-info-card-links{display:flex;flex-direction:column;gap:6px;align-items:center;}
.gl-info-card-links a.gl-td-link{font-size:13px;color:var(--ac);text-decoration:none;font-weight:500;word-break:break-all;overflow-wrap:break-word;display:inline-flex;align-items:center;gap:4px;}
.gl-info-card-links a.gl-td-link:hover{text-decoration:underline;}
.gl-td-ico{display:inline-block;font-size:14px;line-height:1;vertical-align:middle;flex-shrink:0;}
.gl-info-card-sub{font-size:12px;font-weight:600;color:var(--tx3);margin-top:2px;}

/* ── GL WELCOME CARD (merged greeting + tour name + dates) ── */
.gl-welcome-card{background:var(--white);border:1px solid var(--bd);border-radius:var(--radius-md,12px);padding:var(--space-5) var(--space-5);margin-bottom:var(--space-4);box-shadow:var(--sh-xs);}
.gl-wc-greeting{font-size:15px;color:var(--tx2);margin-bottom:4px;}
.gl-wc-greeting b{font-weight:500;color:var(--tx);}
.gl-wc-tour{font-size:20px;font-weight:600;color:var(--tx);margin-bottom:6px;}
.gl-wc-dates{font-size:13px;color:var(--tx2);margin-bottom:4px;}
.gl-wc-countdown-row{margin-top:2px;}
.gl-wc-countdown{font-size:12px;font-weight:500;color:var(--tx3);}

/* ── GL CARD ARROW (tap indicator) ── */
.gl-card-arrow{color:var(--tx3);margin-top:8px;display:flex;align-items:center;justify-content:center;opacity:.5;transition:opacity .2s;}
.gl-card:hover .gl-card-arrow,.gl-card:active .gl-card-arrow{opacity:1;}
.gl-card-arrow svg{width:16px;height:16px;}

/* ── GL ACCENT COLOUR OVERRIDE ── */
body.portal-leader .tour-bar-code{color:#185FA5;}
/* GL has no topbar — adjust sticky nav and container height */
body.portal-leader #app,body.portal-leader #app.app-scroll{min-height:100dvh;}
body.portal-leader .app-nav{top:0;}
body.portal-leader .tour-bar{display:none;}
body.portal-leader .m-top:empty{display:none;}
body.portal-leader .m-top{border-bottom:none;}

/* ── GL HOME CARDS (checklist, chaperone, announcements — sit inside tour-content) ── */
.gl-home-card{margin:4px var(--space-4) 10px;}
@media(max-width:640px){.gl-home-card{margin:4px var(--space-3) 10px;}}

/* ── CHECKLIST COLLAPSE ── */
.checklist-header .checklist-chev{transition:transform .2s;flex-shrink:0;}
.checklist-header .checklist-chev.open{transform:rotate(180deg);}
.checklist-body{transition:max-height .25s ease;}
.checklist-body.collapsed{display:none;}

/* ── GL ANNOUNCEMENT BADGE ── */
.gl-ann-dot{width:8px;height:8px;border-radius:50%;background:#dc2626;display:inline-block;margin-left:4px;vertical-align:middle;animation:glDotPulse 1.5s infinite;}
@keyframes glDotPulse{0%,100%{opacity:1;}50%{opacity:.4;}}

/* ── GL NAV (icon-only tabs) ── */
/* ── HEADCOUNT REDESIGN ── */
.hc-wrap{padding:16px;max-width:500px;margin:0 auto;}
.hc-counter{font-size:48px;font-weight:900;text-align:center;line-height:1;}
.hc-counter-sub{text-align:center;font-size:14px;font-weight:600;color:var(--tx3);margin:4px 0 2px;}
.hc-ts{text-align:center;font-size:11px;color:var(--tx3);margin-bottom:8px;}
.hc-actions{display:flex;gap:8px;justify-content:center;margin:12px 0;}
.hc-btn-check{background:#16a34a;color:#fff;border:none;font-weight:600;}
.hc-btn-reset{background:#dc2626;color:#fff;border:none;font-weight:600;}
.hc-search-wrap{position:sticky;top:0;z-index:5;background:var(--bg);padding:8px 0;}
.hc-search{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--bd);border-radius:var(--radius-sm,8px);font-size:var(--text-base);min-height:40px;outline:none;box-sizing:border-box;transition:border-color var(--ease),box-shadow var(--ease);}
.hc-search:focus{border-color:var(--bd-focus);box-shadow:0 0 0 3px var(--ac-muted);}
.hc-section-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin:16px 0 8px;padding:0 4px;}
.hc-missing-label{color:#dc2626;}
.hc-counted-label{color:#16a34a;}
.hc-name-list{display:flex;flex-direction:column;gap:8px;}
.hc-pill{display:flex;align-items:center;justify-content:center;width:100%;padding:16px 20px;border:2px solid var(--bd);border-radius:14px;background:var(--white);font-size:16px;font-weight:700;color:var(--tx);cursor:pointer;transition:all .15s;min-height:54px;user-select:none;-webkit-tap-highlight-color:transparent;text-align:center;box-sizing:border-box;}
.hc-pill:hover{border-color:var(--ac);transform:scale(.98);}
.hc-pill:active{transform:scale(.96);}
.hc-pill-missing{background:#fff;border-color:#fca5a5;color:#991b1b;}
.hc-pill-present{background:#dcfce7;border-color:#16a34a;color:#16a34a;opacity:.7;}
.hc-empty-msg{text-align:center;color:var(--tx3);font-size:13px;padding:12px;font-style:italic;}
@media(max-width:600px){
  .hc-pill{padding:14px 16px;font-size:15px;min-height:50px;border-radius:12px;}
  .hc-counter{font-size:40px;}
}

.gl-back-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:#22c55e;color:#fff;font-size:18px;font-weight:700;cursor:pointer;flex-shrink:0;margin-right:4px;transition:background .15s;line-height:1;}
.gl-back-btn:hover{background:#16a34a;}
.gl-ni{display:flex;align-items:center;justify-content:center;flex:1;min-height:48px;padding:10px 0!important;border-bottom:3px solid transparent!important;-webkit-tap-highlight-color:transparent;}
.gl-ni.on{border-bottom-color:var(--ac)!important;}
.gl-ico{font-size:24px;line-height:1;}
.portal .nav-row.nav-main .gl-back-btn{min-width:44px;min-height:44px;}

/* ── GL ITINERARY DAY ACCORDION ── */
.gl-day-row{background:#fff;border:1px solid var(--bd);border-radius:12px;margin-bottom:8px;overflow:hidden;cursor:pointer;}
.gl-day-head{display:flex;align-items:center;gap:10px;padding:12px 14px;flex-wrap:wrap;}
.gl-day-num{font-size:11px;color:var(--tx3);min-width:36px;}
.gl-day-city{font-size:14px;font-weight:600;color:var(--tx);flex:1;}
.gl-day-hotel{font-size:11px;color:var(--tx3);font-weight:500;flex-basis:100%;margin-left:46px;margin-top:-4px;}
.gl-day-date{font-size:12px;color:var(--tx2);}
.gl-day-toggle{font-size:11px;font-weight:600;color:#378ADD;white-space:nowrap;display:flex;align-items:center;gap:4px;flex-shrink:0;}
.gl-day-toggle svg{width:14px;height:14px;stroke:#378ADD;transition:transform .2s;}
.gl-day-toggle.open svg{transform:rotate(180deg);}
.gl-day-body{display:none;border-top:1px solid var(--bd);padding:10px 14px;background:#f8fafc;}
.gl-day-body.open{display:block;}
.gl-day-item{display:flex;gap:var(--space-2);font-size:13px;color:var(--colour-text-secondary);padding:4px 0;line-height:1.5;}
.gl-day-dot{width:5px;height:5px;border-radius:50%;background:#378ADD;margin-top:7px;flex-shrink:0;}
.gl-day-time{font-size:12px;color:#378ADD;min-width:38px;flex-shrink:0;font-weight:600;}

/* ── TD ITINERARY DAY ACCORDION (creator view) ── */
.itin-day-section{margin-bottom:10px;border:none;border-radius:14px;overflow:hidden;background:var(--colour-bg-card,var(--white));box-shadow:var(--shadow-card);}
.itin-day-hdr{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;transition:background .15s;}
.itin-day-hdr:hover{background:var(--colour-bg-subtle,#f8fafc);}
.itin-day-hdr-left{display:flex;align-items:center;gap:12px;min-width:0;flex:1;}
.itin-day-hdr-num{font-size:12px;font-weight:800;color:#fff;background:var(--ac);padding:4px 10px;border-radius:6px;white-space:nowrap;letter-spacing:.3px;text-transform:uppercase;}
.itin-day-hdr-label{font-size:14px;font-weight:600;color:var(--colour-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.itin-day-hdr-title{font-size:13px;font-weight:600;color:var(--ac);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px;}
.itin-day-hdr-city{font-size:12px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;opacity:.8;}
.itin-day-hdr-right{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.itin-day-hdr-count{font-size:11px;font-weight:700;background:var(--colour-bg-subtle,#f1f5f9);color:var(--tx3);padding:3px 9px;border-radius:10px;white-space:nowrap;}
.itin-day-hdr-chev{display:flex;align-items:center;color:var(--tx3);transition:transform .2s;}
.itin-day-hdr-chev.open svg{transform:rotate(180deg);}
.itin-day-body{display:none;}
.itin-day-body.open{display:block;padding:4px 18px 16px;}
.itin-day-today{background:linear-gradient(135deg,rgba(212,160,23,.05),rgba(212,160,23,.01));border-left:3px solid var(--ac);}
.itin-day-today .itin-day-hdr-num{background:var(--ac);}
.itin-day-today .itin-day-hdr-label{color:var(--ac);}

/* ── TD Itinerary Timeline Items ── */
.itin-tl{position:relative;padding-left:24px;}
.itin-tl::before{content:'';position:absolute;left:7px;top:0;bottom:0;width:2px;background:var(--bd);border-radius:1px;}
.itin-tl-item{position:relative;display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--colour-bg-subtle,#f1f5f9);}
.itin-tl-item:last-child{border-bottom:none;}
.itin-tl-item.itin-hidden{opacity:.45;}
.itin-tl-dot{position:absolute;left:-21px;top:14px;width:12px;height:12px;border-radius:50%;background:var(--ac);border:2px solid var(--white);box-shadow:0 0 0 2px var(--bd);z-index:1;flex-shrink:0;}
.itin-tl-dot.dot-coach{background:#3b82f6;}
.itin-tl-dot.dot-guide{background:#8b5cf6;}
.itin-tl-dot.dot-restaurant{background:#f97316;}
.itin-tl-dot.dot-radio{background:#06b6d4;}
.itin-tl-dot.dot-hotel{background:#64748b;}
.itin-tl-dot.dot-other{background:#94a3b8;}
.itin-tl-time{font-size:13px;font-weight:700;color:var(--ac);min-width:52px;flex-shrink:0;padding-top:1px;font-variant-numeric:tabular-nums;}
.itin-tl-content{flex:1;min-width:0;}
.itin-tl-title{font-size:14px;font-weight:600;color:var(--colour-text-primary);line-height:1.3;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.itin-tl-title .itin-tl-emoji{font-size:15px;flex-shrink:0;}
.itin-tl-display{font-size:11px;color:var(--gr);margin-top:2px;font-weight:500;}
.itin-tl-sup{font-size:11px;color:var(--tx3);font-style:italic;margin-top:2px;}
.itin-tl-loc{font-size:11px;color:var(--tx3);margin-top:1px;}
.itin-tl-desc{font-size:12px;color:var(--tx2);margin-top:2px;line-height:1.4;}
.itin-tl-badge{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px;text-transform:uppercase;letter-spacing:.3px;}
.itin-tl-badge-coach{background:#eff6ff;color:#1d4ed8;}
.itin-tl-badge-guide{background:#f5f3ff;color:#6d28d9;}
.itin-tl-badge-restaurant{background:#fff7ed;color:#c2410c;}
.itin-tl-badge-radio{background:#ecfeff;color:#0891b2;}
.itin-tl-badge-other{background:#f8fafc;color:#475569;}
.itin-tl-actions{display:flex;gap:4px;flex-shrink:0;align-items:center;margin-left:8px;padding-top:1px;}
.itin-tl-actions .btn{min-height:32px;padding:4px 8px;font-size:12px;border-radius:6px;}
.itin-tl-actions .btn-ghost-destructive{min-height:32px;padding:4px 8px;font-size:11px;}
.itin-tl-vis{font-size:16px;padding:4px 6px;background:none;border:none;cursor:pointer;border-radius:6px;transition:background .12s;line-height:1;}
.itin-tl-vis:hover{background:var(--colour-bg-subtle);}

/* Day overflow menu */
.itin-day-more{position:relative;display:inline-flex;}
.itin-day-more-btn{background:none;border:1px solid var(--bd);border-radius:6px;padding:4px 8px;font-size:14px;cursor:pointer;color:var(--tx3);transition:all .12s;line-height:1;}
.itin-day-more-btn:hover{background:var(--colour-bg-subtle);color:var(--tx);border-color:var(--bd2);}
.itin-day-menu{display:none;position:absolute;right:0;top:calc(100% + 4px);background:var(--white);border:1px solid var(--bd);border-radius:8px;box-shadow:var(--sh-md);z-index:60;min-width:160px;overflow:hidden;}
.itin-day-menu.open{display:block;}
.itin-day-menu-item{display:flex;align-items:center;gap:8px;padding:10px 14px;font-size:13px;cursor:pointer;border:none;background:none;width:100%;text-align:left;color:var(--colour-text-primary);transition:background .1s;font-family:inherit;}
.itin-day-menu-item:hover{background:var(--colour-bg-subtle);}
.itin-day-menu-item.destructive{color:var(--rd);}
.itin-day-menu-item.destructive:hover{background:var(--rd-muted);}

@media(max-width:640px){
  .itin-day-hdr{padding:12px 14px;gap:8px;}
  .itin-day-hdr-label{font-size:13px;}
  .itin-day-hdr-city{display:none;}
  .itin-day-body.open{padding:4px 12px 12px;}
  .itin-tl{padding-left:20px;}
  .itin-tl-dot{left:-17px;width:10px;height:10px;top:15px;}
  .itin-tl-time{min-width:46px;font-size:12px;}
  .itin-tl-title{font-size:13px;}
  .itin-tl-actions .btn{padding:3px 6px;font-size:11px;min-height:28px;}
}

/* ── HOTEL LIST ARROW ── */
.hlc-arrow{color:var(--tx3);flex-shrink:0;display:flex;align-items:center;}
.hlc-arrow svg{width:18px;height:18px;}

/* ── ADD TRAVELLERS BUTTON ── */
.btn-add-trav{background:var(--colour-primary)!important;color:#fff!important;font-weight:var(--font-weight-semibold)!important;border:1.5px solid var(--colour-primary)!important;border-radius:var(--radius-sm)!important;padding:6px 14px!important;font-size:12px!important;white-space:nowrap;}
.btn-add-trav:hover{background:var(--colour-primary-hover)!important;border-color:var(--colour-primary-hover)!important;}

/* ── HELP BOX ── */
.help-box{background:var(--colour-bg-subtle);border:none;border-left:2px solid var(--colour-primary,#D4A017);border-radius:var(--radius-sm);padding:12px 16px;margin-bottom:16px;font-size:12px;color:var(--colour-text-secondary);line-height:1.6;max-width:100%;overflow:hidden;}
.help-box b{color:var(--colour-text-primary);font-weight:600;}

/* ── RESPONSIVE ── */
@media(max-width:640px){
  .rg{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));}
  .access-cards{grid-template-columns:1fr;}
  .form-row{flex-direction:column;}
  .container{padding:16px 10px;}
  .ops-dash{padding:8px 0 0;}
  .ops-cards-row{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:4px;padding-bottom:2px;}
  .ops-card{padding:10px 12px;gap:8px;border-radius:10px;flex:0 0 auto;min-width:105px;scroll-snap-align:start;}
  .ops-ico{font-size:14px;}
  .ops-val{font-size:14px;}
  .ops-lbl{font-size:11px;}
  .ops-plus{font-size:10px;}
  .ops-sub{font-size:10px;}
  .ops-announce-bar{padding:6px 10px;margin-bottom:4px;border-radius:10px;}
  .ops-announce-bar .ops-announce-label{font-size:11px;}
  .tour-bar{padding:20px 16px;gap:8px;flex-wrap:wrap;margin:10px 0 0;border-radius:var(--radius-md,14px);}
  .tour-bar-info{min-width:0;flex:1 1 100%;}
  .tour-bar-actions{flex:1 1 auto;justify-content:flex-end;}
  .tour-bar-code{font-size:10px;padding:3px 8px;}
  .tour-bar-name{font-size:20px;font-weight:700;white-space:normal;overflow:visible;text-overflow:unset;}
  .voucher-label{font-size:10px;}
  .voucher-icon{width:30px;height:30px;font-size:16px;}
  .help-box{padding:10px 12px;font-size:11px;}
  .m-body{padding:14px 10px;}
  .m-top{padding:12px 10px 0;}
  .modal-bg{padding:0;align-items:flex-end;overflow-y:hidden;overflow-x:hidden;-webkit-overflow-scrolling:touch;}
  .modal{padding:12px 16px 24px;width:100%!important;max-width:100%!important;max-height:92vh;overflow-y:auto;overflow-x:hidden;box-sizing:border-box;border-radius:16px 16px 0 0;border-bottom:none;animation:sheetUp .3s cubic-bezier(.32,.72,0,1);}
  .modal .fi,.modal .fs{font-size:16px;padding:10px 12px;max-width:100%;min-width:0;box-sizing:border-box;width:100%;}
  .modal .form-input,.modal .form-select,.modal .form-textarea{max-width:100%;min-width:0;box-sizing:border-box;}
  .modal .form-row{flex-direction:column;gap:0;}
  .modal .ma,.modal-actions{flex-wrap:wrap;}
  .modal .ma .btn,.modal-actions .btn{flex:1;min-width:80px;text-align:center;}
  .topbar{padding:0 10px;height:48px;}
  .topbar-logo{height:28px;}
  .tour-back-arrow{font-size:18px;padding:2px;}
  .ms-h{padding:10px 12px;flex-wrap:wrap;gap:6px;}
  .ms-a{flex-wrap:wrap;gap:4px;}
  .ar{padding:8px 12px;}
  .btn-sm{min-height:40px;padding:6px 10px;}
  .tbar{gap:8px;flex-wrap:wrap;}
  .tbar .btn{font-size:11px;padding:6px 10px;min-height:36px;}
  .city-row h1{font-size:20px;}
  .stats{gap:14px;}
  .card-body{padding:12px !important;}
  .room-table{font-size:12px;}
  .room-table th,.room-table td{padding:6px 4px;}
  .room-num-input{width:80px;font-size:12px;padding:5px 6px;}
  .nav-row.nav-main{flex-wrap:nowrap;padding:6px 10px;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;background:transparent;}
  .nav-row.nav-main .ni.ni-icon{flex:0 0 auto;min-width:0;padding:8px 14px;border-radius:999px;gap:5px;scroll-snap-align:start;}
  .nav-row.nav-main .ni.ni-icon.on{background:var(--colour-primary);border-color:var(--colour-primary);box-shadow:0 2px 8px rgba(212,160,23,.25);}
  .nav-row.nav-main .ni.ni-icon.on .ni-ico,.nav-row.nav-main .ni.ni-icon.on .ni-lbl{color:#fff;}
  .nav-row.nav-main .ni.ni-icon .ni-ico svg{stroke:var(--colour-text-label);width:16px;height:16px;}
  .nav-row.nav-main .ni.ni-icon.on .ni-ico svg{stroke:#fff;}
  .nav-row.nav-main .ni.ni-icon:active{transform:scale(.95);}
  .nav-row.nav-main .ni.ni-icon .ni-lbl{font-size:12px;font-weight:600;}
  .nav-row.nav-main .ni.ni-icon.on .ni-lbl{color:#fff;font-weight:700;}
  .nav-row.nav-hotels{padding:4px 8px;gap:5px;}
  .nav-row.nav-hotels .ni{padding:8px 12px;font-size:11px;border-radius:8px;}
  .btn-add-trav{padding:8px 16px!important;font-size:13px!important;}
  .join-tour-form{max-width:100%;}
  .app-nav{top:56px;margin:8px 0 0;border-radius:0;background:transparent;border:none;box-shadow:none;}
  .hotel-list-card{padding:12px 14px;gap:12px;}
  .hlc-icon{width:36px;height:36px;font-size:22px;border-radius:8px;}
  .sett-section{padding:10px;}
  .sett-card .sett-grid{padding:12px;gap:10px;}
  .sett-row-2{flex-direction:column;gap:10px;}
  .sett-field .fi{font-size:16px;padding:10px 12px;}
  .sett-field select.fi{font-size:16px;padding:10px 12px;}
  .sett-field textarea.fi{font-size:14px;padding:10px 12px;}
  .sett-lbl{font-size:12px;}
  .manage-section-hdr{font-size:14px;margin:16px 0 8px;}
  .mqa-card{padding:14px 8px;}
  .mqa-ico{width:40px;height:40px;border-radius:10px;}
  .mqa-label{font-size:11px;}
  .sett-toggle-lbl{font-size:14px;}
  .sett-code{font-size:13px;padding:8px 10px;}
  .ms-a .btn{font-size:10px;padding:4px 8px;}
  .sup-card-header{padding:10px 12px;}
  .sup-card-name{font-size:13px;}
  .sup-card-meta{font-size:11px;}
  .sup-card-actions{padding:8px 12px 12px;gap:8px;}
  .sup-card-actions .btn{font-size:12px;padding:8px 10px;flex:0 1 auto;min-width:auto;}
  .gl-home{padding:16px 12px 28px;}
  .gl-cards{grid-template-columns:repeat(2,1fr);gap:10px;max-width:100%;}
  .gl-card{min-width:0;padding:14px 8px 12px;}
  .gl-card-icon{width:36px;height:36px;font-size:18px;border-radius:10px;margin-bottom:8px;}
  .gl-card-title{font-size:12px;}
  .gl-card-desc{font-size:10px;}
}

/* ── DASHBOARD SPECIFIC ── */
.dashboard-alerts{background:#fefce8;border:1px solid #fde047;border-radius:var(--radius);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-3);font-size:var(--text-sm);color:#854d0e;box-shadow:var(--sh-xs);display:flex;align-items:flex-start;gap:10px;}
.dashboard-alerts-icon{font-size:var(--text-xl);flex-shrink:0;line-height:1;}
.dashboard-alerts-body{flex:1;min-width:0;}
.dashboard-alerts-list{list-style:none;padding:0;margin:6px 0 0 0;display:flex;flex-direction:column;gap:3px;}
.dashboard-alerts-list li{font-size:12px;}
.dashboard-alerts-list li a{color:#a16207;font-weight:var(--font-semibold);text-decoration:underline;}
.dashboard-alerts-list li a:hover{color:#713f12;}
.dashboard-alerts-link{color:#a16207;font-weight:var(--font-semibold);text-decoration:underline;}
.dashboard-alerts-link:hover{color:#713f12;}
.dashboard-tours-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;}
.dashboard-tours-title{font-size:var(--text-lg);font-weight:var(--font-extrabold);margin:0;}
.past-tour-notice{background:#fffbeb;border:1px solid #fde68a;border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-4);display:flex;align-items:flex-start;gap:var(--space-3);}
.past-tour-notice-icon{font-size:var(--text-xl);flex-shrink:0;}
.past-tour-notice-text{font-size:var(--text-sm);line-height:var(--leading-relaxed);color:#92400e;}
.join-tour-form{display:flex;gap:0;align-items:stretch;max-width:360px;}
.join-tour-input{border-radius:var(--radius) 0 0 var(--radius);border-right:none;flex:1;min-width:0;}
.btn-join-tour{display:flex;align-items:center;justify-content:center;width:48px;min-width:48px;border-radius:0 var(--radius) var(--radius) 0;border:1px solid var(--bd);border-left:none;background:var(--ac);color:#111;font-size:var(--text-xl);font-weight:var(--font-bold);cursor:pointer;transition:background var(--ease),color var(--ease);flex-shrink:0;}
.btn-join-tour:hover{background:var(--ac-hover);}

/* ── ADD TOUR BUTTON ── */
.btn-add-tour{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-4);min-height:40px;border-radius:var(--radius);border:none;background:var(--ac);color:#111;font:inherit;font-size:var(--text-sm);font-weight:var(--font-bold);cursor:pointer;transition:background var(--ease),transform var(--ease);white-space:nowrap;}
.btn-add-tour:hover{background:var(--ac-hover);}

/* ── INSTALL APP BUTTON ── */
.install-app-btn{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;font:inherit;font-size:13px;font-weight:600;color:var(--pr);border:none;background:none;cursor:pointer;text-align:left;transition:all .1s;}
.install-app-btn:hover{background:rgba(99,102,241,.06);}
.install-app-btn .mi{width:16px;height:16px;opacity:.7;flex-shrink:0;}
.install-banner{display:none;position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--white);border:1px solid var(--bd);border-radius:14px;box-shadow:0 8px 32px rgba(0,0,0,.15);padding:16px 20px;z-index:9999;max-width:360px;width:calc(100% - 32px);text-align:center;animation:menuIn .2s ease-out;}
.install-banner.show{display:block;}
.install-banner-title,.install-banner h4{font-size:15px;font-weight:600;margin:0 0 4px;color:var(--tx);}
.install-banner p{font-size:12px;color:var(--tx3);margin:0 0 12px;line-height:1.4;}
.install-banner .ib-actions{display:flex;gap:8px;justify-content:center;}
.install-banner .ib-install{padding:8px 20px;border-radius:8px;border:none;background:var(--pr);color:#fff;font:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s;}
.install-banner .ib-install:hover{filter:brightness(1.1);}
.install-banner .ib-close{padding:8px 16px;border-radius:8px;border:1px solid var(--bd);background:var(--white);color:var(--tx2);font:inherit;font-size:13px;cursor:pointer;transition:all .15s;}
.install-banner .ib-close:hover{border-color:var(--bd2);background:#f8fafc;}
.install-ios-hint{display:none;font-size:12px;color:var(--tx3);line-height:1.5;margin-top:8px;}
.install-ios-hint svg{width:14px;height:14px;vertical-align:middle;margin:0 2px;}

/* ── Touch-device fix: disable hover effects that cause double-tap ── */
@media (hover: none) {
  .tour-card:hover{border-color:var(--bd);box-shadow:none;background:var(--white);}
  .add-card:hover{border-color:var(--bd);color:var(--tx3);background:var(--bg-subtle);}
  .card:hover{box-shadow:var(--shadow-card);}
  .card-grid .card:hover{box-shadow:var(--shadow-card);}
  .sup-card:hover{box-shadow:var(--shadow-card);}
  .ops-card:hover{box-shadow:var(--shadow-card);transform:none;}
  .access-card:hover{border-color:var(--bd);box-shadow:none;}
  .menu-btn:hover{border-color:var(--bd);background:var(--white);color:var(--tx2);}
  .menu-drop a:hover,.menu-drop button:hover{background:none;color:var(--tx2);}
  .btn:hover{border-color:var(--colour-border);color:var(--colour-text-primary);background:var(--colour-bg-card);box-shadow:none;}
  .btn-primary:hover{background:var(--colour-primary);border-color:var(--colour-primary);color:#fff;box-shadow:none;}
  .btn-danger:hover,.btn-destructive:hover{background:transparent;border-color:var(--colour-destructive);color:var(--colour-destructive);}
  .btn-success:hover{background:var(--gr);}
  .install-app-btn:hover{background:none;}
  .btn-add-tour:hover{background:var(--ac);}
  .btn-join-tour:hover{background:var(--ac);}
  .hp-fcard:hover{border-color:#e2e8f0;box-shadow:none;transform:none;}
}

.multi-email-wrap{display:flex;flex-direction:column;gap:6px;}
.multi-email-row{display:flex;align-items:center;gap:6px;}
.multi-email-row input{flex:1;}
.multi-email-del{padding:4px 8px!important;min-width:0!important;font-size:12px!important;line-height:1!important;}

/* ── TABLET BREAKPOINT ── */
@media(min-width:641px) and (max-width:1024px){
  .container{padding:20px 16px;}
  .rg{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;}
  .access-cards{grid-template-columns:repeat(2,1fr);}
  .modal{max-width:560px;}
  .gl-cards{grid-template-columns:repeat(3,1fr);}
  .stats{gap:16px;}

  /* Tour bar — medium padding for tablet */
  .tour-bar{padding:20px 20px;margin:12px 0 0;border-radius:var(--radius-md,14px);}
  .tour-bar-code{font-size:10px;padding:3px 8px;}
  .tour-bar-name{font-size:22px;}

  /* Ops cards — comfortable tablet sizing */
  .ops-cards-row{gap:10px;overflow:visible;}
  .ops-card{padding:12px 14px;gap:8px;border-radius:12px;flex:1 1 0;min-width:0;}
  .ops-val{font-size:16px;}
  .ops-lbl{font-size:11px;}
  .ops-ico{font-size:16px;}

  /* Content area */
  .m-body{padding:18px 16px;}
  .m-top{padding:14px 16px 0;}

  /* Section headers — slightly more padding */
  .sh{font-size:13px;padding-left:12px;}

  /* Cards — comfortable tablet padding */
  .sup-card-header{padding:12px 16px;}
  .help-box{padding:12px 16px;font-size:12px;}
  .card-body{padding:16px;}

  .voucher-icon{width:34px;height:34px;font-size:18px;}
  .join-tour-form{max-width:320px;}
  .htl-room-card{padding:12px 14px;gap:12px;}
  .fin-summary-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;}
  .dashboard-tours-header{flex-direction:row;}

  /* Nav tabs — slightly roomier on tablet */
  .nav-row.nav-main{padding:0 8px;}
  .nav-row.nav-main .ni.ni-icon{padding:12px 16px;gap:6px;}
  .nav-row.nav-main .ni.ni-icon .ni-lbl{font-size:13px;}

  /* City page title */
  .city-row h1{font-size:22px;}
}

/* ── Luggage Tracking ── */
.lug-wrap{max-width:800px;padding:0 12px 40px;}
.lug-assign-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-top:10px;}
.lug-tag-card{background:var(--bg2);border:1px solid var(--bd);border-radius:8px;padding:10px;display:flex;align-items:center;gap:8px;transition:border-color .15s;}
.lug-tag-card.assigned{border-color:var(--gr);background:var(--gr-muted);}
.lug-tag-num{font-weight:700;font-size:15px;min-width:36px;color:var(--tx);}
.lug-tag-info{flex:1;min-width:0;font-size:12px;}
.lug-tag-name{display:block;font-weight:600;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lug-tag-label{display:block;color:var(--tx3);font-size:11px;}
.btn-xs{padding:2px 8px;font-size:11px;border-radius:4px;}

.scan-stage-row{display:flex;gap:16px;align-items:center;font-size:13px;margin-bottom:4px;}
.scan-stage-row label{display:flex;align-items:center;gap:4px;cursor:pointer;}

.scan-result-box{padding:10px 14px;border-radius:8px;font-size:13px;font-weight:500;}
.scan-result-box.scan-ok{background:var(--gr-muted);color:#065f46;}
.scan-result-box.scan-error{background:var(--rd-muted);color:var(--rd);}

.scan-summary{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px;}
.scan-stat{padding:6px 14px;border-radius:8px;font-size:15px;font-weight:700;text-align:center;}
.scan-stat small{display:block;font-size:11px;font-weight:500;opacity:.7;}
.scan-stat.loaded{background:#dbeafe;color:#1e40af;}
.scan-stat.collected{background:#fef3c7;color:#92400e;}
.scan-stat.missing{background:var(--rd-muted);color:var(--rd);}
.scan-stat.all-done{background:var(--gr-muted);color:#065f46;}

.cl-pax{margin-bottom:12px;padding:10px;background:var(--bg2);border-radius:8px;}
.cl-pax-name{font-weight:700;font-size:14px;margin-bottom:6px;color:var(--tx);}
.cl-bag{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:13px;flex-wrap:wrap;}
.cl-bag.done{opacity:.65;}
.cl-tag{font-weight:600;min-width:30px;}
.cl-label{color:var(--tx3);}
.cl-badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px;white-space:nowrap;}
.cl-badge.loaded{background:#dbeafe;color:#1e40af;}
.cl-badge.collected{background:#fef3c7;color:#92400e;}
.cl-badge.missing{background:var(--rd-muted);color:var(--rd);}

/* Porter summary & room cards */
.ptr-summary{display:flex;gap:8px;margin-bottom:8px;}
.ptr-sum-stat{flex:1;text-align:center;padding:12px 8px;border-radius:var(--radius-sm,8px);border:1px solid var(--colour-border,#e0e0e0);background:var(--colour-bg-card,#fff);}
.ptr-sum-collected{background:var(--colour-success-light,#edfbf0);border-color:var(--colour-success,#2d9c4a);}
.ptr-sum-remaining{background:var(--colour-warning-light,#fff8ed);border-color:var(--colour-warning,#f5a623);}
.ptr-sum-alldone{background:var(--colour-success-light,#edfbf0);border-color:var(--colour-success,#2d9c4a);}
.ptr-sum-n{display:block;font-size:28px;font-weight:700;color:var(--colour-text-primary,#1a1a1a);letter-spacing:-.5px;}
.ptr-sum-collected .ptr-sum-n{color:var(--colour-success,#2d9c4a);}
.ptr-sum-remaining .ptr-sum-n{color:var(--colour-warning,#f5a623);}
.ptr-sum-alldone .ptr-sum-n{color:var(--colour-success,#2d9c4a);}
.ptr-sum-l{display:block;font-size:12px;font-weight:600;color:var(--colour-text-label,#888);text-transform:uppercase;letter-spacing:.4px;margin-top:2px;}
.ptr-progress{height:6px;border-radius:3px;background:#e0e0e0;overflow:hidden;margin-bottom:4px;}
.ptr-progress-fill{height:100%;border-radius:3px;background:var(--colour-primary,#D4A017);transition:width .5s;}
.ptr-room{background:var(--colour-bg-card,#fff);border:1px solid var(--colour-border,#e0e0e0);border-radius:var(--radius-sm,8px);padding:14px;margin-bottom:8px;box-shadow:var(--shadow-card,0 1px 4px rgba(0,0,0,.07));transition:opacity .2s;}
.ptr-room-done{opacity:.55;}
.ptr-room-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;}
.ptr-room-name{font-weight:700;font-size:13px;color:var(--colour-text-primary,#1a1a1a);}
.ptr-room-count{font-size:10px;font-weight:700;color:var(--colour-text-label,#888);background:var(--colour-border-light,#f0f0f0);padding:2px 8px;border-radius:var(--radius-pill,999px);}
.ptr-room-bar{height:4px;border-radius:3px;background:#e0e0e0;overflow:hidden;margin-bottom:6px;}
.ptr-room-fill{height:100%;border-radius:3px;background:var(--colour-primary,#D4A017);transition:width .4s;}
.ptr-bag{display:flex;align-items:center;gap:6px;padding:5px 0;font-size:var(--font-size-body,14px);border-bottom:1px solid var(--colour-border-light,#f0f0f0);}
.ptr-bag:last-child{border-bottom:0;}
.ptr-bag-done{opacity:.5;}
.ptr-bag-tag{font-weight:600;color:var(--colour-text-muted,#aaa);min-width:32px;font-size:var(--font-size-small,13px);}
.ptr-bag-name{flex:1;font-weight:600;color:var(--colour-text-primary,#1a1a1a);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ptr-bag-st{font-size:var(--font-size-label,11px);font-weight:700;text-transform:uppercase;padding:4px 10px;border-radius:var(--radius-pill,999px);letter-spacing:.3px;white-space:nowrap;}
.ptr-st-ok{background:var(--colour-success-light,#edfbf0);color:var(--colour-success,#2d9c4a);}
.ptr-st-wait{background:var(--colour-warning-light,#fff8ed);color:#b45309;}

.porter-room-card{background:var(--bg2);border:1px solid var(--bd);border-radius:8px;padding:10px;margin-bottom:8px;}
.porter-room-hdr{font-weight:700;font-size:14px;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between;}
.porter-bag{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:13px;flex-wrap:wrap;}
.porter-bag.done{opacity:.6;}

.card-title{font-size:var(--font-size-card-title);font-weight:var(--font-weight-bold);margin:0 0 4px;color:var(--colour-text-primary);}
.card-desc{font-size:var(--font-size-small);color:var(--colour-text-label);margin:0 0 12px;line-height:var(--line-height-normal);}

@media(max-width:640px){
  .lug-assign-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;}
  .lug-tag-card{padding:8px;gap:6px;}
  .scan-summary{gap:6px;}
  .scan-stat{padding:5px 10px;font-size:13px;}
}

/* ── luggage_tags.php ── */
.ltg-page{max-width:680px;margin:0 auto;padding:0 16px 40px;}

.ltg-topbar{display:flex;align-items:center;gap:10px;padding:10px 0 6px;}
.ltg-back{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:var(--bg-subtle);color:var(--tx2);flex-shrink:0;transition:background .15s;text-decoration:none;}
.ltg-back:hover{background:var(--bd);}
.ltg-topbar-info{flex:1;min-width:0;}
.ltg-topbar-title{font-size:18px;font-weight:700;margin:0;color:var(--tx);letter-spacing:-.3px;}
.ltg-topbar-sub{font-size:11px;color:var(--tx3);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ltg-topbar-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:var(--bg-subtle);color:var(--tx2);flex-shrink:0;text-decoration:none;transition:all .15s;}
.ltg-topbar-btn:hover{background:var(--tx);color:var(--white);}

/* Stats pills */
.ltg-stats{display:flex;gap:6px;margin:6px 0 12px;}
.ltg-stat-pill{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 8px;background:var(--white);border:1px solid var(--bd);border-radius:10px;}
.ltg-stat-v{font-size:20px;font-weight:900;color:var(--tx);letter-spacing:-.5px;}
.ltg-stat-l{font-size:10px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.4px;}
.ltg-stat-green{border-left:3px solid #059669;background:var(--gr-muted);}
.ltg-stat-green .ltg-stat-v{color:#059669;}
.ltg-stat-gray .ltg-stat-v{color:var(--tx3);}
.stat-mini{display:flex;flex-direction:column;align-items:center;}
.stat-mini__number{font-size:24px;font-weight:700;color:var(--colour-primary,#D4A017);line-height:1;}
.stat-mini__label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:var(--colour-text-label,#888);margin-top:4px;}

/* Action Row */
.ltg-actions{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap;align-items:center;}
.ltg-action-group{display:flex;gap:5px;align-items:center;flex-wrap:wrap;}
.ltg-gen-wrap{display:flex;gap:4px;align-items:center;}
.ltg-gen-input{width:56px;padding:7px 4px;border:1px solid var(--bd);border-radius:8px;font-size:13px;font-weight:700;text-align:center;background:var(--white);}
.ltg-action-btn{display:inline-flex;align-items:center;gap:5px;padding:8px 14px;border:1px solid var(--bd);border-radius:8px;background:var(--white);color:var(--tx2);font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;-webkit-tap-highlight-color:transparent;}
.ltg-action-btn:hover{background:var(--bg-subtle);color:var(--tx);border-color:var(--bd2);}
.ltg-btn-gen{background:var(--tx);color:var(--white);border-color:var(--tx);}
.ltg-btn-gen:hover{background:var(--tx2);color:var(--white);}
.ltg-btn-warn{color:#d97706;border-color:#fde68a;}
.ltg-btn-warn:hover{background:rgba(251,191,36,.08);}
.ltg-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:ltgSpin .5s linear infinite;}
@keyframes ltgSpin{to{transform:rotate(360deg);}}

/* Filter Bar */
.ltg-filter-bar{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap;}
.ltg-search-wrap{flex:1;min-width:180px;position:relative;}
.ltg-search-wrap svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--tx3);pointer-events:none;}
.ltg-search{width:100%;padding:9px 12px 9px 32px;border:1px solid var(--bd);border-radius:10px;font-size:13px;outline:none;background:var(--white);transition:border-color .15s;}
.ltg-search:focus{border-color:var(--ac);}
.ltg-tabs{display:flex;gap:3px;}
.ltg-tab{padding:7px 12px;border:1px solid var(--bd);border-radius:8px;background:var(--white);font-size:11px;font-weight:600;color:var(--tx3);cursor:pointer;white-space:nowrap;transition:all .15s;}
.ltg-tab:hover{background:var(--bg-subtle);}
.ltg-tab.active{background:var(--tx);color:var(--white);border-color:var(--tx);}

/* Card Grid */
.ltg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}

/* Individual Card */
.ltg-card{background:var(--white);border:1px solid var(--bd);border-radius:12px;overflow:hidden;transition:all .2s;display:flex;flex-direction:column;}
.ltg-card:hover{box-shadow:var(--sh-md);}
.ltg-card-assigned{border-left:3px solid #059669;}
.ltg-card-free{border-style:dashed;border-color:var(--bd2);}
.ltg-card-top{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 6px;}
.ltg-card-num{font-size:20px;font-weight:900;color:var(--tx);letter-spacing:-.5px;}
.ltg-card-qr{width:40px;height:40px;border-radius:4px;object-fit:contain;opacity:.7;transition:opacity .15s;}
.ltg-card:hover .ltg-card-qr{opacity:1;}
.ltg-card-body{padding:0 12px 8px;flex:1;}
.ltg-card-name{font-size:13px;font-weight:700;color:var(--tx);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ltg-card-label{font-size:11px;color:var(--tx3);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ltg-card-foot{display:flex;gap:3px;padding:0 8px 8px;}
.ltg-card-btn{display:inline-flex;align-items:center;gap:3px;padding:5px 8px;border:1px solid var(--bd);border-radius:6px;background:var(--white);color:var(--tx3);font-size:10px;font-weight:600;cursor:pointer;transition:all .12s;-webkit-tap-highlight-color:transparent;}
.ltg-card-btn:hover{background:var(--bg-subtle);color:var(--tx);}
.ltg-card-btn-rm{color:var(--rd);border-color:var(--rd-muted);}
.ltg-card-btn-rm:hover{background:var(--rd-muted);}
.ltg-card-btn-nfc{margin-left:auto;}

/* Unassigned card CTA */
.ltg-card-assign{display:flex;align-items:center;justify-content:center;gap:6px;margin:auto 8px 8px;padding:10px;border:2px dashed rgba(74,222,128,.3);border-radius:8px;background:var(--gr-muted);color:#059669;font-size:12px;font-weight:700;cursor:pointer;transition:all .15s;-webkit-tap-highlight-color:transparent;}
.ltg-card-assign:hover{background:rgba(74,222,128,.15);border-color:#059669;}

/* Empty state */
.ltg-empty-state{text-align:center;padding:60px 20px;max-width:400px;margin:0 auto;}
.ltg-empty-icon{margin-bottom:16px;opacity:.6;}
.ltg-empty-state h2{font-size:18px;font-weight:700;color:var(--tx2);margin:0 0 8px;}
.ltg-empty-state p{color:var(--tx3);font-size:13px;margin:0;line-height:1.6;}

/* shared modals & toast */
.lt-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:999;display:flex;align-items:center;justify-content:center;padding:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.lt-modal{background:var(--white);border-radius:16px;width:100%;max-width:420px;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.2);animation:ltModalIn .2s ease-out;}
@keyframes ltModalIn{from{opacity:0;transform:scale(.95) translateY(10px);}to{opacity:1;transform:scale(1) translateY(0);}}
.lt-modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--bd);}
.lt-modal-head h3{font-size:16px;font-weight:700;margin:0;display:flex;align-items:center;gap:6px;}
.lt-modal-close{background:none;border:none;font-size:24px;color:var(--tx3);cursor:pointer;line-height:1;padding:4px;transition:color .1s;}
.lt-modal-close:hover{color:var(--tx);}
.lt-modal-body{padding:16px 20px;}
.lt-modal-foot{padding:12px 20px 16px;display:flex;gap:8px;border-top:1px solid var(--bd);}
.lt-form-label{display:block;font-size:12px;font-weight:600;color:var(--tx2);margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px;}
.lt-form-input{width:100%;padding:10px 12px;border:2px solid var(--bd);border-radius:10px;font-size:14px;outline:none;transition:border-color .15s;box-sizing:border-box;background:var(--white);color:var(--tx);}
.lt-form-input:focus{border-color:var(--ac);}
.lt-pax-list{max-height:240px;overflow-y:auto;border:1px solid var(--bd);border-radius:10px;margin-top:6px;}
.lt-pax-option{padding:10px 12px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;border-bottom:1px solid var(--bd);transition:background .12s;-webkit-tap-highlight-color:transparent;}
.lt-pax-option:last-child{border-bottom:0;}
.lt-pax-option:hover{background:var(--bg-subtle);}
.lt-pax-option.selected{background:rgba(232,183,48,.08);border-color:rgba(232,183,48,.2);}
.lt-pax-left{display:flex;align-items:center;gap:10px;}
.lt-pax-avatar{width:32px;height:32px;border-radius:50%;background:var(--bd);color:var(--tx2);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;}
.lt-pax-option.selected .lt-pax-avatar{background:var(--ac);color:#fff;}
.lt-pax-name{font-weight:600;font-size:14px;color:var(--tx);display:block;}
.lt-pax-type{font-size:10px;color:var(--tx3);text-transform:capitalize;display:block;}
.lt-pax-check{display:none;color:#059669;}
.lt-pax-option.selected .lt-pax-check{display:flex;}
.lt-toast-float{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--tx);color:var(--white);padding:12px 24px;border-radius:12px;font-size:14px;font-weight:600;z-index:9999;box-shadow:var(--sh-lg);max-width:90%;text-align:center;animation:toastIn .25s ease-out;}
.lt-toast-ok{background:#059669;}
.lt-toast-err{background:#ef4444;}
@keyframes toastIn{from{opacity:0;transform:translateX(-50%) translateY(12px);}to{opacity:1;transform:translateX(-50%) translateY(0);}}

/* ── luggage_scan.php — Dashboard ── */
.lsd-page{max-width:720px;margin:0 auto;padding:0 0 40px;}
.lsd-topbar{display:flex;align-items:center;gap:10px;padding:10px 14px 6px;}
.lsd-back{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:var(--bg-subtle);color:var(--tx2);flex-shrink:0;transition:background .15s;text-decoration:none;}
.lsd-back:hover{background:var(--bd);}
.lsd-topbar-info{flex:1;min-width:0;}
.lsd-topbar-title{font-size:17px;font-weight:700;margin:0;color:var(--tx);letter-spacing:-.3px;}
.lsd-topbar-sub{font-size:11px;color:var(--tx3);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lsd-pill-live{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:.2px;white-space:nowrap;flex-shrink:0;background:rgba(74,222,128,.15);color:#059669;}
.lsd-pulse{width:6px;height:6px;border-radius:50%;background:#10b981;animation:lsdPulse 1.5s ease infinite;}
@keyframes lsdPulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.4;transform:scale(1.5);}}
.lsd-pill-off{display:inline-flex;align-items:center;padding:5px 12px;border-radius:20px;font-size:10px;font-weight:700;background:rgba(248,113,113,.1);color:var(--rd);flex-shrink:0;white-space:nowrap;}

/* Tip bar */
.lsd-tip{display:flex;align-items:center;gap:8px;margin:10px 14px;padding:10px 14px;background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.2);border-radius:10px;font-size:12px;color:var(--bl);line-height:1.4;}
.lsd-tip strong{font-weight:700;}
.lsd-tip-close{background:none;border:none;color:rgba(59,130,246,.5);font-size:18px;cursor:pointer;padding:0 0 0 4px;line-height:1;flex-shrink:0;}
.lsd-tip-close:hover{color:var(--bl);}

/* In-app scanner */
.lsd-scanner-wrap{margin:12px 14px 0;background:var(--white);border:1px solid var(--bd);border-radius:var(--radius-md,12px);overflow:hidden;}
.lsd-scanner-start{padding:16px 18px;text-align:center;}
.lsd-scanner-desc{font-size:13px;color:var(--tx2);margin:0 0 14px;line-height:1.5;}
.lsd-scanner-start .btn{margin:0;}
.lsd-scanner-fallback{font-size:12px;color:var(--tx3);margin:12px 0 0;}
.lsd-scanner-active{padding:12px 14px;}
.lsd-scanner-video-wrap{position:relative;border-radius:10px;overflow:hidden;background:#000;margin-bottom:10px;}
.lsd-scanner-msg{font-size:13px;font-weight:600;color:var(--tx);text-align:center;margin-bottom:10px;min-height:20px;}
.lsd-scanner-msg.ok{color:var(--gr);}
.lsd-scanner-msg.err{color:var(--rd);}

/* Activity feed */
.lsd-activity{margin:10px 14px 0;}
.lsd-activity-title{font-size:11px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px;}
.lsd-activity-list{display:flex;flex-direction:column;gap:4px;}
.lsd-act-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--white);border:1px solid var(--bd);border-radius:8px;font-size:12px;transition:all .15s;}
.lsd-act-loaded{border-left:3px solid #2563eb;}
.lsd-act-collected{border-left:3px solid #d97706;}
.lsd-act-tag{font-weight:700;color:var(--tx);min-width:28px;}
.lsd-act-name{flex:1;color:var(--tx2);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lsd-act-stage{font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:4px;letter-spacing:.3px;}
.lsd-act-loaded .lsd-act-stage{background:rgba(59,130,246,.12);color:#3b82f6;}
.lsd-act-collected .lsd-act-stage{background:rgba(251,191,36,.12);color:#d97706;}

/* Summary Stats */
.lsd-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 14px 0;}
.lsd-stat{text-align:center;padding:14px 8px;background:var(--white);border:1px solid var(--bd);border-radius:12px;transition:all .2s;}
.lsd-stat-loaded{border-left:3px solid #2563eb;}
.lsd-stat-collected{border-left:3px solid #d97706;}
.lsd-stat-missing{border-left:3px solid var(--rd);}
.lsd-stat-alldone{border-left-color:#10b981;background:var(--gr-muted);}
.lsd-stat-n{display:block;font-size:22px;font-weight:900;color:var(--tx);letter-spacing:-.5px;}
.lsd-stat-l{display:block;font-size:10px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;margin-top:2px;}

/* Progress */
.lsd-progress-wrap{margin:12px 14px 0;}
.lsd-progress-bar{height:8px;border-radius:8px;background:var(--bd);overflow:hidden;}
.lsd-progress-fill{height:100%;border-radius:8px;background:linear-gradient(90deg,#059669,#34d399);transition:width .5s ease;}
.lsd-progress-label{font-size:11px;color:var(--tx2);font-weight:600;margin-top:4px;text-align:center;}

/* All Done */
.lsd-alldone{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 14px;margin:12px 14px 0;background:linear-gradient(135deg,rgba(74,222,128,.15),rgba(74,222,128,.08));color:#059669;border-radius:12px;font-size:14px;font-weight:700;animation:lsdPop .4s ease-out;}
@keyframes lsdPop{from{transform:scale(.9);opacity:0;}to{transform:scale(1);opacity:1;}}

/* Refresh Row */
.lsd-refresh-row{display:flex;align-items:center;justify-content:space-between;margin:10px 14px 0;padding:0 2px;}
.lsd-refresh-hint{font-size:10px;color:var(--tx3);font-weight:500;}
.lsd-refresh-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;border:1px solid var(--bd);border-radius:8px;background:var(--white);color:var(--tx2);font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;}
.lsd-refresh-btn:hover{background:var(--bg-subtle);color:var(--tx);}
.lsd-refresh-btn svg{transition:transform .3s;}
.lsd-spinning svg{animation:lsdSpin .6s linear;}
@keyframes lsdSpin{from{transform:rotate(0);}to{transform:rotate(360deg);}}

/* Checklist */
.lsd-checklist{margin:14px 14px 0;}
.lsd-ck-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--white);border:1px solid var(--bd);border-radius:14px 14px 0 0;border-bottom:none;}
.lsd-ck-title{font-size:15px;font-weight:700;color:var(--tx);}
.lsd-ck-filter{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--tx3);cursor:pointer;white-space:nowrap;}
.lsd-ck-filter input{accent-color:var(--ac);width:14px;height:14px;}
.lsd-ck-body{background:var(--white);border:1px solid var(--bd);border-radius:0 0 14px 14px;padding:8px 10px;max-height:55vh;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.lsd-ck-loading{text-align:center;color:var(--tx3);font-size:13px;padding:24px 12px;}
.lsd-ck-loading a{color:var(--bl);text-decoration:underline;}

/* Passenger Card */
.lsd-pax{margin-bottom:6px;padding:10px 12px;background:var(--bg-subtle);border-radius:10px;border-left:3px solid var(--rd);transition:all .25s;}
.lsd-pax-done{border-left-color:#10b981;opacity:.5;}
.lsd-pax-head{display:flex;align-items:center;gap:6px;margin-bottom:4px;}
.lsd-pax-icon{font-size:16px;flex-shrink:0;}
.lsd-pax-name{font-weight:700;font-size:13px;color:var(--tx);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lsd-pax-count{font-size:10px;font-weight:700;color:var(--tx3);background:var(--bd);padding:2px 8px;border-radius:10px;flex-shrink:0;}
.lsd-bag{display:flex;align-items:center;gap:6px;padding:4px 8px;margin:2px 0;border-radius:6px;font-size:12px;}
.lsd-bag-miss{background:rgba(248,113,113,.08);}
.lsd-bag-partial{background:rgba(251,191,36,.08);}
.lsd-bag-ok{opacity:.45;}
.lsd-bag-tag{font-weight:700;color:var(--tx);min-width:28px;}
.lsd-bag-label{color:var(--tx3);font-size:11px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lsd-bag-st{font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:4px;letter-spacing:.3px;white-space:nowrap;margin-left:auto;}
.lsd-st-loaded{background:rgba(59,130,246,.12);color:#3b82f6;}
.lsd-st-collected{background:rgba(251,191,36,.12);color:#d97706;}
.lsd-st-missing{background:rgba(248,113,113,.12);color:var(--rd);}

/* Footer Actions */
.lsd-actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 14px 24px;align-items:flex-start;}
.lsd-act-detail{flex:1;min-width:150px;}
.lsd-act-detail summary{display:flex;align-items:center;gap:6px;list-style:none;background:var(--white);border:1px solid var(--bd);border-radius:10px;padding:10px 14px;cursor:pointer;font-size:12px;font-weight:600;color:var(--tx3);transition:all .15s;-webkit-tap-highlight-color:transparent;}
.lsd-act-detail summary::-webkit-details-marker{display:none;}
.lsd-act-detail summary:hover{background:var(--bg-subtle);}
.lsd-act-detail[open] summary{border-radius:10px 10px 0 0;border-bottom:none;color:var(--tx);}
.lsd-act-body{background:var(--white);border:1px solid var(--bd);border-top:0;border-radius:0 0 10px 10px;padding:12px 14px;}
.lsd-act-body p{font-size:12px;color:var(--tx3);margin:0 0 8px;}
.lsd-link-tags{display:flex;align-items:center;gap:6px;padding:10px 14px;background:var(--white);border:1px solid var(--bd);border-radius:10px;font-size:12px;font-weight:600;color:var(--tx3);text-decoration:none;transition:all .15s;white-space:nowrap;}
.lsd-link-tags:hover{background:var(--bg-subtle);color:var(--tx);}

/* No checkout */
.lsd-empty{text-align:center;padding:60px 20px;max-width:360px;margin:0 auto;}
.lsd-empty svg{margin-bottom:14px;opacity:.6;}
.lsd-empty h2{font-size:17px;font-weight:700;color:var(--tx2);margin:0 0 6px;}
.lsd-empty p{color:var(--tx3);font-size:13px;margin:0 0 14px;line-height:1.5;}

@media(max-width:900px){
  .ltg-grid{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:768px){
  .lt-modal-overlay{align-items:flex-start;padding:12px 8px;}
  .lt-modal{max-width:calc(100vw - 16px);}
  .lsd-topbar{padding:8px 10px 4px;}
  .lsd-topbar-title{font-size:15px;}
  .lsd-summary{gap:6px;margin:10px 10px 0;}
  .lsd-stat{padding:10px 6px;}
  .lsd-stat-n{font-size:18px;}
  .lsd-how{margin:10px 10px;padding:12px;gap:10px;flex-direction:column;align-items:center;text-align:center;}
  .lsd-checklist{margin:10px 10px 0;}
  .lsd-ck-body{max-height:none;}
  .lsd-actions{margin:10px 10px 24px;}
  .lsd-progress-wrap{margin:10px 10px 0;}
  .lsd-refresh-row{margin:8px 10px 0;}
  .ltg-stats{gap:4px;}
  .ltg-stat-v{font-size:17px;}
  .ltg-action-btn{padding:7px 10px;font-size:11px;}
  .ltg-filter-bar{gap:6px;}
}
@media(max-width:480px){
  .ltg-grid{grid-template-columns:1fr 1fr;gap:8px;}
  .ltg-card-qr{width:32px;height:32px;}
  .ltg-card-num{font-size:17px;}
  .ltg-card-btn{padding:4px 6px;font-size:10px;}
  .ltg-actions{gap:4px;}
  .ltg-action-btn svg{display:none;}
}

/* ── DESKTOP BREAKPOINT ── */
@media(min-width:1025px){
  .app-container{max-width:1080px;padding:0 24px;}
  .container{padding:var(--space-6) var(--space-5);}

  /* Tour stat cards — full row, evenly spaced */
  .ops-cards-row{flex-wrap:nowrap;gap:12px;overflow:visible;}
  .ops-card{flex:1 1 0;min-width:0;padding:14px 20px;gap:12px;}
  .ops-val{font-size:18px;}
  .ops-lbl{font-size:12px;}

  /* Tour tab bar — spacious on desktop */
  .nav-row.nav-main{padding:0;}
  .nav-row.nav-main .ni.ni-icon{padding:14px 20px;gap:8px;}
  .nav-row.nav-main .ni.ni-icon .ni-ico{width:18px;height:18px;}
  .nav-row.nav-main .ni.ni-icon .ni-ico svg{width:18px;height:18px;}
  .nav-row.nav-main .ni.ni-icon .ni-lbl{font-size:14px;font-weight:600;}

  /* Dashboard tour card grid — 3 columns */
  .tour-grid{grid-template-columns:repeat(3,1fr);}
  .rg{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));}

  /* Access cards — 3 columns */
  .access-cards{grid-template-columns:repeat(3,1fr);gap:14px;}

  /* Form rows — side by side */
  .form-row{flex-direction:row;gap:16px;}
  .form-row .form-group{flex:1;}

  /* Sidebar visible on desktop */
  .sidebar{display:flex!important;}
  .mob-pax{display:none!important;}
  .body-wrap{flex-direction:row;}

  /* Stats row — comfortable spacing */
  .stats{gap:var(--space-6);}

  /* Card grid — wider columns */
  .card-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-5);}

  /* Supplier cards — wider */
  .sup-card-header{padding:14px 18px;}
  .sup-card-actions{padding:0 18px 14px;}

  /* Modal — slightly larger on desktop */
  .modal{max-width:600px;}

  /* Hotel cards */
  .htl-room-card{padding:14px 18px;gap:14px;}

  /* Join tour form */
  .join-tour-form{max-width:400px;}

  /* Page title — slightly larger */
  .page-title{font-size:26px;}

  /* Toolbar — more breathing room */
  .tbar{gap:10px;}
  .tbar .btn{padding:8px 14px;}

  /* Tour bar — roomier */
  .tour-bar{padding:28px 28px;margin:16px 0 0;}
  .tour-bar-name{font-size:26px;letter-spacing:-0.015em;}
  .app-nav{margin:12px 0 0;}
  .mqa-grid{grid-template-columns:repeat(3,1fr);gap:12px;}

  /* GL home/leader cards — wider grid */
  .gl-cards{grid-template-columns:repeat(3,1fr);max-width:100%;}
  .gl-home{max-width:720px;}

  /* Financial summary grid */
  .fin-summary-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;}

}

/* ── FOCUS-VISIBLE — Accessibility rings (keyboard only) ── */
:focus-visible{outline:2px solid var(--colour-primary);outline-offset:2px;border-radius:var(--radius-sm);}
:focus:not(:focus-visible){outline:none;}
.btn:focus-visible,.btn-primary:focus-visible,.btn-danger:focus-visible{outline:2px solid var(--colour-primary);outline-offset:2px;box-shadow:none;}
.ni:focus-visible{outline:2px solid var(--colour-primary);outline-offset:2px;}
.form-input:focus-visible,.form-select:focus-visible,.form-textarea:focus-visible,.search:focus-visible,.fi:focus-visible,.hc-search:focus-visible,.rn-input:focus-visible{outline:none;border-color:var(--bd-focus);box-shadow:0 0 0 3px var(--ac-muted);}

/* ── NAV SCROLL FADE GRADIENTS (iOS-style edge hints) ── */
.nav-row.nav-main{position:relative;}
.nav-row.nav-main::before,.nav-row.nav-main::after{content:'';position:absolute;top:0;bottom:0;width:24px;z-index:10;pointer-events:none;transition:opacity .2s;}
.nav-row.nav-main::before{left:0;background:linear-gradient(to right,var(--colour-bg-page) 0%,transparent 100%);opacity:0;}
.nav-row.nav-main::after{right:0;background:linear-gradient(to left,var(--colour-bg-page) 0%,transparent 100%);opacity:0;}
.nav-row.nav-main.scroll-left::before{opacity:1;}
.nav-row.nav-main.scroll-right::after{opacity:1;}
@media(min-width:1025px){.nav-row.nav-main::before,.nav-row.nav-main::after{display:none;}}

/* ── TOAST NOTIFICATION (iOS/macOS-style feedback) ── */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(12px);background:var(--colour-text-primary);color:#fff;padding:12px 24px;border-radius:var(--radius-md,12px);font-size:var(--text-sm);font-weight:var(--font-semibold);box-shadow:var(--sh-lg);z-index:9999;opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease;display:flex;align-items:center;gap:var(--space-2);max-width:calc(100vw - 32px);text-align:center;-webkit-font-smoothing:antialiased;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto;}
.toast-success{background:#059669;}
.toast-error{background:var(--colour-destructive);}
.toast-icon{font-size:16px;flex-shrink:0;}

/* ── macOS DESKTOP MODAL REFINEMENT ── */
@media(min-width:641px){
  .modal{backdrop-filter:none;border-radius:14px;box-shadow:0 24px 80px rgba(0,0,0,.2),0 0 1px rgba(0,0,0,.1);}
  .modal-drag{display:none;}
  .modal h2{font-size:var(--text-xl);font-weight:var(--font-extrabold);}
}

/* ── DARK MODE TOGGLE SWITCH ── */
.dm-toggle{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none;}
.dm-toggle-label{font-size:13px;font-weight:500;color:var(--tx2);flex:1;}
.dm-toggle-track{position:relative;width:44px;height:24px;border-radius:12px;background:var(--bd);transition:background .2s;flex-shrink:0;}
.dm-toggle-thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s;}
html[data-theme="dark"] .dm-toggle-track{background:var(--ac);}
html[data-theme="dark"] .dm-toggle-thumb{transform:translateX(20px);}

/* ── DARK MODE — class-based toggle ── */
html[data-theme="dark"]{
  --colour-primary:#e8b730;
    --colour-primary-hover:#d4a017;
    --colour-primary-light:rgba(232,183,48,.12);
    --colour-primary-border:rgba(232,183,48,.25);
    --colour-primary-muted:rgba(232,183,48,.15);
    --colour-destructive:#f87171;
    --colour-destructive-light:rgba(248,113,113,.12);
    --err:#f87171;
    --colour-success:#4ade80;
    --colour-success-light:rgba(74,222,128,.12);
    --colour-warning:#fbbf24;
    --colour-warning-light:rgba(251,191,36,.12);
    --colour-text-primary:#f1f5f9;
    --colour-text-secondary:#94a3b8;
    --colour-text-muted:#64748b;
    --colour-text-label:#94a3b8;
    --colour-bg-page:#0f172a;
    --colour-bg-card:#1e293b;
    --colour-bg-input:#1e293b;
    --colour-bg-subtle:#1a2332;
    --colour-border:#334155;
    --colour-border-light:#1e293b;
    --shadow-card:0 1px 4px rgba(0,0,0,0.3);
    --shadow-elevated:0 4px 16px rgba(0,0,0,0.4);
    --sh-xs:0 1px 2px rgba(0,0,0,0.2);
    --sh-sm:0 1px 4px rgba(0,0,0,0.3);
    --sh-md:0 4px 16px rgba(0,0,0,0.4);
    --sh-lg:0 8px 24px rgba(0,0,0,0.5);
    --bg:var(--colour-bg-page);--white:var(--colour-bg-card);--card:var(--colour-bg-card);--bg-subtle:var(--colour-bg-subtle);
    --bd:var(--colour-border);--bd2:#475569;--bd-focus:#e8b730;
    --tx:var(--colour-text-primary);--tx2:var(--colour-text-secondary);--tx3:var(--colour-text-label);
    --ac:var(--colour-primary);--ac2:var(--colour-primary-hover);--ac-hover:var(--colour-primary-hover);--ac-muted:var(--colour-primary-muted);
    --gr:var(--colour-success);--gr-muted:var(--colour-success-light);
    --rd:var(--colour-destructive);--rd-muted:var(--colour-destructive-light);
    --bg2:#1a2332;
    --bl:#60a5fa;

  /* ── Base ── */
  body,body.portal-leader,body.portal-hotel{background:var(--colour-bg-page);color:var(--colour-text-primary);}
  .topbar{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .topbar-sitename{color:var(--colour-text-primary);}
  img{opacity:.92;}
  input,select,textarea{color-scheme:dark;background:var(--colour-bg-input);color:var(--colour-text-primary);border-color:var(--colour-border);}

  /* ── Cards & generic .card (dashboard tool cards) ── */
  .card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .card-title{color:var(--colour-text-primary);}
  .card-desc{color:var(--colour-text-secondary);}

  /* ── Tour cards ── */
  .tour-card:hover{box-shadow:0 8px 24px rgba(232,183,48,.15);}
  .tour-card-active:hover{box-shadow:0 8px 24px rgba(74,222,128,.15);}

  /* ── Hint bar / info boxes ── */
  .hint-bar,.help-box{background:rgba(232,183,48,.08);border-color:rgba(232,183,48,.2);color:var(--colour-text-secondary);}
  .infobox{background:var(--colour-bg-subtle);color:var(--colour-text-secondary);}
  .infobox b{color:var(--colour-text-primary);}

  /* ── Flash / alerts ── */
  .flash-success{background:rgba(74,222,128,.12);border-color:rgba(74,222,128,.25);color:#4ade80;}
  .flash-error{background:rgba(248,113,113,.12);border-color:rgba(248,113,113,.25);color:#f87171;}
  .flash-info{background:rgba(56,189,248,.12);border-color:rgba(56,189,248,.25);color:#38bdf8;}
  .flash-warning{background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.25);color:#fbbf24;}
  .dashboard-alerts{background:rgba(251,191,36,.1);border-color:rgba(251,191,36,.25);color:#fbbf24;}
  .past-tour-notice{background:rgba(251,191,36,.08);border-color:rgba(251,191,36,.2);color:#fbbf24;}

  /* ── Modals ── */
  .modal{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .modal h2{color:var(--colour-text-primary);}
  .modal .fl{color:var(--colour-text-label);}
  .modal .fi,.modal .fs{background:var(--colour-bg-input);color:var(--colour-text-primary);border-color:var(--colour-border);}
  .tfa-popup{background:var(--colour-bg-card);color:var(--colour-text-primary);}

  /* ── Buttons ── */
  .btn,.btn-secondary{background:transparent;color:var(--colour-text-primary);border-color:var(--colour-border);}
  .btn:hover,.btn-secondary:hover{border-color:var(--colour-text-muted);background:rgba(255,255,255,.04);}
  .btn-primary{background:var(--colour-primary);border-color:var(--colour-primary);color:#111;}
  .btn-primary:hover{background:var(--colour-primary-hover);border-color:var(--colour-primary-hover);color:#111;}

  /* ── Badges ── */
  .badge-leader{background:rgba(59,130,246,.15);color:#60a5fa;}
  .badge-hotel{background:rgba(251,191,36,.15);color:#fbbf24;}
  .badge-traveller{background:rgba(74,222,128,.15);color:#4ade80;}
  .plan-badge-sm-basic{background:var(--colour-bg-subtle);color:var(--colour-text-secondary);}
  .plan-badge-sm-pro{background:rgba(251,191,36,.15);color:#fbbf24;}
  .plan-badge-sm-ultimate{background:rgba(139,92,246,.15);color:#a78bfa;}
  .tb.twin{background:rgba(59,130,246,.15);color:#60a5fa;}
  .tb.single{background:rgba(139,92,246,.15);color:#a78bfa;}
  .tb.double{background:rgba(251,191,36,.15);color:#fbbf24;}
  .tb.triple{background:rgba(74,222,128,.15);color:#4ade80;}

  /* ── Nav tabs (mobile hardcoded #fff) ── */
  .nav-row.nav-main .ni.ni-icon,.nav-row.nav-main .ni.ni-gear{background:var(--colour-bg-card);}

  /* ── Manage sections ── */
  .ms{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .ms-h{border-color:var(--colour-border);}
  .ar{background:var(--colour-bg-card);border-color:var(--colour-border);}

  /* ── Room cards ── */
  .rc{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .rc-h{color:var(--colour-text-primary);}
  .rn{color:var(--colour-text-primary);}
  .rc-b{background:var(--colour-bg-subtle);color:var(--colour-text-secondary);}
  .rc-f{background:var(--colour-bg-subtle);border-color:var(--colour-border);}
  .tbc-b{background:rgba(251,191,36,.1);border-color:rgba(251,191,36,.2);color:#fbbf24;}

  /* ── Supplier cards ── */
  .sup-card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .sup-card-name{color:var(--colour-text-primary);}

  /* ── Settings ── */
  .sett-section{background:var(--colour-bg-subtle);border-color:var(--colour-border);}
  .sett-field input,.sett-field select,.sett-field textarea{background:var(--colour-bg-input);border-color:var(--colour-border);color:var(--colour-text-primary);}

  /* ── Search / inputs ── */
  .search,.rn-input,.hc-search,.fi{background:var(--colour-bg-input);color:var(--colour-text-primary);border-color:var(--colour-border);}

  /* ── Code card / access ── */
  .code-card{background:var(--colour-bg-subtle);border-color:var(--colour-border);}
  .code-val{color:var(--colour-text-primary);}

  /* ── Portal ── */
  .portal-card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .portal-contact-strip{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .portal-overview-block{background:var(--colour-bg-subtle);border-color:var(--colour-border);}
  .portal-checklist-card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .portal-checklist-card .checklist-header{background:var(--colour-bg-subtle);border-color:var(--colour-border);}

  /* ── GL portal ── */
  .gl-card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .gl-welcome-card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .gl-td-contact{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .gl-tour-dates{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-secondary);}
  .gl-day-row{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .gl-day-body{background:var(--colour-bg-subtle);}
  .gl-info-card{background:var(--colour-bg-card);border-color:var(--colour-border);}

  /* ── Ops cards ── */
  .ops-card{background:var(--colour-bg-card);}
  .ops-card-urgent{background:rgba(248,113,113,.08);}
  .ops-card-ok{background:rgba(74,222,128,.08);}
  .ops-announce-bar{background:var(--colour-bg-card);}

  /* ── Quick action cards ── */
  .mqa-card{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-primary);}

  /* ── Tour bar ── */
  .tour-bar{background:var(--colour-bg-card);}
  .voucher-pill{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-secondary);}
  .voucher-pill:hover{background:rgba(232,183,48,.1);}

  /* ── Auth ── */
  .auth-card,.auth-page{background:var(--colour-bg-page);}

  /* ── Headcount ── */
  .hc-pill-missing{background:rgba(248,113,113,.1);border-color:rgba(248,113,113,.25);color:#f87171;}
  .hc-row{border-color:var(--colour-border);}

  /* ── Hotel ── */
  .hotel-list-card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .room-table{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .room-table th{background:var(--colour-bg-subtle);color:var(--colour-text-label);}
  .room-table td{border-color:var(--colour-border);}

  /* ── Country tracker stats (white cards) ── */
  .ct-stat-card,.stat-card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .ct-limit-card,.limit-card,.visa-card{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-primary);}

  /* ── Referral ── */
  .referral-card,.ref-card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .ref-code-box{background:var(--colour-bg-subtle);border-color:var(--colour-border);}

  /* ── Templates empty ── */
  .tour-empty{background:var(--colour-bg-subtle);border-color:var(--colour-border);color:var(--colour-text-secondary);}

  /* ── Email template ── */
  .email-template-wrap,.template-card{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-primary);}

  /* ── Luggage pages ── */
  .ltg-stat-pill,.ltg-card,.ltg-card-btn,.ltg-gen-input,.ltg-action-btn,.ltg-search,.ltg-tab{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-primary);}
  .ltg-topbar{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .ltg-topbar-title{color:var(--colour-text-primary);}
  .ltg-tab.active{background:var(--colour-primary);border-color:var(--colour-primary);color:#111;}
  .lt-modal{background:var(--colour-bg-card);color:var(--colour-text-primary);}
  .lsd-scanner-wrap{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .lsd-act-item{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-primary);}
  .lsd-stat{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .lsd-refresh-btn{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-secondary);}
  .lsd-ck-head{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .lsd-ck-title{color:var(--colour-text-primary);}
  .lsd-ck-body{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .lsd-bag-miss{background:rgba(248,113,113,.08);}
  .lsd-bag-partial{background:rgba(251,191,36,.08);}
  .lsd-act-tag{color:var(--colour-text-primary);}
  .lsd-act-detail summary{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-secondary);}
  .lsd-act-body{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .lsd-link-tags{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-secondary);}
  .lsd-topbar{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .lsd-topbar-title{color:var(--colour-text-primary);}
  .lsd-alldone{background:linear-gradient(135deg,rgba(74,222,128,.15),rgba(74,222,128,.08));color:#4ade80;}

  /* ── Toast (dark mode invert) ── */
  .toast{background:#e2e8f0;color:#0f172a;}
  .toast-success{background:#059669;color:#fff;}
  .toast-error{background:#dc2626;color:#fff;}

  /* ── Empty state icon bg ── */
  .empty .empty-ico{background:var(--colour-bg-subtle);}

  /* ── Table general ── */
  table{color:var(--colour-text-primary);}
  th{color:var(--colour-text-label);}
  td{border-color:var(--colour-border);}

  /* ── Misc catch-all for any remaining white bg elements ── */
  .add-rt{border-color:var(--colour-border);}
  .itin-card{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .menu-drop{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .menu-drop a:hover,.menu-drop button:hover{background:rgba(255,255,255,.06);}

  /* ── Tour dashboard (home) ── */
  .tour-card,.add-card{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-primary);}
  .tour-card .tc-name{color:var(--colour-text-primary);}
  .tour-card .tc-dates{color:var(--colour-text-secondary);}
  .tc-countdown{background:var(--colour-bg-subtle)!important;color:var(--colour-text-secondary)!important;}
  .tc-countdown-active{background:rgba(74,222,128,.12)!important;color:#4ade80!important;}
  .tc-countdown-soon{background:rgba(251,191,36,.12)!important;color:#fbbf24!important;}
  .tc-countdown-urgent{background:rgba(248,113,113,.12)!important;color:#f87171!important;}

  /* ── To-do section ── */
  .todo-item,.todo-card{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-primary);}
  .todo-clear-btn:hover{background:rgba(248,113,113,.1)!important;color:#f87171!important;}
  .todo-delete:hover{background:rgba(248,113,113,.1)!important;color:#f87171!important;}

  /* ── Reminders / notices ── */
  .dash-notice{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .dash-notice-title{color:var(--colour-text-primary);}

  /* ── Referral section ── */
  .referral-card .ref-code-val,.ref-code-val{background:rgba(74,222,128,.12)!important;color:#4ade80!important;}
  .referral-card .ref-link-input,.ref-link-input{background:var(--colour-bg-subtle)!important;border-color:var(--colour-border)!important;color:var(--colour-text-secondary)!important;}
  .ref-copy-btn:hover{background:rgba(74,222,128,.12)!important;}

  /* ── Templates ── */
  .template-card,.tpl-card{background:var(--colour-bg-card);border-color:var(--colour-border);}

  /* ── Tour type badges (room types, etc.) ── */
  .tb.quint,.tb.sext{background:rgba(251,191,36,.15);color:#fbbf24;}
  .tbc-b{background:rgba(251,191,36,.1)!important;border-color:rgba(251,191,36,.2)!important;color:#fbbf24!important;}

  /* ── Toolbar / secondary bar elements ── */
  .tbar-secondary{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .qa-btn{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-secondary);}

  /* ── Form builder items ── */
  .form-item{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .form-item-badge{background:var(--colour-bg-subtle);border-color:var(--colour-border);color:var(--colour-text-label);}

  /* ── 2FA popup (hardcoded #fff) ── */
  .tfa-popup{background:var(--colour-bg-card)!important;}

  /* ── Headcount ── */
  .hc-pill{background:var(--colour-bg-card);border-color:var(--colour-border);color:var(--colour-text-primary);}
  .hc-pill-present{background:rgba(74,222,128,.1);border-color:#059669;color:#4ade80;}

  /* ── Mobile nav tab hardcoded #fff fix ── */
  .nav-row.nav-main .ni.ni-icon,
  .nav-row.nav-main .ni.ni-gear{background:var(--colour-bg-card)!important;border-color:var(--colour-border)!important;}

  /* ── Porter / luggage dark mode ── */
  .ptr-room{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .ptr-sum-stat{background:var(--colour-bg-card);border-color:var(--colour-border);}
  .ltg-stat-green{background:rgba(74,222,128,.1);border-color:#059669;}
  .cl-pax{background:var(--colour-bg-subtle);}
  .porter-room-card{background:var(--colour-bg-subtle);border-color:var(--colour-border);}

  /* ── Inline-style overrides (badges in templates etc.) ── */
  [style*="background:#f1f5f9"]{background:var(--colour-bg-subtle)!important;color:var(--colour-text-secondary)!important;}
  [style*="background:#f8fafc"]{background:var(--colour-bg-subtle)!important;}
  [style*="background:#fef2f2"]{background:rgba(248,113,113,.1)!important;border-color:rgba(248,113,113,.25)!important;color:#f87171!important;}

  /* ── Ops announce bar ── */
  .ops-announce-bar .ops-announce-label{color:var(--colour-text-primary);}
  .ops-announce-msg{color:var(--colour-text-secondary);}
}

/* ── SKELETON LOADING (pulsing placeholder shapes) ── */
.skeleton{position:relative;overflow:hidden;background:var(--colour-bg-subtle,#fafafa);border-radius:var(--radius-sm);color:transparent!important;pointer-events:none;user-select:none;}
.skeleton *{visibility:hidden;}
.skeleton::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.06) 50%,transparent 100%);animation:skeletonShimmer 1.5s infinite;}
@keyframes skeletonShimmer{0%{transform:translateX(-100%);}100%{transform:translateX(100%);}}
.skeleton-line{height:14px;border-radius:4px;margin-bottom:8px;}
.skeleton-line.w75{width:75%;}
.skeleton-line.w50{width:50%;}
.skeleton-line.w90{width:90%;}
.skeleton-circle{width:40px;height:40px;border-radius:50%;}
.skeleton-card{height:120px;border-radius:var(--radius-md,12px);margin-bottom:var(--space-3);}

/* ── TAB CONTENT TRANSITION (smooth crossfade + slide) ── */
.tour-content{transition:opacity .2s ease,transform .2s ease;}
.tour-content.switching{opacity:0;transform:translateY(6px);pointer-events:none;}

/* ── BUTTON ALIAS CONSOLIDATION ── */
/* These aliases ensure backwards compatibility while funnelling to the core 4 */
.qa-btn{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--font-semibold);border-radius:var(--radius-sm);background:var(--white);border:1px solid var(--bd);color:var(--tx2);cursor:pointer;text-decoration:none;transition:border-color var(--ease),color var(--ease),background var(--ease),box-shadow var(--ease);min-height:36px;}
.qa-btn:hover{border-color:var(--ac);color:var(--ac);background:var(--ac-muted);text-decoration:none;}
.qa-btn:active{transform:translateY(1px);}

@media print{
  .topbar,.tour-bar,.tbar,.tbar-secondary,.hint,.no-print,.ops-dash,.help-box,.install-banner,.app-nav{display:none!important;}
  body{background:#fff;}
  .m-body{overflow:visible;padding:0;}
}
@keyframes spin{to{transform:rotate(360deg);}}
