/* Self-hosted variable fonts from Google Fonts; licenses in public/fonts. */
/* vietnamese */
@font-face {
  font-family: 'Josefin Sans';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/josefin-sans-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Josefin Sans';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/josefin-sans-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Josefin Sans';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/josefin-sans-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* cyrillic-ext */
@font-face {
  font-family: 'Cormorant Infant';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/cormorant-infant-cyrillic-ext.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Cormorant Infant';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/cormorant-infant-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Cormorant Infant';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/cormorant-infant-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Cormorant Infant';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/cormorant-infant-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Infant';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/cormorant-infant-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* cyrillic-ext */
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/source-sans-3-cyrillic-ext.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/source-sans-3-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/source-sans-3-greek-ext.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/source-sans-3-greek.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/source-sans-3-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/source-sans-3-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/fonts/source-sans-3-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* Font roles are shared by the app, public pages and private dashboard. */
:root {
 --font-body:Arial,"Helvetica Neue",sans-serif;
 --font-heading:"Source Sans 3",Arial,sans-serif;
 --font-accent:"Josefin Sans",Arial,sans-serif;
 --font-brand:"Cormorant Infant",Georgia,serif;
 --sans:var(--font-body);
 --serif:var(--font-heading);
 --font-display:var(--font-heading);
 font-family:var(--font-body);
}
:root body {font-family:var(--font-body)}
:root :is(input,textarea,select,table,output,[role="status"],[role="alert"]) {font-family:var(--font-body)}
:root body :is(h1,h2,h3,h4,h5,h6) {font-family:var(--font-heading)!important;letter-spacing:0}
:root body h1 {font-weight:500!important;letter-spacing:-.025em!important}
:root body h2 {font-weight:600!important}
:root body :is(h3,h4,h5,h6) {font-weight:600}
/* Important controls stay at a readable size and use the semibold cut. */
:root body :is(.button,.nav-item:not(.subtle),.play-action,.skip-link) {
 font-family:var(--font-heading);font-size:14px;font-weight:600;letter-spacing:0;
}
:root body :is(.nav-item.active,.button strong,.play-action strong) {font-weight:600}
:root body .app .sidebar .nav-item:not(.subtle) {font-weight:500}
:root body .app .sidebar .nav-item.active {font-weight:600}
:root body :is(.account-details label,.password-forms label,.room-setup-form label,.clock-setup-field) {font-family:var(--font-heading);font-size:14px;font-weight:500}
:root body :is(.path-copy>strong,.home-variants strong,.section-heading>a,.play-setup-heading>span) {font-family:var(--font-heading);font-weight:600}
:root body .home-variants strong {font-size:17px}
:root body .hero-actions :is(.button,.text-button) {font-family:var(--font-heading)!important;font-size:14px!important;font-weight:600!important}
/* Compact controls, small labels and numeric information use the body face. */
:root body :is(.eyebrow,.sidebar-caption,.small-note,.tag,small,.breadcrumb,.nav-item.subtle,.nav-subitem,.tile-index,.catalog-tile-label,.preview-label,.stat,.rating-changes,.profile-rating-stats,.pool-card-body>strong,.placement-average,.table-instruction,.table-compass,.player-seat,.your-hand-top,.table-center,.result-scores,.final-standings,.american-seat,.american-center,.sc-seat,.sc-center,.variant-review-options,.round-badge>span,.bot-badge,.help-tip-content) {font-family:var(--font-body)}
:root body :is(.setting-row,.settings-categories,.account-settings-nav,.appearance-tabs,.course-variant-nav,.variant-tabs,.rules-variant-nav,.tile-suit-tabs,.game-settings-tabs,.connections-tabs,.training-tabs,.mode-options,.profile-history-ranges,.coach-choice-switch,.lobby-variant-filters) {font-family:var(--font-body)}
:root body :is(.home-variants small,.path-copy>span,.play-action small,.button small) {font-family:var(--font-body);font-weight:400}
/* Josefin is an uppercase accent, rather than the sentence-case UI face. */
:root body :is(.hero-copy,.home-return-copy)>.eyebrow {font-family:var(--font-accent);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1.6px}
/* The wordmark is deliberately distinct from navigation typography. */
:root body .brand {font-family:var(--font-brand)!important;font-size:30px;font-weight:600;line-height:.9;letter-spacing:-.6px}
:root body .brand-small {font-size:26px}
:root body.editorial-page .brand {line-height:1.1}
:root body :is(.news-article h1,.editorial-title) {font-family:var(--font-brand)!important;font-weight:500!important;letter-spacing:-.02em!important}
/* CJK glyphs use the platform's readable sans face when a Latin font has no glyph. */
:root:lang(ja) {--font-body:Arial,"Yu Gothic","Hiragino Kaku Gothic ProN",sans-serif}
:root:lang(zh) {--font-body:Arial,"Microsoft YaHei","PingFang SC",sans-serif}
:root:lang(ko) {--font-body:Arial,"Malgun Gothic","Apple SD Gothic Neo",sans-serif}

/* Spring: leaf greens, fresh paper and warm charcoal. Explicit rules keep
   component fallbacks from recoloring the playing materials. */
:root[data-theme="light"]{--green:#4c7838;--ink:#293526;--muted:#64715c;--line:#dce5d1;--panel:#fff;--soft:#eaf2df;--surface-soft:#eaf2df;--text:#293526;--accent:#4c7838;--spring-action:#4c7838;--bg:#f7faf2;--link:#4c7838;--control-fill:#e8f0dd;--control-hover:#dce9cc;--control-ink:#334a29;--control-selected:#d7e8c6;--control-selected-ink:#315127;background:#f7faf2;color:#293526}
:root[data-theme="light"] body{background:#f7faf2;color:#293526}
:root[data-theme="light"] .app .sidebar{background:#f0f5e9;--nav-text:#53684a;--nav-hover:#e7f0dc;--nav-selected:#dfedd0;--nav-selected-text:#385c29;--nav-utility:#66765b}
:root[data-theme="light"] .app .topbar{background:#fbfcf8;border-color:#e0e8d7}
:root[data-theme="dark"]{--green:#bdd8a1;--ink:#f0f3e8;--muted:#bbc6b0;--line:#46543c;--panel:#303b29;--soft:#38482f;--surface-soft:#38482f;--text:#f0f3e8;--accent:#bdd8a1;--spring-action:#527a3d;--bg:#242c20;--link:#bdd8a1;--control-fill:#35452d;--control-hover:#425738;--control-ink:#eaf0df;--control-selected:#49613b;--control-selected-ink:#eef4e5;background:#242c20;color:#f0f3e8}
:root[data-theme="dark"] body{background:#242c20;color:#f0f3e8}
:root[data-theme="dark"] .app :is(.sidebar,.topbar){background:#20291c;border-color:#3b4a32}
:root[data-theme="dark"] .app .sidebar{--nav-text:#dce6d1;--nav-hover:#34442b;--nav-selected:#3d5430;--nav-selected-text:#d9edc7;--nav-utility:#becbb1}
:root[data-theme] .app .button:not(.button-secondary){background:var(--spring-action);color:#fff}
:root[data-theme] .app .button:not(.button-secondary):hover:not(:disabled){background:color-mix(in srgb,var(--spring-action) 88%,#142b13)}
:root[data-theme] .button:not(.button-secondary){background:var(--spring-action);color:#fff}
:root[data-theme] .app .play-action.primary{background:var(--spring-action);color:#fff}
:root[data-theme] .app :is(input,select,textarea){accent-color:var(--spring-action)}
:root[data-theme="light"] ::selection{background:#d5e8be;color:#293526}
:root[data-theme="dark"] ::selection{background:#587346;color:#f4f7ed}
:root[data-theme="light"] .analytics-app{--sidebar:#f0f5e9}
:root[data-theme="dark"] .analytics-app{--sidebar:#20291c}
:root[data-theme] .dashboard-sidebar nav a[aria-current="page"]{background:var(--spring-action);color:#fff}
:root[data-theme="dark"] .app :is(.panel,dialog){background:var(--panel);color:var(--ink)}
:root[data-theme="dark"] .app .home-page .home-variants>a{background:var(--control-fill)}
:root[data-theme] .app{--classic-felt-base:#3c6844;--classic-felt-rim:#9eb782;--classic-felt-light:radial-gradient(ellipse at 48% 30%,#4a7b4d 0%,#416f45 55%,#355e3e 100%)}
:root[data-theme] .app .home-page .home-return-hero.home-illustrated-hero{background:linear-gradient(90deg,#16391e80,transparent 85%),var(--classic-felt-grain) repeat,var(--classic-felt-light);border-color:#8ea771}
:root[data-theme] .app .home-page .home-return-hero .hero-actions .button{background:#e9f2da;color:#2e4d25}
:root[data-theme] .app .home-page .home-return-hero .hero-actions .button:hover{background:#f7faee}
:root[data-theme] .app .home-page .home-return-hero .hero-actions .text-button{background:#305734;color:#f0f5e5}
/* The classic table console is an ivory instrument against the spring felt. */
:root[data-theme] .app .playing-surface[data-board="classic"] .tabletop .table-compass{background:#eaf1df;border-color:#b5c99e;color:#344f2c;box-shadow:inset 0 0 0 3px #ffffff70,0 3px 0 #6d8b56,0 5px 9px #1e3c2a30}
:root[data-theme] .app .playing-surface[data-board="classic"] .table-compass .compass-round{background:transparent;border:0;box-shadow:none;color:#344f2c}
:root[data-theme] .app .playing-surface[data-board="classic"] .tabletop .table-compass .center-round{font:600 clamp(10px,calc(var(--floor-size)*.3),13px)/1.05 var(--font-heading);color:#344f2c}
:root[data-theme] .app .playing-surface[data-board="classic"] .tabletop .table-compass .center-round small{font:400 9px/10px var(--font-body);color:#5b7250;opacity:1}
:root[data-theme] .app .playing-surface[data-board="classic"] .tabletop .table-compass .compass-round>strong{font-family:var(--font-body);font-weight:600;color:#2f5127;letter-spacing:-.03em}
:root[data-theme] .app .playing-surface[data-board="classic"] .tabletop .table-compass .compass-round>strong>span{font:400 7px/9px var(--font-body);letter-spacing:.3px;color:#5b7250}
:root[data-theme] .app .playing-surface[data-board="classic"] .table-compass .center-counters{color:#4c663e}
:root[data-theme] .app .playing-surface[data-board="classic"] .table-compass .center-wind.wind-active{background:#648947;box-shadow:none}
/* Shared accents and previews use role tokens, rather than legacy forest fills. */
:root[data-theme] .app :is(.quick-play,.play-resume,.profile-history-ranges,.setup-success-icon){background:var(--soft)}
:root[data-theme] .app .auth-switch button[aria-pressed="true"]{box-shadow:inset 0 -2px 0 var(--green);color:var(--ink)}
:root[data-theme] .app :is(.password-links button,.play-newcomer a,.play-newcomer button,.play-newcomer h2){color:var(--green)}
:root[data-theme] .app .play-action.primary:hover{background:color-mix(in srgb,var(--spring-action) 88%,#142b13)}
:root[data-theme] .app .traditional-back-sample{background:var(--classic-felt-base)}
:root[data-theme] .app .appearance-hand.hand-classic{background:var(--classic-felt-base)}
:root[data-theme] .app{--classic-console-bg:#eaf1df;--classic-console-inset:transparent}
:root[data-theme] .app .tile-suit-tabs button{background:var(--soft);color:var(--ink)}
:root[data-theme] .app .tile-suit-tabs button[aria-pressed="true"]{background:var(--spring-action);color:#fff}
