/* TournStack v1.2 artwork + v1.1 application and interaction standards. */
@font-face{font-family:Montserrat;src:url('/assets/fonts/Montserrat-Variable.ttf') format('truetype');font-style:normal;font-weight:100 900;font-display:swap}
:root{
  --ts-canvas:#0F172A;--ts-surface:#1E293B;--ts-steel:#334155;
  --ts-text:#F8FAFC;--ts-body:#CBD5E1;--ts-muted:#94A3B8;--ts-line:#94A3B8;
  --ts-action:#6EA0FF;--ts-action-hover:#8BB4FF;--ts-action-pressed:#5C90EC;
  --ts-selected:#20365A;--ts-award:#FFC458;--ts-success:#38E8AE;--ts-success-bg:#153C34;
  --ts-error:#FF8B72;--ts-error-bg:#472A2A;--ts-light-action:#1855CC;
  --ts-shadow:0 16px 40px rgb(15 23 42 / .3);
  font-family:Montserrat,sans-serif;color-scheme:dark;font-synthesis:none;
}
body{background:var(--ts-canvas);color:var(--ts-body);font-family:Montserrat,sans-serif;font-size:16px;line-height:1.5}
h1,h2,h3,h4,strong{color:var(--ts-text)}
button,input,select,textarea{font-family:inherit}
a{color:var(--ts-action);text-underline-offset:3px}
:focus-visible{outline:3px solid var(--ts-action);outline-offset:3px}
::selection{background:var(--ts-selected);color:var(--ts-text)}
input::placeholder,textarea::placeholder{color:var(--ts-muted);opacity:1}
input,select,textarea{background:var(--ts-surface);color:var(--ts-text);border-color:var(--ts-line);accent-color:var(--ts-action)}
input:hover,select:hover,textarea:hover{border-color:var(--ts-body)}
button:disabled{opacity:1!important;background:var(--ts-surface)!important;color:var(--ts-muted)!important;border-color:var(--ts-muted)!important;cursor:not-allowed}
.tp-bo-button,.tp-padel-button{border-radius:10px;font-size:14px;font-weight:600;line-height:20px;min-height:44px}
.tp-bo-button:hover,.tp-padel-button:hover{background:var(--ts-action-hover);border-color:var(--ts-action-hover);color:var(--ts-canvas)!important;transform:none}
.tp-bo-button:active,.tp-padel-button:active{background:var(--ts-action-pressed);border-color:var(--ts-action-pressed)}
.tp-bo-button-secondary,.tp-padel-button-secondary{border-color:var(--ts-line);background:var(--ts-surface);color:var(--ts-text)!important}
.tp-bo-button-secondary:hover,.tp-padel-button-secondary:hover{background:var(--ts-steel);border-color:var(--ts-body);color:var(--ts-text)!important}
#app{max-width:1440px;padding:24px}.shell{border-radius:16px;padding:24px;background:var(--ts-canvas)}
.brandbar{padding:16px 0 24px;border-bottom:1px solid var(--ts-steel);gap:24px}.brandbar img{width:340px;max-width:100%;height:auto}
.ts-logo-link{display:block;padding:12px 24px 12px 0;max-width:100%}
.ts-compact-label{display:none}
.badge{border-color:var(--ts-line);color:var(--ts-body);font-size:12px;font-weight:600;border-radius:8px;background:var(--ts-surface)}
.hero h1{font-size:28px;line-height:36px;font-weight:600;letter-spacing:-.02em}.hero{padding:24px 0 8px}
h2{font-size:24px;line-height:32px;font-weight:600}h3{font-size:20px;line-height:28px;font-weight:600}
.card{padding:24px;border-radius:16px;border-color:var(--ts-steel);background:var(--ts-surface)}
.grid{gap:24px}.fields{gap:16px}.fields label,label.field{font-size:14px;font-weight:600;gap:8px;color:var(--ts-text)}
.muted,.person span{color:var(--ts-muted)}.tag,.rehearsal-clock{color:var(--ts-action);font-weight:600}.tag{font-size:12px;line-height:18px}
.tabs{gap:8px;background:var(--ts-canvas)}.tabs button{border-radius:10px;border-color:var(--ts-line);font-size:14px;font-weight:600;min-height:44px}
.tabs .active{background:var(--ts-selected);color:var(--ts-text);border-color:var(--ts-action);box-shadow:inset 0 -3px var(--ts-action)}
.wizardsteps button{font:600 14px/20px Montserrat,sans-serif;min-height:44px}.wizardsteps .selected{background:var(--ts-selected);box-shadow:inset 0 -3px var(--ts-action)}
.stat{border-radius:10px;color:var(--ts-body)}.stat strong{color:var(--ts-text);font-variant-numeric:tabular-nums}
.preview{color:var(--ts-steel);background:var(--ts-text);color-scheme:light}.preview h2,.preview strong{color:var(--ts-canvas)}.preview .tag{color:var(--ts-light-action)}
.ts-preview-logo{display:block;width:300px;max-width:100%;height:auto;margin:0 0 28px;padding:12px 0}
.winner{background:var(--ts-surface);border-color:var(--ts-award);color:var(--ts-body)}.winner strong{color:var(--ts-text)}
.match{border-left-color:var(--ts-action)}.match.complete{border-left-color:var(--ts-success)}
.points button{min-width:44px;min-height:44px;background:var(--ts-steel);color:var(--ts-text)}
.person,td,th,.inbox-item{border-color:var(--ts-steel)}.scorestrip{background:var(--ts-surface);color:var(--ts-body)}
#notice{background:var(--ts-success-bg);color:var(--ts-success);border-color:var(--ts-success)}#notice.error{background:var(--ts-error-bg);color:var(--ts-error);border-color:var(--ts-error)}
dialog{background:var(--ts-surface);color:var(--ts-body);border-color:var(--ts-line)}dialog::backdrop{background:rgb(15 23 42 / .72)}
.ts-display-brand{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 5%;background:var(--ts-canvas);color:var(--ts-muted);font-size:14px;height:100px;min-height:100px}
.ts-display-brand picture{display:block;flex:0 1 360px}.ts-display-brand img{width:360px;max-width:100%;height:auto}.ts-display-brand span{white-space:nowrap}
.tp-padel-widget{--tp-orange:var(--ts-action);--tp-charcoal:var(--ts-canvas);--tp-ink:var(--ts-canvas);--tp-paper:var(--ts-body);--tp-white:var(--ts-text);--tp-blue:var(--ts-action);font-family:Montserrat,sans-serif;color:var(--ts-body);container-type:inline-size}
.tp-padel-tabs{border-radius:12px;background:var(--ts-canvas);border-color:var(--ts-line)}.tp-padel-tab{border-radius:8px;font-weight:600;text-transform:none;min-height:44px}
.tp-padel-tab.is-active,.tp-padel-tab.is-active:hover{background:var(--ts-selected);color:var(--ts-text);box-shadow:inset 0 -3px var(--ts-action)}
.tp-padel-card,.tp-padel-live-card,.tp-padel-info-card,.tp-padel-results-strip,.tp-padel-bracket{background:var(--ts-surface);color:var(--ts-body);border-radius:16px;box-shadow:none}
.tp-padel-card h3,.tp-padel-live-card h3,.tp-padel-info-card h3{color:var(--ts-text);font-weight:600}
.tp-padel-live-card p,.tp-padel-info-card p,.tp-padel-results-strip p{color:var(--ts-body)}
.tp-padel-company,.tp-padel-group-meta{color:var(--ts-muted)}.tp-padel-results-strip li{background:var(--ts-canvas);color:var(--ts-body)}
.tp-padel-result-winner{color:var(--ts-text);border-color:var(--ts-success)}.tp-padel-result-phase{background:var(--ts-steel);color:var(--ts-text)}
.tp-padel-live-match.is-complete{background:var(--ts-canvas);border-color:var(--ts-success)}.tp-padel-live-match.is-next{background:var(--ts-selected);border-color:var(--ts-action)}
.tp-padel-matchup .is-winner,.tp-padel-bracket-match .is-winner{color:var(--ts-success)}
.tp-padel-matchup .is-winner::after,.tp-padel-bracket-match .is-winner::after{background:var(--ts-success-bg);color:var(--ts-success)}
.tp-padel-prize{background:var(--ts-surface);color:var(--ts-body);border-color:var(--ts-award);transform:none;box-shadow:none;border-radius:16px}
.tp-padel-prize:before,.tp-padel-prize:after,.tp-padel-prize-ring{display:none}.tp-padel-prize-copy{transform:none}.tp-padel-prize h2{color:var(--ts-text)!important;text-transform:none}.tp-padel-prize-label{color:var(--ts-award)}
.tp-padel-prize-visual{align-items:center;padding:12px}body [data-tp-padel-roster] .tp-padel-widget .tp-padel-prize .tp-padel-prize-visual>img{width:100%!important;min-width:0!important;max-width:100%!important;transform:none}
.tp-padel-crowd{background:var(--ts-surface);color:var(--ts-body);border:1px solid var(--ts-steel)}
.tp-padel-brand{display:none}.tp-padel-bracket-match{background:var(--ts-canvas);color:var(--ts-text);box-shadow:none}.tp-padel-bracket-match p{color:var(--ts-text)}
.tp-padel-champion{background:var(--ts-canvas);color:var(--ts-text);border:2px solid var(--ts-award);box-shadow:none}
.tp-padel-champion span{color:var(--ts-award)}.tp-padel-group-history{background:var(--ts-surface);color:var(--ts-body)}
.tp-padel-road{background:var(--ts-surface);color:var(--ts-body);border-color:var(--ts-steel);box-shadow:none}.tp-padel-road h3{color:var(--ts-text)}
.tp-padel-tree-final .tp-padel-bracket-match{box-shadow:none}.tp-padel-tree-column h4,.tp-padel-tree-final h4{color:var(--ts-body)}
.tp-padel-weather-day,.tp-padel-weather-day.is-event-day{background:var(--ts-canvas);color:var(--ts-body)}
body.tp-live-feed-page{background:var(--ts-canvas)}.tp-live-feed-page .tp-padel-widget.tp-padel-live-feed{height:calc(100vh - 100px);padding:0 5% 3%}
.tp-live-feed-page .tp-padel-bracket-match p{font-size:clamp(18px,1.8vw,36px);line-height:1.22}.tp-live-feed-page .tp-padel-bracket-match small{font-size:clamp(14px,1vw,20px)}
.tp-raffle-screen{background:var(--ts-canvas)}.tp-raffle-stage{background:var(--ts-canvas);border-color:var(--ts-steel);box-shadow:none}
.tp-raffle-head img{width:360px;max-width:80%;height:auto;margin:8px auto 24px}.tp-raffle-head h1{font-weight:700}.tp-raffle-head>p{color:var(--ts-action)}
.tp-raffle-announcement{background:var(--ts-selected);border-color:var(--ts-action);color:var(--ts-body);box-shadow:none}
.tp-raffle-prize{background:var(--ts-surface);border-color:var(--ts-award);color:var(--ts-body)}.tp-raffle-prize h2{color:var(--ts-text);text-transform:none}.tp-raffle-prize-copy>span{color:var(--ts-award)}
.tp-raffle-roller,.tp-raffle-roller.is-spinning{background:var(--ts-surface);border-color:var(--ts-line);color:var(--ts-text);box-shadow:none}
.tp-raffle-roller.is-winner{background:var(--ts-surface);border-color:var(--ts-award);color:var(--ts-text);box-shadow:none}
.tp-raffle-roller.is-winner .tp-raffle-reel-name{background:transparent;color:var(--ts-text);text-shadow:none;box-shadow:none}
.tp-raffle-roller.is-winner .tp-raffle-reel-name[data-roller-text]{background:transparent;color:var(--ts-text);text-shadow:none;box-shadow:none;animation:none}
.ts-logo-link{text-decoration:none}.tp-raffle-head [data-raffle-announcement]{box-shadow:none;background:var(--ts-selected);color:var(--ts-body)}
.tp-raffle-winner-badge{background:var(--ts-award);color:var(--ts-canvas);box-shadow:none}.tp-raffle-shine,.tp-raffle-roller:before{display:none}
@media(max-width:640px){#app{padding:8px}.shell{padding:16px}.card{padding:16px}.hero h1{font-size:24px;line-height:32px}.brandbar img{width:300px}.ts-logo-link{padding-right:0}.ts-display-brand{padding:20px 16px;gap:12px;min-height:80px}.ts-display-brand img{width:260px}.tp-raffle-head img{width:300px}.tp-padel-widget{padding:20px 16px}}
@container(max-width:480px){.tp-padel-grid,.tp-padel-live-grid,.tp-padel-info-grid{grid-template-columns:1fr}.tp-padel-matchup{grid-template-columns:1fr}.tp-padel-matchup>:last-child{text-align:left}.tp-padel-tabs{gap:4px}.tp-padel-tab{flex-basis:80px}}
@container(max-width:700px){.tp-padel-hero{grid-template-columns:1fr}.tp-padel-tree{width:100%;grid-template-columns:1fr;grid-auto-columns:1fr;gap:24px;overflow:visible}.tp-padel-tree-column,.tp-padel-tree-final{min-width:0;grid-template-rows:auto auto}.tp-padel-tree-column>div:after,.tp-padel-bracket-slot:before,.tp-padel-bracket-slot:after,.tp-padel-tree-final:before,.tp-padel-tree-final:after{display:none}.tp-padel-prize{grid-template-columns:1fr;min-height:0}.tp-padel-prize-copy{padding:24px}.tp-padel-prize-visual{grid-column:1;grid-row:auto;padding:0 24px 24px}body [data-tp-padel-roster] .tp-padel-widget .tp-padel-prize .tp-padel-prize-visual>img{width:160px!important;min-width:0!important;max-width:100%!important;transform:none}.tp-padel-crowd{flex-direction:column}.tp-padel-results-strip li{grid-template-columns:1fr}.tp-padel-result-copy{flex-wrap:wrap}}
@media(max-width:900px){.tp-live-feed-page .tp-padel-widget.tp-padel-live-feed{height:auto;min-height:calc(100vh - 100px);overflow:visible}.tp-live-feed-page .tp-padel-bracket-match p{font-size:18px}}
@media(max-width:640px){.ts-logo-link{display:flex;align-items:center;gap:28px}.brandbar .ts-logo-link img,.ts-display-brand img{width:56px;max-width:56px}.ts-compact-label{display:block;color:var(--ts-text);font-size:18px;font-weight:600}.ts-display-brand{gap:20px}.ts-display-brand>span:last-child{font-size:12px}.ts-display-brand picture{flex:0 0 56px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
