    :root {}

    * {box-sizing:border-box}

    html {color-scheme:light}

    body {margin:0;min-width:320px;background:var(--lime);color:var(--ink);font-family:var(--sans)}

    button, a {font:inherit}
    button {color:inherit}
    a {color:inherit}

    .skip-link {position:fixed;top:-5rem;left:1rem;z-index:20;padding:var(--s-3) var(--s-4);background:var(--ink);color:var(--ink-inverse)}

    .skip-link:focus {top:1rem}

    .site-header {min-height:68px;padding:0 var(--gutter);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);background:var(--lime);backdrop-filter:none}

    .brand {display:flex;align-items:baseline;gap:var(--s-3);text-decoration:none}

    .brand strong {font-size:var(--t-dense);letter-spacing:var(--track-label);text-transform:uppercase}

    .brand span {color:var(--muted);font-family:var(--serif);font-size:var(--t-dense);font-style:italic}

    .back-link {color:var(--muted);font-size:var(--t-dense);font-weight:700;letter-spacing:var(--track-label);text-decoration:none;text-transform:uppercase}

    .back-link:hover, .back-link:focus-visible {color:var(--forest)}

    main {width:100%;margin:0 auto;padding:var(--gutter) var(--gutter) var(--s-8)}

    .intro {display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);align-items:end;gap:var(--s-7);margin-bottom:var(--gutter);animation:rise var(--dur) var(--ease) both}

    .eyebrow {margin:0 0 var(--s-3);color:var(--celeste);font-size:var(--t-dense);font-weight:700;letter-spacing:var(--track-label);text-transform:uppercase}

    h1 {max-width:820px;margin:0;font-family:var(--display);font-size:var(--t-display);font-weight:800;letter-spacing:var(--track-display);line-height:var(--lh-head)}

    h1 em {color:var(--forest);font-weight:500}

    .intro-copy {margin:0;padding-bottom:var(--s-2);color:var(--muted);font-size:var(--t-title);line-height:var(--lh-dense)}

    .game-shell {overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--lime-raised);box-shadow:none;animation:rise var(--dur) var(--dur) var(--ease) both}

    .status-bar {min-height:72px;padding:var(--s-4) var(--s-4);display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--s-5);background:var(--ink);color:var(--ink-inverse)}

    .progress-wrap {min-width:0}

    .progress-meta {display:flex;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-2);color:var(--ink-inverse);font-size:var(--t-dense);font-weight:600;letter-spacing:var(--track-label);text-transform:uppercase}

    .progress-track {height:5px;overflow:hidden;border-radius:var(--radius);background:var(--lime-raised)}

    .progress-fill {width:0;height:100%;border-radius:var(--radius);background:var(--sun);transition:none}

    .scoreboard {display:flex;gap:var(--gutter)}

    .score-item {min-width:54px;text-align:right}

    .score-value {display:block;font-family:var(--serif);font-size:var(--t-head);font-weight:650;line-height:var(--lh-dense)}

    .score-label {display:block;margin-top:var(--s-1);color:var(--ink-inverse);font-size:var(--t-dense);font-weight:700;letter-spacing:var(--track-label);text-transform:uppercase}

    .score-value.is-urgent {color:var(--ink-2)}

    .play-grid {display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);min-height:720px}

    .map-stage {position:relative;min-width:0;padding:var(--gutter);display:grid;place-items:center;overflow:hidden;background-color:var(--map-province-ground);background-image:none;background-size:36px 36px}

    .map-stage::before,
    .map-stage::after {position:absolute;z-index:0;font-size:var(--t-dense);font-weight:700;letter-spacing:var(--track-label);color:var(--ink);text-transform:uppercase}

    .map-stage::before,
    .map-stage::after {content:none}

    .map-orientation {position:absolute;z-index:0;font-size:var(--t-dense);font-weight:700;letter-spacing:var(--track-label);color:var(--ink);text-transform:uppercase}

    .map-orientation-west {left:1rem;bottom:1rem}
    .map-orientation-equator {right:1rem;top:1rem}

    .map-holder {position:relative;z-index:1;width:100%;height:clamp(650px, 78vh, 860px);min-height:650px;filter:none}

    .map-holder svg {display:block;width:100%;height:100%}

    .map-holder path[data-province] {fill:var(--carto-43);stroke:var(--carto-44);stroke-width:2.2;cursor:pointer;transition:opacity var(--dur) var(--ease);vector-effect:non-scaling-stroke}

    .map-holder.is-idle path[data-province] {cursor:default}

    .map-holder:not(.is-idle) path[data-province]:not(.is-found):not(.is-wrong):hover {fill:var(--carto-45);filter:brightness(0.98)}

    .map-holder path[data-province]:focus-visible {fill:var(--carto-45);outline:none;stroke:var(--carto-17);stroke-width:5}

    .map-holder path.is-found,
    .map-holder path.is-found:hover {fill:var(--carto-17);stroke:var(--carto-46)}
    .map-holder path.is-wrong {fill:var(--carto-47)}

    .map-loading {position:absolute;inset:0;z-index:2;display:grid;place-items:center;color:var(--muted);font-size:var(--t-dense);letter-spacing:var(--track-label);text-transform:uppercase}

    .map-loading[hidden] {display:none}

    .game-panel {padding:var(--gutter);display:flex;flex-direction:column;border-left:1px solid var(--line);background:var(--lime-raised)}

    .panel-state {display:flex;flex:1;flex-direction:column}
    .panel-state[hidden] {display:none}

    .round-label {margin:0 0 var(--s-4);color:var(--celeste);font-size:var(--t-dense);font-weight:700;letter-spacing:var(--track-label);text-transform:uppercase}

    .panel-title {margin:0;font-family:var(--display);font-size:var(--t-title);font-weight:800;letter-spacing:var(--track-display);line-height:var(--lh-head)}

    .panel-copy {margin:var(--s-4) 0 0;color:var(--muted);font-size:var(--t-dense);line-height:var(--lh-dense)}

    .mode-picker {margin:var(--s-5) 0 0;padding:0;border:0}

    .mode-picker legend {margin-bottom:var(--s-3);color:var(--muted);font-size:var(--t-dense);font-weight:700;letter-spacing:var(--track-label);text-transform:uppercase}

    .mode-options {display:grid;grid-template-columns:repeat(2, 1fr);gap:var(--s-2)}

    .mode-option {position:relative}

    .mode-option input {position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}

    .mode-option span {min-height:46px;padding:var(--s-3) var(--s-2);display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius-ctl);color:var(--muted);cursor:pointer;font-size:var(--t-dense);font-weight:700;text-align:center;transition:transform var(--dur) var(--ease)}

    .mode-option span:hover {transform:translateY(-1px);border-color:var(--forest-light)}
    .mode-option input:checked + span {border-color:var(--forest);background:var(--moss);color:var(--forest)}
    .mode-option input:focus-visible + span {outline:3px solid var(--celeste);outline-offset:2px}

    .mode-description {min-height:3.1em;margin:var(--s-3) 0 0;color:var(--muted);font-size:var(--t-dense);line-height:var(--lh-dense)}

    .rules {margin:var(--s-5) 0 0;padding:0;list-style:none;border-top:1px solid var(--line)}

    .rules li {padding:var(--s-3) 0;display:flex;justify-content:space-between;gap:var(--s-4);border-bottom:1px solid var(--line);color:var(--muted);font-size:var(--t-dense)}

    .rules strong {color:var(--ink);font-weight:600}

    .primary-button, .secondary-button {min-height:48px;border-radius:var(--radius-ctl);padding:var(--s-3) var(--s-4);display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);cursor:pointer;font-size:var(--t-dense);font-weight:700;letter-spacing:var(--track-label);text-transform:uppercase;transition:transform var(--dur) var(--ease)}

    .primary-button {margin-top:auto;border:1px solid var(--forest);background:var(--forest);color:var(--ink-inverse)}

    .secondary-button {border:1px solid var(--line);background:var(--clear);color:var(--ink)}

    .secondary-button:hover, .secondary-button:focus-visible {border-color:var(--ink)}

    .primary-button:disabled, .secondary-button:disabled {cursor:wait;opacity:0.55;transform:none}

    .target-wrap {margin-top:var(--s-1)}

    .target-prefix {display:block;margin-bottom:var(--s-1);color:var(--muted);font-size:var(--t-dense)}

    .target-name {margin:0;font-family:var(--display);font-size:var(--t-title);font-weight:800;letter-spacing:var(--track-display);line-height:var(--lh-head)}

    .target-capital {margin:var(--s-3) 0 0;display:flex;align-items:baseline;gap:var(--s-2);color:var(--forest)}

    .target-capital[hidden] {display:none}

    .target-capital span {color:var(--muted);font-size:var(--t-dense);font-weight:700;letter-spacing:var(--track-label);text-transform:uppercase}

    .target-capital strong {font-family:var(--serif);font-size:var(--t-sub);font-weight:650}

    .target-flag-frame {position:relative;width:min(100%, 290px);min-height:172px;margin-top:var(--s-2);padding:var(--s-3);display:grid;place-items:center;border:1px solid var(--line);background:var(--paper);box-shadow:none}

    .target-flag-frame[hidden] {display:none}

    .target-flag-frame.is-association {width:min(100%, 260px);min-height:148px;margin-top:var(--s-4)}

    .target-flag-frame.is-association .target-flag {max-height:150px}

    .target-flag {display:block;width:100%;max-height:185px;object-fit:contain}

    .flag-credit {width:fit-content;margin-top:var(--s-2);color:var(--muted);font-size:var(--t-micro);text-underline-offset:3px}

    .feedback {min-height:86px;margin:var(--s-5) 0 0;padding:var(--s-4);border-left:3px solid var(--line);background:var(--paper);color:var(--muted);font-size:var(--t-dense);line-height:var(--lh-dense);transition:none}

    .feedback strong {color:var(--ink)}
    .feedback.is-correct {border-color:var(--forest);background:var(--moss);color:var(--forest)}
    .feedback.is-wrong {border-color:var(--clay);background:var(--clay-light);color:var(--teja)}
    .feedback.is-hint {border-color:var(--rule);background:var(--lime);color:var(--ink-2)}

    .play-actions {margin-top:auto;padding-top:var(--s-5);display:grid;gap:var(--s-3)}

    .round-note {margin:var(--s-3) 0 0;color:var(--muted);font-size:var(--t-dense);line-height:var(--lh-dense);text-align:center}

    .result-score {margin:var(--s-1) 0 0;color:var(--celeste);font-family:var(--display);font-size:var(--t-title);font-weight:800;letter-spacing:var(--track-display);line-height:var(--lh-dense)}

    .result-score small {color:var(--muted);font-size:var(--t-dense);letter-spacing:0}

    .result-grid {margin:var(--s-5) 0;display:grid;grid-template-columns:repeat(3, 1fr);border-block:1px solid var(--line)}

    .result-stat {padding:var(--s-4) var(--s-2);text-align:center}
    .result-stat + .result-stat {border-left:1px solid var(--line)}
    .result-stat strong {display:block;font-family:var(--serif);font-size:var(--t-head)}
    .result-stat span {color:var(--muted);font-size:var(--t-dense);letter-spacing:var(--track-label);text-transform:uppercase}

    .result-actions {margin-top:auto;display:grid;gap:var(--s-3)}
    .result-actions .primary-button {margin:0}

    .micro-footer {margin-top:var(--s-4);display:flex;justify-content:space-between;gap:var(--s-4);color:var(--muted);font-size:var(--t-micro)}

    .micro-footer a {color:var(--forest);text-underline-offset:3px}

    @keyframes rise {
      from {opacity:0;transform:translateY(16px)}
      to {opacity:1;transform:translateY(0)}
    }

    @media (max-width: 900px) {
      .intro {grid-template-columns:1fr;gap:var(--s-4)}
      .intro-copy {max-width:640px}
      .play-grid {grid-template-columns:1fr}
      .map-holder {height:min(68vh, 640px);min-height:430px}
      .game-panel {min-height:460px;border-top:1px solid var(--line);border-left:0}
    }

    @media (max-width: 620px) {
      .site-header {min-height:60px}
      .brand span {display:none}
      main {padding:var(--s-6) 0 var(--s-7)}
      .intro {padding:0 var(--s-4)}
      h1 {font-size:var(--t-display)}
      .intro-copy {font-size:var(--t-dense)}
      .game-shell {border-inline:0;border-radius:var(--radius)}
      .status-bar {grid-template-columns:1fr;gap:var(--s-3)}
      .scoreboard {justify-content:space-between}
      .score-item {text-align:left}
      .map-stage {padding:var(--s-4) var(--s-2)}
      .map-holder {height:58vh;min-height:370px}
      .game-panel {min-height:430px}
      .mode-option span {min-height:44px;font-size:var(--t-dense)}
      .micro-footer {padding:0 var(--s-4);flex-direction:column}
    }

    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after {scroll-behavior:auto!important;transition-duration:0.01ms!important;animation-duration:var(--dur)!important}
    }
