:root{--forest-green:#0076ac;--forest-green-dark:#021930;--cream:#fbf3e4;--cream-paper:#f6e6c6;--gold:#f0d830;--gold-light:#f6e472;--sky-blue:#5ecaee;--hot-pink:#f31b75;--sunset-orange:#f69a08;--navy:#021930;--ink:#021930;--ink-soft:#4a6a8a;--danger:#e0405a;--danger-bg:#fde7ea;--success:#24a72c;--success-bg:#e6f7e7;--radius:18px;--shadow:0 6px 18px #1b3b6f29;--font-serif:"Baloo 2", "Fredoka", "Nunito", sans-serif;--font-sans:"Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body{margin:0}body{font-family:var(--font-sans);background:var(--forest-green-dark);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,.serif{font-family:var(--font-serif)}a{color:var(--forest-green)}button,input,select,textarea{font-family:inherit;font-size:1rem}button{cursor:pointer}.app-shell{background:var(--forest-green-dark)}.page{max-width:880px;margin:0 auto;padding:24px 16px 64px}.page-narrow{max-width:560px}.btn{border:2px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:14px 22px;font-size:1.05rem;font-weight:700;transition:transform 60ms,box-shadow .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.btn-primary{background:var(--forest-green);color:var(--cream)}.btn-primary:hover{background:var(--forest-green-dark)}.btn-gold{background:var(--gold);color:var(--forest-green-dark)}.btn-gold:hover{background:var(--gold-light)}.btn-outline{border-color:var(--forest-green);color:var(--forest-green);background:0 0}.btn-outline:hover{background:#1f4d3a14}.btn-danger{background:var(--danger);color:#fff}.btn-block{width:100%}.btn-sm{min-height:36px;padding:8px 14px;font-size:.9rem}.btn:disabled{opacity:.5;cursor:not-allowed}.card{border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:24px}.field{margin-bottom:16px}.field label{color:var(--forest-green-dark);margin-bottom:6px;font-weight:600;display:block}.field .hint{color:var(--ink-soft);margin-top:4px;font-size:.85rem}.field input,.field select,.field textarea{background:var(--cream);border:1.5px solid #cfe0e8;border-radius:10px;width:100%;min-height:46px;padding:12px 14px}input,select,textarea{min-width:0}img,canvas,svg{max-width:100%}.table-scroll{overflow-x:auto}@media (max-width:420px){.card{padding:16px}}.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid var(--gold);outline-offset:1px;border-color:var(--gold)}.status-banner{border-radius:10px;margin-bottom:16px;padding:12px 16px;font-weight:600}.status-banner.error{background:var(--danger-bg);color:var(--danger)}.status-banner.success{background:var(--success-bg);color:var(--success)}.status-banner.info{color:#2a4d78;background:#eef3fb}[role=status],[role=alert]{line-height:1.4}.badge{border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:.8rem;font-weight:700;display:inline-flex}.badge-verified{background:var(--success-bg);color:var(--success)}.badge-pending{color:#8a6100;background:#fff3d6}.badge-rejected{background:var(--danger-bg);color:var(--danger)}.badge-checked{background:var(--forest-green);color:var(--cream)}.badge-committee{background:var(--sky-blue);color:#fff}.badge-vip{background:var(--gold);color:var(--forest-green-dark)}.badge-attendee{background:var(--success);color:#fff}.bff-tag{background:var(--hot-pink);color:#fff;font-family:var(--font-serif);letter-spacing:.5px;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:.85rem;font-weight:700;display:inline-flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stack-8>*+*{margin-top:8px}.passport-book{background:linear-gradient(155deg, var(--forest-green) 0%, var(--forest-green-dark) 100%);border-radius:18px;padding:10px;position:relative;box-shadow:0 12px 28px #00000059}.passport-spine{background:linear-gradient(90deg,#00000059,#0000);border-radius:8px 0 0 8px;width:10px;position:absolute;top:14px;bottom:14px;left:0}.passport-inset{border:1.5px solid var(--gold-light);color:var(--cream);text-align:center;border-radius:12px;padding:28px 22px}.passport-emblem{border:2px solid var(--gold-light);border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 14px;font-size:26px;display:flex}.event-logo{border-radius:16px;width:100%;max-width:320px;margin:0 auto 14px;display:block;box-shadow:0 6px 18px #02193059}.passport-title{font-family:var(--font-serif);letter-spacing:3px;text-transform:uppercase;margin:0 0 4px;font-size:1.6rem}.passport-event-title{font-family:var(--font-serif);margin:6px 0 2px;font-size:1.15rem}.passport-subtitle{color:var(--gold-light);margin:0 0 18px;font-size:.95rem;font-style:italic}.passport-title-body{border-top:1px dashed #d9bd7a80;flex-wrap:wrap;justify-content:center;align-items:center;gap:20px;margin-top:10px;padding-top:14px;display:flex}.passport-meta{text-align:left;flex-direction:column;gap:4px;font-size:.95rem;display:flex}.passport-meta strong{color:var(--gold-light);font-weight:600}.passport-title-qr{text-align:center;flex:0 auto;min-width:0;max-width:100%}.passport-tabs{grid-template-columns:1fr 1fr;grid-template-columns:repeat(auto-fit, minmax(var(--tab-min,84px), 1fr));grid-gap:6px;gap:6px;margin-bottom:8px;display:grid}@media (min-width:560px){.passport-tabs{grid-template-columns:repeat(var(--tab-count,4), minmax(0, 1fr))}}.passport-tab{border:1.5px solid var(--gold-light);min-height:44px;color:var(--cream);font-family:var(--font-sans);cursor:pointer;background:0 0;border-radius:10px;padding:8px 6px;font-size:.82rem;font-weight:700;line-height:1.2;transition:background .15s,color .15s}.tab-word{white-space:nowrap}.passport-tab.active{background:var(--gold);color:var(--forest-green-dark);border-color:var(--gold)}.passport-slide{min-width:0}.passport-slide[hidden]{display:none}.passport-page{background:var(--cream-paper);color:var(--ink);background-image:repeating-linear-gradient(0deg,#0000,#0000 27px,#1b3b6f0d 28px);border-radius:12px;margin-top:8px;padding:22px}.passport-section-title{font-family:var(--font-serif);color:var(--forest-green-dark);border-bottom:2px solid var(--gold);align-items:center;gap:8px;margin:0 0 12px;padding-bottom:6px;font-size:1rem;display:flex}.passport-section-number{background:var(--forest-green);width:22px;height:22px;color:var(--cream);border-radius:50%;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:inline-flex}.station-progress-bar{align-items:center;gap:10px;margin-bottom:12px;display:flex}.station-progress-track{border:3px solid var(--navy);background:linear-gradient(#d8d8d8,#efefef);border-radius:999px;flex:1;height:24px;padding:3px;box-shadow:inset 0 2px 3px #00000040}.station-progress-fill{border-radius:999px;min-width:18px;height:100%;transition:width .4s,background-color .4s;position:relative;overflow:hidden;box-shadow:inset 0 -3px 4px #0003}.station-progress-fill:after{content:"";background:linear-gradient(#ffffffbf,#fff0);border-radius:999px 999px 40% 40%/999px 999px 100% 100%;height:45%;position:absolute;top:1px;bottom:auto;left:1px;right:1px}.station-progress-thumb-badge{border:3px solid var(--navy);filter:grayscale();opacity:.55;background:linear-gradient(145deg,#e4e4e4,#aaa);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;transition:all .3s;display:flex}.station-progress-thumb-badge.lit{background:linear-gradient(145deg, var(--gold-light), var(--gold));filter:none;opacity:1;transform:scale(1.12);box-shadow:0 0 10px 2px #f0d830a6}.station-poster{aspect-ratio:1414/2000;background:var(--cream-paper);border-radius:14px;width:100%;margin-top:8px;position:relative;overflow:hidden}.station-poster-img{object-fit:cover;width:100%;height:100%;display:block;position:absolute;top:0;bottom:0;left:0;right:0}.station-poster-dimmed{filter:grayscale()opacity(.5)}.station-photo-frame{background:#fff6;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;overflow:hidden;transform:translate(-50%,-50%);container-type:inline-size}.station-photo-frame img{object-fit:cover;width:100%;height:100%;display:block}.station-outcome-fill{font-size:16px;font-size:max(10px,min(4.5vw,24px));font-size:55cqw;line-height:1}.station-outcome-badge{aspect-ratio:1;background:#fff;border-radius:50%;justify-content:center;align-items:center;width:7%;min-width:20px;max-width:32px;min-height:20px;max-height:32px;font-size:14px;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 4px #1b3b6f59}.station-map{aspect-ratio:1414/2000;background:var(--cream-paper);border-radius:14px;width:100%;margin-top:8px;position:relative;overflow:hidden}.station-map img{object-fit:cover;width:100%;height:100%;display:block;position:absolute;top:0;bottom:0;left:0;right:0}.station-map-check{aspect-ratio:1;background:var(--success);color:#fff;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:3.8%;min-width:18px;font-size:max(11px,min(3vw,18px));font-weight:800;line-height:1;display:flex;position:absolute;transform:translate(-20%,-80%);box-shadow:0 1px 4px #02193073}.member-row{border-bottom:1px solid #dce8f0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;display:flex}.member-row:last-child{border-bottom:none}.qr-frame{box-shadow:var(--shadow);background:#fff;border-radius:10px;padding:16px;display:inline-block}.certificate{box-shadow:var(--shadow);page:certificate;background:#fff;border-radius:18px;padding:14px}@page certificate{size:A4 landscape;margin:0}.certificate-print-portal{display:none}.certificate-poster{aspect-ratio:2000/1415;width:100%;position:relative;container-type:inline-size}.certificate-poster-img{object-fit:cover;width:100%;height:100%;display:block}.certificate-name-overlay{width:71.8%;height:15.35%;font-family:var(--font-serif);font-size:20px;font-weight:700;font-size:max(14px,min(5vw,36px));color:var(--navy);text-align:center;overflow-wrap:break-word;justify-content:center;align-items:flex-end;padding-bottom:1.5%;font-size:5.5cqw;line-height:1.1;display:flex;position:absolute;top:36.75%;left:15.25%}.roster-ward{page-break-inside:avoid;margin-bottom:20px}.roster-ward-heading{border-bottom:2px solid var(--ink);padding-bottom:4px}.roster-family{page-break-inside:avoid;margin-bottom:10px}.roster-family-heading{margin:6px 0 2px;font-weight:700}.roster-table{border-collapse:collapse;width:100%;margin-bottom:8px}.roster-table td{border-bottom:1px solid #ddd;padding:4px 8px}.roster-checkbox{width:24px;font-size:1.1rem}.roster-page-break{page-break-before:always}.tally-table{border-collapse:collapse;width:100%}.tally-table th{text-align:left;border-bottom:2px solid var(--ink);padding:6px 8px;font-size:.85rem}.tally-table td{vertical-align:middle;border-bottom:1px solid #bbb;padding:8px}.tally-table tr{page-break-inside:avoid}.tally-team{font-weight:700;display:block}.tally-sub{color:#444;font-size:.8rem;display:block}.import-actions{flex-wrap:wrap;margin:4px -3px 0;display:flex}.import-actions>*{margin:3px}.import-check{margin-top:6px;padding:6px 0;display:block}.import-time{margin-top:8px;font-size:.85rem;display:block}.tally-box{text-align:center;width:18%;font-size:1.4rem}.tally-time{width:16%}@media print{body{background:#fff}.no-print{display:none!important}.passport-book{box-shadow:none}.certificate,.card{box-shadow:none;padding:0}.roster-print{color:#000}body.printing-certificate #root{display:none!important}body.printing-certificate .certificate-print-portal{width:100vw;height:100vh;margin:0;padding:0;display:block;position:fixed;top:0;bottom:0;left:0;right:0}body.printing-certificate .certificate-print-portal .certificate{box-shadow:none;border-radius:0;width:100%;height:100%;padding:0}body.printing-certificate .certificate-print-portal .certificate-poster{width:100%;height:100%}.passport-slide,.passport-slide[hidden]{page-break-inside:avoid;display:block!important}}.photo-booth-camera{position:relative}.photo-booth-video,.photo-booth-preview{aspect-ratio:2000/1333;object-fit:cover;background:var(--cream-paper);border-radius:14px;width:100%;display:block}.photo-booth-video{transform:scaleX(-1)}.photo-booth-countdown{font-family:var(--font-serif);color:#fff;text-shadow:0 2px 12px #0009;background:#00000040;border-radius:14px;justify-content:center;align-items:center;font-size:5rem;font-weight:700;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.booth-photo{box-shadow:var(--shadow);page:booth-photo;background:#fff;border-radius:18px;padding:14px}@page booth-photo{size:6in 4in;margin:0}.booth-photo-print-portal{display:none}.booth-photo-img{border-radius:8px;width:100%;display:block}@media print{body.printing-booth-photo{background:0 0;margin:0;padding:0}body.printing-booth-photo #root{display:none!important}body.printing-booth-photo .booth-photo-print-portal{page:booth-photo;break-after:avoid;page-break-after:avoid;width:6in;height:4in;margin:0;padding:0;display:block;overflow:hidden}body.printing-booth-photo .booth-photo-print-portal .booth-photo{box-shadow:none;background:0 0;border-radius:0;width:100%;height:100%;padding:0}body.printing-booth-photo .booth-photo-print-portal .booth-photo-img{object-fit:cover;border-radius:0;width:100%;height:100%;transform:scale(1.015)}}@supports not (aspect-ratio:1){.station-poster:before,.station-map:before{content:"";padding-top:141.44%;display:block}.station-map-check{min-height:18px}}@media (max-width:380px){.passport-page{padding:16px 12px}.passport-inset{padding:22px 14px}}
