:root{
  --ink:#060a17;
  --ink-2:#0d1730;
  --ink-3:#16234a;
  --line:rgba(201,212,227,.12);
  --steel:#c9d4e3;
  --steel-dim:#8a97ac;
  --paper:#f4f6f9;
  --floodlight:#2a5eff;
  --floodlight-dim:rgba(42,94,255,.35);
  --royal:#0e2a8f;
  --gold:#d9b46a;
  --magenta:#ff4fd8;
  --radius:14px;
  --display:'Big Shoulders Display',sans-serif;
  --body:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
  --mono:'JetBrains Mono',monospace;
  --content-width:1180px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:var(--ink);color:var(--paper);font-family:var(--body);-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;}
img{max-width:100%;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
::selection{background:var(--floodlight);color:#fff;}
:focus-visible{outline:2px solid var(--floodlight);outline-offset:3px;}
.brand-topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;padding:18px clamp(20px,5vw,64px);background:rgba(10,16,28,.82);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);}
.brand-wordmark{display:flex;align-items:center;gap:12px;}
.brand-wordmark img{display:block;width:clamp(78px,9vw,104px);height:auto;}
.brand-wordmark small{font-family:var(--mono);font-size:10px;font-weight:500;color:var(--steel-dim);letter-spacing:.18em;text-transform:uppercase;}
.brand-pill{display:inline-flex;align-items:center;gap:7px;border:1px solid rgba(217,180,106,.35);border-radius:999px;padding:6px 10px;color:var(--gold);font:500 10px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;}
.brand-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:12px 18px;border:1px solid var(--floodlight);border-radius:999px;background:var(--floodlight);color:#fff;font-weight:700;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;}
.brand-button:hover{transform:translateY(-1px);box-shadow:0 10px 28px rgba(42,94,255,.3);}
.favorite-btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--steel);padding:9px 12px;cursor:pointer;font-size:11px;font-weight:600;}
.favorite-btn[aria-pressed="true"]{border-color:var(--gold);color:var(--gold);background:rgba(217,180,106,.1);}

/* Article detail: the same night-stadium shell with a paper editorial centre. */
.article-page{min-height:100vh;background:radial-gradient(ellipse 80% 35% at 50% -10%,rgba(42,94,255,.22),transparent 65%),var(--ink);}
.article-shell{width:min(100% - 32px,980px);margin:0 auto;padding:54px 0 80px;}
.article-back{display:inline-flex;margin-bottom:28px;color:var(--steel-dim);font:500 11px var(--mono);letter-spacing:.05em;}
.article-paper{position:relative;overflow:hidden;background:#e9e6df;color:#0b1120;border-radius:2px;box-shadow:10px 10px 0 var(--floodlight);}
.article-paper::before{content:"";position:absolute;inset:0 0 auto;height:7px;background:linear-gradient(90deg,var(--floodlight),var(--magenta),var(--gold));}
.article-header{padding:clamp(34px,7vw,72px) clamp(24px,7vw,76px) 34px;border-bottom:1px solid #b6b4ae;}
.article-kicker{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px;color:#1458ff;font:700 10px var(--mono);letter-spacing:.16em;text-transform:uppercase;}
.article-title{margin:0;font:900 clamp(46px,8vw,86px)/.93 var(--display);letter-spacing:-.035em;}
.article-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:28px;}
.article-actions .favorite-btn{color:#0b1120;border-color:#8c8b87;background:transparent;}
.article-meta{display:flex;flex-wrap:wrap;gap:16px;margin-top:22px;color:#626a77;font:500 10px var(--mono);}
.article-body{max-width:720px;margin:0 auto;padding:clamp(38px,7vw,74px) 24px 70px;font-family:"Noto Sans JP",var(--body);font-size:17px;line-height:2;}
.article-body p{margin:0 0 1.75em;}
.article-body h2{margin:2.1em 0 .7em;font:900 35px/1.05 var(--display);letter-spacing:-.015em;}
.article-body blockquote{margin:2em 0;padding:22px 24px;border-left:4px solid var(--floodlight);background:rgba(42,94,255,.07);font-weight:700;}
.article-body ul,.article-body ol{margin:0 0 1.8em;padding-left:1.5em;}
.article-body li+li{margin-top:.45em;}
.article-table-wrap{max-width:100%;margin:2em 0;overflow-x:auto;}
.article-table-wrap table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.5;}
.article-table-wrap th,.article-table-wrap td{padding:12px 14px;border-bottom:1px solid #c2c0ba;text-align:left;white-space:nowrap;}
.article-table-wrap th{background:rgba(42,94,255,.07);font-weight:700;}
.article-sources{margin-top:44px;padding-top:24px;border-top:1px solid #c2c0ba;}
.article-sources h2{font-size:24px;margin-top:0;}
.article-sources a{color:#1458ff;text-decoration:underline;text-underline-offset:3px;}
.article-scoreboard{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;margin:34px 0;padding:24px;border:1px solid #c2c0ba;text-align:center;}
.article-scoreboard strong{font:900 38px var(--display);}
.article-state{padding:70px 28px;text-align:center;}
.article-state h1{font:900 48px var(--display);margin:0 0 12px;}
.article-state p{color:var(--steel-dim);line-height:1.7;}
.brand-footer{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;width:min(100% - 40px,var(--content-width));margin:0 auto;padding:36px 0 56px;color:var(--steel-dim);font:11px var(--mono);}
@media(max-width:640px){
  .brand-topbar{padding:16px 20px;}
  .article-shell{width:min(100% - 28px,980px);padding:30px 0 56px;}
  .article-paper{box-shadow:6px 7px 0 var(--floodlight);}
  .article-header{padding:36px 22px 28px;}
  .article-title{font-size:48px;}
  .article-kicker{align-items:flex-start;flex-direction:column;gap:8px;}
  .article-body{font-size:16px;padding-inline:22px;}
}
@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;}}

/* Match detail: a deliberately utilitarian match room inside the AM4 night shell. */
.match-page{min-height:100vh;background:radial-gradient(ellipse 72% 34% at 50% -7%,rgba(42,94,255,.28),transparent 66%),var(--ink);}
.match-shell{width:min(100% - 28px,1040px);margin:0 auto;padding:30px 0 76px;}
.match-back{display:inline-flex;margin:0 0 22px;color:var(--steel-dim);font:500 11px var(--mono);letter-spacing:.05em;}
.match-page-state{display:grid;place-items:center;min-height:330px;padding:34px;text-align:center;border:1px solid var(--line);border-radius:var(--radius);background:rgba(13,23,48,.62);}
.match-page-state h1{margin:0;font:900 clamp(38px,8vw,58px)/.95 var(--display);}
.match-page-state p{max-width:420px;margin:15px 0 22px;color:var(--steel-dim);line-height:1.75;}
.match-board{overflow:hidden;border:1px solid rgba(151,177,232,.2);border-radius:20px;background:linear-gradient(135deg,rgba(22,35,74,.96),rgba(6,10,23,.98));box-shadow:0 20px 55px rgba(0,0,0,.25);}
.match-competition{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line);color:#e5edff;font:700 12px var(--body);}
.match-competition img{width:32px;height:32px;object-fit:contain;}
.match-competition small{margin-left:auto;color:var(--steel-dim);font:500 9px var(--mono);letter-spacing:.04em;}
.match-meta{margin:0;padding:14px 18px 0;color:var(--steel-dim);text-align:center;font:500 10px/1.6 var(--mono);}
.match-live-refresh{width:max-content;max-width:calc(100% - 36px);margin:10px auto -6px;padding:6px 10px;border:1px solid rgba(93,166,255,.42);border-radius:999px;background:rgba(36,92,214,.12);color:#b7d0ff;font:600 9px var(--mono);letter-spacing:.08em;text-align:center;}
.match-score-grid{display:grid;grid-template-columns:minmax(0,1fr) 88px minmax(0,1fr);align-items:center;gap:8px;padding:24px 14px 20px;text-align:center;}
.match-team{display:grid;justify-items:center;align-content:start;gap:9px;min-width:0;}
.match-team h1{min-height:2.4em;margin:0;color:#f6f8ff;font:800 clamp(17px,4.5vw,28px)/1.08 var(--display);letter-spacing:.01em;overflow-wrap:anywhere;}
.match-team .favorite-btn{max-width:100%;padding:7px 9px;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.match-crest{display:grid;place-items:center;width:68px;height:68px;}
.match-crest img,.match-crest-fallback{width:68px;height:68px;object-fit:contain;}
.match-crest-fallback{display:grid;place-items:center;border:1px solid rgba(201,212,227,.26);border-radius:50%;background:var(--ink-3);color:var(--steel);font:700 12px var(--mono);}
.match-score{display:grid;justify-items:center;gap:5px;min-width:0;}
.match-score strong{font:900 clamp(31px,9vw,56px)/.8 var(--display);white-space:nowrap;}
.match-score span{color:var(--gold);font:500 9px var(--mono);letter-spacing:.12em;}
.match-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;border-top:1px solid var(--line);}.match-fact{min-width:0;text-align:center;}
.match-facts dt{padding:11px 8px 3px;color:var(--steel-dim);font:500 8px var(--mono);letter-spacing:.08em;text-align:center;}
.match-facts dd{min-width:0;margin:0;padding:0 8px 13px;overflow-wrap:anywhere;color:#e7edf9;font-size:11px;line-height:1.35;text-align:center;}
.match-anchor-nav{position:sticky;top:74px;z-index:10;display:flex;overflow-x:auto;margin:18px 0;border:1px solid var(--line);border-radius:999px;background:rgba(6,10,23,.92);backdrop-filter:blur(12px);}
.match-anchor-nav a{flex:1;padding:12px 14px;color:var(--steel-dim);font:600 10px var(--mono);letter-spacing:.04em;text-align:center;white-space:nowrap;}
.match-anchor-nav a:hover{color:#fff;background:rgba(42,94,255,.14);}
.match-section{scroll-margin-top:140px;margin-top:18px;padding:22px 16px;border:1px solid var(--line);border-radius:16px;background:rgba(13,23,48,.58);}
.match-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:15px;margin-bottom:18px;}
.match-section h2{margin:0;color:#fff;font:900 31px/.95 var(--display);letter-spacing:.02em;}
.match-section-head p{margin:0;color:var(--steel-dim);font:500 9px var(--mono);text-align:right;}
.match-overview-copy,.match-empty,.match-unavailable{margin:0;color:var(--steel-dim);font-size:13px;line-height:1.75;}
.match-unavailable{padding:16px;border-left:3px solid var(--gold);background:rgba(217,180,106,.07);color:#d8c291;}
.match-timeline-teams{display:grid;grid-template-columns:minmax(0,1fr) 52px minmax(0,1fr);gap:10px;align-items:end;margin:0 0 9px;padding-bottom:8px;border-bottom:1px solid rgba(201,212,227,.13);}.match-timeline-team{display:grid;gap:3px;min-width:0;}.match-timeline-team b,.match-timeline-axis{color:var(--steel-dim);font:600 8px var(--mono);letter-spacing:.1em;}.match-timeline-team strong{overflow:hidden;color:#eaf0ff;font-size:11px;text-overflow:ellipsis;white-space:nowrap;}.match-timeline-team--home{text-align:right;}.match-timeline-team--away{text-align:left;}.match-timeline-axis{align-self:center;text-align:center;line-height:1.2;}
.match-timeline{display:grid;gap:10px;margin:0;padding:0;list-style:none;}
.match-event{display:grid;grid-template-columns:minmax(0,1fr) 52px minmax(0,1fr);gap:10px;align-items:stretch;position:relative;min-height:82px;}.match-event::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:rgba(201,212,227,.17);transform:translateX(-50%);}.match-event::after{content:"";position:absolute;top:50%;left:50%;width:8px;height:8px;border:2px solid var(--ink-2);border-radius:50%;background:var(--floodlight);transform:translate(-50%,-50%);z-index:1;}
.match-event--goal::after{background:var(--gold);}.match-event--card::after{background:#e6be34;}.match-event--red-card::after{background:#e34a4a;}.match-event--sub::after{background:#5fc99a;}
.match-event-minute{z-index:2;align-self:center;justify-self:center;padding:5px 3px;color:#c8d7ff;background:var(--ink-2);font:700 10px var(--mono);letter-spacing:-.04em;}.match-event-spacer{min-width:0;}
.match-event-body{display:grid;align-content:center;gap:5px;min-width:0;padding:12px 13px;border:1px solid rgba(201,212,227,.13);border-radius:11px;background:linear-gradient(135deg,rgba(255,255,255,.05),rgba(255,255,255,.018));}.match-event--home .match-event-body{text-align:right;border-right:3px solid var(--floodlight);}.match-event--away .match-event-body{text-align:left;border-left:3px solid var(--floodlight);}.match-event--goal .match-event-body{border-color:rgba(217,180,106,.38);}.match-event--goal.match-event--home .match-event-body{border-right-color:var(--gold);}.match-event--goal.match-event--away .match-event-body{border-left-color:var(--gold);}.match-event--card.match-event--home .match-event-body{border-right-color:#e6be34;}.match-event--card.match-event--away .match-event-body{border-left-color:#e6be34;}.match-event--red-card.match-event--home .match-event-body{border-right-color:#e34a4a;}.match-event--red-card.match-event--away .match-event-body{border-left-color:#e34a4a;}.match-event--sub.match-event--home .match-event-body{border-right-color:#5fc99a;}.match-event--sub.match-event--away .match-event-body{border-left-color:#5fc99a;}
.match-event-type{color:var(--gold);font:700 9px var(--mono);letter-spacing:.1em;}.match-event--card .match-event-type{color:#f1cb42;}.match-event--red-card .match-event-type{color:#ff7676;}.match-event--sub .match-event-type{color:#70daad;}.match-event-player{display:flex;align-items:center;gap:8px;min-width:0;}.match-event--home .match-event-player{justify-content:flex-end;}.match-event-player-name{overflow:hidden;color:#f4f7ff;font-size:13px;font-weight:700;text-overflow:ellipsis;white-space:nowrap;}.match-event-photo{flex:0 0 34px;width:34px;height:34px;border:1px solid rgba(201,212,227,.25);border-radius:50%;object-fit:cover;}.match-event--home .match-event-photo{order:2;}.match-event-body p{margin:0;color:var(--steel-dim);font-size:11px;line-height:1.4;overflow-wrap:anywhere;}.match-event--neutral .match-event-body{grid-column:1;}
.lineup-grid{display:grid;gap:12px;}.lineup-card{padding:14px;border:1px solid rgba(201,212,227,.11);border-radius:12px;background:rgba(3,7,16,.36);}.lineup-card-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline;}.lineup-card h3{margin:0;color:#fff;font:700 17px var(--display);letter-spacing:.02em;}.lineup-card-head span{color:var(--gold);font:600 10px var(--mono);}.lineup-coach{margin:5px 0 16px;color:var(--steel-dim);font-size:11px;}.lineup-card h4{margin:15px 0 7px;color:#b8c8e5;font:600 9px var(--mono);letter-spacing:.08em;}.lineup-list{display:grid;gap:2px;margin:0;padding:0;list-style:none;}.lineup-player{display:grid;grid-template-columns:24px minmax(0,1fr) 26px;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid rgba(201,212,227,.08);font-size:12px;}.lineup-number{color:var(--gold);font:600 10px var(--mono);}.lineup-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.lineup-player small{color:var(--steel-dim);font:9px var(--mono);text-align:right;}.lineup-list--subs{opacity:.8;}
.match-stats{display:grid;gap:5px;}.match-stats-clubs,.match-stat-row{display:grid;grid-template-columns:minmax(52px,1fr) minmax(96px,1.4fr) minmax(52px,1fr);gap:8px;align-items:center;text-align:center;}.match-stats-clubs{padding:0 0 8px;color:var(--steel-dim);font:600 9px var(--mono);}.match-stats-clubs span:first-child{text-align:left;}.match-stats-clubs span:last-child{text-align:right;}.match-stat-row{padding:11px 8px;border:1px solid rgba(201,212,227,.1);border-radius:9px;background:rgba(255,255,255,.025);}.match-stat-row strong{font:700 15px var(--display);}.match-stat-row strong:first-child{text-align:left;}.match-stat-row strong:last-child{text-align:right;}.match-stat-row span{color:var(--steel-dim);font-size:10px;line-height:1.25;}
.match-stat-metric{display:grid;justify-items:center;gap:6px;min-width:0;}.match-stat-metric>span{color:var(--steel-dim);font-size:10px;line-height:1.25;}.match-stat-bars{display:flex;overflow:hidden;width:100%;height:3px;border-radius:999px;background:rgba(201,212,227,.14);}.match-stat-bar{display:block;min-width:0;height:100%;}.match-stat-bar--home{background:#6c91ff;}.match-stat-bar--away{background:var(--gold);}
@media(min-width:700px){.match-shell{padding-top:46px;}.match-board{border-radius:24px;}.match-competition{padding:18px 28px;}.match-meta{padding-top:20px;}.match-score-grid{grid-template-columns:minmax(0,1fr) 150px minmax(0,1fr);gap:30px;padding:36px 48px 30px;}.match-team h1{font-size:34px;}.match-crest,.match-crest img,.match-crest-fallback{width:92px;height:92px;}.match-facts dt{padding-top:15px;}.match-facts dd{padding-bottom:16px;}.match-section{padding:28px;}.lineup-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.match-anchor-nav{top:82px;}.match-anchor-nav a{padding:14px 20px;}.match-timeline-teams{grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);}.match-event{grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);min-height:88px;}.match-event-minute{font-size:11px;}.match-event-body{padding:14px 16px;}.match-event-player-name{font-size:14px;}}
@media(max-width:390px){.match-timeline-teams{grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);gap:6px;}.match-timeline-team strong{font-size:10px;}.match-timeline-axis{font-size:7px;}.match-event{grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);gap:6px;min-height:76px;}.match-event-body{padding:10px 8px;}.match-event-player{gap:5px;}.match-event-player-name{font-size:11px;}.match-event-photo{flex-basis:28px;width:28px;height:28px;}.match-event-type{font-size:8px;}.match-event-body p{font-size:10px;}.match-event-minute{font-size:9px;}}
@media(max-width:360px){.match-score-grid{grid-template-columns:minmax(0,1fr) 70px minmax(0,1fr);padding-inline:8px;}.match-team h1{font-size:16px;}.match-crest,.match-crest img,.match-crest-fallback{width:56px;height:56px;}.match-facts dd{font-size:10px;}}
