:root {
    --battle-ink: #050d0a;
    --battle-panel: #0a1813;
    --battle-panel-soft: #10231c;
    --battle-gold: #d5ad62;
    --battle-gold-bright: #f2d998;
    --battle-ivory: #eee8d8;
    --battle-muted: #93a39a;
    --battle-line: rgba(213, 173, 98, 0.25);
    color-scheme: dark;
}

* { box-sizing: border-box; }
html { min-width: 320px; background: var(--battle-ink); }
body {
    min-height: 100vh;
    margin: 0;
    color: var(--battle-ivory);
    font-family: "Noto Serif SC", "Source Han Serif SC", "Microsoft YaHei", serif;
    background:
        linear-gradient(rgba(213, 173, 98, 0.025) 1px, transparent 1px),
        linear-gradient(90deg, rgba(213, 173, 98, 0.025) 1px, transparent 1px),
        radial-gradient(circle at 50% -10%, rgba(65, 139, 112, 0.2), transparent 45%),
        var(--battle-ink);
    background-size: 40px 40px, 40px 40px, auto, auto;
}

button, select, a { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; }

.battle-sitebar {
    position: relative;
    z-index: 20;
    min-height: 72px;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 24px;
    padding: 0 32px;
    border-bottom: 1px solid var(--battle-line);
    background: rgba(5, 13, 10, 0.9);
    backdrop-filter: blur(16px);
}

.battle-brand {
    width: max-content;
    display: flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
}

.battle-brand-mark {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border: 1px solid var(--battle-gold);
    color: var(--battle-gold-bright);
    font: 0.72rem Georgia, serif;
    transform: rotate(45deg);
}

.battle-brand > span:last-child { display: grid; line-height: 1.05; }
.battle-brand strong { font-size: 0.9rem; letter-spacing: 0.1em; }
.battle-brand small { margin-top: 5px; color: var(--battle-muted); font: 0.52rem Georgia, serif; letter-spacing: 0.18em; }
.battle-sitebar-title { color: var(--battle-muted); font-size: 0.72rem; letter-spacing: 0.2em; }
.battle-sitebar-actions { justify-self: end; display: flex; gap: 18px; }
.battle-sitebar-actions a { color: var(--battle-muted); font-size: 0.78rem; text-decoration: none; letter-spacing: 0.06em; }
.battle-sitebar-actions a:hover { color: var(--battle-gold-bright); }

.glory-battle-app { width: min(1500px, calc(100% - 64px)); margin: 0 auto; }
.battle-stage { display: none; min-height: calc(100vh - 72px); padding: 62px 0 80px; }
.battle-stage.is-active { display: block; animation: battle-stage-in 0.65s ease both; }
@keyframes battle-stage-in { from { opacity: 0; transform: translateY(16px); } }

.battle-stage-heading { max-width: 820px; margin: 0 auto 44px; text-align: center; }
.battle-stage-heading p,
.battle-eyebrow,
.battle-dialog-kicker { margin: 0 0 12px; color: var(--battle-gold); font: 0.7rem Georgia, serif; letter-spacing: 0.32em; }
.battle-stage-heading h1,
.battle-stage-heading h2 { margin: 0 0 14px; color: var(--battle-ivory); font-size: clamp(2rem, 4vw, 4.1rem); font-weight: 400; letter-spacing: 0.05em; }
.battle-stage-heading > span { color: var(--battle-muted); line-height: 1.8; }
.battle-stage-heading-compact { margin-bottom: 30px; }
.battle-stage-heading-compact h2 { font-size: clamp(1.8rem, 3vw, 3.2rem); }

.battle-selection-grid {
    display: grid;
    grid-template-columns: minmax(280px, 1fr) auto minmax(280px, 1fr);
    gap: 28px;
    align-items: center;
}

.battle-selector {
    position: relative;
    display: grid;
    grid-template-columns: minmax(170px, 0.72fr) minmax(190px, 1fr);
    gap: 28px;
    align-items: center;
    min-height: 390px;
    padding: 28px;
    border: 1px solid var(--battle-line);
    background: linear-gradient(145deg, rgba(18, 42, 33, 0.92), rgba(6, 17, 13, 0.97));
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.26);
}

.battle-player-label { position: absolute; top: 18px; left: 18px; z-index: 3; display: flex; align-items: center; gap: 9px; }
.battle-player-label b { width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid var(--battle-gold); color: var(--battle-gold-bright); font: 1rem Georgia, serif; }
.battle-player-label span { color: var(--battle-muted); font-size: 0.72rem; letter-spacing: 0.12em; }

.battle-selector-card {
    position: relative;
    align-self: stretch;
    min-height: 330px;
    overflow: hidden;
    border: 1px solid rgba(213, 173, 98, 0.42);
    background: #020705;
}
.battle-selector-card img { width: 100%; height: 100%; object-fit: cover; object-position: center top; filter: saturate(0.88) brightness(0.78); }
.battle-selector-card::after { content: ''; position: absolute; inset: 0; background: linear-gradient(transparent 45%, rgba(3, 10, 7, 0.94)); }
.battle-selector-card div { position: absolute; z-index: 2; left: 18px; right: 18px; bottom: 18px; }
.battle-selector-card h3 { margin: 0; font-size: 1.55rem; font-weight: 400; }
.battle-selector-card p { margin: 6px 0 0; color: var(--battle-gold-bright); font-size: 0.76rem; letter-spacing: 0.08em; }

.battle-selector label { display: grid; gap: 12px; color: var(--battle-muted); font-size: 0.76rem; letter-spacing: 0.08em; }
.battle-selector select {
    width: 100%;
    padding: 14px 42px 14px 15px;
    border: 1px solid var(--battle-line);
    border-radius: 0;
    outline: 0;
    color: var(--battle-ivory);
    background: #08130f;
}
.battle-selector select:focus { border-color: var(--battle-gold); }
.battle-text-link { grid-column: 2; width: max-content; color: var(--battle-gold-bright); font-size: 0.78rem; text-underline-offset: 5px; }
.battle-swap-button {
    width: 62px;
    height: 62px;
    display: grid;
    place-items: center;
    border: 1px solid var(--battle-line);
    border-radius: 50%;
    color: var(--battle-gold-bright);
    background: var(--battle-panel);
    cursor: pointer;
    font-size: 1.4rem;
}
.battle-swap-button span { display: none; }
.battle-swap-button:hover { border-color: var(--battle-gold); transform: rotate(180deg); transition: 0.35s ease; }
.battle-selection-error { min-height: 24px; margin: 16px 0 8px; color: #ffb3a8; text-align: center; }

.battle-primary-button,
.battle-secondary-button,
.battle-quiet-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 0 24px;
    border: 1px solid var(--battle-gold);
    border-radius: 0;
    cursor: pointer;
    text-decoration: none;
}
.battle-primary-button { color: #07100d; background: linear-gradient(135deg, var(--battle-gold-bright), var(--battle-gold)); font-weight: 700; }
.battle-secondary-button { color: var(--battle-gold-bright); background: transparent; }
.battle-quiet-button { min-height: 38px; color: var(--battle-muted); border-color: var(--battle-line); background: transparent; }
#battle-prepare-button { display: flex; min-width: 300px; margin: 0 auto; }
.battle-primary-button:hover, .battle-secondary-button:hover { filter: brightness(1.1); }

.battle-gates {
    position: relative;
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(130px, 0.28fr) minmax(260px, 1fr);
    gap: 34px;
    align-items: center;
    max-width: 1050px;
    margin: 0 auto;
}
.battle-gate { position: relative; aspect-ratio: 2 / 3; margin: 0; overflow: hidden; border: 1px solid rgba(213, 173, 98, 0.46); background: #010604; box-shadow: 0 32px 90px rgba(0, 0, 0, 0.42); }
.battle-gate img { width: 100%; height: 100%; object-fit: cover; filter: brightness(0.72) saturate(0.9); transition: transform 1.1s ease, filter 1.1s ease; }
.battle-gate { transition: transform 0.85s cubic-bezier(0.2, 0.7, 0.2, 1), opacity 0.85s ease; }
.battle-gates.is-opening .battle-gate:first-child { transform: translateX(-70px) rotateY(-8deg); opacity: 0; }
.battle-gates.is-opening .battle-gate:last-child { transform: translateX(70px) rotateY(8deg); opacity: 0; }
.battle-gates.is-opening .battle-gate-trigger { transform: scale(1.35); opacity: 0; transition: 0.7s ease; }
.battle-gate::after { content: ''; position: absolute; inset: 0; box-shadow: inset 0 0 70px #020907; pointer-events: none; }
.battle-gate figcaption { position: absolute; z-index: 2; left: 18px; right: 18px; bottom: 18px; display: flex; align-items: center; gap: 12px; padding: 12px; background: rgba(3, 11, 8, 0.8); border: 1px solid var(--battle-line); }
.battle-gate figcaption b { color: var(--battle-gold-bright); font: 1.2rem Georgia, serif; }
.battle-gate figcaption span { font-size: 0.88rem; }
.battle-gate-trigger { aspect-ratio: 1; display: grid; place-items: center; align-content: center; gap: 6px; padding: 12px; border: 1px solid var(--battle-gold); border-radius: 50%; color: var(--battle-gold-bright); background: radial-gradient(circle, #14281f, #050c09 68%); cursor: pointer; box-shadow: 0 0 0 12px rgba(213, 173, 98, 0.05), 0 0 0 13px rgba(213, 173, 98, 0.2), 0 0 45px rgba(213, 173, 98, 0.16); }
.battle-gate-trigger::before { content: ''; position: absolute; width: 115px; aspect-ratio: 1; border: 1px dashed rgba(213, 173, 98, 0.36); border-radius: 50%; animation: battle-rotate 12s linear infinite; }
.battle-gate-trigger span { color: var(--battle-muted); font-size: 0.68rem; letter-spacing: 0.2em; }
.battle-gate-trigger strong { font-size: 1.05rem; font-weight: 400; }
.battle-gate-trigger small { font: 0.48rem Georgia, serif; letter-spacing: 0.15em; }
@keyframes battle-rotate { to { transform: rotate(360deg); } }

.battle-turnbar { min-height: 76px; display: grid; grid-template-columns: 112px 1fr auto; align-items: center; gap: 20px; padding: 10px 18px; border: 1px solid var(--battle-line); background: rgba(9, 25, 19, 0.94); }
.battle-turnbar > div:first-child { display: grid; text-align: center; border-right: 1px solid var(--battle-line); }
.battle-turnbar span { color: var(--battle-muted); font: 0.58rem Georgia, serif; letter-spacing: 0.2em; }
.battle-turnbar strong { color: var(--battle-gold-bright); font: 1.55rem Georgia, serif; white-space: nowrap; }
.battle-turn-copy { display: grid; grid-template-columns: auto 1fr; align-items: baseline; gap: 18px; }
.battle-turn-copy p { margin: 0; color: var(--battle-gold); font-size: 0.78rem; letter-spacing: 0.12em; }
.battle-turn-copy h2 { margin: 0; font-size: 1.25rem; font-weight: 400; }

#battle-duel-stage { padding-top: 24px; padding-bottom: 38px; }

.battle-law-cycle {
    display: grid;
    grid-template-columns: 1fr auto 1fr auto 1fr auto auto;
    align-items: center;
    gap: 10px;
    margin-top: 12px;
    padding: 10px 16px;
    border: 1px solid var(--battle-line);
    background: rgba(5, 16, 11, 0.88);
}
.battle-law-cycle > b { color: var(--battle-gold-bright); font: 1.2rem Georgia, serif; }
.battle-law-cycle > strong { color: var(--battle-muted); font-size: 0.68rem; letter-spacing: 0.08em; }
.battle-law-node { min-height: 46px; display: flex; align-items: center; justify-content: center; gap: 10px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.025); }
.battle-law-node span { font-size: 0.95rem; }
.battle-law-node small { color: var(--battle-muted); font-size: 0.66rem; }
.battle-law-node.is-attack { border-color: rgba(222, 105, 78, 0.55); }
.battle-law-node.is-ultimate { border-color: rgba(210, 157, 255, 0.55); }
.battle-law-node.is-defense { border-color: rgba(84, 201, 191, 0.55); }

.battle-arena { display: grid; grid-template-columns: minmax(280px, 1fr) minmax(250px, 0.7fr) minmax(280px, 1fr); gap: 16px; margin-top: 12px; }
.battle-fighter { --fighter-accent: var(--battle-gold); position: relative; min-height: 270px; overflow: hidden; border: 1px solid rgba(213, 173, 98, 0.28); background: #06100c; transition: border-color 0.25s ease, transform 0.25s ease; }
.battle-fighter.is-active { border-color: var(--fighter-accent); transform: translateY(-4px); box-shadow: 0 18px 55px rgba(0, 0, 0, 0.28), inset 0 0 45px color-mix(in srgb, var(--fighter-accent) 8%, transparent); }
.battle-fighter-art { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center top; filter: brightness(0.7) saturate(0.92); }
.battle-fighter::after { content: ''; position: absolute; inset: 0; background: linear-gradient(transparent 23%, rgba(3, 10, 7, 0.35) 47%, #06100c 80%); }
.battle-fighter-ui { position: relative; z-index: 2; min-height: 270px; display: flex; flex-direction: column; justify-content: flex-end; padding: 15px; }
.battle-fighter-id { position: absolute; top: 18px; left: 18px; width: 40px; height: 40px; display: grid; place-items: center; color: var(--fighter-accent); border: 1px solid var(--fighter-accent); font: 1.15rem Georgia, serif; background: rgba(3, 10, 7, 0.75); }
.battle-fighter-title { margin: 0; font-size: 1.55rem; font-weight: 400; }
.battle-fighter-subtitle { margin: 4px 0 10px; color: var(--fighter-accent); font-size: 0.68rem; }
.battle-meter { margin-top: 10px; }
.battle-meter-label { display: flex; justify-content: space-between; margin-bottom: 6px; color: var(--battle-muted); font-size: 0.7rem; }
.battle-meter-track { height: 9px; overflow: hidden; border: 1px solid rgba(255,255,255,0.12); background: rgba(0,0,0,0.45); }
.battle-meter-fill { display: block; width: var(--meter-value); height: 100%; background: linear-gradient(90deg, #a83535, #e67a5d); transition: width 0.4s ease; }
.battle-meter.energy .battle-meter-fill { background: linear-gradient(90deg, #936c25, var(--battle-gold-bright)); }
.battle-fighter-statuses { min-height: 28px; display: flex; flex-wrap: wrap; gap: 6px; margin-top: 13px; }
.battle-status-chip { padding: 4px 8px; border: 1px solid color-mix(in srgb, var(--fighter-accent) 48%, transparent); color: var(--fighter-accent); background: rgba(3,10,7,0.72); font-size: 0.65rem; }

.battle-command-center { display: grid; grid-template-rows: auto auto minmax(80px, 1fr); gap: 10px; min-width: 0; }
.battle-versus { display: flex; align-items: center; justify-content: center; gap: 22px; padding: 10px; border: 1px solid var(--battle-line); background: rgba(7, 18, 14, 0.88); }
.battle-versus span { color: var(--battle-muted); font: 0.8rem Georgia, serif; }
.battle-versus b { color: var(--battle-gold-bright); font: 1.5rem Georgia, serif; }
.battle-learning-reveal { min-height: 105px; display: grid; gap: 6px; padding: 8px; border: 1px solid var(--battle-line); background: rgba(4, 13, 9, 0.86); text-align: center; }
.battle-learning-reveal > p { margin: auto 0 0; color: var(--battle-gold-bright); font-size: 0.88rem; }
.battle-learning-reveal > strong { margin: 0 0 auto; color: var(--battle-muted); font-size: 0.65rem; font-weight: 400; line-height: 1.6; }
.battle-learning-card { padding: 8px; border-left: 3px solid var(--learning-accent); background: rgba(255,255,255,0.025); text-align: left; }
.battle-learning-card small { display: block; color: var(--learning-accent); font-size: 0.58rem; }
.battle-learning-card strong { display: block; margin: 3px 0; font-size: 0.82rem; }
.battle-learning-card p { margin: 0; color: var(--battle-muted); font-size: 0.58rem; line-height: 1.45; }
.battle-learning-result { padding: 7px; border: 1px solid rgba(213, 173, 98, 0.25); }
.battle-learning-result span { color: var(--battle-gold-bright); font-size: 0.74rem; }
.battle-learning-result p { margin: 3px 0 0; color: var(--battle-muted); font-size: 0.58rem; line-height: 1.4; }
.battle-log { height: 100%; max-height: 88px; overflow-y: auto; padding: 8px; border: 1px solid var(--battle-line); background: rgba(4, 13, 9, 0.75); scrollbar-color: var(--battle-gold) transparent; }
.battle-log p { position: relative; margin: 0; padding: 10px 4px 10px 28px; border-bottom: 1px solid rgba(213, 173, 98, 0.1); color: var(--battle-muted); font-size: 0.74rem; line-height: 1.7; }
.battle-log p::before { content: attr(data-turn); position: absolute; left: 3px; top: 12px; color: var(--battle-gold); font: 0.58rem Georgia, serif; }
.battle-log p.is-important { color: var(--battle-ivory); }

.battle-action-dock { margin-top: 8px; padding: 11px; border: 1px solid var(--battle-line); background: linear-gradient(120deg, rgba(14, 37, 28, 0.98), rgba(5, 15, 11, 0.98)); }
.battle-action-dock > header { display: flex; align-items: center; gap: 18px; margin-bottom: 16px; }
.battle-action-dock > header span { padding: 6px 12px; border: 1px solid var(--battle-gold); color: var(--battle-gold-bright); font-size: 0.7rem; }
.battle-action-dock > header p { margin: 0; color: var(--battle-muted); font-size: 0.75rem; }
.battle-action-buttons { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.battle-skill-button { position: relative; min-height: 140px; padding: 12px 50px 11px 13px; text-align: left; border: 2px solid var(--battle-line); color: var(--battle-ivory); background: rgba(4, 14, 10, 0.82); cursor: pointer; touch-action: manipulation; }
.battle-skill-button.is-attack { border-color: rgba(222, 105, 78, 0.48); }
.battle-skill-button.is-defense { border-color: rgba(84, 201, 191, 0.48); }
.battle-skill-button.is-ultimate { border-color: rgba(210, 157, 255, 0.48); }
.battle-skill-button:hover:not(:disabled) { border-color: var(--battle-gold); background: rgba(24, 50, 39, 0.95); transform: translateY(-2px); }
.battle-skill-button:disabled { cursor: not-allowed; opacity: 0.42; }
.battle-skill-button small { color: var(--battle-gold); font-size: 0.6rem; letter-spacing: 0.1em; }
.battle-skill-button strong { display: block; margin: 7px 0 6px; font-size: 1.12rem; font-weight: 500; }
.battle-skill-button p { margin: 0; color: var(--battle-ivory); font-size: 0.7rem; line-height: 1.5; }
.battle-skill-origin { display: block; margin-top: 6px; color: var(--battle-muted); font-size: 0.57rem; line-height: 1.32; }
.battle-skill-origin i { margin-right: 6px; color: var(--battle-gold); font-style: normal; }
.battle-skill-button b { position: absolute; top: 14px; right: 14px; width: 32px; height: 32px; display: grid; place-items: center; border: 1px solid var(--battle-gold); border-radius: 50%; color: var(--battle-gold-bright); font: 0.9rem Georgia, serif; }

.battle-dialog { width: min(520px, calc(100% - 32px)); padding: 0; border: 1px solid rgba(213, 173, 98, 0.48); color: var(--battle-ivory); background: linear-gradient(145deg, #10231b, #050d0a); box-shadow: 0 30px 100px rgba(0,0,0,0.7); }
.battle-dialog::backdrop { background: rgba(0, 5, 3, 0.78); backdrop-filter: blur(8px); }
.battle-dialog form, .battle-dialog > div { padding: 34px; }
.battle-dialog h2 { margin: 0 0 12px; font-size: 2rem; font-weight: 400; }
.battle-dialog p { color: var(--battle-muted); line-height: 1.8; }
.battle-dialog dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; margin: 24px 0; background: var(--battle-line); }
.battle-dialog dl div { padding: 13px; background: #091610; }
.battle-dialog dt { color: var(--battle-muted); font-size: 0.65rem; }
.battle-dialog dd { margin: 5px 0 0; color: var(--battle-gold-bright); }
.battle-dialog-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 24px; }
.battle-handoff-dialog, .battle-result-dialog { text-align: center; }
.battle-handoff-dialog .battle-primary-button { width: 100%; margin-top: 16px; }
.battle-result-seal { width: 72px; height: 72px; display: grid; place-items: center; margin: 0 auto 18px; border: 1px solid var(--battle-gold); border-radius: 50%; color: var(--battle-gold-bright); box-shadow: 0 0 30px rgba(213, 173, 98, 0.18); }
.battle-result-dialog [hidden] { display: none !important; }

/* Full battle skill card page */
.battle-card-page { --card-accent: var(--battle-gold); }
.battle-card-showcase { width: min(1240px, calc(100% - 64px)); display: grid; grid-template-columns: minmax(320px, 0.8fr) minmax(430px, 0.72fr); gap: clamp(55px, 8vw, 120px); align-items: center; margin: 0 auto; padding: 64px 0 80px; }
.battle-card-copy h1 { max-width: 8em; margin: 0 0 18px; font-size: clamp(2.4rem, 5vw, 4.8rem); font-weight: 400; line-height: 1.15; }
.battle-card-name { margin: 0 0 28px; color: var(--card-accent); font-size: 1.45rem; }
.battle-card-name span { margin-left: 12px; color: var(--battle-muted); font: 0.65rem Georgia, serif; letter-spacing: 0.18em; }
.battle-card-intro { max-width: 570px; color: var(--battle-muted); line-height: 2; }
.battle-card-rule-cycle { display: flex; align-items: center; gap: 10px; margin: 24px 0 4px; }
.battle-card-rule-cycle span { min-width: 110px; display: grid; padding: 9px 12px; border: 1px solid var(--battle-line); color: var(--battle-ivory); text-align: center; }
.battle-card-rule-cycle small { margin-top: 3px; color: var(--battle-muted); font-size: 0.58rem; }
.battle-card-rule-cycle b { color: var(--battle-gold); }
.battle-rule-notes { display: grid; grid-template-columns: repeat(3, 1fr); margin: 34px 0; border-top: 1px solid var(--battle-line); border-left: 1px solid var(--battle-line); }
.battle-rule-notes div { padding: 14px; border-right: 1px solid var(--battle-line); border-bottom: 1px solid var(--battle-line); }
.battle-rule-notes dt { color: var(--battle-muted); font-size: 0.66rem; }
.battle-rule-notes dd { margin: 5px 0 0; color: var(--battle-ivory); }
.battle-card-switcher { display: flex; flex-wrap: wrap; gap: 12px; }
.battle-card-switcher a { padding: 9px 14px; border: 1px solid var(--battle-line); color: var(--battle-muted); text-decoration: none; font-size: 0.74rem; }
.battle-card-switcher a.is-current { color: var(--card-accent); border-color: var(--card-accent); }

.glory-skill-card { position: relative; width: min(100%, 540px); aspect-ratio: 2 / 3; justify-self: center; overflow: hidden; border: 1px solid var(--card-accent); background: #020705; box-shadow: 0 35px 100px rgba(0,0,0,0.5), inset 0 0 0 10px rgba(2,7,5,0.76), inset 0 0 0 11px color-mix(in srgb, var(--card-accent) 45%, transparent); }
.glory-skill-card::after { content: ''; position: absolute; z-index: 9; inset: 11px; border: 1px solid color-mix(in srgb, var(--card-accent) 35%, transparent); pointer-events: none; }
.glory-skill-card-art { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.glory-skill-card-vignette { position: absolute; inset: 0; background: linear-gradient(rgba(2,7,5,0.08) 20%, rgba(2,7,5,0.25) 44%, rgba(2,7,5,0.94) 54%, #020705 100%); }
.glory-skill-card-header { position: absolute; z-index: 2; top: 26px; left: 28px; right: 28px; display: flex; justify-content: space-between; gap: 20px; text-shadow: 0 2px 12px #000; }
.glory-skill-card-header small { color: var(--card-accent); font-size: 0.57rem; letter-spacing: 0.12em; }
.glory-skill-card-header h2 { margin: 5px 0 0; font-size: 2rem; font-weight: 500; }
.glory-skill-card-header p { margin: 2px 0 0; font-size: 0.76rem; }
.glory-card-seal { width: 48px; height: 48px; display: grid; flex: 0 0 auto; place-items: center; align-content: center; border: 1px solid var(--card-accent); border-radius: 50%; color: var(--card-accent); font: 1.2rem Georgia, serif; background: rgba(1,7,4,0.62); }
.glory-card-seal small { display: block; font-size: 0.36rem; letter-spacing: 0.08em; }
.glory-card-stats { position: absolute; z-index: 3; top: 43%; left: 28px; right: 28px; display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid color-mix(in srgb, var(--card-accent) 45%, transparent); background: rgba(2,9,6,0.86); }
.glory-card-stats span { display: grid; padding: 8px 12px; color: var(--battle-muted); font-size: 0.56rem; text-align: center; }
.glory-card-stats span + span { border-left: 1px solid color-mix(in srgb, var(--card-accent) 30%, transparent); }
.glory-card-stats strong { margin-top: 2px; color: var(--card-accent); font: 1.05rem Georgia, serif; }
.glory-card-kit { position: absolute; z-index: 2; top: 51%; left: 28px; right: 28px; bottom: 36px; display: grid; grid-template-rows: repeat(3, 1fr); gap: 8px; }
.glory-card-passive, .glory-card-skill { border: 1px solid color-mix(in srgb, var(--card-accent) 28%, transparent); background: rgba(3, 13, 9, 0.88); }
.glory-card-passive { padding: 7px 11px; }
.glory-card-passive span { color: var(--card-accent); font-size: 0.56rem; }
.glory-card-passive p { margin: 2px 0 0; color: var(--battle-muted); font-size: 0.5rem; line-height: 1.35; }
.glory-card-skill { display: grid; grid-template-columns: 42px 1fr; align-items: center; padding: 6px 9px; }
.glory-card-skill-cost { width: 30px; height: 30px; display: grid; place-items: center; align-content: center; border: 1px solid var(--card-accent); border-radius: 50%; color: var(--card-accent); font: 0.85rem Georgia, serif; }
.glory-card-skill-cost small { display: block; font: 0.31rem sans-serif; }
.glory-card-skill > div > small { color: var(--card-accent); font-size: 0.42rem; }
.glory-card-skill h3 { display: inline; margin: 0 0 0 7px; font-size: 0.72rem; font-weight: 500; }
.glory-card-skill p { margin: 2px 0 0; color: var(--battle-muted); font-size: 0.45rem; line-height: 1.25; }
.glory-card-skill.is-ultimate { border-color: color-mix(in srgb, var(--card-accent) 60%, transparent); }
.glory-skill-card footer { position: absolute; z-index: 4; left: 28px; right: 28px; bottom: 15px; color: var(--card-accent); font: 0.42rem Georgia, serif; letter-spacing: 0.22em; text-align: center; }

@media (max-width: 1100px) {
    .battle-selector { grid-template-columns: 1fr; }
    .battle-selector-card { min-height: 280px; }
    .battle-text-link { grid-column: 1; }
    .battle-arena { grid-template-columns: 1fr 1fr; }
    .battle-command-center { grid-column: 1 / -1; grid-row: 2; grid-template-columns: auto 1fr; grid-template-rows: 1fr; }
    .battle-log { max-height: 170px; }
    .battle-action-buttons { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 901px) and (max-width: 1100px) {
    .battle-arena { grid-template-columns: minmax(240px, 1fr) minmax(220px, 0.76fr) minmax(240px, 1fr); }
    .battle-command-center { grid-column: auto; grid-row: auto; grid-template-columns: 1fr; grid-template-rows: auto auto minmax(70px, 1fr); }
    .battle-log { max-height: 110px; }
    .battle-action-buttons { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 760px) {
    .battle-sitebar { grid-template-columns: 1fr auto; min-height: 62px; padding: 0 16px; }
    .battle-sitebar-title { display: none; }
    .battle-brand-mark { width: 32px; height: 32px; }
    .battle-sitebar-actions a { font-size: 0.7rem; }
    .glory-battle-app, .battle-card-showcase { width: min(100% - 28px, 620px); }
    .battle-stage { padding: 38px 0 60px; }
    .battle-selection-grid { grid-template-columns: 1fr; }
    .battle-selector { min-height: 0; grid-template-columns: 0.9fr 1fr; padding: 18px; }
    .battle-player-label { top: 12px; left: 12px; }
    .battle-selector-card { min-height: 270px; }
    .battle-swap-button { width: 52px; height: 52px; margin: -12px auto; z-index: 3; }
    .battle-text-link { grid-column: 2; }
    .battle-gates { grid-template-columns: 1fr 1fr; gap: 14px; }
    .battle-gate-trigger { grid-column: 1 / -1; grid-row: 2; width: 126px; margin: 0 auto; }
    .battle-gate:last-child { grid-column: 2; grid-row: 1; }
    .battle-turnbar { grid-template-columns: 65px 1fr; gap: 12px; padding: 12px; }
    .battle-turn-copy { display: block; }
    .battle-turn-copy h2 { margin-top: 5px; font-size: 1rem; }
    .battle-turnbar .battle-quiet-button { grid-column: 1 / -1; }
    .battle-law-cycle { grid-template-columns: 1fr auto 1fr auto 1fr; padding: 8px; }
    .battle-law-cycle > strong, .battle-law-cycle > b:last-of-type { display: none; }
    .battle-law-node { min-height: 58px; flex-direction: column; gap: 2px; }
    .battle-arena { grid-template-columns: 1fr; }
    .battle-fighter { min-height: 390px; }
    .battle-fighter-ui { min-height: 390px; }
    .battle-command-center { grid-column: 1; grid-row: auto; grid-template-columns: 1fr; }
    .battle-action-dock { padding: 14px; }
    .battle-action-dock > header { align-items: flex-start; flex-direction: column; gap: 8px; }
    .battle-action-buttons { grid-template-columns: 1fr; }
    .battle-card-showcase { grid-template-columns: 1fr; padding-top: 42px; }
    .battle-card-copy { order: 2; }
    .glory-skill-card { order: 1; }
}

@media (max-width: 460px) {
    .battle-brand > span:last-child { display: none; }
    .battle-selector { grid-template-columns: 1fr; }
    .battle-selector-card { min-height: 330px; }
    .battle-text-link { grid-column: 1; }
    .battle-gate figcaption { left: 8px; right: 8px; bottom: 8px; padding: 8px; }
    .battle-gate figcaption span { font-size: 0.68rem; }
    .battle-dialog form, .battle-dialog > div { padding: 25px 20px; }
    .battle-dialog-actions { grid-template-columns: 1fr; }
}

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

/* 法则盲选 · 同屏平板对战 */
.battle-duel-stage { padding-top: 22px; padding-bottom: 26px; }

.battle-scorebar {
    min-height: 50px;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 20px;
    margin-top: 10px;
    padding: 8px 18px;
    border: 1px solid var(--battle-line);
    background: rgba(5, 16, 11, 0.88);
}
.battle-scorebar > p { margin: 0; color: var(--battle-muted); font-size: 0.68rem; letter-spacing: 0.08em; text-align: center; }
.battle-score-side { display: flex; align-items: center; gap: 15px; }
.battle-score-side.is-right { justify-content: flex-end; }
.battle-score-side span { color: var(--battle-ivory); font-size: 0.9rem; }
.battle-score-side b { color: var(--battle-gold-bright); font: 1.15rem Georgia, serif; letter-spacing: 0.18em; text-shadow: 0 0 16px rgba(213, 173, 98, 0.28); }

.battle-blind-arena {
    display: grid;
    grid-template-columns: minmax(250px, 0.9fr) minmax(310px, 1.12fr) minmax(250px, 0.9fr);
    gap: 14px;
    margin-top: 12px;
    align-items: stretch;
}
.battle-blind-player {
    --player-accent: var(--battle-gold);
    min-width: 0;
    overflow: hidden;
    border: 1px solid rgba(213, 173, 98, 0.34);
    background: linear-gradient(145deg, rgba(14, 35, 27, 0.96), rgba(4, 13, 9, 0.98));
}
.battle-player-art { position: relative; height: 210px; overflow: hidden; background: #020705; }
.battle-player-art::after { content: ''; position: absolute; inset: 0; background: linear-gradient(transparent 45%, rgba(3, 12, 8, 0.94)); }
.battle-player-art img { width: 100%; height: 100%; object-fit: cover; object-position: center 17%; filter: brightness(0.88) saturate(0.96); }
.battle-side-badge { position: absolute; z-index: 2; top: 12px; left: 12px; width: 36px; height: 36px; display: grid; place-items: center; border: 1px solid var(--battle-gold); color: var(--battle-gold-bright); background: rgba(3, 10, 7, 0.76); font: 1rem Georgia, serif; }
.battle-blind-player > header { position: relative; min-height: 70px; padding: 10px 14px 8px; border-bottom: 1px solid var(--battle-line); }
.battle-blind-player > header p { margin: 0; color: var(--battle-gold); font-size: 0.57rem; letter-spacing: 0.1em; }
.battle-blind-player > header h3 { display: inline; margin: 0 9px 0 0; font-size: 1.25rem; font-weight: 400; }
.battle-blind-player > header span { color: var(--battle-muted); font-size: 0.63rem; }
.battle-blind-choices { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 10px; }
.battle-blind-choice {
    min-height: 90px;
    display: grid;
    place-items: center;
    align-content: center;
    gap: 5px;
    border: 1px solid rgba(213, 173, 98, 0.36);
    color: var(--battle-ivory);
    background:
        radial-gradient(circle at 50% 32%, rgba(213, 173, 98, 0.15), transparent 42%),
        rgba(3, 12, 8, 0.92);
    cursor: pointer;
    touch-action: manipulation;
    transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}
.battle-blind-choice span { font: 1.8rem Georgia, serif; color: var(--battle-gold-bright); }
.battle-blind-choice small { color: var(--battle-muted); font-size: 0.52rem; letter-spacing: 0.08em; }
.battle-blind-choice:hover:not(:disabled) { transform: translateY(-3px); border-color: var(--battle-gold-bright); background-color: rgba(27, 58, 44, 0.95); }
.battle-blind-choice:disabled { cursor: default; opacity: 0.43; }
.battle-blind-choice.is-selected { opacity: 1; border-color: var(--battle-gold-bright); background: linear-gradient(145deg, rgba(213, 173, 98, 0.24), rgba(7, 25, 18, 0.96)); box-shadow: inset 0 0 28px rgba(213, 173, 98, 0.1), 0 0 20px rgba(213, 173, 98, 0.08); }
.battle-choice-status { min-height: 27px; margin: 0; padding: 0 12px 9px; color: var(--battle-muted); font-size: 0.62rem; text-align: center; }

.battle-reveal-console {
    position: relative;
    min-width: 0;
    min-height: 420px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 15px;
    overflow: hidden;
    border: 1px solid var(--battle-line);
    background:
        radial-gradient(circle at 50% 20%, rgba(213, 173, 98, 0.12), transparent 38%),
        rgba(3, 12, 8, 0.96);
    text-align: center;
}
.battle-reveal-console::before { content: ''; position: absolute; inset: 9px; border: 1px solid rgba(213, 173, 98, 0.1); pointer-events: none; }
.battle-seal { position: relative; z-index: 1; width: 66px; aspect-ratio: 1; display: grid; place-items: center; align-content: center; margin-bottom: 12px; border: 1px solid var(--battle-gold); border-radius: 50%; color: var(--battle-gold-bright); box-shadow: 0 0 34px rgba(213, 173, 98, 0.12); transition: transform 0.5s ease, box-shadow 0.5s ease; }
.battle-seal span { color: var(--battle-muted); font: 0.45rem Georgia, serif; letter-spacing: 0.16em; }
.battle-seal strong { font: 1.35rem Georgia, serif; }
.battle-seal.is-revealed { transform: rotate(360deg); box-shadow: 0 0 45px rgba(213, 173, 98, 0.3); }
#battle-waiting-copy { position: relative; z-index: 1; }
#battle-waiting-copy h3 { margin: 4px 0 8px; font-size: 1.35rem; font-weight: 400; }
#battle-waiting-copy > p:last-child { max-width: 290px; margin: 0 auto; color: var(--battle-muted); font-size: 0.7rem; line-height: 1.7; }
.battle-console-kicker { margin: 0; color: var(--battle-gold); font: 0.55rem Georgia, serif; letter-spacing: 0.22em; }
.battle-reveal-button { position: relative; z-index: 2; width: min(100%, 270px); min-height: 52px; margin-top: 18px; }
.battle-reveal-button:disabled { cursor: not-allowed; filter: grayscale(0.8); opacity: 0.38; }

.battle-round-result { position: relative; z-index: 2; width: 100%; }
.battle-round-result h3 { margin: 5px 0; color: var(--battle-gold-bright); font-size: 1.35rem; font-weight: 400; }
.battle-challenge { margin: 0 auto 8px; color: var(--battle-ivory); font-size: 0.7rem; line-height: 1.55; }
.battle-flipped-laws { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin: 8px 0; text-align: left; }
.battle-flipped-law { min-width: 0; padding: 8px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.025); }
.battle-flipped-law.is-winner { border-color: var(--law-accent); box-shadow: inset 0 0 22px color-mix(in srgb, var(--law-accent) 8%, transparent); }
.battle-flipped-law small { display: block; color: var(--law-accent); font-size: 0.48rem; }
.battle-flipped-law strong { display: block; margin: 3px 0; font-size: 0.78rem; }
.battle-flipped-law p { margin: 0; color: var(--battle-muted); font-size: 0.5rem; line-height: 1.4; }
.battle-winner-line { display: block; padding: 6px; color: var(--battle-gold-bright); background: rgba(213, 173, 98, 0.08); font-size: 0.69rem; }
.battle-explanation { margin: 7px 0 4px; color: var(--battle-ivory); font-size: 0.61rem; line-height: 1.55; }
.battle-fairness { margin: 4px 0 8px; color: var(--battle-muted); font-size: 0.48rem; line-height: 1.45; }
.battle-round-result .battle-primary-button { min-height: 40px; padding-inline: 14px; font-size: 0.62rem; }
.battle-global-note { margin: 10px 0 0; color: var(--battle-muted); font-size: 0.58rem; text-align: center; }

.battle-memory-recap { display: grid; gap: 7px; margin: 18px 0; text-align: left; }
.battle-memory-recap article { padding: 10px 12px; border: 1px solid var(--battle-line); background: rgba(255,255,255,0.025); }
.battle-memory-recap b, .battle-memory-recap span { display: block; }
.battle-memory-recap b { color: var(--battle-gold-bright); font-size: 0.72rem; }
.battle-memory-recap span { margin-top: 2px; color: var(--battle-muted); font-size: 0.58rem; }
.battle-memory-recap p { margin: 5px 0 0; color: var(--battle-ivory); font-size: 0.64rem; line-height: 1.55; }

.battle-card-fairness { max-width: 570px; margin: 20px 0; padding: 12px 14px; border-left: 2px solid var(--card-accent); color: var(--battle-muted); background: rgba(255,255,255,0.025); font-size: 0.75rem; line-height: 1.7; }
.battle-card-probability { max-width: 570px; display: grid; grid-template-columns: auto repeat(5, 1fr); align-items: center; margin: 0 0 24px; border: 1px solid var(--battle-line); }
.battle-card-probability > span, .battle-card-probability > b { padding: 10px 8px; text-align: center; }
.battle-card-probability > span { color: var(--battle-muted); font-size: 0.7rem; }
.battle-card-probability > b { border-left: 1px solid var(--battle-line); color: var(--battle-ivory); font-size: 0.72rem; font-weight: 400; }
.battle-card-probability small { display: block; margin-top: 3px; color: var(--card-accent); font-size: 0.68rem; }
.battle-card-law-mode .glory-card-kit { top: 45%; bottom: 32px; grid-template-rows: repeat(5, 1fr); gap: 5px; }
.battle-card-law-mode .glory-card-skill { min-height: 0; padding-block: 4px; }
.battle-card-law-mode .glory-card-skill p { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }

@media (min-width: 901px) and (max-width: 1100px) {
    .glory-battle-app { width: min(100% - 28px, 1050px); }
    .battle-blind-arena { grid-template-columns: minmax(230px, 0.86fr) minmax(310px, 1.12fr) minmax(230px, 0.86fr); gap: 10px; }
    .battle-player-art { height: 190px; }
    .battle-blind-choice { min-height: 82px; }
    .battle-reveal-console { min-height: 400px; padding: 12px; }
}

@media (max-width: 900px) {
    .battle-scorebar { grid-template-columns: 1fr 1fr; }
    .battle-scorebar > p { grid-column: 1 / -1; grid-row: 2; }
    .battle-blind-arena { grid-template-columns: 1fr 1fr; }
    .battle-reveal-console { grid-column: 1 / -1; grid-row: 2; min-height: 360px; }
}

@media (max-width: 640px) {
    .battle-score-side { display: grid; gap: 3px; }
    .battle-score-side.is-right { justify-items: end; }
    .battle-score-side b { font-size: 0.92rem; }
    .battle-blind-arena { grid-template-columns: 1fr; }
    .battle-reveal-console { grid-column: 1; grid-row: auto; }
    .battle-player-art { height: 280px; }
    .battle-blind-choice { min-height: 96px; }
}

/* 全屏竞技场 v2：为教室大屏与横屏平板优化 */
.glory-battle-app { width: min(1680px, calc(100% - 48px)); }

body.is-dueling {
    height: 100dvh;
    overflow: hidden;
    background:
        radial-gradient(circle at 15% 45%, rgba(215, 181, 109, 0.11), transparent 30%),
        radial-gradient(circle at 85% 45%, rgba(99, 217, 208, 0.09), transparent 30%),
        linear-gradient(135deg, #030a07, #07150f 52%, #030a07);
}
body.is-dueling .battle-sitebar { display: none; }
body.is-dueling .glory-battle-app { width: 100vw; height: 100dvh; margin: 0; }
body.is-dueling .battle-duel-stage.is-active {
    height: 100dvh;
    min-height: 0;
    display: grid;
    grid-template-rows: 68px 46px minmax(0, 1fr);
    gap: 6px;
    padding: 8px 18px 6px;
    overflow: hidden;
}

body.is-dueling .battle-turnbar {
    min-height: 0;
    height: 68px;
    grid-template-columns: 150px minmax(260px, 1fr) auto;
    gap: 24px;
    padding: 10px 18px;
    border-color: rgba(213, 173, 98, 0.38);
    background: linear-gradient(105deg, rgba(9, 27, 20, 0.98), rgba(4, 15, 10, 0.98));
    box-shadow: 0 12px 35px rgba(0, 0, 0, 0.2);
}
body.is-dueling .battle-turnbar > div:first-child { height: 100%; justify-content: center; }
body.is-dueling .battle-turnbar span { font-size: 0.72rem; }
body.is-dueling .battle-turnbar strong { font-size: clamp(1.8rem, 2.2vw, 2.55rem); }
body.is-dueling .battle-turn-copy { gap: 24px; }
body.is-dueling .battle-turn-copy p { font-size: clamp(0.85rem, 1vw, 1.05rem); }
body.is-dueling .battle-turn-copy h2 { font-size: clamp(1.45rem, 1.8vw, 2rem); }
.battle-duel-actions { display: flex; align-items: center; gap: 9px; }
.battle-duel-actions .battle-quiet-button { min-height: 40px; padding: 0 15px; white-space: nowrap; font-size: 0.82rem; }

body.is-dueling .battle-scorebar {
    min-height: 0;
    height: 46px;
    margin: 0;
    padding: 7px 22px;
    border-color: rgba(213, 173, 98, 0.3);
    background: rgba(4, 15, 10, 0.93);
}
body.is-dueling .battle-scorebar > p { font-size: clamp(0.78rem, 0.85vw, 0.95rem); }
body.is-dueling .battle-score-side span { font-size: clamp(1.05rem, 1.25vw, 1.35rem); font-weight: 600; }
body.is-dueling .battle-score-side b { font-size: clamp(1.3rem, 1.65vw, 1.8rem); }

body.is-dueling .battle-blind-arena {
    min-height: 0;
    height: 100%;
    grid-template-columns: minmax(280px, 0.9fr) minmax(480px, 1.34fr) minmax(280px, 0.9fr);
    gap: 12px;
    margin: 0;
}
body.is-dueling .battle-blind-player {
    height: 100%;
    min-height: 0;
    display: grid;
    grid-template-rows: minmax(250px, 1fr) auto auto auto;
    border-color: color-mix(in srgb, var(--player-accent) 50%, transparent);
    box-shadow: inset 0 0 45px color-mix(in srgb, var(--player-accent) 5%, transparent), 0 18px 48px rgba(0,0,0,0.24);
}
body.is-dueling .battle-player-art { height: auto; min-height: 0; }
body.is-dueling .battle-player-art img {
    object-fit: cover;
    object-position: center top;
    filter: brightness(1.02) saturate(1.04);
}
body.is-dueling .battle-player-art::after { background: linear-gradient(transparent 65%, rgba(3, 12, 8, 0.94)); }
body.is-dueling .battle-side-badge { top: 16px; left: 16px; width: 48px; height: 48px; border-color: var(--player-accent); color: var(--player-accent); font-size: 1.35rem; }
body.is-dueling .battle-blind-player > header {
    min-height: 76px;
    padding: 11px 18px 10px;
    border-color: color-mix(in srgb, var(--player-accent) 30%, transparent);
}
body.is-dueling .battle-blind-player > header p { color: var(--player-accent); font-size: clamp(0.68rem, 0.78vw, 0.82rem); }
body.is-dueling .battle-blind-player > header h3 { font-size: clamp(1.7rem, 2vw, 2.25rem); }
body.is-dueling .battle-blind-player > header span { font-size: clamp(0.72rem, 0.8vw, 0.9rem); }
body.is-dueling .battle-blind-choices { gap: 10px; padding: 12px; }
body.is-dueling .battle-blind-choice {
    min-height: clamp(96px, 11vh, 124px);
    border-color: color-mix(in srgb, var(--player-accent) 45%, transparent);
}
body.is-dueling .battle-blind-choice span { color: var(--player-accent); font-size: clamp(2.2rem, 3.2vw, 3.4rem); }
body.is-dueling .battle-blind-choice small { font-size: clamp(0.62rem, 0.72vw, 0.76rem); }
body.is-dueling .battle-blind-choice.is-selected { border-color: var(--player-accent); box-shadow: inset 0 0 32px color-mix(in srgb, var(--player-accent) 14%, transparent), 0 0 24px color-mix(in srgb, var(--player-accent) 10%, transparent); }
body.is-dueling .battle-choice-status { min-height: 32px; padding-bottom: 10px; color: #b8c6bd; font-size: clamp(0.72rem, 0.82vw, 0.88rem); }

body.is-dueling .battle-reveal-console {
    height: 100%;
    min-height: 0;
    justify-content: center;
    padding: clamp(18px, 2vw, 34px);
    overflow-y: hidden;
    border-color: rgba(213, 173, 98, 0.4);
    background:
        radial-gradient(circle at 50% 20%, rgba(213, 173, 98, 0.17), transparent 38%),
        linear-gradient(160deg, rgba(7, 25, 17, 0.99), rgba(2, 10, 6, 0.99));
    box-shadow: inset 0 0 65px rgba(213, 173, 98, 0.045), 0 18px 48px rgba(0,0,0,0.28);
}
body.is-dueling .battle-seal { width: clamp(72px, 6vw, 96px); margin-bottom: 16px; }
body.is-dueling .battle-seal span { font-size: 0.58rem; }
body.is-dueling .battle-seal strong { font-size: clamp(1.7rem, 2.2vw, 2.3rem); }
body.is-dueling .battle-seal.is-revealed {
    position: absolute;
    z-index: 4;
    top: 16px;
    right: 18px;
    width: 58px;
    margin: 0;
    background: rgba(5, 19, 12, 0.92);
}
body.is-dueling .battle-seal.is-revealed span { font-size: 0.45rem; }
body.is-dueling .battle-seal.is-revealed strong { font-size: 1.35rem; }
body.is-dueling #battle-waiting-copy h3 { margin: 8px 0 13px; font-size: clamp(1.9rem, 2.5vw, 2.8rem); }
body.is-dueling #battle-waiting-copy > p:last-child { max-width: 520px; font-size: clamp(0.95rem, 1.15vw, 1.2rem); line-height: 1.8; }
body.is-dueling .battle-console-kicker { font-size: clamp(0.68rem, 0.75vw, 0.82rem); }
body.is-dueling .battle-reveal-button { width: min(100%, 390px); min-height: 64px; margin-top: 24px; font-size: clamp(1rem, 1.2vw, 1.25rem); }
body.is-dueling .battle-reveal-button[hidden] { display: none !important; }

body.is-dueling .battle-round-result h3 { margin: 7px 0 9px; font-size: clamp(2rem, 2.6vw, 3rem); }
body.is-dueling .battle-challenge { max-width: 720px; margin-bottom: 15px; font-size: clamp(1.05rem, 1.12vw, 1.28rem); line-height: 1.7; }
body.is-dueling .battle-flipped-laws { gap: 12px; margin: 12px 0; }
body.is-dueling .battle-flipped-law { padding: clamp(12px, 1.2vw, 18px); }
body.is-dueling .battle-flipped-law small { font-size: clamp(0.66rem, 0.72vw, 0.8rem); }
body.is-dueling .battle-flipped-law strong { margin: 6px 0; font-size: clamp(1.2rem, 1.35vw, 1.45rem); }
body.is-dueling .battle-flipped-law p { color: #c8d3cc; font-size: clamp(0.9rem, 0.9vw, 1rem); line-height: 1.62; }
body.is-dueling .battle-winner-line { padding: 11px 14px; font-size: clamp(1.05rem, 1.15vw, 1.25rem); }
body.is-dueling .battle-explanation { max-width: 760px; margin: 12px auto 7px; font-size: clamp(1rem, 1.08vw, 1.18rem); line-height: 1.72; }
body.is-dueling .battle-fairness { margin: 7px 0 12px; font-size: clamp(0.78rem, 0.78vw, 0.86rem); line-height: 1.55; }
body.is-dueling .battle-round-result .battle-primary-button { min-height: 54px; padding-inline: 24px; font-size: clamp(1rem, 1vw, 1.08rem); }
body.is-dueling .battle-global-note { display: none; }

@media (min-width: 901px) and (max-width: 1180px) {
    body.is-dueling .battle-duel-stage.is-active { grid-template-rows: 64px 42px minmax(0, 1fr); gap: 6px; padding: 7px 12px 5px; }
    body.is-dueling .battle-turnbar { height: 64px; grid-template-columns: 104px minmax(210px, 1fr) auto; gap: 12px; padding-inline: 10px; }
    .battle-duel-actions { gap: 5px; }
    .battle-duel-actions .battle-quiet-button { min-height: 36px; padding-inline: 9px; font-size: 0.7rem; }
    body.is-dueling .battle-scorebar { height: 42px; padding-inline: 14px; }
    body.is-dueling .battle-blind-arena { grid-template-columns: minmax(220px, 0.82fr) minmax(380px, 1.35fr) minmax(220px, 0.82fr); gap: 8px; }
    body.is-dueling .battle-blind-player { grid-template-rows: minmax(210px, 1fr) auto auto auto; }
    body.is-dueling .battle-blind-player > header { min-height: 66px; padding: 8px 12px; }
    body.is-dueling .battle-blind-choices { gap: 6px; padding: 8px; }
    body.is-dueling .battle-blind-choice { min-height: 88px; }
    body.is-dueling .battle-reveal-console { padding: 14px; }
    body.is-dueling .battle-flipped-law { padding: 10px; }
}

@media (max-width: 900px) {
    body.is-dueling { height: auto; min-height: 100dvh; overflow-y: auto; }
    body.is-dueling .glory-battle-app { height: auto; }
    body.is-dueling .battle-duel-stage.is-active { height: auto; min-height: 100dvh; display: block; overflow: visible; }
    body.is-dueling .battle-scorebar { height: auto; margin-top: 8px; }
    body.is-dueling .battle-blind-arena { height: auto; grid-template-columns: 1fr 1fr; margin-top: 8px; }
    body.is-dueling .battle-reveal-console { grid-column: 1 / -1; grid-row: 2; min-height: 520px; overflow-y: auto; }
    body.is-dueling .battle-global-note { display: block; margin: 10px 0; }
}

/* 法则共鸣 v3：动态牌库、直接选择、服务器共鸣值 */
body.is-dueling .battle-blind-player {
    grid-template-rows: minmax(185px, 1fr) auto auto auto;
}
.battle-law-choices {
    min-height: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    padding: 10px;
}
.battle-law-choices[data-law-count="3"] { grid-template-columns: 1fr; }
.battle-law-choices[data-law-count="5"] .battle-law-choice:last-child { grid-column: 1 / -1; }
.battle-law-choice {
    --choice-accent: var(--player-accent);
    position: relative;
    min-width: 0;
    min-height: 101px;
    display: grid;
    grid-template-columns: 30px minmax(0, 1fr);
    gap: 8px;
    align-items: center;
    padding: 9px 9px 9px 8px;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--choice-accent) 40%, transparent);
    color: var(--battle-ivory);
    background: linear-gradient(145deg, rgba(8, 28, 19, 0.96), rgba(2, 12, 7, 0.98));
    text-align: left;
    cursor: pointer;
    touch-action: manipulation;
}
.battle-law-choice:hover:not(:disabled) { border-color: var(--choice-accent); transform: translateY(-2px); box-shadow: inset 0 0 28px color-mix(in srgb, var(--choice-accent) 9%, transparent); }
.battle-law-choice:disabled { cursor: default; }
.battle-law-index { width: 28px; height: 28px; display: grid; place-items: center; border: 1px solid color-mix(in srgb, var(--choice-accent) 68%, transparent); border-radius: 50%; color: var(--choice-accent); font: 0.82rem Georgia, serif; }
.battle-law-choice-copy { min-width: 0; display: block; }
.battle-law-choice-copy small { display: block; color: var(--choice-accent); font-size: 0.62rem; }
.battle-law-choice-copy strong { display: block; margin: 3px 0; font-size: clamp(0.95rem, 1vw, 1.1rem); font-weight: 500; }
.battle-law-choice-copy p { margin: 0; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; color: #bdc9c1; font-size: clamp(0.68rem, 0.73vw, 0.78rem); line-height: 1.4; }
.battle-law-choice em { position: absolute; top: 6px; right: 7px; color: rgba(238, 232, 216, 0.48); font-size: 0.52rem; font-style: normal; }
.battle-law-choice.is-selected { border-color: var(--choice-accent); background: linear-gradient(145deg, color-mix(in srgb, var(--choice-accent) 17%, #07140e), rgba(3, 15, 9, 0.98)); box-shadow: inset 0 0 32px color-mix(in srgb, var(--choice-accent) 12%, transparent), 0 0 22px color-mix(in srgb, var(--choice-accent) 9%, transparent); }
.battle-law-choice.is-selected em { color: var(--choice-accent); }
.battle-law-choice.is-used { opacity: 0.34; filter: grayscale(0.65); }
.battle-law-choice.is-used em { color: var(--battle-muted); }

.battle-resonance-values { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px; max-width: 420px; margin: 10px auto; }
.battle-resonance-values > b { color: var(--battle-muted); font: 0.8rem Georgia, serif; }
.battle-resonance-value { min-height: 58px; display: grid; grid-template-columns: auto auto; grid-template-rows: auto auto; align-items: center; justify-content: center; column-gap: 8px; padding: 6px 16px; border: 1px solid rgba(255,255,255,0.13); background: rgba(255,255,255,0.025); }
.battle-resonance-value small { color: var(--battle-muted); font: 0.7rem Georgia, serif; }
.battle-resonance-value strong { grid-row: 1 / 3; grid-column: 2; color: var(--battle-ivory); font: clamp(2rem, 2.8vw, 3rem) Georgia, serif; line-height: 1; }
.battle-resonance-value span { color: var(--battle-muted); font-size: 0.58rem; }
.battle-resonance-value.is-winner { border-color: var(--battle-gold-bright); box-shadow: inset 0 0 25px rgba(213, 173, 98, 0.1); }
.battle-resonance-value.is-winner strong { color: var(--battle-gold-bright); }

.battle-flipped-law { position: relative; padding-right: 56px !important; }
.battle-flipped-law > p { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; }
.battle-flipped-law > b { position: absolute; right: 10px; bottom: 10px; color: var(--law-accent); font: 1.55rem Georgia, serif; }
.battle-flipped-law > b i { display: block; color: var(--battle-muted); font: 0.45rem sans-serif; font-style: normal; text-align: center; }
.battle-flipped-law.is-tie { border-color: var(--law-accent); box-shadow: inset 0 0 22px color-mix(in srgb, var(--law-accent) 8%, transparent); }

.battle-card-law-mode .glory-card-kit { grid-template-rows: repeat(var(--law-count), minmax(0, 1fr)); gap: 7px; }
.battle-card-law-mode .glory-card-skill { grid-template-columns: 48px 1fr; padding: 8px 11px; }
.battle-card-law-mode .glory-card-skill-cost { width: 36px; height: 36px; font-size: 0.95rem; }
.battle-card-law-mode .glory-card-skill > div > small { font-size: 0.68rem; }
.battle-card-law-mode .glory-card-skill h3 { margin-left: 8px; font-size: 1.08rem; }
.battle-card-law-mode .glory-card-skill p { margin-top: 4px; color: #c3cec7; font-size: 0.875rem; line-height: 1.3; -webkit-line-clamp: 2; }

@media (min-width: 901px) and (max-width: 1180px) {
    .battle-law-choices { grid-template-columns: 1fr; gap: 5px; padding: 7px; }
    .battle-law-choices[data-law-count="5"] .battle-law-choice:last-child { grid-column: auto; }
    .battle-law-choice { min-height: 66px; grid-template-columns: 28px minmax(0, 1fr); padding-block: 6px; }
    .battle-law-choice-copy p { -webkit-line-clamp: 1; }
}

@media (max-width: 900px) {
    .battle-law-choices { grid-template-columns: 1fr; }
    .battle-law-choices[data-law-count="5"] .battle-law-choice:last-child { grid-column: auto; }
    .battle-law-choice { min-height: 82px; }
}

@media (min-width: 901px) and (max-height: 800px) {
    body.is-dueling .battle-challenge { display: none; }
    body.is-dueling .battle-round-result h3 { margin: 3px 0 5px; font-size: clamp(1.7rem, 2.2vw, 2.25rem); }
    body.is-dueling .battle-resonance-values { margin-block: 6px; }
    body.is-dueling .battle-flipped-laws { margin-block: 8px; }
    body.is-dueling .battle-explanation { margin-block: 8px 4px; line-height: 1.55; }
    body.is-dueling .battle-fairness { margin-block: 4px 7px; }
    body.is-dueling .battle-round-result .battle-primary-button { min-height: 48px; }
}
