/* Player access extends the accepted fantasy theme and uses its existing frame. */
.header-actions {gap: 12px;}
.header-player, .header-download {min-height: 44px; padding-inline: 18px; white-space: nowrap; font-size: 11px;}
.header-player svg, .header-download svg {width: 16px; height: 16px; flex-shrink: 0;}
.gateway-player-actions {display: flex; flex-wrap: wrap; gap: 10px;}
.gateway-account > .player-text-action {margin-top: 14px;}
.player-text-action {padding: 8px 0; border: 0; background: none; color: var(--accent-strong); font: 12px/1.5 var(--sans); cursor: pointer; text-align: left; text-decoration: underline; text-underline-offset: 4px;}
.player-text-action:hover {color: var(--ink);}
.player-text-action:disabled {opacity: .6; cursor: wait;}
.player-text-action:focus-visible, .download-card summary:focus-visible {outline: 2px solid var(--accent); outline-offset: 5px;}
#player-dialog {width: min(640px, calc(100% - 28px));}
#downloads-dialog {width: min(1000px, calc(100% - 28px));}
.player-inner, .downloads-inner {position: relative;}
.player-inner > *, .downloads-inner > * {position: relative;}
.player-inner > .dialog-close, .downloads-inner > .dialog-close {position: absolute;}
.player-inner > .eyebrow, .downloads-inner > .eyebrow {padding-right: 24px;}
.player-inner #player-intro, .downloads-inner #downloads-intro {margin: 18px 0 24px;}
.player-notice {padding: 16px 18px; border: 1px solid var(--line); border-left: 3px solid var(--accent); background: var(--soft-gold); margin: 0 0 22px;}
.player-notice strong {display: block; color: var(--ink); font: 16px/1.4 Georgia, serif;}
.player-notice p {margin: 6px 0 0; color: var(--muted); font: 12px/1.65 var(--sans);}
.player-notice[data-tone="error"] {border-left-color: #cf8d7f;}
.player-notice[data-tone="warning"] {border-left-color: var(--accent-strong);}
.player-notice[data-tone="success"] {border-left-color: #a9bf91;}
.player-notice:focus {outline: 1px solid var(--accent); outline-offset: 3px;}
#player-fields {border: 0; padding: 0; margin: 0; min-width: 0;}
.player-field {margin: 0 0 20px;}
.player-field label {display: block; color: var(--ink); font: 15px/1.5 Georgia, serif; margin-bottom: 8px;}
.player-field input {display: block; width: 100%; min-width: 0; min-height: 48px; padding: 10px 14px; border: 1px solid var(--frame); border-radius: 0; background: var(--bg); color: var(--ink); font: 16px/1.5 var(--sans); box-shadow: inset 0 1px 6px #0002;}
.player-field input:focus {outline: 2px solid var(--accent); outline-offset: 2px;}
.player-field input[aria-invalid="true"] {border-color: #cf8d7f;}
.player-field input:disabled {opacity: .6;}
.player-hint, .player-field-error {font: 11px/1.6 var(--sans); margin: 7px 0 0; color: var(--muted);}
.player-field-error {color: #e5aa9b;}
:root[data-theme="light"] .player-field-error {color: #843628;}
.player-actions {display: flex; align-items: center; flex-wrap: wrap; gap: 12px 22px;}
.player-actions .button {min-height: 48px; min-width: 165px;}
.player-create {display: flex; align-items: center; flex-wrap: wrap; gap: 4px 12px; margin: 24px 0 0; padding-top: 16px; border-top: 1px solid var(--line); font: 12px/1.6 var(--sans); color: var(--muted);}
.player-access-note {color: var(--muted); font: 10px/1.6 var(--sans); text-align: center; margin: 24px 0 0;}
.player-identity {display: flex; align-items: center; gap: 18px; margin: 27px 0 22px; padding-bottom: 24px; border-bottom: 1px solid var(--line);}
.player-identity svg {width: 42px; height: 48px; fill: none; stroke: var(--accent); stroke-width: 1.2; flex-shrink: 0;}
.player-identity .meta-label {display: block; margin-bottom: 9px;}
.player-identity strong {display: block; color: var(--accent-strong); font: 28px/1.35 Georgia, serif; overflow-wrap: anywhere;}
.player-account > p {font: 14px/1.8 Georgia, serif;}
.player-account-actions {display: flex; flex-direction: column; align-items: flex-start; gap: 12px; margin: 25px 0;}
.player-account-actions .button {min-height: 48px;}
.player-session-note {display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-top: 20px; border-top: 1px solid var(--line); font: 11px/1.7 var(--sans); color: var(--muted);}
.player-session-note span {max-width: 340px;}
.player-session-note button {flex-shrink: 0;}
.registration-result > [data-player] {margin-top: 12px;}
.downloads-grid {display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px;}
.download-card {position: relative; min-width: 0; padding: 25px 24px; background: linear-gradient(140deg, var(--surface), var(--bg)); border: 1px solid var(--frame);}
.download-card::before {content: ''; position: absolute; inset: 3px; border: 18px solid transparent; border-image: url('assets/frame.svg') 48 stretch; pointer-events: none; opacity: .8;}
.download-card > * {position: relative;}
.download-card-heading {display: flex; align-items: center; gap: 14px;}
.download-sigil {width: 38px; height: 48px; display: grid; place-items: center; color: var(--accent); background: var(--soft-gold); border: 1px solid var(--frame); clip-path: polygon(50% 0, 100% 15%, 100% 75%, 50% 100%, 0 75%, 0 15%); font: 21px/1 var(--display); flex-shrink: 0;}
.download-card-heading .meta-label {font-size: 8px; letter-spacing: 1.6px; display: block; margin-bottom: 6px;}
.download-card-heading h3 {font: 24px/1.4 var(--display); color: var(--ink); margin: 0;}
.download-target {font: 10px/1.7 var(--sans); color: var(--muted); margin: 15px 0 24px;}
.download-state {font: 14px/1.5 Georgia, serif; color: var(--accent-strong); margin: 0 0 9px;}
.download-state[data-available="true"]::before {content: '◆'; font-size: 9px; margin-right: 8px; color: #a9bf91;}
.download-message {font: 11px/1.8 var(--sans); color: var(--muted); margin: 0 0 20px;}
.download-link {min-height: 46px; width: 100%; margin: 0 0 22px; font-size: 11px;}
.download-card details {border-top: 1px solid var(--line); padding: 12px 0;}
.download-card details:last-child {padding-bottom: 0;}
.download-card summary {color: var(--accent-strong); font: 13px/1.6 Georgia, serif; cursor: pointer;}
.download-card summary::marker {font-size: 10px;}
.download-card details p, .download-card details li {font: 11px/1.8 var(--sans); color: var(--muted);}
.download-card details ol {padding-left: 20px; margin: 14px 0;}
.download-card details li + li {margin-top: 8px;}
.download-card details p {margin: 12px 0 0;}
.download-card code {font-size: 10px; color: var(--ink); overflow-wrap: anywhere;}
.download-details dl {margin: 16px 0 0;}
.download-details dl > div {margin-top: 12px;}
.download-details dt {font: 9px/1.5 var(--sans); color: var(--muted); text-transform: uppercase; letter-spacing: 1.3px;}
.download-details dd {font: 11px/1.7 var(--sans); color: var(--ink); overflow-wrap: anywhere; margin: 3px 0 0;}
.downloads-access-note {font: 11px/1.8 var(--sans); color: var(--muted); margin: 22px 0; padding-left: 13px; border-left: 2px solid var(--frame);}
.downloads-access-note strong {color: var(--ink);}
.downloads-mobile {display: flex; align-items: center; gap: 18px; padding: 18px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);}
.downloads-mobile > span {color: var(--accent); font-size: 23px;}
.downloads-mobile p {margin: 0;}
.downloads-mobile strong, .downloads-mobile p span {display: block;}
.downloads-mobile strong {font: 16px/1.5 Georgia, serif; color: var(--ink); margin-bottom: 4px;}
.downloads-mobile p span {font: 11px/1.7 var(--sans); color: var(--muted);}
.downloads-actions {display: flex; align-items: center; flex-wrap: wrap; gap: 14px 22px; margin-top: 24px;}
.downloads-actions .button {min-height: 44px;}

@media (max-width: 1200px) {
  .header-inner .main-nav {gap: 17px;}
  .header-inner .main-nav a {font-size: 13px;}
  .header-actions {gap: 9px;}
  .header-player, .header-download {padding-inline: 16px;}
}
@media (min-width: 621px) and (max-width: 1080px) {
  .main-nav {display: none; position: absolute; top: 100%; left: 0; right: 0; padding: 22px 32px; background: var(--bg); border-bottom: 1px solid var(--frame); flex-direction: column; align-items: flex-start; z-index: 10;}
  .main-nav.is-open {display: flex;}
  .main-nav a {width: 100%; padding: 7px 0;}
  .menu-toggle {display: flex; flex-direction: column; gap: 6px;}
  .menu-toggle span {width: 18px; height: 1px; background: var(--accent);}
  .menu-toggle[aria-expanded="true"] span:first-child {transform: translateY(3.5px) rotate(45deg);}
  .menu-toggle[aria-expanded="true"] span:last-child {transform: translateY(-3.5px) rotate(-45deg);}
}
@media (max-width: 700px) {
  .downloads-grid {grid-template-columns: 1fr;}
  .downloads-inner {padding: 38px 26px 30px;}
  .downloads-inner h2 {font-size: 27px;}
}
@media (max-width: 620px) {
  html {scroll-padding-top: 140px;}
  .site-header {height: auto; min-height: 112px;}
  .header-inner {height: auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px 10px; padding-block: 9px 10px;}
  .header-inner .brand {grid-column: 1 / -1; grid-row: 1; width: max-content; max-width: calc(100% - 82px); min-height: 40px;}
  .header-inner .brand img {width: 31px; height: 37px;}
  .header-inner .brand > span {font-size: 17px;}
  .header-inner .brand small {font-size: 6px; letter-spacing: 3px;}
  .header-actions {display: contents;}
  .header-actions .theme-toggle {grid-column: 2; grid-row: 1; justify-self: end; align-self: center; margin-right: 42px;}
  .header-actions .menu-toggle {grid-column: 2; grid-row: 1; justify-self: end; align-self: center;}
  .header-player {grid-column: 1; grid-row: 2;}
  .header-download {grid-column: 2; grid-row: 2;}
  .header-player, .header-download {width: 100%; min-width: 0; min-height: 42px; padding: 8px 12px; font-size: 11px; gap: 9px;}
  .header-inner .main-nav {top: 100%;}
  .gateway-player-actions {flex-direction: column;}
  .gateway-player-actions .button {width: 100%;}
  .player-inner {padding: 38px 26px 28px;}
  .player-inner h2 {font-size: 27px;}
  .player-inner .eyebrow, .downloads-inner .eyebrow {font-size: 8px; letter-spacing: 2px;}
  .player-inner .dialog-close, .downloads-inner .dialog-close {top: 12px; right: 12px;}
  .player-notice {padding: 14px;}
  .player-actions {align-items: stretch; flex-direction: column; gap: 8px;}
  .player-actions .button, .player-account-actions .button {width: 100%;}
  .player-session-note {align-items: flex-start; flex-direction: column; gap: 8px;}
  .player-account-actions .button {font-size: 10px; padding-inline: 15px; gap: 10px;}
  .download-card {padding: 24px 21px;}
  .downloads-actions {flex-direction: column; align-items: stretch;}
  .downloads-actions .button {font-size: 10px; padding-inline: 15px;}
  .registration-result > [data-player] {width: 100%; font-size: 10px; padding-inline: 15px;}
}

.download-link:disabled{opacity:.65;cursor:default;transform:none}
