:root{font-family:Yu Mincho,Hiragino Mincho ProN,"Noto Serif JP",serif;color:#f4f0e4;background:#0d1714;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-optical-sizing:auto;font-weight:400;--gold:#d8bd7e;--line:rgba(225,217,190,.16);--muted:#a1aa9e;--felt:#174536}*{box-sizing:border-box}body{margin:0;min-width:360px;min-height:100vh;background:radial-gradient(ellipse at 50% 38%,#1c332a 0,#111e19 53%,#0b1210)}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed}.welcome{min-height:100svh;display:grid;place-items:center;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 46%,#1e3c30 0,transparent 58%)}.welcome-card{position:relative;z-index:1;text-align:center;width:min(510px,90vw);padding:62px 42px 42px;background:linear-gradient(145deg,#192b23f2,#101a16f7);border:1px solid #d9be7d45;box-shadow:0 30px 100px #0008}.crest{width:54px;height:54px;margin:0 auto 22px;border:1px solid var(--gold);border-radius:50%;color:var(--gold);font-size:29px;display:grid;place-items:center}.eyebrow{font:10px DM Mono,monospace;letter-spacing:.26em;color:var(--gold);margin:0 0 16px}.welcome h1{font-size:50px;letter-spacing:.24em;margin:0 0 16px;font-weight:500}.subtitle{color:#c2c7b9;font-size:14px;letter-spacing:.08em;margin:0 0 30px}.welcome-features{display:flex;justify-content:center;gap:9px;margin-bottom:30px}.welcome-features span{border:1px solid var(--line);padding:7px 10px;color:#c3c9b9;font-size:11px}.gold-button{border:1px solid #e2ca8f;background:linear-gradient(110deg,#e1ca8d,#c7a75e);color:#1d241b;padding:14px 25px;min-width:235px;font-weight:700;letter-spacing:.08em;box-shadow:0 8px 30px #c59f4e20;transition:.2s}.gold-button:hover{filter:brightness(1.08);transform:translateY(-2px)}.gold-button span{margin-left:18px;font-size:18px}.help-line{font:10px DM Mono,monospace;color:#9da99c;margin-top:20px}.welcome-ring{position:absolute;border:1px solid #cfb67613;border-radius:50%;width:900px;height:900px;pointer-events:none}.app-shell{height:100vh;height:100svh;min-height:700px;display:flex;flex-direction:column;max-width:1920px;margin:auto;padding:0 34px;overflow:hidden}.topbar{height:62px;flex:none;display:flex;align-items:center;border-bottom:1px solid var(--line);justify-content:space-between;position:relative;z-index:4}.brand{text-decoration:none;color:#e2c886;letter-spacing:.18em;font:500 12px DM Mono,monospace}.brand span{color:#eee7d6;margin-left:8px}.round-pill{font:10px DM Mono,monospace;letter-spacing:.08em;color:#bac2b6}.round-pill b{color:#e7d4a1;margin-left:7px}.round-pill i{height:12px;border-left:1px solid var(--line);margin:0 12px}.top-actions{display:flex;align-items:center;gap:16px}.icon-button{background:transparent;border:1px solid var(--line);color:var(--gold);width:34px;height:34px;font-size:16px}.speed{display:flex;align-items:center;gap:9px;color:#bac2b6;font-size:10px}.speed input{width:94px;accent-color:#c5a762}.game-layout{flex:1;min-height:0;position:relative}.center-stage{position:absolute;top:0;right:0;bottom:0;left:0;min-height:0}.player-rail{z-index:3}.top-rail{position:absolute;top:10px;left:50%;transform:translate(-50%);display:flex}.left-rail{position:absolute;left:0;top:43%}.right-rail{position:absolute;right:0;top:43%;width:168px}.player-card{width:168px;min-height:60px;display:flex;align-items:center;gap:9px;padding:8px 10px;background:#12211ce8;border:1px solid var(--line);box-shadow:0 8px 24px #0004;transition:.2s}.active-player{border-color:#c8a95d;background:#20271def;box-shadow:0 0 24px #c9ae6018}.finished-player{opacity:.62}.avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;border:1px solid #887648;color:#e0cf9e;background:#25291d;font-size:13px}.player-info{display:flex;flex-direction:column;gap:3px;min-width:0}.player-info b{font-size:11px;font-weight:500;white-space:nowrap}.player-info span{font-size:9px;color:#aeb8ab}.card-count{margin-left:auto;display:flex;flex-direction:column;text-align:right}.card-count b{font:16px DM Mono,monospace;color:#e0cf9e}.card-count span{font:7px DM Mono,monospace;color:#98a596}.turn-dot{display:none;position:absolute;right:-4px;top:-4px;width:8px;height:8px;background:#dbc178;border-radius:50%;box-shadow:0 0 10px #dbc178}.active-player .turn-dot{display:block}.table-wrap{position:absolute;left:50%;top:49%;transform:translate(-50%,-50%);width:min(78vw,920px);height:min(47vh,540px);border-radius:50%;overflow:hidden;background:radial-gradient(ellipse at 50% 44%,#1d5945,#174536 74%);box-shadow:0 18px 42px #0005,0 5px #57412e;outline:1px solid #c9b47c31}.table-canvas{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.table-canvas canvas{width:100%!important;height:100%!important;display:block}.table-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none}.table-empty{display:flex;flex-direction:column;align-items:center;gap:8px;color:#f1e5c1;text-align:center;text-shadow:0 2px 5px #0008}.table-empty>span{font:9px DM Mono,monospace;letter-spacing:.28em;color:#e5ce8d}.table-empty b{font-weight:500;font-size:15px;letter-spacing:.04em}.table-empty small{color:#c5d1c4;font-size:11px}.field-play{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 24px 10px;background:#0c241c55;border:1px solid #e4d29a36;border-radius:12px;box-shadow:0 10px 36px #06110dcc;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.field-player{font-size:11px;color:#f3e5b8;letter-spacing:.05em}.field-player span{margin-left:8px;color:#b5c5b7;font-size:10px}.field-cards{display:flex;justify-content:center;align-items:center;gap:7px;max-width:min(680px,65vw);flex-wrap:wrap}.field-card{width:clamp(54px,5vw,68px);height:clamp(78px,7.5vw,100px);filter:drop-shadow(0 3px 5px #0007)}.field-kind{font-size:9px;letter-spacing:.12em;color:#c5d2c0}.playing-card-face{position:relative;display:block;width:100%;height:100%;overflow:hidden;border-radius:7px;background:linear-gradient(145deg,#fffef9,#e8e2d1);border:1px solid #ded8c8;box-shadow:inset 0 0 0 1px #ffffffa3;color:#20231f;font-family:Georgia,Times New Roman,serif}.playing-card-face.red-card{color:#b33332}.card-corner{position:absolute;left:7%;top:4%;display:flex;flex-direction:column;align-items:center;line-height:.94;font-size:clamp(10px,1.05vw,14px)}.card-corner b{font-weight:700}.card-corner i{font-style:normal;font-size:1.02em}.card-center{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:clamp(24px,2.6vw,36px)}.card-corner-bottom{left:auto;top:auto;right:7%;bottom:4%;transform:rotate(180deg)}.joker-card .card-corner{font:700 clamp(7px,.65vw,9px) "DM Mono",monospace;letter-spacing:.05em;writing-mode:vertical-rl}.joker-card .card-center{font-size:32px}.compact-card{border-radius:5px}.rule-badges{position:absolute;top:8%;display:flex;gap:8px}.effect-badge{border:1px solid #e3c87b;color:#efdcaa;background:#1e2519ed;padding:5px 11px;font-size:10px;letter-spacing:.08em;box-shadow:0 0 20px #dac07830}.lock-badge{border-color:#8fb5a0;color:#c0ddc8}.thinking{position:absolute;bottom:10%;font-size:11px;color:#f0e1bb;letter-spacing:.08em;background:#10251ee8;padding:6px 12px;border:1px solid var(--line)}.thinking span{margin-left:7px;animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.25}}.hand-caption{position:absolute;left:50%;bottom:218px;transform:translate(-50%);width:min(900px,94%);display:flex;align-items:center;gap:10px;color:#e4dcc7;font-size:11px;letter-spacing:.05em}.hand-caption>b{color:#e2c989;font:500 13px DM Mono,monospace}.hand-caption small{font:10px "Noto Serif JP",serif;color:#bdc3b3}.hand-instruction{margin-left:auto;color:#acb6aa;font-size:10px}.hand-area{position:absolute;left:50%;bottom:102px;transform:translate(-50%);width:min(900px,96%);height:112px;display:flex;justify-content:center;align-items:flex-end;overflow:visible;padding:0 8px 4px}.hand-card{flex:0 1 64px;width:64px;min-width:30px;height:98px;padding:0;border:0;background:transparent;position:relative;margin-left:3px;transition:transform .14s ease,filter .14s ease;filter:drop-shadow(0 3px 5px #0007);touch-action:manipulation}.hand-card:first-child{margin-left:0}.hand-card:hover{transform:translateY(-9px);z-index:5}.hand-card-selected,.hand-card-selected:hover{transform:translateY(-18px);z-index:6;filter:drop-shadow(0 8px 10px #d9bd7e65)}.hand-card:focus-visible{outline:3px solid var(--gold);outline-offset:2px;z-index:7}.hand-card .playing-card-face{pointer-events:none}.control-dock{z-index:3;position:absolute;bottom:20px;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 16px;background:#101d18ed;border:1px solid var(--line);box-shadow:0 8px 30px #0003}.selection-copy{display:flex;flex-direction:column;gap:4px;min-width:0}.selection-copy b{font-size:11px;color:#eee5ce;font-weight:500}.selection-copy span{font-size:10px;color:#a9b3a7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.control-buttons{display:flex;gap:9px;flex:none}.ghost-button,.play-button{height:40px;padding:0 16px;letter-spacing:.06em;font-size:11px}.ghost-button{background:transparent;border:1px solid #778579;color:#d4dacd}.ghost-button:disabled{opacity:.42}.play-button{border:1px solid #dfc785;background:#d6bb78;color:#1b241d;min-width:118px;font-weight:700}.play-button:disabled{filter:grayscale(.65);opacity:.48}.control-buttons kbd{font:8px DM Mono,monospace;margin-left:7px;opacity:.65}.history-strip{height:42px;flex:none;border-top:1px solid var(--line);display:flex;align-items:center;gap:16px;color:#c1c5b9}.history-label{font:9px DM Mono,monospace;letter-spacing:.18em;color:var(--gold)}.history-strip>div{display:flex;gap:18px;flex:1;overflow:hidden}.history-strip>div span{font-size:10px;white-space:nowrap;color:#a2ab9e}.history-strip>div .latest{color:#e1d2a8}.history-strip button{background:none;border:0;color:#b5bcad;font-size:10px}.result-shade{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;background:#07100de0;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px)}.result-card{width:min(460px,92vw);padding:34px 36px;text-align:center;background:linear-gradient(150deg,#1c2d24,#101b17);border:1px solid #c9ab63aa;box-shadow:0 24px 90px #000b}.result-card h2{font-size:25px;font-weight:500;letter-spacing:.14em;margin:0 0 22px}.ranking{margin-bottom:23px;border-top:1px solid var(--line)}.ranking>div{display:grid;grid-template-columns:38px 1fr 1fr 50px;align-items:center;text-align:left;padding:10px 5px;border-bottom:1px solid var(--line);font-size:12px}.ranking .place{font:11px DM Mono,monospace;color:var(--gold)}.ranking>div>span:nth-child(3){color:#bdc4b2}.ranking small{font:10px DM Mono,monospace;color:#e0cb92;text-align:right}.human-result{background:#293021}.result-card>p{font-size:10px;color:#acb4a4;margin:14px 0 0}.exchange-panel{position:fixed;z-index:12;top:76px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:13px;padding:12px 16px;background:#10221fee;border:1px solid #d3b76f;box-shadow:0 12px 35px #0009}.exchange-panel .eyebrow{margin:0;font-size:8px}.exchange-panel>b{font-size:12px;font-weight:500}.exchange-panel>span,.exchange-panel small{font-size:10px;color:#d0d0bd}.exchange-panel>button{padding:8px 12px;background:#d7bc7b;border:0;color:#1a2119;font-size:10px}.exchange-panel>button:disabled{opacity:.4}.exchange-panel>.exchange-clear{background:transparent;color:#d2d5c7;border:1px solid var(--line)}.webgl-error{position:absolute;top:20%;right:20%;bottom:20%;left:20%;display:grid;place-items:center;text-align:center;padding:20px;color:#f1dfb5;background:#151d17e8;border:1px solid #d3b76f;font-size:13px;line-height:1.8}@media(max-width:900px){.app-shell{padding:0 16px}.table-wrap{width:78vw;height:min(44vh,440px);top:48%}.player-card{width:146px;min-height:54px;padding:6px 8px}.left-rail{top:39%}.right-rail{width:146px;top:39%}.hand-caption{bottom:206px}.hand-area{bottom:98px;width:100%;height:100px;padding:0 4px}.hand-card{height:84px;width:58px;flex-basis:58px;margin-left:-21px}.field-cards{max-width:70vw}.field-card{width:48px;height:70px}.control-dock{bottom:14px}.history-strip{height:38px}}@media(max-width:620px){.app-shell{min-height:620px;padding:0 10px}.topbar{height:54px}.round-pill{position:absolute;left:50%;transform:translate(-50%);font-size:8px}.top-actions{gap:7px}.speed{font-size:0}.speed input{width:62px}.icon-button{width:30px;height:30px}.player-card{width:122px;min-height:48px;gap:6px;padding:5px}.avatar{width:27px;height:27px;font-size:11px}.player-info b{font-size:9px}.player-info span{font-size:8px}.card-count b{font-size:13px}.card-count span{font-size:6px}.left-rail{top:48%;left:-3px}.right-rail{top:48%;right:-3px;width:122px}.top-rail{top:5px}.table-wrap{width:94vw;height:min(37vh,340px);top:48%;border-radius:50%}.table-empty b{font-size:12px}.table-empty small{font-size:10px}.field-play{gap:7px;padding:9px 10px}.field-player{font-size:9px}.field-player span{font-size:8px}.field-cards{gap:4px;max-width:76vw}.field-card{width:38px;height:56px}.card-center{font-size:21px}.hand-caption{bottom:190px;width:100%;font-size:10px}.hand-instruction{font-size:8px}.hand-area{bottom:88px;height:96px;width:100%;padding:0}.hand-card{height:76px;width:46px;flex:0 1 46px;margin-left:-22px}.hand-card:first-child{margin-left:0}.card-corner{font-size:9px}.card-center{font-size:22px}.control-dock{bottom:11px;padding:8px;gap:6px}.selection-copy b{font-size:9px}.selection-copy span{max-width:125px;font-size:8px}.ghost-button,.play-button{height:36px;padding:0 8px;font-size:9px}.play-button{min-width:76px}.control-buttons kbd{display:none}.history-strip{height:34px;gap:9px}.history-strip>div{gap:9px}.history-strip>div span{font-size:8px}.history-strip button{font-size:8px}.exchange-panel{top:62px;width:max-content;max-width:96vw;flex-wrap:wrap;justify-content:center;gap:7px;padding:8px}.exchange-panel>b{font-size:10px}}@media(max-height:800px)and (min-width:621px){.topbar{height:54px}.table-wrap{width:74vw;height:min(43vh,460px);top:48%}.hand-caption{bottom:184px}.hand-area{bottom:78px;height:94px}.hand-card{height:82px}.control-dock{bottom:8px;padding:7px 12px}.history-strip{height:34px}}.table-canvas{z-index:0}.table-wrap{z-index:1}.table-overlay{z-index:3}.field-card-canvas{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none!important;overflow:hidden}.field-card-canvas *{pointer-events:none!important}.field-card-canvas canvas{display:block;width:100%!important;height:100%!important}.field-play{padding:14px 24px 10px;background:transparent;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.field-card-target{opacity:0!important;pointer-events:none}.auto-pass-notice{position:absolute;left:50%;bottom:14%;transform:translate(-50%);padding:8px 14px;border:1px solid #e3c87b88;background:#10251eef;color:#f0e1bb;font-size:11px;letter-spacing:.04em;white-space:nowrap;box-shadow:0 8px 24px #0006;animation:pass-arrive .18s ease-out}@keyframes pass-arrive{0%{opacity:0;transform:translate(-50%,5px)}to{opacity:1;transform:translate(-50%)}}@media(max-width:620px){.field-play{padding:9px 10px}.auto-pass-notice{bottom:13%;max-width:88%;font-size:9px;text-align:center;white-space:normal}}.player-card{position:relative;isolation:isolate}.cpu-card-fan{position:absolute;z-index:-1;display:flex;align-items:center;pointer-events:none;filter:drop-shadow(0 5px 7px #0005)}.cpu-card-fan-top{left:50%;top:calc(100% + 5px);transform:translate(-50%)}.cpu-card-fan-left{left:calc(100% + 9px);top:50%;transform:translateY(-50%)}.cpu-card-fan-right{right:calc(100% + 9px);top:50%;transform:translateY(-50%);flex-direction:row-reverse}.cpu-card-back{position:relative;display:grid;place-items:center;flex:0 0 31px;width:31px;height:45px;margin-left:-19px;border:1px solid #e0d2a4;border-radius:4px;color:#e7d29a;font-size:13px;background:repeating-linear-gradient(45deg,#164536 0,#164536 3px,#1c5944 3px,#1c5944 5px);box-shadow:inset 0 0 0 2px #163a2d,0 2px 5px #0006}.cpu-card-back:first-child{margin-left:0}.cpu-card-back:after{content:"";position:absolute;top:7px;right:7px;bottom:7px;left:7px;border:1px solid #d8bf7d88;border-radius:50%}@media(max-width:900px){.cpu-card-back{flex-basis:27px;width:27px;height:40px;margin-left:-17px}.cpu-card-back:first-child{margin-left:0}.cpu-card-fan-left{left:calc(100% + 5px)}.cpu-card-fan-right{right:calc(100% + 5px)}}@media(max-width:620px){.cpu-card-back{flex-basis:23px;width:23px;height:34px;margin-left:-15px;font-size:10px}.cpu-card-back:first-child{margin-left:0}.cpu-card-fan-left{left:calc(100% + 3px)}.cpu-card-fan-right{right:calc(100% + 3px)}}
