@font-face{font-family:Anton;src:url("vendor/fonts/Anton-Regular.ttf") format("truetype");font-display:swap;font-weight:400}
@font-face{font-family:Jost;src:url("vendor/fonts/Jost-Variable.ttf") format("truetype");font-display:swap;font-weight:100 900}
@font-face{font-family:"Bebas Neue";src:url("vendor/fonts/BebasNeue-Regular.ttf") format("truetype");font-display:swap;font-weight:400}
@font-face{font-family:Oswald;src:url("vendor/fonts/Oswald-Variable.ttf") format("truetype");font-display:swap;font-weight:200 700}
@font-face{font-family:Montserrat;src:url("vendor/fonts/Montserrat-Variable.ttf") format("truetype");font-display:swap;font-weight:100 900}
@font-face{font-family:Inter;src:url("vendor/fonts/Inter-Variable.ttf") format("truetype");font-display:swap;font-weight:100 900}
@font-face{font-family:"Open Sans";src:url("vendor/fonts/OpenSans-Variable.ttf") format("truetype");font-display:swap;font-weight:300 800}
:root{--brand-primary:#f2c21a;--brand-accent:#c98b00;--brand-bg:#f7f5f1;--brand-dark:#0e0b0a;--brand-text:#171411;--font-heading:Anton,Impact,sans-serif;--font-body:Jost,Arial,sans-serif;--radius:12px;--muted:#6f6a63;--card:#fff;--line:#e5e0d8;--green:#177653;--red:#9e352c;--shadow:0 14px 38px rgba(24,19,14,.07)}
*{box-sizing:border-box}html{background:var(--brand-bg)}body{margin:0;background:var(--brand-bg);color:var(--brand-text);font-family:var(--font-body);font-size:16px;line-height:1.45}a{color:inherit;text-decoration:none}button,.button,input,select{font:inherit}button,.button{min-height:44px;padding:.68rem 1rem;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--brand-text);font-weight:700;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s,border-color .15s,background .15s}button:hover,.button:hover{border-color:var(--brand-accent);transform:translateY(-1px)}.primary{min-height:46px;padding:.72rem 1.15rem;border:1px solid var(--brand-primary);border-radius:var(--radius);background:var(--brand-primary);color:#0e0b0a;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;cursor:pointer;box-shadow:0 8px 20px color-mix(in srgb,var(--brand-primary) 25%,transparent);transition:transform .15s,border-color .15s,background .15s}.primary:hover{background:var(--brand-accent);border-color:var(--brand-accent);transform:translateY(-1px)}.action-button{white-space:nowrap}.action-button span{font-size:1.1rem;line-height:1}.secondary{background:#fff}.quiet{border:0;background:transparent;box-shadow:none;color:var(--muted)}.wide{width:100%}.small{min-height:36px;padding:.42rem .68rem;font-size:.84rem}
.mobile-bar{display:none}.sidebar{position:fixed;inset:0 auto 0 0;width:252px;background:var(--brand-dark);color:#fff;padding:27px 18px 20px;display:flex;flex-direction:column;z-index:30}.sidebar-brand{display:block;padding:3px 10px 26px;border-bottom:1px solid rgba(255,255,255,.11)}.sidebar-brand img{display:block;width:100%;height:58px;object-fit:contain;object-position:left center}.sidebar-brand small{display:block;margin-top:9px;color:rgba(255,255,255,.52);text-transform:uppercase;letter-spacing:.14em;font-size:.62rem}.sidebar nav{display:flex;flex-direction:column;gap:3px;overflow-y:auto;padding:19px 0;flex:1}.nav-label{padding:17px 12px 7px;color:rgba(255,255,255,.38);font-size:.61rem;text-transform:uppercase;letter-spacing:.16em;font-weight:800}.sidebar nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:calc(var(--radius) * .75);color:rgba(255,255,255,.72);font-size:.91rem;font-weight:600;transition:.15s}.sidebar nav a i{font-style:normal;width:19px;text-align:center;color:var(--brand-primary);font-size:1rem}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.09);color:#fff}.sidebar nav a.active{box-shadow:inset 3px 0 0 var(--brand-primary)}.sidebar nav .scan-link{background:var(--brand-primary);color:#0e0b0a;margin:6px 0}.sidebar nav .scan-link i{color:#0e0b0a}.sidebar nav .scan-link:hover,.sidebar nav .scan-link.active{background:var(--brand-accent);color:#0e0b0a;box-shadow:none}.sidebar form{padding-top:14px;border-top:1px solid rgba(255,255,255,.11)}.sidebar-logout{width:100%;border:0;background:transparent;color:rgba(255,255,255,.65);justify-content:flex-start}.nav-overlay{display:none}
.container{margin-left:252px;max-width:1500px;padding:48px clamp(24px,4vw,64px) 72px}.page-head,.scan-head{display:flex;align-items:center;justify-content:space-between;gap:28px;margin-bottom:32px}.page-head>div,.scan-head>div{min-width:0}.page-head h1,.scan-head h1{font-family:var(--font-heading);font-size:clamp(2.5rem,4.25vw,3.8rem);line-height:1.1;margin:0 0 .5rem;letter-spacing:.015em;font-weight:400;text-transform:uppercase}.page-head p{color:var(--muted);margin:0}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.7rem!important;font-weight:800;color:var(--brand-accent)!important;margin:0 0 .5rem!important;line-height:1.4}.back{display:block;color:var(--muted);font-size:.9rem;margin-bottom:1rem}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:25px;box-shadow:var(--shadow);margin-bottom:24px}.panel.compact{max-width:700px}.panel h2{font-size:1.08rem;margin:0 0 20px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px}.panel-head h2{margin:0}.panel-head a{font-size:.88rem;color:var(--brand-accent);font-weight:750}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:25px}.stat{position:relative;overflow:hidden;min-height:150px;padding:23px;border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--line);background:#fff}.stat:after{content:"";position:absolute;width:105px;height:105px;border:20px solid currentColor;border-radius:50%;opacity:.06;right:-32px;bottom:-45px}.stat span{display:block;font-size:.8rem;font-weight:750;max-width:130px}.stat strong{display:block;font-family:var(--font-heading);font-size:3.7rem;font-weight:400;line-height:1;margin-top:19px}.stat.coral{background:var(--brand-primary);color:#0e0b0a;border-color:transparent}.stat.blue{background:var(--brand-dark);color:#fff;border-color:transparent}.stat.amber{background:#fff}.stat.amber strong{color:var(--brand-accent)}.stat.rose{background:#f0ece5}.stat.rose strong{color:var(--red)}
.stat-link{display:block;transition:transform .15s,box-shadow .15s}.stat-link:hover{transform:translateY(-2px);box-shadow:0 18px 42px rgba(24,19,14,.13)}.stat-link:focus-visible{outline:3px solid var(--brand-accent);outline-offset:3px}.stat-link small{display:block;margin-top:8px;font-size:.73rem;font-weight:700}
.content-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.session-row,.activity{display:flex;align-items:center;gap:13px;padding:13px 0;border-top:1px solid #f0ece5}.session-row:first-of-type,.activity:first-of-type{border-top:0}.session-row div,.activity div{flex:1}.session-row small,.activity small,td small,.entitlement small,.student-choice small,label small{display:block;color:var(--muted);margin-top:4px;font-weight:450}.live-dot{width:9px;height:9px;background:#2b9b6c;border-radius:50%;box-shadow:0 0 0 5px #dcf4e9}.avatar{width:39px;height:39px;border-radius:50%;background:var(--brand-dark);color:var(--brand-primary);display:grid;place-items:center;font-weight:850;font-size:.78rem;flex:0 0 auto}.badge{display:inline-flex;padding:.31rem .56rem;border-radius:999px;font-size:.7rem;font-weight:800}.badge.good{background:#dff4e9;color:#176845}.badge.warn{background:#fff0c8;color:#75530b}.badge.neutral{background:#efede8;color:#5c5751}.notice{padding:14px 17px;border-radius:var(--radius);margin-bottom:20px;font-weight:700}.notice.success{background:#dff4e9;color:#176845}.notice.error{background:#ffe3df;color:#963027}.empty{text-align:center;color:var(--muted);padding:28px 10px}.empty.big{font-size:1.08rem;padding:70px 10px}
.searchbar,.inline-form{display:flex;gap:10px;margin-bottom:20px}.searchbar input{flex:1}.inline-form{margin:0}.inline-form input,.inline-form select{min-width:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-grid label,.stack label{display:grid;gap:8px;font-size:.84rem;font-weight:750}.form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.session-form{grid-template-columns:2fr 1fr 1fr auto;align-items:end}.session-form .form-actions,.mapping-form .form-actions{grid-column:auto;margin:0}.mapping-form{grid-template-columns:1fr 1.4fr 1.2fr auto;align-items:end}input,select{width:100%;min-height:46px;border:1px solid #d8d2c9;border-radius:calc(var(--radius) * .75);background:#fff;padding:.68rem .8rem;color:var(--brand-text);outline:none}input:focus,select:focus{border-color:var(--brand-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-primary) 22%,transparent)}input[type=color]{height:48px;padding:5px;cursor:pointer}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left}th{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:0 13px 12px}td{border-top:1px solid #eeeae3;padding:15px 13px;font-size:.9rem;vertical-align:middle}.person{display:flex;align-items:center;gap:10px}.actions{display:flex;align-items:center;gap:8px}.actions form{margin:0}
.student-grid{display:grid;grid-template-columns:320px 1fr;gap:24px}.qr-panel{text-align:center}.qr-panel h2{text-align:left}.qr-box{background:#fff;padding:14px;border-radius:calc(var(--radius) * .85);width:max-content;margin:15px auto;box-shadow:inset 0 0 0 1px var(--line)}.qr-box img,.qr-box canvas{display:block}.tiny{font-size:.75rem}.muted{color:var(--muted)}.entitlement{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:15px 0;border-top:1px solid #eeeae3}.entitlement:first-of-type{border-top:0}.entitlement>small{grid-column:1/-1}.credit{font-size:1.25rem}
.scan-head select{max-width:420px}.scanner-grid{display:grid;grid-template-columns:minmax(360px,1.15fr) minmax(320px,.85fr);gap:24px}.scanner-card{background:var(--brand-dark);border-radius:var(--radius);padding:20px;min-height:570px;color:#fff;display:flex;flex-direction:column;justify-content:center;box-shadow:var(--shadow)}#reader{overflow:hidden;border-radius:calc(var(--radius) * .8)}#reader video{border-radius:calc(var(--radius) * .8)}#reader__dashboard_section_swaplink,#reader__dashboard_section_csr button{color:var(--brand-text)}#camera-placeholder{text-align:center;margin:auto}.scan-frame{width:250px;height:250px;margin:0 auto 25px;position:relative;background:linear-gradient(135deg,rgba(255,255,255,.04),rgba(255,255,255,.01))}.scan-frame span{position:absolute;width:48px;height:48px;border-color:var(--brand-primary);border-style:solid}.scan-frame span:nth-child(1){left:0;top:0;border-width:4px 0 0 4px}.scan-frame span:nth-child(2){right:0;top:0;border-width:4px 4px 0 0}.scan-frame span:nth-child(3){left:0;bottom:0;border-width:0 0 4px 4px}.scan-frame span:nth-child(4){right:0;bottom:0;border-width:0 4px 4px}.scanner-card>#start-camera{margin-top:18px}.result-card{min-height:245px;border-radius:var(--radius);padding:30px;text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center;margin-bottom:24px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}.result-card h2{margin:12px 0 8px}.result-card p{margin:.3rem 0;color:var(--muted)}.result-icon{width:55px;height:55px;border-radius:50%;display:grid;place-items:center;font-size:1.5rem;background:#efede8}.result-card.ok{background:#e2f5ea;border-color:#b8e4cc;color:#176845}.result-card.ok .result-icon{background:#2d9269;color:#fff}.result-card.ok p{color:#367b61}.result-card.fail{background:#ffe7e3;border-color:#f5c7c0;color:#9a3029}.result-card.fail .result-icon{background:#d85b4f;color:#fff}.manual input{margin-bottom:10px}.student-choice{width:100%;display:flex;justify-content:space-between;text-align:left;align-items:center;border:0;border-top:1px solid #eeeae3;border-radius:0;padding:12px 4px}.student-choice span{display:block}.student-choice b{color:var(--brand-accent);font-size:.82rem}
.guest-body{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,color-mix(in srgb,var(--brand-primary) 12%,var(--brand-bg)),var(--brand-bg) 48%,#ede9e2)}.guest-body.login-dark{background:radial-gradient(circle at 18% 10%,color-mix(in srgb,var(--brand-primary) 20%,transparent),transparent 30%),var(--brand-dark)}.auth-shell{width:min(450px,100%)}.auth-card{background:#fff;border:1px solid var(--line);border-radius:calc(var(--radius) * 1.45);padding:39px;box-shadow:0 28px 70px rgba(20,16,12,.16)}.auth-card h1{font-family:var(--font-heading);font-weight:400;font-size:3.1rem;line-height:1;margin:30px 0 10px;text-transform:uppercase}.hero-brand{display:flex;flex-direction:column;align-items:center;text-align:center}.auth-logo{display:block;width:min(265px,85%);height:78px;object-fit:contain}.hero-brand small,.brand small{display:block;margin-top:7px;color:var(--muted);font-size:.66rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase}.stack{display:grid;gap:18px;margin:28px 0}.subtle-link{display:block;text-align:center;font-size:.83rem;color:var(--muted);margin-top:18px}
.portal-body{min-height:100vh;background:var(--brand-bg)}.portal-shell{width:min(620px,100%);margin:auto;padding:22px}.portal-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.portal-top .brand{display:flex;flex-direction:column}.portal-logo{width:190px;height:56px;object-fit:contain;object-position:left center}.digital-card{background:linear-gradient(145deg,color-mix(in srgb,var(--brand-dark) 88%,#444),var(--brand-dark));color:#fff;border-radius:calc(var(--radius) * 1.5);padding:34px 24px;text-align:center;box-shadow:0 25px 60px rgba(22,18,15,.24);border-bottom:4px solid var(--brand-primary)}.digital-card h1{font-family:var(--font-heading);font-weight:400;font-size:3rem;line-height:1.05;margin:6px 0 22px;text-transform:uppercase}.portal-qr{padding:18px}.scan-note{font-size:.82rem;color:rgba(255,255,255,.67)}.portal-credits{background:#fff;border:1px solid var(--line);border-radius:calc(var(--radius) * 1.3);padding:24px;margin-top:18px;box-shadow:var(--shadow)}.portal-credits h2{font-size:1rem}.portal-credits article{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-top:1px solid var(--line)}.portal-credits article small{display:block;color:var(--muted);margin-top:5px}.portal-credits article span b{font-size:1.8rem;font-family:var(--font-heading);font-weight:400}
.appearance-layout{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:25px;align-items:start}.appearance-preview{position:sticky;top:28px;padding:0;overflow:hidden}.appearance-preview>.eyebrow{padding:22px 24px 0}.preview-dark{background:var(--brand-dark);padding:28px 24px;text-align:center;color:#fff}.preview-dark img{width:100%;height:90px;object-fit:contain}.preview-dark small{display:block;margin-top:12px;opacity:.6;text-transform:uppercase;letter-spacing:.1em;font-size:.64rem}.preview-body{padding:25px}.preview-body h2{font-family:var(--font-heading);font-size:2rem;text-transform:uppercase;font-weight:400}.preview-body p{color:var(--muted)}.appearance-preview>.tiny{padding:0 25px 22px}.color-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.color-grid label{display:grid;gap:8px;font-size:.76rem;font-weight:700}.appearance-actions{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:40px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 12px 0;margin-top:12px;border-top:1px solid var(--line);color:var(--muted);font-size:.82rem}.pagination>div{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap}.page-link{min-width:34px;min-height:34px;padding:.35rem .6rem;border:1px solid var(--line);border-radius:calc(var(--radius) * .65);display:inline-flex;align-items:center;justify-content:center;background:#fff;color:var(--brand-text);font-weight:700}.page-link:hover,.page-link.active{border-color:var(--brand-primary);background:var(--brand-primary);color:#0e0b0a}.page-link.active{pointer-events:none}code{background:#f0ede7;padding:.25rem .4rem;border-radius:5px}
.event-mapping-form .event-session-options{grid-column:1/-1;min-width:0;border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px}.event-mapping-form .event-session-options legend{font-weight:750;padding:0 8px}.event-mapping-form .event-session-choice{display:flex;align-items:center;gap:12px;margin:0;padding:9px 0;font-size:.9rem;font-weight:600;line-height:1.35;cursor:pointer}.event-mapping-form .event-session-choice+.event-session-choice{border-top:1px solid var(--line)}.event-mapping-form .event-session-choice input[type=checkbox],.event-archive-form input[type=checkbox]{width:18px;height:18px;min-height:18px;flex:none;padding:0;margin:0;accent-color:var(--brand-primary)}.event-mapping-form .form-actions{grid-column:1/-1;justify-content:flex-start}.event-archive-form{min-width:210px}.event-archive-form label{display:flex;align-items:center;gap:9px;margin-bottom:8px;font-size:.75rem;font-weight:650;line-height:1.3}
@media(max-width:1100px){.stat-grid{grid-template-columns:1fr 1fr}.appearance-layout{grid-template-columns:1fr}.appearance-preview{position:static}.color-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.mobile-bar{height:72px;padding:10px 18px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:25}.brand-logo img{display:block;width:185px;height:50px;object-fit:contain;object-position:left}.nav-toggle{display:inline-flex;font-size:1.35rem;background:transparent;border:0}.sidebar{transform:translateX(-105%);transition:transform .2s}.nav-open .sidebar{transform:translateX(0)}.nav-overlay{position:fixed;inset:0;border:0;border-radius:0;background:rgba(0,0,0,.45);z-index:29}.nav-open .nav-overlay{display:block}.container{margin-left:0;padding:38px 24px 65px}.content-grid,.student-grid,.scanner-grid{grid-template-columns:1fr}.scanner-card{min-height:500px}.session-form,.mapping-form{grid-template-columns:1fr 1fr}.session-form .form-actions,.mapping-form .form-actions{grid-column:1/-1}}
@media(max-width:600px){.mobile-bar{height:66px}.brand-logo img{width:155px;height:44px}.container{padding:28px 15px 50px}.page-head,.scan-head{align-items:stretch;flex-direction:column}.page-head .primary{width:100%}.page-head h1,.scan-head h1{font-size:2.75rem}.stat-grid{gap:10px}.stat{min-height:122px;padding:17px}.stat strong{font-size:3rem}.content-grid{gap:0}.panel{padding:18px}.form-grid,.session-form,.mapping-form{grid-template-columns:1fr}.form-actions{grid-column:1}.searchbar{flex-direction:column}.scanner-grid{display:block}.scanner-card{min-height:430px;margin-bottom:18px}.scan-frame{width:220px;height:220px}.auth-card{padding:30px 23px}.auth-card h1{font-size:2.55rem}.entitlement{grid-template-columns:1fr auto}.entitlement .badge{grid-column:1/-1;width:max-content}.inline-form{min-width:420px}.portal-shell{padding:12px}.portal-top{align-items:flex-start}.portal-logo{width:155px}.digital-card{padding:28px 15px}.color-grid{grid-template-columns:1fr 1fr}.appearance-actions{align-items:stretch;flex-direction:column-reverse}.appearance-actions button{width:100%}}
@media(max-width:600px){.pagination{align-items:flex-start;flex-direction:column;padding-left:0;padding-right:0}.pagination>div{justify-content:flex-start}.page-link{min-height:38px}.page-head h1,.scan-head h1{line-height:1.14}}
