/* The PC demo page: the studio's column, a night stage with a Blender render of a board mid-wave behind the
   start button, and three plain notes. The stage keeps the game's 16:10 window. */
.play-page { padding-block: 40px 96px; }
.play-back { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; color: var(--muted); font-size: 13px; font-weight: 560; }
.play-back .arrow-icon { width: 16px; height: 16px; }
.play-back:hover { color: var(--ink); }
.play-back:hover .arrow-icon { transform: translateX(-3px); }
.play-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 32px; margin: 36px 0 32px; }
.play-eyebrow { color: var(--muted); font-size: 13px; font-weight: 600; }
.play-heading h1 { margin-top: 14px; font-size: clamp(36px, 4.6vw, 64px); font-weight: 760; line-height: 1.14; letter-spacing: -.055em; }
.play-tags { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.play-tags li { min-height: 30px; padding: 4px 12px; border-radius: 999px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); color: var(--ink-soft); font-size: 12.5px; font-weight: 560; white-space: nowrap; }

.play-stage { position: relative; display: flex; flex-direction: column; aspect-ratio: 16 / 10; min-height: 420px; overflow: hidden; border-radius: 22px; background: var(--night); color: var(--night-text); isolation: isolate;
    box-shadow: 0 0 0 1px rgb(0 0 0 / 30%), 0 1px 0 rgb(255 255 255 / 8%) inset, 0 50px 90px -50px rgb(11 18 23 / 75%); }
.play-backdrop { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; object-position: 50% 62%; }
/* Night falls from the left so the words sit on dark, and the board stays lit where the swarm comes in. */
.play-stage::before { content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
    background: linear-gradient(90deg, rgb(11 18 23 / 92%) 0%, rgb(11 18 23 / 72%) 34%, rgb(11 18 23 / 0%) 64%), linear-gradient(0deg, rgb(11 18 23 / 55%), transparent 30%); }
.play-stage:has(iframe:not([hidden]))::before { display: none; }
.play-cover { position: relative; flex: 1 0 auto; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; padding: 48px 56px; }
.play-cover[hidden], .play-stage iframe[hidden] { display: none; }
.play-cover-kicker { display: inline-flex; align-items: center; gap: 9px; color: var(--night-muted); font-size: 13px; font-weight: 600; }
.play-light { position: relative; width: 7px; height: 7px; border-radius: 50%; background: #8ff0c4; box-shadow: 0 0 10px rgb(143 240 196 / 70%); }
.play-light::after { content: ''; position: absolute; inset: -4px; border-radius: 50%; border: 1px solid #8ff0c4; opacity: 0; animation: ping 2.4s var(--ease) infinite; }
.play-light.is-waiting { background: var(--amber); box-shadow: 0 0 10px rgb(255 198 64 / 60%); }
.play-light.is-waiting::after { border-color: var(--amber); }
.play-cover h2 { margin-top: 16px; color: #fff; font-size: clamp(30px, 3.4vw, 46px); font-weight: 740; line-height: 1.2; letter-spacing: -.05em; }
.play-cover > p:not(.play-cover-kicker, .play-small) { margin-top: 16px; color: #b9c7cf; font-size: 15px; line-height: 1.8; }
.play-start { display: inline-flex; align-items: center; gap: 22px; min-height: 54px; margin-top: 28px; padding: 14px 20px 14px 24px; border: 0; border-radius: 12px; background: var(--amber); color: #1d1606; font: inherit; font-size: 15px; font-weight: 700; cursor: pointer;
    box-shadow: 0 1px 0 rgb(255 255 255 / 45%) inset, 0 12px 34px -12px rgb(255 198 64 / 65%); transition: background-color .2s, box-shadow .25s var(--ease), transform .2s var(--ease); }
.play-start:hover { background: #ffd263; box-shadow: 0 1px 0 rgb(255 255 255 / 45%) inset, 0 16px 40px -12px rgb(255 198 64 / 80%); }
.play-start:hover .arrow-icon { transform: translateX(3px); }
.play-start:active { transform: translateY(1px); }
.play-start:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
.play-small { margin-top: 14px; color: var(--night-muted); font-size: 12.5px; }
.play-stage iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: var(--night); }
.play-stage:fullscreen { border-radius: 0; aspect-ratio: auto; }

.play-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 52px; padding-block: 10px 28px; color: var(--muted); font-size: 13px; }
.play-toolbar > div { display: flex; gap: 8px; }
.play-toolbar button { min-height: 38px; padding: 6px 14px; border: 1px solid var(--line-strong); border-radius: 999px; background: transparent; color: var(--ink); font-size: 13px; font-weight: 560; transition: background-color .2s, border-color .2s; }
.play-toolbar button:hover { border-color: var(--ink); background: var(--surface); }

.play-notes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; padding-top: 32px; border-top: 1px solid var(--ink); }
.play-note-index { color: var(--green); font-size: 12.5px; font-weight: 650; letter-spacing: .04em; font-variant-numeric: tabular-nums; }
.play-notes h3 { margin-top: 8px; font-size: 19px; font-weight: 680; letter-spacing: -.03em; }
.play-notes p { margin-top: 10px; color: var(--muted); font-size: 14.5px; line-height: 1.95; }
.play-notes a { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; margin-top: 6px; color: var(--ink); font-size: 14px; font-weight: 600; }
.play-notes a .arrow-icon { width: 17px; height: 17px; }
.play-notes a:hover .arrow-icon { transform: translateX(3px); }
/* Keys drawn as keys: a cap, a lip below, the letter set a little high. */
kbd { display: inline-grid; place-items: center; min-width: 24px; height: 24px; margin: 0 2px; padding: 0 6px 1px; border-radius: 6px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line-strong), 0 2px 0 var(--line-strong);
    color: var(--ink); font: 650 11.5px/1 'Wanted Sans', sans-serif; vertical-align: 2px; }
kbd + kbd { margin-left: 0; }

@media (max-width: 900px) {
    .play-heading { flex-direction: column; align-items: flex-start; gap: 20px; }
    .play-tags { justify-content: flex-start; }
    .play-stage { aspect-ratio: auto; min-height: 520px; }
    /* On a narrow stage the gate and the swarm stay in view at the top; the words take the dark below. */
    .play-stage::before { background: linear-gradient(0deg, rgb(11 18 23 / 97%) 0%, rgb(11 18 23 / 88%) 42%, rgb(11 18 23 / 20%) 72%, rgb(11 18 23 / 0%) 100%); }
    .play-backdrop { object-position: 16% 50%; }
    .play-cover { justify-content: flex-end; padding: 32px 28px; }
    .play-notes { grid-template-columns: minmax(0, 1fr); gap: 28px; }
}
@media (max-width: 600px) {
    .play-page { padding-block: 24px 72px; }
    .play-heading { margin: 24px 0 24px; }
    .play-stage { min-height: 500px; margin-inline: -6px; border-radius: 18px; }
    .play-cover { padding: 26px 22px; }
    .play-start { width: 100%; justify-content: space-between; }
    .play-toolbar { flex-direction: column; align-items: flex-start; }
}
@media (prefers-reduced-motion: reduce) {
    .play-light::after { animation: none; }
}
