/* ePoll WaitTimes — flattened design-system CSS. Generated from styles.css + tokens/. */

/* ---- tokens/fonts.css ---- */
/* Proxima Nova — supplied by ePollBooks (Mark Simonson Type). Licensed use only.
   WOFF2 first (~44% smaller, converted from the supplied OTFs), OTF as fallback.
   IMPORTANT: serving these as webfonts requires a WEB licence from Mark Simonson Type —
   the supplied files are desktop licences. Confirm before any public deployment.
   NOTE: no "Medium" weight was supplied; 400 Regular and 600 Semibold cover the
   brand's "text font: Medium" spec. See readme.md > Typography. */
@font-face{font-family:"Proxima Nova";src:url("../assets/fonts/ProximaNova-Light.woff2") format("woff2"),url("../assets/fonts/ProximaNova-Light.otf") format("opentype");font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:"Proxima Nova";src:url("../assets/fonts/ProximaNova-Regular.woff2") format("woff2"),url("../assets/fonts/ProximaNova-Regular.otf") format("opentype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Proxima Nova";src:url("../assets/fonts/ProximaNova-RegularItalic.woff2") format("woff2"),url("../assets/fonts/ProximaNova-RegularItalic.otf") format("opentype");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Proxima Nova";src:url("../assets/fonts/ProximaNova-Semibold.woff2") format("woff2"),url("../assets/fonts/ProximaNova-Semibold.otf") format("opentype");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Proxima Nova";src:url("../assets/fonts/ProximaNova-Bold.woff2") format("woff2"),url("../assets/fonts/ProximaNova-Bold.otf") format("opentype");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Proxima Nova";src:url("../assets/fonts/ProximaNova-BoldIt.woff2") format("woff2"),url("../assets/fonts/ProximaNova-BoldIt.otf") format("opentype");font-weight:700;font-style:italic;font-display:swap}
@font-face{font-family:"Proxima Nova";src:url("../assets/fonts/ProximaNova-Extrabold.woff2") format("woff2"),url("../assets/fonts/ProximaNova-Extrabold.otf") format("opentype");font-weight:800;font-style:normal;font-display:swap}
@font-face{font-family:"Proxima Nova";src:url("../assets/fonts/ProximaNova-Black.woff2") format("woff2"),url("../assets/fonts/ProximaNova-Black.otf") format("opentype");font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:"Proxima Nova Condensed";src:url("../assets/fonts/ProximaNovaCond-Regular.woff2") format("woff2"),url("../assets/fonts/ProximaNovaCond-Regular.otf") format("opentype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Proxima Nova Condensed";src:url("../assets/fonts/ProximaNovaCond-Semibold.woff2") format("woff2"),url("../assets/fonts/ProximaNovaCond-Semibold.otf") format("opentype");font-weight:600;font-style:normal;font-display:swap}

/* ---- tokens/colors.css ---- */
:root{
/* ---- Brand core (authoritative, from ePollBooks brand sheet) ---- */
--ep-red:#d42027;
--ep-blue:#104b79;
--ep-navy:#00263f;
--ep-white:#ffffff;

/* ---- Brand ramps ---- */
--navy-900:#00263f;
--navy-800:#062f4c;
--navy-700:#0c3a5c;
--navy-600:#102c4a;   /* portal sidebar */
--navy-500:#104b79;   /* --ep-blue */
--blue-500:#2f7ac0;   /* interactive blue (buttons, active tabs) */
--blue-400:#4a8fd0;
--blue-300:#7aa8cf;
--blue-100:#d3e4f1;
--sky-400:#3fa9e8;    /* product-line headings on dark (ePollBooks / Training / ADA) */
--blue-050:#eaf2f5;   /* app canvas */

--red-600:#b31a20;
--red-500:#d42027;    /* --ep-red */
--red-300:#eb8a8e;
--red-050:#fbe9ea;

/* ---- Neutrals ---- */
--gray-900:#1b1f23;
--gray-700:#43505b;
--gray-600:#5d6b77;
--gray-500:#8494a0;
--gray-400:#adb9c2;
--gray-300:#d0d8de;
--gray-200:#e3e9ed;
--gray-100:#f1f5f7;
--gray-050:#f8fafb;

/* ---- Status (from Portal + iPad app) ---- */
--green-600:#217a35;
--green-500:#2e9447;  /* early voting, wait-time OK, iPad action tiles */
--green-100:#dff2e3;
--amber-500:#ffc72c;  /* wait-time caution */
--amber-100:#fff4d2;
--danger-500:#d42027; /* wait-time critical == brand red */

/* ---- Semantic aliases ---- */
--surface-page:var(--blue-050);
--surface-card:var(--ep-white);
--surface-raised:var(--gray-050);
--surface-inverse:var(--navy-900);
--surface-chrome:var(--navy-500);
--surface-nav:var(--navy-600);
--surface-nav-active:#244c67;

--text-heading:var(--navy-900);
--text-body:var(--gray-700);
--text-muted:var(--gray-500);
--text-on-dark:var(--ep-white);
--text-on-dark-muted:#b6c6d4;
--text-link:var(--blue-500);
--text-link-hover:var(--navy-500);

--border-subtle:var(--gray-200);
--border-default:var(--gray-300);
--border-strong:var(--navy-500);
--border-on-dark:rgba(122,168,207,.32);

--action-primary:var(--blue-500);
--action-primary-hover:#25679f;
--action-secondary:var(--navy-500);
--action-secondary-hover:var(--navy-700);
--action-danger:var(--ep-red);
--action-danger-hover:var(--red-600);
--action-confirm:var(--green-500);
--action-confirm-hover:var(--green-600);
--focus-ring:var(--blue-400);

/* ---- Dark (deck / flyer) scope ---- */
--deck-bg:#0c1b2a;
--deck-bg-2:var(--navy-900);
--deck-card:rgba(255,255,255,.04);
--deck-card-border:rgba(122,168,207,.30);
--deck-rule:var(--ep-red);
}

/* ---- tokens/typography.css ---- */
:root{
--font-core:"Proxima Nova","Helvetica Neue",Arial,sans-serif;
--font-condensed:"Proxima Nova Condensed","Proxima Nova",Arial,sans-serif;
--font-mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;

--fw-light:300; /* @kind font */
--fw-regular:400; /* @kind font */
--fw-text:400; /* @kind font */       /* body copy */
--fw-semibold:600; /* @kind font */   /* UI labels, table headers */
--fw-bold:700; /* @kind font */       /* headings — brand default */
--fw-extrabold:800; /* @kind font */  /* flyer/deck display */
--fw-black:900; /* @kind font */      /* logo-adjacent, rare */

/* Display / marketing scale */
--fs-display-1:64px;
--fs-display-2:48px;
--fs-display-3:36px;
--fs-title-1:28px;
--fs-title-2:22px;
--fs-title-3:18px;
--fs-body-lg:17px;
--fs-body:15px;
--fs-body-sm:13px;
--fs-caption:12px;
--fs-micro:10px;

--lh-tight:1.08; /* @kind font */
--lh-heading:1.18; /* @kind font */
--lh-snug:1.35; /* @kind font */
--lh-body:1.55; /* @kind font */
--lh-loose:1.7; /* @kind font */

--ls-display:-0.015em; /* @kind font */
--ls-heading:-0.005em; /* @kind font */
--ls-body:0; /* @kind font */
--ls-caps:0.06em; /* @kind font */
--ls-caps-wide:0.10em; /* @kind font */

/* Composed roles */
--type-display:var(--fw-bold) var(--fs-display-1)/var(--lh-tight) var(--font-core);
--type-h1:var(--fw-bold) var(--fs-display-3)/var(--lh-heading) var(--font-core);
--type-h2:var(--fw-bold) var(--fs-title-1)/var(--lh-heading) var(--font-core);
--type-h3:var(--fw-bold) var(--fs-title-2)/var(--lh-snug) var(--font-core);
--type-body:var(--fw-text) var(--fs-body)/var(--lh-body) var(--font-core);
--type-label:var(--fw-semibold) var(--fs-body-sm)/1.2 var(--font-core);
--type-eyebrow:var(--fw-bold) var(--fs-caption)/1.2 var(--font-core);
}

/* ---- tokens/spacing.css ---- */
:root{
--sp-0:0; /* @kind spacing */
--sp-1:4px;
--sp-2:8px;
--sp-3:12px;
--sp-4:16px;
--sp-5:20px;
--sp-6:24px;
--sp-8:32px;
--sp-10:40px;
--sp-12:48px;
--sp-16:64px;
--sp-20:80px;
--sp-24:96px;
--sp-32:128px;

--gutter-card:var(--sp-4);       /* padding inside portal cards */
--gutter-grid:var(--sp-4);       /* gap between portal cards */
--gutter-section:var(--sp-20);   /* marketing section rhythm */
--page-max:1240px; /* @kind spacing */
--sidebar-w:248px;
--topbar-h:56px;
--tap-min:44px;                  /* iPad app minimum hit target */
--tile-min:132px;                /* iPad dashboard tile */
}

/* ---- tokens/radius.css ---- */
:root{
--r-0:0; /* @kind radius */
--r-xs:2px;
--r-sm:4px;      /* portal inputs, table chrome */
--r-md:6px;      /* portal cards, buttons */
--r-lg:10px;
--r-xl:16px;     /* iPad app tiles */
--r-pill:999px;  /* status pills, LIVE badge, language toggles */
--r-circle:50%; /* @kind radius */  /* logo lockup badge */
}

/* ---- tokens/elevation.css ---- */
:root{
--shadow-none:none; /* @kind shadow */
--shadow-card:0 1px 2px rgba(0,38,63,.06),0 1px 3px rgba(0,38,63,.08);
--shadow-raised:0 2px 6px rgba(0,38,63,.10),0 6px 16px rgba(0,38,63,.08);
--shadow-overlay:0 12px 32px rgba(0,38,63,.22);
--shadow-tile:0 2px 4px rgba(0,38,63,.18);
--shadow-inset-field:inset 0 1px 2px rgba(0,38,63,.06);
--ring-focus:0 0 0 3px rgba(47,122,192,.35);
--ring-danger:0 0 0 3px rgba(212,32,39,.28);
}

/* ---- tokens/motion.css ---- */
:root{
--dur-fast:120ms; /* @kind other */
--dur-base:180ms; /* @kind other */
--dur-slow:280ms; /* @kind other */
--ease-standard:cubic-bezier(.2,0,.2,1); /* @kind other */
--ease-out:cubic-bezier(0,0,.2,1); /* @kind other */
--ease-in-out:cubic-bezier(.4,0,.2,1); /* @kind other */
--t-color:color var(--dur-fast) var(--ease-standard),background-color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard); /* @kind other */
--t-shadow:box-shadow var(--dur-base) var(--ease-standard); /* @kind other */
--t-transform:transform var(--dur-fast) var(--ease-standard); /* @kind other */
}
