/* V118: large-tablet navigation and hub visit check-in */
:root{--v118-green:#06471d;--v118-green-2:#0b6b2c;--v118-lime:#dff59b;--v118-ink:#0b1420;--v118-muted:#667568;--v118-line:#dce8de;--v118-soft:#f3f8f4}

/* Phones and tablets use one full-width header plus a touch-friendly drawer.
   Fine-pointer laptop/desktop screens keep the permanent left navigation. */
@media (max-width:991.98px), (min-width:992px) and (max-width:1399.98px) and (hover:none) and (pointer:coarse){
  .admin-shell>.row,.portal-shell>.row,.partner-app-shell>.row{display:block!important;grid-template-columns:1fr!important;min-height:100vh!important}
  .admin-shell main,.portal-shell main,.partner-app-shell main{display:block!important;width:100%!important;max-width:100%!important;min-width:0!important}
  .admin-shell aside.admin-sidebar,.portal-shell aside.portal-sidebar,.partner-app-shell aside.portal-sidebar,.partner-app-shell aside.partner-sidebar{display:none!important}
  .admin-shell .mobile-menu-header,.portal-shell .mobile-menu-header,.partner-app-shell .mobile-menu-header{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;margin:10px 12px 0!important;padding:11px 14px!important;min-height:64px!important;border-radius:18px!important;position:sticky!important;top:8px!important;z-index:1330!important;box-shadow:0 14px 34px rgba(4,39,16,.18)!important}
  .mobile-menu-header .mobile-logo{width:auto!important;max-width:78px!important;max-height:40px!important;object-fit:contain!important}
  .mobile-menu-copy .small{font-size:.68rem!important;letter-spacing:.1em!important;line-height:1.25!important;margin:0!important}
  .mobile-menu-trigger{flex:0 0 auto!important;min-width:92px!important;min-height:44px!important;padding:10px 15px!important;white-space:nowrap!important}
  div.mobile-menu-panel[hidden],div.mobile-menu-backdrop[hidden]{display:none!important}
  div.mobile-menu-panel:not([hidden]){display:block!important;position:fixed!important;top:84px!important;right:12px!important;bottom:12px!important;left:auto!important;width:min(430px,calc(100vw - 24px))!important;z-index:1350!important;padding:0!important;background:transparent!important;overflow:hidden!important;touch-action:pan-y!important}
  .mobile-menu-panel .mobile-menu-panel-inner{display:grid!important;grid-template-columns:1fr!important;align-content:start!important;gap:8px!important;height:100%!important;min-height:0!important;max-height:none!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain!important;touch-action:pan-y!important;-webkit-overflow-scrolling:touch;scrollbar-width:thin!important;scrollbar-color:rgba(255,255,255,.48) transparent!important;border-radius:22px!important;padding:14px!important;box-shadow:0 26px 80px rgba(0,0,0,.32)!important}
  .mobile-menu-panel .mobile-menu-panel-inner::-webkit-scrollbar{width:7px!important}.mobile-menu-panel .mobile-menu-panel-inner::-webkit-scrollbar-thumb{background:rgba(255,255,255,.48)!important;border-radius:999px!important}
  .mobile-menu-panel a,.mobile-menu-panel a.mobile-menu-link{min-height:48px!important;padding:12px 14px!important;border-radius:14px!important;font-size:.9rem!important}
  div.mobile-menu-backdrop:not([hidden]){display:block!important;position:fixed!important;inset:0!important;background:rgba(6,18,10,.52)!important;backdrop-filter:blur(2px)!important;z-index:1340!important}
  body.mobile-nav-open{overflow:hidden!important}
  .admin-v105-page,.v104-main,.v106-main,.portal-page-shell{padding-left:clamp(14px,2.4vw,28px)!important;padding-right:clamp(14px,2.4vw,28px)!important}
}

/* Laptop view: permanent, independently scrollable left menu. This deliberately
   overrides Bootstrap's xl-only display utility and the older mobile rules. */
@media (min-width:992px) and (hover:hover) and (pointer:fine){
  .admin-shell>.row,.portal-shell>.row,.partner-app-shell>.row{display:grid!important;grid-template-columns:244px minmax(0,1fr)!important;min-height:100vh!important;align-items:stretch!important}
  .admin-shell aside.admin-sidebar,.portal-shell aside.portal-sidebar,.partner-app-shell aside.portal-sidebar,.partner-app-shell aside.partner-sidebar{display:block!important;position:sticky!important;top:0!important;width:244px!important;max-width:244px!important;min-width:244px!important;height:100vh!important;min-height:100vh!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain!important;scrollbar-gutter:stable!important;scrollbar-width:thin!important;scrollbar-color:rgba(255,255,255,.42) transparent!important;-webkit-overflow-scrolling:touch}
  .admin-shell aside.admin-sidebar::-webkit-scrollbar,.portal-shell aside.portal-sidebar::-webkit-scrollbar,.partner-app-shell aside.portal-sidebar::-webkit-scrollbar,.partner-app-shell aside.partner-sidebar::-webkit-scrollbar{width:7px!important}
  .admin-shell aside.admin-sidebar::-webkit-scrollbar-thumb,.portal-shell aside.portal-sidebar::-webkit-scrollbar-thumb,.partner-app-shell aside.portal-sidebar::-webkit-scrollbar-thumb,.partner-app-shell aside.partner-sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.42)!important;border-radius:999px!important}
  .admin-shell main,.portal-shell main,.partner-app-shell main{display:block!important;width:100%!important;max-width:100%!important;min-width:0!important}
  .admin-shell .mobile-menu-header,.portal-shell .mobile-menu-header,.partner-app-shell .mobile-menu-header,.admin-shell .mobile-menu-panel,.portal-shell .mobile-menu-panel,.partner-app-shell .mobile-menu-panel,.admin-shell .mobile-menu-backdrop,.portal-shell .mobile-menu-backdrop,.partner-app-shell .mobile-menu-backdrop{display:none!important}
  body.mobile-nav-open{overflow:auto!important}
}
@media (max-width:560px){
  .mobile-menu-copy{display:none!important}.mobile-menu-trigger{min-width:86px!important}
  .admin-shell .mobile-menu-header,.portal-shell .mobile-menu-header{margin:8px 8px 0!important;border-radius:16px!important}
  div.mobile-menu-panel:not([hidden]){top:78px!important;right:8px!important;bottom:8px!important;width:calc(100vw - 16px)!important}
}

.v118-page{background:linear-gradient(180deg,#f5faf6 0%,#eef6f0 100%);min-height:100vh}
.v118-kicker{font-size:.72rem;letter-spacing:.15em;text-transform:uppercase;font-weight:900;color:#6d8436}
.v118-portal-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:22px;padding:clamp(24px,4vw,44px);border-radius:30px;background:radial-gradient(circle at 90% 10%,rgba(223,245,155,.32),transparent 32%),linear-gradient(135deg,#053b18,#08702b);color:#fff;box-shadow:0 28px 70px rgba(6,71,29,.2);margin-bottom:20px}
.v118-portal-hero .v118-kicker{color:var(--v118-lime)}.v118-portal-hero h1{font-size:clamp(2rem,4vw,4rem);font-weight:950;letter-spacing:-.055em;line-height:.98;margin:.45rem 0}.v118-portal-hero p{color:rgba(255,255,255,.78);margin:0;max-width:700px}
.v118-live-clock{font-size:clamp(2rem,4vw,3.6rem);font-weight:950;line-height:1;text-align:right}.v118-live-clock small{display:block;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-top:8px}
.v118-occupancy{text-align:center;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);padding:18px 24px;border-radius:22px;min-width:150px}.v118-occupancy strong{display:block;font-size:2.6rem}.v118-occupancy span{font-size:.78rem;color:rgba(255,255,255,.7)}
.v118-active-card,.v118-checkin-panel,.v118-history-card,.v118-search-card{background:#fff;border:1px solid var(--v118-line);border-radius:26px;padding:clamp(20px,3vw,30px);box-shadow:0 18px 50px rgba(18,53,31,.07);margin-bottom:20px}
.v118-active-card{display:flex;align-items:center;justify-content:space-between;gap:22px;background:linear-gradient(135deg,#fff,#f3faef)}.v118-active-card h2,.v118-checkin-panel h2,.v118-history-card h2{font-weight:950;color:var(--v118-ink);margin:.45rem 0}.v118-active-card p,.v118-checkin-panel p{color:var(--v118-muted);margin:0}.v118-live-badge{display:inline-flex;padding:6px 10px;border-radius:999px;background:#dff6e5;color:#08712b;font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.09em}
.v118-checkin-panel{display:grid;grid-template-columns:minmax(0,.8fr) minmax(420px,1.2fr);gap:28px;align-items:center}.v118-checkin-form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end}.v118-checkin-form label,.v118-search-card label{display:grid;gap:6px;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:#5c6b60}.v118-checkin-form select,.v118-search-row input,.v118-staff-action select{min-height:48px;border:1px solid #d8e5da;border-radius:14px;background:#fff;padding:10px 12px;color:var(--v118-ink)}
.v118-big-button,.v118-search-row button,.v118-staff-action button{border:0;border-radius:14px;background:var(--v118-green);color:#fff;font-weight:900;padding:14px 20px;min-height:48px;white-space:nowrap}.v118-big-button.checkout,.v118-staff-action button.checkout{background:#17211a}.v118-big-button:hover,.v118-search-row button:hover,.v118-staff-action button:hover{background:var(--v118-green-2)}
.v118-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:15px}.v118-section-head>span{color:var(--v118-muted);font-weight:800;font-size:.82rem}.v118-history-card table{font-size:.88rem}.v118-history-card th{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:#607065;background:#f4f8f5;white-space:nowrap}.v118-empty{border:1px dashed #bed2c2;background:#f7faf7;color:var(--v118-muted);padding:22px;border-radius:18px;text-align:center}
.v118-search-row{display:grid;grid-template-columns:1fr auto;gap:10px;margin-top:8px}.v118-member-results{display:grid;gap:12px;margin-bottom:20px}.v118-member-card{display:flex;justify-content:space-between;align-items:center;gap:18px;background:#fff;border:1px solid var(--v118-line);border-radius:20px;padding:16px 18px}.v118-member-card>div>strong{display:block;color:var(--v118-ink)}.v118-member-card>div>span{font-size:.8rem;color:var(--v118-muted)}.v118-staff-action{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.v118-staff-action select{max-width:190px}.v118-live-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.v118-live-list>div{display:flex;gap:10px;align-items:center;background:var(--v118-soft);border-radius:16px;padding:12px}.v118-avatar{width:38px;height:38px;border-radius:50%;background:var(--v118-green);color:#fff;display:grid;place-items:center;font-weight:900}.v118-live-list p{margin:0}.v118-live-list small{display:block;color:var(--v118-muted)}

.v118-scan-page{min-height:72vh;background:radial-gradient(circle at 50% 0,#e1f3e5,transparent 42%),#f4f8f4;padding:clamp(20px,5vw,70px) 16px}.v118-scan-shell{max-width:590px;margin:0 auto}.v118-scan-card{text-align:center;background:#fff;border:1px solid var(--v118-line);border-radius:34px;padding:clamp(26px,6vw,52px);box-shadow:0 28px 80px rgba(10,48,22,.12)}.v118-scan-mark{width:62px;height:62px;border-radius:20px;background:linear-gradient(135deg,#053b18,#0c7a31);color:#fff;display:grid;place-items:center;font-size:1.8rem;font-weight:950;margin:0 auto 20px}.v118-scan-card h1{font-size:clamp(2rem,6vw,3.6rem);line-height:1;letter-spacing:-.055em;font-weight:950;color:var(--v118-ink);margin:12px 0}.v118-scan-card p{color:var(--v118-muted);font-size:1rem;line-height:1.6}.v118-location-pill{display:inline-flex;background:#edf7ef;color:var(--v118-green);border-radius:999px;padding:7px 12px;font-weight:850;margin-top:12px}.v118-primary-action,.v118-secondary-action{display:flex;width:100%;align-items:center;justify-content:center;text-decoration:none;border:0;border-radius:16px;min-height:56px;padding:14px 20px;font-weight:900;margin-top:12px}.v118-primary-action{background:var(--v118-green);color:#fff}.v118-primary-action.is-checkout{background:#17211a}.v118-secondary-action{background:#eef5ef;color:var(--v118-green)}.v118-one-tap-form label{display:flex;justify-content:space-between;color:#4f6052;font-size:.78rem;font-weight:850;margin:20px 0 6px}.v118-one-tap-form label span{color:#829087;font-weight:600}.v118-one-tap-form select{width:100%;min-height:50px;padding:10px 12px;border:1px solid #d5e2d7;border-radius:14px;background:#fff}.v118-status-dot{width:14px;height:14px;border-radius:50%;background:#95a59a;margin:12px auto;box-shadow:0 0 0 8px #f0f4f1}.v118-status-dot.is-in{background:#18a447;box-shadow:0 0 0 8px #e3f7e8}.v118-privacy-note{border-top:1px solid #e5ece6;margin-top:24px;padding-top:18px;color:#7b887e;font-size:.74rem}.v118-scan-card>small{display:block;color:#7b887e;margin-top:12px}

.v118-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}.v118-stat-grid a{display:block;text-decoration:none;color:inherit;background:#fff;border:1px solid var(--v118-line);border-radius:20px;padding:18px;box-shadow:0 12px 34px rgba(18,53,31,.05)}.v118-stat-grid span,.v118-stat-grid small{display:block;color:var(--v118-muted)}.v118-stat-grid span{font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;font-weight:900}.v118-stat-grid strong{display:block;color:var(--v118-green);font-size:2rem}.v118-stat-grid a.attention{border-color:#e0b04f;background:#fffaf0}.v118-admin>.admin-v105-panel{margin-bottom:20px}.v118-qr-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v118-qr-card{display:grid;grid-template-columns:160px 1fr;gap:18px;border:1px solid var(--v118-line);border-radius:22px;padding:16px;background:#fff}.v118-qr-image img{width:150px;height:150px;display:block;border-radius:12px}.v118-qr-image span{display:block;font-size:.6rem;color:#89938b;margin-top:5px}.v118-qr-card h4{font-weight:950;margin:8px 0}.v118-qr-card p{font-size:.83rem;color:var(--v118-muted)}.v118-status{font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900;padding:4px 8px;border-radius:999px}.v118-status.active{background:#e2f6e7;color:#08712b}.v118-status.inactive{background:#f1f1f1;color:#6d7470}.v118-qr-card details{margin-top:10px}.v118-qr-card summary{cursor:pointer;color:var(--v118-green);font-weight:850}.v118-location-form{display:grid;gap:8px;margin-top:10px}.v118-location-form input,.v118-location-form select,.v118-filter input,.v118-filter select{border:1px solid #d6e3d8;border-radius:11px;padding:9px 10px;background:#fff}.v118-location-form button,.v118-filter button{border:0;border-radius:11px;background:var(--v118-green);color:#fff;font-weight:850;padding:10px}.v118-link-button{border:0;background:transparent;color:#a13d32;font-weight:800;padding:10px 0}.v118-new-location{display:flex;align-items:center;justify-content:center;background:var(--v118-soft)}.v118-filter{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-bottom:16px}.v118-filter label{display:grid;gap:5px;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:var(--v118-muted)}

@media(max-width:1050px){.v118-checkin-panel{grid-template-columns:1fr}.v118-qr-grid{grid-template-columns:1fr}.v118-live-list{grid-template-columns:1fr}}
@media(max-width:760px){.v118-portal-hero,.v118-active-card,.v118-member-card{align-items:stretch;flex-direction:column}.v118-live-clock{text-align:left}.v118-checkin-form{grid-template-columns:1fr}.v118-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.v118-staff-action{display:grid;width:100%}.v118-staff-action select{max-width:none;width:100%}.v118-search-row{grid-template-columns:1fr}.v118-qr-card{grid-template-columns:1fr}.v118-qr-image img{width:min(260px,100%);height:auto;margin:auto}.v118-filter{display:grid;grid-template-columns:1fr}.v118-filter input,.v118-filter select{width:100%}}

@media print{body>*{display:none!important}.admin-shell{display:block!important}.admin-shell>.row{display:block!important}.admin-shell main{display:block!important}.v118-admin{display:block!important}.v118-admin>*{display:none!important}.v118-admin .v118-qr-section{display:block!important;border:0!important;box-shadow:none!important}.v118-qr-section .admin-v105-panel-header{display:block!important}.v118-qr-grid{display:grid!important;grid-template-columns:repeat(2,1fr)!important}.v118-qr-card{display:grid!important;break-inside:avoid;border:1px solid #bbb!important}.v118-new-location,.v118-qr-card details,.v118-print-hint{display:none!important}.v118-qr-image span{display:none!important}}
