:root {
    --case-ink: #1f3038;
    --case-blue: #5084a3;
    --case-blue-deep: #37677f;
    --case-blue-pale: #dcebef;
    --case-brass: #db9507;
    --case-paper: #fff8e5;
    --case-rust: #ad3e2c;
    --case-truth: #27785d;
    --case-white: #fffdf8;
}

body.multiplayer-landing-page {
    min-height: 100vh;
    background:
        linear-gradient(rgba(31, 48, 56, 0.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(31, 48, 56, 0.035) 1px, transparent 1px),
        var(--case-blue-pale);
    background-size: 30px 30px;
    color: var(--case-ink);
    font-family: "Atkinson Hyperlegible", Arial, sans-serif;
}

body.multiplayer-landing-page #app.multiplayer-landing-shell {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
}

.multiplayer-landing-page #header-content,
.multiplayer-landing-page .hr-header,
.multiplayer-landing-page > .multiplayer-landing-shell > .intro-footer,
.multiplayer-landing-page > .multiplayer-landing-shell > .ad-container {
    width: min(1180px, calc(100% - 48px));
    margin-left: auto;
    margin-right: auto;
}

.multiplayer-landing-page #header-content {
    padding-top: 12px;
}

.multiplayer-landing-page .hr-header {
    height: 2px;
    margin-top: 8px;
    margin-bottom: 0;
    border: 0;
    background: var(--case-ink);
}

.party-main {
    overflow: hidden;
}

.case-eyebrow,
.case-kicker {
    margin: 0 0 9px;
    color: var(--case-rust);
    font: 600 0.74rem/1.2 "IBM Plex Mono", monospace;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.party-hero {
    width: min(1180px, calc(100% - 48px));
    min-height: 720px;
    display: grid;
    grid-template-columns: minmax(0, 0.92fr) minmax(400px, 1.08fr);
    gap: clamp(45px, 7vw, 100px);
    align-items: center;
    margin: 0 auto;
    padding: 65px 0 86px;
}

.party-hero h1,
.party-round-rail h2,
.party-hall h2,
.party-final-cta h2 {
    margin: 0;
    color: var(--case-ink);
    font-family: "Staatliches", Impact, sans-serif;
    font-weight: 400;
    letter-spacing: 0.015em;
}

.party-hero h1 {
    font-size: clamp(4.2rem, 8vw, 7.2rem);
    line-height: 0.83;
}

.party-hero-copy > p:nth-of-type(2) {
    max-width: 610px;
    margin: 23px 0 25px;
    color: #3d5661;
    font-size: clamp(1.04rem, 2vw, 1.2rem);
    line-height: 1.48;
}

.party-primary-actions {
    display: grid;
    gap: 10px;
    max-width: 590px;
}

.party-primary-actions #quick-play-btn.party-instant-button,
.party-create-button {
    width: 100%;
    min-height: 74px;
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 14px;
    align-items: center;
    padding: 13px 17px;
    border: 2px solid var(--case-ink);
    border-radius: 0;
    color: var(--case-ink);
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    transition: transform 140ms ease, box-shadow 140ms ease;
}

.party-primary-actions #quick-play-btn.party-instant-button {
    max-width: none;
    margin: 0;
    background: var(--case-brass);
    box-shadow: none;
    font-family: inherit;
}

.party-primary-actions #quick-play-btn.party-instant-button:hover:not(:disabled),
.party-create-button:hover {
    transform: translate(-2px, -2px);
    box-shadow: 5px 5px 0 var(--case-ink);
    background: inherit;
}

.party-create-button {
    background: var(--case-white);
}

.party-primary-actions strong,
.party-primary-actions small {
    display: block;
}

.party-primary-actions strong {
    font-size: 1.03rem;
}

.party-primary-actions small {
    margin-top: 4px;
    color: var(--case-ink);
    font: 500 0.68rem/1.25 "IBM Plex Mono", monospace;
}

.party-action-icon {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border: 1px solid var(--case-ink);
    background: rgba(255, 255, 255, 0.35);
    font-size: 1.15rem;
}

.party-secondary-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    margin-top: 17px;
}

.party-secondary-actions button,
.party-secondary-actions a {
    padding: 5px 0;
    border: 0;
    background: none;
    color: var(--case-rust);
    font: 700 0.92rem/1.2 inherit;
    text-decoration: underline;
    text-underline-offset: 4px;
    cursor: pointer;
}

.party-secondary-actions i {
    margin-right: 5px;
}

.party-auth-note {
    margin: 15px 0 0 !important;
    color: #5c7078 !important;
    font-size: 0.82rem !important;
}

.party-proof-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 7px 22px;
    margin-top: 25px;
    padding-top: 17px;
    border-top: 1px solid rgba(31, 48, 56, 0.28);
    color: #5a6e76;
    font: 500 0.68rem/1.4 "IBM Plex Mono", monospace;
    text-transform: uppercase;
}

.party-proof-strip b {
    color: var(--case-ink);
}

.party-case-stack {
    position: relative;
    padding: 26px 8px 8px 20px;
}

.party-case-card {
    position: relative;
    z-index: 2;
    padding: clamp(24px, 4vw, 42px);
    border: 2px solid var(--case-ink);
    background:
        linear-gradient(rgba(99, 76, 31, 0.025) 50%, transparent 50%),
        var(--case-paper);
    background-size: 100% 7px;
    box-shadow: 10px 12px 0 rgba(31, 48, 56, 0.2);
    transform: rotate(1deg);
}

.party-case-back {
    position: absolute;
    inset: 10px 23px 28px 0;
    z-index: 1;
    padding: 0;
    background: var(--case-blue);
    transform: rotate(-3deg);
    box-shadow: none;
}

.case-file-tab {
    position: absolute;
    top: -28px;
    left: 27px;
    padding: 7px 15px 5px;
    border: 2px solid var(--case-ink);
    border-bottom: 0;
    background: var(--case-brass);
    color: var(--case-ink);
    font: 600 0.68rem/1.2 "IBM Plex Mono", monospace;
    letter-spacing: 0.08em;
}

.party-case-card h2 {
    margin: 3px 0 4px;
    color: var(--case-ink);
    font: 400 clamp(2.8rem, 6vw, 4.8rem)/0.9 "Staatliches", Impact, sans-serif;
    letter-spacing: 0.035em;
    overflow-wrap: anywhere;
}

.party-word-meta {
    margin: 8px 0 22px;
    color: #5d717a;
    font: 500 0.72rem/1.3 "IBM Plex Mono", monospace;
}

.party-example-statements {
    position: relative;
    z-index: 1;
    display: grid;
    gap: 9px;
}

.party-example-statements p {
    position: relative;
    display: grid;
    grid-template-columns: 30px 1fr;
    gap: 11px;
    align-items: start;
    margin: 0;
    padding: 12px;
    border: 2px solid rgba(31, 48, 56, 0.62);
    background: var(--case-white);
    color: var(--case-ink);
    line-height: 1.35;
}

.party-example-statements p > span {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border: 1px solid var(--case-ink);
    background: var(--case-paper);
    font: 600 0.72rem/1 "IBM Plex Mono", monospace;
}

.party-example-statements p b {
    position: absolute;
    right: 9px;
    top: -8px;
    padding: 3px 6px;
    border: 1px solid currentColor;
    background: var(--case-paper);
    font: 600 0.58rem/1 "IBM Plex Mono", monospace;
    letter-spacing: 0.07em;
    transform: rotate(2deg);
}

.party-example-statements .is-winning-bluff {
    border-color: var(--case-rust);
    background: #faebe6;
}

.party-example-statements .is-winning-bluff b {
    color: var(--case-rust);
}

.party-example-statements .is-truth {
    border-color: var(--case-truth);
    background: #e7f4ed;
}

.party-example-statements .is-truth b {
    color: var(--case-truth);
}

.party-reaction-row {
    display: flex;
    align-items: center;
    gap: 7px;
    margin-top: 16px;
}

.party-reaction-row span {
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border: 1px solid rgba(31, 48, 56, 0.35);
    border-radius: 50%;
    background: var(--case-white);
}

.party-reaction-row strong {
    margin-left: auto;
    color: var(--case-truth);
    font: 600 0.8rem/1 "IBM Plex Mono", monospace;
}

.party-round-rail {
    padding: 76px max(24px, calc((100vw - 1180px) / 2));
    background: var(--case-ink);
}

.party-round-rail > div,
.party-round-rail ol {
    max-width: 1180px;
    margin-left: auto;
    margin-right: auto;
}

.party-round-rail .case-eyebrow {
    color: #efb137;
}

.party-round-rail h2 {
    color: var(--case-white);
    font-size: clamp(2.8rem, 5vw, 4.6rem);
    line-height: 0.94;
}

.party-round-rail ol {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    margin-top: 32px;
    padding: 0;
    list-style: none;
}

.party-round-rail li {
    min-height: 120px;
    padding: 17px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-right: 0;
}

.party-round-rail li:last-child {
    border-right: 1px solid rgba(255, 255, 255, 0.25);
    background: var(--case-brass);
}

.party-round-rail li span,
.party-round-rail li strong {
    display: block;
}

.party-round-rail li span {
    margin-bottom: 24px;
    color: #f3b53c;
    font: 600 0.66rem/1 "IBM Plex Mono", monospace;
    letter-spacing: 0.08em;
}

.party-round-rail li strong {
    color: var(--case-white);
    line-height: 1.25;
}

.party-round-rail li:last-child span,
.party-round-rail li:last-child strong {
    color: var(--case-ink);
}

.party-live-grid {
    width: min(1180px, calc(100% - 48px));
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(300px, 0.55fr);
    gap: 18px;
    margin: 0 auto;
    padding: 92px 0;
}

.party-hall,
.party-daily-case,
.party-variety-card {
    border: 2px solid var(--case-ink);
    background: var(--case-paper);
}

.party-hall {
    padding: clamp(22px, 4vw, 40px);
}

.party-hall > header {
    display: flex;
    justify-content: space-between;
    gap: 25px;
    align-items: end;
    margin-bottom: 24px;
}

.party-hall h2,
.party-final-cta h2 {
    font-size: clamp(2.6rem, 5vw, 4.2rem);
    line-height: 0.95;
}

.party-hall > header a,
.party-daily-case a {
    color: var(--case-rust);
    font-weight: 700;
    text-underline-offset: 4px;
}

.party-hall-list {
    border-top: 2px solid var(--case-ink);
}

.party-hall-entry {
    display: grid;
    grid-template-columns: 38px 1fr auto;
    gap: 14px;
    padding: 17px 0;
    border-bottom: 1px solid rgba(31, 48, 56, 0.24);
}

.party-hall-index,
.party-hall-word,
.party-hall-byline {
    font-family: "IBM Plex Mono", monospace;
}

.party-hall-index {
    color: var(--case-rust);
    font-size: 0.72rem;
}

.party-hall-word {
    margin: 0 0 5px;
    color: var(--case-ink);
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.07em;
    text-transform: uppercase;
}

.party-hall blockquote {
    margin: 0;
    color: var(--case-ink);
    font-size: 1.03rem;
    line-height: 1.4;
}

.party-hall-byline {
    margin: 7px 0 0;
    color: #647880;
    font-size: 0.63rem;
}

.party-hall-like {
    align-self: center;
    display: inline-flex;
    gap: 5px;
    align-items: center;
    padding: 7px 9px;
    border: 1px solid rgba(31, 48, 56, 0.4);
    background: var(--case-white);
    color: #7b8b91;
    cursor: pointer;
}

.party-hall-like.liked {
    color: var(--case-rust);
    border-color: var(--case-rust);
}

.party-content-loading,
.party-hall-empty {
    padding: 28px 12px;
    color: #60747d;
    text-align: center;
}

.party-content-loading > span {
    width: 13px;
    height: 13px;
    display: inline-block;
    margin-right: 7px;
    border: 2px solid rgba(31, 48, 56, 0.2);
    border-top-color: var(--case-rust);
    border-radius: 50%;
    animation: party-spin 0.8s linear infinite;
}

@keyframes party-spin { to { transform: rotate(360deg); } }

.party-side-docket {
    display: grid;
    gap: 18px;
}

.party-daily-case,
.party-variety-card {
    padding: 24px;
}

.party-daily-case h3,
.party-variety-card h3 {
    margin: 0;
    color: var(--case-ink);
    font: 400 clamp(2.2rem, 4vw, 3.2rem)/0.95 "Staatliches", Impact, sans-serif;
    overflow-wrap: anywhere;
}

.party-daily-case p,
.party-variety-card p {
    color: #536a73;
    line-height: 1.4;
}

.party-daily-meta {
    font: 500 0.68rem/1.4 "IBM Plex Mono", monospace;
}

.party-variety-card {
    background: var(--case-blue-deep);
}

.party-variety-card h3 {
    color: var(--case-paper);
}

.party-variety-card .case-eyebrow,
.party-variety-card h3 em {
    color: #ffe09b;
}

.party-variety-card h3 em {
    font-style: normal;
}

.party-variety-card p {
    color: var(--case-white);
}

.party-variety-card > div {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 18px;
}

.party-variety-card > div span {
    padding: 5px 7px;
    border: 1px solid rgba(255, 255, 255, 0.55);
    color: var(--case-white);
    font: 600 0.56rem/1 "IBM Plex Mono", monospace;
}

.party-final-cta {
    width: min(1180px, calc(100% - 48px));
    display: flex;
    justify-content: space-between;
    gap: 30px;
    align-items: center;
    margin: 0 auto 84px;
    padding: clamp(30px, 6vw, 62px);
    border: 2px solid var(--case-ink);
    background: var(--case-paper);
    box-shadow: 9px 10px 0 rgba(31, 48, 56, 0.18);
}

.party-final-cta a {
    min-height: 54px;
    display: inline-flex;
    gap: 15px;
    align-items: center;
    padding: 12px 20px;
    border: 2px solid var(--case-ink);
    background: var(--case-brass);
    color: var(--case-ink);
    font-weight: 700;
    text-decoration: none;
}

.multiplayer-landing-page .intro-footer {
    padding-bottom: 30px;
}

.party-join-modal[hidden] {
    display: none !important;
}

.party-join-modal {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: grid !important;
    place-items: center;
    padding: 18px;
    background: rgba(31, 48, 56, 0.76);
}

.party-join-modal .mp-modal-content {
    width: min(100%, 440px);
    padding: 30px;
    border: 2px solid var(--case-ink);
    border-radius: 0;
    background: var(--case-paper);
    box-shadow: 9px 10px 0 var(--case-brass);
}

.party-join-modal h2 {
    margin: 0 0 6px;
    color: var(--case-ink);
    font: 400 2.6rem/1 "Staatliches", Impact, sans-serif;
}

.party-join-modal p:not(.case-eyebrow) {
    margin: 0 0 18px;
    color: #586c75;
}

.party-join-modal #roomCodeInput {
    width: 100%;
    padding: 13px;
    border: 2px solid var(--case-ink);
    border-radius: 0;
    background: var(--case-white);
    color: var(--case-ink);
    font: 600 1.35rem/1 "IBM Plex Mono", monospace;
    letter-spacing: 0.18em;
    text-align: center;
    text-transform: uppercase;
}

.party-join-modal .mp-modal-buttons {
    margin-top: 14px;
}

.party-join-modal .mp-button {
    border-radius: 0;
}

.party-join-modal .mp-error {
    margin-top: 12px;
    color: var(--case-rust);
}

.party-primary-actions :focus-visible,
.party-secondary-actions :focus-visible,
.party-hall a:focus-visible,
.party-hall-like:focus-visible,
.party-daily-case a:focus-visible,
.party-final-cta a:focus-visible,
.party-join-modal :focus-visible {
    outline: 3px solid var(--case-brass);
    outline-offset: 4px;
}

@media (max-width: 900px) {
    .party-hero {
        min-height: auto;
        grid-template-columns: 1fr;
        padding-top: 54px;
    }

    .party-hero-copy {
        max-width: 720px;
    }

    .party-case-stack {
        width: min(100%, 700px);
        margin: 5px auto 0;
    }

    .party-live-grid {
        grid-template-columns: 1fr;
    }

    .party-side-docket {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 680px) {
    .multiplayer-landing-page #header-content,
    .multiplayer-landing-page .hr-header,
    .multiplayer-landing-page > .multiplayer-landing-shell > .intro-footer,
    .multiplayer-landing-page > .multiplayer-landing-shell > .ad-container,
    .party-hero,
    .party-live-grid,
    .party-final-cta {
        width: calc(100% - 24px);
    }

    .party-hero {
        gap: 55px;
        padding-bottom: 62px;
    }

    .party-case-stack {
        padding-left: 5px;
    }

    .party-case-card {
        padding: 25px 14px 18px;
        box-shadow: 6px 7px 0 rgba(31, 48, 56, 0.2);
        transform: none;
    }

    .party-case-back {
        display: none;
    }

    .case-file-tab {
        left: 12px;
    }

    .party-round-rail {
        padding: 62px 12px;
    }

    .party-round-rail ol {
        grid-template-columns: 1fr 1fr;
    }

    .party-round-rail li:nth-child(2) {
        border-right: 1px solid rgba(255, 255, 255, 0.25);
    }

    .party-round-rail li:nth-child(n+3) {
        border-top: 0;
    }

    .party-hall > header,
    .party-final-cta {
        align-items: flex-start;
        flex-direction: column;
    }

    .party-hall-entry {
        grid-template-columns: 28px 1fr;
    }

    .party-hall-like {
        grid-column: 2;
        justify-self: start;
    }

    .party-side-docket {
        grid-template-columns: 1fr;
    }

    .party-final-cta {
        margin-bottom: 65px;
        padding: 34px 20px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .party-primary-actions > *,
    .party-content-loading > span {
        animation: none !important;
        transition: none !important;
    }
}
