@font-face{font-family:'Jua';src:url('assets/fonts/Jua-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
:root{color-scheme:dark;--bg:#101e20;--panel:#14272a;--ink:#e9ebe2;--muted:#a3b3ad;--gold:#e4c080;--border:#ffffff12}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'Jua',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #f1cd8a;outline-offset:5px}button{transition:background .2s,transform .2s}button:hover:not(:disabled){filter:brightness(1.13)}.header{height:108px;display:flex;align-items:center;justify-content:space-between;margin:0 3.6%;border-bottom:1px solid var(--border);gap:22px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font:700 28px 'Jua',serif;color:var(--gold);white-space:nowrap}.brand-thin{font-weight:400;margin-left:7px;color:#f0eee3}.brand small{display:block;font:10px 'Jua',sans-serif;letter-spacing:4px;margin-top:6px;color:#b7bdb1}.moon{font-size:54px;line-height:1;transform:rotate(-20deg)}.room{font-size:14px;color:var(--muted);margin-right:auto;margin-left:45px}.room-mark{color:var(--gold);font-size:18px}.slash{padding:0 15px;opacity:.35}nav{display:flex;align-items:center;gap:24px}.icon-button{border:1px solid var(--border);border-radius:50%;width:36px;height:36px;background:transparent;font-size:21px;position:relative}.sound-off{font:12px sans-serif;position:absolute;right:6px;bottom:7px}.text-button,.rules-link{border:0;background:none}.text-button span{border:1px solid #71817b;border-radius:50%;margin-left:7px;font-size:12px;display:inline-grid;place-items:center;width:16px;height:16px}.outline-button{background:#ffffff04;border:1px solid #687266;border-radius:6px;padding:11px 17px;font-size:13px}.outline-button span{padding-left:15px;font-size:18px}.layout{max-width:1600px;display:grid;grid-template-columns:190px minmax(460px,1fr) 230px;gap:30px;margin:32px auto 0;padding:0 3.6%}.left-rail{padding-top:8px}.table-label>span,.guide-head>span{color:var(--gold);font-size:12px;letter-spacing:1px}.table-label h1{font:700 25px 'Jua',serif;margin:12px 0}.table-label p{color:#849991;font-size:12px;margin:0 0 40px}.profile{display:flex;align-items:center;gap:12px;margin-bottom:18px}.avatar{height:49px;width:49px;flex-shrink:0;display:grid;place-items:center;border-radius:17px;font:700 25px 'Jua',serif;border:1px solid #e2c47a54;box-shadow:inset 0 0 18px #bda76f10}.ai-avatar{background:#333e38;color:#e2c887}.player-avatar{background:#36504d;color:#d8ece1}.profile small{color:#90a59c;font-size:12px}.profile h2{font-size:17px;margin:4px 0 0}.profile h2>span{font:12px 'Jua',serif;margin-left:6px;color:#84978a}.profile h2>.first-badge{background:#d9bd78;color:#1d3328;padding:2px 4px;border-radius:3px;font:10px sans-serif}.score-box{background:#172a2b;border:1px solid var(--border);border-radius:9px;padding:17px}.score-box>span{font-size:12px;color:var(--muted)}.score-box>div{display:flex;align-items:baseline;gap:7px;margin:8px 0}.score-box strong{font-size:42px;line-height:1.25;font-weight:500}.score-box div>span{font-size:14px;color:#a5b4aa}.score-box b{margin-left:auto;font-size:12px;font-weight:500;border:1px solid #ffffff18;border-radius:4px;padding:3px 5px;color:#aeb9ab}.score-box>.score-rule{height:1px;background:var(--border);margin:15px 0}.score-box p{font-size:12px;line-height:1.8;color:#91a59b;margin:0;min-height:20px}.player-score{border-color:#cfb7743a;background:linear-gradient(125deg,#283831,#172c2b)}.player-score strong{color:var(--gold)}.rail-divider{height:1px;background:var(--border);margin:27px 0}.session-note{display:flex;gap:12px;align-items:center;margin-top:30px;color:#7c978a}.session-note>span{font-size:30px;color:#b4a76e}.session-note p{font-family:'Jua',serif;font-size:12px;line-height:1.9}.table-topline{display:flex;align-items:center;gap:12px;color:#91a99c;font-size:12px;margin:0 0 15px}.table-topline>span:last-child{margin-left:auto}.table-tag{border:1px solid #6985756b;padding:4px 9px;border-radius:4px;color:#cad8c9;font-size:12px}.game-table{position:relative;border:1px solid #6886736b;outline:5px solid #31473c40;box-shadow:0 15px 45px #0003,inset 0 0 100px #081e1666;border-radius:17px;background:radial-gradient(ellipse at 50% 40%,#2e5545 0,#234638 48%,#1b3a31 100%);padding:25px 25px 24px;overflow:hidden}.game-table::before{content:'';position:absolute;inset:7px;border:1px solid #c9cb9a15;border-radius:12px;pointer-events:none}.enemy-zone{display:flex;align-items:center;justify-content:center;gap:18px;height:58px}.enemy-hands{display:flex;justify-content:center;padding-left:12px}.card-back{background:repeating-linear-gradient(45deg,#612d2b,#612d2b 3px,#733732 3px,#733732 4px);border:3px solid #e8dbc1;border-radius:4px;box-shadow:1px 3px 0 #1c1d15,0 4px 6px #0004;display:grid;place-items:center}.card-back span{border:1px solid #c29262;border-radius:50%;width:28px;height:28px;display:grid;place-items:center;font:15px 'Jua',serif;color:#e6bf83;background:#6a322b}.enemy-hands .card-back{width:35px;height:50px;margin-left:-11px;border-width:2px}.enemy-hands .card-back span{width:18px;height:18px;font-size:12px}.small-label{font-size:12px;color:#b1c1ab}.small-label span{display:block;color:#d8e0ca;margin-top:4px}.capture-tray{display:grid;grid-template-columns:1fr 1.3fr 1.3fr 1.8fr;gap:12px;min-height:69px;padding:12px 0}.capture-group{position:relative;min-width:0}.capture-group>span{font-size:12px;color:#a3b8a5;display:flex;justify-content:space-between;margin-bottom:5px}.capture-group>span b{font-weight:400;color:#dae3cc}.capture-cards{height:38px;border:1px solid #c1d2ac13;border-radius:3px;background:#0a27152b;display:flex;padding:2px 3px;overflow:hidden}.capture-cards .mini-card{width:24px;height:34px;object-fit:cover;border-radius:2px;box-shadow:1px 0 2px #0009;flex-shrink:0;margin-right:-11px}.table-divider{height:1px;background:linear-gradient(90deg,transparent,#b0bf902a,transparent);margin-top:6px}.floor-zone{min-height:247px;display:flex;gap:30px;align-items:center;position:relative;padding:22px 0}.deck-area{display:flex;flex-direction:column;align-items:center;gap:14px;flex-shrink:0;padding:0 5px}.deck{width:52px;height:82px;transform:rotate(-5deg);box-shadow:2px 3px 0 #bfab89,3px 5px 0 #612d2b,5px 7px 0 #d6bda4,6px 9px 0 #0004}.deck-area>span{color:#9fb4a0;font-size:12px}.deck-area b{color:#e8d6a8;font-weight:500;margin-left:5px}.floor{flex:1;display:flex;flex-wrap:wrap;align-content:center;gap:13px 12px;min-width:0;padding-right:25px}.card{position:relative;display:block;padding:0;width:57px;height:88px;background:#eee7d5;border:3px solid #e9e0cf;border-radius:5px;box-shadow:1px 3px 0 #ada084,0 4px 5px #0006;flex-shrink:0;transition:transform .18s,border-color .18s,box-shadow .18s}.card img{width:100%;height:100%;object-fit:fill;display:block;border-radius:1px}.card .month{position:absolute;bottom:3px;right:2px;background:#17221dd9;color:#fff7dc;border-radius:3px;min-width:15px;padding:1px 3px;font:10px 'Jua',sans-serif;line-height:14px}.card .bright{position:absolute;top:1px;left:1px;border-radius:2px;background:#b53627;color:#fff2b5;font:12px serif;padding:2px}.card.matched{border-color:#efd095;box-shadow:0 0 0 1px #d0b166,0 4px 0 #aa8b53,0 0 16px #efcf7120}.card.matched::before{content:'';width:5px;height:5px;background:#edce83;border-radius:50%;position:absolute;top:-12px;left:calc(50% - 2px)}.card.selectable{animation:choice-glow 1s infinite alternate;cursor:pointer}.card.recent{animation:land .35s ease-out}.floor .card:nth-child(3n){transform:rotate(3deg)}.floor .card:nth-child(4n){transform:rotate(-3deg)}.table-seal{font:16px 'Jua',serif;color:#b0be8433;border:1px solid #b0be842e;padding:8px 5px;position:absolute;right:-10px;top:calc(50% - 34px)}.turn-notice{display:flex;gap:10px;align-items:center;background:#132f2566;border-top:1px solid #9cbb771a;border-bottom:1px solid #9cbb771a;margin:0 -25px;padding:13px 25px;min-height:61px}.turn-glyph{color:var(--gold);font-size:22px}.turn-notice strong{font-size:14px;font-weight:500;color:#e6d8b3}.turn-notice div>span{font-size:12px;color:#a3b69b;margin-left:12px}.turn-notice>span:last-child{font-size:9px;letter-spacing:1.6px;color:#c3c8a0;margin-left:auto;white-space:nowrap}.my-captured{padding-top:16px;padding-bottom:13px}.hand-zone{padding-top:9px}.hand-label{display:flex;justify-content:space-between;font-size:12px;color:#c2d0b9;margin-bottom:19px}.hand-label b{font-weight:400;margin-left:5px;color:#e4d4a6}.hand-label>span:last-child{font-size:12px;color:#b9c4a3}.hand-label i{display:inline-block;width:5px;height:5px;border-radius:50%;background:#e6c376;margin-right:5px}.hand{display:flex;gap:7px;justify-content:center;min-height:91px}.hand .card{flex:1;max-width:65px;min-width:0;width:auto;height:auto;aspect-ratio:0.65}.hand .card:not(:disabled):hover{transform:translateY(-12px);border-color:#ffe3a1;box-shadow:0 8px 20px #0007;z-index:2}.hand .card:disabled{opacity:.72}.table-bottom{display:flex;justify-content:space-between;font-size:12px;color:#819b8e;margin-top:18px;gap:15px}kbd{font:10px sans-serif;border:1px solid #526b5a;border-radius:3px;padding:1px 4px}.right-rail{padding-top:7px}.guide-head h2{font:700 19px 'Jua',serif;margin:12px 0 23px}.goal-card{display:flex;flex-wrap:wrap;gap:12px 10px;background:linear-gradient(120deg,#303c31,#243630);padding:17px 15px;border:1px solid #c0b98132;border-radius:8px}.goal-symbol{width:34px;height:41px;border:1px solid #d0b66c66;border-radius:4px;display:grid;place-items:center;color:var(--gold);font:23px 'Jua',serif}.goal-card h3{font-size:12px;color:#e7d7a6;margin:3px 0 6px}.goal-card p{font-size:12px;color:#aab9a0;margin:0}.goal-progress{width:calc(100% - 47px);height:4px;margin-top:8px;border-radius:5px;background:#0f201e}.goal-progress>span{display:block;height:100%;width:0;background:var(--gold);transition:width .4s}.goal-card small{font-size:12px;color:#bcccaa;align-self:center}.score-guide{margin-top:27px}.score-guide h3,.history h3{font-size:13px;font-weight:500;display:flex;justify-content:space-between;margin:0 0 15px}.score-guide h3>span,.history h3>span{font-size:12px;color:#80978b;font-weight:400}.score-guide>div{display:flex;align-items:center;gap:11px;padding:13px 0;border-bottom:1px solid var(--border)}.category-badge{width:31px;height:36px;border:1px solid #ffffff15;border-radius:4px;display:grid;place-items:center;font:17px 'Jua',serif}.gold{color:#e2c580;background:#74643828}.green{color:#a8c7a1;background:#395d4638}.red{color:#d59283;background:#8d4b3928}.gray{color:#b9bfb2;background:#71827620}.score-guide p{margin:0;font-size:12px}.score-guide small{display:block;font-size:12px;margin-top:5px;color:#8da193}.score-guide b{font-size:12px;color:#d3d4b9;margin-left:auto;font-weight:500;white-space:nowrap}.tip{margin:24px 0;border-left:2px solid #c7b179;padding-left:13px}.tip>span{font-size:12px;color:var(--gold)}.tip p{font-size:12px;line-height:1.9;color:#a0b3a5;margin-bottom:0}.tip b{color:#e3d0a1;font-weight:400}.history{margin-top:27px}.history ol{list-style:none;padding:0;margin:0;max-height:114px;overflow:auto;scrollbar-width:thin}.history li{font-size:12px;line-height:1.8;color:#c0cdbc;margin-bottom:9px}.history li::before{content:'·';color:var(--gold);margin-right:7px}.history small{display:block;color:#80998a;font-size:12px;padding-left:11px}.rules-link{padding:16px 0 0;display:flex;width:100%;justify-content:space-between;margin-top:15px;border-top:1px solid var(--border);color:#a8b8a5;font-size:12px}.footer{margin:32px 3.6% 0;border-top:1px solid var(--border);padding:20px 0;display:flex;justify-content:space-between;color:#7c9188;font-size:12px}.footer b{font-family:'Jua',serif;color:#acb49e;margin-left:8px;font-size:12px}.footer span span{margin-left:16px}.footer button{background:transparent;border:0;color:#7c9188;font-size:12px}dialog{background:#172e2b;color:var(--ink);border:1px solid #a9a37370;border-radius:16px;max-width:500px;width:calc(100% - 32px);max-height:85vh;padding:34px;box-shadow:0 25px 100px #0008}dialog::backdrop{background:#06130eca;backdrop-filter:blur(5px)}.modal-close{position:absolute;right:14px;top:10px;border:0;background:none;font-size:26px;color:#a3b5a7}dialog h2{font:700 27px 'Jua',serif;color:#ead29e;margin:5px 0 17px}dialog p,dialog li{font-size:14px;line-height:1.9;color:#c6d2c4}dialog h3{font-size:15px;color:#ecd5a2;margin-top:22px}.modal-actions{display:flex;gap:12px;margin-top:25px}.primary-button,.secondary-button{padding:13px 23px;border-radius:6px;border:1px solid #d8bd7b;font-weight:600;flex:1}.primary-button{background:#e4c080;color:#1d3026}.secondary-button{background:transparent;color:#e4c080}.result-symbol{text-align:center;color:#e1c181;font:70px 'Jua',serif;margin:5px 0 20px}.result-center{text-align:center}.result-points{font-size:47px!important;color:#edd195!important;margin:10px 0}.modal-meta{font-size:12px!important;color:#95ad9b!important}.score-breakdown{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--border)}.choice-cards{display:flex;gap:22px;justify-content:center;margin:25px 0}.choice-cards .card{width:85px;height:132px}.choice-cards .card:hover{transform:translateY(-5px)}@keyframes choice-glow{to{box-shadow:0 0 0 3px #e9cc8a,0 0 24px #e9cc8a80}}@keyframes land{from{transform:translateY(-15px) scale(1.15);opacity:.4}to{opacity:1}}@media(min-width:1550px){.layout{gap:38px;grid-template-columns:205px minmax(460px,1fr) 245px}.floor-zone{min-height:280px}.card{width:66px;height:102px}.game-table{padding:27px 35px}.turn-notice{margin:0 -35px;padding:14px 35px}.hand .card{max-width:72px}.capture-cards{height:43px}.capture-cards .mini-card{height:39px;width:27px}}@media(max-width:1190px){.layout{grid-template-columns:160px minmax(440px,1fr);gap:25px}.right-rail{display:none}.room{margin-left:20px}.header{height:92px}.floor-zone{min-height:245px}.table-label h1{font-size:22px}}@media(max-width:760px){.header{height:80px;margin:0 20px}.brand{font-size:23px}.brand small{font-size:8px;letter-spacing:3px}.moon{font-size:42px}.room{display:none}nav{gap:13px}.text-button{font-size:0;padding:4px}.text-button span{font-size:12px;margin:0;width:22px;height:22px}.outline-button{font-size:12px;padding:8px 10px}.outline-button span{display:none}.layout{display:flex;flex-direction:column;padding:0 18px;margin-top:20px;gap:15px}.left-rail{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0}.table-label,.rail-divider,.session-note,.score-box>span,.score-box p,.score-box>.score-rule,.profile small{display:none}.profile{gap:7px;margin:0}.avatar{width:35px;height:37px;font-size:21px;border-radius:11px}.profile h2{font-size:13px;margin:0}.profile h2>span{display:none}.score-box{background:none;border:0;padding:0;flex:1}.score-box>div{gap:3px;margin:0}.score-box strong{font-size:27px}.score-box div>span{font-size:12px}.score-box b{margin-left:7px;font-size:9px;border:0;padding:0}.player-score{flex:0}.game-area{width:100%}.table-topline{margin:1px 0 12px;font-size:12px}.game-table{padding:17px 15px 20px;outline-width:3px;border-radius:12px}.floor-zone{gap:15px;min-height:240px;padding:20px 0}.floor{gap:13px 8px;padding-right:4px}.floor .card{width:44px;height:69px;border-width:2px}.deck{width:39px;height:63px;border-width:2px}.deck-area{padding:0;gap:14px}.deck-area>span{font-size:9px}.deck-area b{margin-left:2px}.table-seal{display:none}.enemy-zone{height:51px;gap:14px}.enemy-hands .card-back{height:43px;width:31px}.capture-tray{gap:9px}.capture-cards{height:31px;padding:1px 2px}.capture-cards .mini-card{width:20px;height:28px;margin-right:-12px}.capture-group>span{font-size:9px}.turn-notice{margin:0 -15px;padding:12px 15px;min-height:61px}.turn-notice strong{font-size:12px}.turn-notice div>span{display:block;margin:3px 0 0;font-size:12px}.turn-notice>span:last-child{font-size:8px;letter-spacing:1px}.turn-glyph{font-size:20px}.hand{gap:4px;min-height:66px;flex-wrap:wrap;justify-content:center}.hand .card{border-width:2px;flex:0 0 calc((100% - 20px)/6);max-width:47px;min-width:25px}.hand:has(.card:nth-child(9)) .card{flex:1;max-width:none;min-width:0}.card .month{font-size:8px;line-height:11px;min-width:10px;padding:1px 2px;bottom:1px;right:0}.card .bright{font-size:9px;padding:1px;left:0;top:0}.hand-label{margin-bottom:17px;font-size:12px}.table-bottom{font-size:9px;margin-top:14px}.table-bottom>span:first-child{display:none}.table-bottom>span:last-child{margin:auto}.footer{margin:23px 20px 0;padding-top:17px}.footer span span{display:none}.card.matched::before{width:4px;height:4px;top:-10px}.capture-tray{min-height:60px}.hand-zone{padding-top:5px}}@media(prefers-reduced-motion:reduce){*,*::before{animation:none!important;transition:none!important}}

/* Readable game labels and touch targets. */
.room,.text-button,.outline-button,.score-box>span,.score-guide p,.score-guide b,.history h3,.score-guide h3{font-size:14px}
.turn-notice strong{font-size:16px}.turn-notice div>span{font-size:12px}.score-box p{font-size:12px}.goal-card p{font-size:12px}.goal-card{gap:12px 8px}.goal-card h3{font-size:13px}.goal-symbol{width:29px}.goal-card>div:not(.goal-progress){flex:1}.tip p{font-size:13px}.history li{font-size:13px}.rules-link{font-size:13px}.capture-group>span{font-size:12px}.table-bottom{font-size:12px;flex-wrap:wrap}.card:disabled{color:inherit}.floor .card:disabled{opacity:1}.double-pi{font-size:10px!important;background:#243c72!important}.hand-label{font-size:12px}.modal-meta a{color:var(--gold)}
@media(max-width:760px){.text-button{font-size:0}.outline-button{font-size:12px}.hand,.hand:has(.card:nth-child(9)){display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:15px 9px;justify-items:center}.hand .card,.hand:has(.card:nth-child(9)) .card{width:100%;max-width:52px;min-width:0;aspect-ratio:.65}.hand-label{font-size:12px}.hand-label>span:last-child{font-size:12px}.turn-notice strong{font-size:14px}.turn-notice>span:last-child{display:none}.floor-zone{min-height:245px}.floor .card{width:46px;height:73px}.card .month{font-size:10px}.enemy-zone .small-label{font-size:12px}.profile h2{font-size:14px}.capture-group>span{font-size:11px}.footer button{font-size:12px}}
.special-summary{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:12px;color:#e7ce99;border-top:1px solid #e0c99025;padding-top:10px}.special-summary>span:last-child{color:#bcd0b7}.special-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.special-actions:empty{display:none}.special-button{padding:9px 13px;border:1px solid #dcc3877a;background:#40523b;color:#f0d397;border-radius:6px;font-size:14px}.special-button.bomb{background:#6b3c2d;border-color:#be8052}.special-button.pass{background:#234648;color:#d2e5db;border-color:#699182}.exposed-cards{font-size:12px;color:#d1c3a2;margin-top:8px}.exposed-cards:empty{display:none}.bonus-face{display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(145deg,#1d4542,#102a2b);color:#edce88;width:100%;height:100%}.bonus-face small{font-size:9px;line-height:1.4}.bonus-face strong{font:700 33px 'Jua',serif}.bonus-face>span{font-size:13px}.mini-bonus{display:grid;place-items:center;background:#2c5148;color:#f0cf85;border:1px solid #d2be86;font-weight:700}.result-details{border:1px solid #d8c08333;padding:12px 15px;border-radius:8px;margin-top:16px}.result-details p{font-size:13px;margin:5px 0}.result-details b{color:#ecd08d}.card .bonus-face+.month{display:none}@media(max-width:760px){.special-summary{font-size:12px}.special-button{min-height:44px;padding:9px 11px}.bonus-face small{font-size:8px}.bonus-face strong{font-size:26px}.special-actions{gap:7px}}
.exposed-cards{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.exposed-cards>div{display:flex;gap:3px}.revealed-card{width:22px;height:35px;object-fit:fill;border:1px solid #ddc79d;border-radius:2px}
