.wp-block-hustoj-edu-games-binary-arcade,
.hustoj-binary-arcade-block {
    margin: 0;
    box-sizing: border-box;
    position: relative;
    left: 50%;
    width: 100vw !important;
    max-width: 100vw !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding: 0 12px;
    transform: translateX(-50%);
    overflow-x: clip;
}

.oj-binary-shell {
    --board-bg: #0f5b7f;
    --board-grid: rgba(94, 202, 234, 0.18);
    --board-header: #1eb0d8;
    --board-accent: #ffb01a;
    --board-accent-soft: rgba(255, 176, 26, 0.18);
    --board-side: #73c547;
    --board-text: #f8fdff;
    --board-ink: #07364b;
    --binary-cols: 8;
    --mode-col: 96px;
    --prompt-col: 156px;
    --answer-col: 134px;
    width: min(1700px, calc(100vw - 24px));
    max-width: 100%;
    margin: 0 auto;
    color: var(--board-text);
    font-family: "Trebuchet MS", "Arial Rounded MT Bold", Arial, sans-serif;
}

.oj-binary-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 12px;
}

.oj-binary-brand h2 {
    margin: 0;
    font-size: clamp(1.6rem, 2.4vw, 2.5rem);
    line-height: 1.05;
}

.oj-binary-kicker {
    margin: 0 0 6px;
    font-size: 0.8rem;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: #7fdcff;
}

.oj-binary-button,
.oj-binary-row-bit,
.oj-binary-answer-input {
    font: inherit;
}

.oj-binary-button {
    min-width: 120px;
    min-height: 52px;
    padding: 0 20px;
    border: 0;
    border-radius: 8px;
    background: var(--board-accent);
    color: #08354a;
    font-weight: 700;
    cursor: pointer;
}

.oj-binary-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 220px;
    gap: 14px;
    align-items: stretch;
    width: 100%;
    overflow: hidden;
}

.oj-binary-board {
    position: relative;
    min-width: 0;
    min-height: 860px;
    background:
        linear-gradient(0deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px),
        var(--board-bg);
    background-size: 100% 56px, auto;
    border: 6px solid #ffffff;
    overflow: hidden;
}

.oj-binary-board-head {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: var(--mode-col) var(--prompt-col) minmax(0, 1fr) var(--answer-col);
    align-items: stretch;
    background: var(--board-header);
    color: #ffffff;
}

.oj-binary-grid-mode,
.oj-binary-grid-prompt,
.oj-binary-grid-answer {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    font-size: 0.9rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.oj-binary-grid-bits {
    display: grid;
    grid-template-columns: repeat(var(--binary-cols), minmax(0, 1fr));
}

.oj-binary-grid-cell {
    min-height: 50px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-left: 2px solid rgba(255, 255, 255, 0.72);
    font-size: 0.95rem;
    font-weight: 700;
}

.oj-binary-danger-line {
    position: absolute;
    top: 108px;
    left: 0;
    right: 0;
    height: 2px;
    background: rgba(255, 82, 82, 0.85);
    z-index: 1;
}

.oj-binary-danger-line span {
    position: absolute;
    top: -24px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: #ff9a9a;
    text-transform: uppercase;
}

.oj-binary-lanes {
    position: relative;
    min-height: 804px;
    background:
        linear-gradient(90deg, transparent calc(var(--mode-col) - 1px), rgba(94, 202, 234, 0.18) calc(var(--mode-col) - 1px), rgba(94, 202, 234, 0.18) var(--mode-col), transparent var(--mode-col)),
        linear-gradient(90deg, transparent calc(var(--mode-col) + var(--prompt-col) - 1px), rgba(94, 202, 234, 0.18) calc(var(--mode-col) + var(--prompt-col) - 1px), rgba(94, 202, 234, 0.18) calc(var(--mode-col) + var(--prompt-col)), transparent calc(var(--mode-col) + var(--prompt-col))),
        linear-gradient(90deg, transparent calc(100% - var(--answer-col) - 1px), rgba(94, 202, 234, 0.18) calc(100% - var(--answer-col) - 1px), rgba(94, 202, 234, 0.18) calc(100% - var(--answer-col)), transparent calc(100% - var(--answer-col)));
    background-repeat: no-repeat;
}

.oj-binary-lanes::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: calc(var(--mode-col) + var(--prompt-col));
    width: calc(100% - var(--mode-col) - var(--prompt-col) - var(--answer-col));
    background: linear-gradient(90deg, rgba(94, 202, 234, 0.18) 1px, transparent 1px);
    background-size: calc(100% / var(--binary-cols)) 100%;
    pointer-events: none;
    z-index: 0;
}

.oj-binary-row {
    position: absolute;
    left: 0;
    right: 0;
    display: grid;
    grid-template-columns: var(--mode-col) var(--prompt-col) minmax(0, 1fr) var(--answer-col);
    align-items: center;
    gap: 0;
    min-height: 110px;
    padding: 10px 0;
    background: transparent;
    z-index: 1;
}

.oj-binary-row-mode {
    justify-self: center;
    min-width: 76px;
    min-height: 68px;
    padding: 0 12px;
    border-radius: 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 176, 26, 0.96);
    color: #08354a;
    font-size: 0.96rem;
    font-weight: 700;
}

.oj-binary-row-prompt {
    justify-self: center;
    min-width: 0;
    font-size: clamp(1.5rem, 2vw, 2.05rem);
    font-weight: 700;
    color: #ffffff;
    letter-spacing: 0.04em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: clip;
}

.oj-binary-row-prompt.is-binary {
    font-size: clamp(1.15rem, 1.35vw, 1.45rem);
    letter-spacing: 0.02em;
}

.oj-binary-row-bits {
    display: grid;
    grid-template-columns: repeat(var(--binary-cols), minmax(0, 1fr));
    gap: 0;
    padding: 0;
}

.oj-binary-row-bit {
    width: calc(100% - 10px);
    min-height: 78px;
    border: 2px solid #ffbf3e;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    justify-self: center;
    background: rgba(3, 57, 82, 0.18);
    color: #ffbf3e;
    font-size: 1.28rem;
    font-weight: 700;
    cursor: pointer;
    user-select: none;
}

.oj-binary-row-bit.is-on {
    background: rgba(255, 176, 26, 0.98);
    color: #08354a;
}

.oj-binary-row-bit.is-readonly {
    cursor: default;
    pointer-events: none;
}

.oj-binary-row-bit.is-empty {
    visibility: hidden;
    pointer-events: none;
}

.oj-binary-row-answer {
    padding: 0 10px 0 12px;
}

.oj-binary-answer-input,
.oj-binary-answer-output {
    width: 100%;
    min-height: 78px;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.22rem;
    font-weight: 700;
    text-align: center;
}

.oj-binary-answer-input {
    border: 0;
    background: #f5f5f5;
    color: #0b4f6d;
    outline: none;
}

.oj-binary-answer-output {
    background: rgba(255, 255, 255, 0.14);
    color: #ffffff;
    border: 2px solid rgba(255, 255, 255, 0.26);
}

.oj-binary-sidebar {
    display: grid;
    grid-template-rows: repeat(5, minmax(86px, auto));
    gap: 2px;
    background: #ffffff;
    border: 6px solid #ffffff;
    min-width: 0;
}

.oj-binary-sidecard {
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 10px;
    background: var(--board-side);
    color: #ffffff;
}

.oj-binary-sidecard span {
    font-size: 0.92rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.oj-binary-sidecard strong {
    font-size: 2rem;
    line-height: 1;
    text-align: right;
}

.oj-binary-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(5, 38, 54, 0.68);
    opacity: 0;
    pointer-events: none;
    transition: opacity 160ms ease;
    z-index: 200;
}

.oj-binary-overlay.is-visible {
    opacity: 1;
    pointer-events: auto;
}

.oj-binary-overlay-card {
    min-width: min(360px, 92%);
    padding: 28px;
    text-align: center;
    border-radius: 12px;
    background: #ffffff;
    color: #0a4d6b;
}

.oj-binary-overlay-card p {
    margin: 0 0 10px;
    font-size: 1rem;
    font-weight: 700;
}

.oj-binary-overlay-card strong {
    display: block;
    margin-bottom: 20px;
    font-size: clamp(2rem, 4vw, 3rem);
}

.oj-binary-popup {
    position: absolute;
    right: 18px;
    padding: 10px 14px;
    border-radius: 6px;
    background: #ffffff;
    color: #0a4d6b;
    font-weight: 700;
    z-index: 3;
}

@media (max-width: 1500px) {
    .oj-binary-board {
        min-height: 780px;
    }

    .oj-binary-lanes {
        min-height: 724px;
    }

    .oj-binary-row {
        min-height: 100px;
    }

    .oj-binary-row-bit,
    .oj-binary-answer-input,
    .oj-binary-answer-output {
        min-height: 68px;
        font-size: 1.06rem;
    }
}

@media (max-width: 1500px) {
    .oj-binary-layout {
        grid-template-columns: 1fr;
    }

    .oj-binary-sidebar {
        grid-template-columns: repeat(5, minmax(0, 1fr));
        grid-template-rows: none;
    }
}

@media (max-width: 920px) {
    .wp-block-hustoj-edu-games-binary-arcade,
    .hustoj-binary-arcade-block {
        padding: 0 6px;
    }

    .oj-binary-board {
        min-height: 900px;
        background-size: calc((100% - 20px) / var(--binary-cols)) 100%, 100% 56px, auto;
    }

    .oj-binary-board-head {
        grid-template-columns: 1fr;
    }

    .oj-binary-grid-mode,
    .oj-binary-grid-prompt,
    .oj-binary-grid-answer {
        display: none;
    }

    .oj-binary-lanes {
        min-height: 844px;
    }

    .oj-binary-row {
        grid-template-columns: 1fr;
        gap: 10px;
        padding: 10px;
    }

    .oj-binary-row-mode,
    .oj-binary-row-prompt {
        justify-self: start;
    }

    .oj-binary-row-answer {
        padding: 0;
    }
}

@media (max-width: 640px) {
    .oj-binary-shell {
        width: calc(100vw - 12px);
    }

    .oj-binary-topbar {
        flex-direction: column;
        align-items: stretch;
    }

    .oj-binary-row-bits {
        gap: 0;
        padding: 0;
    }

    .oj-binary-row-bit,
    .oj-binary-answer-input,
    .oj-binary-answer-output {
        min-height: 52px;
        font-size: 0.92rem;
    }

    .oj-binary-row-bit {
        width: calc(100% - 4px);
    }

    .oj-binary-sidebar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
