:root{--gold:#d6a84b;--deep:#a8791e;--ink:#171717;--muted:#68635b;--line:#e7e1d7;--paper:#f6f5f3;--success:#238636;--danger:#b42318;--warning:#8a5a00;--shadow:0 12px 34px rgba(0,0,0,.07)}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at top right,rgba(214,168,75,.1),transparent 34rem),var(--paper);color:var(--ink);font-family:Inter,Arial,sans-serif}button,input,select{font:inherit}.topbar{height:76px;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;background:#171717;color:#fff}.brand{display:flex;align-items:center;gap:14px;color:inherit;text-decoration:none}.brand img{width:54px;height:54px;object-fit:contain}.brand span{font-size:.76rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.dashboard-link{color:#d7d1c7;text-decoration:none;font-size:.88rem;font-weight:700}.dashboard-link:hover{color:var(--gold)}
main{width:min(1240px,92vw);margin:0 auto;padding:34px 0 48px}.view-tabs{display:flex;gap:8px;margin-bottom:34px;padding:5px;width:max-content;border:1px solid var(--line);border-radius:12px;background:#fff}.view-tab{display:flex;align-items:center;padding:10px 16px;border:0;border-radius:10px;background:transparent;color:var(--muted);font:inherit;font-weight:800;text-decoration:none;cursor:pointer}.view-tab.active{background:#171717;color:#fff}.eyebrow{margin:0 0 8px;color:var(--deep);font-size:.7rem;font-weight:850;letter-spacing:.14em;text-transform:uppercase}.intro{display:flex;align-items:end;justify-content:space-between;gap:28px;margin-bottom:26px}.intro h1,.history-intro h1{margin:0;font-family:Georgia,serif;font-size:clamp(2.7rem,6vw,4.6rem);font-weight:500;letter-spacing:-.045em}.intro>div>p:not(.eyebrow),.history-intro p:not(.eyebrow){margin:14px 0 0;color:var(--muted);font-size:1.04rem}.attendance-controls{width:min(650px,100%);display:grid;grid-template-columns:1fr .78fr;gap:10px}.attendance-controls .session-field{grid-column:1/-1}label span{display:block;margin-bottom:8px;font-size:.76rem;font-weight:800}input,select{width:100%;height:48px;padding:0 13px;border:1px solid #cec7bb;border-radius:9px;background:#fff;color:var(--ink)}input:focus,select:focus{outline:3px solid rgba(214,168,75,.2);border-color:var(--deep)}button{border:0;border-radius:10px;padding:13px 18px;font-weight:800;cursor:pointer}.primary{background:#111;color:#fff;box-shadow:inset 0 -3px var(--deep)}button:disabled{opacity:.45;cursor:not-allowed}.message{margin:0 0 20px;padding:14px 16px;border-radius:10px;background:#eef7f0;color:#176b31}.message.error{background:#fae9e7;color:var(--danger)}
.experience-context{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 27px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow)}.experience-context h2{margin:0;font-size:1.4rem}.experience-context p:last-child{margin:7px 0 0;color:var(--muted);font-size:.83rem}.context-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.window-status{padding:8px 12px;border-radius:999px;background:#edf7ef;color:var(--success);font-size:.75rem;font-weight:800}.window-status.closed{background:#fff3dc;color:var(--warning)}.print-button{padding:10px 14px;border:1px solid #cfc7ba;background:#fff;color:var(--ink);box-shadow:inset 0 -2px var(--gold)}
.statistics{display:grid;grid-template-columns:repeat(7,1fr);gap:12px;margin:18px 0}.statistics article{min-height:95px;padding:17px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:var(--shadow)}.statistics span,.statistics strong{display:block}.statistics span{color:var(--muted);font-size:.74rem;font-weight:750}.statistics strong{margin-top:13px;font-family:Georgia,serif;font-size:2rem;font-weight:500}.operations{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0 22px}.operation{display:grid;grid-template-columns:auto 1fr;column-gap:14px;align-items:center;padding:19px;text-align:left;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}.operation.primary{background:#171717;color:#fff;border-color:#171717}.operation-icon{grid-row:1/3;width:43px;height:43px;display:grid;place-items:center;border-radius:50%;background:#f6eedf;color:var(--deep);font-size:1.25rem}.operation strong,.operation small{display:block}.operation small{margin-top:4px;color:var(--muted);font-weight:500}.operation.primary small{color:#c9c4bb}.pass-breakdown{display:flex;flex-wrap:wrap;gap:8px;margin:-8px 0 22px}.pass-breakdown span{padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-size:.75rem}.pass-breakdown strong{color:var(--ink)}
.arrivals{overflow:hidden;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:var(--shadow)}.section-heading{display:flex;align-items:center;justify-content:space-between;padding:24px 27px;border-bottom:1px solid var(--line)}.section-heading h2{margin:0;font-size:1.45rem}.section-heading>span{color:var(--muted);font-size:.82rem}.loading,.empty{padding:55px 24px;text-align:center;color:var(--muted)}.empty strong,.empty span{display:block}.empty strong{color:var(--ink)}.empty span{margin-top:6px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{padding:13px 18px;background:#faf8f4;color:#777065;text-align:left;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}td{padding:17px 18px;border-top:1px solid var(--line);font-size:.82rem}.person strong,.person span{display:block}.person span,.subtle{margin-top:4px;color:var(--muted);font-size:.73rem}.tag{display:inline-flex;padding:6px 9px;border-radius:999px;background:#edf7ef;color:var(--success);font-size:.7rem;font-weight:800}.tag.non-member{background:#f1eee8;color:#645d53}
.history-intro{margin-bottom:26px}.history-filters{display:grid;grid-template-columns:1.2fr .8fr .6fr .7fr 1.3fr;gap:12px;align-items:end;padding:22px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow)}.history-statistics{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:18px 0}.history-statistics article{min-height:95px;padding:17px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:var(--shadow)}.history-statistics span,.history-statistics strong{display:block}.history-statistics span{color:var(--muted);font-size:.74rem;font-weight:750}.history-statistics strong{margin-top:13px;font-family:Georgia,serif;font-size:2rem;font-weight:500}.history-chart-card{overflow:hidden;margin-bottom:18px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:var(--shadow)}.history-chart{min-height:280px;padding:25px 28px;display:flex;align-items:end;gap:12px;overflow-x:auto}.chart-column{min-width:56px;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:end;height:230px}.chart-value{margin-bottom:6px;font-size:.72rem;font-weight:800}.chart-bars{width:min(54px,78%);display:flex;flex-direction:column;justify-content:end;border-radius:7px 7px 2px 2px;overflow:hidden;background:#eee}.chart-member{background:var(--gold)}.chart-guest{background:#292929}.chart-label{margin-top:8px;color:var(--muted);font-size:.7rem;white-space:nowrap}.chart-legend{display:flex;gap:18px;padding:0 28px 22px;color:var(--muted);font-size:.75rem}.chart-legend span{display:flex;align-items:center;gap:7px}.chart-legend i{width:12px;height:12px;border-radius:3px}.member-colour{background:var(--gold)}.guest-colour{background:#292929}.history-table{margin-bottom:18px}
.backdrop{position:fixed;inset:0;z-index:10;background:rgba(0,0,0,.48)}.modal{position:fixed;z-index:11;top:50%;left:50%;width:min(620px,92vw);max-height:90vh;overflow-y:auto;transform:translate(-50%,-50%);padding:28px;border-radius:20px;background:#fff;box-shadow:0 30px 80px rgba(0,0,0,.3)}.modal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.modal-heading h2{margin:0;font-family:Georgia,serif;font-size:2rem;font-weight:500}.close{width:40px;height:40px;padding:0;border-radius:50%;background:#f2eee8;font-size:1.5rem}.scanner-modal{width:min(700px,94vw);overflow-y:auto}#camera{display:block;width:100%;height:min(48vh,420px);object-fit:cover;border-radius:14px;background:#111}.scan-line{height:2px;margin:-24vh 8% 24vh;position:relative;background:var(--gold);box-shadow:0 0 15px var(--gold);pointer-events:none}.scan-result{display:flex;flex-direction:column;gap:5px;margin-bottom:14px;padding:13px;border-radius:10px}.scan-result.neutral{background:#f4f1eb;color:#4f4a42}.scan-result.success{background:#e9f7ec;color:#176b31}.scan-result.warning{background:#fff3dc;color:#7a5208}.scan-result.error{background:#fae9e7;color:var(--danger)}#qrForm,.search-form{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;margin-top:18px}.person-results{display:grid;gap:9px;margin-top:17px}.person-result{width:100%;display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:13px;text-align:left;background:#faf8f4;border:1px solid var(--line)}.person-result strong,.person-result span{display:block}.person-result span{margin-top:4px;color:var(--muted);font-size:.73rem}.person-result em{font-size:.72rem;font-style:normal;color:var(--deep)}.guidance{color:var(--muted);line-height:1.5}.gate-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.full{grid-column:1/-1}.powered{display:flex;align-items:center;gap:6px}footer{width:min(1240px,92vw);margin:0 auto;padding:0 0 34px;display:flex;justify-content:space-between;color:#8a8378;font-size:.75rem}.powered i{width:22px;height:22px;background:var(--gold);-webkit-mask:url("../assets/mover-icon.png") center/contain no-repeat;mask:url("../assets/mover-icon.png") center/contain no-repeat}.powered strong{color:var(--deep)}[hidden]{display:none!important}
@media(max-width:980px){.statistics,.history-statistics{grid-template-columns:repeat(3,1fr)}.operations{grid-template-columns:1fr}.operation{min-height:88px}.history-filters{grid-template-columns:1fr 1fr}}@media(max-width:650px){.topbar{padding:0 18px}.brand span{display:none}main{padding:24px 0 34px}.view-tabs{width:100%}.view-tab{flex:1}.intro{align-items:flex-start;flex-direction:column}.attendance-controls{width:100%;grid-template-columns:1fr}.attendance-controls .session-field{grid-column:auto}.experience-context{align-items:flex-start;flex-direction:column}.statistics,.history-statistics{grid-template-columns:1fr 1fr}.history-filters{grid-template-columns:1fr}.gate-form,#qrForm,.search-form{grid-template-columns:1fr}.modal{padding:20px}.scan-line{display:none}.history-chart{padding:20px 15px}footer{flex-direction:column;gap:10px}}
.print-sheet{display:none}
@media print{
  @page{size:A4 landscape;margin:10mm}
  body{background:#fff;color:#000;font-family:Arial,sans-serif}
  body>*:not(main),main>*:not(#printSheet){display:none!important}
  main{width:100%;margin:0;padding:0}
  #printSheet{display:block!important}
  .print-header{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:5px;border-bottom:1.5px solid #000}
  .print-header img{width:46px;height:46px;object-fit:contain;filter:grayscale(1)}
  .print-kicker{margin:0 0 2px;font-size:7.5pt;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
  .print-header h1{margin:0;font:700 15pt Georgia,serif}
  .print-header p:last-child{margin:2px 0 0;font-size:8pt}
  .print-meta{display:flex;gap:16px;margin:4px 0;font-size:7.2pt;white-space:nowrap}
  .print-pass-summary{display:flex;flex-wrap:wrap;gap:3px;margin:0 0 4px;font-size:6.7pt}.print-pass-summary span{padding:1.5px 4px;border:1px solid #999}.print-pass-summary strong{font-weight:700}
  .print-roster,.print-walkins table{width:100%;table-layout:fixed;border-collapse:collapse}
  .print-roster th,.print-roster td,.print-walkins th,.print-walkins td{padding:2.5px 4px;border:1px solid #777;background:#fff;color:#000;text-align:left;font-size:7pt;line-height:1.12;vertical-align:top;overflow-wrap:normal}
  .print-roster th,.print-walkins th{font-weight:700;letter-spacing:.04em;text-transform:uppercase}
  .print-roster td small{display:block;margin-top:1px;font-size:6.2pt;color:#333;white-space:nowrap}
  .tick-column,.paper-tick{width:20px;text-align:center!important;font-size:10pt!important}
  .print-roster th:nth-child(2){width:23%}.print-roster th:nth-child(3){width:34%}.print-roster th:nth-child(4){width:12%}.print-roster th:nth-child(5){width:15%}.print-roster th:nth-child(6){width:auto}
  .print-walkins th:nth-child(2){width:27%}.print-walkins th:nth-child(3){width:28%}.print-walkins th:nth-child(4){width:15%}.print-walkins th:nth-child(5){width:auto}
  .print-walkins{margin-top:6px;break-inside:avoid}.print-walkins h2{margin:0 0 3px;font-size:9pt}.print-walkins td{height:16px}
  .print-footer{display:block;width:100%;margin:5px 0 0;padding:4px 0 0;border-top:1px solid #777;color:#333;font-size:6.5pt}
}

/* Production attendance confirmation v9 */
.scanner-outcome{min-height:430px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:34px 24px;border-radius:18px;margin-bottom:8px}
.scanner-outcome.success{background:#e9f7ec;color:#176b31}.scanner-outcome.warning{background:#fff3dc;color:#7a5208}.scanner-outcome.error{background:#fae9e7;color:var(--danger)}
.scanner-outcome__icon{width:104px;height:104px;display:grid;place-items:center;border-radius:50%;margin-bottom:20px;background:currentColor;color:#fff;font-size:4.7rem;font-weight:900;line-height:1}
.scanner-outcome h3{margin:0;font-size:clamp(2rem,6vw,3.4rem);letter-spacing:.04em}.scanner-outcome>strong{margin-top:14px;color:var(--ink);font-size:clamp(1.45rem,4vw,2.2rem)}
.scanner-outcome p{max-width:520px;margin:10px 0 0;font-size:1.05rem;font-weight:700}.scanner-outcome time{margin-top:8px;font-size:.92rem;font-weight:700}
.scan-next{width:min(360px,100%);margin-top:28px;padding:17px 24px;font-size:1.05rem}
.powered{display:flex;align-items:center;gap:8px}.powered img{display:block;width:86px;height:auto}.powered i,.powered strong{display:none!important}
.selected-person{margin:14px 0;padding:13px;border:1px solid #b7d8bd;border-radius:10px;background:#edf7ef}.selected-person strong,.selected-person span{display:block}.selected-person span{margin-top:4px;color:var(--muted);font-size:.76rem}.selected-person button{margin-top:10px;padding:8px 11px;border:1px solid var(--line);background:#fff;color:var(--ink)}
