:root{color-scheme:dark;--bg:#080d18;--panel:#121b2d;--line:#26344d;--text:#e7edf9;--muted:#99aac5;--blue:#2878ef;--gold:#f0c575;--green:#64dba9;--red:#eb8a95;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:15px}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 40% 0,#15223c 0,transparent 47%),var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.nav{min-height:72px;padding:16px 4vw;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);background:#090e1add}.brand{font-weight:900;letter-spacing:-1px;font-size:24px}.brand span{color:var(--blue)}.nav>div{display:flex;gap:25px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.nav .active{color:white}.nav a:hover{color:var(--gold)}main{max-width:1920px;margin:auto;padding:42px 4vw 72px;min-height:78vh}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:11px;font-weight:750;color:var(--gold);margin:0 0 12px}h1{font-size:clamp(28px,3.3vw,48px);line-height:1.13;letter-spacing:-1.4px;margin:0 0 12px}h2{font-size:21px;letter-spacing:-.3px}p{line-height:1.6}.muted{color:var(--muted)}.hero{display:flex;justify-content:space-between;align-items:center;gap:30px;margin-bottom:28px}.hero-copy{max-width:800px}.hero-copy>p{margin-bottom:0}.crest{width:84px;height:92px;object-fit:contain}.hero-brand{display:flex;align-items:center;gap:24px}.back{display:inline-block;color:var(--muted);font-size:13px;margin-bottom:24px}.badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.badge{border:1px solid var(--line);border-radius:5px;padding:5px 9px;font-size:11px;color:var(--muted);background:#10192a}.badge.complete{color:var(--green);border-color:#265947}.champion{min-width:235px;border:1px solid #695333;border-radius:10px;background:linear-gradient(135deg,#332b1c66,#0e1729);padding:21px 25px}.crown{color:var(--gold);font-size:20px;line-height:1}.champion strong{font-size:23px;display:block;margin:7px 0}.champion p{font-size:11px;color:var(--muted);margin:0}.champion .label{color:var(--gold);text-transform:uppercase;letter-spacing:1.5px;font-size:10px}.summary{display:flex;gap:32px;margin:28px 0;padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.summary strong{font-size:25px;display:block}.summary span{font-size:12px;color:var(--muted)}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:26px 0 14px}.tabs{display:flex;gap:3px;background:#111b2d;padding:4px;border-radius:7px;margin-right:auto}.tabs button,.tool{border:1px solid transparent;border-radius:5px;padding:9px 13px;background:transparent;color:var(--muted);font-size:13px}.tabs button.selected{background:#273a58;color:white}.tool{border-color:var(--line);color:var(--text);background:#111a2b}select,input{border:1px solid var(--line);border-radius:5px;padding:10px 12px;color:var(--text);background:#101929;max-width:240px;font-size:13px}.caption{font-size:12px;color:var(--muted);margin:0 0 18px;line-height:1.6}.board-viewport{overflow:auto;padding:4px 4px 24px;border:1px solid #26344d66;border-radius:10px;background:#070d17;scrollbar-color:#385275 #0c1422;max-height:1050px}.board{display:flex;gap:28px;padding:22px 18px;align-items:flex-start;width:max-content;min-width:100%}.phase{width:254px;flex:none}.phase-title{text-transform:uppercase;font-size:11px;letter-spacing:1.7px;color:var(--muted);margin:0 0 18px;padding-bottom:10px;border-bottom:1px solid var(--line)}.group{margin-bottom:24px}.group-title{font-size:12px;letter-spacing:.6px;background:#175bbb;color:#fff;padding:8px 12px;border-radius:5px 5px 0 0;margin:0 0 8px;display:flex;justify-content:space-between}.group-title span{opacity:.7;font-size:10px;letter-spacing:0}.match{display:block;position:relative;width:100%;padding:0;border:1px solid var(--line);background:var(--panel);color:var(--text);text-align:left;margin:0 0 11px;border-radius:6px;overflow:hidden;transition:border-color .15s,opacity .15s,transform .15s}.match:hover{border-color:#6b8ec6;transform:translateY(-1px)}.match.selected{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}.match.dim{opacity:.23}.match-head{padding:7px 10px;background:#0e1626;color:var(--muted);font-size:10px;display:flex;justify-content:space-between;gap:8px}.player{display:grid;grid-template-columns:27px 1fr 32px;gap:8px;align-items:center;padding:9px 10px;min-height:51px}.player+.player{border-top:1px solid #ffffff0b}.class-icon{width:26px;height:26px;border-radius:4px;object-fit:cover;box-shadow:0 0 0 1px #ffffff20}.player-name{font-size:12px;font-weight:650;white-space:nowrap}.player-meta{font-size:9px;color:var(--muted);margin-top:3px;display:block}.player .crown{font-size:12px;margin-left:4px}.score{font-weight:800;text-align:right;font-size:12px}.winner .score{color:var(--green)}.loser .score{color:var(--red)}.pending .score{color:var(--muted)}.match-foot{font-size:9px;padding:6px 10px;color:var(--gold);border-top:1px solid #ffffff0a;background:#c99f2f08}.board small{font-size:10px}.stats-wrap{overflow:auto;border:1px solid var(--line);border-radius:8px}.stats{width:100%;border-collapse:collapse;font-size:13px}.stats th,.stats td{text-align:left;padding:13px 16px;border-bottom:1px solid #ffffff0a;white-space:nowrap}.stats th{font-size:10px;letter-spacing:1px;text-transform:uppercase;background:#152139;color:var(--muted)}.stats td:first-child{display:flex;align-items:center;gap:10px}.player-link{background:none;border:0;color:var(--text);text-align:left}.record-good{color:var(--green)}.record-loss{color:var(--red)}.timeline{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}.timeline .match{margin:0}.event-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,420px));gap:22px;margin-top:32px}.event-card{border:1px solid var(--line);background:linear-gradient(140deg,#192943,#101726);border-radius:12px;padding:28px;display:block}.event-card:hover{border-color:var(--blue)}.event-card h2{margin:18px 0 9px}.event-card .date{color:var(--gold);font-size:12px}.event-card .card-arrow{display:block;color:#6ea7ff;margin-top:25px;font-size:12px}.notice{border-left:3px solid var(--gold);padding:12px 16px;background:#b997360b;font-size:12px;line-height:1.6;color:var(--muted);margin-top:22px}.error{border:1px solid #8e4355;color:#f4bbc4;border-radius:7px;padding:20px}.loading{color:var(--muted)}dialog{width:min(540px,calc(100vw - 32px));max-height:85vh;background:#111c2f;color:var(--text);border:1px solid #3b5073;border-radius:12px;padding:30px;box-shadow:0 20px 100px #0009}dialog::backdrop{background:#030711c9;backdrop-filter:blur(4px)}.close{position:absolute;right:13px;top:10px;border:0;background:none;color:var(--muted);font-size:28px}.detail-players{margin:25px 0;border:1px solid var(--line);border-radius:7px}.detail-players .player{padding:15px}.detail-players .player-name{font-size:15px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.detail-grid dt{font-size:10px;color:var(--muted);margin-bottom:6px}.detail-grid dd{margin:0;font-size:13px}.detail-note{font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:18px}.detail-actions{display:flex;gap:10px;margin-top:20px}.sync{font-size:11px;color:var(--muted);margin-top:20px}.sync.error-text{color:var(--red)}footer{padding:25px 4vw;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:18px;color:var(--muted);font-size:11px}footer>div{display:flex;gap:20px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:720px){.nav{align-items:flex-start;flex-direction:column;gap:15px}.nav>div{gap:18px}.hero{align-items:flex-start;flex-direction:column}.hero-brand{gap:15px}.crest{width:57px;height:65px}.champion{width:100%;display:flex;align-items:center;gap:20px}.champion strong{font-size:20px}.summary{gap:23px;flex-wrap:wrap}.summary strong{font-size:21px}main{padding-top:28px}.toolbar{gap:8px}.tabs{width:100%;margin-bottom:7px}.toolbar input,.toolbar select{max-width:100%;flex:1;min-width:140px}.board{gap:19px;padding:16px 10px}.phase{width:240px}.board-viewport{max-height:none}.player-name{font-size:12px}footer{flex-direction:column}.detail-grid{gap:16px}.event-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}@media print{.nav,.toolbar,.sync,footer,.back{display:none}.board-viewport{overflow:visible;max-height:none}.board{zoom:.55}.hero{margin-bottom:0}body{background:white;color:black}}
/* Match cards follow the guild's wood-and-gold event artwork. */
:root{--bg:#120f0b;--panel:#211a12;--line:#5e482b;--muted:#b8ab93;--blue:#d5ab56;--text:#f5eddf}.nav{background:#120f0be8}.brand span{color:var(--gold)}body{background:radial-gradient(ellipse at 45% 0,#42301a77,transparent 65%),#120f0b}.badge{background:#261d12}.champion{background:linear-gradient(135deg,#4b371c77,#1b160f)}.tabs{background:#261d12}.tabs button.selected{background:#664721}.tool,input,select{background:#211a12}.board-viewport{background:#0b0906d9;border-color:#86603266}.phase{width:490px}.phase-title{color:#e6c684}.group-title{background:linear-gradient(90deg,#765022,#3c2b16);border:1px solid #a57b39;border-bottom:0;color:#ffe9bf}.match{display:grid;grid-template-columns:50px 1fr;background:linear-gradient(105deg,#302315,#17120d);border-color:#95713b;box-shadow:inset 0 0 0 2px #140e08,0 3px 7px #0007;border-radius:4px}.match:hover{border-color:#e9c579}.match-head{grid-column:1;grid-row:1;background:linear-gradient(100deg,#d4aa65,#f0d69e);color:#302014;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:9px 3px;border-right:2px solid #a27b3f;font-size:10px;line-height:1}.match-head strong{font-family:Georgia,serif;font-size:17px}.match-combatants{display:grid;grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr);align-items:center;padding:7px 5px}.match .player{display:grid;grid-template-columns:38px minmax(0,1fr);gap:2px 7px;padding:5px;min-height:70px}.match .class-icon{width:36px;height:36px;grid-row:1/3;border:1px solid #c89a48;box-shadow:0 0 0 2px #0b0907}.match .player-name{font-family:Georgia,serif;font-size:14px;font-weight:500;letter-spacing:-.2px}.match .player-meta{font-size:9px;line-height:1.4;margin:2px 0}.match .score{grid-column:2;font-family:Georgia,serif;font-size:10px;font-weight:bold;text-align:center;width:max-content;padding:3px 7px;border:1px solid;border-radius:3px;letter-spacing:.2px}.winner .score{background:#134c2b;color:#e5ffdd;border-color:#43905b}.loser .score{background:#6b1e1e;color:#ffe6db;border-color:#aa5545}.pending .score{background:#332b20}.versus{color:#e5b85e;display:flex;flex-direction:column;align-items:center;font-size:24px;line-height:1}.versus small{font-family:Georgia,serif;font-size:9px;margin-top:5px}.match-foot{grid-column:1/-1;background:#6b4b1c22;text-align:center}.player+.player{border:0}.stats th{background:#302317}.event-card{background:linear-gradient(140deg,#392b1b,#1a150e)}.event-card .card-arrow{color:var(--gold)}dialog{background:#21190f;border-color:#927039}.detail-players .score{font-size:9px;padding:4px;width:max-content}.detail-players .player{grid-template-columns:30px 1fr 74px}.timeline{grid-template-columns:repeat(auto-fill,minmax(470px,1fr))}.export .nav,.export .toolbar,.export .back,.export footer,.export .sync,.export .caption,.export .notice{display:none}.export main{max-width:none;width:max-content;padding:35px}.export .board-viewport{overflow:visible;max-height:none;border:0;background:#0b0906b8}.export .board{padding:15px 0;gap:24px}.export .hero{padding:15px 0}.export .hero h1{font-family:Georgia,serif;color:#efc36e}.export .summary{margin:15px 0}.export .phase{width:490px}.export .champion{margin-left:auto}.export .hero-copy{max-width:none}.export .phase-title{font-size:14px}.export .group-title{font-size:16px}.export .board .match .player-name{font-size:14px}.export .summary{justify-content:center;gap:100px}.export .hero-brand{gap:30px}.export .hero-copy .eyebrow{font-size:20px}.export .hero h1{font-size:46px}.export .hero .crest{width:100px;height:108px}.export .hero{justify-content:space-between}.export .champion strong{font-size:28px}.export .champion{min-width:350px}.export .hero .muted{font-size:17px}@media(max-width:720px){.phase{width:450px}.timeline{grid-template-columns:minmax(0,1fr)}.timeline .match{grid-template-columns:43px 1fr}.timeline .match-combatants{grid-template-columns:1fr 16px 1fr}.timeline .match .player{grid-template-columns:25px 1fr;padding:3px;gap:2px 5px}.timeline .class-icon{width:25px;height:25px}.timeline .player-name{font-size:11px}.timeline .player-meta{font-size:8px}.timeline .score{font-size:8px;padding:2px 4px}.timeline .versus{font-size:19px}}@media print{@page{size:A3 landscape;margin:8mm}.board-viewport{overflow:visible}.board{zoom:.26}.summary{display:none}.hero h1{font-size:24px}.hero{padding:0}.champion{padding:8px}}
/* Final card specification: identical stacked rows, fixed plaque and result columns. */
.phase,.export .phase{width:330px}.match{grid-template-columns:46px 1fr;height:98px}.match-combatants{display:grid;grid-template-columns:1fr;grid-template-rows:48px 48px;gap:0;padding:0;overflow:hidden}.versus{display:none}.match .player{grid-template-columns:30px minmax(0,1fr) 24px;grid-template-rows:1fr;gap:8px;padding:6px 9px;height:48px;min-height:48px;border:0}.match .player:last-child{border-top:1px solid #ffffff0d}.match .class-icon{grid-row:auto;width:30px;height:30px}.match .player-name,.export .board .match .player-name{font-size:14px;letter-spacing:0;font-family:Georgia,serif}.match .player-meta{font-size:9px;margin-top:2px;white-space:nowrap}.match .score{grid-column:auto;width:24px;height:26px;padding:4px 0;font-size:12px;line-height:16px;letter-spacing:0}.match-foot{display:none}.match-head{grid-row:1;height:96px;gap:9px}.match-head strong{font-size:18px}.timeline{grid-template-columns:repeat(auto-fill,minmax(310px,1fr))}.export .board{gap:25px}.export .summary{gap:75px}.export .group-title{font-size:15px}@media(max-width:720px){.phase{width:310px}.timeline .match{grid-template-columns:43px 1fr}.timeline .match-combatants{grid-template-columns:1fr;grid-template-rows:48px 48px}.timeline .match .player{grid-template-columns:28px minmax(0,1fr) 24px;padding:6px 9px;gap:8px}.timeline .class-icon{width:28px;height:28px}.timeline .player-name{font-size:14px}.timeline .player-meta{font-size:9px}.timeline .score{font-size:12px;padding:4px 0}.timeline .versus{display:none}}
body{background:linear-gradient(#100b04b8,#100c06d6),url('westfall.png') center top/cover fixed}.board-viewport{background:#110d07bf}.export-heading,.export-footer{display:none}.export{background:linear-gradient(#100b0433,#100c0655),url('westfall.png') center/cover}.export main{min-height:0;padding:32px 38px}.export .hero,.export .summary{display:none}.export .board-viewport{background:#120e09a6;padding:20px;border:1px solid #ad804e;border-radius:10px}.export .export-heading{display:flex;align-items:center;justify-content:center;gap:38px;margin-bottom:28px;text-align:center;text-shadow:0 3px 4px #000}.export-heading img{width:115px;height:124px}.export-heading h1{font-family:Georgia,serif;font-size:62px;letter-spacing:.5px;color:#f9d486;margin:0}.export-heading p{font-family:Georgia,serif;font-size:27px;margin:9px 0;color:#fff0d1}.export-heading small{display:block;font-size:19px;color:#ffdda1}.export .export-footer{display:block;text-align:center;margin-top:25px;padding:16px 25px;background:#1a120af0;border:1px solid #b4894d;border-radius:8px;color:#f0cc8c;text-shadow:0 1px 2px #000}.export-footer strong{font-family:Georgia,serif;font-size:30px}.export-footer p{font-size:21px;margin:12px 0}.export-footer small{font-size:17px;color:#e8d7b9}.export .phase-title{font-size:18px;color:#ffe0a1}.export .group-title{font-family:Georgia,serif;font-size:18px}.export .group-title span{font-family:system-ui,sans-serif;font-size:10px}.export .match .player-name,.export .board .match .player-name{font-size:17px}.export .match .player-meta{font-size:10px}.export .match .class-icon{width:32px;height:32px}.export .match .score{font-size:14px}.export .match-head{font-size:12px}.export .match-head strong{font-size:21px}.export .match{background:linear-gradient(105deg,#302315,#17120d);border-color:#c59748}.export .board{padding:0}.export .phase:last-child .group{margin-bottom:0}
/* Full-height pages and explicit horizontal tournament navigation. */
html{min-height:100%}body{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}main{flex:1;min-height:0;width:100%;margin:0 auto}body>footer{margin-top:auto;flex:none}.event-page:not(.export) main{max-width:none;padding-left:3vw;padding-right:3vw}.board-viewport{max-height:none;overflow-x:auto;overflow-y:hidden;background:transparent;border:0;border-radius:0;padding:4px 0 20px;scrollbar-width:auto;scrollbar-color:#bc8c45 #1d160e}.board{padding:14px 0 12px}.board-viewport::-webkit-scrollbar{height:16px}.board-viewport::-webkit-scrollbar-track{background:#1d160e;border:1px solid #77562f;border-radius:8px}.board-viewport::-webkit-scrollbar-thumb{background:#bc8c45;border:3px solid #1d160e;border-radius:8px}.board-nav{display:block;background:#1b140de8;border:1px solid #6c4e2d;border-radius:8px;padding:12px 15px;margin-bottom:10px}.board-nav-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.board-step,.board-jump,.board-phase-link{border:1px solid #846133;background:#302317;color:#f7e5c4;border-radius:5px;padding:9px 14px;font-size:13px;min-height:38px}.board-step.primary{background:#b8893d;color:#170e04;border-color:#e0b36c;font-weight:750}.board-step:disabled,.board-jump:disabled{opacity:.38;cursor:default}.board-position{font-size:12px;color:#d5c6ac;min-width:145px;text-align:center}.board-jump{margin-left:auto;border-color:#bd914e;color:#ffda96}.board-phase-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.board-phase-link{font-size:11px;padding:6px 11px;min-height:32px;background:#17110c;color:#b9ab94}.board-phase-link.in-view{background:#5a4020;border-color:#bf9253;color:#ffedcc}.board-overflow-cue{font-size:12px;color:#dbbb86;margin:10px 0 0;line-height:1.5}.board-nav.no-overflow .board-nav-top,.board-nav.no-overflow .board-phase-links{display:none}.board-nav.no-overflow{display:none}.export{display:block;min-height:0}.export main{flex:none}.export .board-nav{display:none}.export .board-viewport{overflow:visible;max-height:none;padding:20px;border:1px solid #ad804e;border-radius:10px;background:#120e09a6}.export .board{padding:0}@media(max-width:720px){.event-page:not(.export) main{padding-left:4vw;padding-right:4vw}.board-nav{padding:11px}.board-nav-top{gap:8px}.board-position{order:-1;width:100%;text-align:left}.board-step,.board-jump{font-size:12px;padding:9px 10px}.board-jump{margin-left:0}.board-phase-links{gap:5px}.board-phase-link{padding:5px 9px}.board{padding:12px 0}.board-viewport{max-height:none;padding-bottom:18px}}@media print{.board-nav{display:none}}

.opening-pairings{margin:30px 0}.opening-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px}.opening-card{padding:14px;background:#20180ee8;border:1px solid #a67c40;border-radius:7px}.opening-card h3{margin:0 0 12px;color:#f4cf8b}.opening-player{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;min-height:42px}.opening-player span{font-size:12px}.organize-link{display:inline-block;margin:14px 0 24px}.event-backdrop{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1;filter:brightness(.3);pointer-events:none}.custom-backdrop{background:#120f0b;isolation:isolate}.export .opening-pairings{display:none}

.event-prizes{margin:24px 0;padding:18px 22px;background:#23190de8;border:1px solid #ae8242;border-radius:8px}.prize-list{display:flex;gap:20px 45px;flex-wrap:wrap}.prize-list dt{color:#f2ce85;font-weight:750}.prize-list dd{margin:7px 0 0}.export .event-prizes{display:none}

body.event-index{background:linear-gradient(#0d130ab0,#0c1309d4),url('gurubashi-arena.png') center/cover fixed}.level-limit{color:#ffe0a1;font-weight:700}
