/* Approved cozy line-art system. Loaded last; game rules stay in the existing controllers. */
:root{--paper:#FFFDF8;--ink:#493D38;--berry:#493D38;--muted:#796B61;--line:#DED4C7;--green:#476E69;--blue:#C8DFEC;--orange:#F6D0B2;--gold:#F4E4A5}
body{background:var(--paper);color:var(--ink);font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB",sans-serif}h1,h2,h3,button,input,strong{font-family:inherit}h1{font-weight:800;letter-spacing:0}h2,h3{letter-spacing:0}button{touch-action:manipulation}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #4A7E91;outline-offset:4px}.primary,.secondary{border:2px solid var(--ink);border-radius:28px;color:var(--ink);background:var(--paper);min-height:48px;box-shadow:0 4px 0 var(--blue);transition:transform .12s,box-shadow .12s}.primary:hover,.secondary:hover{background:#EEF5F8}.primary:active,.secondary:active{transform:translateY(3px);box-shadow:0 1px 0 var(--blue)}.primary:disabled,.secondary:disabled{box-shadow:none;background:#F1EEE7;opacity:.6}.text-button{color:var(--ink);background:transparent}.topbar{padding:22px 36px 8px;max-width:1080px}.brand{font-size:24px;font-weight:800;gap:4px}.brand-mascot{width:62px;height:52px;object-fit:contain}.edition{color:var(--muted)}main{max-width:1040px;padding:22px 36px 28px}.sound-toggle{margin-right:max(24px,calc((100vw - 968px)/2));border:1.5px solid var(--ink);color:var(--ink);background:var(--paper);font-size:12px;padding:7px 14px}footer{padding:24px;color:var(--muted)}.eyebrow{color:var(--muted);font-weight:500}.lede{color:var(--muted)}input{border:2px solid var(--ink);color:var(--ink);background:var(--paper);border-radius:14px}
/* Lobby: the duo is the illustration; the four choices remain quiet and compact. */
.library-intro{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:10px 0 20px;min-height:0}.library-intro h1{font-size:38px;letter-spacing:0;margin:0 0 15px}.library-intro .eyebrow{margin-bottom:12px}.library-intro .lede{font-size:14px;line-height:1.9;margin:0}.duo-art{display:block;position:static;transform:none;width:300px;height:200px;flex-shrink:0;border:0;background:none;box-shadow:none}.duo-art img{width:100%;height:100%;object-fit:contain}.duo-art:before,.duo-art:after{display:none}.shelf-heading{margin:14px 0;align-items:center}.shelf-heading h2{font-size:20px}.shelf-heading span{font-size:12px;color:var(--muted)}.game-catalog{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.catalog-card,.catalog-card.available{grid-column:auto;position:relative;border:2px solid var(--ink);border-radius:20px;box-shadow:none;padding:16px;background:var(--paper);transform:none;overflow:hidden}.catalog-card:before,.catalog-card:after{display:none}.catalog-card.timing-duel{background:#EDF6FA}.catalog-card.water-duel{background:#FFFDF8}.catalog-card.court-duel{background:#FFF7DD}.catalog-card.number-duel{background:#FEF2E8}.catalog-tag{font-size:11px;color:var(--muted);background:none;padding:0}.catalog-art{min-height:0;height:115px;margin:8px 0;display:flex;align-items:center;justify-content:center;font-size:30px;color:var(--muted)}.catalog-art img{width:100%;height:100%;object-fit:contain;transform:none!important;filter:none}.catalog-card h3{font-size:21px;color:var(--ink);margin:8px 0}.catalog-card p{font-size:12px;line-height:1.8;min-height:44px;color:var(--muted);margin:8px 0 14px}.catalog-card button{font-size:13px;min-height:42px;padding:8px;box-shadow:0 3px 0 var(--blue)}.catalog-card:not(.available){grid-column:span 2;border:1px dashed #B6A99B;border-radius:14px;padding:12px 16px;display:grid;grid-template-columns:44px 1fr;gap:4px 12px;opacity:.8}.catalog-card:not(.available) .catalog-tag,.catalog-card:not(.available) p{display:none}.catalog-card:not(.available) .catalog-art{grid-row:1/3;height:auto;margin:0}.catalog-card:not(.available) h3{font-size:15px;margin:0}.planned-label{font-size:11px;color:var(--muted);padding:0;background:none}.library-actions{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:18px;margin:26px 0}.library-actions .secondary{min-width:230px}.album-section{padding-top:14px;border-top:1px solid var(--line)}.medal-shelf{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.medal{display:flex;gap:12px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--paper)}.medal-icon{color:var(--ink);background:#F0ECE3;box-shadow:none;filter:none}.medal.unlocked .medal-icon{background:var(--gold);color:var(--ink)}.medal strong{font-size:14px}.medal small{font-size:11px;color:var(--muted)}.album-note{color:var(--muted);font-size:12px}
/* Join and number game. */
.room-entry{max-width:520px;margin:0 auto 40px}.room-ticket{padding:24px 36px;border:2px solid var(--ink);border-radius:24px;background:var(--paper);text-align:center}.ticket-people{height:125px;display:flex;justify-content:center;margin-bottom:8px}.ticket-people img{width:220px;height:150px;object-fit:contain}.room-ticket h1{font-size:28px;line-height:1.5}.room-ticket h2{font-size:17px;margin:22px 0 12px}.join-intro,#join-hint,.ticket-note{font-size:12px;color:var(--muted);line-height:1.8}.room-entry-form input{width:100%;height:66px;font-size:28px;letter-spacing:8px;text-align:center}.room-entry-form input::placeholder{font-size:14px;letter-spacing:1px}#join-error{min-height:18px;color:#A14D3D;font-size:13px}.ticket-note{border-top:1px dashed var(--line);padding-top:18px;margin-top:22px}.room-entry-form .primary{width:100%}.home-layout{gap:40px}.intro h1{font-size:40px;letter-spacing:0}.play-panel{border:2px solid var(--ink);border-radius:24px;background:var(--paper);box-shadow:none;padding:28px}.digit-choice span{border:1.5px solid var(--ink);background:var(--paper)}.digit-choice input:checked+span{border-color:var(--ink);background:var(--blue)}.digits span{font-family:inherit;border:2px solid var(--ink);border-bottom-width:3px;background:var(--blue);color:var(--ink);border-radius:12px}.guessed span{border:1.5px dashed #998777;color:var(--muted)}.guessed .matched{background:#E4EBD8;border-color:#476E69;color:#476E69}.number-art{transform:none}.number-duo{display:block;width:200px;height:145px;object-fit:contain;margin:10px auto 0}.game-top{margin-bottom:18px;font-size:13px}.game-top .secondary{min-height:40px;font-size:12px;box-shadow:none}.game-layout{gap:28px;grid-template-columns:1fr 1fr}.game-main,.history-panel{background:var(--paper);border:2px solid var(--ink);border-radius:22px;padding:26px}.game-main h1{font-size:30px;letter-spacing:0}.game-main .lede{font-size:14px}.players{gap:12px;margin:12px 0 22px}.player{border:0;background:var(--blue);color:var(--ink)}.player:nth-child(2){background:var(--orange)}.player.active{border:2px solid var(--ink);background:var(--blue);padding:14px}.player:nth-child(2).active{background:var(--orange)}.player strong{font-size:16px}.player small{font-size:12px;color:var(--ink)}#number{font-family:inherit;letter-spacing:10px;border-radius:14px}.feedback-panel{background:#FFF8E4;border:1.5px solid var(--ink);border-radius:18px;padding:20px}.feedback-panel h2{line-height:1.8}.feedback-options button{color:var(--ink);border:1.5px solid var(--ink);background:var(--paper);border-radius:12px}.feedback-options button:hover{background:var(--gold)}#pending-guess{display:flex;gap:5px;margin-top:8px}#pending-guess b{background:var(--paper);border:1.5px solid var(--ink);border-radius:8px;padding:3px 10px}.letter-label{font-size:12px}.history-tabs button{border:1.5px solid var(--ink);background:var(--paper);color:var(--ink)}.history-tabs button[aria-pressed=true]{background:var(--blue);color:var(--ink);border-color:var(--ink)}.latest-clue{background:#EDF5F8;border:1px solid var(--line);box-shadow:none;color:var(--ink)}.latest-clue strong{color:var(--ink)}.result{color:#476E69;background:#EDF4E6}.history-row strong{font-family:inherit;letter-spacing:3px}.waiting-note,.pending-row{background:#F6F1E7}.reaction-tray{border-top:1px dashed var(--line)}.reaction-buttons button{border:1px solid var(--ink);background:var(--paper);color:var(--ink)}.reaction-bubble{background:#F6F1E7;color:var(--muted)}.duel-toolbar{font-size:13px}.turn-signal,#turn-signal{color:var(--ink)}.lobby-banner{border:1.5px solid var(--ink);border-radius:16px;background:var(--paper);padding:15px 22px;margin-bottom:18px;box-shadow:none}.lobby-banner span{color:var(--muted)}.lobby-banner strong,.lobby-banner p{color:#476E69}.room-number{font-family:inherit;color:var(--ink);font-size:30px;letter-spacing:6px;font-weight:700}.notice{background:var(--ink);color:var(--paper);z-index:10}.input-progress.complete{color:#476E69}
/* Court: identity cards belong to the same animal world. */
.court{--gold:var(--ink);background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-radius:24px;padding:28px;overflow:visible}.court-heading{position:sticky;top:0;z-index:4;background:var(--paper);padding:12px 0;border-bottom:1px solid var(--line)}.court-heading h1{font-size:28px;line-height:1.4}.court-heading p,.court-rule,.hand-heading span{color:var(--muted)}.court-rule{line-height:1.9}.card-clock{position:relative;background:var(--paper);border-color:var(--ink);width:90px;height:90px}.card-clock strong{font-size:30px;color:var(--ink)}.card-clock span{color:var(--muted)}.clock-ring{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;transform:rotate(-90deg)}.clock-ring circle{fill:none;stroke-width:3}.clock-track{stroke:var(--line)}#clock-progress{stroke:#739CB2}.card-clock.urgent{border-color:#A14D3D}.card-clock.urgent strong{color:#A14D3D}.opponent-hand{margin:18px 0 6px;font-size:12px;color:var(--muted)}.card-table{gap:24px;align-items:center;min-height:0;padding:5px 0 12px;scroll-margin-top:128px}.duel-slot{flex:0 1 auto}.playing-card{width:150px;min-height:218px;border:2px solid var(--ink);border-radius:16px;box-shadow:none;gap:4px;background:#FFF8E0;color:var(--ink);padding:12px 5px}.playing-card:before,.playing-card:after{display:none}.playing-card.minister{background:#F0F6F9;color:var(--ink)}.playing-card.knight{background:#ECF3ED;color:var(--ink)}.playing-card.beggar{background:#FCF0E7;color:var(--ink)}.playing-card .card-icon{width:135px;height:120px;object-fit:contain;margin:0}.playing-card strong{font-size:19px}.playing-card small{font-size:10px;line-height:1.6}.playing-card.card-back{background:#F1F6F7;color:var(--ink);box-shadow:none;white-space:normal;font-size:14px}.back-art{width:135px;height:140px;object-fit:contain}.card-back span{font-size:12px}.versus{font-size:15px;color:var(--muted);align-self:center}.card-outcome{color:var(--muted);margin-top:9px;font-size:12px}.defeated .card-outcome{color:#9C5341}.card-result{font-size:15px;background:#F6F1E7;border-radius:12px;padding:12px;color:var(--ink);margin:12px 0}.hand-card .playing-card{width:142px;min-height:210px}.hand-card .card-icon{width:120px;height:112px}.hand-card.selected{outline-color:#739CB2;transform:translateY(-8px)}.hand-card.destroyed{opacity:.35}.court .primary{background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-radius:28px;max-width:410px;box-shadow:0 4px 0 var(--blue)}.card-victory{border-color:var(--line);color:var(--ink)}.court-seal{display:block;width:190px;height:135px;object-fit:contain;margin:0 auto;background:none;clip-path:none}.card-log{background:var(--paper);border:1.5px solid var(--ink);border-radius:20px;padding:24px;margin-top:24px}.card-log h2{font-size:22px}.card-log p{color:var(--muted);font-size:13px;padding:10px 0;border-bottom:1px solid var(--line)}.card-stage{position:relative}.card-shards{display:none}body.quiet .defeated .playing-card{animation:none;opacity:.2;filter:grayscale(1)}
/* Live animal scenes: preserve the state controls, remove the realistic scene frame. */
.party-arena,.party-arena.water{--metal:var(--ink);--scene-ink:var(--ink);--scene-muted:var(--muted);background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-radius:24px;box-shadow:none}.party-heading{padding:24px 28px 0}.party-heading h1{font-family:inherit;font-size:30px;line-height:1.5;color:var(--ink)}.party-kicker{color:var(--muted)}.party-heading .text-button{color:var(--muted)}.party-players{gap:18px;padding:0 28px;margin-top:18px}.party-player{border:0;border-radius:15px;background:var(--blue);padding:12px 16px;color:var(--ink)}.party-player:last-child{background:var(--orange)}.party-player.active{background:var(--blue);color:var(--ink);outline:2px solid var(--ink)}.party-player.active:last-child{background:var(--orange)}.party-player span{font-size:12px}.party-pressure{color:var(--muted);margin:14px 28px 8px}.party-scene-frame{background:var(--paper);border:0;margin:0;width:100%}.scene-caption{display:none}.scene-hotspot{top:59%;height:23%}.scene-hotspot.pad-left{left:21%}.scene-hotspot.pad-right{right:15%}.scene-hotspot:not(:disabled):hover{background:#C8DFEC26}.party-console{padding:12px 28px 24px}.party-console .primary,.water .party-console .primary{background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-radius:28px;box-shadow:0 4px 0 var(--blue);max-width:410px}.party-console .primary:disabled{background:#F1EEE7;opacity:.6}.party-rules{color:var(--muted);font-size:12px;line-height:1.9}.timing-meters{color:var(--muted)}.timing-meters strong,.timing-meters output{color:var(--ink);font-family:inherit;font-variant-numeric:tabular-nums}.time-input input{background:var(--paper);border:2px solid var(--ink);color:var(--ink)}#time-countdown{color:#8E6943}#time-form small{color:var(--muted)}.water-readout p{color:var(--muted)}#water-control:active{box-shadow:0 1px 0 var(--blue)}.party-log{border:1.5px solid var(--ink);border-radius:20px;background:var(--paper)}.cup-choices span{background:var(--paper);border:1.5px solid var(--ink);border-radius:16px}.cup-choices input:checked+span{background:var(--blue);border-color:var(--ink)}#party-game.in-play .lobby-banner{background:var(--paper);border-color:var(--ink)}#party-game.in-play .room-number{color:var(--ink)}
/* Outcome art is the same duo, not a second illustration style. */
#outcome-dialog,#outcome-dialog.court-outcome,#outcome-dialog.lose,#outcome-dialog.draw{--result-paper:var(--paper);--result-ink:var(--ink);--result-accent:var(--ink);background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-radius:24px;box-shadow:none;width:min(440px,calc(100% - 32px))}#outcome-dialog::backdrop{background:#493D3866;backdrop-filter:blur(3px)}.outcome-sheet{border:0;padding:24px;margin:0}#outcome-emblem{display:none}.outcome-art{display:block;width:240px;max-width:100%;height:175px;object-fit:contain;margin:0 auto}#outcome-title{font-family:inherit;font-size:36px;letter-spacing:0;margin:0 0 14px}.outcome-game{margin:0;font-size:13px}.outcome-actions .primary,.court-outcome .outcome-actions .primary,.court-outcome .outcome-actions .secondary{background:var(--paper);color:var(--ink);border:2px solid var(--ink)}.outcome-actions .secondary{box-shadow:none}#outcome-message{font-size:15px}#outcome-detail{font-size:12px;margin:14px 0 22px}.outcome-note{font-size:11px}.victory,.victory.partner-win{background:#FFF8E1;border:1.5px solid var(--ink);border-radius:20px;box-shadow:none;color:var(--ink)}.victory.partner-win{background:#EEF5F8}.victory-emblem,.partner-win .victory-emblem{clip-path:none;border-radius:50%;background:var(--gold);color:var(--ink);width:60px;height:60px;font-size:30px}.victory h2{font-size:25px}.earned-medals span{border-color:var(--line);background:var(--paper);color:var(--ink)}
@media(max-width:760px){.topbar{padding:18px 18px 4px}.brand{font-size:20px}.brand-mascot{width:48px;height:42px}.edition{font-size:10px}main{padding:14px 18px 24px}.sound-toggle{margin-right:18px}.library-intro{display:flex;flex-direction:column;gap:0;text-align:center;padding:6px 0 4px}.library-intro h1{font-size:29px;letter-spacing:0;margin-bottom:8px}.library-intro .eyebrow{display:none}.library-intro .lede{font-size:12px}.duo-art{display:block;width:220px;height:140px;margin:0}.shelf-heading{flex-direction:row;align-items:center;gap:10px}.shelf-heading h2{font-size:18px}.shelf-heading span{font-size:10px}.game-catalog{grid-template-columns:1fr 1fr;gap:12px}.catalog-card.available{grid-column:auto;padding:12px}.catalog-tag{font-size:10px}.catalog-art{height:88px;margin:2px 0}.catalog-card h3{font-size:18px;margin:4px 0}.catalog-card p{font-size:11px;min-height:38px;margin:6px 0 10px}.catalog-card button{font-size:12px;min-height:40px}.catalog-card:not(.available){grid-column:auto;display:block;padding:10px}.catalog-card:not(.available) .catalog-art{display:none}.catalog-card:not(.available) h3{font-size:13px}.library-actions{margin:23px 0}.medal-shelf{grid-template-columns:1fr 1fr;gap:8px}.medal{display:flex;border:1px solid var(--line);padding:10px 7px;gap:7px}.medal-icon{font-size:23px;width:34px;height:38px;flex-shrink:0}.medal strong{font-size:12px}.medal small{font-size:10px}.room-ticket{padding:22px}.room-ticket h1{font-size:26px}.room-entry-form input{font-size:26px}.home-layout,.game-layout{grid-template-columns:1fr;gap:22px}.intro h1{font-size:34px}.intro .number-art{position:static;opacity:1;z-index:auto;width:100%;max-width:300px;margin:18px auto}.play-panel,.game-main,.history-panel{padding:22px}.number-duo{width:160px;height:105px}.game-main h1{font-size:26px}.lobby-banner{padding:14px;gap:12px;flex-wrap:wrap}.room-number{font-size:27px}.lobby-banner strong{font-size:13px}.lobby-banner p{font-size:11px}.game-top{flex-wrap:wrap;gap:8px}.game-top .secondary{font-size:11px;padding:8px 12px}.court{padding:18px 12px}.court-heading{gap:12px;padding:10px 0}.court-heading h1{font-size:24px}.court-heading p{font-size:11px}.card-clock{width:76px;height:76px}.card-clock strong{font-size:27px}.card-table{gap:12px;scroll-margin-top:125px}.playing-card{width:116px;min-height:190px;padding:9px 3px}.playing-card .card-icon{width:110px;height:100px}.playing-card strong{font-size:17px}.playing-card small{font-size:9px}.back-art{width:106px;height:125px}.card-hand{display:grid;grid-template-columns:1fr 1fr;gap:14px;justify-items:center}.hand-card .playing-card{width:126px;min-height:198px}.hand-card .card-icon{width:115px;height:105px}.hand-heading{align-items:start;gap:10px}.hand-heading span{font-size:10px;max-width:145px;text-align:right}.card-result{font-size:13px}.party-heading{padding:20px 18px 0}.party-heading h1{font-size:25px}.party-players{padding:0 18px;gap:12px}.party-player{padding:10px}.party-player strong{font-size:14px}.party-player small{font-size:10px}.party-player span{font-size:11px}.party-pressure{margin:12px 18px 2px;font-size:12px}.party-scene-frame{width:100%;margin:0}.party-console{padding:10px 18px 22px}.timing-meters strong,.timing-meters output{font-size:21px}.party-console .primary{font-size:14px}.party-rules{font-size:11px}.water-readout{justify-content:center;gap:6px 14px}.water-readout strong{order:-1;flex-basis:100%;font-size:24px}.party-log{padding:20px}.party-setup h1{font-size:28px}.duel-toolbar{gap:6px}.outcome-art{height:150px;width:215px}}
@media(max-width:360px){.brand{font-size:18px}.edition{display:none}.catalog-card h3{font-size:16px}.catalog-card button{font-size:11px;padding:6px}.catalog-card p{min-height:42px}.card-table{gap:8px}.playing-card{width:102px;min-height:180px}.playing-card .card-icon{width:98px;height:92px}.back-art{width:92px;height:112px}.hand-card .playing-card{width:114px}.hand-card .card-icon{width:104px}.versus{font-size:12px}.party-heading{gap:6px}.party-heading h1{font-size:23px}.party-player{padding:8px}.room-ticket{padding:20px 16px}.room-ticket h1{font-size:23px}.outcome-sheet{padding:22px 18px}.outcome-art{height:135px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.defeated .playing-card{opacity:.2;filter:grayscale(1)}.card-shards{display:none}}

/* Final alignment: remove inherited legacy colors and empty image padding. */
.duo-art{padding:0}.catalog-card.available{color:var(--ink)}.catalog-card.available .catalog-tag{color:var(--muted)}.catalog-card.available .primary{background:var(--paper);color:var(--ink)}.catalog-card.available .primary:hover{background:#EEF5F8}.hand-card{width:auto}.hand-card .playing-card{max-width:100%}.brand-mascot{height:40px;width:40px;margin-right:8px}.duo-art img{max-height:180px}.number-duo{height:135px}.card-icon,.back-art{object-fit:contain}
@media(max-width:760px){.duo-art{height:145px;width:225px;margin:12px auto 8px}.duo-art img{max-height:145px}.catalog-art{height:90px}.catalog-art img{max-width:108px;max-height:78px}.hand-card{width:auto;max-width:100%}.card-hand{grid-template-columns:repeat(2,minmax(0,1fr))}.brand-mascot{width:32px;height:32px}.number-duo{height:105px}}
