/* V3.1.2 usability. Existing room, table, tile art and action effects stay intact. */
.visual-v312 .player-console { top:var(--console-y);bottom:auto; }
.visual-v312 .rivers { grid-template-columns:minmax(0,1fr) 110px minmax(0,1fr);grid-template-rows:1fr 1.18fr 1fr;gap:8px; }
.visual-v312 .river { border:1px solid #dfd8a44d;border-radius:9px;background:#0b3c344a;padding:16px 4px 4px;position:relative;overflow:auto;scrollbar-width:thin;scrollbar-color:#d7bc86 #143d32; }
.visual-v312 .river--0 { border-color:#e9ce8caa;background:#134d3d99;box-shadow:inset 0 0 12px #f8d99417; }
.visual-v312 .river-label { top:2px;bottom:auto;left:6px;right:auto;transform:none;position:absolute;color:#fff0ce;font-size:9px;letter-spacing:.5px; }
.visual-v312 .river--0 .river-label { font-weight:800; }
.visual-v312 .river-tile { margin:0;position:relative; }
.visual-v312 .river-gap { opacity:.45;border:1px dashed #dec99566;border-radius:3px;min-height:8px; }
.visual-v312 .seat--1 .back-row,.visual-v312 .seat--3 .back-row { gap:1px; }
.visual-v312 .seat--1 .back-row > .tile-back,.visual-v312 .seat--3 .back-row > .tile-back { --tile-width:17px; }
.visual-v312 .meld-row { position:absolute;left:var(--meld-x);top:var(--meld-y);right:auto;bottom:auto;transform:translate(-50%,-50%);max-width:none;width:max-content;z-index:8;gap:7px;padding:4px;border-radius:6px;background:#15382a99;box-shadow:0 3px 6px #08251c66; }
.visual-v312 .meld-row .tile-art { --tile-width:17px; }
.visual-v312 .seat--1 .meld-row,.visual-v312 .seat--3 .meld-row { transform:translate(-50%,-50%) rotate(var(--meld-angle)); }
.visual-v312 .meld { display:flex;gap:1px; }
.visual-v312 .human-seat .meld-row { position:static;transform:none; }
.visual-v312 .player-meld-zone { display:flex;justify-content:flex-end;align-items:center;gap:8px;min-height:0;margin:3px 0 8px;padding:5px 8px;border:1px solid #ddbf8677;border-radius:8px;background:#18382acc; }
.visual-v312 .player-meld-zone:empty { display:none; }
.visual-v312 .player-meld-zone > small { margin-right:auto;color:#ffe8b4;font-size:10px; }
.visual-v312 .player-meld-zone .tile-art { --tile-width:24px; }
.visual-v312 .anime-seat[data-character-id="purple"] .character-figure { mask-image:linear-gradient(to bottom,#000 0 83%,transparent 100%); }
.visual-v312 .anime-seat[data-character-id="purple"] .character-figure { display:flex;justify-content:center;align-items:flex-start; }
.visual-v312 .anime-seat[data-character-id="purple"] .character-figure img { width:auto;height:auto;max-width:100%;max-height:100%;mask-image:linear-gradient(to bottom,#000 0 78%,transparent 100%);filter:drop-shadow(0 5px 4px #22132c88); }
.visual-v312 .human-seat .meld-row { display:none; }
.visual-v312 .seat-copy { height:52px; }
.visual-v312 .seat-copy > span { display:block;min-height:16px; }
.visual-v312 .seat--2 .seat-copy { text-align:center; }
.settings-modal .segmented { background:#eaddf0;border:1px solid #9e7aaa; }
.settings-modal .segmented button { color:#40264f;background:#f3eafa;font-weight:700;opacity:1; }
.settings-modal .segmented button.is-active { color:#fff8ea;background:#65307c;box-shadow:inset 0 0 0 1px #efc77e; }
.settings-modal .switch { color:#41244f;background:#f1e5f5;border:1px solid #90719d;opacity:1;font-weight:700; }
.settings-modal .switch i { background:#766081; }
.settings-modal .switch[aria-pressed="true"] { color:#fff8ec;background:#633377;border-color:#e7bd77; }
.settings-modal .switch[aria-pressed="true"] i { background:#ffd79d; }
.settings-modal button:hover:not(:disabled) { filter:brightness(1.08); }
.settings-modal button:focus-visible,.tutorial-modal button:focus-visible { outline:3px solid #f2bd50;outline-offset:3px; }
.settings-modal button:disabled,.tutorial-modal button:disabled { opacity:.48;cursor:not-allowed;filter:grayscale(1); }
.settings-modal input[type="range"] { accent-color:#74338d;background:#b899c6;height:8px;border-radius:8px; }
.settings-modal input[type="range"]::-webkit-slider-thumb { appearance:auto; }
.tutorial-modal { width:min(680px,100%);max-height:90svh;overflow-y:auto;border:2px solid #c59c62;border-radius:22px;color:#fff2df;background:linear-gradient(145deg,#583564,#271b35); }
.tutorial-modal h2 { margin-bottom:12px; }.tutorial-modal h3 { font-size:21px;margin:17px 0; }
.tutorial-progress { display:flex;gap:7px; }.tutorial-progress button { width:32px;height:32px;border:1px solid #d6b47d;border-radius:50%;background:#392340;color:#ffe5c0;cursor:pointer; }.tutorial-progress [aria-current="step"] { background:#edc789;color:#43224c;font-weight:800; }
.tutorial-art { display:flex;flex-wrap:wrap;gap:15px;align-items:center;justify-content:center;padding:14px 4px;min-height:120px;border-radius:12px;background:#153e34; }
.tutorial-tiles { display:flex;gap:5px; }.tutorial-tiles .tile-art { --tile-width:34px; }.tutorial-family { min-width:155px;text-align:center; }.tutorial-family b { display:block;margin-bottom:10px;color:#ffdfa8;font-size:12px; }.tutorial-family .tutorial-tiles { justify-content:center; }
.tutorial-modal article p { line-height:1.65;font-size:15px;min-height:95px; }.tutorial-nav { display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:18px; }.tutorial-actions { display:flex;flex-wrap:wrap;gap:10px;justify-content:center; }.tutorial-actions .action-button { padding:8px 17px;min-width:65px; }.tutorial-assist > div { text-align:center; }.tutorial-assist strong { display:block;margin-top:9px;color:#ffdf9a; }
@media(max-width:800px) { .visual-v312 .rivers { grid-template-columns:minmax(0,1fr) 90px minmax(0,1fr);gap:6px; }.visual-v312 .seat--1 .back-row > .tile-back,.visual-v312 .seat--3 .back-row > .tile-back { --tile-width:12px; }.visual-v312 .meld-row .tile-art { --tile-width:12px; } }
@media(max-width:520px) { .visual-v312 .rivers { grid-template-columns:minmax(0,1fr) 68px minmax(0,1fr);gap:4px; }.visual-v312 .river { padding:13px 2px 2px; }.visual-v312 .river-label { left:3px;font-size:7px; }.visual-v312 .seat--1 .back-row > .tile-back,.visual-v312 .seat--3 .back-row > .tile-back { --tile-width:8px; }.visual-v312 .meld-row .tile-art { --tile-width:8px; }.visual-v312 .player-meld-zone .tile-art { --tile-width:16px; }.visual-v312 .seat-copy { height:33px; }.tutorial-modal { padding:22px 16px; }.tutorial-progress { gap:5px; }.tutorial-progress button { width:29px;height:29px; }.tutorial-modal h3 { font-size:18px; }.tutorial-modal article p { font-size:13px; }.tutorial-tiles .tile-art { --tile-width:27px; }.tutorial-family { min-width:120px; } }
