/* ENDZONE ELITE proshop. Amendment 5 visual direction: dark navy to near-black,
   electric blue primary, italic hero, dark cards with a 1px blue-grey border.
   Mobile first; Neel reviews on iPhone (WebKit). No people anywhere: space is
   filled with field lines, light rays and the jerseys themselves. */
:root{--bg:#070b14;--bg-2:#0b1220;--panel:#0f172a;--panel-2:#131d33;--line:#243149;--line-2:#2f3f5c;--ink:#f1f5fb;--muted:#8d9bb5;--accent:#1a8cff;--accent-2:#5fb0ff;--accent-ink:#04101f;--green:#22c55e;--amber:#f5b324;--red:#ef4444;--radius:14px;--max:1180px;font-size:16px}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg) radial-gradient(1200px 600px at 50% -200px,#10264a 0%,rgba(16,38,74,0) 70%) no-repeat;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:1.45;min-height:100vh;display:flex;flex-direction:column}
a{color:inherit}img{max-width:100%;height:auto;display:block}h1,h2,h3{letter-spacing:.01em}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}
.site-main{flex:1;width:100%;max-width:var(--max);margin:0 auto;padding:16px}
.muted{color:var(--muted)}.small{font-size:.8rem}.kicker{letter-spacing:.3em;font-size:.72rem;color:var(--accent-2);margin:0 0 4px}
/* header */
.site-head{position:sticky;top:0;z-index:20;background:rgba(7,11,20,.94);-webkit-backdrop-filter:saturate(160%) blur(8px);backdrop-filter:saturate(160%) blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:10px 14px;gap:10px;flex-wrap:wrap}
.brand{text-decoration:none;display:flex;flex-direction:column;line-height:1.02;margin-right:auto}
.brand-name{font-weight:900;letter-spacing:.06em;font-size:1.2rem;font-style:italic}.brand-b{color:var(--accent)}.brand-sub{font-size:.62rem;letter-spacing:.32em;color:var(--muted)}
.nav-toggle{display:none}.nav-burger{display:flex;padding:8px;cursor:pointer;color:var(--ink)}.nav-burger svg{width:26px;height:26px}
.cart-link{position:relative;display:flex;padding:8px;color:var(--ink)}.cart-link svg{width:26px;height:26px}
.cart-count{position:absolute;top:2px;right:0;background:var(--accent);color:#fff;font-size:.68rem;font-weight:800;min-width:18px;height:18px;border-radius:9px;display:grid;place-items:center;padding:0 5px}
.site-nav{display:none;width:100%;flex-direction:column;gap:2px;padding:8px 0;order:4}
.nav-toggle:checked~.site-nav{display:flex}
.site-nav a,.site-nav .linkish{display:block;padding:12px 8px;text-decoration:none;font-weight:700;letter-spacing:.08em;font-size:.86rem;border-radius:8px;color:var(--ink);background:none;border:0;font-family:inherit;width:100%;text-align:left;cursor:pointer}
.site-nav a.active{color:var(--accent)}.site-nav a:hover{background:var(--panel)}
.exit-form,.admin-form-nav{margin:0}.site-nav .linkish{color:var(--muted)}
.nav-tools{display:flex;flex-direction:column;gap:2px}
/* Row 1 (Amendment C, parent #5056): HOME, then the six league marks from
   leagues.logo_path, each on the panel its logo_bg names (--chip from
   logoBg()), the league name under it so every button has a visible text
   name. Inside the burger on a phone as a 3-up grid; one row on desktop. */
.site-nav .nav-home{font-weight:800}
.nav-marks{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 0 8px}
.site-nav .nav-league{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:6px 4px;min-height:44px;width:auto;text-align:center;font-size:.66rem;letter-spacing:.1em;border-radius:8px;color:var(--ink)}
.nav-league-mark{display:grid;place-items:center;width:56px;height:44px;border-radius:5px;background:var(--chip,#0f172a);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.nav-league-mark .img-wrap{display:block;width:36px;height:34px;line-height:0}
.nav-league-logo{width:36px;height:34px;object-fit:contain}
.site-nav .nav-league:hover{background:var(--panel)}
.site-nav .nav-league.active{color:var(--accent)}
.site-nav .nav-league.active .nav-league-mark{box-shadow:0 0 0 2px var(--accent)}
/* Row 2 (Amendments A-C, parents #5052/#5054/#5056; spacing per Amendment D,
   parent #5062: on desktop HOME + marks sit centred between the brand and the
   tools, marks 60x44 with 14px gaps, and the nine chips grow to share the
   full header width, 14px apart, capped at 200px each): the featured teams as
   LSU-style split-panel buttons (chip-example-lsu.jpg): a square-cornered
   mark panel on the measured logo_bg colour (--mark), a hard vertical divider
   with a thin lighter rule, and a lettering panel (--letter) carrying the
   label in the mark-panel colour or the first team colour that reads at AA
   (--chip-ink); chipColors() in _html.js. Each team's lettering face is the
   nav-chip-<slug> rule below. On a phone the row is one horizontal strip
   under the brand, always visible, scrolls sideways and never widens the
   page; on desktop it is the second nav row. */
.nav-teams{display:flex;flex-wrap:nowrap;gap:8px;width:100%;order:5;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scrollbar-width:none;padding:6px 2px 8px;margin:0 -2px}
.nav-teams::-webkit-scrollbar{display:none}
.nav-chip{flex:0 0 auto;display:inline-flex;align-items:stretch;height:44px;border-radius:0;text-decoration:none;box-shadow:0 2px 0 rgba(0,0,0,.6),0 4px 12px rgba(0,0,0,.3);scroll-snap-align:start;overflow:hidden;transition:transform .08s,box-shadow .08s,filter .08s}
.nav-chip-mark{display:grid;place-items:center;flex:0 0 44px;width:44px;background:var(--mark,#0f172a)}
.nav-chip-mark .img-wrap{display:block;width:34px;height:34px;line-height:0}
.nav-chip-logo{width:34px;height:34px;object-fit:contain}
.nav-chip-abbr{font-family:var(--display,"Barlow Condensed"),Impact,sans-serif;font-weight:900;font-size:calc(.9rem*var(--chip-scale,1));color:var(--letter,#fff)}
.nav-chip-label{display:flex;align-items:center;padding:0 12px 0 11px;background:var(--letter,#1a8cff);color:var(--chip-ink,#fff);border-left:1px solid rgba(255,255,255,.5);box-shadow:inset 1px 0 0 rgba(0,0,0,.4);font-family:var(--display,"Barlow Condensed"),Impact,"Arial Narrow",sans-serif;font-weight:900;font-size:calc(.84rem*var(--chip-scale,1));letter-spacing:.06em;line-height:1;white-space:nowrap;text-transform:uppercase}
.nav-chip:hover{filter:brightness(1.08)}
.nav-chip:active{transform:translateY(2px);box-shadow:0 0 0 rgba(0,0,0,.6),0 1px 4px rgba(0,0,0,.35);filter:brightness(.92)}
.nav-chip.active{transform:translateY(1px);box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--letter,#fff),inset 0 2px 6px rgba(0,0,0,.4)}
.nav-chip.active .nav-chip-label{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px}
/* Lettering faces per team (Amendment B, parent #5054). Route 2 faces are
   SIL OFL fonts subset to the letters of the label (public/assets/fonts/
   NAV-FONTS-LICENSE.txt); route 3 is a treatment of the site face or a
   system face. No proprietary team font is hosted here. */
@font-face{font-family:"Nav Graduate";src:url(../fonts/NavGraduate-sub.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Nav Russo One";src:url(../fonts/NavRussoOne-sub.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Nav Alfa Slab One";src:url(../fonts/NavAlfaSlabOne-sub.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Nav Cinzel";src:url(../fonts/NavCinzel900-sub.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}
/* Amendment O3 (parent #5108): font sizes are multiplied by --chip-scale so
   the desktop row can shrink every chip uniformly (mark, label, gap) without
   touching any face, tracking or the split-panel anatomy. */
.nav-chip-lions .nav-chip-label{font-style:italic;letter-spacing:.05em;font-size:calc(.9rem*var(--chip-scale,1))}
.nav-chip-tigers .nav-chip-label{letter-spacing:.14em;font-size:calc(.8rem*var(--chip-scale,1))}
.nav-chip-red-wings .nav-chip-label{font-family:"Bookman Old Style","ITC Bookman",Bookman,"URW Bookman",Georgia,"Times New Roman",serif;font-weight:700;letter-spacing:.03em;font-size:calc(.76rem*var(--chip-scale,1))}
.nav-chip-pistons .nav-chip-label{letter-spacing:.07em;font-size:calc(.86rem*var(--chip-scale,1))}
.nav-chip-wolverines .nav-chip-label{font-family:"Nav Graduate",var(--display,"Barlow Condensed"),sans-serif;font-weight:400;letter-spacing:.02em;font-size:calc(.7rem*var(--chip-scale,1))}
.nav-chip-spartans .nav-chip-label{letter-spacing:.1em;font-size:calc(.8rem*var(--chip-scale,1))}
.nav-chip-new-orleans-saints .nav-chip-label{font-family:"Nav Cinzel",Georgia,serif;font-weight:900;letter-spacing:.1em;font-size:calc(.76rem*var(--chip-scale,1))}
.nav-chip-lsu .nav-chip-label{font-family:"Nav Russo One",var(--display,"Barlow Condensed"),sans-serif;font-weight:400;letter-spacing:.05em;font-size:calc(.72rem*var(--chip-scale,1))}
.nav-chip-dallas-cowboys .nav-chip-label{font-family:"Nav Alfa Slab One",Rockwell,Georgia,serif;font-weight:400;letter-spacing:.06em;font-size:calc(.74rem*var(--chip-scale,1))}
.nav-chip-fever .nav-chip-label{font-style:italic;letter-spacing:.04em;font-size:calc(.9rem*var(--chip-scale,1))}
@media(min-width:960px){.nav-burger{display:none}.site-head{padding:8px 20px 6px}.brand{order:1;margin-right:14px}.site-nav{order:2;flex:1 1 auto;width:auto;min-width:0;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:14px;padding:0;border-top:0;margin:0}.site-nav .nav-home{margin-left:auto;font-size:.92rem}.site-nav a,.site-nav .linkish{width:auto;padding:8px 10px;white-space:nowrap}.nav-marks{display:flex;gap:14px;padding:0}.site-nav .nav-league{padding:3px 6px;gap:3px;font-size:.62rem}.nav-league-mark{width:60px;height:44px}.nav-league-mark .img-wrap,.nav-league-logo{width:40px;height:36px}.nav-tools{flex-direction:row;align-items:center;margin-left:auto;gap:0}.cart-link{order:3}.nav-teams{order:4;flex-basis:100%;justify-content:center;margin:2px 0 0;padding:6px 0 4px;border-top:1px solid var(--line);gap:8px;--chip-scale:.88}.nav-chip{flex:1 0 auto;max-width:200px;height:36px}.nav-chip-mark{flex-basis:36px;width:36px}.nav-chip-mark .img-wrap,.nav-chip-logo{width:28px;height:28px}.nav-chip-label{flex:1 1 auto;justify-content:center;padding:0 8px}}
/* 960-1199 (iPad landscape, small laptops): the same layout one size down so
   row 1 never wraps the cart onto its own line; the chip row scrolls sideways
   rather than squeezing a label. */
@media(min-width:960px) and (max-width:1199px){.site-nav{gap:8px}.nav-marks{gap:8px}.site-nav .nav-league{padding:3px 4px}.nav-league-mark{width:52px;height:38px}.nav-league-mark .img-wrap,.nav-league-logo{width:34px;height:30px}.nav-teams{gap:8px;justify-content:flex-start}}
/* search bar */
.search-bar{max-width:var(--max);margin:12px auto 0;padding:0 16px;display:flex;gap:0}
.search-bar input{flex:1;font:inherit;padding:12px 16px;border-radius:999px 0 0 999px;border:1px solid var(--line-2);border-right:0;background:var(--panel);color:var(--ink);min-width:0}
.search-bar input::placeholder{color:var(--muted)}
.search-btn{border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:0 999px 999px 0;padding:0 18px;cursor:pointer;display:grid;place-items:center}.search-btn svg{width:20px;height:20px}
svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
/* buttons, pills */
.btn{display:inline-block;padding:13px 22px;border-radius:10px;font-weight:800;letter-spacing:.08em;text-decoration:none;border:1px solid transparent;cursor:pointer;font-family:inherit;font-size:.92rem;text-align:center;transition:transform .12s,background .12s}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--accent);color:#fff;box-shadow:0 6px 20px rgba(26,140,255,.35)}.btn-primary:hover{background:#2f98ff}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-2)}.btn-ghost:hover{border-color:var(--accent)}
.btn-block{width:100%;display:block}
.linkish{background:none;border:0;color:var(--accent-2);cursor:pointer;font-family:inherit;font-size:inherit;padding:0;text-decoration:underline}
.linkish.danger{color:#ff8080}.inline{display:inline}
.pill-row{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}.pill-row.small .pill{padding:6px 12px;font-size:.78rem}
.pill{padding:8px 14px;border:1px solid var(--line-2);border-radius:999px;text-decoration:none;font-size:.85rem;font-weight:600;color:var(--ink);background:var(--panel)}
.pill.active{background:var(--accent);border-color:var(--accent);color:#fff}
.clear{margin-left:8px;color:var(--accent-2);font-size:.85rem}
/* league tiles (comp panels 2 and 3) */
.league-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:4px 0 18px}
@media(min-width:720px){.league-tiles{grid-template-columns:repeat(5,1fr)}}
.league-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:84px;padding:14px 10px;border-radius:12px;border:1px solid var(--line);background:linear-gradient(180deg,var(--panel-2),var(--panel));text-decoration:none;text-align:center;transition:border-color .12s,transform .12s}
.league-tile:hover,.league-tile.active{border-color:var(--accent);transform:translateY(-2px)}
.league-code{font-weight:900;font-size:1.3rem;font-style:italic;letter-spacing:.04em}.league-blurb{font-size:.7rem;color:var(--muted);letter-spacing:.08em}
/* hero */
.hero{position:relative;overflow:hidden;padding:36px 18px 30px;text-align:center;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(180deg,#0e1a33 0%,#070b14 100%);margin-bottom:18px}
.hero::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,transparent 1px 12.5%),linear-gradient(180deg,rgba(26,140,255,.12),transparent 60%);pointer-events:none}
.hero::after{content:"";position:absolute;left:50%;top:-40%;width:140%;height:120%;transform:translateX(-50%);background:conic-gradient(from 180deg at 50% 0%,transparent 0 40%,rgba(26,140,255,.14) 50%,transparent 60%);pointer-events:none}
.hero>*{position:relative}
.hero-title{font-size:clamp(2.2rem,8vw,4rem);line-height:.95;margin:0 0 8px;font-weight:900;font-style:italic;letter-spacing:.01em;text-shadow:0 2px 24px rgba(26,140,255,.35)}
.hero-sub{letter-spacing:.28em;font-size:clamp(.72rem,2.4vw,.95rem);color:var(--accent-2);margin:0 0 18px;font-weight:700}
.hero-strip{display:flex;justify-content:center;gap:10px;margin:0 auto 20px;flex-wrap:wrap}
.hero-thumb{width:min(26vw,120px);aspect-ratio:1/1;border-radius:10px;overflow:hidden;background:#0a1020;border:1px solid var(--line);display:grid;place-items:center}
.hero-thumb img{width:100%;height:100%;object-fit:contain}.hero-thumb img.img-small{width:auto!important;height:auto}
.hero-jersey{display:inline-flex;flex-direction:column;align-items:center;color:var(--accent-2)}.hero-jersey svg{width:120px;height:120px;stroke-width:1.2}
/* price bands */
.price-bands{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:18px}
@media(min-width:720px){.price-bands{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}}
.price-band{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-radius:12px;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent)}
.band-l{font-weight:800;letter-spacing:.06em;font-size:.9rem}.band-p{font-weight:900;font-size:1.35rem;color:var(--accent-2);white-space:nowrap}
/* feature row */
.feature-row{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:26px}
@media(min-width:720px){.feature-row{grid-template-columns:repeat(4,1fr)}}
.feature-row div{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 10px;text-align:center;border-radius:12px;background:var(--panel);border:1px solid var(--line);font-size:.78rem;letter-spacing:.14em;font-weight:700}
.feature-row svg{width:34px;height:34px;color:var(--accent)}
/* home sections */
.home-section{margin:0 0 28px}.home-section h2,.page-head h1,.admin-panel h2{margin:0 0 10px}
.home-section h2{font-style:italic;font-weight:900;letter-spacing:.03em;font-size:1.25rem}
.home-section.band{padding:20px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line)}
.home-section.promise{text-align:center;padding:26px 16px;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(180deg,#0e1a33,#0b1220)}
.home-section.promise p{max-width:560px;margin:0 auto 16px;color:var(--muted)}
.team-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:8px 0 8px}
@media(min-width:720px){.team-grid{grid-template-columns:repeat(4,1fr)}}
.team-card{display:flex;flex-direction:column;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);background:var(--panel);box-shadow:0 8px 24px rgba(0,0,0,.35);transition:transform .15s}
.team-card:hover{transform:translateY(-2px)}
.team-card-main{display:flex;flex-direction:column;justify-content:flex-end;min-height:140px;padding:16px;text-decoration:none;background:linear-gradient(160deg,var(--c1) 0%,color-mix(in srgb,var(--c1) 45%,#000) 100%);border-bottom:3px solid var(--c2);color:var(--c3)}
.team-city{font-size:.72rem;letter-spacing:.25em;opacity:.85}.team-name{font-size:1.45rem;font-weight:900;font-style:italic;letter-spacing:.02em;line-height:1.05}.team-league{font-size:.68rem;letter-spacing:.3em;margin-top:6px;opacity:.75}
.team-fits{display:flex}.team-fits a{flex:1;text-align:center;padding:10px 4px;font-size:.8rem;font-weight:700;text-decoration:none;color:var(--accent-2)}.team-fits a+a{border-left:1px solid var(--line)}
.team-picker{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:8px 0 12px}
.team-picker label{display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:var(--muted);flex:1 1 180px}.team-picker label.grow{flex:3 1 220px}
.team-picker select,.team-picker input,.filter-bar select,.filter-bar input,.college-search select,.college-search input{font:inherit;padding:11px 12px;border-radius:10px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink);width:100%;min-width:0}
.team-picker .btn{flex:0 0 auto}
.team-list{display:grid;grid-template-columns:1fr;gap:6px}
@media(min-width:600px){.team-list{grid-template-columns:repeat(2,1fr)}}@media(min-width:900px){.team-list{grid-template-columns:repeat(3,1fr)}}
.team-list a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel);text-decoration:none;font-weight:600}
.team-list a:hover{border-color:var(--accent)}
.team-mark{position:relative;flex:0 0 auto;width:30px;height:25px;display:block}.team-mark svg{width:100%;height:100%;display:block;overflow:visible}.team-decal{position:absolute;left:21%;top:22%;width:42%;height:50%;border-radius:50%;background:var(--plate,transparent);overflow:hidden;display:block}.team-decal img{width:100%;height:100%;object-fit:contain;display:block;padding:1px;box-sizing:border-box}.team-decal.img-failed{display:none}.team-mark.plate{width:26px;height:26px;border-radius:7px;background:var(--c1);border:2px solid var(--c2);box-sizing:border-box;overflow:hidden}.team-mark.plate .team-decal{inset:1px;left:auto;top:auto;width:auto;height:auto;border-radius:4px}.team-list.compact .team-mark{width:24px;height:20px}.team-list.compact .team-mark.plate{width:22px;height:22px}
.team-list-name{flex:1}.team-badge{font-size:.7rem;letter-spacing:.06em;color:var(--accent-2);white-space:nowrap}.team-badge.quiet{color:var(--muted)}
.team-list.compact{grid-template-columns:repeat(2,1fr)}@media(min-width:720px){.team-list.compact{grid-template-columns:repeat(4,1fr)}}
.team-list.compact a{padding:8px 10px;font-size:.85rem}
/* shop grid */
.page-head{margin:4px 0 14px}.page-head h1{font-style:italic;font-weight:900;font-size:1.7rem}.page-head p{margin:0 0 8px}
.filter-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:0 0 14px}
.filter-bar label{display:flex;flex-direction:column;gap:4px;font-size:.78rem;color:var(--muted);flex:1 1 130px}
.filter-bar .btn{padding:11px 16px}
.result-count{margin:0 0 10px;font-size:.85rem}
.product-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media(min-width:720px){.product-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:1000px){.product-grid{grid-template-columns:repeat(4,1fr)}}
.product-grid.strip{grid-template-columns:repeat(2,1fr)}@media(min-width:720px){.product-grid.strip{grid-template-columns:repeat(4,1fr)}}
.product-card{display:flex;flex-direction:column;gap:6px;padding:10px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;transition:border-color .12s,transform .12s}
.product-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.product-img{aspect-ratio:1/1;background:#0a1020;border-radius:10px;overflow:hidden;display:grid;place-items:center}
.product-img img{width:100%;height:100%;object-fit:cover}
.product-card-thumb .product-img img,.product-img img.img-small{object-fit:contain;height:auto}
.img-small{max-width:100%}
.img-pending{color:var(--muted);font-size:.8rem}
.product-title{font-weight:700;line-height:1.2}.product-meta{color:var(--muted);font-size:.8rem}.product-price{font-weight:800;color:var(--accent-2)}
.empty-state{padding:40px 16px;text-align:center;color:var(--muted);border:1px dashed var(--line-2);border-radius:var(--radius);background:var(--bg-2)}
.empty-state .btn{margin-top:12px}
.team-head{position:relative;overflow:hidden;padding:28px 16px;border-radius:var(--radius);margin-bottom:16px;background:linear-gradient(160deg,var(--c1),color-mix(in srgb,var(--c1) 45%,#000));border:1px solid var(--line);border-bottom:3px solid var(--c2);color:var(--c3)}
.team-head::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 1px,transparent 1px 10%);pointer-events:none}
.team-head>*{position:relative}
.team-head h1{margin:0 0 8px;font-size:2.2rem;font-weight:900;font-style:italic}.team-head-city{margin:0;letter-spacing:.25em;font-size:.75rem;opacity:.85}
.team-head .pill{background:rgba(0,0,0,.35);border-color:rgba(255,255,255,.25);color:#fff}.team-head .pill.active{background:#fff;color:#000}
.note{color:var(--muted);font-size:.9rem;margin-top:20px}
.notice{padding:12px 16px;border-radius:10px;margin:0 0 16px;background:var(--panel);border:1px solid var(--line-2)}.notice p{margin:0}
.notice.ok{background:#0d2b1c;border-color:#1f6b3a}.notice.warn{background:#3a2a0d;border-color:#8a6a1a}.consequence{margin:0;padding:10px 12px;border-radius:8px;background:var(--bg-2);border:1px solid var(--line-2);font-size:.9rem}.notice.err{background:#3a1515;border-color:#7a2a2a}.notice.small{padding:6px 10px;font-size:.8rem;margin:6px 0}
.notice ul{margin:0;padding-left:18px}
.crumbs{font-size:.82rem;color:var(--muted);margin:0 0 10px}.crumbs a{color:var(--accent-2);text-decoration:none}
/* college */
.college-search{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.college-search label{display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:var(--muted);flex:1 1 140px}.college-search label.grow{flex:3 1 240px}
.college-list{list-style:none;padding:0;margin:0 0 24px;display:grid;gap:8px}
.college-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:10px;background:var(--panel);border:1px solid var(--line)}
.college-list .btn{padding:9px 12px;font-size:.75rem;white-space:nowrap}.college-mark{flex:0 0 auto;width:36px;height:36px;border-radius:8px;background:var(--plate,#0f172a);display:block;overflow:hidden}.college-mark img{width:100%;height:100%;object-fit:contain;display:block;padding:3px;box-sizing:border-box}.college-mark.none{background:transparent}.college-list .college-text{flex:1 1 auto;min-width:0}@media(max-width:640px){.college-list li{flex-wrap:wrap}.college-list .college-text{flex-basis:calc(100% - 48px)}.college-list .btn{margin-left:48px}}.field-row.field-row-3{grid-template-columns:repeat(3,1fr)}@media(max-width:640px){.field-row.field-row-3{grid-template-columns:1fr 1fr}}
/* product detail (comp panel 4) */
.product-detail{display:grid;grid-template-columns:1fr;gap:18px;margin-bottom:28px}
@media(min-width:800px){.product-detail{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start}}
.pd-main{display:grid;place-items:center;background:#0a1020;border:1px solid var(--line);border-radius:var(--radius);min-height:260px;padding:12px;overflow:hidden}
.pd-main img{max-height:70vh;width:auto;max-width:100%}
.pd-thumbs{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.pd-thumb{width:64px;height:64px;padding:0;border-radius:8px;border:1px solid var(--line-2);background:#0a1020;overflow:hidden;cursor:pointer}.pd-thumb.active{border-color:var(--accent)}
.pd-thumb img{width:100%;height:100%;object-fit:contain}
.pd-controls{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.pd-title{margin:0 0 4px;font-size:1.4rem;font-weight:900;font-style:italic}.pd-meta{margin:0 0 14px;color:var(--muted);font-size:.85rem}
.pd-form .field{margin-bottom:12px}
.counter{float:right;color:var(--muted);font-weight:500}
/* Nameplate preview (Amendment B): plate, ink and edge arrive as inline custom
   properties from src/lib/nameplate.js; the fallbacks are the house navy/white. */
.pd-plate{margin:0 0 8px;padding:16px 12px 12px;border-radius:12px;background:var(--np-bg,#0a1020);color:var(--np-ink,#fff);border:3px solid var(--np-edge,#5fb0ff);box-shadow:inset 0 0 0 3px var(--np-bg,#0a1020),inset 0 0 0 4px rgba(255,255,255,.18),0 10px 30px rgba(0,0,0,.35);min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;text-align:center;font-family:"Barlow Condensed",Impact,"Arial Narrow",sans-serif;font-weight:900;font-style:normal;text-transform:uppercase;line-height:1}
.np-name,.np-number{display:block;max-width:100%;white-space:nowrap;text-shadow:1px 1px 0 var(--np-edge,#5fb0ff),-1px -1px 0 var(--np-edge,#5fb0ff),1px -1px 0 var(--np-edge,#5fb0ff),-1px 1px 0 var(--np-edge,#5fb0ff)}
.np-name{font-size:clamp(1.25rem,6.5vw,2rem);letter-spacing:.1em;padding-left:.1em}
.np-name.np-long{font-size:clamp(1.1rem,5.6vw,1.75rem);letter-spacing:.04em;padding-left:.04em}
.np-number{font-size:clamp(4.25rem,24vw,6.75rem);letter-spacing:.02em;margin-top:6px}
.pd-plate-caption{margin:0 0 14px;text-align:center}
.pd-plate-caption[hidden]{display:none}
.pd-photo-note{margin:8px 0 0;text-align:center}
/* Stage 2 (hf-20261028-lions-photo-numbers): the blanked product photo with the
   chosen number drawn on it. The SVG shares the photo's box and viewBox, so the
   regions measured in src/lib/photo-numbers.js hold at any width. */
.pd-photo{position:relative;display:inline-block;max-width:100%;line-height:0}
.pd-photo-number{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.pd-photo-number text{font-family:"Barlow Condensed",Impact,"Arial Narrow",sans-serif;font-weight:900;font-style:normal;stroke:none}
.pd-note{color:var(--muted);font-size:.9rem}
.pd-price{justify-content:center}.pd-price .label{font-size:.85rem;color:var(--muted);font-weight:600}.pd-price strong{font-size:1.6rem;color:var(--accent-2)}
.pd-desc{color:var(--muted);margin:14px 0 0}
/* forms */
.form{max-width:640px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.field label,.field .label{font-size:.85rem;color:var(--muted);font-weight:600}
.field input,.field select,.field textarea{font:inherit;padding:12px;border-radius:10px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink);width:100%}
.field input:focus,.field select:focus,.field textarea:focus,.search-bar input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.custom-fields{padding:12px;border-radius:10px;border:1px solid var(--line);background:var(--bg-2);margin-bottom:12px}
.confirm{display:flex;gap:10px;align-items:flex-start;margin:16px 0;font-size:.9rem}.confirm input{margin-top:4px;width:18px;height:18px;flex:0 0 auto;accent-color:var(--accent)}
.prose h2{font-size:1.1rem;margin:18px 0 6px}.prose p{margin:0 0 10px}.plain{list-style:none;padding:0}
/* cart + checkout (comp panel 5) */
.cart-lines{display:grid;gap:10px;margin-bottom:16px}
.cart-line{display:grid;grid-template-columns:84px 1fr auto;gap:12px;padding:12px;border-radius:12px;background:var(--panel);border:1px solid var(--line)}
.cart-thumb{width:84px;height:84px;border-radius:8px;background:#0a1020;display:grid;place-items:center;overflow:hidden}.cart-thumb img{width:100%;height:100%;object-fit:contain}.cart-thumb img.img-small{width:auto!important}
.cart-title{font-weight:700;text-decoration:none}.cart-pers{font-weight:800;font-style:italic;color:var(--accent-2);letter-spacing:.06em}
.cart-actions{display:flex;gap:14px;align-items:center;margin-top:8px;flex-wrap:wrap;font-size:.85rem}
.qty-form label{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}.qty-form input{width:64px;font:inherit;padding:6px 8px;border-radius:8px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink)}
.cart-price{text-align:right;display:flex;flex-direction:column;gap:2px}
.cart-summary{padding:16px;border-radius:12px;background:var(--panel);border:1px solid var(--line);max-width:480px;margin-left:auto;display:grid;gap:10px}
.cart-summary .row,.totals .row{display:flex;justify-content:space-between;gap:12px}
.checkout{display:grid;grid-template-columns:1fr;gap:18px;align-items:start}
@media(min-width:900px){.checkout{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}.checkout .summary-card{order:2;position:sticky;top:120px}.checkout .checkout-form{order:1}}
.summary-card{padding:16px;border-radius:12px;background:var(--panel);border:1px solid var(--line)}
.summary-card h2{margin:0 0 10px;font-size:1.05rem}.summary-head{display:flex;justify-content:space-between;align-items:baseline}.summary-head a{color:var(--accent-2);font-size:.85rem}
.summary-line{display:grid;grid-template-columns:56px 1fr auto;gap:10px;padding:10px 0;border-top:1px solid var(--line);font-size:.9rem}
.summary-line:first-of-type{border-top:0}
.summary-thumb{width:56px;height:56px;border-radius:6px;background:#0a1020;overflow:hidden;display:grid;place-items:center}.summary-thumb img{width:100%;height:100%;object-fit:contain}.summary-thumb img.img-small{width:auto!important}
.summary-info{display:flex;flex-direction:column;gap:1px}.summary-price{font-weight:700;white-space:nowrap}
.order-page .summary-line{grid-template-columns:1fr auto}
.totals{border-top:1px solid var(--line-2);margin-top:8px;padding-top:8px;display:grid;gap:6px}.totals .total{font-weight:900;font-size:1.15rem;color:var(--accent-2);border-top:1px solid var(--line);padding-top:8px}
.checkout-form h2{font-size:1.05rem;margin:4px 0 10px}
.choice-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.choice{display:flex;gap:10px;align-items:flex-start;padding:12px;border-radius:10px;border:1px solid var(--line-2);background:var(--panel);cursor:pointer}
.choice input{margin-top:3px;accent-color:var(--accent)}.choice span span{display:block}
.choice:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.ship-block{padding:12px;border-radius:10px;border:1px solid var(--line);background:var(--bg-2);margin-bottom:14px}
.steps{padding-left:20px;color:var(--muted)}.steps li{margin-bottom:6px}
/* gate */
.gate-page .site-main{display:grid;place-items:center}
.gate{width:100%;max-width:420px;margin:24px auto}
.gate-card{background:var(--panel);border:1px solid var(--line-2);border-radius:18px;padding:32px 24px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.5),0 0 0 1px rgba(26,140,255,.15)}
.gate-brand{font-weight:900;font-style:italic;letter-spacing:.1em;font-size:1.7rem;margin:0}.gate-sub{letter-spacing:.35em;font-size:.72rem;color:var(--accent-2);margin:4px 0 0}
.gate-slogan{color:var(--muted);font-size:.8rem;letter-spacing:.2em;margin:4px 0 22px}
.gate-title{font-size:1.1rem;margin:0 0 14px;font-weight:600}
.gate-error{background:#3a1515;border:1px solid #7a2a2a;padding:10px;border-radius:10px;font-size:.9rem}
.gate-form{display:flex;flex-direction:column;gap:12px;text-align:left}
.gate-form label{font-size:.8rem;color:var(--muted)}
.gate-input{font:inherit;font-size:1.6rem;letter-spacing:.5em;text-align:center;padding:14px;border-radius:12px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink);width:100%}
.gate-input.text{font-size:1rem;letter-spacing:normal;text-align:left}
.gate-exit{display:inline-block;margin-top:18px;color:var(--muted);font-size:.85rem}
/* admin (comp panels 7-9): sidebar + main */
/* Amendment E1: slim admin bar replaces the storefront header on /admin/* */
.admin-bar{position:sticky;top:0;z-index:20;background:rgba(7,11,20,.94);-webkit-backdrop-filter:saturate(160%) blur(8px);backdrop-filter:saturate(160%) blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 16px;flex-wrap:wrap}
.admin-bar .brand{order:0;margin-right:auto}.admin-bar-tools{order:2}@media(max-width:480px){.admin-bar{padding:6px 12px;gap:8px}.admin-bar-tools{gap:10px;font-size:.85rem}.admin-bar .brand-name{font-size:1.1rem}}.admin-bar-tools{display:flex;align-items:center;gap:14px;font-size:.9rem;white-space:nowrap}.admin-bar-welcome{font-weight:700;font-style:italic}.admin-bar-tools a{color:var(--muted);text-decoration:none}.admin-bar-tools a:hover,.admin-bar-tools .linkish:hover{color:var(--ink)}.admin-bar-tools .linkish{color:var(--muted);font:inherit;font-size:.9rem}
.admin-head-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.admin-page .site-main{max-width:1400px;padding:0}
.admin{display:grid;grid-template-columns:1fr;min-height:60vh}
@media(min-width:900px){.admin{grid-template-columns:220px 1fr}}
.admin-side{background:var(--bg-2);border-right:1px solid var(--line);padding:14px;display:flex;flex-direction:column;gap:10px}
.admin-side-brand{margin:0;font-weight:900;font-style:italic;letter-spacing:.2em;color:var(--accent-2);font-size:.8rem}
.admin-side nav{display:flex;flex-wrap:wrap;gap:4px}@media(min-width:900px){.admin-side nav{flex-direction:column}}
.admin-side nav a,.admin-side nav .soon{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-radius:8px;text-decoration:none;font-weight:600;font-size:.9rem}
.admin-side nav a.active{background:var(--accent);color:#fff}.admin-side nav a:hover{background:var(--panel-2)}
.admin-side nav .soon{color:var(--muted);opacity:.65}.admin-side nav .soon small{font-size:.65rem;letter-spacing:.08em;border:1px solid var(--line-2);border-radius:999px;padding:1px 6px}
.admin-side-foot{margin-top:auto;display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:.85rem}
.admin-main{padding:16px;min-width:0}
.admin-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:14px}.admin-head h1{margin:0;font-style:italic;font-weight:900}.admin-head p{margin:0}
.range-form select{font:inherit;padding:9px 12px;border-radius:8px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink)}
.kpi-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:16px}
@media(min-width:900px){.kpi-grid{grid-template-columns:repeat(4,1fr)}}
.kpi{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}
.kpi-l{color:var(--muted);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}.kpi-n{font-size:1.7rem;font-weight:900;font-variant-numeric:tabular-nums}.kpi-sub{color:var(--muted);font-size:.78rem}
.admin-cols{display:grid;grid-template-columns:1fr;gap:14px}@media(min-width:900px){.admin-cols{grid-template-columns:1fr 1fr}}
.admin-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:14px;min-width:0}
.panel-head{display:flex;justify-content:space-between;align-items:baseline}.panel-head a{color:var(--accent-2);font-size:.85rem}
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl{width:100%;border-collapse:collapse;font-size:.9rem}.tbl.small{font-size:.8rem}
.tbl td,.tbl th{padding:9px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.tbl th{color:var(--muted);font-weight:600;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.tbl tfoot td{border-bottom:0}.tbl a{color:var(--accent-2)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);width:100%}.tabs a{padding:8px 14px;text-decoration:none;color:var(--muted);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs a.active{color:var(--ink);border-color:var(--accent)}
.status{display:inline-block;padding:3px 9px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.04em;white-space:nowrap;border:1px solid}
.status.green{color:#6ee7a0;border-color:#1f6b3a;background:#0d2b1c}.status.amber{color:#ffd37a;border-color:#7a5a12;background:#2d2410}.status.red{color:#ff9a9a;border-color:#7a2a2a;background:#3a1515}.status.blue{color:var(--accent-2);border-color:#1e4d80;background:#0e2440}.status.grey{color:var(--muted);border-color:var(--line-2);background:var(--bg-2)}
.status-row{display:flex;gap:6px;flex-wrap:wrap}
.admin-main .filter-bar input,.admin-main .filter-bar select{flex:1 1 150px}
/* footer */
.site-foot{border-top:1px solid var(--line);padding:20px 16px;text-align:center;color:var(--muted);font-size:.85rem;background:var(--bg-2)}
.foot-links{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;margin-bottom:8px}.foot-links a{text-decoration:none}
.foot-note{margin:4px 0}.foot-note.small{font-size:.75rem}
/* ---- Phase 3: payment step on the order page ---- */
.order-status{margin:0 0 14px;color:var(--muted)}.order-status strong{color:var(--ink)}
.pay{margin:18px 0;padding:16px;border-radius:14px;background:var(--panel);border:1px solid var(--line)}
.pay h2{margin:0 0 6px}.pay-amount{font-weight:900;font-size:1.35rem;color:var(--accent-2);font-variant-numeric:tabular-nums}
.pay-cards{display:grid;grid-template-columns:1fr;gap:12px;margin:14px 0}@media(min-width:720px){.pay-cards{grid-template-columns:1fr 1fr}}
.pay-card{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}
.pay-card h3{margin:0;font-style:italic;font-weight:900;letter-spacing:.04em}
.pay-qr{width:min(320px,100%);height:auto;aspect-ratio:1/1;object-fit:contain;border-radius:10px;background:#fff;padding:8px;box-sizing:border-box}
.pay-link{width:min(320px,100%);box-sizing:border-box}
.pay-facts{margin:0;display:grid;grid-template-columns:auto 1fr;gap:4px 12px;text-align:left;width:100%;font-size:.95rem}
.pay-facts dt{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;align-self:center}.pay-facts dd{margin:0;font-weight:600}
.pay-handle{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--accent-2);word-break:break-all}
.pay-card .small{color:var(--muted)}
.pay-form{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.pay-which{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.pay-form .btn-primary{font-size:1.05rem;padding:14px 18px;letter-spacing:.06em;font-weight:900;font-style:italic}
.pay-done,.pay-thanks{margin:18px 0;padding:16px;border-radius:14px;border:1px solid #1f6b3a;background:#0d2b1c}
.pay-thanks{border-color:#1e4d80;background:#0e2440}.pay-thanks-msg{margin:0 0 8px;font-weight:600}
details.pay-again{margin-top:10px}details.pay-again summary{cursor:pointer;color:var(--accent-2);font-weight:600}
/* ---- Phase 3: admin order actions ---- */
.glance{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}@media(min-width:900px){.glance{grid-template-columns:repeat(4,1fr)}}
.glance-cell{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.glance-cell strong{font-size:1.25rem;font-weight:900;line-height:1.2;overflow-wrap:anywhere}.glance-l{color:var(--muted);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}
.glance-cell a{color:var(--accent-2);font-size:.9rem;text-decoration:none}
.glance-cell.owes{border-left:4px solid #e0a52a}.glance-cell.clear{border-left:4px solid #2f9e5c}
.admin-form .field{margin-bottom:10px}.admin-form .field-row{grid-template-columns:1fr}@media(min-width:600px){.admin-form .field-row{grid-template-columns:1fr 1fr}}
.admin-form label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:4px}
.admin-form input,.admin-form select,.admin-form textarea{width:100%;box-sizing:border-box;font:inherit;padding:10px 12px;border-radius:8px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink)}
.admin-form .confirm{display:flex;gap:8px;align-items:flex-start;margin:6px 0 12px;font-size:.9rem;color:var(--ink)}.admin-form .confirm input{width:auto;margin-top:3px}
.admin-form .btn{width:100%}@media(min-width:600px){.admin-form .btn{width:auto}}
.admin-panel h3{margin:14px 0 4px;font-size:.8rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.copy-field{width:100%;box-sizing:border-box;font:inherit;font-size:.8rem;padding:8px 10px;border-radius:8px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--accent-2)}
.tbl .num.neg{color:#ff9a9a}.items-tbl .pers strong{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}
/* hf-20261029-supplier-line-already-ordered amendment C: the "already ordered"
   count on a multi-quantity order line. Same 64px field as the cart's .qty-form
   so the admin and the storefront ask for a quantity the same way; wraps to its
   own line in the cell rather than widening the Supplier column. */
.supplier-qty{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px}
.supplier-qty label{flex:1 0 100%;margin:0}
.supplier-qty input{width:64px;font:inherit;font-size:.85rem;padding:6px 8px;border-radius:8px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink)}
.notes{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:8px}.notes li{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.notes li p{margin:0 0 4px;white-space:pre-wrap}
.attention{border-left:4px solid var(--accent-2)}.attention-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.attention-list li{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--line)}.attention-list li:last-child{border-bottom:0}.attention-list a{color:var(--accent-2);text-decoration:none}.attention-list span{color:var(--muted);font-size:.85rem}
/* Phase 3 slice 2: the rest of the dashboard */
.owes{color:#ffd37a}.btn-sm{padding:7px 12px;font-size:.78rem}
.link-actions{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.row-actions{display:flex;gap:6px;flex-wrap:wrap}
/* Delete order (Neel #24860). Red, POST-only, one confirmation. The header button is deliberately larger than the status pills beside it; the row button is compact but a full-size tap target. */
.btn-danger{background:var(--red);color:#fff;border-color:#b91c1c;box-shadow:0 6px 20px rgba(239,68,68,.3)}.btn-danger:hover{background:#f87171}
.btn-del-head{font-size:1rem;padding:14px 22px;font-style:italic;font-weight:900;letter-spacing:.08em;white-space:nowrap}
.btn-del-row{padding:8px 12px;font-size:.74rem;letter-spacing:.06em;white-space:nowrap;box-shadow:none}
.head-tools{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.head-tools .status-row{justify-content:flex-end}
.del-form{margin:0;display:inline}.tbl td.del,.tbl th.del{text-align:right;white-space:nowrap}
.admin-form .btn-del-head{margin-right:8px}
@media(max-width:599px){.head-tools{align-items:flex-start}.head-tools .status-row{justify-content:flex-start}}
.notes{list-style:none;padding:0;margin:8px 0 0}.notes li{padding:8px 0;border-bottom:1px solid var(--line)}.notes li p{margin:0 0 2px}.notes li:last-child{border-bottom:0}
.linkish.danger{color:#ff9a9a}
.filter-bar .check{flex-direction:row;align-items:center;gap:6px;flex:0 0 auto;color:var(--ink);font-size:.85rem}.filter-bar .check input{width:auto}
.price-forms{display:grid;grid-template-columns:1fr;gap:8px}@media(min-width:720px){.price-forms{grid-template-columns:repeat(2,1fr)}}@media(min-width:1100px){.price-forms{grid-template-columns:repeat(3,1fr)}}
.price-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg-2)}
.price-form label{display:flex;align-items:center;gap:8px;font-weight:800}.price-form input{width:96px;font:inherit;padding:8px 10px;border-radius:8px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink)}
.price-form .btn{padding:8px 12px;font-size:.8rem}.price-form .muted{flex-basis:100%}
.inv-tbl .thumb{width:56px}.inv-tbl .thumb img{width:48px;height:48px;object-fit:contain;border-radius:6px;background:#0a1020;display:block}.thumb-none{display:grid;place-items:center;width:48px;height:48px;border-radius:6px;background:var(--bg-2);color:var(--muted)}
.inv-tbl tr.archived td{opacity:.55}.inv-tbl .sizes{font-variant-numeric:tabular-nums;max-width:220px;overflow-wrap:anywhere}
.upload-strip{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px}.upload-strip figure{margin:0;flex:0 0 120px}.upload-strip img{width:120px;height:90px;object-fit:contain;background:#0a1020;border-radius:8px;display:block}.upload-strip figcaption{overflow-wrap:anywhere}
.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:8px 0 14px}@media(min-width:600px){.photo-grid{grid-template-columns:repeat(3,1fr)}}
.photo{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg-2)}.photo.primary{border-color:var(--accent)}.photo img{width:100%;aspect-ratio:1;object-fit:contain;background:#0a1020;display:block}
.photo figcaption{padding:6px 8px;display:flex;flex-direction:column;gap:4px}.photo-actions{display:flex;gap:10px}.photo-actions .linkish{font-size:.8rem}
.upload-form input[type=file]{padding:8px}
.team-rows{display:flex;flex-direction:column;gap:10px}
.team-row{display:grid;grid-template-columns:1fr;gap:10px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--bg-2);align-items:center}
@media(min-width:960px){.team-row{grid-template-columns:minmax(200px,1.2fr) minmax(260px,1.4fr) minmax(260px,1.4fr) auto}}
.team-row-id{display:grid;grid-template-columns:48px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center}.team-row-id strong{grid-column:2}.team-row-id .muted{grid-column:2}
.team-row-logo{grid-row:1/3;width:48px;height:48px;border-radius:8px;display:grid;place-items:center;background:linear-gradient(160deg,var(--c1),color-mix(in srgb,var(--c1) 45%,#000));border-bottom:3px solid var(--c2);overflow:hidden}.team-row-logo img{width:40px;height:40px;object-fit:contain}
.wordmark{font-weight:900;font-style:italic;font-size:.8rem;color:var(--c3);letter-spacing:.05em}
.team-row-colors{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.team-row-colors label{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--muted)}
.team-row-colors input[type=text],.team-row-colors input:not([type]){width:92px;font:inherit;font-size:.85rem;padding:6px 8px;border-radius:8px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink)}
.swatch{display:inline-block;width:18px;height:18px;border-radius:4px;border:1px solid var(--line-2)}
.team-row-files{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.team-row-files label{display:flex;flex-direction:column;gap:2px;font-size:.78rem;color:var(--muted)}.team-row-files input[type=file]{font-size:.8rem;max-width:200px}
.team-row .confirm{margin:0;font-size:.8rem}.hero-thumb img{width:72px;height:40px;object-fit:cover;border-radius:6px}
.team-row-save .btn{padding:9px 14px}
.sheet-tbl .for{font-size:.82rem;color:var(--muted)}.sheet-tbl .pers strong{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}
.report-list{list-style:none;padding:0;margin:0}.report-list li{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.report-list li:last-child{border-bottom:0}.report-list li a:first-child{flex:1;text-decoration:none;color:var(--ink);font-weight:600}.report-list li a.active{color:var(--accent-2)}.report-list .csv,.report-list .pdf{color:var(--accent-2)}.panel-head .panel-links{display:flex;gap:14px;flex-wrap:wrap;justify-content:flex-end}
.tbl tr.note td{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.85rem;background:var(--bg-2);border-bottom:1px solid var(--line-2)}.tbl tr.note td strong{color:var(--muted);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;margin-right:6px}
.customer-pick{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 12px}.customer-pick select{flex:1 1 260px;font:inherit;padding:8px 10px;border-radius:8px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink)}
@media(min-width:900px){.reports-cols{grid-template-columns:minmax(240px,1fr) minmax(0,2.4fr)}}
.settings-form .admin-panel h2{margin-top:8px}.settings-form .admin-panel h2:first-child{margin-top:0}.settings-form textarea{min-height:72px}
.qr-slot{display:flex;align-items:center;gap:12px;margin-top:8px}.qr-slot img{width:120px;height:120px;background:#fff;border-radius:8px;padding:4px}
.pickup-note{padding:12px 14px;border-radius:10px;background:var(--panel);border:1px solid var(--line-2);margin:0 0 14px}
/* Print sheet (supplier order): white paper, black ink, no chrome. */
.print-sheet{background:#fff;color:#000}.print-sheet .site-main{max-width:none;padding:16px}
.print-sheet .print-head h1{margin:0 0 4px;font-size:1.3rem;font-style:italic}.print-sheet .print-head p{margin:0 0 12px;color:#333;font-size:.9rem}
.print-sheet .tbl{font-size:.9rem;color:#000}.print-sheet .tbl td,.print-sheet .tbl th{border-bottom:1px solid #999;color:#000}.print-sheet .tbl th{color:#333}
.print-sheet .muted,.print-sheet .sheet-tbl .for{color:#444}.print-sheet .print-foot{font-size:.8rem;color:#333;margin-top:12px}
@media print{.noprint,.site-head,.search-bar,.site-foot,.admin-side,.admin-bar{display:none!important}.print-sheet .tbl tr{break-inside:avoid}body{background:#fff}}
/* Structural polish (Phase 3 item 8): league dropdown + photographed Detroit cards. */
/* "Don't see your team?" under each league grid (parent #5050 section 3). */
.custom-cta{text-align:center;margin-top:8px}.custom-cta h2{margin:0 0 6px;font-size:1.5rem;letter-spacing:.02em}.custom-cta p{margin:0 auto 14px;max-width:520px}
.team-card-photo{display:block;margin:-16px -16px 10px;height:150px;background:#0a1020}.team-card-photo img{width:100%;height:100%;object-fit:contain;display:block}.team-card-photo img.img-small{width:auto!important;height:auto;max-height:100%;margin:0 auto}
.team-card.has-photo .team-card-main{min-height:0}

/* Phone fix from the Phase 3 walk-through: grid children default to min-width:auto, so a wide table inside .tbl-wrap pushed the whole page sideways on the dashboard and order detail. */
.admin-cols>*,.admin-panel,.admin-main>*{min-width:0}.tbl-wrap{max-width:100%}
/* Never a broken tile (Amendment 6; parent #4934). img() in _html.js renders .img-missing when the file is not on disk, and the emitted <img> flips its wrapper to .img-failed if the load fails in the browser; either way the slot shows a labelled block in the panel colours, not a broken-image icon. */
.img-wrap{display:contents}
.img-missing,.img-wrap.img-failed{display:grid;place-items:center;width:100%;height:100%;min-height:72px;aspect-ratio:1/1;background:repeating-linear-gradient(135deg,#0a1020 0 10px,#0d1528 10px 20px);border:1px dashed var(--line-2);border-radius:10px;color:var(--muted);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;text-align:center;padding:8px;box-sizing:border-box;overflow-wrap:anywhere}
.img-wrap.img-failed img{display:none}
.img-wrap.img-failed::after{content:attr(data-missing)}
.pay-qr-wrap.img-missing,.pay-qr-wrap.img-failed{width:min(320px,100%);height:auto}
.product-img .img-missing,.product-img .img-failed{border-radius:0;border:0}
.thumb .img-missing,.thumb .img-failed{width:48px;height:48px;min-height:0;font-size:.5rem;letter-spacing:0;padding:2px;border-radius:6px}
.team-row-logo .img-missing,.team-row-logo .img-failed{border:0;background:none;color:var(--c3);font-weight:800;font-size:.9rem;letter-spacing:.04em;aspect-ratio:auto;min-height:0}
.upload-strip .img-missing,.upload-strip .img-failed{width:120px;height:90px;aspect-ratio:auto;min-height:0}
.pd-thumb .img-missing,.pd-thumb .img-failed{min-height:0;font-size:.5rem;letter-spacing:0;border:0;border-radius:0}
.hero-thumb .img-missing,.hero-thumb .img-failed{border:0;border-radius:0}

/* =========================================================================
   Phase 4 design preview (parent #4936 comps, #4938 switch). Everything
   below is scoped under body.v2, which layout() adds only when the request
   carries an admin session; a customer's page never matches a rule here.
   The @font-face blocks below are shared: the storefront nameplate (.pd-plate,
   Amendment B) uses the Barlow Condensed face too; the rest is .v2-only.
   ========================================================================= */
@font-face{font-family:"Barlow Condensed";src:url(../fonts/BarlowCondensed-BlackItalic.woff2) format("woff2"),url(../fonts/BarlowCondensed-BlackItalic.ttf) format("truetype");font-weight:900;font-style:italic;font-display:swap}
@font-face{font-family:"Barlow Condensed";src:url(../fonts/BarlowCondensed-Black.woff2) format("woff2"),url(../fonts/BarlowCondensed-Black.ttf) format("truetype");font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:"Barlow Condensed";src:url(../fonts/BarlowCondensed-SemiBoldItalic.woff2) format("woff2"),url(../fonts/BarlowCondensed-SemiBoldItalic.ttf) format("truetype");font-weight:600;font-style:italic;font-display:swap}
@font-face{font-family:"Barlow Condensed";src:url(../fonts/BarlowCondensed-SemiBold.woff2) format("woff2"),url(../fonts/BarlowCondensed-SemiBold.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}
.v2{--display:"Barlow Condensed","Arial Narrow",Impact,sans-serif;--plate:#f3f0e8}
.v2 .preview-banner{background:#3b2a00;color:#ffd66b;border-bottom:1px solid #7a5a00;text-align:center;font:600 .72rem/1.3 var(--display);letter-spacing:.2em;padding:6px 10px}
.v2 .btn{font:italic 900 1.05rem/1 var(--display);letter-spacing:.06em;padding:12px 22px;border-radius:10px}
.v2 .btn-primary{box-shadow:0 6px 18px rgba(26,140,255,.35)}
.v2 .btn-ghost{border-color:rgba(255,255,255,.35);background:rgba(7,11,20,.35)}
.v2 .hz-h2{margin:0 0 12px;font:italic 900 clamp(1.5rem,3.2vw,2.2rem)/1 var(--display);letter-spacing:.02em;text-transform:uppercase}
.v2 .hz-section{margin:0 0 26px}
.v2 .hz-section.band{padding:20px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line)}
.v2 .hz-section.promise{text-align:center;padding:26px 16px;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(180deg,#0e1a33,#0b1220)}
.v2 .hz-section.promise p{max-width:560px;margin:0 auto 16px;color:var(--muted)}
.v2 .hz-more{text-align:center;margin:16px 0 0}

/* Logo chips: a stored mark on the panel scripts/logo-contrast.mjs measured
   for it (parent #4944). Never a glow, never a recolour. */
.v2 .logo-chip{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:hidden;background:var(--chip,#0f172a);border-radius:12px;padding:8px;line-height:0}
.v2 .logo-chip .img-wrap{display:block;width:100%;height:100%;line-height:0}
.v2 .logo-chip .logo-img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain}
.v2 .logo-chip-lg{width:92px;height:92px}
.v2 .logo-chip-sm{width:52px;height:52px;border-radius:10px;padding:6px}
.v2 .logo-chip-xl{width:120px;height:120px;border-radius:16px}

/* Hero: an empty stadium at night, built from gradients only (no people,
   parent #4936). */
.v2 .hz-hero{position:relative;overflow:hidden;border-radius:var(--radius);border:1px solid var(--line);padding:26px 18px 22px;margin:0 0 18px;isolation:isolate;text-align:center;
  background:radial-gradient(70% 60% at 50% -5%,rgba(110,170,255,.34),rgba(110,170,255,0) 62%),radial-gradient(45% 40% at 50% 112%,rgba(26,140,255,.28),rgba(26,140,255,0) 70%),linear-gradient(180deg,#0c1c38 0%,#081020 55%,#05080f 100%)}
.v2 .hz-hero::before{content:"";position:absolute;left:0;right:0;top:0;height:22px;z-index:-1;background:radial-gradient(circle at 50% 7px,rgba(255,255,255,.95) 0 1.6px,rgba(140,190,255,.55) 2.5px,rgba(140,190,255,0) 7px) 0 0/36px 22px repeat-x;opacity:.9}
.v2 .hz-beam{position:absolute;top:-40%;width:22%;height:170%;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgba(150,200,255,0),rgba(150,200,255,.16) 50%,rgba(150,200,255,0));filter:blur(10px)}
.v2 .hz-beam-l{left:6%;transform:rotate(22deg)}.v2 .hz-beam-r{right:6%;transform:rotate(-22deg)}
.v2 .hz-pitch{position:absolute;left:-10%;right:-10%;bottom:0;height:42%;z-index:-1;pointer-events:none;transform:perspective(420px) rotateX(58deg);transform-origin:50% 100%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.14) 0 2px,rgba(255,255,255,0) 2px 90px),linear-gradient(180deg,rgba(26,140,255,0),rgba(26,140,255,.12));-webkit-mask-image:linear-gradient(180deg,transparent,#000 70%);mask-image:linear-gradient(180deg,transparent,#000 70%)}
.v2 .hz-hero-grid{display:grid;grid-template-columns:1fr minmax(0,2.2fr) 1fr;align-items:center;gap:12px}
.v2 .hz-side{display:flex;flex-direction:column;gap:4px;font:italic 900 clamp(1.25rem,2.4vw,2.1rem)/1 var(--display);letter-spacing:.02em;text-transform:uppercase;text-shadow:0 2px 8px rgba(0,0,0,.6)}
.v2 .hz-left{text-align:left;align-items:flex-start}.v2 .hz-right{text-align:right;align-items:flex-end}
.v2 .hz-left span:nth-child(2){color:var(--accent-2)}
.v2 .hz-leaguelist{margin:0 0 8px;font:600 clamp(.8rem,1.3vw,1.05rem)/1.3 var(--display);letter-spacing:.14em;color:#d6def0;max-width:9em;text-align:right}
.v2 .hz-callout{display:flex;flex-direction:column;align-items:flex-end;line-height:1;padding:6px 0;border-top:1px solid rgba(95,176,255,.35)}
.v2 .hz-callout b{font:italic 900 clamp(.95rem,1.5vw,1.25rem)/1 var(--display);color:#fff;letter-spacing:.06em}
.v2 .hz-callout em{font:italic 900 clamp(1.7rem,3.2vw,2.6rem)/1.05 var(--display);color:var(--accent-2);white-space:nowrap}
.v2 .hz-lockup{padding:6px 0 2px}
.v2 .hz-brand{margin:0;font:italic 900 clamp(3.1rem,10.5vw,8rem)/.88 var(--display);letter-spacing:-.005em;text-transform:uppercase;background:linear-gradient(180deg,#ffffff 0%,#e4ecf7 36%,#9eb0c9 50%,#f6f9ff 60%,#aab8cc 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 3px 0 rgba(0,0,0,.65)) drop-shadow(0 12px 26px rgba(0,0,0,.6))}
.v2 .hz-gear{margin:2px 0 0;font:italic 900 clamp(1.9rem,5.4vw,4rem)/.95 var(--display);letter-spacing:.04em;text-transform:uppercase;color:var(--accent);text-shadow:0 2px 0 rgba(0,0,0,.5),0 8px 24px rgba(26,140,255,.45)}
.v2 .hz-tag{margin:8px 0 0;font:italic 600 clamp(.85rem,1.6vw,1.15rem)/1 var(--display);letter-spacing:.34em;color:#d6def0;text-transform:uppercase}
.v2 .hz-jerseys{display:flex;justify-content:center;align-items:flex-end;gap:0;margin:14px auto 6px;max-width:980px}
.v2 .hz-jerseys a{display:block;flex:0 1 25%;margin:0 -2.5%;transition:transform .2s}
.v2 .hz-jerseys a:hover{transform:translateY(-6px);z-index:1}
.v2 .hz-jerseys .img-wrap{display:block;line-height:0}
.v2 .hz-jerseys img{display:block;width:100%;height:auto;max-height:clamp(150px,26vw,330px);object-fit:contain;filter:drop-shadow(0 18px 22px rgba(0,0,0,.65)) drop-shadow(0 2px 4px rgba(0,0,0,.5))}
.v2 .hz-jerseys-cards{gap:10px}
.v2 .hz-jerseys-cards .hz-card{margin:0;padding:8px;border-radius:12px;background:var(--panel);border:1px solid var(--line)}
.v2 .hz-jerseys-cards img{filter:none;border-radius:8px}
/* Price grouping (Neel #24630): one column per price band, widest for the band
   with the most jerseys, each headed by its own callout and ruled off from the
   next, so the label is read over its own jerseys only. */
.v2 .hz-grouped{align-items:stretch}
.v2 .hz-group{display:flex;flex-direction:column;min-width:0;flex:1 1 0}
.v2 .hz-n2{flex-grow:2}.v2 .hz-n3{flex-grow:3}.v2 .hz-n4{flex-grow:4}
.v2 .hz-group+.hz-group{border-left:1px solid rgba(95,176,255,.4)}
.v2 .hz-group-head{align-items:center;border-top:0;border-bottom:1px solid rgba(95,176,255,.5);padding:0 0 6px;margin:0 6% 8px}
.v2 .hz-group-row{display:flex;justify-content:center;align-items:flex-end;flex:1;padding:0 2.5%}
.v2 .hz-group-row a{flex:1 1 0;min-width:0;margin:0 -2.5%}
.v2 .hz-ctas{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:12px}

/* League tiles with marks (comp row 2). */
.v2 .hz-leagues{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:0 0 26px}
@media(min-width:600px){.v2 .hz-leagues{grid-template-columns:repeat(3,1fr)}}
@media(min-width:900px){.v2 .hz-leagues{grid-template-columns:repeat(6,1fr)}}
.v2 .hz-league{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 10px 12px;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(180deg,#0f1a30,#0b1220);text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
.v2 .hz-league:hover{border-color:var(--accent);transform:translateY(-2px)}
.v2 .hz-league-word{font:italic 900 2rem/1 var(--display);color:#fff}
.v2 .hz-league-cta{font:italic 900 .9rem/1 var(--display);letter-spacing:.14em;color:var(--accent-2)}

/* Featured team cards (comp row 3): the cut-out jersey over a team-colour
   gradient, the mark on its measured panel, DETROIT / LIONS stacked, a blue
   SHOP LIONS button. */
.v2 .hz-team-grid{display:grid;grid-template-columns:1fr;gap:14px}
@media(min-width:600px){.v2 .hz-team-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:960px){.v2 .hz-team-grid{grid-template-columns:repeat(4,1fr)}}
.v2 .hz-team{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(160deg,color-mix(in srgb,var(--c1) 55%,#070b14) 0%,#0b1220 70%)}
.v2 .hz-team-photo{display:flex;align-items:flex-end;justify-content:center;height:220px;border-radius:12px;overflow:hidden;background:radial-gradient(60% 50% at 50% 80%,color-mix(in srgb,var(--c1) 45%,transparent),transparent 70%)}
.v2 .hz-team-photo .img-wrap{display:block;height:100%;line-height:0}
.v2 .hz-team-photo img{display:block;height:100%;width:100%;object-fit:cover;object-position:center}
.v2 .hz-team-photo.cut img{object-fit:contain;filter:drop-shadow(0 14px 18px rgba(0,0,0,.6))}
.v2 .hz-team-word{font:italic 900 3rem/1 var(--display);color:#fff;opacity:.85;align-self:center}
/* A team with no clean jersey cut-out shows its mark on a tinted panel in its
   own colours (parent #5050 section 5: no more dark, empty cards). */
.v2 .hz-team-mark{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(160deg,color-mix(in srgb,var(--c1) 88%,#000) 0%,color-mix(in srgb,var(--c1) 60%,var(--c2)) 100%)}
.v2 .hz-team-mark .logo-chip{box-shadow:0 10px 24px rgba(0,0,0,.45)}
.v2 .hz-team-id{display:flex;align-items:center;gap:10px}
.v2 .hz-team-names{display:flex;flex-direction:column;line-height:1;text-transform:uppercase}
.v2 .hz-team-city{font:600 .85rem/1 var(--display);letter-spacing:.2em;color:#d6def0}
.v2 .hz-team-nick{font:italic 900 1.7rem/1 var(--display);color:#fff}
.v2 .hz-features div{font-family:var(--display);font-size:.95rem;letter-spacing:.1em;font-weight:900;font-style:italic}

/* Team page (comp screen 4). */
.v2 .hz-team-head{position:relative;overflow:hidden;border-radius:var(--radius);border:1px solid var(--line);padding:22px 18px 14px;margin:0 0 18px;background:linear-gradient(120deg,color-mix(in srgb,var(--c1) 70%,#070b14) 0%,color-mix(in srgb,var(--c1) 30%,#0b1220) 55%,#0b1220 100%)}
.v2 .hz-team-head::after{content:"";position:absolute;inset:auto -10% -40% -10%;height:70%;background:radial-gradient(50% 50% at 50% 50%,color-mix(in srgb,var(--c2) 35%,transparent),transparent 70%);pointer-events:none}
.v2 .hz-team-head-inner{position:relative;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.v2 .hz-team-head-kicker{margin:0 0 4px;font:600 .8rem/1 var(--display);letter-spacing:.3em;color:#d6def0;text-transform:uppercase}
.v2 .hz-team-title{margin:0;font:italic 900 clamp(2.4rem,7vw,4.6rem)/.95 var(--display);letter-spacing:-.005em;text-transform:uppercase;color:#fff;text-shadow:0 3px 0 rgba(0,0,0,.45),0 10px 24px rgba(0,0,0,.5)}
.v2 .hz-tabs{position:relative;margin:16px 0 0}
.v2 .hz-tabs .pill{font:italic 900 .9rem/1 var(--display);letter-spacing:.12em;text-transform:uppercase}
.v2 .hz-team-body{display:grid;grid-template-columns:1fr;gap:18px;margin:0 0 26px}
@media(min-width:960px){.v2 .hz-team-body{grid-template-columns:minmax(0,3fr) minmax(260px,1fr);align-items:start}}
.v2 .hz-team-body .product-grid{grid-template-columns:repeat(2,1fr)}
@media(min-width:720px){.v2 .hz-team-body .product-grid{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1100px){.v2 .hz-team-body .product-grid{grid-template-columns:repeat(4,1fr)}}
.v2 .hz-customize{padding:20px;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(180deg,color-mix(in srgb,var(--c1) 35%,#0f172a),#0b1220)}
.v2 .hz-customize h2{margin:0 0 10px;font:italic 900 1.7rem/1 var(--display);text-transform:uppercase}
.v2 .hz-customize p{color:#d6def0;margin:0 0 14px}
.v2 .hz-customize .btn{display:block;text-align:center}
.v2 .product-card{background:var(--panel);border:1px solid var(--line)}
.v2 .product-title{font:italic 900 1rem/1.1 var(--display);letter-spacing:.02em;text-transform:uppercase}
/* Phone layout for the v2 home (parent #5050 section 5). Kept after the base
   rules above on purpose: same specificity, so the later block wins. */
@media (max-width:720px){
  .v2 .hz-hero{padding:16px 10px 14px}
  .v2 .hz-hero-grid{grid-template-columns:1fr;gap:6px}
  .v2 .hz-side{flex-direction:row;justify-content:center;gap:12px;font-size:1rem}
  .v2 .hz-left,.v2 .hz-right{text-align:center;align-items:center}
  .v2 .hz-right{order:3;align-items:stretch;gap:0}
  .v2 .hz-leaguelist{display:none}
  .v2 .hz-callout{flex:1;align-items:center;border-top:0;padding:2px 0}
  .v2 .hz-callout b{font-size:.78rem}.v2 .hz-callout em{font-size:1.55rem}
  .v2 .hz-lockup{padding:2px 0 0}
  .v2 .hz-brand{font-size:clamp(2.6rem,12.5vw,3.4rem);line-height:.9;white-space:nowrap}
  .v2 .hz-gear{font-size:clamp(1.4rem,7vw,1.9rem)}
  .v2 .hz-tag{margin-top:4px;font-size:.72rem;letter-spacing:.26em}
  .v2 .hz-jerseys{margin:8px auto 2px}
  .v2 .hz-jerseys a{flex-basis:27%;margin:0 -2%}
  .v2 .hz-jerseys img{max-height:150px}
  /* Phone: the four fronts only (each cut-out is back + front; the front is
     the right-hand jersey). settings.hero_phone_jerseys='all' keeps eight. */
  .v2 .hz-phone-fronts .hz-jerseys:not(.hz-jerseys-cards) a{flex:0 0 24%;margin:0 .5%;height:150px;overflow:hidden;display:flex;justify-content:flex-end;align-items:flex-end}
  .v2 .hz-phone-fronts .hz-jerseys:not(.hz-jerseys-cards) .img-wrap{height:100%}
  .v2 .hz-phone-fronts .hz-jerseys:not(.hz-jerseys-cards) img{height:100%;width:auto;max-width:none;margin-left:auto}
  .v2 .hz-league-stack{display:none}
  .v2 .hz-grouped{margin-top:6px}
  .v2 .hz-group-head{flex:0 0 auto;margin:0 2% 4px;padding:0 0 3px}
  .v2 .hz-group-head b{font-size:.74rem}.v2 .hz-group-head em{font-size:1.45rem}
  .v2 .hz-group-row{padding:0}
  .v2 .hz-group-row a,.v2 .hz-phone-fronts .hz-grouped .hz-group-row a{flex:1 1 0;min-width:0;margin:0 1%}
  .v2 .hz-ctas{margin-top:8px;gap:8px}
  .v2 .hz-ctas .btn{flex:1 1 40%;text-align:center;padding:13px 10px;font-size:.95rem}
  /* Phone compaction (parent #5050 section 5): the home page was 6385px tall
     at 390 wide. Leagues go three across, the team cards and the featured
     jerseys become side-scrolling strips, the feature row is one line and
     the league pills under the picker are left to the picker itself. */
  .v2 .hz-section{margin-bottom:18px}
  .v2 .hz-leagues{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
  .v2 .hz-league{padding:10px 6px 8px;gap:6px}
  .v2 .hz-league .logo-chip-lg{width:56px;height:56px;padding:6px}
  .v2 .hz-league-word{font-size:1.4rem}.v2 .hz-league-cta{font-size:.78rem}
  .v2 .hz-team-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:10px;padding:2px 2px 10px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
  .v2 .hz-team{flex:0 0 72%;scroll-snap-align:start;padding:10px;gap:8px}
  .v2 .hz-team-photo{height:150px}
  .v2 .hz-team-mark .logo-chip-xl{width:96px;height:96px}
  .v2 .hz-team-nick{font-size:1.4rem}
  .v2 .hz-features{grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:18px}
  .v2 .hz-features div{padding:10px 2px;font-size:.6rem;letter-spacing:.03em;gap:4px}
  .v2 .hz-features svg{width:20px;height:20px}
  .v2 .hz-strip{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:10px;padding:2px 2px 10px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
  .v2 .hz-strip .product-card{flex:0 0 46%;scroll-snap-align:start}
  .v2 .hz-section.band{padding:16px 14px}
  .v2 .hz-section.band .pill-row{display:none}
  .v2 .hz-section.promise{padding:18px 14px}
  .v2 .hz-more{margin-top:12px}
}

/* ITEM E (hf-20261028-waive-balance): Edit/Delete on staff notes and the Edit-note control on Payment history rows. */
.note-tools{margin-top:6px}.note-tools::after{content:"";display:block;clear:both}.note-tools summary{cursor:pointer;color:var(--accent-2);font-size:.85rem;display:inline-block;padding:4px 0}.note-tools form{margin-top:8px}.note-tools .note-del{float:right;margin:0 0 6px 10px}.note-tools .btn-del-row{padding:5px 9px;font-size:.7rem}.note-tools .admin-form .btn{width:auto}.note-tools .admin-form p{margin:8px 0 0}.note-confirm p{margin:8px 0}.tbl td .note-tools form{min-width:260px}

/* hf-20261029-settings-sticky-save: the Save button follows the settings form.
   Sticky rather than fixed, and inside the main form, so it pins to the foot of
   the viewport only while that form is on screen and is back in the flow by the
   time the mail-credential and QR forms below it are reachable - a fixed bar
   would hang over them and over the last field. No script involved. */
.save-bar{position:sticky;bottom:0;z-index:15;display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(15,23,42,.97);-webkit-backdrop-filter:saturate(160%) blur(8px);backdrop-filter:saturate(160%) blur(8px);box-shadow:0 -6px 24px rgba(0,0,0,.5)}
.save-bar.dirty{border-color:#7a5a12;background:rgba(45,36,16,.97)}
.save-bar .btn{width:auto;flex:0 0 auto}
.save-bar-state{margin:0;flex:1 1 200px;min-width:0;font-size:.8rem;color:#ffd37a}
/* Phone: a full-width tap target under the message, and the message short
   enough not to grow the bar into a third line over the field behind it. */
@media(max-width:599px){.save-bar{gap:8px;padding:10px 12px}.save-bar .btn{width:100%;order:2}.save-bar-state{flex:1 1 100%;order:1}.save-bar-more{display:none}}
