:root{font-family:Yu Gothic UI,Hiragino Sans,system-ui,sans-serif;color:#f4f0df;background:#071d1a;font-synthesis:none;--bg: #071d1a;--table: #0d493d;--table-light: #176553;--panel: #102d29;--panel-2: #173a34;--gold: #d3b568;--gold-light: #f0dc9a;--muted: #a8bdb5;--border: rgba(211, 181, 104, .42);--danger: #b9474c}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh;min-height:100dvh;overflow-x:hidden;background:radial-gradient(circle at 50% 20%,rgba(30,113,91,.34),transparent 34rem),linear-gradient(160deg,#061714,#0a2924 55%,#061815)}button{font:inherit;letter-spacing:0}button:focus-visible{outline:3px solid #fff1b7;outline-offset:2px}.title-screen{min-height:100vh;min-height:100dvh;display:grid;grid-template-rows:1fr auto}.title-main{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;padding:24px 20px;text-align:center}.title-main h1{margin:0;font-family:serif;font-size:clamp(40px,9vw,68px);color:var(--gold-light);letter-spacing:0}.roman-title{margin:3px 0 32px;color:var(--muted);font-size:13px}.difficulty{display:grid;gap:9px;width:min(320px,100%);text-align:center;color:var(--gold-light);font-weight:700}.segmented{display:grid;grid-template-columns:repeat(3,1fr);padding:3px;background:#071b18;border:1px solid var(--border);border-radius:7px}.segmented button{height:42px;border:0;border-radius:4px;color:var(--muted);background:transparent;cursor:pointer}.segmented button.active{color:#13221f;background:var(--gold);font-weight:800}.primary-action,.secondary-action{border:0;cursor:pointer;height:58px;width:min(320px,100%);border-radius:7px;font-weight:800;font-size:20px}.primary-action{margin-top:22px;color:#12231f;background:linear-gradient(#ead48b,#c6a653);box-shadow:0 8px 20px #00000047}.primary-action.compact{width:auto;min-width:150px;height:44px;margin:16px auto 0;padding:0 24px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:15px}.secondary-action{color:var(--gold-light);background:var(--panel);border:1px solid var(--gold)}.resume-row{display:flex;gap:8px;width:min(320px,100%);margin-top:10px}.resume-row .secondary-action{flex:1}.title-rules-action{width:min(320px,100%);height:44px;margin-top:10px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid rgba(211,181,104,.42);border-radius:7px;color:var(--gold-light);background:#102d29b8;font-weight:700;cursor:pointer}.bottom-nav{position:sticky;bottom:0;display:grid;grid-template-columns:repeat(3,1fr);padding:6px max(8px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));background:#091d1af5;border-top:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.bottom-nav button{min-height:58px;display:flex;align-items:center;justify-content:center;gap:7px;border:0;color:var(--gold);background:transparent;cursor:pointer}.bottom-nav svg{width:19px}.icon-action{width:40px;height:40px;padding:0;display:grid;place-items:center;border:1px solid var(--border);border-radius:6px;color:var(--gold);background:#071b18b3;cursor:pointer}.icon-action svg{width:20px}.icon-action.danger{color:#ffb5b7;border-color:#b9474c99}.game-screen{min-height:100vh;min-height:100dvh;display:grid;grid-template-rows:auto minmax(280px,1fr) auto}.game-header{min-height:54px;padding:max(7px,env(safe-area-inset-top)) 9px 7px;display:flex;align-items:center;gap:10px;background:#051916e6;border-bottom:1px solid var(--border)}.game-header>div:nth-child(2){display:flex;gap:8px;align-items:baseline;color:var(--gold-light)}.game-header>span{color:var(--muted);font-size:12px;white-space:nowrap}.dora{margin-left:auto;display:flex;align-items:center;gap:3px;color:var(--muted);font-size:12px}.table{position:relative;width:min(100%,820px);min-height:360px;margin:0 auto;overflow:hidden;background:radial-gradient(circle,rgba(30,112,90,.68),rgba(10,54,45,.2) 46%,transparent 68%)}.table>.player-info{position:absolute;top:8px;left:50%;transform:translate(-50%)}.player-info{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;white-space:nowrap}.player-info strong{color:var(--gold-light)}.player-info.vertical{flex-direction:column;gap:4px}.player-info.vertical .player-name{writing-mode:vertical-rl}.wind-badge{width:24px;height:24px;display:grid;place-items:center;border:1px solid var(--gold);border-radius:50%;color:var(--gold-light);font-weight:800;background:#041c17b8}.riichi-badge{padding:2px 5px;border-radius:3px;background:#b92f39;color:#fff;font-size:10px}.side-player{position:absolute;top:50%;transform:translateY(-50%)}.side-left{left:7px}.side-right{right:7px}.round-medallion{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:72px;height:72px;display:grid;place-items:center;align-content:center;border-radius:50%;border:2px solid var(--gold);background:#041e19cc;color:var(--gold-light)}.round-medallion b{font-size:24px;line-height:1}.round-medallion span{font-size:10px;margin-top:4px}.discards{position:absolute;display:flex;flex-wrap:wrap;gap:1px;z-index:1}.discards-top{top:52px;left:50%;width:min(76%,520px);justify-content:flex-end;transform:translate(-50%) rotate(180deg)}.discards-bottom{bottom:4px;left:50%;width:min(76%,520px);transform:translate(-50%)}.discards-left{left:48px;top:50%;width:145px;transform:translateY(-50%) rotate(90deg)}.discards-right{right:48px;top:50%;width:145px;transform:translateY(-50%) rotate(-90deg)}.human-area{padding:7px 8px max(12px,env(safe-area-inset-bottom));background:#061815e0;border-top:1px solid var(--border);display:flex;flex-direction:column;align-items:center}.hand-row{width:100%;display:flex;justify-content:center;align-items:center;gap:6px;margin-top:5px}.hand-tiles{display:flex;justify-content:center;gap:3px}.drawn-tile{margin-left:7px}.ankan-set{display:flex;align-items:flex-end;gap:1px}.tile-back{width:27px;height:38px;display:block;border-radius:4px;border:2px solid #e5dbc2;background:repeating-linear-gradient(45deg,#174e71,#174e71 4px,#276589 4px,#276589 8px)}.tile{width:clamp(43px,12vw,58px);aspect-ratio:155 / 215;position:relative;padding:0;display:block;overflow:hidden;border:0;border-radius:5px;color:#1a2925;background:#f5f1e7;box-shadow:0 2px 4px #00000059}.tile:not(:disabled){cursor:pointer}.tile img{width:100%;height:100%;display:block;object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none}.tile-small{width:28px;border-radius:3px}.tile-fallback{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;display:grid;place-items:center;font-family:Yu Mincho,serif;font-weight:900;font-size:13px}.tile-selected{transform:translateY(-6px);box-shadow:0 0 0 3px var(--gold)}.tile-muted{opacity:.4;filter:grayscale(.5)}.tile-sideways{transform:rotate(90deg);margin:3px 5px}.actions{min-height:43px;margin-top:7px;display:flex;justify-content:center;gap:7px;flex-wrap:wrap}.action{height:38px;min-width:70px;padding:0 15px;border:0;border-radius:6px;color:#fff;font-weight:800;cursor:pointer}.action.win{background:#238d4b}.action.ron{background:#b7373d}.action.neutral{background:#52645f}.action.riichi{background:#2862aa}.action.riichi.active{box-shadow:0 0 0 3px #bcd3ff}.action.kan{background:#8f681d}.game-log{min-height:18px;margin-top:4px;display:flex;gap:12px;color:var(--muted);font-size:11px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:16px;background:#000807cc;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.modal{width:min(420px,100%);max-height:90dvh;overflow:auto;padding:24px;border:1px solid var(--gold);border-radius:8px;background:var(--panel);box-shadow:0 20px 70px #0000007a}.modal h2{margin:0 0 18px;text-align:center;color:var(--gold-light);font-size:24px}.modal p{color:var(--muted);text-align:center;line-height:1.7}.modal-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:8px;margin-top:18px}.modal-actions button{width:100%;min-width:0;height:44px;margin:0;padding:0 12px;box-sizing:border-box;font-size:14px}.modal-actions>.primary-action.compact,.modal-actions>.secondary-action{width:100%;min-width:0;margin:0}.result-hand{display:flex;justify-content:center;gap:3px;margin-bottom:14px}.yaku-result,.ranking{display:grid;gap:7px}.yaku-result div,.ranking div{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid rgba(255,255,255,.08)}.result-score{display:block;margin-top:14px;text-align:center;color:var(--gold-light);font-size:19px}.point-changes{margin-top:13px;display:flex;flex-wrap:wrap;justify-content:center;gap:7px;font-size:12px}.point-changes span{padding:4px 7px;border-radius:4px;background:#ffffff0f}.plus{color:#79dda0}.minus{color:#ff9295}.sub-page{min-height:100vh;min-height:100dvh}.sub-page>header{position:sticky;top:0;z-index:5;height:60px;padding:max(8px,env(safe-area-inset-top)) 14px 8px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--border);background:#071d1af5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.sub-page>header h1{margin:0;color:var(--gold-light);font-size:20px}.catalog{width:min(900px,100%);margin:auto;padding:18px;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}.catalog article,.rules,.stat{position:relative;padding:16px;border:1px solid rgba(211,181,104,.2);border-radius:7px;background:var(--panel)}.catalog article>div{display:flex;justify-content:space-between;gap:12px}.catalog h2{margin:0;color:var(--gold-light);font-size:17px}.catalog b{color:var(--gold);white-space:nowrap}.catalog p{margin:10px 0 0;color:var(--muted);font-size:13px;line-height:1.6}.catalog article>.yaku-example{display:flex;justify-content:flex-start;align-items:flex-end;gap:5px;min-height:48px;margin-top:14px;overflow-x:auto;scrollbar-width:thin}.yaku-hand,.yaku-ankan{display:flex;align-items:flex-end;gap:2px;flex:0 0 auto}.yaku-example .tile-small{width:28px}.yaku-example .tile-back{width:28px;height:39px;flex:0 0 auto}.yaku-win-tile{display:flex;align-items:flex-end;gap:4px;margin-left:5px;flex:0 0 auto}.yaku-win-tile span{align-self:center;color:var(--gold);font-size:10px;font-weight:700;writing-mode:vertical-rl}.achieved{position:absolute;right:12px;bottom:10px;color:#72cf8d}.records-tabs{width:min(440px,calc(100% - 32px));margin:18px auto}.stats-grid{width:min(760px,100%);margin:auto;padding:0 16px 24px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat{display:flex;flex-direction:column;gap:15px}.stat span{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.stat svg{width:18px;color:var(--gold)}.stat strong{color:var(--gold-light);font-size:20px}.highest-win{grid-column:1 / -1}.highest-win-yaku{margin:-4px 0 0;color:var(--muted);font-size:13px;line-height:1.6}.highest-win-shape{display:grid;gap:7px}.highest-win-shape>span{color:var(--muted);font-size:12px}.highest-win-shape>div{display:flex;align-items:flex-end;gap:3px;overflow-x:auto}.highest-win-shape .tile-small{width:32px;flex:0 0 auto}.settings-list{width:min(680px,calc(100% - 32px));margin:22px auto;overflow:hidden;border:1px solid var(--border);border-radius:7px}.settings-list button{width:100%;min-height:60px;padding:0 16px;display:grid;grid-template-columns:28px 1fr 24px;align-items:center;gap:12px;border:0;border-bottom:1px solid rgba(255,255,255,.08);color:#f3efe0;background:var(--panel);text-align:left;cursor:pointer}.settings-list button:last-child{border:0}.settings-list svg{color:var(--gold);width:20px}.version{text-align:center;color:var(--muted);font-size:12px}.rules{width:min(700px,calc(100% - 32px));margin:22px auto;line-height:1.8}.rules h2{color:var(--gold-light)}.rules p,.rules dd{color:var(--muted)}.rules dl{display:grid;gap:0}.rules dl div{display:grid;grid-template-columns:90px 1fr;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.08)}.rules dt{color:var(--gold);font-weight:800}.rules dd{margin:0}@media(max-width:560px){.game-screen{grid-template-rows:auto minmax(310px,1fr) auto}.game-header{gap:6px}.game-header>div:nth-child(2) span{display:none}.table{min-height:330px}.side-left{left:3px}.side-right{right:3px}.discards-left{left:20px}.discards-right{right:20px}.discards-top,.discards-bottom{width:72%}.human-area .player-info{font-size:11px}.hand-row{gap:3px}.tile-back{width:20px;height:29px}.ankan-set .tile-small{width:21px}.stats-grid{grid-template-columns:1fr}.bottom-nav span{font-size:13px}}@media(min-width:900px)and (min-height:720px){.game-screen{grid-template-rows:auto minmax(480px,1fr) auto}.table{min-height:520px}.discards-left{left:90px}.discards-right{right:90px}.human-area{padding-bottom:18px}}
