:root{--ink:#182335;--muted:#66758a;--line:#e3e8ef;--bg:#f5f7fb;--primary:#315ae8;--soft:#edf2ff;--green:#147659;--amber:#a86010}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans KR",sans-serif;font-size:15px;line-height:1.6}button,input,select,textarea{font:inherit}button,a,input,select{ -webkit-tap-highlight-color:transparent }button,.button{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:10px 15px;cursor:pointer;font-weight:650;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}button:hover,.button:hover{border-color:#8999bd;background:#f9faff}button:disabled{opacity:.5;cursor:not-allowed}button.primary,.button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.danger{color:#b93636}input,select,textarea{border:1px solid #cfd7e3;border-radius:9px;background:#fff;padding:11px 12px;color:var(--ink);width:100%;min-height:44px}input[type=checkbox],input[type=radio]{width:18px;min-height:18px;flex-shrink:0;accent-color:var(--primary)}label{display:block;font-weight:650}label small,.help{display:block;color:var(--muted);font-size:13px;font-weight:400;margin:5px 0 0}h1,h2,h3,p{margin:0}h1{font-size:25px;letter-spacing:-.7px}h2{font-size:21px;letter-spacing:-.4px}h3{font-size:16px}a{color:var(--primary)}.top{background:#fff;border-bottom:1px solid var(--line);padding:20px max(20px,calc((100vw - 1240px)/2));display:flex;justify-content:space-between;align-items:center;gap:16px}.brand{font-size:12px;letter-spacing:1.5px;color:var(--primary);font-weight:800}.container{max-width:1280px;margin:auto;padding:28px 20px 60px}.bar,.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.bar{justify-content:space-between;margin-bottom:20px}.bar select{max-width:300px}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px;margin-bottom:20px;box-shadow:0 2px 8px #20385c03}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.field{margin-bottom:16px}.check{display:flex;align-items:flex-start;gap:9px;font-size:14px}.check input{margin-top:4px}.hint{background:var(--soft);border-radius:10px;padding:14px 16px;font-size:14px;color:#355087;margin:16px 0}.notice{padding:12px 16px;border:1px solid #f0bebe;background:#fff1f1;color:#a42b2b;border-radius:10px;margin:12px 0;white-space:pre-line}.notice.ok{background:#edf8f3;border-color:#b6dfce;color:var(--green)}[hidden]{display:none!important}.layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:22px}.event-list{display:flex;flex-direction:column;gap:8px}.event-item{display:block;text-align:left;width:100%;padding:15px}.event-item.active{background:var(--soft);border-color:var(--primary);color:#2344b2}.event-item small{display:block;color:var(--muted);font-weight:400;margin-top:3px}.eyebrow{font-size:12px;color:var(--muted);font-weight:650}.session-list{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.session-list button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}.metric{background:#f5f7fb;border-radius:12px;padding:16px}.metric strong{font-size:26px;display:block;font-variant-numeric:tabular-nums;line-height:1.3}.metric span{font-size:12px;color:var(--muted)}.metric small{font-size:14px;color:var(--muted);font-weight:400}.table-wrap{overflow:auto;margin-top:15px}table{border-collapse:collapse;width:100%;white-space:nowrap;font-size:14px}th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;background:#f8f9fc}td,th{padding:14px 12px;border-bottom:1px solid var(--line)}td small{display:block;font-size:12px;color:var(--muted)}td button{padding:7px 10px;font-size:12px;margin:2px}.badge{display:inline-block;padding:4px 8px;border-radius:7px;font-size:12px;background:#edf0f5;color:#596679;white-space:nowrap}.badge.confirmed,.badge.attended{background:#e7f5ef;color:var(--green)}.badge.standby{background:#fff3df;color:var(--amber)}.badge.called{background:#e9efff;color:#315ae8}.empty{text-align:center;padding:42px 14px;color:var(--muted)}.muted{color:var(--muted)}.spacer{margin:16px 0}.participant{max-width:580px;margin:auto;padding:24px 18px 60px}.participant .hero{padding:24px 5px}.hero h1{font-size:29px;margin:12px 0}.hero p{color:var(--muted)}.slot{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:10px;cursor:pointer;gap:12px}.slot:has(input:checked){border-color:var(--primary);background:var(--soft)}.slot:has(input:disabled){opacity:.5;cursor:default}.slot .slot-main{display:flex;gap:10px;align-items:center}.slot strong{display:block;font-size:19px}.slot .remaining{text-align:right;font-size:13px;font-weight:400}.full{width:100%}.ticket-number{text-align:center;margin:18px 0;font-size:64px;line-height:1.15;font-weight:800;letter-spacing:-2px}.ticket-detail{display:grid;grid-template-columns:110px 1fr;gap:10px;margin:22px 0}.ticket-detail dt{color:var(--muted)}.ticket-detail dd{margin:0;font-weight:650;text-align:right}.footer{text-align:center;font-size:12px;color:var(--muted);padding-top:18px}.qr-area{text-align:center;padding:26px}.qr-area img,.qr-area canvas{margin:auto;max-width:100%;height:auto}.qr-area p{margin:20px 0}.poster-title{font-size:32px}.narrow{max-width:480px;margin:30px auto}details summary{cursor:pointer;font-weight:650}details[open] summary{margin-bottom:16px}dialog{border:1px solid var(--line);border-radius:20px;padding:28px;width:min(520px,calc(100% - 30px))}dialog::backdrop{background:#17263e66}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #a4b7ff;outline-offset:2px}@media(max-width:760px){.top{padding:16px}.top h1{font-size:20px}.container{padding:20px 14px}.layout{grid-template-columns:1fr}.event-list{flex-direction:row;overflow:auto;padding-bottom:5px}.event-item{min-width:190px;width:auto}.card{padding:18px}.grid{grid-template-columns:1fr}.metrics{gap:7px}.metric{padding:12px}.metric strong{font-size:23px}.bar select{max-width:100%}.session-list button{padding:9px 12px}}@media print{body{background:white}body.poster .no-print{display:none!important}body.poster .participant{max-width:none;padding:40px}.qr-area{padding:60px 20px;border:0;box-shadow:none}.qr-area img,.qr-area canvas{width:300px!important;height:300px!important}.poster-title{font-size:42px}@page{size:A4;margin:18mm}}

.layout>aside,.layout>section{min-width:0}

/* Compact event workspace: only the roster scrolls on regular screens. */
.event-admin .top{padding:8px max(12px,calc((100vw - 1240px)/2));min-height:52px}
.event-admin .top .brand{display:none}.event-admin .top h1{font-size:19px}.event-admin .top .button{padding:6px 12px;min-height:36px;font-size:13px}
.event-admin.roster-ready{height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.event-admin.roster-ready .container{width:100%;flex:1;min-height:0;display:flex;flex-direction:column;padding:10px 12px 12px}
.event-admin #app,.event-admin #event-view{display:flex;flex-direction:column;min-height:0;flex:1}
.event-admin #message{flex-shrink:0;max-height:100px;overflow:auto;padding:8px 12px;margin:0 0 8px;font-size:13px}
.event-admin .management-toolbar{flex-shrink:0;gap:8px;margin:0 0 8px;flex-wrap:nowrap}
.event-admin #event-list{flex:1;min-width:0;max-width:480px;width:100%;min-height:42px;padding:8px 10px;font-size:15px;font-weight:700}
.event-admin .management-toolbar .actions{flex-shrink:0;gap:6px}
.event-admin .management-toolbar button{min-height:42px;padding:8px 12px;font-size:13px}
.event-admin #open-settings{border-color:#b9c8ec;color:#2545a3}
.event-admin .event-overview{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 20px;padding:9px 12px;margin:0 0 8px;flex-shrink:0;border-radius:12px;box-shadow:none}
.event-admin #selected-title,.event-admin #selected-venue{display:none}
.event-admin #event-meta{grid-column:1/-1;font-size:11px}
.event-admin .session-list{min-width:0;display:flex;flex-wrap:nowrap;overflow-x:auto;margin:0;gap:6px;align-items:center}
.event-admin .session-list button{flex-shrink:0;padding:5px 12px;min-height:36px;font-size:14px;border-radius:8px}
.event-admin .metrics{display:flex;align-items:center;gap:0;margin:0}
.event-admin .metric{display:flex;align-items:baseline;gap:6px;white-space:nowrap;padding:2px 14px;background:none;border-radius:0;border-left:1px solid var(--line)}
.event-admin .metric:first-child{border-left:0}.event-admin .metric span{font-size:12px}.event-admin .metric strong{display:inline;font-size:20px;line-height:1.3}.event-admin .metric small{font-size:12px}
.event-admin .roster-card{display:flex;flex-direction:column;flex:1;min-height:0;margin:0;padding:12px;border-radius:12px;box-shadow:none}
.event-admin .roster-heading{flex-shrink:0;gap:8px;margin:0 0 8px;flex-wrap:nowrap}
.event-admin .roster-heading h3{font-size:17px}.event-admin #next-team{font-size:12px;margin:0;line-height:1.5}
.event-admin #call-next{flex-shrink:0;min-height:42px;padding:7px 12px;font-size:13px;border-color:#c8d5f5;color:#2545a3}
.event-admin .roster-filters{display:flex;gap:8px;flex-shrink:0}
.event-admin .roster-filters select{width:125px;flex-shrink:0}.event-admin .roster-filters input{max-width:320px;min-width:0}
.event-admin .roster-filters select,.event-admin .roster-filters input{padding:7px 10px;min-height:40px;font-size:14px}
.event-admin .roster-scroll{flex:1;min-height:96px;overflow:auto;overscroll-behavior:contain;overflow-anchor:none;border-top:1px solid var(--line);margin-top:8px}
.event-admin .table-wrap{overflow:visible;margin:0}.event-admin .roster-table th{position:sticky;top:0;z-index:1;padding:8px 10px;background:#f8f9fc}
.event-admin .roster-table td{padding:10px;font-size:13px}
.event-admin .team-number>strong{font-size:21px;margin-right:6px;font-variant-numeric:tabular-nums}
.event-admin .team-person>strong{font-size:15px}.event-admin .team-person small{margin-top:1px}
.event-admin .team-actions button{min-height:36px;padding:6px 10px}.event-admin .team-actions .team-call{min-width:62px;min-height:42px}
.event-admin .team-recall{background:var(--soft);color:#2545a3;border-color:#bdccf5}
.event-admin .team-attend{background:#edf8f3;color:var(--green);border-color:#b6dfce}.event-admin .team-noshow{color:#b93636;border-color:#edcaca}.event-admin .team-person .noshow-history{font-size:11px;color:#a35b08;font-weight:650;white-space:normal}
.event-admin .team-more,.event-admin .mobile-label{display:none}
.event-admin #sync,.event-admin #paging{font-size:11px;margin:6px 0 0;line-height:1.5}
.event-admin #sync{flex-shrink:0}.event-admin #more{margin:8px 0 0;min-height:40px}
.event-admin .settings-dialog{width:min(680px,calc(100% - 24px));max-height:calc(100dvh - 24px);overflow:auto}
.event-admin .settings-section{padding:18px 0;border-bottom:1px solid var(--line)}
.event-admin .settings-section:last-child{border:0;padding-bottom:0}.event-admin .settings-dialog>.bar{margin-bottom:0}
.event-admin #settings-form .field{margin-bottom:0}.event-admin #team-dialog .bar{margin-bottom:12px}
.event-admin #team-controls button{min-height:44px;flex:1}.event-admin #team-detail p{overflow-wrap:anywhere}
@media(max-width:760px){
 .event-admin .top{min-height:48px;padding:6px 12px}.event-admin .top h1{font-size:17px}
 .event-admin.roster-ready .container{padding:8px 8px 10px}.event-admin .management-toolbar{margin-bottom:6px}
 .event-admin #event-list{font-size:14px;max-width:none}.event-admin .management-toolbar button{padding:7px 10px}
 .event-admin #refresh{display:none}.event-admin .event-overview{grid-template-columns:1fr;gap:6px;padding:8px 10px;margin-bottom:6px}
 .event-admin .metrics{width:100%;justify-content:space-between}.event-admin .metric{padding:0 8px;gap:4px}.event-admin .metric:first-child{padding-left:0}.event-admin .metric:last-child{padding-right:0}
 .event-admin .metric span{font-size:11px}.event-admin .metric strong{font-size:18px}.event-admin .metric small{font-size:11px}
 .event-admin .roster-card{padding:10px}.event-admin .roster-heading h3{font-size:15px}.event-admin #next-team{font-size:11px}
 .event-admin .roster-filters select{width:118px}.event-admin .roster-filters input{max-width:none}.event-admin .roster-filters select,.event-admin .roster-filters input{font-size:16px;padding:7px 8px}
 .event-admin .roster-table,.event-admin .roster-table tbody{display:block;width:100%;white-space:normal}
 .event-admin .roster-table thead{display:none}
 .event-admin .roster-table tr{display:grid;grid-template-columns:54px minmax(0,1fr);column-gap:8px;align-items:center;border-bottom:1px solid var(--line);padding:8px 0;min-height:90px}
 .event-admin .roster-table td{display:block;padding:0;border:0;min-width:0}
 .event-admin .team-number{grid-column:1;grid-row:1/span 2;align-self:center}.event-admin .team-number>strong{display:block;margin:0;font-size:21px}
 .event-admin .team-number .badge{font-size:10px;padding:2px 4px;margin-top:2px}
 .event-admin .team-person{grid-column:2;grid-row:1;align-self:end}
 .event-admin .team-person>strong{display:block;font-size:14px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
 .event-admin .team-person small{font-size:11px}.event-admin .team-people{grid-column:2;grid-row:2;font-size:11px;align-self:start;padding-top:2px!important}
 .event-admin .team-notice{display:none!important}
 .event-admin .team-actions{grid-column:1/-1;grid-row:3;display:flex!important;flex-wrap:wrap;gap:5px;padding-top:6px!important;align-self:center}
 .event-admin .team-actions button{flex:1;width:auto;margin:0;min-height:40px;padding:6px 5px;font-size:12px}
 .event-admin .team-actions .team-call{min-height:40px;font-size:13px;min-width:0}
 .event-admin .team-actions .team-attend{flex:1.3}.event-admin .team-actions .team-more{flex:0 0 44px}
 .event-admin .team-actions .secondary-action{display:none}
 .event-admin .team-more{display:inline-flex}.event-admin .mobile-label{display:inline}
 .event-admin .roster-table td.empty{grid-column:1/-1;padding:18px 0}
 .event-admin .settings-dialog{padding:18px}.event-admin dialog .bar h2{font-size:19px}
}
@media(max-height:540px){
 .event-admin.roster-ready{height:auto;min-height:100dvh;overflow:auto}
 .event-admin.roster-ready .container,.event-admin #app,.event-admin #event-view{display:block}
 .event-admin .roster-scroll{max-height:none;overflow:visible}.event-admin .roster-card{min-height:200px}
}

/* Guest registration fits common phone screens without shrinking input targets. */
.event-guest:not(.poster) .participant{max-width:600px;padding:10px 12px}
.event-guest:not(.poster) .hero{padding:0 2px 10px}
.event-guest:not(.poster) .brand{font-size:10px;letter-spacing:1px}
.event-guest:not(.poster) .hero h1{font-size:23px;line-height:1.35;margin:4px 0}
.event-guest:not(.poster) .hero p{font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.event-guest:not(.poster) .card{padding:12px;margin-bottom:8px;border-radius:12px;box-shadow:none}.event-guest:not(.poster) .time-card{padding-block:8px}
.event-guest:not(.poster) h2{font-size:15px;line-height:1.4;margin:0 0 8px}
.event-guest .time-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:6px}.event-guest:not(.poster) .time-heading h2{margin:0}.event-guest #slot-scroll-hint{font-size:11px;white-space:nowrap;margin:0}
.event-guest #slots{display:flex;flex-wrap:nowrap;gap:6px;margin:0;padding:2px 2px 5px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:#c7d2eb transparent}
.event-guest .slot{display:flex;flex:0 0 96px;flex-direction:column;gap:0;align-items:center;text-align:center;padding:5px 4px;margin:0;border-radius:9px;min-height:66px;scroll-snap-align:start}
.event-guest .slot .slot-main{justify-content:center;gap:4px}.event-guest .slot strong{font-size:17px;line-height:1.4}
.event-guest .slot input{margin:0;width:16px;min-height:16px;height:16px}
.event-guest .slot-status,.event-guest .slot .remaining{font-size:11px;line-height:1.5;text-align:center}
.event-guest #slots-closed{margin:6px 0 0;padding:8px;font-size:12px}
.event-guest .guest-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.event-guest .guest-fields .field{margin:0 0 8px;min-width:0}
.event-guest .guest-fields label{font-size:13px;margin-bottom:3px}
.event-guest .guest-fields input,.event-guest .guest-fields select{font-size:16px;min-height:44px;padding:8px 10px;width:100%;min-width:0}
.event-guest .inline-help{display:inline;font-size:10px;font-weight:400;margin:0}
.event-guest #allocation{padding:8px 10px;margin:0 0 8px;font-size:12px;line-height:1.5;min-height:34px}
.event-guest .guest-consent{min-height:32px;align-items:center;font-size:12px;gap:7px}.event-guest .guest-consent input{margin:0}
.event-guest .consent-details{margin:0 0 8px;font-size:11px}.event-guest .consent-details summary{padding:3px 0;min-height:26px}
.event-guest .consent-details[open] summary{margin:0 0 5px}.event-guest .consent-details p{padding:8px;background:#f5f7fb;font-size:12px}
.event-guest #submit{min-height:44px;padding:9px 12px;font-size:15px}
.event-guest .standby-note{font-size:11px;line-height:1.5;margin-top:7px}
.event-guest:not(.poster) .footer{display:none}.event-guest #join>.card:last-child{margin-bottom:0}
.event-guest .saved-receipts{margin:0 0 8px;font-size:12px}.event-guest .saved-receipts summary{padding:6px 2px;min-height:32px}
.event-guest .saved-receipts .actions{max-height:130px;overflow:auto;gap:6px}
.event-guest .saved-receipts button{font-size:12px;padding:7px 10px}
.event-guest:not(.poster) .notice{padding:8px 10px;margin:0 0 8px;font-size:13px}
.event-guest #receipt .bar{margin-bottom:0}.event-guest #receipt .ticket-number{font-size:50px;margin:8px 0}
.event-guest #receipt .hint{padding:10px 12px;margin:8px 0;font-size:13px}
.event-guest #receipt .ticket-detail{margin:12px 0;gap:5px;font-size:13px}
.event-guest #receipt .actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:12px 0 8px}
.event-guest #receipt button,.event-guest #receipt .button{min-height:40px;padding:7px 8px;font-size:12px}
.event-guest #receipt{--receipt-accent:#214b7b;--receipt-soft:#f0f6fc;--receipt-line:#bad0e7;border-color:var(--receipt-line);border-top:5px solid var(--receipt-accent)}
.event-guest .receipt-pass{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--receipt-accent);color:#fff;border-radius:12px;padding:16px;margin:14px 0 12px}
.event-guest .receipt-pass .pass-label{display:block;font-size:12px;line-height:1.5;opacity:.9}
.event-guest .receipt-pass .pass-time{display:block;font-size:30px;line-height:1.35;letter-spacing:-.7px;margin-top:3px;white-space:nowrap}
.event-guest .receipt-pass .pass-number{text-align:right;flex-shrink:0}
.event-guest #receipt .receipt-pass .ticket-number{display:block;font-size:38px;line-height:1.1;letter-spacing:-1px;margin:3px 0 0;color:#fff}
.event-guest #receipt .hint{background:var(--receipt-soft);color:var(--receipt-accent)}
@media(max-width:360px){.event-guest:not(.poster) .participant{padding:10px 8px}.event-guest:not(.poster) .hero h1{font-size:21px}.event-guest .slot .remaining{font-size:10px}.event-guest .inline-help{display:block}.event-guest .guest-fields{gap:8px}.event-guest .guest-fields label{min-height:32px}}

/* Visual refinement keeps the compact layout and direct team actions intact. */
.event-admin,.event-guest:not(.poster){--ink:#253044;--muted:#738096;--line:#e8edf3;--bg:#f6f8fb;--primary:#4368db;--soft:#f0f4ff;letter-spacing:-.025em;-webkit-font-smoothing:antialiased}
.event-admin button,.event-admin .button,.event-guest:not(.poster) button{font-weight:600;border-radius:9px}
.event-admin h1,.event-admin h2,.event-admin h3,.event-guest:not(.poster) h1,.event-guest:not(.poster) h2{font-weight:650;letter-spacing:-.04em}
.event-admin input,.event-admin select,.event-guest:not(.poster) input,.event-guest:not(.poster) select{border-color:#dfe5ed;box-shadow:0 1px 2px #172c4803}
.event-admin .top{border-color:var(--line)}.event-admin .top h1{font-size:18px;font-weight:600}
.event-admin .top .button{font-weight:500;color:var(--muted);border-color:transparent;background:#f6f8fb}
.event-admin #event-list{font-weight:600;background-color:#fff}
.event-admin #open-settings{border-color:var(--line);color:#52637e;font-weight:500}
.event-admin .session-list button{font-weight:500;font-variant-numeric:tabular-nums;border-color:transparent;background:#f4f6fa;color:#66748a}
.event-admin .session-list button.active{background:var(--soft);color:#355cc9;border-color:#d5e0fc;font-weight:600}
.event-admin .metric strong{font-weight:600;letter-spacing:-.04em}.event-admin .metric small{color:#91a0b4}
.event-admin .roster-heading h3{font-weight:600}.event-admin #next-team{color:var(--muted)}
.event-admin #call-next{background:#f6f8fd;border-color:#e1e8f6;color:#526b9b;font-weight:500}
.event-admin .roster-filters input::placeholder{color:#94a0b1}
.event-admin .roster-table th{font-weight:500;background:#fafbfd;color:#8190a3}
.event-admin .team-number>strong{font-weight:600;font-size:20px;letter-spacing:-.05em;color:#47556c}
.event-admin .team-person>strong{font-weight:600}.event-admin .team-person small{color:#8894a5;font-variant-numeric:tabular-nums;letter-spacing:0}
.event-admin .team-people{color:#68768a}.event-admin .team-people strong{font-weight:600;color:#39495f}
.event-admin .badge{font-weight:500;border-radius:5px}.event-admin .badge.confirmed{background:#f0f6f3;color:#538571}
.event-admin .team-actions button{font-weight:500}.event-admin .team-actions .team-call{font-weight:600}
.event-admin .team-recall{background:#f0f4ff;border-color:#d9e3fc;color:#4263b5}
.event-admin .team-attend{background:#f3f8f5;border-color:#e0ece5;color:#45765d}
.event-admin .team-noshow{background:#fff;border-color:#eee2e2;color:#ad6b6b}
.event-admin .team-more{color:#8090a5;border-color:var(--line)}
.event-admin .team-person .noshow-history{color:#a47b38;font-weight:500;letter-spacing:-.02em}
.event-guest:not(.poster) .brand{font-weight:600;color:#6d83b8;letter-spacing:.1em}
.event-guest:not(.poster) .hero h1{font-size:22px;font-weight:650}.event-guest:not(.poster) .hero p{color:#8591a3}
.event-guest:not(.poster) h2{font-weight:600;font-size:14px}
.event-guest .slot{background:#fcfdff;border-color:#e6ebf3}.event-guest .slot:has(input:checked){border-color:#aebff2;background:#f0f4ff}
.event-guest .slot strong{font-size:16px;font-weight:600;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.event-guest .slot .remaining,.event-guest .slot-status{font-weight:400;color:#7a88a0}
.event-guest .guest-fields label{font-weight:500;color:#59687d;font-size:12px}.event-guest .guest-fields input::placeholder{color:#a0aaba}
.event-guest #allocation{background:#f4f6fa;color:#6a7a93;border-radius:8px}
.event-guest .guest-consent{font-weight:500;color:#526178}.event-guest .consent-details summary{font-weight:400;color:#8793a5}
.event-guest #submit{font-weight:600;box-shadow:0 3px 7px #4368db16}.event-guest .standby-note{color:#8793a5}
.event-guest:not(.poster) .participant{padding-block:8px}.event-guest:not(.poster) .hero{padding-bottom:8px}
.event-guest:not(.poster) .card{padding-block:10px}.event-guest:not(.poster) .time-card{padding-block:8px}
.event-guest .saved-receipts{margin-bottom:6px}.event-guest .saved-receipts summary{padding-block:4px;min-height:28px}
@media(max-width:760px){.event-admin .top h1{font-size:16px}.event-admin .team-number>strong{font-size:20px}.event-admin .team-person>strong{font-size:14px}.event-admin .roster-heading h3{font-size:14px}}

/* Touch devices and browsers without dynamic viewport support. */
.event-admin.roster-ready{height:100vh;height:100dvh}
.event-admin dialog{max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow:auto}
@media(pointer:coarse){
 .event-admin button,.event-admin .button,.event-admin .team-actions button,.event-admin .team-actions .team-call,.event-admin .session-list button{min-height:44px}
 .event-admin input,.event-admin select{font-size:16px}
}
@media(max-height:540px){.event-admin.roster-ready{height:auto;min-height:100vh;min-height:100dvh}}

/* Event-specific poster, also used for A4 printing. Keep the QR quiet zone white. */
.event-guest.poster{background:#e9edf2;color:#172d46}
.event-guest.poster .participant{max-width:800px;padding:24px;margin:auto}
.event-guest.poster .hero,.event-guest.poster>.participant>.footer{display:none}
.poster-tools{margin:0 0 18px}.poster-tools .actions{justify-content:center}.poster-tools .help{text-align:center;overflow-wrap:anywhere;font-size:11px;margin-top:10px}
.poster-sheet{background:#fffefa;border:1px solid #dce2e7;padding:38px 44px 24px;box-shadow:0 12px 40px #172d4610;display:flex;flex-direction:column;min-height:980px;position:relative;overflow:hidden}
.poster-topline{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #cbd5dc;padding-bottom:18px;font-size:10px;font-weight:750;letter-spacing:2px;color:#38566f}
.poster-pill{background:#e8efc3;border-radius:30px;padding:6px 10px;color:#334829;font-size:10px;letter-spacing:-.2px;white-space:nowrap}
.poster-heading{text-align:center;padding:26px 0 20px}
.poster-kicker{font-size:12px;color:#718295;letter-spacing:1px;margin-bottom:9px}
.event-guest.poster .poster-title{font-size:34px;line-height:1.3;letter-spacing:-1.3px;font-weight:800;overflow-wrap:anywhere;margin:0 auto;max-width:580px}
.poster-lead{font-size:19px;line-height:1.5;color:#65788c;margin-top:17px;letter-spacing:-.6px}.poster-lead strong{color:#172d46;font-weight:750}
.poster-qr-panel{background:#172d46;border-radius:18px;text-align:center;padding:21px 24px 17px;max-width:410px;width:100%;margin:0 auto;color:white}
.poster-scan-label{font-size:12px;font-weight:700;letter-spacing:.3px;margin-bottom:14px;color:#fff}
.poster-scan-label>span{display:inline-block;width:7px;height:7px;border-radius:50%;background:#d4e78d;margin-right:5px;vertical-align:middle}
.poster-qr-frame{padding:18px;background:#fff;border-radius:12px;display:inline-block;max-width:100%;line-height:0}
.event-guest.poster #qr{margin:0;background:#fff;line-height:0}.event-guest.poster #qr canvas,.event-guest.poster #qr img{width:256px!important;height:256px!important;max-width:100%;object-fit:contain;margin:0 auto}
.poster-qr-note{font-size:11px;color:#d9e2eb;margin-top:12px}
.poster-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:24px 0 20px;gap:0;text-align:center}
.poster-steps>div{padding:0 8px;border-right:1px solid #dce2e7}.poster-steps>div:last-child{border:0}.poster-steps b{display:block;font-size:10px;letter-spacing:1px;color:#739182;margin-bottom:5px}.poster-steps strong{display:block;font-size:13px;font-weight:750}.poster-steps span{display:block;font-size:10px;color:#81909f;margin-top:4px}
.poster-info{text-align:center;padding-bottom:22px}.poster-info p{font-size:12px;font-weight:650;overflow-wrap:anywhere}.poster-info #poster-contact{font-size:11px;font-weight:400;color:#617589;margin-top:5px}.poster-info small{display:block;color:#81909f;font-size:10px;margin-top:9px}
.poster-footer{margin-top:auto;border-top:1px solid #cbd5dc;padding-top:15px;display:flex;justify-content:space-between;gap:12px;color:#718295;font-size:9px}.poster-footer>span:first-child{letter-spacing:1.4px;font-size:10px;color:#38566f}.poster-footer b{font-weight:800}
@media screen and (max-width:540px){.event-guest.poster .participant{padding:12px}.poster-sheet{padding:24px 20px 20px;min-height:0}.poster-topline{font-size:8px;letter-spacing:1px;gap:6px}.poster-pill{font-size:8px;padding:5px 7px}.event-guest.poster .poster-title{font-size:27px}.poster-kicker{font-size:10px}.poster-lead{font-size:17px}.poster-qr-panel{padding:18px 12px 14px}.poster-qr-frame{padding:16px}.event-guest.poster #qr canvas,.event-guest.poster #qr img{width:226px!important;height:226px!important}.poster-steps strong{font-size:11px}.poster-steps span{font-size:9px}.poster-footer{font-size:8px}.poster-footer>span:first-child{font-size:8px;letter-spacing:1px}}
@page eventPoster{size:A4;margin:10mm}
@media print{.event-guest.poster{background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}.event-guest.poster .participant{max-width:none;width:100%;padding:0;margin:0}.event-guest.poster .notice,.event-guest.poster .no-print{display:none!important}.poster-sheet{page:eventPoster;min-height:270mm;box-shadow:none;border:1px solid #dce2e7;padding:10mm 12mm 7mm;overflow:visible}.event-guest.poster .poster-title{font-size:30px}.poster-heading{padding:22px 0 18px}.poster-qr-panel{max-width:104mm}.poster-steps{margin:22px 0 18px}.poster-footer{padding-top:14px}}
/* Event exports and wallet remain reachable when the management toolbar wraps. */
.event-admin .management-toolbar{flex-wrap:wrap}
.event-admin .management-toolbar .actions{flex-shrink:1;max-width:100%;flex-wrap:wrap}
.event-admin .management-toolbar .button{min-height:42px;padding:8px 12px;font-size:13px}
.management-downloads{display:flex;flex-wrap:wrap;gap:8px;flex-shrink:0;padding:10px 12px;margin-bottom:8px;background:#fff;border:1px solid var(--line);border-radius:12px}.management-downloads button{font-size:13px;min-height:42px}
.event-admin .management-toolbar #refresh{border-color:transparent;background:transparent;color:var(--muted);font-size:12px;font-weight:500;padding:8px;box-shadow:none}.event-admin .management-toolbar #refresh:hover{color:var(--ink);background:#edf0f5}
.event-admin .session-list button{flex-direction:column;align-items:flex-start;gap:1px;min-width:82px;padding:7px 12px}.event-admin .session-list button strong{font-size:14px;font-weight:700}.event-admin .session-list .session-state{font-size:11px;font-weight:500;line-height:16px}
.event-admin .session-list .session-available{background:#edf8f3;border-color:#cce8da;color:#17634e}.event-admin .session-list .session-upcoming{background:#fff7e9;border-color:#f2dfb9;color:#966018}.event-admin .session-list .session-closed{background:#f0f2f5;border-color:#e1e5eb;color:#7b8695}
.event-admin .session-list button.active{background:#234dcc;border-color:#234dcc;color:#fff;box-shadow:0 2px 5px #234dcc20}

/* Event settings: one task per tab, with daily overrides kept secondary. */
.event-admin .event-settings{width:min(760px,calc(100% - 24px));padding:24px}
.settings-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-top:20px;padding-bottom:8px}
.settings-tabs button{flex:1;border:0;background:transparent;border-radius:8px;color:var(--muted);font-size:14px;padding:10px 6px;white-space:nowrap}
.settings-tabs button[aria-selected=true]{background:var(--soft);color:var(--primary)}
.settings-pane{padding-top:22px}.settings-pane>.bar{margin-bottom:12px}.settings-group{padding:16px 0;border-top:1px solid var(--line)}
.settings-group .check{margin-top:12px}.settings-save{display:flex;justify-content:flex-end;padding-top:14px}
.settings-secondary{border-top:1px solid var(--line);margin-top:22px;padding-top:16px;color:var(--muted);font-size:13px}
.settings-secondary summary{font-weight:500}.settings-secondary .field{max-width:360px}
.standby-candidates{max-height:48vh;overflow:auto;display:grid;gap:8px}.standby-candidate{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;font-size:14px}
.standby-candidate:has(input:checked){border-color:var(--primary);background:var(--soft)}.standby-candidate:has(input:disabled){background:#f6f7fa;cursor:default;color:var(--muted)}
.standby-candidate strong{display:block;font-size:14px}.standby-candidate small{display:block;font-size:12px;color:var(--muted);font-weight:400}.standby-people{margin-left:auto;white-space:nowrap;font-size:13px}
.event-admin .event-settings:has(#settings-schedule:not([hidden])){width:min(980px,calc(100% - 24px));padding:20px}
.event-settings:has(#settings-schedule:not([hidden])) .settings-tabs{margin-top:12px}.event-settings #settings-schedule{padding-top:14px}
.schedule-heading{gap:10px;margin-bottom:10px}.schedule-heading .actions{gap:4px;flex-wrap:wrap}.schedule-heading button{font-size:12px;padding:7px 9px;min-height:36px;white-space:nowrap}
.schedule-heading #reload-schedule{color:var(--muted);border-color:transparent;background:transparent;font-weight:500}
.schedule-options{display:flex;align-items:center;flex-wrap:wrap;gap:4px 16px;padding:9px 12px;margin-bottom:12px;border:0;border-radius:8px;background:#f5f7fb}.schedule-options .check{margin:0;white-space:nowrap}.schedule-options .help{margin:0;font-size:12px}
.schedule-columns,.schedule-row{display:grid;grid-template-columns:minmax(138px,1.1fr) 80px 80px minmax(260px,2fr) 44px;column-gap:10px}
.schedule-columns{padding:7px 10px;background:#f2f5fa;border-radius:8px 8px 0 0;font-size:12px;color:var(--muted);font-weight:650}
.schedule-row{align-items:start;border-bottom:1px solid var(--line);padding:8px 10px;background:#fff}.schedule-row:nth-child(even){background:#fbfcfe}
.schedule-row-top{grid-column:5;grid-row:1}.schedule-row-top button{width:44px;font-size:12px;padding:6px 0;min-height:38px;background:transparent;color:var(--muted)}
.schedule-fields{display:contents}.schedule-fields .field{min-width:0;margin:0}
.schedule-fields label,.schedule-opening>label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.schedule-fields input{width:100%;font-size:14px;padding:7px 8px;min-width:0;min-height:38px;height:38px}
.schedule-fields input[readonly]{background:#f0f3f7;color:var(--muted)}
.schedule-opening{min-width:0}.schedule-opening-controls{display:flex;align-items:center;gap:8px}.schedule-opening select{flex:1;min-width:0;max-width:100%;font-size:13px;padding:7px 8px;min-height:38px;height:38px}
.schedule-hours{display:flex;align-items:center;gap:5px;font-size:12px;white-space:nowrap;margin:0}.schedule-hours input{width:62px;min-height:38px;height:38px;min-width:0;padding:7px;font-size:14px}.schedule-row .help{font-size:11px;line-height:16px;margin:3px 0 0}.schedule-override{grid-column:1/-1;color:#99631d}
.schedule-opening:has([data-hours]:disabled) [data-opening-preview]{display:none}
.schedule-help{font-size:11px;margin:9px 0 0}.schedule-actions{justify-content:space-between;gap:8px;padding:10px 0 0;position:sticky;bottom:-20px;background:#fff}.schedule-actions button{font-size:13px;min-height:40px;padding:8px 12px}
.schedule-bulk{padding:10px 12px;margin-bottom:12px;border:1px solid #cfdbf7;border-radius:8px;background:#f5f8ff}.schedule-bulk-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.schedule-bulk-controls>label:first-child{font-size:12px;margin:0}.schedule-bulk-controls select{width:auto;font-size:13px;height:38px;padding:7px 8px}.schedule-bulk-controls button{font-size:12px;min-height:38px;padding:7px 10px;color:var(--primary)}.schedule-bulk .help{font-size:11px;margin:6px 0 0}
.event-guest .slot.upcoming:has(input:disabled){opacity:1;background:#f7f9fc;border-style:dashed}.event-guest .slot.upcoming .slot-status{color:var(--primary)}
@media(max-width:760px){
 .event-admin .event-settings:has(#settings-schedule:not([hidden])){padding:16px 12px}.schedule-heading{align-items:flex-start;flex-direction:column;gap:7px}.schedule-heading .actions{width:100%;justify-content:space-between}.schedule-options{gap:4px;padding:8px 10px}
 .schedule-columns{display:none}.schedule-row{grid-template-columns:minmax(104px,1.3fr) minmax(55px,.8fr) minmax(55px,.8fr) 40px;gap:7px;padding:9px 0}.schedule-row-top{grid-column:4;align-self:end}.schedule-row-top button{width:40px;min-height:40px}
 .schedule-fields label,.schedule-opening>label{position:static;width:auto;height:auto;padding:0;margin:0 0 3px;overflow:visible;clip:auto;white-space:normal;font-size:11px;color:var(--muted)}
 .schedule-fields input{font-size:16px;padding:7px 5px;height:40px}.schedule-opening{grid-column:1/-1;display:grid;grid-template-columns:54px minmax(0,1fr);gap:0 5px;align-items:center}.schedule-opening>label{margin:0}.schedule-opening-controls{min-width:0;gap:5px}.schedule-opening select{font-size:13px;height:38px;padding:6px}.schedule-opening .help{grid-column:2;margin-top:2px;font-size:10px;line-height:14px}.schedule-opening .schedule-hours input{width:56px;font-size:16px}
 .schedule-help{font-size:10px}.schedule-actions{bottom:-16px}.schedule-actions button{width:auto;min-height:44px}.schedule-bulk-controls>label:first-child{width:100%}.schedule-bulk-controls{gap:6px}.schedule-bulk-controls select{flex:1;min-width:120px}.schedule-bulk-controls button{min-height:40px}.schedule-bulk-controls input{font-size:16px}
}
@media(max-width:540px){.event-admin .event-settings{padding:18px 14px}.settings-tabs button{font-size:13px}.settings-save:not(.schedule-actions) button{width:100%}}
@media(pointer:coarse){.schedule-fields input,.schedule-opening select,.schedule-hours input{font-size:16px;min-height:44px;height:44px}.schedule-actions button{min-height:44px}}

/* Guest pages: a compact registration form and a session-colored mobile pass.
   Scoped away from the operator workspace and the printable QR poster. */
.event-guest:not(.poster){--ink:#22314b;--muted:#6b768b;--line:#e0e5ef;--bg:#f3f5fa;--primary:#293f78;--soft:#eef2fb;background:var(--bg);color:var(--ink);letter-spacing:-.025em}
.event-guest:not(.poster) .participant{max-width:560px;padding:max(20px,env(safe-area-inset-top)) 20px max(20px,env(safe-area-inset-bottom))}
.event-guest:not(.poster) .hero{padding:0 2px 18px}
.event-guest:not(.poster) .guest-brand{display:flex;align-items:center;gap:7px;margin-bottom:18px;min-height:26px}
.event-guest:not(.poster) .brand-mark{display:grid;place-items:center;width:25px;height:25px;background:var(--primary);color:white;font-size:25px;font-weight:800;line-height:1;border-radius:8px;letter-spacing:-2px;padding-right:3px}
.event-guest:not(.poster) .brand{font-size:13px;font-weight:750;letter-spacing:-.5px;color:var(--ink)}
.event-guest:not(.poster) .brand b{font-weight:450;color:var(--muted)}
.event-guest:not(.poster) #page-kind{margin-left:auto;font-size:11px;font-weight:600;color:var(--muted)}
.event-guest:not(.poster) .hero h1{font-size:27px;line-height:1.35;font-weight:750;letter-spacing:-1px;margin:0 0 10px;overflow-wrap:anywhere;word-break:keep-all}
.event-guest:not(.poster) #subtitle{display:flex;flex-wrap:wrap;gap:3px 0;font-size:12px;line-height:1.7;overflow-wrap:anywhere}
.event-guest:not(.poster) #subtitle span+span:before{content:'·';padding:0 7px;color:#a1a9ba}
.event-guest:not(.poster) .card{padding:18px;border-radius:18px;border:1px solid var(--line);margin-bottom:12px;background:#fff;box-shadow:0 3px 12px #183a2c03}
.event-guest:not(.poster) h2{display:flex;align-items:center;gap:9px;font-size:16px;line-height:1.5;font-weight:750;letter-spacing:-.5px;margin:0 0 14px}
.event-guest:not(.poster) .step-number{font-size:12px;font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums;background:var(--soft);border-radius:6px;padding:2px 6px;letter-spacing:0}
.event-guest:not(.poster) .time-heading{align-items:center;margin:0;gap:8px}
.event-guest:not(.poster) .time-heading h2{margin:0}
.event-guest:not(.poster) #slot-scroll-hint{font-size:10px;color:var(--muted)}
.event-guest:not(.poster) #slot-scroll-hint span{padding-left:3px}
.event-guest:not(.poster) .section-description{margin:4px 0 10px;font-size:12px;color:var(--muted)}
.event-guest:not(.poster) #slots{gap:8px;padding:2px 2px 6px;scroll-padding-inline:2px;scrollbar-color:#bdc8df transparent;scrollbar-width:thin}
.event-guest:not(.poster) .slot{position:relative;flex:0 0 calc((100% - 16px)/3);min-width:98px;min-height:91px;justify-content:center;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff;transition:background .15s,border-color .15s}
.event-guest:not(.poster) .slot .slot-main{width:100%;justify-content:space-between;flex-direction:row-reverse;gap:4px}
.event-guest:not(.poster) .slot input{width:16px;height:16px;min-height:16px;margin:0;accent-color:var(--primary)}
.event-guest:not(.poster) .slot strong{font-size:21px;font-weight:750;line-height:1.35;letter-spacing:-.7px;font-variant-numeric:tabular-nums}
.event-guest:not(.poster) .slot-status{font-size:11px;line-height:1.6;margin:6px 0 1px;color:var(--primary);text-align:left}
.event-guest:not(.poster) .slot .remaining{font-size:10px;font-weight:400;line-height:1.5;white-space:normal;overflow-wrap:anywhere;text-align:left;color:var(--muted)}
.event-guest:not(.poster) .slot:has(input:checked){border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary);background:var(--soft)}
.event-guest:not(.poster) .slot:has(input:focus-visible){outline:3px solid #a7b9e6;outline-offset:2px}
.event-guest:not(.poster) .slot.standby .slot-status{color:#976314}
.event-guest:not(.poster) .slot.upcoming:has(input:disabled){opacity:1;background:#fffcf5;border:1px dashed #d9cba9;color:#785e2b}
.event-guest:not(.poster) .slot.upcoming .slot-status{color:#8d671f}
.event-guest:not(.poster) .slot.closed:has(input:disabled){opacity:1;background:#f5f6f9;border-color:#e6e9f0;color:#8a93a5}
.event-guest:not(.poster) .slot.closed .slot-status,.event-guest:not(.poster) .slot.closed .remaining{color:#7d879a}
.event-guest:not(.poster) .guest-fields{gap:12px}
.event-guest:not(.poster) .guest-fields .field{margin-bottom:12px}
.event-guest:not(.poster) .guest-fields label{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 6px;min-height:0;margin-bottom:6px;font-size:13px;font-weight:650}
.event-guest:not(.poster) .inline-help{display:inline;font-size:10px;color:var(--muted);letter-spacing:-.2px}
.event-guest:not(.poster) .guest-fields input,.event-guest:not(.poster) .guest-fields select{height:48px;min-height:48px;padding:10px 11px;border-radius:10px;border:1px solid #dce2ee;background:#fbfcff;font-size:16px;font-weight:500;box-shadow:none}
.event-guest:not(.poster) input::placeholder{color:#8b94a6;font-size:14px;font-weight:400}
.event-guest:not(.poster) input:focus,.event-guest:not(.poster) select:focus{border-color:var(--primary);background:#fff}
.event-guest:not(.poster) #allocation{margin:0 0 12px;padding:11px 12px;border-radius:10px;background:#f3f5fa;color:var(--muted);font-size:12px;line-height:1.6;min-height:41px}
.event-guest:not(.poster) #allocation[data-kind=ready]{background:var(--soft);color:var(--primary)}
.event-guest:not(.poster) #allocation[data-kind=standby]{background:#fff6e5;color:#886012}
.event-guest:not(.poster) .guest-consent{min-height:36px;font-size:12px;gap:8px;align-items:center;letter-spacing:-.35px}
.event-guest:not(.poster) .guest-consent input{width:19px;height:19px;min-height:19px;margin:0}
.event-guest:not(.poster) .consent-details{margin:0 0 10px;padding-left:27px;font-size:11px}
.event-guest:not(.poster) .consent-details summary{min-height:28px;padding:2px 0}
.event-guest:not(.poster) .consent-details p{border-radius:8px;padding:12px;line-height:1.7}
.event-guest:not(.poster) #submit{min-height:50px;border-radius:11px;background:var(--primary);font-size:16px;font-weight:700;letter-spacing:-.3px;box-shadow:0 3px 6px #12554310}
.event-guest:not(.poster) #submit:disabled{background:#e0e5f0;border-color:#e0e5f0;color:#707e9b;opacity:1;box-shadow:none}
.event-guest:not(.poster) .standby-note{margin-top:12px;font-size:11px;line-height:1.7;color:var(--muted)}
.event-guest:not(.poster) .saved-receipts{border:1px solid var(--line);background:#fff;border-radius:12px;margin-bottom:12px;padding:0 14px}
.event-guest:not(.poster) .saved-receipts summary{min-height:44px;padding:11px 0;font-size:12px;color:var(--primary)}
.event-guest:not(.poster) .saved-receipts[open]{padding-bottom:12px}
.event-guest:not(.poster) .notice{padding:12px 14px;margin:0 0 12px;line-height:1.65}
.event-guest:not(.poster) .footer{display:block;padding:16px 0 4px;font-size:11px;color:#7a859a}
.event-guest:not(.poster) .footer strong{font-weight:650}
.event-guest:not(.poster) button:focus-visible,.event-guest:not(.poster) a:focus-visible,.event-guest:not(.poster) input:focus-visible,.event-guest:not(.poster) select:focus-visible,.event-guest:not(.poster) summary:focus-visible{outline:3px solid #a0b5e4;outline-offset:3px}

.event-guest:not(.poster) #receipt{padding:0;border:1px solid var(--receipt-line);border-radius:20px;overflow:hidden;box-shadow:0 10px 30px #213e2e07}
.event-guest:not(.poster) .receipt-pass{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;margin:0;padding:20px 22px 18px;background:var(--receipt-accent);border-radius:0;color:#fff}
.event-guest:not(.poster) .pass-top{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:8px}
.event-guest:not(.poster) .pass-top h2{display:block;font-size:12px;font-weight:500;letter-spacing:.2px;margin:0;color:inherit}
.event-guest:not(.poster) #status{font-size:12px;font-weight:700;border:1px solid #ffffff50;color:white;background:#ffffff16;border-radius:20px;padding:4px 10px;line-height:1.5}
.event-guest:not(.poster) #status.standby{background:#fff0c9;color:#795010;border-color:#fff0c9}
.event-guest:not(.poster) #status.called{background:#fff;color:var(--receipt-accent);border-color:#fff}
.event-guest:not(.poster) .pass-session{min-width:0}
.event-guest:not(.poster) .receipt-pass .pass-label{font-size:12px;line-height:1.6;opacity:.88;letter-spacing:.2px}
.event-guest:not(.poster) .receipt-pass .pass-time{font-size:28px;font-weight:750;line-height:1.35;letter-spacing:-1px;margin-top:4px;white-space:normal;overflow-wrap:anywhere}
.event-guest:not(.poster) .receipt-pass .pass-number{text-align:right;min-width:0;max-width:100%}
.event-guest:not(.poster) #receipt .receipt-pass .ticket-number{font-size:70px;font-weight:750;line-height:1.04;font-variant-numeric:tabular-nums;letter-spacing:-3px;text-align:right;margin:0;overflow-wrap:anywhere}
.event-guest:not(.poster) .pass-instruction{grid-column:1/-1;margin:0;border-top:1px dashed #ffffff60;padding-top:14px;font-size:11px;line-height:1.6;opacity:.9;text-align:center}
.event-guest:not(.poster) .receipt-body{padding:18px 22px 14px;position:relative}
.event-guest:not(.poster) .receipt-body:before,.event-guest:not(.poster) .receipt-body:after{content:'';position:absolute;top:-9px;width:18px;height:18px;border-radius:50%;background:var(--bg);border:1px solid var(--receipt-line)}
.event-guest:not(.poster) .receipt-body:before{left:-10px}.event-guest:not(.poster) .receipt-body:after{right:-10px}
.event-guest:not(.poster) #receipt .hint{padding:12px 14px;margin:0;background:var(--receipt-soft);color:var(--receipt-accent);font-size:13px;line-height:1.7;border-radius:10px;overflow-wrap:anywhere}
.event-guest:not(.poster) #receipt .ticket-detail{grid-template-columns:auto minmax(0,1fr);margin:16px 0;gap:7px 18px;font-size:13px;line-height:1.65}
.event-guest:not(.poster) .ticket-detail dt{color:var(--muted);font-weight:400}
.event-guest:not(.poster) .ticket-detail dd{font-weight:600;overflow-wrap:anywhere;word-break:keep-all}
.event-guest:not(.poster) .receipt-sync{display:flex;align-items:center;justify-content:space-between;gap:6px;border-top:1px solid var(--line);padding:8px 0;margin-top:8px}
.event-guest:not(.poster) #updated{font-size:10px;line-height:1.5;margin:0;letter-spacing:-.1px}
.event-guest:not(.poster) #receipt #refresh-ticket{border:0;background:none;color:var(--muted);font-size:11px;font-weight:500;padding:8px 0 8px 8px;min-height:38px;flex-shrink:0}
.event-guest:not(.poster) #receipt svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.event-guest:not(.poster) #receipt .receipt-actions{grid-template-columns:1fr 1.5fr;gap:8px;margin:0}
.event-guest:not(.poster) #receipt .receipt-actions button,.event-guest:not(.poster) #receipt .receipt-actions .button{min-height:46px;border-radius:10px;font-size:12px;font-weight:650;background:#fff;border-color:var(--line);padding:10px 8px}
.event-guest:not(.poster) #receipt #contact{background:var(--receipt-soft);border-color:var(--receipt-line);color:var(--receipt-accent)}
.event-guest:not(.poster) .receipt-privacy{font-size:10px;color:var(--muted);line-height:1.7;text-align:center;margin:12px 0 0}
.event-guest:not(.poster) .receipt-cancel{text-align:center}
.event-guest:not(.poster) #receipt #cancel{background:none;border:0;font-size:11px;font-weight:400;min-height:38px;padding:8px 16px;color:#8a5855;text-decoration:underline;text-underline-offset:3px}
.event-guest:not(.poster) #receipt[data-state=called] .pass-instruction{font-weight:700;font-size:13px;opacity:1}
.event-guest:not(.poster) #receipt.long-number .receipt-pass .ticket-number{font-size:44px;letter-spacing:-1.5px}
.event-guest:not(.poster) #receipt.long-number .pass-time{white-space:nowrap;font-size:24px}
.event-guest:not(.poster) .guest-fields:has(>#companions-field[hidden]){grid-template-columns:1fr}
.event-guest:not(.poster) #receipt:is([data-state=past],[data-state=cancelled],[data-state=noshow],[data-state=attended]) .receipt-pass{background:var(--receipt-soft);color:var(--receipt-accent)}
.event-guest:not(.poster) #receipt:is([data-state=past],[data-state=cancelled],[data-state=noshow],[data-state=attended]) .ticket-number{color:var(--receipt-accent)}
.event-guest:not(.poster) #receipt:is([data-state=past],[data-state=cancelled],[data-state=noshow],[data-state=attended]) #status{background:#fff;color:var(--receipt-accent);border-color:var(--receipt-line)}
.event-guest:not(.poster) #receipt:is([data-state=past],[data-state=cancelled],[data-state=noshow],[data-state=attended]) .pass-instruction{border-color:var(--receipt-line)}
.event-guest:not(.poster) #ticket-loading{text-align:center;padding:44px 20px}
.event-guest:not(.poster) #ticket-loading h2{justify-content:center;margin:14px 0 6px}
.event-guest:not(.poster) .loading-symbol{display:inline-block;width:30px;height:30px;border:2px solid var(--line);border-top-color:var(--primary);border-radius:50%;animation:guest-loading .9s linear infinite}
.event-guest:not(.poster) #ticket-loading[aria-busy=false] .loading-symbol{animation:none;border-color:var(--line)}
.event-guest:not(.poster) #retry-ticket{margin-top:20px;min-height:44px}
@keyframes guest-loading{to{transform:rotate(360deg)}}
@media(min-width:600px){.event-guest:not(.poster) .participant{padding-top:40px}.event-guest:not(.poster) .hero{padding:0 4px 28px}.event-guest:not(.poster) .card{padding:24px}.event-guest:not(.poster) .receipt-pass{padding:24px 28px;gap:24px 16px}.event-guest:not(.poster) .receipt-pass .pass-time{font-size:34px}.event-guest:not(.poster) #receipt .receipt-pass .ticket-number{font-size:86px}.event-guest:not(.poster) .receipt-body{padding:22px 28px 16px}}
@media(max-width:360px){.event-guest:not(.poster) .participant{padding:18px 14px 24px}.event-guest:not(.poster) .hero h1{font-size:24px}.event-guest:not(.poster) .card{padding:16px}.event-guest:not(.poster) .guest-fields{gap:10px}.event-guest:not(.poster) .guest-fields label{font-size:12px;min-height:0}.event-guest:not(.poster) .inline-help{font-size:9px}.event-guest:not(.poster) .receipt-pass{padding:18px 16px;gap:18px 10px}.event-guest:not(.poster) .receipt-pass .pass-time{font-size:24px}.event-guest:not(.poster) #receipt .receipt-pass .ticket-number{font-size:60px}.event-guest:not(.poster) .receipt-body{padding:16px}.event-guest:not(.poster) #updated{font-size:9px}}
@media(prefers-reduced-motion:reduce){.event-guest:not(.poster) .loading-symbol{animation:none}.event-guest:not(.poster) .slot{transition:none}}

/* Operator workspace: compact controls and a clearly prioritized live roster. */
.event-admin{--ink:#253c32;--muted:#738579;--line:#e1e9e3;--bg:#f2f5f3;--primary:#126355;--soft:#edf4ef;--green:#39765b;background:var(--bg)}
.event-admin .top{background:#fff;border-bottom:1px solid var(--line);padding:8px max(16px,calc((100vw - 1240px)/2));min-height:60px}
.event-admin .workspace-brand{display:flex;align-items:center;gap:10px}
.event-admin .workspace-mark{width:34px;height:34px;display:flex;flex-direction:column;gap:3px;justify-content:center;align-items:flex-start;padding-left:10px;border-radius:11px;background:var(--primary)}
.event-admin .workspace-mark i{display:block;width:15px;height:2px;border-radius:2px;background:#fff}.event-admin .workspace-mark i:nth-child(2){width:12px}
.event-admin .top .brand{display:block;font-size:10px;line-height:13px;letter-spacing:.04em;font-weight:600;color:#7d9184}
.event-admin .top h1{font-size:17px;line-height:22px;letter-spacing:-.04em;color:var(--ink)}
.event-admin .top>.button{border-color:transparent;color:#78877d;background:none;gap:8px}
.event-admin button,.event-admin .button{border-color:var(--line);border-radius:9px;color:#4c6657;font-weight:600;box-shadow:none}
.event-admin button:hover:not(:disabled),.event-admin .button:hover{background:#f0f5f1;border-color:#bfcec3}
.event-admin button:focus-visible,.event-admin a:focus-visible,.event-admin input:focus-visible,.event-admin select:focus-visible{outline:3px solid #12635555;outline-offset:2px}
.event-admin .primary{background:var(--primary);border-color:var(--primary);color:#fff}
.event-admin .primary:hover:not(:disabled){background:#0c5145;color:#fff;border-color:#0c5145}
.event-admin .danger{color:#ad5145;border-color:#eedad4;background:#fff9f7}
.event-admin input,.event-admin select{border-color:var(--line);border-radius:9px;color:var(--ink)}
.event-admin .management-toolbar{gap:10px;margin-bottom:10px}
.event-admin #event-list{background-color:#fff;border-color:#d5e2d9;font-size:16px;font-weight:750;letter-spacing:-.03em;padding:10px 12px;min-height:44px}
.event-admin .management-toolbar .actions{gap:6px}.event-admin .management-toolbar button{background:#fff;min-height:40px}
.event-admin #wallet{color:#326650;background:#e8f0eb;border-color:transparent}
.event-admin #open-settings{color:#4c6657;border-color:var(--line)}
.event-admin .management-toolbar #refresh{margin-left:auto;background:none;color:#7b8d80;border-color:transparent;font-size:12px}
.event-admin .management-downloads{padding:8px;background:#eaf0ec;border:0;border-radius:10px;margin-bottom:8px}
.event-admin .event-overview{padding:10px 12px;gap:7px 12px;background:#fff;border-color:var(--line);border-radius:14px}
.event-admin #event-meta{font-size:11px;letter-spacing:.01em;color:#788d7e}
.event-admin .session-list button{padding:6px 12px;min-width:88px;border-radius:9px;box-shadow:none}
.event-admin .session-list .session-available{background:#f1f7f3;color:#3d7357;border-color:#dce9df}
.event-admin .session-list .session-upcoming{background:#fff9ee;color:#957038;border-color:#efdfbf}
.event-admin .session-list .session-closed{background:#f3f5f3;color:#8c9890;border-color:#e6eae7}
.event-admin .session-list button.active,.event-admin .session-list button.active:hover{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:none}
.event-admin .metric{padding:2px 12px}.event-admin .metric strong{font-size:22px;font-weight:750;letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:#315a44}
.event-admin .metric span,.event-admin .metric small{color:#7a8d80;font-weight:400}
.event-admin .roster-card{padding:12px 14px;border-color:var(--line);border-radius:14px;background:#fff}
.event-admin .roster-heading h3{font-size:17px;font-weight:750;letter-spacing:-.035em;color:#284734}
.event-admin #next-team{color:#7b8d80;font-size:12px;margin-top:2px}
.event-admin #call-next{background:var(--primary);border-color:var(--primary);color:#fff;min-height:42px;padding:8px 15px;font-weight:700}
.event-admin #call-next:hover:not(:disabled){background:#0c5145}.event-admin #call-next:disabled{background:#e9efeb;border-color:#e9efeb;color:#8c9b91;opacity:1}
.event-admin #choose-standby{color:#71598a;border-color:#e2d8ed;background:#faf7fd;font-size:12px}
.event-admin .roster-filters input,.event-admin .roster-filters select{background:#f8faf8;border-color:#e8ede9;min-height:38px}
.event-admin .roster-filters input::placeholder{color:#8b9a8f}
.event-admin .roster-scroll{border-color:#e8ede9;border-radius:8px 8px 0 0}
.event-admin .roster-table th{background:#f6f8f6;color:#7b8d80;font-size:11px;font-weight:500;padding:8px 10px}
.event-admin .roster-table td{padding:8px 10px;border-color:#edf1ee}
.event-admin .roster-table tr[data-status=called]{background:#fffbf2}
.event-admin .roster-table tr[data-status=attended],.event-admin .roster-table tr[data-status=cancelled],.event-admin .roster-table tr[data-status=noshow]{background:#fafbf9}
.event-admin .team-number>strong{font-size:21px;font-weight:700;letter-spacing:-.04em;color:#34634a}
.event-admin tr[data-status=called] .team-number>strong{color:#a2772e}
.event-admin .team-person>strong{font-size:15px;font-weight:650;color:#2c4536}.event-admin .team-person small{font-size:12px;color:#798c7f}
.event-admin .team-people strong{color:#486450}.event-admin .team-people .muted{color:#8a998d}
.event-admin .team-notice small{font-size:11px;color:#8a998d}
.event-admin .badge{border-radius:5px;font-size:11px;font-weight:500;padding:4px 7px}
.event-admin .badge.confirmed{background:#edf4ef;color:#4b7d5e}.event-admin .badge.called{background:#fbefd4;color:#9e7027}
.event-admin .badge.standby{background:#f2edf7;color:#806792}.event-admin .badge.attended{background:#eef1ed;color:#889386}
.event-admin .badge.cancelled,.event-admin .badge.noshow{background:#f5eeeb;color:#a28478}
.event-admin .team-actions button{min-height:36px;padding:6px 11px;font-size:12px;margin:2px;border-radius:8px}
.event-admin .team-actions .team-call{min-height:40px;min-width:64px;background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700}
.event-admin .team-actions .team-recall{background:#fff4df;border-color:#ebd5a8;color:#8b5b14}
.event-admin .team-actions .team-attend{background:#fff;border-color:#d8e4de;color:#326753}
.event-admin .team-actions .team-noshow,.event-admin .team-actions .secondary-action{background:transparent;border-color:transparent;color:#a58c7e;font-weight:400}
.event-admin .team-actions .team-more{border-color:transparent;background:transparent;color:#87978b}
.event-admin #sync{color:#879b8c;font-size:10px}.event-admin #sync:not(:empty)::before{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:#75a186;margin:0 5px 1px 0}
.event-admin #paging{color:#91a093;font-size:10px}
@media(max-width:1100px){.event-admin .event-overview{grid-template-columns:1fr}.event-admin .metrics{justify-content:flex-start;gap:0}.event-admin .metric:first-child{padding-left:0}}
@media(max-width:760px){
 .event-admin .top{padding:7px 12px;min-height:56px}.event-admin .top h1{font-size:16px}
 .event-admin .management-toolbar{gap:6px;margin-bottom:8px}.event-admin #event-list{max-width:none;font-size:15px;min-height:42px}
 .event-admin .management-toolbar .actions{width:100%;gap:4px}.event-admin .management-toolbar button{font-size:11px;padding:7px 8px;min-height:38px}
 .event-admin .management-toolbar #refresh{display:inline-flex;font-size:20px;padding:7px;width:34px}.event-admin #refresh .refresh-label{display:none}
 .event-admin .event-overview{padding:8px 10px;gap:7px;border-radius:12px}.event-admin .session-list button{padding:5px 11px;min-width:85px}
 .event-admin .metrics{justify-content:space-between}.event-admin .metric{padding:0 7px;gap:4px}.event-admin .metric strong{font-size:18px}.event-admin .metric span,.event-admin .metric small{font-size:10px}
 .event-admin .roster-card{padding:10px;border-radius:12px}.event-admin .roster-heading{flex-wrap:wrap}.event-admin .roster-heading h3{font-size:15px}
 .event-admin .roster-heading .actions{gap:5px}.event-admin #call-next{min-height:40px;font-size:12px;padding:8px 11px}.event-admin #choose-standby{min-height:40px;padding:7px 8px}
 .event-admin .roster-filters select,.event-admin .roster-filters input{min-height:38px;font-size:16px}
 .event-admin .roster-table tr{padding:7px 6px;column-gap:8px;min-height:94px;border-color:#e8ede9;border-radius:8px}
 .event-admin .roster-table td{padding:0}.event-admin .team-person>strong{font-size:14px;display:inline-block;margin-right:8px;max-width:100%;vertical-align:middle}
 .event-admin .team-person small{display:inline-block;font-size:12px}.event-admin .team-person .noshow-history{display:block}
 .event-admin .team-number>strong{font-size:20px}.event-admin .team-number .badge{font-size:9px;padding:2px 3px}
 .event-admin .team-actions{padding-top:6px!important;gap:4px}.event-admin .team-actions button{margin:0;min-height:40px;font-size:12px;padding:6px 9px}
 .event-admin .team-actions .team-call{min-width:0}.event-admin .team-actions .team-attend{flex:1.2}
 .event-admin .team-actions .team-noshow{display:none}
}
@media(pointer:coarse){.event-admin .team-actions button,.event-admin .team-actions .team-call,.event-admin .session-list button,.event-admin #call-next,.event-admin #choose-standby{min-height:44px}}

/* Participation and inclusive party totals: match the operator's printed guide. */
.event-guest:not(.poster) .party-fields{align-items:start;gap:14px;margin-top:8px}
.event-guest:not(.poster) .party-count{--party-color:#205e98;min-width:0;container-type:inline-size}
.event-guest:not(.poster) .party-total{--party-color:#117567}
.event-guest:not(.poster) .party-count .party-count-box{border:4px solid var(--party-color);border-radius:12px;padding:12px;margin:0;background:#fff}
.event-guest:not(.poster) .party-count label{color:#193b63;font-size:17px;font-weight:900;gap:4px 6px;min-height:0;line-height:1.35;margin-bottom:6px}
.event-guest:not(.poster) .party-count .inline-help{font-size:12px;font-weight:500;color:#4e647e}
.event-guest:not(.poster) .party-count select{height:52px;min-height:52px;background:#f8fafc;border-color:#d4dce5;border-radius:9px;font-size:19px;color:#284566}
.event-guest:not(.poster) .party-explanation{position:relative;width:92%;margin:14px auto 0;padding:8px 6px;display:flex;align-items:center;justify-content:center;flex-direction:column;border:3px solid var(--party-color);border-radius:10px;color:var(--party-color);background:#fff;font-size:15px;font-weight:900;line-height:1.35;text-align:center;white-space:nowrap}
.event-guest:not(.poster) .party-explanation-line{display:block;white-space:nowrap}
.event-guest:not(.poster) .party-explanation:before{content:"";position:absolute;top:-15px;left:calc(50% - 10px);border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:14px solid var(--party-color)}
@media(max-width:480px){.event-guest:not(.poster) .party-fields{gap:10px}.event-guest:not(.poster) .party-count .party-count-box{padding:9px 8px;border-width:3px}.event-guest:not(.poster) .party-count label{font-size:15px;min-height:0;align-content:start}.event-guest:not(.poster) .party-count .inline-help{font-size:10px}.event-guest:not(.poster) .party-explanation{font-size:clamp(8px,7.2cqw,15px);width:96%;margin-top:10px;padding:6px 3px;border-radius:8px}.event-guest:not(.poster) .party-explanation:before{top:-11px;left:calc(50% - 8px);border-left-width:8px;border-right-width:8px;border-bottom-width:10px}.event-guest:not(.poster) .party-count select{font-size:17px}}
/* Photo reference: compact guidance pointing up to the first session card. */
.event-guest:not(.poster) .time-explanation{position:relative;border:2px solid #b62e58;border-radius:10px;padding:8px 10px;margin:16px 0 10px;color:#aa1c49;background:#fff8fa;font-size:clamp(16px,2.5vw,24px);font-weight:800;line-height:1.45;text-align:center}
.event-guest:not(.poster) .time-explanation:before{content:"";position:absolute;top:-15px;left:max(49px,calc((100% - 16px)/6));transform:translateX(-50%);border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:14px solid #b62e58;pointer-events:none}
@media(max-width:480px){.event-guest:not(.poster) .time-explanation{padding:6px 10px;margin-top:12px}.event-guest:not(.poster) .time-explanation:before{top:-11px;border-left-width:8px;border-right-width:8px;border-bottom-width:10px}}
/* Event admin: past-day roster browsing (daily events) and period presets in report/export/comparison dialogs. */
.event-admin .date-nav{grid-column:1/-1;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.event-admin .date-nav button{min-height:34px;padding:5px 10px;font-size:12px}
.event-admin .date-nav input{width:auto;min-height:34px;padding:4px 8px;font-size:13px}
.event-admin .team-actions .team-more{display:inline-flex}
.event-admin .date-presets{gap:6px}.event-admin .date-presets button{min-height:36px;padding:6px 11px;font-size:13px}
@media(pointer:coarse){.event-admin .date-nav button,.event-admin .date-nav input,.event-admin .date-presets button{min-height:44px}.event-admin .date-nav input{font-size:16px}}
