.play-intro{padding:38px 0 26px}.play-intro>a{font-size:14px}.play-intro h1{font-size:clamp(30px,4vw,48px);line-height:1.2;letter-spacing:-.04em;margin:18px 0}.play-intro p{font-size:17px;color:var(--ink-2);line-height:1.8;margin:0;max-width:680px}
.play-entries{display:grid;grid-template-columns:1fr 1fr;gap:24px}.play-entry{border:1px solid var(--line);border-radius:var(--r);padding:28px;color:var(--ink)}.play-entry h2{margin:8px 0;font-size:25px}.play-entry p{color:var(--ink-2)}.play-entry span{font-size:13px;color:var(--ink-2)}.vault-entry{grid-column:1/-1;display:flex;gap:40px;align-items:center;background:var(--accent-l)}.play-entry-art{width:240px;flex:none}.play-entry-art img{width:100%;height:auto}.upcoming{background:var(--paper-2)}

/* 小鲸鱼的保险箱：隔着桌子对峙。她和保险箱在对面，桌面上是你的两件事：套话和开锁。 */
.vault-game{--night:#0b1530;--felt:#14305e;--gold:#e8bd6a;--slip:#fff8e8;--slip-ink:#23242f;border-radius:24px;overflow:clip;background:var(--night);color:#fff;box-shadow:0 24px 50px #0b153040}
.vault-game [hidden]{display:none!important}.vault-game button{font:inherit}
.vault-levels{display:flex;gap:6px;padding:10px 14px;background:#07102a}
.vault-levels button{position:relative;flex:1;min-width:0;display:flex;gap:8px;align-items:center;justify-content:center;min-height:46px;padding:5px 4px;border:0;border-radius:12px;background:none;color:#dbe5f8;font-size:13px;cursor:pointer}
.vault-levels img{width:30px;height:30px;flex:none;filter:drop-shadow(0 2px 3px #0008)}.vault-levels b{color:var(--gold)}
.vault-levels button:disabled{cursor:default;color:#7f8db0}.vault-levels button:disabled img{filter:grayscale(1) brightness(.55)}.vault-levels button:disabled b{color:inherit}
.vault-levels button[aria-pressed=true]{background:#e8bd6a26;box-shadow:inset 0 0 0 2px var(--gold);color:#fff}
.vault-levels .cleared b{font-size:0}.vault-levels .cleared b::before{content:"✓";font-size:14px;color:#57d08f}
.vault-layout{position:relative;isolation:isolate;container-type:inline-size;aspect-ratio:5/3;display:grid;grid-template-rows:minmax(0,1fr) auto;overflow:hidden}
.vault-scene{position:absolute;inset:0;z-index:-1;overflow:hidden;background:var(--night)}
.ocean{position:absolute;inset:-14px;z-index:-3}.ocean img{width:100%;height:100%;object-fit:cover;object-position:center 30%;filter:blur(5px) saturate(.72) brightness(.42)}
.vault-scene::before{content:"";position:absolute;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(44% 50% at 26% 58%,#ffd99a38,transparent 72%),linear-gradient(#0b153000 45%,#0b1530c0)}
/* 桌面、角色都从底边按 cqw 算，画面变方时只是上面多出天空。 */
.vault-desk-top{position:absolute;z-index:3;left:-14%;right:-14%;bottom:-38cqw;height:60cqw;border-radius:50%;background:radial-gradient(40% 34% at 40% 16%,#3a6aa8,var(--felt) 62%,#0d2148);box-shadow:0 0 0 6px #7a5426,0 0 0 11px var(--gold),0 -18px 60px #ffd99a2e}
.vault-safebox{position:absolute;z-index:1;left:7.6%;bottom:15cqw;width:44cqw;aspect-ratio:300/330}.vault-safe{display:block;width:100%;height:auto;filter:drop-shadow(0 12px 16px #030a22aa)}
.vault-lock{position:absolute;left:58%;top:55%;width:17%;height:auto;filter:drop-shadow(0 4px 6px #0008);transition:opacity .5s,transform .6s}
.vault-whale{position:absolute;z-index:2;left:0;bottom:13.5cqw;width:32cqw;aspect-ratio:300/330;animation:vault-float 3s ease-in-out infinite;filter:drop-shadow(0 10px 14px #030a2299)}
.vault-whale img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0}.vault-whale img.is-visible,.vault-whale img:only-child{opacity:1}
.thought{display:none;position:absolute;z-index:4;left:21cqw;bottom:43cqw;padding:2px 14px;border-radius:99px;background:var(--slip);color:#3f7be0;font-size:26px;line-height:1.2}.thought::after{content:"";position:absolute;bottom:-8px;left:16px;width:10px;height:10px;border-radius:50%;background:var(--slip)}.thought span{animation:vault-dot 1s infinite}.thought span:nth-child(2){animation-delay:.2s}.thought span:nth-child(3){animation-delay:.4s}
.vault-scene[data-vault-state=think] .thought{display:block}.vault-scene[data-vault-state=proud] .vault-lock{animation:vault-shake .35s}.vault-scene[data-vault-state=key] .vault-lock{opacity:0;transform:translateY(-120px) rotate(50deg)}
.scene-line{position:absolute;z-index:4;left:2.5%;top:16px;padding:5px 13px;border-radius:99px;background:#07102ac4;color:#dbe5f8;font-size:13px;backdrop-filter:blur(6px)}
.sea-bubbles i{position:absolute;bottom:0;left:15%;width:8px;height:8px;border:1px solid #a5e7ff66;border-radius:50%;animation:vault-bubble 9s linear infinite}.sea-bubbles i:nth-child(2){left:42%;animation-delay:2s}.sea-bubbles i:nth-child(3){left:66%;animation-delay:5s}.sea-bubbles i:nth-child(4){left:88%;animation-delay:7s}
.vault-dialogue{position:relative;grid-row:1;justify-self:end;width:47%;min-height:0;display:flex;flex-direction:column;padding:14px 2.5% 8px 0}
.dialogue-title{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:0 4px 8px;font-size:15px}.dialogue-title>b{color:var(--gold)}.dialogue-title>span{font-size:12px;color:#dbe5f8}
.vault-messages{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px;padding:6px 6px 6px 14px;scrollbar-width:thin;scrollbar-color:#ffffff40 transparent}
.vault-bubble{position:relative;flex:none;align-self:flex-start;max-width:90%;padding:10px 15px;border-radius:16px;background:var(--slip);color:var(--slip-ink);font-size:15px;line-height:1.65;overflow-wrap:anywhere;white-space:pre-wrap;box-shadow:0 6px 16px #0007}
.vault-bubble::before{content:"";position:absolute;left:-8px;top:14px;border:8px solid transparent;border-left:0;border-right-color:var(--slip)}
.vault-bubble.player{align-self:flex-end;background:#2b4f8d;color:#fff}.vault-bubble.player::before{left:auto;right:-8px;border:8px solid transparent;border-right:0;border-left-color:#2b4f8d}
.vault-explain{position:absolute;top:44px;right:2.5%;left:0;max-height:calc(100% - 52px);z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:8px;overflow:auto;padding:20px 24px;border-radius:16px;outline:0;background:var(--slip);color:var(--slip-ink);box-shadow:0 14px 30px #0009,inset 0 0 0 2px var(--gold),inset 0 0 0 6px var(--slip),inset 0 0 0 7px #e8bd6a88;animation:vault-stamp .35s cubic-bezier(.3,1.4,.5,1)}
.vault-explain small{font-size:12px;font-weight:700;color:#2d8a58}.vault-explain h2{margin:0;font-size:21px}.vault-explain p{margin:0;font-size:15px;line-height:1.75}
.vault-explain button,.chat-compose button{flex:none;min-height:46px;padding:0 19px;border:0;border-radius:12px;background:var(--gold);color:#3a2708;font-weight:700;white-space:nowrap;cursor:pointer;box-shadow:0 4px 0 #7a5426}.vault-explain button{margin-top:6px}.chat-compose button:disabled{opacity:.5;cursor:default}
.vault-desk{grid-row:2;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:8px 18px;align-items:end;padding:0 2.5% 18px}
.vault-status{grid-column:1/-1;display:flex;align-items:center;gap:12px;min-height:30px;font-size:13px;color:#dbe5f8}.vault-notice{flex:1;min-width:0}
.vault-retry,.vault-reset{flex:none;min-height:32px;padding:0 10px;border:1px solid #fff4;border-radius:9px;background:#07102a99;color:#fff;font-size:12px;cursor:pointer}.vault-reset:disabled{opacity:.5;cursor:default}
.vault-compose label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.chat-compose{display:flex;gap:8px;align-items:stretch}.chat-compose textarea{flex:1;min-width:0;padding:10px 13px;border:2px solid #fff4;border-radius:12px;background:#07102ad0;color:#fff;font:inherit;font-size:14px;line-height:1.5;resize:none}.chat-compose textarea::placeholder{color:#a9b8d8}.chat-compose textarea:focus{outline:0;border-color:var(--gold)}.chat-compose textarea:disabled{opacity:.6}
/* 口令牌是实物：和聊天框一眼分开，错了会抖。 */
.vault-plaque{padding:9px 12px 11px;border-radius:12px;background:var(--slip);color:var(--slip-ink);transform:rotate(-.8deg);box-shadow:0 10px 22px #0009,inset 0 0 0 2px var(--gold)}.vault-plaque.wrong{animation:vault-shake .3s}
.plaque-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:5px}.plaque-head label{font-size:14px;font-weight:800}.plaque-head span{font-size:12px;color:#8b6b34;white-space:nowrap}
.plaque-row{display:flex;gap:7px}.plaque-row input{flex:1;min-width:0;padding:8px 11px;border:1px dashed #b08d4c;border-radius:9px;background:#fff;color:var(--slip-ink);font:inherit;font-size:14px}.plaque-row input:focus{outline:2px solid #245bd7;outline-offset:0}.plaque-row input:disabled{opacity:.6}.plaque-row button{flex:none;min-height:40px;padding:0 15px;border:0;border-radius:9px;background:var(--felt);color:#fff;font-weight:700;cursor:pointer}.plaque-row button:disabled{opacity:.5;cursor:default}
.vault-layout.is-cleared .vault-compose,.vault-layout.is-cleared .vault-plaque,.vault-layout.is-cleared .vault-reset{display:none}.vault-layout.is-cleared .vault-messages{visibility:hidden}
.vault-noscript{margin:0;padding:16px 24px}
.vault-confetti{position:absolute;inset:0;z-index:5;pointer-events:none;overflow:hidden}.vault-confetti i{position:absolute;top:-20px;width:8px;height:15px;background:var(--gold);animation:vault-confetti 2s ease-in forwards}.vault-confetti i:nth-child(3n){background:#fff8e8}.vault-confetti i:nth-child(3n+1){background:#5aa9f0}
.vault-board{margin:34px 0 50px;display:grid;grid-template-columns:1fr 1fr;gap:25px;padding:26px 0;border-bottom:1px solid var(--line)}.vault-board button,.vault-board-dialog button{font:inherit}.vault-board h2,.vault-making h2{font-size:24px;margin:0 0 12px}.vault-board p{font-size:14px;color:var(--ink-2);max-width:380px;margin:0}.vault-board ol{padding-left:25px;margin:0;max-height:250px;overflow:auto;font-size:14px}.vault-board li{padding:6px}.vault-board li span{float:right;margin-left:14px;color:var(--ink-2)}
.vault-board-dialog button[type=submit],.vault-board>button{border:0;border-radius:10px;background:var(--accent);color:white;padding:10px 18px;white-space:nowrap;min-height:44px}
.vault-making{max-width:760px}.vault-making p{font-size:15px;line-height:1.95;color:var(--ink-2)}.vault-board-dialog{width:min(440px,calc(100% - 32px));border:1px solid var(--line);border-radius:20px;padding:30px}.vault-board-dialog::backdrop{background:#10203888}.vault-board-dialog h2{font-size:24px}.vault-board-dialog label{display:block;font-size:14px}.vault-board-dialog input{width:100%;border:1px solid var(--line-2);padding:10px;border-radius:8px;margin-top:8px}.vault-board-dialog [data-close-board]{float:right;background:none;border:0;font-size:26px;width:35px;height:35px}.vault-board-dialog [data-board-notice]{font-size:13px;color:var(--ink-2)}
@keyframes vault-float{50%{transform:translateY(-5px)}}@keyframes vault-bubble{to{transform:translateY(-500px);opacity:0}}@keyframes vault-dot{50%{opacity:.2}}@keyframes vault-shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}@keyframes vault-confetti{to{transform:translate(30px,600px) rotate(420deg)}}@keyframes vault-stamp{from{transform:scale(.92);opacity:0}}
@media(max-width:999px) and (min-width:701px){.vault-layout{aspect-ratio:4/3}.vault-levels span{font-size:12px}.vault-levels img{width:24px;height:24px}.vault-desk{gap:8px 12px}.vault-desk-top{left:-30%;right:-30%;bottom:-30cqw}.vault-whale{bottom:24cqw}.vault-safebox{bottom:25.5cqw}.thought{bottom:53cqw}}
/* 手机：上面是对峙的画面，往下都在桌面上，从上到下依次是对话、输入、口令牌。 */
@media(max-width:700px){
  .play-intro{padding:24px 0 20px}.play-intro h1{font-size:31px}.play-intro p{font-size:14px}.wide-only{display:none}
  .vault-game{border-radius:16px}.vault-levels{gap:2px;padding:6px}.vault-levels button{flex-direction:column;gap:2px;padding:4px 1px;font-size:10px}.vault-levels b{display:none}.vault-levels img{width:24px;height:24px}.vault-levels .cleared::after{content:"✓";position:absolute;top:2px;left:calc(50% + 6px);display:grid;place-items:center;width:14px;height:14px;border-radius:50%;background:#35a56b;color:#fff;font-size:9px;font-weight:800}
  .vault-layout{aspect-ratio:auto;display:flex;flex-direction:column;background:var(--felt)}
  .vault-scene{position:relative;inset:auto;z-index:0;flex:none;height:62cqw}
  .vault-desk-top{left:-45%;right:-45%;bottom:-300px;height:320px;background:linear-gradient(#2a5590,var(--felt) 40px)}
  .vault-whale{left:-3cqw;bottom:6px;width:54cqw}.vault-safebox{left:14cqw;bottom:2px;width:76cqw}.thought{left:38cqw;bottom:auto;top:6px;font-size:18px;padding:0 10px}.scene-line{left:auto;right:8px;top:8px;font-size:11px;padding:3px 9px}
  .vault-dialogue{width:100%;padding:8px 12px 4px;background:var(--felt)}.dialogue-title{font-size:13px;padding:0 0 6px}.vault-messages{flex:none;height:230px;padding:4px 4px 4px 10px}.vault-bubble{font-size:14px}
  .vault-explain{top:34px;right:12px;left:12px;bottom:4px;max-height:none;justify-content:center;padding:14px 16px;gap:5px}.vault-explain h2{font-size:17px}.vault-explain p{font-size:14px;line-height:1.6}.vault-explain button{min-height:42px}
  .vault-desk{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:2px 12px 16px;background:linear-gradient(var(--felt),#0d2148)}.vault-status{font-size:12px}
  .chat-compose textarea{font-size:16px;padding:9px 11px}.plaque-row input{font-size:16px}.vault-plaque{transform:none}
  .vault-board{grid-template-columns:1fr;gap:18px;margin:24px 0}.play-entries{grid-template-columns:1fr}.vault-entry{gap:15px;padding:15px;flex-direction:column}.play-entry-art{width:180px}.play-entry h2{font-size:23px}
}
@media(prefers-reduced-motion:reduce){.vault-game *,.vault-game *::before{animation:none!important;transition:none!important}.sea-bubbles,.vault-confetti{display:none}}
.vault-game[data-paused] *{animation-play-state:paused!important}

/* Keep the site assistant available without covering game controls. */
body[data-screen=vault] .assistant:not([open]){position:static;display:flex;justify-content:flex-end;margin:0 24px 24px}

/* 谁的词不一样：第一人称坐在桌前。桌沿挡住下半身，角色不用站在任何东西上。 */
.odd-game{--night:#0b1530;--felt:#14305e;--gold:#e8bd6a;--slip:#fff8e8;--slip-ink:#23242f;border-radius:24px;overflow:hidden;margin-bottom:40px;background:var(--night);color:#fff;box-shadow:0 24px 50px #0b153040}
.odd-game [hidden]{display:none!important}
.odd-gpt{--c:#a99bea}.odd-claude{--c:#ef7a2e}.odd-gemini{--c:#8d5cf0}.odd-grok{--c:#d0344a}
.odd-scene{position:relative;isolation:isolate;overflow:hidden;overflow:clip;container-type:inline-size;aspect-ratio:16/9;background:var(--night)}
.odd-ocean{position:absolute;inset:-14px;z-index:-3}.odd-ocean img{width:100%;height:100%;object-fit:cover;object-position:center 30%;filter:blur(5px) saturate(.72) brightness(.42)}
.odd-scene::before{content:"";position:absolute;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(60% 46% at 50% 56%,#ffd99a33,transparent 70%),linear-gradient(#0b153000 45%,#0b1530d0)}
.odd-hud{position:absolute;z-index:8;left:50%;top:2.6%;transform:translateX(-50%);display:flex;gap:10px;align-items:center;max-width:92%;padding:6px 16px;border-radius:99px;background:#07102ac4;font-size:13px;white-space:nowrap;backdrop-filter:blur(6px)}
.odd-hud b{color:var(--gold)}.odd-hud span{overflow:hidden;text-overflow:ellipsis;color:#dbe5f8}
.odd-table{position:absolute;left:-14%;right:-14%;top:60%;height:90%;z-index:3;border-radius:50%;background:radial-gradient(46% 34% at 50% 18%,#3a6aa8,var(--felt) 62%,#0d2148);box-shadow:0 0 0 6px #7a5426,0 0 0 11px var(--gold),0 -18px 60px #ffd99a2e,inset 0 -2px 26px #0009}
.odd-player,.odd-host{position:absolute;transform:translateX(-50%);transition:filter .3s}
.odd-player{z-index:2;width:33cqw}.odd-player.odd-gpt,.odd-player.odd-grok{width:37.5cqw;bottom:19%}.odd-player.odd-claude,.odd-player.odd-gemini{bottom:25%}
.odd-gpt{left:12%}.odd-claude{left:31%}.odd-gemini{left:69%}.odd-grok{left:88%}
.odd-host{left:50%;bottom:30%;width:24cqw;z-index:1}.odd-host img{display:block;width:100%;height:auto;filter:drop-shadow(0 8px 12px #030a2299)}
.odd-character{position:relative;aspect-ratio:300/330;transform-origin:50% 100%;transition:transform .35s cubic-bezier(.3,1.4,.5,1);filter:drop-shadow(0 10px 14px #030a2299)}
.odd-character img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0}.odd-character img.is-visible{opacity:1}
/* Q 版图在同一画布里比立绘大一圈，按比例收回，再抬到桌沿上。 */
.odd-gpt .odd-character:is([data-face=suspect],[data-face=out]),.odd-grok .odd-character:is([data-face=suspect],[data-face=out]){transform:translateY(-14%) scale(.69)}
.odd-claude .odd-character:is([data-face=win],[data-face=out]),.odd-gemini .odd-character:is([data-face=win],[data-face=out]){transform:translateY(-12%) scale(.775)}
/* 说话的人亮，其他人退到暗处。 */
.has-focus .odd-player:not(.is-focus),.has-focus .odd-host{filter:brightness(.55) saturate(.8)}
.odd-player.is-focus .odd-character{filter:drop-shadow(0 0 14px color-mix(in srgb,var(--c) 70%,transparent)) drop-shadow(0 10px 14px #030a2299)}
.odd-player.speaking{animation:odd-speak .8s ease-in-out infinite}
.odd-gavel{position:absolute;z-index:4;left:53%;top:62%;width:9cqw;height:auto;transform-origin:30% 70%;filter:drop-shadow(0 6px 6px #0009)}.is-ended .odd-gavel,.odd-gavel.is-striking{animation:odd-gavel .5s ease-in-out 2}
.odd-front{position:absolute;z-index:5;width:0;height:0}.odd-front.odd-gpt,.odd-front.odd-grok{top:66%}.odd-front.odd-claude,.odd-front.odd-gemini{top:63%}
.odd-plate{position:absolute;left:0;top:0;transform:translate(-50%,-50%);display:flex;align-items:center;gap:7px;padding:5px 13px 5px 6px;border-radius:99px;background:var(--slip);color:var(--slip-ink);font-size:14px;font-weight:700;white-space:nowrap;box-shadow:0 4px 10px #0007}
.odd-plate i{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--c);color:#fff;font-style:normal;font-size:12px}
.is-thinking .odd-plate::after{content:"…";animation:odd-think 1s steps(2) infinite}
.is-gone .odd-plate{opacity:.72}
.can-vote .odd-plate{box-shadow:0 0 0 3px var(--gold),0 4px 10px #0007;animation:odd-pulse 1.4s ease-in-out infinite}
.odd-target{position:absolute;left:0;bottom:-16px;transform:translateX(-50%);width:17cqw;height:37cqw;padding:0;border:0;border-radius:20px;background:transparent;cursor:pointer;transition:box-shadow .2s,background .2s}
.odd-target:is(:hover,:focus-visible){outline:0;background:color-mix(in srgb,var(--c) 18%,transparent);box-shadow:0 0 0 3px var(--c),0 0 34px var(--c)}
.odd-chips{position:absolute;left:0;top:22px;transform:translateX(-50%);display:flex;gap:3px;justify-content:center}
.odd-chip{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:radial-gradient(#fff2c4,var(--gold));border:3px solid #7a5426;color:#3a2708;font-size:14px;font-weight:800;box-shadow:0 4px 8px #0008;animation:odd-chip .35s cubic-bezier(.3,1.6,.5,1) both;animation-delay:calc(var(--i,0)*90ms)}
.odd-chip.is-you{outline:2px solid #fff;outline-offset:1px}
.odd-slip{position:absolute;left:0;top:66px;transform:translateX(-50%) rotate(var(--r,-3deg));padding:5px 14px;border-radius:7px;background:var(--slip);color:var(--slip-ink);font-size:17px;font-weight:800;white-space:nowrap;box-shadow:0 5px 10px #0008}.odd-claude .odd-slip,.odd-grok .odd-slip{--r:3deg}.odd-slip.is-odd{background:#d0344a;color:#fff}
.odd-speech{position:absolute;z-index:6;width:min(30cqw,340px);padding:13px 18px;border-radius:20px;background:var(--slip);color:var(--slip-ink);border:3px solid var(--c,#3f7be0);box-shadow:0 10px 26px #0008}
.odd-speech>b{display:block;font-size:12px;color:var(--c,#3f7be0);margin-bottom:2px}.odd-speech p{margin:0;font-size:clamp(14px,1.5cqw,18px);line-height:1.55;font-weight:500;overflow-wrap:anywhere}
.odd-speech::after{content:"";position:absolute;bottom:-14px;left:var(--tail,50%);width:20px;height:20px;margin-left:-10px;background:var(--slip);border-right:3px solid var(--c,#3f7be0);border-bottom:3px solid var(--c,#3f7be0);transform:rotate(45deg)}
.odd-speech[data-speaker=host],.odd-speech[data-speaker=human]{left:50%;top:64%;transform:translateX(-50%);width:min(40cqw,440px)}.odd-speech[data-speaker=host]::after{top:-14px;bottom:auto;transform:rotate(225deg)}.odd-speech[data-speaker=human]{--c:var(--gold)}
.odd-speech[data-speaker=gpt]{--c:#a99bea;--tail:32%;left:2%;top:3%}.odd-speech[data-speaker=claude]{--c:#ef7a2e;--tail:14%;left:37%;top:10%}.odd-speech[data-speaker=gemini]{--c:#8d5cf0;--tail:86%;right:37%;top:10%}.odd-speech[data-speaker=grok]{--c:#d0344a;--tail:68%;right:2%;top:3%}
.odd-card{position:absolute;z-index:7;left:50%;bottom:4%;width:210px;margin-left:-105px;padding:13px 12px 14px;text-align:center;background:var(--slip);color:var(--slip-ink);border-radius:14px;transform:rotate(-2.5deg);box-shadow:0 14px 30px #0009,inset 0 0 0 2px var(--gold),inset 0 0 0 6px var(--slip),inset 0 0 0 7px #e8bd6a88;transition:filter .3s}
.odd-card small{display:block;font-size:12px;color:#8b6b34}.odd-card strong{display:block;font-size:42px;line-height:1.25;letter-spacing:.1em;margin-left:.1em;overflow-wrap:anywhere}.odd-card.is-gone{filter:grayscale(.8) brightness(.75)}
.odd-card .odd-chips{left:50%;top:-20px;transform:translateX(-50%) rotate(2.5deg)}
.odd-action{position:absolute;z-index:8;left:3%;bottom:5%;width:calc(50% - 150px);min-width:0}
.odd-action p{margin:0 0 7px;font-size:12px;line-height:1.5;color:#c9d6f2}.is-ended .odd-action p{display:none}
.odd-action label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.odd-action form>div{display:flex;gap:8px}
.odd-action input{flex:1;min-width:0;padding:11px 13px;border:2px solid #fff4;border-radius:12px;background:#07102ad0;color:#fff;font:inherit;font-size:14px}.odd-action input::placeholder{color:#a9b8d8}.odd-action input:focus{outline:0;border-color:var(--gold)}.odd-action input:disabled{opacity:.6}
.odd-game button{font:inherit}.odd-primary,.odd-action [type=submit]{min-height:46px;padding:0 19px;border:0;border-radius:12px;background:var(--gold);color:#3a2708;font-weight:700;white-space:nowrap;cursor:pointer;box-shadow:0 4px 0 #7a5426}.odd-primary:hover,.odd-action [type=submit]:hover:not(:disabled){filter:brightness(1.08)}.odd-action [type=submit]:disabled,.odd-primary:disabled{opacity:.5;cursor:default}
.odd-ghost{min-height:46px;padding:0 17px;border:2px solid #fff5;border-radius:12px;background:#07102ad0;color:#fff;white-space:nowrap;cursor:pointer}.odd-ghost:hover{border-color:#fff}.odd-action .odd-ghost{margin-left:8px}
[data-odd-voting] b{display:block;font-size:20px}[data-odd-voting] span{display:block;margin-top:3px;font-size:13px;color:#c9d6f2}
.odd-record{position:absolute;z-index:4;right:3%;top:69%;bottom:5%;width:calc(47% - 150px);min-width:0;overflow:auto;scrollbar-width:thin;padding:8px 12px;border-radius:12px;background:#07102ac8;border:1px solid #ffffff24;color:#dbe5f8}
.odd-record h3{margin:6px 0 3px;font-size:12px;color:var(--gold)}.odd-record h3:first-child{margin-top:0}.odd-record p{margin:2px 0;font-size:12px;line-height:1.5}.odd-record b{margin-right:6px;color:var(--c,#fff)}
.odd-clock{position:absolute;z-index:8;right:3%;top:3%;font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}.odd-clock.is-low{color:#ff8d8d}
.odd-result{position:absolute;inset:0;z-index:8;pointer-events:none;outline:0}
.odd-result h2{position:absolute;left:50%;top:9%;margin:0;padding:8px 28px 10px;transform:translateX(-50%) rotate(-1.5deg);max-width:92%;background:var(--gold);color:#3a2708;font-size:clamp(20px,3.4cqw,40px);font-weight:900;border-radius:6px;white-space:nowrap;box-shadow:0 7px 0 #7a5426,0 15px 24px #0009;animation:odd-stamp .4s cubic-bezier(.3,1.5,.5,1)}
.odd-result>div{position:absolute;left:3%;bottom:6%;display:flex;gap:10px;pointer-events:auto}
.odd-review{padding:26px 28px;background:#101d3f}.odd-review-head{display:flex;justify-content:space-between;gap:16px;align-items:center}.odd-review h2{margin:0;font-size:22px}
.odd-review-head button{min-height:38px;margin-left:6px;padding:0 13px;border:1px solid #fff4;border-radius:10px;background:transparent;color:#fff;cursor:pointer}.odd-review-head button[aria-pressed=true]{background:var(--gold);border-color:var(--gold);color:#3a2708}
.odd-review>p{margin:10px 0 18px;font-size:15px;color:#dbe5f8}
[data-odd-thoughts]{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.odd-mind{display:grid;grid-template-columns:72px 1fr;gap:14px;align-items:start;padding:16px;border-radius:18px;background:#182a56;border:1px solid color-mix(in srgb,var(--c) 45%,transparent)}
.odd-mind>span{display:block;width:72px;height:72px;border-radius:50%;overflow:hidden;border:3px solid var(--c);background:#0b1530}.odd-mind img{display:block;width:290%;height:auto;max-width:none;margin:-14% 0 0 -95%}
.odd-mind h3{margin:0 0 6px;font-size:15px}.odd-mind h3 small{margin-left:6px;padding:1px 7px;border-radius:5px;background:var(--slip);color:var(--slip-ink);font-size:12px;font-weight:700}.odd-mind h3 small.is-odd{background:#d0344a;color:#fff}
.odd-mind p{position:relative;margin:7px 0 0;padding:9px 12px;border-radius:12px;background:var(--slip);color:var(--slip-ink);font-size:14px;line-height:1.65;overflow-wrap:anywhere}.odd-mind p em{display:block;font-style:normal;font-size:11px;color:#8b6b34}
.odd-mind>div>span{display:block;margin-top:9px;font-size:13px;color:var(--gold);font-weight:700}
.odd-log{padding:16px 28px;background:var(--night);border-top:1px solid #ffffff1c}.odd-log summary{cursor:pointer;font-size:14px;font-weight:600;color:#dbe5f8}.odd-log>div{max-height:300px;overflow:auto;margin-top:10px}.odd-log h3{margin:14px 0 6px;font-size:13px;color:var(--gold)}.odd-log p{margin:5px 0;font-size:13px;line-height:1.75;color:#c9d6f2;overflow-wrap:anywhere}
.odd-noscript{padding:16px 28px;margin:0}
.odd-rules{max-width:760px;margin:30px 0 40px}.odd-rules h2{font-size:24px}.odd-rules p{font-size:15px;line-height:1.95;color:var(--ink-2)}
body[data-screen=oddword] .assistant:not([open]){position:static;display:flex;justify-content:flex-end;margin:0 24px 24px}
@keyframes odd-speak{50%{transform:translateX(-50%) translateY(-4px)}}@keyframes odd-gavel{50%{transform:rotate(-26deg)}}@keyframes odd-chip{from{transform:translateY(-34px) scale(.5);opacity:0}}@keyframes odd-stamp{from{transform:translateX(-50%) rotate(-1.5deg) scale(1.5);opacity:0}}@keyframes odd-pulse{50%{box-shadow:0 0 0 5px #e8bd6a80,0 4px 10px #0007}}@keyframes odd-think{50%{opacity:.25}}
/* 平板：画面更方，桌子和角色跟着往下收。 */
@media(max-width:999px) and (min-width:701px){
  .odd-scene{aspect-ratio:4/3}.odd-player.odd-gpt,.odd-player.odd-grok{bottom:22%}.odd-player.odd-claude,.odd-player.odd-gemini{bottom:28%}.odd-host{bottom:33%}
  .odd-record{width:calc(47% - 112px)}
  .odd-card{width:176px;margin-left:-88px;padding:10px}.odd-card strong{font-size:32px}.odd-action{width:calc(50% - 112px)}.odd-action form>div{flex-direction:column}.odd-action [type=submit]{min-height:40px}.odd-chip{width:30px;height:30px;font-size:12px}
}
/* 手机：一排角色在上，气泡、词牌、输入框沿桌面往下排。 */
@media(max-width:700px){
  .odd-game{border-radius:16px}
  .odd-scene{aspect-ratio:auto;height:690px}
  .odd-table{left:-45%;right:-45%;top:37%;height:90%}
  .odd-hud{top:10px;font-size:12px;padding:5px 12px}
  .odd-player.odd-gpt,.odd-player.odd-grok{width:50cqw;bottom:60%}.odd-player.odd-claude,.odd-player.odd-gemini{width:46cqw;bottom:62%}
  .odd-gpt{left:15%}.odd-claude{left:38%}.odd-gemini{left:62%}.odd-grok{left:85%}
  .odd-record{left:12px;right:12px;top:50%;bottom:auto;width:auto;height:19%}
  .odd-host{left:auto;right:-5px;bottom:17%;width:27cqw;z-index:6;transform:none}.odd-gavel{left:7%;top:auto;bottom:24%;width:15cqw;z-index:4}
  .odd-front.odd-gpt,.odd-front.odd-grok{top:45%}.odd-front.odd-claude,.odd-front.odd-gemini{top:43%}
  .odd-plate{font-size:11px;padding:3px 8px 3px 3px;gap:4px}.odd-plate i{width:17px;height:17px;font-size:10px}
  .odd-target{width:23cqw;height:52cqw;bottom:-14px}
  .odd-chips{top:14px;gap:0}.odd-chip{width:24px;height:24px;font-size:11px;border-width:2px}.odd-chip+.odd-chip{margin-left:-6px}.odd-slip{top:42px;font-size:13px;padding:3px 8px}
  .odd-speech,.odd-speech[data-speaker]{left:12px;right:12px;top:53%;bottom:auto;width:auto;transform:none;padding:9px 13px;border-radius:14px}.odd-speech p{font-size:14px;line-height:1.5}.odd-speech>b{font-size:11px}.odd-speech::after,.odd-speech[data-speaker=host]::after{display:none}
  .odd-card{left:27%;bottom:15.5%;width:158px;margin-left:-79px;padding:9px 8px 10px}.odd-card small{font-size:11px}.odd-card strong{font-size:30px}.odd-card .odd-chips{top:-12px}
  .odd-action{left:12px;right:12px;bottom:12px;width:auto}.odd-action p{margin-bottom:4px;font-size:11px}.odd-primary,.odd-ghost,.odd-action [type=submit]{min-height:44px;padding:0 13px;font-size:14px}.odd-action input{font-size:16px;padding:9px 11px}
  [data-odd-voting] b{font-size:16px}[data-odd-voting] span{font-size:12px}
  .odd-clock{right:12px;bottom:auto;top:calc(100% - 118px);font-size:18px}
  .odd-result h2{top:7%;padding:6px 14px 7px;white-space:normal;width:max-content;text-align:center}.odd-result>div{left:12px;right:12px;bottom:12px}.odd-result .odd-primary{flex:1;min-width:0;padding:0 8px;white-space:nowrap}.odd-result .odd-ghost{flex:none}
  .odd-review{padding:18px 14px}.odd-review-head{align-items:flex-start;flex-direction:column;gap:10px}.odd-review-head button{margin:0 5px 0 0}[data-odd-thoughts]{grid-template-columns:1fr}.odd-mind{grid-template-columns:52px 1fr;gap:10px;padding:12px}.odd-mind>span{width:52px;height:52px}.odd-log{padding:14px}.odd-rules p,.vault-making p{font-size:14px}
}
@media(prefers-reduced-motion:reduce){.odd-game *{animation:none!important;transition:none!important}}
/* 嵌入助手生成页 */
.wb [hidden] { display: none !important; }
.wb-grid { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(0,.85fr); gap: 22px; align-items: start; }
.wb-card { min-width: 0; padding: clamp(18px,3vw,32px); border: 1px solid var(--line-2); border-radius: 16px; background: var(--paper); }
.wb-heading span { color: var(--accent-d); font: 13px var(--mono); }
.wb h2 { margin: 4px 0 16px; font-size: 23px; line-height: 1.35; }
.wb-form, .wb-result { display: grid; gap: 9px; }
.wb label,.wb legend { font-weight: 600; }
.wb small,.wb-status { color: var(--ink-2); font-weight: 400; }
.wb label small { margin-left: 8px; }
.wb input:not([type=radio]),.wb textarea { width: 100%; min-width: 0; border: 1px solid var(--line-2); border-radius: 8px; padding: 10px 12px; color: var(--ink); background: var(--paper); font: inherit; }
.wb textarea { resize: vertical; min-height: 150px; }
.wb fieldset { margin: 7px 0; padding: 0; border: 0; min-width: 0; }
.wb-colors,.wb-label,.wb-submit,.wb-copy { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; }
.wb-colors { margin-top: 6px; }
.wb-colors label { position: relative; display: inline-flex; gap: 5px; align-items: center; border: 1px solid var(--line-2); border-radius: 15px; padding: 3px 9px; font-size: 12px; cursor: pointer; }
.wb-colors label:has(:checked) { border-color: var(--ink-2); background: var(--paper-2); }
.wb-colors label:focus-within { outline: 2px solid var(--accent); }
.wb-colors input { position: absolute; opacity: 0; }
.wb-colors i { width: 12px; height: 12px; border-radius: 50%; background: var(--swatch); }
.wb-label { justify-content: space-between; }
.wb button { font: inherit; cursor: pointer; background: var(--accent-d); color: white; border: 0; border-radius: 8px; padding: 8px 14px; }
.wb button:disabled { opacity: .6; cursor: wait; }
.wb .wb-link { background: none; color: var(--accent-d); padding: 4px 0; text-decoration: underline; font-size: 13px; }
.wb-submit { margin-top: 8px; }
.wb-status,.wb-result p { margin: 0; font-size: 14px; }
.wb-preview-stage { display: grid; align-items: center; min-height: 425px; padding: 14px; border: 1px dashed var(--line-2); border-radius: 12px; background: var(--paper-2); }
.wb-preview-stage [data-preview-empty] { text-align: center; color: var(--ink-2); }
.wb-preview-stage [data-preview]:empty { display: none; }
.wb-whale { display: block; margin: 0 auto 6px; border-radius: 50%; }
.wb-result,.wb-manage { margin: 20px 0; }
.wb-copy { flex-wrap: nowrap; }
.wb-copy button { flex: none; }
.wb-result a { color: var(--accent-d); text-decoration: underline; }
@media(max-width:700px) {
  .wb-grid { grid-template-columns: minmax(0,1fr); gap: 14px; }
  .wb-preview-stage { min-height: 160px; padding: 7px; }
  .wb-copy { align-items: stretch; flex-direction: column; }
  .wb-copy button { align-self: flex-start; }
}
