/* Turf design (locked) — see BRIEF.md */
:root{--bg:#2F5D3A;--card:#2A5434;--ink:#F4F1E8;--ink2:#B9CDBE;--rule:#5E8A69;--acc:#E3B341;
--emoji:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;
--head:'Bricolage Grotesque',system-ui,sans-serif;--mono:'Atkinson Hyperlegible Mono',ui-monospace,monospace}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 var(--mono);overflow-x:hidden}
button{font:inherit;color:inherit;cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.wrap{max-width:1120px;margin:0 auto;padding:0 16px}
header{position:sticky;top:0;z-index:5;background:var(--bg);border-bottom:1.5px dashed var(--rule);padding-top:env(safe-area-inset-top)}
.brand{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0 4px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2)}
.brand .home{color:var(--ink);font-family:var(--head);font-weight:800;font-size:16px;letter-spacing:0;text-transform:none;text-decoration:none;white-space:nowrap;min-height:36px;display:flex;align-items:center}
.tabs{display:flex;gap:2px}
.tabs a{padding:0 8px;border:1.5px solid transparent;text-decoration:none;min-height:36px;display:flex;align-items:center;color:var(--ink2)}
.tabs a.on{border-color:var(--ink);color:var(--ink)}
.tabs a:not(.on):hover{color:var(--ink)}
.weeks{display:flex;gap:6px;overflow-x:auto;padding:4px 0 10px;scrollbar-width:none;scroll-snap-type:x proximity}
.weeks[hidden]{display:none}
.weeks::-webkit-scrollbar{display:none}
.weeks a{flex:0 0 auto;min-width:40px;height:36px;display:flex;align-items:center;justify-content:center;border:1.5px dashed var(--rule);color:var(--ink2);font-weight:700;scroll-snap-align:center;text-decoration:none}
.weeks a.on{background:var(--ink);color:var(--bg);border:1.5px solid var(--ink)}
.weeks a.future:not(.on){opacity:.5}
.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:22px 0 14px}
h1{margin:0;font:800 clamp(56px,16vw,104px)/.86 var(--head);text-shadow:4px 3px 0 var(--acc);letter-spacing:-.01em}
.hero .acts{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.nav{display:flex;gap:6px}
.btn{border:1.5px solid var(--ink);background:transparent;padding:7px 11px;font-size:13px;font-weight:700;min-height:36px;min-width:36px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.btn:disabled{opacity:.3;cursor:default}
.btn.solid{background:var(--acc);border-color:var(--acc);color:#1d2a1f}
.sub{margin:0 0 16px;color:var(--ink2);font-size:13px}
.grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
@media(min-width:760px){.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}}
.card{background:var(--card);border:1.5px dashed var(--rule);padding:8px 14px 8px;min-width:0}
.ch{display:flex;align-items:center;gap:6px;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2)}
.ch .t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tag{border:1px solid var(--ink2);padding:0 5px;font-size:10.5px;white-space:nowrap}
.tag.live{border-color:var(--acc);color:var(--acc)}
.tag.copy{position:relative;background:transparent;color:var(--ink);letter-spacing:inherit;text-transform:uppercase;line-height:inherit;cursor:pointer}
.tag.copy::after{content:'';position:absolute;inset:-11px -6px} /* 36px+ tap target at the tag's visual size */
.tag.copy:hover,.tag.copy:focus-visible{border-color:var(--acc);color:var(--acc)}
.row{display:grid;grid-template-columns:52px minmax(0,1fr) 38px;align-items:center;gap:10px;padding:7px 0}
.row+.row{border-top:1px dashed rgba(94,138,105,.55)}
.stamp{position:relative;justify-self:start;color:#fff;font:800 16px/1.35 var(--head);padding:0 7px;min-width:44px;text-align:center;text-decoration:none;display:inline-block}
a.stamp::after{content:'';position:absolute;inset:-8px -4px}
.strip{min-width:0;overflow:hidden}
.strip .s{display:block;width:max-content;white-space:nowrap;font-family:var(--emoji);letter-spacing:.06em;line-height:1.25;font-size:20px}
.pipe{font-family:var(--mono);color:var(--rule);margin:0 .22em;letter-spacing:0}
.pts{text-align:right;font:800 28px/1 var(--head);color:var(--ink2)}
.win .pts{color:var(--ink)}
.up{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:center;padding:7px 0}
.up .when{color:var(--ink2);font-size:12.5px}
.legend{margin:26px 0 0;border-top:3px solid var(--acc);padding:12px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px;font-size:12.5px}
@media(min-width:760px){.legend{grid-template-columns:repeat(5,minmax(0,1fr))}}
.legend span{font-family:var(--emoji);margin-right:6px}
footer{color:var(--ink2);font-size:12px;padding:16px 0 calc(28px + env(safe-area-inset-bottom))}
footer a{color:var(--ink2)}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translate(-50%,30px);opacity:0;background:var(--ink);color:var(--bg);padding:10px 14px;font-weight:700;font-size:13px;transition:.2s;pointer-events:none;z-index:9;max-width:calc(100vw - 32px)}
.toast.show{opacity:1;transform:translate(-50%,0)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.err{color:var(--acc)}
@media(max-width:420px){.brand{letter-spacing:.03em}.tabs a{padding:0 5px}.brand .home{font-size:15px}}
/* ledgers: Standings blocks + Team season */
.jump{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 0 6px;padding-bottom:4px}
.jump::-webkit-scrollbar{display:none}
.jump button{flex:0 0 auto;min-height:36px;border:1.5px dashed var(--rule);background:transparent;color:var(--ink2);padding:0 10px;font-size:12px;font-weight:700}
.jump button:hover{color:var(--ink);border-color:var(--ink)}
.division{scroll-margin-top:110px;margin-top:18px}
h2{margin:0 0 10px;font:800 30px/1 var(--head);text-shadow:2px 2px 0 var(--acc)}
.blocks{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
@media(min-width:760px){.blocks{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}}
.tb{padding:10px 12px 8px}
.tbh{display:flex;align-items:center;gap:10px;padding:2px 0 8px}
.tbh .tn{flex:1;min-width:0;font:800 18px/1 var(--head);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:36px;display:flex;align-items:center}
.tbh .tn:hover{text-decoration:underline}
.rec{font:800 24px/1 var(--head)}
.rec.big{font-size:clamp(34px,10vw,56px);color:var(--ink)}
.diff{color:var(--ink2);font-size:12px;min-width:32px;text-align:right}
.lr{display:grid;grid-template-columns:18px 50px 60px minmax(0,1fr);gap:6px;align-items:center;font-size:12px;padding:3px 0;min-height:24px}
.lr+.lr{border-top:1px dashed rgba(94,138,105,.4)}
.lr .wk{color:var(--ink2);text-align:right}
.lr .opp{white-space:nowrap;color:var(--ink2)}
.lr .opp a{color:var(--ink);font-weight:700;text-decoration:none}
.lr .opp a:hover{text-decoration:underline}
.lr .res{white-space:nowrap;color:var(--ink2)}
.lr .res b{display:inline-block;width:1.1em;color:var(--ink)}
.lr.l .res b{color:var(--ink2)}
.lr.bye .opp{font-style:italic}
.lr.up .res{font-size:11.5px}
.lr .live{color:var(--acc)}
.lr.lh{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);min-height:0;padding:0 0 3px}
.lr .strip .s{font-size:20px}
.tb.solo{padding:10px 14px}
@media(min-width:760px){.tb.solo .lr{grid-template-columns:22px 56px 70px minmax(0,1fr);font-size:13px;min-height:30px}} /* phones use the Standings row layout */
/* team page */
.team-hero{align-items:flex-end}
.th-stamp{margin-bottom:12px}
.th-stamp .stamp{font-size:20px;padding:2px 10px}
.team-hero h1{font-size:clamp(48px,14vw,104px)}
.seg{display:flex;gap:0;margin:0 0 14px}
.seg button{min-height:36px;padding:0 14px;border:1.5px solid var(--ink);background:transparent;font-size:13px;font-weight:700}
.seg button+button{border-left:0}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.tag.res-w{border-color:var(--ink);color:var(--ink)}
.byecard{border:1.5px dashed var(--rule);padding:10px 14px;color:var(--ink2);font-size:12px;letter-spacing:.06em;text-transform:uppercase;font-style:italic}
.tidx{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 14px}
@media(min-width:760px){.tidx{grid-template-columns:repeat(4,minmax(0,1fr))}}
.tidx h2{font-size:20px;text-shadow:2px 2px 0 var(--acc)}
.tidx ul{list-style:none;margin:0;padding:0}
.tidx a{display:flex;align-items:center;gap:10px;min-height:40px;text-decoration:none}
.tidx a:hover span:last-child{text-decoration:underline}
@media(max-width:420px){.tb,.tb.solo{padding:10px 10px 8px}}
.th-stamp{display:flex;align-items:center;gap:16px}
.rec.big{font-size:clamp(28px,8vw,44px)}
/* linked cards: the title link stretches over the card; stamps and Copy stay on top */
.card.linked{position:relative}
.card.linked .ch a.t{text-decoration:none;color:inherit}
.card.linked .ch a.t::after{content:'';position:absolute;inset:0}
.card.linked:hover{border-color:var(--ink2)}
.card.linked:hover .ch a.t{color:var(--ink)}
.card.linked .stamp,.card.linked .tag.copy{z-index:1}
.lr a.res{text-decoration:none}
.lr a.res:hover{text-decoration:underline}
/* game page: drive picker + Madden-style drive summary */
:root{--run:#5EB4FF;--pass:#CDEB5E;--pen:#FF5C4D;--kick:#F4F1E8;--field:#2C6A3C;--field2:#2F7141}
h1.gh{font-size:clamp(44px,13vw,96px)}
h1.gh span{font-size:.4em;text-shadow:none;color:var(--ink2);vertical-align:.5em}
#gcard{margin:0 0 16px}
.dv{background:none;border:0;padding:0 .03em;font:inherit;line-height:inherit;border-bottom:2px solid transparent;position:relative}
.dv::after{content:'';position:absolute;inset:-8px -1px} /* taller tap target than the emoji */
.dv.on{border-bottom-color:var(--acc);background:rgba(227,179,65,.18)}
.dv:not(.on){opacity:.78}
.dv:hover{opacity:1}
@keyframes ds-open{from{opacity:0;transform:translateY(-6px)}}
.ds{animation:ds-open .18s ease-out;border:3px solid var(--acc);background:#1f3f27;margin-bottom:12px}
.ds-top{display:flex;align-items:stretch;margin:-3px -3px 0}
.ds-title{background:var(--acc);color:#1d2a1f;font:800 clamp(17px,5vw,30px)/1 var(--head);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;padding:9px 30px 7px 14px;clip-path:polygon(0 0,100% 0,calc(100% - 18px) 100%,0 100%)}
.ds-team{display:flex;align-items:center;gap:10px;padding:0 12px;color:var(--ink2);font-size:12px;text-transform:uppercase;letter-spacing:.06em;min-width:0}
.ds-team span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ds-head{font:800 clamp(22px,5.6vw,30px)/1.1 var(--head);padding:14px 14px 4px;text-wrap:balance}
.ds-sub{color:var(--ink2);font-size:12.5px;padding:0 14px 12px}
.ds-body{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;padding:0 14px 14px}
@media(min-width:760px){.ds-body{grid-template-columns:minmax(0,1.9fr) minmax(170px,1fr);align-items:start}}
.field{max-width:560px;border:3px solid #E9E6DA;background:var(--field);line-height:0}
.field svg{width:100%;height:auto;display:block}
.field text{font-family:var(--head);font-weight:800}
.field text.em{font-family:var(--emoji);font-weight:400}
.field .hit{fill:transparent;cursor:pointer}
.field g.pl:hover .hit,.field g.pl.on .hit{fill:rgba(255,255,255,.10)}
.cap{min-height:3.2em;margin-top:8px;font-size:12.5px;color:var(--ink2)}
.cap b{color:var(--ink)}
.st{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px;margin:0}
.st>div{display:flex;flex-direction:column-reverse;gap:3px}
.st dt{font:800 15px/1.1 var(--head);letter-spacing:.08em;text-transform:uppercase;color:var(--acc)}
.st dd{margin:0;font:800 26px/1 var(--head)}
.st .run{color:var(--run)}.st .pass{color:var(--pass)}.st .pen{color:var(--pen)}
@media(min-width:760px){
  .st{grid-template-columns:1fr;gap:6px;padding-top:6px}
  .st>div{flex-direction:row;align-items:center;gap:14px}
  .st dt{width:96px;text-align:right}
  .st dd{font-size:30px}
}
.key{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--ink2);margin:0 14px;padding:10px 0 12px;border-top:1.5px dashed var(--rule)}
.key i{display:inline-block;width:18px;height:6px;margin-right:6px;vertical-align:middle;border-radius:3px}
.key i.dots{height:0;border-radius:0;border-top:2px dotted var(--kick)}
