/* SHL Fantasy design tokens ------------------------------------------------ */
:root {
  color-scheme: light;
  --page: #f4f6f8;
  --surface: #ffffff;
  --surface-subtle: #f8fafc;
  --ink: #132033;
  --ink-soft: #344258;
  --muted: #687588;
  --line: #dce3eb;
  --line-strong: #c6d0dc;
  --navy: #10243e;
  --navy-deep: #0b192b;
  --primary: #087c71;
  --primary-dark: #05655d;
  --primary-soft: #d9f1ed;
  --green: #17714b;
  --green-soft: #dcefe4;
  --amber: #9b6500;
  --amber-soft: #fff1cf;
  --red: #a83535;
  --red-soft: #f9e2e1;
  --blue: #2263a6;
  --blue-soft: #e2edf9;
  --grey-soft: #e8edf3;
  --radius-sm: 8px;
  --radius: 13px;
  --radius-lg: 18px;
  --shadow-sm: 0 1px 2px rgb(15 30 48 / 5%), 0 1px 5px rgb(15 30 48 / 4%);
  --shadow: 0 12px 30px rgb(15 30 48 / 7%);
  --max-width: 1340px;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

/* Base --------------------------------------------------------------------- */
* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; color: var(--ink); background: var(--page); font-size: 15px; line-height: 1.5; }
button, input, select { font: inherit; }
button { cursor: pointer; }
a { color: var(--blue); text-decoration-thickness: 1px; text-underline-offset: 2px; }
a:hover { color: var(--primary-dark); }
h1, h2, h3, p { margin: 0; }
h1 { max-width: 26ch; font-size: clamp(1.85rem, 2.8vw, 2.55rem); line-height: 1.12; letter-spacing: -.035em; }
h2 { font-size: 1.25rem; line-height: 1.2; letter-spacing: -.018em; }
h3 { font-size: 1rem; line-height: 1.3; }
small { color: var(--muted); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
.muted { color: var(--muted); }
.eyebrow { margin-bottom: .4rem; color: var(--primary-dark); font-size: .72rem; font-weight: 800; letter-spacing: .11em; line-height: 1.2; text-transform: uppercase; }
.lede { max-width: 54ch; color: var(--ink-soft); font-size: 1.04rem; }
.page-shell { width: min(var(--max-width), calc(100% - 48px)); margin: 0 auto; padding: 34px 0 64px; }
.content-section { margin-top: 34px; }
.breadcrumb { display: flex; gap: .55rem; margin-bottom: 18px; color: var(--muted); font-size: .84rem; }
.breadcrumb a { color: var(--muted); text-decoration: none; }
.breadcrumb a:hover { color: var(--primary); }

/* Navigation --------------------------------------------------------------- */
.site-header { position: sticky; z-index: 20; top: 0; border-bottom: 1px solid rgb(255 255 255 / 9%); background: var(--navy-deep); box-shadow: 0 1px 0 rgb(0 0 0 / 12%); }
.site-header-inner { display: flex; width: min(var(--max-width), calc(100% - 48px)); min-height: 68px; margin: 0 auto; align-items: center; gap: 28px; }
.brand { display: inline-flex; flex: none; align-items: center; gap: 9px; color: #fff; font-size: 1rem; font-weight: 760; letter-spacing: -.02em; text-decoration: none; }
.brand:hover { color: #fff; }
.brand-mark, .login-mark { display: grid; width: 30px; height: 30px; place-items: center; border-radius: 9px; color: #062f2b; background: #7ad8ca; font-size: .67rem; font-weight: 900; letter-spacing: -.06em; }
.primary-nav { display: flex; min-width: 0; align-items: center; gap: 3px; }
.nav-link, .my-team-link { padding: 7px 9px; border-radius: 7px; color: #bcc9d9; font-size: .86rem; font-weight: 650; text-decoration: none; white-space: nowrap; }
.nav-link:hover, .my-team-link:hover { color: #fff; background: rgb(255 255 255 / 7%); }
.nav-link.is-active, .my-team-link.is-active { color: #fff; background: rgb(122 216 202 / 16%); }
.account-nav { display: flex; margin-left: auto; align-items: center; gap: 10px; color: #d5dfeb; font-size: .84rem; }
.manager-name { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.commissioner-label { padding: 2px 5px; border: 1px solid rgb(250 201 92 / 30%); border-radius: 4px; color: #f7cd68; font-size: .62rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.text-button { padding: 4px; border: 0; color: #aebdce; background: none; font-size: .8rem; }
.text-button:hover { color: #fff; }
.nav-toggle { display: none; padding: 5px 8px; border: 1px solid #3c516c; border-radius: 6px; color: #e5edf6; background: transparent; font-size: .75rem; font-weight: 700; }

/* Buttons, inputs, badges and messages ------------------------------------ */
.button, button:not(.nav-toggle):not(.text-button) { display: inline-flex; min-height: 38px; align-items: center; justify-content: center; padding: 8px 13px; border: 1px solid var(--primary); border-radius: var(--radius-sm); color: #fff; background: var(--primary); box-shadow: none; font-size: .84rem; font-weight: 760; line-height: 1.1; text-align: center; text-decoration: none; transition: background .14s ease, border-color .14s ease, transform .14s ease; }
.button:hover, button:not(.nav-toggle):not(.text-button):hover { border-color: var(--primary-dark); color: #fff; background: var(--primary-dark); transform: translateY(-1px); }
.button:disabled, button:disabled { cursor: not-allowed; opacity: .5; transform: none; }
.secondary-button, button.secondary-button { border-color: var(--line-strong); color: var(--ink-soft); background: var(--surface); }
.secondary-button:hover, button.secondary-button:hover { border-color: #9baabd; color: var(--ink); background: var(--surface-subtle); }
.danger-button, button.danger-button { border-color: var(--red); background: var(--red); }
.danger-button:hover, button.danger-button:hover { border-color: #8c2929; background: #8c2929; }
.text-danger-button { min-height: 0 !important; padding: 3px 0 !important; border: 0 !important; color: var(--red) !important; background: transparent !important; box-shadow: none !important; font-size: .8rem !important; }
.text-danger-button:hover { text-decoration: underline; transform: none !important; }
input, select { width: 100%; min-height: 39px; padding: 8px 10px; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); outline: none; color: var(--ink); background: var(--surface); }
select[multiple] { min-height: 150px; padding: 6px; }
input:focus, select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgb(8 124 113 / 13%); }
label { display: grid; gap: 6px; color: var(--ink-soft); font-size: .78rem; font-weight: 750; }
.status-badge, .position-badge { display: inline-flex; width: fit-content; align-items: center; justify-content: center; border-radius: 999px; font-size: .67rem; font-weight: 800; letter-spacing: .035em; line-height: 1; white-space: nowrap; }
.status-badge { padding: 5px 7px; color: var(--ink-soft); background: var(--grey-soft); text-transform: uppercase; }
.position-badge { min-width: 25px; padding: 5px 7px; color: #245284; background: var(--blue-soft); }
.position-d { color: #66531c; background: #f8edcf; }
.position-g { color: #5f457f; background: #eee7f6; }
.status-active, .status-open, .status-available, .status-won, .status-accepted, .status-complete { color: #14613f; background: var(--green-soft); }
.status-pending, .status-paused, .status-ready { color: #845800; background: var(--amber-soft); }
.status-locked, .status-bench, .status-owned, .status-preseason, .status-substituted { color: #506074; background: var(--grey-soft); }
.status-lost, .status-invalid, .status-rejected, .status-cancelled, .status-reversed { color: #8b3030; background: var(--red-soft); }
.status-auto-sub { color: #175c8f; background: var(--blue-soft); }
.status-new { color: #0b655b; background: var(--primary-soft); }
.status-returning { color: #506074; background: var(--grey-soft); }
.flash { margin-bottom: 18px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: .88rem; font-weight: 600; background: var(--surface); box-shadow: var(--shadow-sm); }
.flash-success { border-color: #b9dfc8; color: #145c3c; background: #eff9f2; }
.flash-error { border-color: #edc4c3; color: #8b3030; background: #fff3f2; }

/* Shared panels and tables ------------------------------------------------ */
.page-header, .team-hero, .week-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; }
.compact-header { align-items: flex-start; }
.page-header .muted, .team-hero .muted { margin-top: 5px; }
.page-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.section-heading { display: flex; min-height: 33px; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 12px; }
.section-heading .muted, .lineup-note { max-width: 39ch; color: var(--muted); font-size: .82rem; text-align: right; }
.summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 28px; }
.summary-card, .team-stats article, .usage-card, .week-hero article { display: grid; min-height: 112px; align-content: space-between; padding: 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
.summary-card strong, .team-stats strong, .week-hero article strong { overflow: hidden; font-size: 1.22rem; letter-spacing: -.025em; text-overflow: ellipsis; white-space: nowrap; }
.summary-card > span:last-child { color: var(--muted); font-size: .76rem; }
.summary-label, .team-stats article > span, .usage-card > span, .week-hero article > span { color: var(--muted); font-size: .67rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.table-shell { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 12px 14px; border-bottom: 1px solid #e7ebf0; text-align: left; vertical-align: middle; }
th { color: var(--muted); background: var(--surface-subtle); font-size: .68rem; font-weight: 820; letter-spacing: .09em; text-transform: uppercase; white-space: nowrap; }
.sortable-heading { padding: 0; }
.sort-link { display: flex; min-height: 43px; align-items: center; justify-content: flex-end; gap: 5px; padding: 12px 14px; color: var(--muted); text-decoration: none; }
.sort-link:hover, .sort-link.is-active { color: var(--primary-dark); background: #f1f8f7; }
.sort-link span { min-width: 10px; color: var(--primary); font-size: .75rem; text-align: center; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover td { background: #fbfcfd; }
td { font-size: .86rem; }
.numeric { text-align: right; font-variant-numeric: tabular-nums; }
.primary-number { color: var(--ink); font-weight: 800; }
.empty-table { padding: 30px 14px; color: var(--muted); text-align: center; }
.row-actions { display: flex; gap: 9px; font-size: .8rem; white-space: nowrap; }
.team-link { color: var(--ink); font-weight: 760; text-decoration: none; }
.team-link:hover { color: var(--primary); text-decoration: underline; }
.rank-number { display: grid; width: 26px; height: 26px; place-items: center; border-radius: 50%; color: var(--muted); background: var(--surface-subtle); font-size: .75rem; font-weight: 800; }
.top-rank .rank-number { color: #7c5800; background: #fff0c7; }
.rank-1 .rank-number { color: #594000; background: #f8d97b; }
.standings-table .top-rank td:first-child { border-left: 3px solid #d2a62a; }

/* Landing and authentication ------------------------------------------------ */
.welcome-hero { max-width: 660px; padding: 40px 0 31px; }
.welcome-hero h1 { margin-bottom: 12px; font-size: clamp(2.15rem, 4vw, 3.45rem); }
.league-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.league-card { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto 15px; align-items: center; gap: 12px; min-height: 94px; padding: 15px; border: 1px solid var(--line); border-radius: var(--radius); color: var(--ink); background: var(--surface); box-shadow: var(--shadow-sm); text-decoration: none; transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.league-card:hover { border-color: #9ec9c2; color: var(--ink); box-shadow: var(--shadow); transform: translateY(-2px); }
.league-card-icon { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 12px; color: #e4fbf6; background: linear-gradient(145deg, #0e786d, #12425a); font-weight: 850; }
.league-card-body { display: grid; min-width: 0; gap: 2px; }
.league-card-body strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.league-card-body span { color: var(--muted); font-size: .79rem; }
.card-arrow { color: var(--muted); font-size: 1.1rem; }
.empty-state { display: grid; justify-items: center; max-width: 560px; gap: 10px; margin: 48px auto; padding: 38px 24px; border: 1px dashed var(--line-strong); border-radius: var(--radius-lg); color: var(--muted); background: rgb(255 255 255 / 52%); text-align: center; }
.empty-state h1, .empty-state h2, .empty-state h3 { color: var(--ink); }
.error-state { border-style: solid; border-color: #edcccc; }
.login-page { min-height: 100vh; background: linear-gradient(135deg, #eef4f5, #f8f8f5 55%, #e6f0ef); }
.login-page .page-shell { display: grid; min-height: calc(100vh - 68px); place-items: center; padding: 40px 0; }
.login-panel { width: min(100%, 410px); padding: 32px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); box-shadow: 0 22px 60px rgb(15 30 48 / 12%); }
.login-panel .login-mark { width: 42px; height: 42px; margin-bottom: 22px; border-radius: 12px; font-size: .82rem; }
.login-panel h1 { margin-bottom: 6px; }
.stacked-form { display: grid; gap: 15px; margin-top: 25px; }
.stacked-form button { width: 100%; margin-top: 4px; }

/* Filter controls and player pool ----------------------------------------- */
.filter-panel { margin-bottom: 16px; padding: 12px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
.filters { display: flex; flex-wrap: wrap; align-items: end; gap: 8px; }
.filters > label { flex: 0 1 190px; }
.filters .search-field { flex: 1 1 230px; }
.filters button, .filters .button { min-width: max-content; }
.player-pool-table table, .draft-main .table-shell table { min-width: 980px; }
.table-player { display: flex; align-items: center; gap: 9px; }
.player-detail-trigger, .player-name-link { color: var(--ink); font-weight: 700; text-decoration: none; }
.player-detail-trigger:hover, .player-name-link:hover { color: var(--primary-dark); }
.player-detail-trigger:focus-visible, .player-name-link:focus-visible, .player-card-inspect:focus-visible { outline: 3px solid rgb(8 124 113 / 20%); outline-offset: 3px; }
.table-player-name, .draft-player-name { display: flex; align-items: center; gap: 7px; }
.table-player-name { min-width: 0; }
.table-player-name strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.table-player-name .status-badge, .draft-player-name .status-badge { padding: 4px 6px; font-size: .59rem; }
.player-avatar { position: relative; display: grid; width: 58px; height: 58px; flex: none; place-items: center; overflow: hidden; border-radius: 50%; color: #2c5568; background: linear-gradient(145deg, #d5e8ec, #b7ccd8); }
.player-avatar img { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.avatar-fallback { font-size: .82rem; font-weight: 850; letter-spacing: .03em; }
.avatar-sm { width: 32px; height: 32px; }
.avatar-sm .avatar-fallback { font-size: .66rem; }

/* Draft room ---------------------------------------------------------------- */
.draft-clock { display: flex; align-items: stretch; gap: 20px; margin: 25px 0 14px; padding: 18px 21px; border: 1px solid #1c5264; border-radius: var(--radius-lg); color: #e9f5f3; background: linear-gradient(120deg, #0d2b45, #0d5b59); box-shadow: 0 15px 32px rgb(9 36 55 / 16%); }
.clock-round { display: grid; width: 78px; flex: none; place-items: center; align-content: center; border-right: 1px solid rgb(255 255 255 / 18%); text-transform: uppercase; }
.clock-round span { color: #b7dbd4; font-size: .63rem; font-weight: 800; letter-spacing: .1em; }
.clock-round strong { margin: 2px 0; color: #fff; font-size: 1.75rem; line-height: 1; }
.clock-team { flex: 1; align-self: center; }
.clock-team .eyebrow { color: #91ddd1; }
.clock-team h2 { color: #fff; font-size: 1.35rem; }
.clock-team p { margin-top: 3px; color: #c3dfdd; font-size: .84rem; }
.draft-clock > .status-badge { align-self: flex-start; color: #0b6056; background: #adede0; }
.draft-idle { border-color: var(--line-strong); color: var(--ink); background: var(--surface); box-shadow: var(--shadow-sm); }
.draft-idle .clock-round { border-color: var(--line); }
.draft-idle .clock-round span, .draft-idle .clock-team .eyebrow, .draft-idle .clock-team p { color: var(--muted); }
.draft-idle .clock-round strong, .draft-idle .clock-team h2 { color: var(--ink); }
.commissioner-panel { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 22px; padding: 12px 14px; border: 1px solid #e8d7a6; border-radius: var(--radius); background: #fffaf0; }
.commissioner-panel .eyebrow { margin-bottom: 1px; color: #8b6810; }
.commissioner-panel strong { font-size: .88rem; }
.draft-layout { display: grid; grid-template-columns: minmax(0, 1fr) 315px; gap: 20px; }
.draft-main .filter-panel { margin-bottom: 12px; }
.draft-sidebar { display: grid; align-content: start; gap: 12px; }
.side-panel { padding: 15px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
.side-panel .eyebrow { margin-bottom: 3px; }
.side-panel h2 { margin-bottom: 11px; font-size: 1rem; }
.pick-list { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.pick-list li { display: flex; min-height: 39px; align-items: center; gap: 9px; padding: 7px 0; border-top: 1px solid #edf0f3; font-size: .8rem; }
.pick-list li:first-child { border-top: 0; }
.pick-list li > span { width: 27px; color: var(--muted); font-size: .69rem; font-weight: 800; }
.pick-list li div { display: grid; }
.pick-list li small { font-size: .7rem; }
.roster-progress { display: grid; gap: 8px; }
.roster-progress > div { display: grid; gap: 2px; padding-top: 8px; border-top: 1px solid #edf0f3; }
.roster-progress strong { font-size: .8rem; }
.roster-progress span { color: var(--muted); font-size: .72rem; }
.draft-action form { display: flex; justify-content: end; }
.draft-action button { min-height: 31px !important; padding: 6px 9px !important; font-size: .75rem !important; }
.draft-action button.secondary-button { color: var(--ink-soft); border-color: var(--line-strong); background: var(--surface); }

/* Transactions ------------------------------------------------------------- */
.usage-card { min-width: 150px; min-height: 95px; background: linear-gradient(145deg, #eff9f7, #fff); }
.usage-card strong { font-size: 1.55rem; line-height: 1; letter-spacing: -.04em; }
.usage-card small { font-size: .78rem; font-weight: 600; }
.transaction-card { margin-top: 26px; padding: 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
.transaction-form { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) minmax(130px, .58fr) auto; align-items: end; gap: 13px; }
.transaction-form > button { min-width: 116px; }
.trade-form { grid-template-columns: minmax(155px, .65fr) minmax(190px, 1fr) minmax(190px, 1fr) auto; }
.trade-card { margin-bottom: 12px; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
.trade-card-header { display: flex; align-items: start; justify-content: space-between; gap: 14px; padding: 15px 17px 13px; border-bottom: 1px solid #e8edf1; }
.trade-id { color: var(--muted); font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.trade-card h3 { margin-top: 2px; }
.trade-card h3 span { color: var(--primary); }
.trade-sides { display: grid; grid-template-columns: 1fr 34px 1fr; align-items: center; gap: 12px; padding: 15px 17px; }
.trade-sides section { min-height: 82px; padding: 11px; border-radius: var(--radius-sm); background: var(--surface-subtle); }
.trade-side-label { color: var(--muted); font-size: .67rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.trade-sides ul { display: grid; gap: 3px; margin: 7px 0 0; padding: 0; list-style: none; font-size: .84rem; font-weight: 680; }
.trade-exchange { display: grid; width: 30px; height: 30px; place-items: center; border: 1px solid #a8d4cc; border-radius: 50%; color: var(--primary-dark); background: var(--primary-soft); font-size: 1rem; }
.trade-note { margin: 0 17px 13px; padding: 8px 10px; border-left: 3px solid #dfb842; color: #76570c; background: #fffbf0; font-size: .79rem; }
.trade-actions { display: flex; flex-wrap: wrap; gap: 8px; padding: 12px 17px; border-top: 1px solid #e8edf1; background: #fcfdfe; }
.reverse-trade-form { display: flex; flex: 1 1 280px; justify-content: end; gap: 8px; }
.reverse-trade-form input { max-width: 220px; }

/* Team presentation -------------------------------------------------------- */
.team-hero { padding: 5px 0 0; }
.team-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 24px; }
.team-stats article { min-height: 100px; }
.team-stats article small { font-size: .7rem; }
.history-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 14px; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--muted); background: var(--surface); font-size: .78rem; }
.history-strip > span { margin-right: 3px; font-weight: 740; }
.history-strip a { padding: 4px 7px; border-radius: 5px; color: var(--ink-soft); background: var(--grey-soft); font-weight: 700; text-decoration: none; }
.history-strip a:hover { color: var(--primary-dark); background: var(--primary-soft); }
.active-heading, .bench-heading { display: flex; align-items: baseline; gap: 9px; }
.active-heading::before, .bench-heading::before { display: inline-block; width: 4px; height: 20px; border-radius: 2px; content: ""; }
.active-heading::before { background: var(--primary); }
.bench-heading::before { background: #8996a5; }
.active-heading span, .bench-heading span { color: var(--muted); font-size: .7rem; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.fantasy-rink { position: relative; min-height: 495px; overflow-x: auto; padding: 15px; border: 1px solid #c9dde4; border-radius: var(--radius-lg); background: radial-gradient(circle at 18% 36%, transparent 0 39px, #d78b85 40px 42px, transparent 43px), radial-gradient(circle at 82% 36%, transparent 0 39px, #d78b85 40px 42px, transparent 43px), linear-gradient(to bottom, transparent 0 23%, #df9994 23% 23.5%, transparent 23.5% 49%, #b5dce7 49% 50.1%, transparent 50.1% 77%, #df9994 77% 77.5%, transparent 77.5%), #f9fdff; box-shadow: inset 0 0 30px rgb(32 123 156 / 8%); }
.fantasy-rink::before, .fantasy-rink::after { position: absolute; left: 50%; z-index: 0; width: 78px; height: 78px; border: 2px solid #df9994; border-radius: 50%; content: ""; transform: translateX(-50%); }
.fantasy-rink::before { top: 78px; }
.fantasy-rink::after { bottom: 78px; }
.rink-lineup { position: relative; z-index: 1; display: grid; min-width: 760px; min-height: 460px; grid-template-rows: 1.12fr 1fr .85fr; }
.rink-row { display: flex; align-items: center; justify-content: space-around; gap: 8px; }
.rink-defencemen { padding: 0 16%; }
.rink-goalie { padding: 0 39%; }
.rink-player { display: grid; width: 132px; min-width: 118px; justify-items: center; text-align: center; }
.player-figure { --jersey-primary: #53627b; --jersey-secondary: #e7ebf1; position: relative; width: 100px; height: 122px; }
.jersey-body { position: absolute; z-index: 1; bottom: 0; left: 6px; display: grid; width: 88px; height: 75px; place-items: center; color: var(--jersey-secondary); background: linear-gradient(90deg, var(--jersey-primary) 0 31%, var(--jersey-secondary) 31% 39%, var(--jersey-primary) 39% 61%, var(--jersey-secondary) 61% 69%, var(--jersey-primary) 69%); clip-path: polygon(22% 0, 38% 11%, 62% 11%, 78% 0, 100% 23%, 85% 43%, 85% 100%, 15% 100%, 15% 43%, 0 23%); box-shadow: inset 0 0 0 2px rgb(0 0 0 / 13%); }
.jersey-number { margin-top: 20px; color: var(--jersey-secondary); font-size: .73rem; font-weight: 900; text-shadow: 0 1px 1px rgb(0 0 0 / 48%); }
.photo-jersey { position: absolute; z-index: 1; bottom: -2px; left: -5px; width: 110px; height: 108px; object-fit: contain; }
.player-head { position: absolute; z-index: 3; top: 0; left: 20px; width: 60px; height: 60px; border: 3px solid var(--jersey-secondary); border-radius: 50%; box-shadow: 0 2px 5px rgb(15 30 48 / 28%); }
.player-head .player-avatar { width: 100%; height: 100%; }
.rink-player-info { display: grid; width: 100%; justify-items: center; gap: 2px; font-size: .72rem; line-height: 1.2; }
.rink-player-info .player-card-title { justify-content: center; }
.rink-player-info .player-card-title strong { max-width: 102px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rink-player-info .muted { font-size: .66rem; }
.rink-player-info .player-card-points { gap: 9px; font-size: .65rem; }
.player-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; }
.player-card { display: grid; min-width: 0; grid-template-columns: 82px minmax(0, 1fr); gap: 2px; padding: 10px 11px 10px 7px; border: 1px solid #b8dcd6; border-left: 4px solid var(--primary); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
.player-card.bench { border-color: var(--line); border-left-color: #8996a5; background: #fcfdfe; }
.player-card-inspect { display: grid; min-width: 0; grid-column: 1 / -1; grid-template-columns: 82px minmax(0, 1fr); gap: 2px; border-radius: 9px; color: inherit; text-decoration: none; }
.player-card-inspect:hover { color: inherit; background: #f5fbfa; }
.bench .player-card-inspect:hover { background: #f5f7f9; }
.player-card > .swap-form, .player-card > .locked-note { grid-column: 2; }
.roster-avatar { display: grid; align-self: start; justify-items: center; padding-top: 3px; }
.roster-avatar .player-avatar { width: 62px; height: 62px; border: 2px solid #cbe5e1; }
.bench .roster-avatar .player-avatar { border-color: #d6dde5; filter: saturate(.78); }
.player-card .player-figure { align-self: center; transform: scale(.76); transform-origin: center; }
.player-card-body { display: grid; min-width: 0; align-content: start; gap: 4px; padding: 4px 0; }
.player-card-title { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 7px; }
.player-card-title strong { overflow: hidden; font-size: .86rem; text-overflow: ellipsis; white-space: nowrap; }
.player-card-badges { display: inline-flex; flex: none; gap: 4px; }
.player-meta { overflow: hidden; color: var(--muted); font-size: .7rem; text-overflow: ellipsis; white-space: nowrap; }
.player-card-body .muted { font-size: .73rem; }
.player-card-points { display: flex; gap: 13px; margin-top: 2px; color: var(--muted); font-size: .72rem; }
.player-card-points span { display: grid; gap: 1px; }
.player-card-points small { color: var(--muted); font-size: .63rem; }
.player-card-points strong { color: var(--ink); font-size: .82rem; }
.player-card-body > .status-badge { margin-top: 3px; }
.next-opponent { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 6px; margin-top: 3px; padding: 6px 7px; border-radius: 7px; background: var(--surface-subtle); font-size: .68rem; }
.next-opponent > span { color: var(--muted); font-size: .58rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.next-opponent strong { overflow: hidden; font-size: .69rem; text-overflow: ellipsis; white-space: nowrap; }
.next-opponent small { font-size: .61rem; white-space: nowrap; }
.swap-form { display: flex; gap: 5px; margin-top: 5px; }
.swap-form select { min-width: 0; min-height: 30px; padding: 4px; font-size: .68rem; }
.swap-form button { min-height: 30px !important; padding: 5px 8px !important; font-size: .7rem !important; }
.locked-note { margin-top: 3px; color: var(--muted); font-size: .7rem; font-weight: 700; }
.team-brynas { --jersey-primary: #c8102e; --jersey-secondary: #fff; }.team-djurgarden { --jersey-primary: #0b3a72; --jersey-secondary: #e21e2b; }.team-frolunda { --jersey-primary: #d71920; --jersey-secondary: #006b54; }.team-farjestad { --jersey-primary: #006b45; --jersey-secondary: #f4c542; }.team-hv71 { --jersey-primary: #003b79; --jersey-secondary: #f6d343; }.team-linkoping { --jersey-primary: #c8102e; --jersey-secondary: #fff; }.team-lulea { --jersey-primary: #d71920; --jersey-secondary: #111827; }.team-malmo { --jersey-primary: #d71920; --jersey-secondary: #111827; }.team-rogle { --jersey-primary: #006b45; --jersey-secondary: #fff; }.team-skelleftea { --jersey-primary: #f0c300; --jersey-secondary: #1a1a1a; }.team-timra { --jersey-primary: #c8102e; --jersey-secondary: #fff; }.team-vaxjo { --jersey-primary: #063b75; --jersey-secondary: #f39b20; }.team-orebro { --jersey-primary: #c8102e; --jersey-secondary: #111827; }
.week-hero { margin-bottom: 2px; }
.week-hero article { min-width: 150px; min-height: 100px; background: linear-gradient(145deg, #edf8f6, #fff); }
.week-hero article strong { font-size: 1.6rem; }

/* Player details ----------------------------------------------------------- */
body.modal-open { overflow: hidden; }
.player-modal[hidden] { display: none; }
.player-modal { position: fixed; z-index: 100; inset: 0; display: grid; padding: 18px; place-items: center; }
.player-modal-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; min-height: 0 !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: rgb(7 20 35 / 62%) !important; backdrop-filter: blur(3px); transform: none !important; }
.player-modal-panel { position: relative; display: flex; width: min(980px, 100%); max-height: calc(100vh - 36px); flex-direction: column; overflow: hidden; border: 1px solid rgb(255 255 255 / 30%); border-radius: var(--radius-lg); outline: none; background: var(--surface); box-shadow: 0 28px 80px rgb(5 17 31 / 35%); }
.player-modal-chrome { display: flex; min-height: 48px; flex: none; align-items: center; justify-content: space-between; padding: 8px 12px 8px 20px; border-bottom: 1px solid var(--line); color: var(--muted); background: var(--surface-subtle); font-size: .68rem; font-weight: 820; letter-spacing: .09em; text-transform: uppercase; }
.player-modal-close { width: 32px; height: 32px; min-height: 32px !important; padding: 0 !important; border-color: transparent !important; border-radius: 50% !important; color: var(--ink-soft) !important; background: transparent !important; font-size: 1.35rem !important; font-weight: 400 !important; transform: none !important; }
.player-modal-close:hover { background: var(--grey-soft) !important; }
.player-modal-content { overflow-y: auto; overscroll-behavior: contain; }
.player-modal-loading, .player-modal-error { display: grid; min-height: 340px; place-items: center; align-content: center; gap: 14px; padding: 30px; color: var(--muted); text-align: center; }
.player-modal-loading span { width: 30px; height: 30px; border: 3px solid var(--primary-soft); border-top-color: var(--primary); border-radius: 50%; animation: player-detail-spin .8s linear infinite; }
.player-modal-error strong { color: var(--ink); }
@keyframes player-detail-spin { to { transform: rotate(360deg); } }

.player-detail-page { max-width: 980px; margin: 0 auto; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); box-shadow: var(--shadow); }
.player-detail-card { padding: clamp(20px, 4vw, 38px); background: var(--surface); }
.player-detail-header { display: flex; align-items: center; gap: 18px; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
.avatar-xl { width: 88px; height: 88px; border: 3px solid #c7e5e0; box-shadow: 0 8px 20px rgb(15 30 48 / 12%); }
.avatar-xl .avatar-fallback { font-size: 1.2rem; }
.player-detail-identity { display: grid; min-width: 0; justify-items: start; gap: 6px; }
.player-detail-title { display: flex; min-width: 0; align-items: center; gap: 10px; }
.player-detail-title h1 { overflow: hidden; font-size: clamp(1.65rem, 3vw, 2.25rem); text-overflow: ellipsis; white-space: nowrap; }
.player-detail-identity p { color: var(--muted); font-size: .88rem; }
.player-detail-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 22px; }
.player-detail-summary article { display: grid; min-height: 104px; align-content: space-between; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-subtle); }
.player-detail-summary span, .previous-stat-grid span { color: var(--muted); font-size: .65rem; font-weight: 820; letter-spacing: .08em; text-transform: uppercase; }
.player-detail-summary strong { font-size: 1.35rem; letter-spacing: -.03em; }
.player-detail-summary small { font-size: .69rem; }
.player-detail-empty { display: grid; gap: 3px; margin-top: 22px; padding: 22px; border: 1px dashed var(--line-strong); border-radius: var(--radius); color: var(--muted); background: var(--surface-subtle); }
.player-detail-empty strong { color: var(--ink); }
.player-detail-section { margin-top: 26px; }
.player-detail-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 11px; }
.player-detail-section-heading .eyebrow { margin-bottom: 3px; }
.player-detail-section-heading > span { color: var(--muted); font-size: .72rem; text-align: right; }
.player-breakdown-table { box-shadow: none; }
.player-breakdown-table tfoot th, .player-breakdown-table tfoot td { border-top: 2px solid var(--line-strong); border-bottom: 0; background: var(--surface-subtle); }
.category-highlight td:first-child { box-shadow: inset 3px 0 var(--primary); }
.category-label { display: grid; min-width: 150px; gap: 5px; }
.category-label strong { font-size: .82rem; }
.contribution-track { display: block; width: min(170px, 100%); height: 3px; overflow: hidden; border-radius: 99px; background: var(--grey-soft); }
.contribution-track i { display: block; max-width: 100%; height: 100%; border-radius: inherit; background: var(--primary); }
.category-points { font-weight: 800; font-variant-numeric: tabular-nums; }
.player-detail-lower-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.player-detail-lower-grid .player-detail-section { padding: 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-subtle); }
.previous-stat-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.previous-stat-grid > div { display: grid; gap: 3px; }
.previous-stat-grid strong { font-size: 1rem; }
.detail-note { margin-top: 13px; color: var(--muted); font-size: .72rem; }
.inline-empty-state { display: grid; gap: 4px; padding: 14px; border: 1px dashed var(--line-strong); border-radius: var(--radius-sm); color: var(--muted); font-size: .78rem; }
.inline-empty-state strong { color: var(--ink); }
.hockey-stat-list { display: grid; gap: 0; margin: 0; }
.hockey-stat-list > div { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 8px 0; border-bottom: 1px solid var(--line); }
.hockey-stat-list > div:last-child { border-bottom: 0; }
.hockey-stat-list dt { color: var(--muted); font-size: .76rem; }
.hockey-stat-list dd { margin: 0; font-weight: 800; }

/* Phone-only controls are hidden at desktop widths. */
.mobile-sort, .draft-mobile-tabs, .mobile-logout { display: none; }
[hidden] { display: none !important; }
.shortlist-control { display: flex; align-items: center; gap: 9px; padding: 8px 0; }
.shortlist-control input { width: 20px; height: 20px; min-height: 0; accent-color: var(--primary); }
.draft-sync { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.draft-confirm { width: min(440px, calc(100% - 28px)); padding: 24px; border: 1px solid var(--line); border-radius: var(--radius-lg); color: var(--ink); box-shadow: var(--shadow); }
.draft-confirm::backdrop { background: rgb(7 20 35 / 62%); }
.draft-confirm p:not(.eyebrow) { margin: 16px 0 24px; overflow-wrap: anywhere; }
.draft-confirm .page-actions { display: grid; grid-template-columns: 1fr 1fr; }
:focus-visible { outline: 3px solid #3aafa1; outline-offset: 3px; }

/* Responsive ---------------------------------------------------------------- */
@media (max-width: 1080px) {
  .summary-grid, .team-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .player-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .draft-layout { grid-template-columns: minmax(0, 1fr) 280px; }
  .transaction-form, .trade-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
  .site-header { position: relative; }
  .site-header-inner { width: min(100% - 28px, var(--max-width)); min-height: 59px; flex-wrap: wrap; gap: 12px; }
  .nav-toggle { display: inline-flex; margin-left: auto; }
  .primary-nav { display: none; order: 4; width: 100%; padding: 0 0 10px; flex-wrap: wrap; }
  .primary-nav.is-open { display: flex; }
  .account-nav { margin-left: 0; }
  .manager-name, .account-nav form { display: none; }
  .page-shell { width: min(100% - 28px, var(--max-width)); padding-top: 27px; }
  .draft-layout { grid-template-columns: 1fr; }
  .draft-sidebar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .team-hero, .page-header, .week-hero { align-items: flex-start; flex-direction: column; }
  .section-heading { align-items: flex-start; flex-direction: column; gap: 6px; }
  .section-heading .muted, .lineup-note { text-align: left; }
}
@media (max-width: 620px) {
  body { font-size: 14px; }
  .page-shell { padding-bottom: 38px; }
  .summary-grid, .team-stats, .player-card-grid, .draft-sidebar { grid-template-columns: 1fr; }
  .summary-card, .team-stats article { min-height: 88px; }
  .filters, .transaction-form, .trade-form { display: grid; grid-template-columns: 1fr; }
  .filters > label { min-width: 0; }
  .filters button, .filters .button, .transaction-form > button { width: 100%; }
  .draft-clock { gap: 12px; padding: 15px; }
  .clock-round { width: 62px; }
  .clock-team h2 { font-size: 1.1rem; }
  .commissioner-panel { align-items: flex-start; flex-direction: column; }
  .commissioner-panel .page-actions { width: 100%; }
  .commissioner-panel form, .commissioner-panel button { flex: 1; width: 100%; }
  .trade-sides { grid-template-columns: 1fr; }
  .trade-exchange { justify-self: center; transform: rotate(90deg); }
  .trade-actions, .reverse-trade-form { align-items: stretch; flex-direction: column; }
  .reverse-trade-form input { max-width: none; }
  .usage-card { width: 100%; }
  th, td { padding: 11px 12px; }
  .player-pool-table th:nth-child(2), .player-pool-table td:nth-child(2) { display: none; }
  .fantasy-rink { padding: 10px; border-radius: var(--radius); }
  .rink-lineup { min-width: 710px; }
  .player-modal { padding: 8px; }
  .player-modal-panel { max-height: calc(100vh - 16px); border-radius: var(--radius); }
  .player-detail-card { padding: 18px 14px 24px; }
  .player-detail-header { align-items: flex-start; gap: 12px; }
  .avatar-xl { width: 68px; height: 68px; }
  .player-detail-title { align-items: flex-start; flex-direction: column; gap: 5px; }
  .player-detail-title h1 { max-width: calc(100vw - 130px); font-size: 1.35rem; }
  .player-detail-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .player-detail-section-heading { align-items: flex-start; flex-direction: column; gap: 4px; }
  .player-detail-section-heading > span { text-align: left; }
  .player-detail-lower-grid { grid-template-columns: 1fr; }
  .previous-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Phone/tablet portrait: keep the desktop table, reflow its rows into cards. */
@media (max-width: 820px) {
  .page-shell, .draft-main, .draft-sidebar { min-width: 0; }
  .site-header-inner { padding: 8px 0; gap: 8px; }
  .nav-toggle { display: none; }
  .account-nav { margin-left: auto; }
  .primary-nav { display: flex; flex-wrap: nowrap; overflow-x: auto; padding: 0; gap: 4px; scrollbar-width: thin; }
  .nav-link, .my-team-link { display: inline-flex; align-items: center; min-height: 44px; padding: 10px 12px; }
  .mobile-logout { display: flex; flex: none; margin-left: auto; }
  .mobile-logout .text-button { min-height: 44px; padding: 10px 12px; }
  .breadcrumb { flex-wrap: wrap; overflow-wrap: anywhere; }
  .page-header h1, .team-hero h1 { overflow-wrap: anywhere; }
  input:not([type=checkbox]):not([type=hidden]), select, textarea { min-height: 44px; font-size: 16px; }
  button:not(.nav-toggle):not(.text-button), .button { min-height: 44px; }
  .draft-action button, .swap-form button { min-height: 44px !important; font-size: .875rem !important; padding: 10px 14px !important; }
  .swap-form { flex-wrap: wrap; }
  .swap-form select { flex: 1 1 150px; min-height: 44px; font-size: 16px; }
  .player-card > .swap-form { grid-column: 1 / -1; }
  .summary-grid, .team-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .summary-card, .team-stats article { min-height: 92px; padding: 12px; }
  .summary-card strong, .team-stats strong { font-size: 1.05rem; white-space: normal; overflow-wrap: anywhere; }
  .filters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .filters > label { min-width: 0; }
  .filters .search-field { grid-column: 1 / -1; }
  .filters button { width: 100%; }
  .draft-clock { position: sticky; top: 0; z-index: 15; gap: 12px; padding: 12px; margin-top: 12px; }
  .clock-team { min-width: 0; }
  .clock-team h2 { overflow-wrap: anywhere; font-size: 1.1rem; }
  .clock-team p { display: none; }
  .clock-round { width: 70px; }
  .draft-idle .clock-round { width: auto; padding-right: 12px; }
  .draft-idle .clock-round strong { font-size: .8rem; }
  .draft-clock > .status-badge { display: none; }
  .draft-sync { font-size: .78rem; }
  .draft-mobile-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin: 12px 0 18px; padding: 4px; border-radius: 12px; background: var(--grey-soft); }
  .draft-mobile-tabs button { border-color: transparent !important; color: var(--ink-soft) !important; background: transparent !important; }
  .draft-mobile-tabs button[aria-pressed=true] { color: var(--primary-dark) !important; background: var(--surface) !important; box-shadow: var(--shadow-sm); }
  .draft-layout[data-draft-pane=players] .draft-sidebar, .draft-layout[data-draft-pane=picks] .draft-main { display: none; }
  .draft-sidebar { grid-template-columns: 1fr; }
  .mobile-sort { display: flex; align-items: center; gap: 6px; margin: 12px 0; font-size: .78rem; }
  .mobile-sort .sort-link { min-height: 44px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); font-size: .82rem; font-weight: 750; }
  .mobile-sort .sort-link.is-active { border-color: var(--primary); background: var(--primary-soft); }
  .scouting-table { overflow: visible; border: 0; border-radius: 0; background: none; box-shadow: none; }
  .scouting-table table, .draft-main .scouting-table table { display: block; min-width: 0; }
  .scouting-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .scouting-table tbody { display: grid; gap: 12px; }
  .scouting-table tr { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: 8px 4px; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
  .scouting-table td, .scouting-table tbody tr:hover td { display: block; min-width: 0; padding: 0; border: 0; background: transparent; }
  .scouting-table td[data-cell=name] { grid-column: span 8; order: 0; }
  .scouting-table td[data-cell=position] { grid-column: span 2; order: 0; text-align: right; }
  .scouting-table td[data-cell=team] { display: block; grid-column: 1 / -1; order: 1; font-size: .8rem; }
  .scouting-table .table-player-name { align-items: flex-start; flex-direction: column; gap: 5px; }
  .scouting-table .table-player-name strong { font-size: .98rem; white-space: normal; overflow-wrap: anywhere; }
  .scouting-table td[data-label] { display: grid; grid-column: span 2; order: 3; gap: 3px; text-align: left; font-size: .86rem; }
  .scouting-table td[data-label]::before { content: attr(data-label); color: var(--muted); font-size: .62rem; font-weight: 700; }
  .scouting-table td[data-cell=total], .scouting-table td[data-cell=ppg] { grid-column: span 5; order: 2; margin: 4px 0; padding: 9px 11px; border-radius: 8px; background: var(--surface-subtle); font-size: 1.18rem; font-weight: 800; }
  .scouting-table td[data-cell=actions] { display: flex; grid-column: 1 / -1; order: 4; flex-wrap: wrap; gap: 8px; padding-top: 8px; border-top: 1px solid var(--line); }
  .scouting-table .draft-action form { flex: 1; }
  .scouting-table .draft-action button { width: 100%; }
  .scouting-table .draft-action button.secondary-button, .draft-confirm button.secondary-button { color: var(--ink-soft); border-color: var(--line-strong); background: var(--surface); }
  .scouting-table td.empty-table { grid-column: 1 / -1; padding: 16px; }
  .scouting-table .status-owned { max-width: 100%; white-space: normal; line-height: 1.4; text-align: left; }
  .player-modal { padding: 0; align-items: end; }
  .player-modal-panel { width: 100%; max-height: 94vh; max-height: 94dvh; border-radius: 18px 18px 0 0; padding-bottom: env(safe-area-inset-bottom); }
  .player-modal-close { width: 44px; height: 44px; min-height: 44px !important; }
  .player-detail-title h1 { white-space: normal; overflow-wrap: anywhere; }
  .player-card-title strong, .player-meta, .next-opponent strong { white-space: normal; overflow-wrap: anywhere; }
  .history-strip a { min-height: 44px; display: inline-flex; align-items: center; }
  .row-actions a { display: inline-flex; align-items: center; min-height: 44px; }
  .table-shell:not(.scouting-table) { overscroll-behavior-x: contain; }
  .page-shell { padding-bottom: max(38px, env(safe-area-inset-bottom)); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
