:root{--ftc-orange:#ff6500;--ftc-orange-deep:#e25a00;--ftc-navy:#036;--ftc-sky:#39bae4;--ftc-gold:#b78d5b;--sat-1:#ff6500;--sat-2:#39bae4;--sat-3:#e8901c;--sat-4:#8dc63f;--bg:#faf7f2;--surface:#fff;--surface-quiet:#eef1f0;--ink:#0b1a2b;--ink-soft:#4c5a6b;--line:#0b1a2b1a;--display:"Anton", "Impact", "Oswald", sans-serif;--body:"Helvetica Neue", "Helvetica", "Arial", sans-serif;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-pill:999px;--shadow:0 1px 2px #0b1a2b0a, 0 10px 28px #00336612;--shadow-lift:0 14px 34px #00336629;--ease:cubic-bezier(.2, .8, .2, 1);--dur-fast:.12s;--dur:.24s;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);--nav-h:66px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--body);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}.app{background:var(--bg);flex-direction:column;max-width:480px;min-height:100%;margin:0 auto;display:flex;position:relative}.appbar{padding:calc(15px + var(--safe-top)) 18px 15px;background:linear-gradient(180deg, var(--ftc-orange) 0%, var(--ftc-orange-deep) 100%);color:#fff;z-index:10;align-items:center;gap:10px;display:flex;position:sticky;top:0;box-shadow:0 2px 12px #e25a0040}.appbar-logo{width:auto;height:22px;display:block}.sat-strip{grid-template-columns:repeat(4,1fr);height:4px;display:grid}.sat-strip span{display:block}.content{padding:22px 18px calc(96px + var(--safe-bottom));flex:1;overflow-y:auto}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.screen{animation:fadeUp var(--dur) var(--ease) both;flex-direction:column;gap:16px;display:flex}.screen--center{justify-content:center;min-height:60vh}.btn:focus-visible,.linkbtn:focus-visible,.tab:focus-visible,.field:focus-visible,.event-row:focus-visible{outline:2px solid var(--ftc-orange);outline-offset:2px}@media (prefers-reduced-motion:reduce){.screen{animation:none}.tab:active,.btn:not(:disabled):active{transform:none}}.content--map{padding:0 0 calc(var(--nav-h) + var(--safe-bottom)) 0;flex-direction:column;display:flex;overflow:hidden}.map-frame{background:#f1f3f4;border:0;flex:1;width:100%;min-height:0}.hero{text-align:center;padding:8px 4px 2px}.hero-logo{width:min(76%,300px);height:auto;margin:6px auto 0;display:block}.kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--ftc-orange);font-size:12px;font-weight:700}.tagline{font-family:var(--display);letter-spacing:.08em;text-transform:uppercase;color:var(--ftc-navy);margin-top:14px;font-size:18px}.card,.placeholder{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:22px}.placeholder{text-align:center;max-width:360px;margin:0 auto}.card-title{letter-spacing:-.01em;color:var(--ink);margin-bottom:8px;font-size:20px;font-weight:700}.card-body{color:var(--ink-soft);font-size:15px;line-height:1.55}.pill{letter-spacing:.04em;text-transform:uppercase;color:var(--ftc-orange);border-radius:var(--r-pill);background:#fff0e6;margin-top:16px;padding:6px 12px;font-size:12px;font-weight:700;display:inline-block}.impact-hero{border-radius:var(--r-lg);color:#fff;background:radial-gradient(120% 120% at 0% 0%, #0a4a86 0%, var(--ftc-navy) 55%, #00264d 100%);box-shadow:var(--shadow-lift);padding:26px 24px 28px;position:relative;overflow:hidden}.impact-hero .ih-eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--ftc-sky);font-size:12px;font-weight:700}.impact-hero .ih-num{font-family:var(--display);letter-spacing:.01em;color:#fff;margin:8px 0 2px;font-size:clamp(64px,22vw,104px);line-height:.9}.impact-hero .ih-unit{color:var(--ftc-orange)}.impact-hero .ih-sub{color:#ffffffdb;max-width:30ch;font-size:15px;line-height:1.5}.impact-hero .ih-sub strong{color:#fff}.impact-hero .ih-est{letter-spacing:.03em;color:#ffffffb3;margin-top:14px;font-size:12px;font-weight:700;display:inline-block}.form{flex-direction:column;gap:12px;margin-top:16px;display:flex}.field{width:100%;font-size:16px;font-family:var(--body);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-md);transition:border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);background:#fff;padding:14px 16px}.field::placeholder{color:#9aa4b0}.field:focus{border-color:var(--ftc-orange);outline:none;box-shadow:0 0 0 3px #ff650029}.field.code{text-align:center;letter-spacing:.4em;font-size:22px;font-weight:700}.hint{color:var(--ink-soft);font-size:13px;line-height:1.5}.error{color:#c0322b;font-size:13px}.btn{appearance:none;cursor:pointer;width:100%;font-size:16px;font-weight:700;font-family:var(--body);color:#fff;background:var(--ftc-orange);border-radius:var(--r-md);transition:filter var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);border:0;padding:15px 16px;box-shadow:0 6px 16px #ff650047}.btn:hover:not(:disabled){filter:brightness(1.04)}.btn:disabled{opacity:.45;cursor:default;box-shadow:none}.btn:not(:disabled):active{transform:translateY(1px)scale(.995);box-shadow:0 3px 10px #ff65003d}.btn--ghost{color:var(--ftc-navy);border:1.5px solid var(--line);box-shadow:none;background:#fff}.btn--ghost:hover:not(:disabled){filter:none;border-color:var(--ftc-navy)}.linkbtn{appearance:none;cursor:pointer;color:var(--ftc-orange);font-family:var(--body);background:0 0;border:0;padding:8px 0;font-size:14px;font-weight:700}.linkbtn:disabled{opacity:.5;cursor:default}.row{justify-content:space-between;align-items:center;gap:10px;margin-top:8px;display:flex}.stats{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.stat{text-align:center;padding:4px 2px}.stat-num{font-family:var(--display);color:var(--ftc-navy);font-size:32px;line-height:1}.stat-label{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);margin-top:7px;font-size:11px;font-weight:700}.card.subtle{box-shadow:none;background:0 0;border:0;justify-content:space-between;align-items:center;padding:4px 6px;display:flex}.milestones{flex-direction:column;gap:12px;margin-top:4px;list-style:none;display:flex}.milestones li{color:var(--ink);padding-left:24px;font-size:15px;line-height:1.45;position:relative}.milestones li:before{content:"";background:var(--ftc-orange);border-radius:50%;width:9px;height:9px;position:absolute;top:6px;left:3px;box-shadow:0 0 0 4px #ff650024}.qr-region{border-radius:var(--r-md);background:#000;width:100%;max-width:300px;margin:16px auto 8px;overflow:hidden}.qr-canvas{border-radius:var(--r-md);box-shadow:var(--shadow);margin:16px auto;display:block}.big-check{color:#2e9b4f;background:#e8f6ea;border-radius:50%;width:72px;height:72px;margin:0 auto 14px;font-size:38px;font-weight:700;line-height:72px;box-shadow:0 0 0 8px #2e9b4f1a}.checkin-success .btn{margin-top:20px}.event-row{text-align:left;border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;width:100%;font-family:var(--body);transition:border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);background:#fff;flex-direction:column;align-items:flex-start;gap:3px;margin-top:8px;padding:13px 15px;display:flex}.event-row:hover{border-color:var(--ftc-orange)}.event-row:active{transform:scale(.99)}.event-row strong{color:var(--ink);font-size:15px}.event-row span{color:var(--ink-soft);font-size:12px}.eb-list{margin-top:10px}.roster-list{flex-direction:column;gap:8px;margin-top:14px;display:flex}.roster-row{border:1px solid var(--line);border-radius:var(--r-md);background:#fff;justify-content:space-between;align-items:center;gap:10px;padding:11px 13px;display:flex}.roster-name{flex-direction:column;min-width:0;display:flex}.roster-name strong{font-size:14px}.roster-name span{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.chip{letter-spacing:.02em;border-radius:var(--r-pill);flex:none;padding:5px 11px;font-size:11px;font-weight:700}.chip--in{color:#2e7d32;background:#e8f6ea}.chip--walk{color:#8a5a00;background:#fdeecb}.chip--no{color:#8a8a90;background:#eef0f0}.tabbar{-webkit-backdrop-filter:saturate(180%)blur(12px);border-top:1px solid var(--line);width:100%;max-width:480px;padding-bottom:var(--safe-bottom);z-index:10;background:#ffffffeb;grid-template-columns:repeat(3,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{appearance:none;cursor:pointer;color:var(--ink-soft);font-family:var(--body);transition:color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);background:0 0;border:0;flex-direction:column;align-items:center;gap:4px;padding:11px 0 13px;display:flex}.tab--active{color:var(--ftc-orange)}.tab-label{letter-spacing:.02em;font-size:11px;font-weight:700}.tab:active{transform:scale(.94)}
