:root{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;--bg:#fdfdfd;--bg-dark:#e4e4e2;--bg-light:#c7c7c7;--text:#000;--accent:#286c83;--red:#c41a16;--success:#1b5e20;--gold:#d7a936;--radius:14px;--shadow:0 6px 16px #0000001f;color-scheme:light dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-size:16px;line-height:1.5}img{max-width:100%;display:block}h1,h2,h3,h4{margin:0 0 .6rem}p{margin:.4rem 0 1rem}.page{width:100%;max-width:720px;margin:0 auto;padding:12px}.page-header{display:flex;flex-direction:column;gap:8px;padding:10px 12px;margin-bottom:12px;border:1px solid var(--bg-light);border-radius:var(--radius);background:var(--bg-dark)}.page-title h1{margin:0;font-size:1.3rem;line-height:1.5}.page-user{font-size:.95rem;opacity:.8}.icon-nav{display:flex;justify-content:space-between;gap:8px;width:100%}.icon-nav>a,.icon-nav form{flex:1 1 0;min-width:0}.icon-nav form{margin:0}.icon-btn{display:flex;width:100%;min-height:64px;padding:10px 8px;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1px solid var(--bg-light);border-radius:14px;background:var(--bg);color:var(--text);font:inherit;font-size:.85rem;text-decoration:none;box-shadow:none;cursor:pointer}.icon-btn:hover{background:color-mix(in srgb,var(--bg) 75%,var(--bg-light))}.icon-svg{display:flex;width:28px;height:28px;align-items:center;justify-content:center;color:var(--accent)}.icon-svg svg{width:24px;height:24px}.button,button:not(.icon-btn):not(.tile):not(.dialog-close){display:inline-flex;align-items:center;justify-content:center;min-height:2.6rem;padding:.6rem 1rem;border:1px solid var(--accent);border-radius:10px;background:var(--bg);color:var(--text);text-decoration:none;font:inherit;font-weight:700;cursor:pointer}.button:hover,button:not(.icon-btn):not(.tile):not(.dialog-close):hover{background:var(--bg-dark)}button:disabled{cursor:wait;opacity:.55}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.home-logo{display:flex;justify-content:center;margin:12px 0 16px}.home-logo img{width:min(240px,70%);height:auto}.home-page .page{min-height:calc(100vh - 48px);display:grid;grid-template-rows:auto 1fr}.home-page .home-logo{align-self:center;justify-self:center;margin:0}.card,.content-page>section,.page-intro{padding:12px;margin-bottom:12px;border:1px solid var(--bg-light);border-radius:var(--radius);background:var(--bg-dark);box-shadow:var(--shadow)}.link-list{display:grid;gap:8px}.link-list a{display:flex;padding:10px 12px;flex-direction:column;border:1px solid var(--bg-light);border-radius:10px;background:var(--bg);color:var(--text);text-decoration:none}.link-list a:hover{border-color:var(--accent)}.link-list span{font-size:.86rem;opacity:.72}.compact-form{display:grid;max-width:28rem;gap:1rem}.compact-form label{display:grid;gap:.35rem}.compact-form input{padding:.65rem;border:1px solid var(--bg-light);border-radius:10px;background:var(--bg);color:var(--text)}.login-panel{width:100%;max-width:28rem;margin:2rem auto 0;text-align:center}.login-panel .compact-form{text-align:left}.login-panel button{width:100%}.error,.game-notice.is-error{color:var(--red)}.page-footer{margin:16px 0 10px;text-align:center;font-size:.85rem;opacity:.6}.page-footer a{color:inherit;text-decoration:none}

.content-page{display:grid;gap:0}.page-intro h1{font-size:1.55rem}.page-intro p:last-child{margin-bottom:0}.content-page h2{font-size:1.25rem}.on-page{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.on-page a{padding:6px 10px;border:1px solid var(--bg-light);border-radius:10px;background:var(--bg);color:var(--text);text-decoration:none;font-size:.86rem}.rule-example,.score-formula{display:flex;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap;margin:1rem 0;padding:10px;border:1px solid var(--bg-light);border-radius:10px;background:var(--bg)}.rule-example span,.score-formula span{padding:.5rem .8rem;border-radius:8px;background:var(--bg-dark);font-weight:700}.steps{display:grid;gap:.7rem;padding:0;list-style:none}.steps li{display:grid;grid-template-columns:2.4rem 1fr;gap:.7rem;align-items:start}.steps li>span{display:grid;place-items:center;width:2.3rem;height:2.3rem;border-radius:50%;background:var(--accent);color:#fff;font-weight:700}.steps h3,.steps p{margin:0}.rule-grid,.limit-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.rule-grid>div,.limit-columns>div{padding:10px;border:1px solid var(--bg-light);border-radius:10px;background:var(--bg)}.tile-example{display:flex;gap:4px;margin:.8rem 0}.tile-example img{width:52px;border-radius:4px;box-shadow:0 3px 6px #0003}.priority{font-weight:700;color:var(--accent)}.tile-family{margin:1.2rem 0}.tile-gallery{display:grid;grid-template-columns:repeat(9,minmax(42px,1fr));gap:.35rem}.tile-gallery figure{min-width:0;margin:0;text-align:center;font-size:.7rem;opacity:.8}.tile-gallery img{display:block;width:100%;border-radius:4px;box-shadow:0 3px 7px #0003}.tile-gallery.compact{grid-template-columns:repeat(4,minmax(45px,72px))}.bonus-gallery{grid-template-columns:repeat(8,minmax(45px,1fr))}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;background:var(--bg)}th,td{padding:.75rem;text-align:left;border-bottom:1px solid var(--bg-light)}th{background:var(--bg-dark)}.check-list{padding-left:1.3rem}.limit-row{display:flex;justify-content:space-between;gap:1rem;padding:.55rem 0;border-bottom:1px solid var(--bg-light)}.limit-row small{padding:.1rem .35rem;border-radius:999px;background:var(--bg-dark)}.limit-row strong{color:var(--accent)}

.game-page .page{max-width:none;padding:12px}.game-page .page-header{max-width:720px;margin:0 auto 12px}.game-shell{max-width:1440px;margin:0 auto}.game-toolbar{display:flex;align-items:end;justify-content:space-between;gap:1rem;padding:.4rem .25rem 1rem}.game-toolbar h1{margin:.1rem 0;font-size:clamp(1.5rem,3vw,2.35rem)}.eyebrow{margin:0;text-transform:uppercase;letter-spacing:.13em;font-size:.72rem;font-weight:900;opacity:.65}.toolbar-actions{display:flex;align-items:center;gap:.8rem}.game-counter{font-variant-numeric:tabular-nums;opacity:.7}.game-notice{min-height:2.8rem;margin-bottom:.7rem;padding:.7rem 1rem;border:1px solid var(--bg-light);border-left:5px solid var(--gold);border-radius:var(--radius);background:var(--bg-dark)}.table-wrap{overflow:auto;border-radius:1.2rem;box-shadow:0 14px 40px #17352f40}.mahjong-table{position:relative;display:grid;grid-template-columns:minmax(150px,1fr) minmax(470px,4fr) minmax(150px,1fr);grid-template-rows:minmax(125px,auto) minmax(350px,1fr) minmax(150px,auto) minmax(58px,auto);grid-template-areas:"west north east" "west center east" "west south east" "west controls east";min-width:900px;min-height:780px;padding:1rem;background:radial-gradient(circle at center,#23795c 0,#176047 50%,#0d4335 100%);border:12px solid #7a5133;box-shadow:inset 0 0 0 4px #b98b54,inset 0 0 40px #082c24}.seat{display:flex;flex-direction:column;justify-content:center;gap:.45rem;padding:.6rem;color:#fff;min-width:0}.seat-north{grid-area:north;align-items:center}.seat-south{grid-area:south;align-items:center}.seat-west{grid-area:west;align-items:center}.seat-east{grid-area:east;align-items:center}.seat-heading{display:flex;align-items:baseline;gap:.55rem;padding:.25rem .7rem;border-radius:999px;background:#0a352b80}.seat-heading span{font-size:.72rem;opacity:.78}.seat-score-link{min-height:auto!important;padding:0!important;border:0!important;background:transparent!important;color:#72cefd!important;font:inherit!important;font-size:.72rem!important;font-weight:800!important;text-decoration:underline;text-underline-offset:2px;box-shadow:none!important}.seat.is-active .seat-heading{color:#1a342e;background:#f3c849;box-shadow:0 0 0 3px #fff4}.player-rack{display:flex;flex-direction:column;align-items:center;gap:.35rem;width:max-content;max-width:none;transform-origin:center}.seat-north .player-rack{transform:rotate(180deg)}.seat-west .player-rack{transform:rotate(90deg)}.seat-east .player-rack{transform:rotate(-90deg)}.hand-row,.open-row{display:flex;justify-content:center;align-items:end;gap:2px;max-width:none}.open-row{min-height:35px;gap:.5rem}.meld-group{display:inline-flex;gap:1px;padding:2px;border-radius:4px;background:#082f2780}.seat:not(.seat-south) .hand-row .tile{width:clamp(29px,3.45vw,49px)}.tile{position:relative;display:inline-flex;width:clamp(29px,3.45vw,49px);aspect-ratio:2/3;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible;flex:0 0 auto}.tile img{width:100%;height:100%;object-fit:contain;display:block}.tile-small{width:clamp(29px,3.45vw,49px);border-radius:0;box-shadow:none}.hand-row button.tile{transition:transform .12s ease,filter .12s ease}.hand-row button.tile:hover,.hand-row button.tile:focus-visible{z-index:2;transform:translateY(-10px);filter:brightness(1.06);outline:3px solid #f5ca43;outline-offset:1px}.hand-row .tile.is-drawn{z-index:1;outline:4px solid #df1616;outline-offset:2px}.table-center{grid-area:center;position:relative;display:grid;place-items:center;min-width:0;border:1px solid #ffffff1c;border-radius:50%;background:radial-gradient(circle,#ffffff0a 0,#ffffff00 66%)}.wind-disc{position:absolute;display:grid;place-items:center;z-index:1;width:100px;height:100px;border-radius:50%;background:#f5e6bc;color:#674321;border:7px double #bc913d;box-shadow:0 5px 20px #082e2566;text-align:center}.wind-disc span{font:800 1.3rem Georgia,serif}.wind-disc small,.wall-status small{font-size:.58rem;text-transform:uppercase;letter-spacing:.08em}.wall-status{position:absolute;top:1rem;right:1rem;display:grid;text-align:right;color:#fff}.wall-status span{font-size:1.5rem;font-weight:900}.discard-river{width:100%;height:100%;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:7rem;padding:1.2rem}.discard-group{display:flex;align-content:flex-start;justify-content:center;flex-wrap:wrap;gap:3px}.discard-group>span:first-child{width:100%;height:min-content;color:#fff8;font-size:.65rem;text-align:center}.last-discard{outline:3px solid #f2c542;outline-offset:2px;animation:pulse 1.7s infinite}@keyframes pulse{50%{filter:brightness(1.25)}}.table-controls{grid-area:controls;display:flex;align-items:center;justify-content:center;gap:.55rem;flex-wrap:wrap;min-height:54px;margin:.1rem .7rem 0;padding:.45rem .7rem;border-top:1px solid #ffffff26;border-radius:0 0 12px 12px;background:#0a352b73}.table-controls .action-buttons,.table-controls .claim-buttons{flex:1 0 100%;justify-content:center}.play-panel{display:flex;align-items:flex-start;justify-content:flex-end;padding:1rem 0}.action-buttons,.claim-buttons{display:flex;gap:.55rem;flex-wrap:wrap}.button-gold{background:#b77b08;color:#fff}.button-muted{background:#5e716d}.advice-panel{margin-left:auto;max-width:490px;padding:.7rem 1rem;border-radius:var(--radius);background:#fff9e8;border:1px solid #e5ca7c;color:#58440b}.advice-panel strong{display:block;color:#806110}.score-dialog{width:min(92vw,470px);padding:2rem;border:0;border-radius:var(--radius);color:#17352f;box-shadow:0 20px 80px #071c17aa}.score-dialog::backdrop{background:#071c17b5;backdrop-filter:blur(3px)}.dialog-close{position:absolute;right:.7rem;top:.7rem;min-height:2.2rem;width:2.2rem;padding:0;border-radius:50%;background:#e7eeeb;color:#23483f;box-shadow:none;font-size:1.5rem}.score-total{font:800 2.2rem Georgia,serif;color:#a46c09}.score-dialog dl div{display:flex;justify-content:space-between;border-bottom:1px solid #dce5e1;padding:.55rem 0}.score-dialog dd{font-weight:800}.is-busy .mahjong-table{filter:saturate(.75)}

.seat-north .player-rack{transform:none}.seat-north .hand-line{order:2}.seat-north .open-row{order:3}.rack-meta{display:flex;align-items:center;justify-content:center;gap:.55rem}.hand-line{display:flex;align-items:center;justify-content:center;gap:.55rem}.round-wind-marker{display:grid;place-items:center;width:38px;height:38px;flex:0 0 38px;border:3px double #a67531;border-radius:50%;background:radial-gradient(circle at 35% 28%,#fff9dc 0,#ead39a 62%,#c39a55 100%);color:#6b311d;box-shadow:inset 0 1px 2px #fff9,0 2px 7px #082e2577;font:900 1.35rem/1 Georgia,"Songti SC","Noto Serif CJK SC",serif;text-shadow:0 1px #fff8}.mahjong-table>.wall-status{top:1.25rem;right:1.5rem;z-index:3}.discard-river{display:flex;width:96%;height:94%;min-height:0;align-content:center;align-items:center;justify-content:center;gap:5px 3px;padding:.35rem;flex-wrap:wrap}.discard-river .tile{transform:rotate(var(--scatter-angle,0deg));margin:0}.discard-river .last-discard{transform:rotate(var(--scatter-angle,0deg)) scale(1.08)}

@media(prefers-color-scheme:dark){:root{--bg:#262628;--bg-dark:#1b1b1b;--bg-light:#585858;--text:#ddd;--accent:#72cefd}.advice-panel{background:#342d1b;color:#f4df9e}.score-dialog{background:#262628;color:#ddd}}
@media(max-width:800px){.rule-grid,.limit-columns{grid-template-columns:1fr}.bonus-gallery{grid-template-columns:repeat(4,1fr)}.game-page .page{padding:6px}.game-toolbar{align-items:flex-start}.toolbar-actions{align-items:flex-end;flex-direction:column}.game-counter{font-size:.75rem}.table-wrap{border-radius:.75rem}.advice-panel{margin-left:0;width:100%}}
@media(max-width:520px){.page{padding:8px}.page-header{padding:8px}.icon-nav{gap:5px}.icon-btn{min-height:58px;padding:7px 3px;font-size:.73rem}.icon-svg{width:23px;height:23px}.tile-gallery{grid-template-columns:repeat(5,1fr)}.tile-gallery.compact{grid-template-columns:repeat(4,1fr)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.last-discard{animation:none}.hand-row button.tile{transition:none}}

.full-hd-notice{display:none}
@media (min-width:1500px) and (min-height:800px){.game-shell{max-width:1840px}.mahjong-table{grid-template-columns:minmax(200px,1fr) minmax(1000px,4fr) minmax(200px,1fr);grid-template-rows:minmax(120px,auto) minmax(420px,1fr) minmax(145px,auto) minmax(52px,auto);min-width:1700px;min-height:800px}.discard-river{width:98%;height:96%;gap:5px 4px}}
@media (orientation:landscape) and (max-width:1499px){.game-shell{max-width:1360px}.mahjong-table{grid-template-columns:minmax(125px,1fr) minmax(560px,4fr) minmax(125px,1fr);grid-template-rows:minmax(95px,auto) minmax(330px,1fr) minmax(125px,auto) minmax(46px,auto);min-width:960px;min-height:650px;padding:.7rem;border-width:9px}.seat{padding:.4rem}.discard-river{width:98%;height:97%;gap:3px 2px;padding:.2rem}.table-controls{min-height:44px;padding:.3rem}.round-wind-marker{width:32px;height:32px;flex-basis:32px;font-size:1.05rem}}
@media (orientation:landscape) and (max-width:1000px) and (max-height:520px){.full-hd-notice{display:block;margin:0 0 .45rem;padding:.45rem .7rem;border:1px solid #d7a936;border-left:5px solid #d7a936;border-radius:9px;background:#fff4cd;color:#513b00;font-size:.78rem;font-weight:700}.game-toolbar{padding-bottom:.45rem}.game-notice{min-height:2rem;margin-bottom:.4rem;padding:.4rem .7rem;font-size:.8rem}.mahjong-table{grid-template-columns:90px 540px 90px;grid-template-rows:72px 245px 98px 42px;min-width:760px;min-height:480px;padding:.35rem;border-width:7px}.seat{padding:.2rem}.seat-heading{padding:.15rem .45rem;font-size:.72rem}.seat-heading span{font-size:.58rem}.tile{width:24px}.seat:not(.seat-south) .hand-row .tile{width:24px}.tile-small{width:24px}.hand-line,.player-rack{gap:.2rem}.open-row{min-height:25px;gap:.25rem}.round-wind-marker{width:27px;height:27px;flex-basis:27px;border-width:2px;font-size:.9rem}.mahjong-table>.wall-status{top:.55rem;right:.7rem}.wall-status span{font-size:1.05rem}.wall-status small{font-size:.48rem}.table-controls button:not(.tile){min-height:2rem;padding:.3rem .55rem;font-size:.75rem}}

.game-page .page{padding:.4rem}.game-page .game-notice{padding-left:3.65rem}.game-menu{position:fixed;top:.65rem;left:.65rem;z-index:100}.game-menu summary{display:grid;place-items:center;width:42px;height:42px;border:1px solid #ffffff55;border-radius:50%;background:#0a352be8;color:#fff;box-shadow:0 4px 14px #0005;cursor:pointer;list-style:none;font-size:1.45rem;line-height:1}.game-menu summary::-webkit-details-marker{display:none}.game-menu[open] summary{background:#b77b08}.game-menu-panel{position:absolute;top:48px;left:0;display:grid;width:240px;gap:.55rem;padding:1rem;border:1px solid var(--bg-light);border-radius:12px;background:var(--bg);color:var(--text);box-shadow:0 12px 35px #0007}.game-menu-panel strong{font-size:.9rem}.game-menu-panel label{font-size:.76rem;opacity:.75}.game-menu-panel select{width:100%;padding:.55rem;border:1px solid var(--bg-light);border-radius:8px;background:var(--bg-dark);color:var(--text);font:inherit}.game-menu-panel button,.game-close{width:100%;min-height:2.35rem;padding:.5rem .7rem;border-radius:9px;text-align:center}.game-close{display:flex;align-items:center;justify-content:center;border:1px solid var(--red);color:var(--red);text-decoration:none;font-weight:800}.game-credit{margin:1em 0 0;text-align:center;font-size:.75rem;opacity:.65}.game-menu-divider{height:1px;background:var(--bg-light)}.game-page .game-shell{max-width:1900px}.game-page .play-panel{padding:.35rem 0}

.game-page .page{padding:0}.game-page .game-shell{max-width:none}.game-page .table-wrap{border-radius:0}.mahjong-table>.game-menu{position:absolute;top:.8rem;left:.8rem}.mahjong-table>.game-notice{position:absolute;top:.8rem;left:4.15rem;z-index:4;min-height:0;max-width:min(62%,720px);margin:0;padding:.55rem 0;border:0;background:transparent;color:#fff;font-weight:700;text-shadow:0 1px 3px #001c16,0 0 8px #001c1688}.mahjong-table>.game-notice.is-error{color:#ffb5b2}.mahjong-table>.full-hd-notice{position:absolute;top:3.7rem;left:.8rem;z-index:4}.game-page .play-panel{padding:.2rem .4rem}@media (min-width:1500px) and (min-height:800px){.game-page .mahjong-table{min-height:100vh}}
.menu-balances{display:grid;gap:.3rem;font-size:.82rem}.menu-balances span{display:flex;justify-content:space-between;gap:1rem}.menu-balances b{font-variant-numeric:tabular-nums}.settings-dialog form{display:grid;gap:.7rem}.settings-dialog label:not(.sound-setting){font-size:.82rem;font-weight:800}.settings-dialog select{width:100%;padding:.65rem;border:1px solid #afbfba;border-radius:9px;background:#fff;color:#17352f;font:inherit}.settings-dialog small{color:#755308}.settings-dialog #ai-difficulty-settings,.settings-dialog #ai-delay-setting{display:grid;gap:.35rem}.settings-warning{margin:0;padding:.65rem;border-left:4px solid #d7a936;border-radius:7px;background:#fff4cd;color:#513b00;font-size:.85rem}.sound-setting{display:flex;align-items:center;gap:.65rem;padding:.65rem 0;font-weight:800}.sound-setting input{width:1.15rem;height:1.15rem}.settings-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.25rem}.score-balances{margin-top:1rem}.score-balances dd{font-variant-numeric:tabular-nums}
.name-dialog form{display:grid;gap:.8rem}.name-dialog label{font-size:.82rem;font-weight:800}.name-dialog input{width:100%;padding:.7rem;border:1px solid #afbfba;border-radius:9px;background:#fff;color:#17352f;font:inherit}.name-dialog small{opacity:.75}
.welcome-dialog{text-align:center}.welcome-dialog h2{margin-top:.35rem}.welcome-menu-hint{display:flex;align-items:center;justify-content:center;gap:.65rem;margin:1.2rem 0;padding:.75rem;border:1px solid #d7a936;border-radius:10px;background:#fff8df;color:#513b00;font-weight:800}.welcome-menu-hint span{font-size:1.5rem}.welcome-dialog #welcome-new-game{width:100%;font-size:1.05rem}
.mobile-river-toggle{display:none!important}.mobile-hand-count{display:none}
.claim-timer-bar{position:fixed;z-index:10000;top:0;left:0;width:100%;height:3px;background:var(--accent);box-shadow:0 0 6px color-mix(in srgb,var(--accent) 70%,transparent);transform-origin:left center;pointer-events:none}.claim-timer-bar.is-urgent{background:#f05b50;box-shadow:0 0 7px #f05b50aa}

/* Mobiele spelmodus: informatie bovenaan, actuele afleg centraal en de eigen hand groot in twee rijen. */
@media(max-width:700px){
  .game-page{overflow-x:hidden;background:#0d4335}
  .game-page .mahjong-table{display:grid;width:100%;min-width:0;min-height:100dvh;padding:4.3rem .45rem .55rem;border-width:6px;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto minmax(150px,1fr) auto auto;grid-template-areas:"north west east" "center center center" "controls controls controls" "south south south";gap:.35rem;border-radius:0}
  .game-page .seat{min-width:0;padding:.2rem;justify-content:flex-start}
  .game-page .seat-north,.game-page .seat-west,.game-page .seat-east{align-items:stretch;transform:none}
  .game-page .seat-north .player-rack,.game-page .seat-west .player-rack,.game-page .seat-east .player-rack{width:100%;transform:none}
  .game-page .seat:not(.seat-south) .hand-line{display:none}
  .game-page .seat:not(.seat-south) .open-row{justify-content:center;align-content:flex-start;max-width:100%;min-height:0;overflow:visible;flex-wrap:wrap;gap:3px 2px}
  .game-page .seat:not(.seat-south) .open-row .meld-group{flex:0 0 auto;gap:1px;padding:1px}
  .game-page .seat:not(.seat-south) .open-row .tile{width:clamp(20px,6vw,25px)}
  .game-page .seat-heading{display:grid;gap:0;width:100%;padding:.35rem .3rem;border-radius:8px;text-align:center;font-size:.74rem;line-height:1.2}
  .game-page .seat-heading span,.game-page .seat-score-link{font-size:.58rem!important}
  .game-page .mobile-hand-count{display:block;font-size:.58rem;opacity:.72}
  .game-page .table-center{min-height:110px;border-radius:18px;background:#0a352b80}
  .game-page .discard-river{display:flex;width:100%;height:auto;align-items:center;justify-content:center;gap:4px;padding:2.8rem .4rem .5rem;overflow:auto}
  .game-page .game-shell:not(.show-mobile-river) .discard-river>.tile:not(:last-child){display:none}
  .game-page .game-shell:not(.show-mobile-river) .discard-river>.tile:last-child{width:clamp(66px,22vw,88px);transform:none!important}
  .game-page .game-shell.show-mobile-river .mahjong-table{grid-template-rows:auto minmax(260px,1fr) auto auto}
  .game-page .game-shell.show-mobile-river .seat:not(.seat-south){padding:.08rem}
  .game-page .game-shell.show-mobile-river .seat:not(.seat-south) .seat-heading{padding:.18rem .08rem;font-size:.58rem;line-height:1.05}
  .game-page .game-shell.show-mobile-river .seat:not(.seat-south) .seat-heading span,.game-page .game-shell.show-mobile-river .seat:not(.seat-south) .mobile-hand-count{font-size:.48rem!important}
  .game-page .game-shell.show-mobile-river .seat:not(.seat-south) .open-row{gap:1px}
  .game-page .game-shell.show-mobile-river .seat:not(.seat-south) .open-row .tile{width:14px}
  .game-page .game-shell.show-mobile-river .discard-river{align-content:flex-start;align-items:flex-start;flex-wrap:wrap;gap:3px;padding:2.8rem .25rem .4rem}
  .game-page .game-shell.show-mobile-river .discard-river>.tile{width:clamp(24px,7.2vw,31px)}
  .game-page .mobile-river-toggle{position:absolute;z-index:3;top:.45rem;right:.45rem;display:inline-flex!important;min-height:34px!important;padding:.3rem .65rem!important;border-color:#ffffff66!important;background:#0a352bcc!important;color:#fff!important;font-size:.72rem!important}
  .game-page .wall-status{top:.55rem;right:.65rem}
  .game-page .wall-status small{max-width:66px;font-size:.43rem}
  .game-page .table-controls{position:relative;z-index:5;display:flex;min-height:58px;margin:0;padding:.4rem;border-radius:10px;background:#0a352bcc}
  .game-page .table-controls .action-buttons,.game-page .table-controls .claim-buttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));width:100%;gap:.4rem}
  .game-page .table-controls button:not(.tile){min-height:46px;padding:.45rem .55rem;font-size:.82rem}
  .game-page .table-controls .advice-row{max-width:100%;margin:0}
  .game-page .table-controls .advice-panel{font-size:.76rem}
  .game-page .seat-south{align-items:center;padding:.3rem .1rem .2rem}
  .game-page .seat-south .player-rack{width:100%;max-width:390px;gap:.25rem;transform:none}
  .game-page .seat-south .rack-meta{order:2}
  .game-page .seat-south .hand-line{order:1;width:100%;justify-content:center}
  .game-page .seat-south .hand-row{display:grid;width:min(100%,370px);grid-template-columns:repeat(7,minmax(0,1fr));align-items:end;gap:3px}
  .game-page .seat-south .hand-row .tile{width:100%;max-width:50px;justify-self:center}
  .game-page .seat-south .open-row{justify-content:center;min-height:24px;gap:2px}
  .game-page .seat-south .open-row .tile{width:25px}
  .game-page .seat-south .round-wind-marker{width:31px;height:31px;flex-basis:31px}
  .mahjong-table>.game-menu{position:absolute;top:.55rem;left:.55rem}
  .mahjong-table>.game-notice{top:.55rem;left:3.7rem;right:4.8rem;max-width:none;padding:.2rem 0;font-size:.75rem;line-height:1.25}
  .game-page .full-hd-notice{display:none!important}
  .game-menu-panel{max-height:calc(100dvh - 64px);overflow:auto}
}

.live-lobby{max-width:900px;margin:0 auto}.live-connection{padding:.4rem .7rem;border-radius:999px;background:#ddd;color:#333;font-size:.8rem}.live-connection.is-online{background:#d8f3dc;color:#185c2a}.live-seats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:2rem 0}.live-seat{min-height:100px;padding:1rem;border:1px dashed color-mix(in srgb,var(--accent) 55%,var(--bg-light));border-radius:14px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--bg-dark);color:var(--text);box-shadow:var(--shadow)}.live-seat.is-filled{border-style:solid;border-color:var(--accent);background:color-mix(in srgb,var(--bg-dark) 94%,var(--accent))}.live-seat span,.live-seat small{color:inherit;opacity:.62}.live-seat strong{color:var(--text);font-size:1.2rem}.live-actions{display:flex;gap:.75rem;flex-wrap:wrap}.live-actions .button{display:inline-flex;align-items:center;text-decoration:none}@media(max-width:560px){.live-seats{grid-template-columns:1fr 1fr;gap:.5rem}.live-seat{padding:.65rem;min-height:84px}.live-seat strong{font-size:1rem}}
.live-seat-controls{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:center;margin-top:.65rem}.live-seat-controls select,.live-seat-controls button,.live-seat>button{min-height:34px;padding:.35rem .55rem;border:1px solid var(--accent-blue);border-radius:8px;background:var(--bg-dark);color:var(--text)}.live-ai-timing{display:flex;align-items:center;gap:.45rem;padding:.35rem .55rem;border:1px solid var(--accent-blue);border-radius:9px}.live-ai-timing select{min-height:34px;border:0;border-radius:6px;background:var(--bg-dark);color:var(--text)}
.game-choice-page{max-width:920px;margin:0 auto}.game-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;margin-top:2rem}.game-choice-card{display:flex;min-height:250px;flex-direction:column;gap:1rem;padding:1.5rem;border:1px solid var(--bg-light);border-top:3px solid var(--accent);border-radius:18px;background:var(--bg-dark);color:var(--text);text-decoration:none;box-shadow:var(--shadow);transition:transform .15s ease,border-color .15s ease,background .15s ease}.game-choice-card:hover,.game-choice-card:focus-visible{transform:translateY(-3px);border-color:var(--accent);background:color-mix(in srgb,var(--bg-dark) 94%,var(--accent))}.game-choice-card div{flex:1}.game-choice-card h2{margin:.15rem 0 .6rem;color:var(--text)}.game-choice-card p{margin:0;color:var(--text);opacity:.78}.game-choice-card strong,.game-choice-icon{color:var(--accent)}.game-choice-icon{font-size:2rem}@media(max-width:650px){.game-choice-grid{grid-template-columns:1fr}.game-choice-card{min-height:190px}}

@media(max-width:380px){
  .game-page .mahjong-table{padding-left:.25rem;padding-right:.25rem}
  .game-page .seat-south .hand-row{gap:2px}
  .game-page .seat-heading{padding:.3rem .15rem;font-size:.68rem}
}
.home-page .page{min-height:100vh}
.about-story h2{text-align:center;margin:1rem 0 1.2rem}.about-story h2:not(:first-child){margin-top:2rem}
.opening-heading,.opening-result-title{display:flex;align-items:center;justify-content:space-between;gap:1rem}.opening-heading span,.opening-result-title strong{color:var(--accent);font-weight:900}.opening-rack{display:flex;min-height:78px;align-items:flex-end;gap:3px;padding:.65rem;border:1px dashed var(--bg-light);border-radius:10px;background:var(--bg)}.opening-selected,.opening-choice{position:relative;min-height:0!important;padding:0!important;border:0!important;border-radius:4px!important;background:transparent!important}.opening-selected img,.opening-choice img,.opening-target img{width:44px;height:auto}.opening-picker{display:grid;grid-template-columns:repeat(9,1fr);gap:5px}.opening-choice{justify-self:center}.opening-choice:disabled{opacity:.35}.tile-amount{position:absolute;right:-3px;top:-5px;display:grid;place-items:center;width:19px;height:19px;border-radius:50%;background:var(--accent);color:#fff;font-size:.72rem;font-weight:900}.opening-help{margin:.45rem 0 0;font-size:.82rem;opacity:.7}.opening-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1rem}.opening-results{display:grid;gap:.8rem}.opening-results>h2{margin-top:1rem}.opening-result-title strong{white-space:nowrap}.opening-target{display:flex;align-items:flex-end;gap:3px;flex-wrap:wrap}.opening-target img{padding:1px;border:3px solid #1c8044;border-radius:3px}.opening-target img.is-missing{border-color:#c53333;opacity:.62}.opening-target.discard img{border-color:#c53333}.opening-result h4{margin-top:1rem}.opening-empty{text-align:center}@media(max-width:620px){.opening-picker{grid-template-columns:repeat(7,1fr)}.opening-selected img,.opening-choice img,.opening-target img{width:38px}.opening-result-title{align-items:flex-start;flex-direction:column;gap:.2rem}}
.site-logo{display:inline-flex;width:58px;height:58px;align-items:center;justify-content:center;border-radius:50%}.site-logo img{width:100%;height:100%;object-fit:contain}.home-stage{align-self:center;justify-self:center;display:grid;justify-items:center}.home-page .home-logo img{width:min(266px,57.4vw)}.home-meta{margin:.8rem 0 0;text-align:center;font-size:.85rem;line-height:1.55;opacity:.6}.home-meta p{margin:0;font-weight:400}.home-meta a{color:inherit;text-decoration:none}
@font-face{font-family:"Chinese New Year";src:url("chinese-new-year.ttf") format("truetype");font-display:swap}.site-identity{display:flex;width:max-content;max-width:100%;align-items:center;gap:.75rem;border-radius:10px;color:inherit;text-decoration:none}.site-title{font-family:"Chinese New Year",Georgia,serif;font-size:clamp(1.55rem,5vw,2.15rem);line-height:1;letter-spacing:.025em}.site-title b{padding:0 .12em;font-family:Georgia,serif;font-weight:400;opacity:.45}
.rules-accordions{display:grid;gap:.7rem}.accordion{overflow:hidden;border:1px solid var(--bg-light);border-radius:var(--radius);background:var(--bg-dark);box-shadow:var(--shadow)}.accordion summary{padding:1rem 1.1rem;cursor:pointer;font-weight:900;list-style:none}.accordion summary::-webkit-details-marker{display:none}.accordion summary::after{content:"+";float:right;color:var(--accent);font-size:1.25rem}.accordion[open] summary::after{content:"−"}.accordion[open] summary{border-bottom:1px solid var(--bg-light)}.accordion-body{padding:1rem 1.1rem}.accordion-body h3{margin-top:1.35rem}.accordion-body h4{margin-top:1rem}.accordion-body li{margin:.35rem 0}.stenenrij,.example-row,.tile-strip{display:flex;align-items:flex-end;gap:3px;flex-wrap:wrap;margin:.7rem 0}.voorbeeld{display:flex;align-items:flex-end;gap:3px;max-width:100%;margin:.7rem 0;flex-wrap:wrap}.voorbeeld img{flex:0 0 auto}.complete-hand{gap:.65rem}.hand-set{display:inline-flex;align-items:flex-end;gap:3px;flex:0 0 auto}.stenenrij img,.example-row img,.tile-strip img{width:clamp(31px,7vw,48px);height:auto}.uitleg-hero{width:100%;max-height:440px;margin:1rem auto;border-radius:10px;object-fit:contain}.punten-lijst,.limiet-lijst{padding:0;list-style:none}.punten-lijst>li,.limiet-lijst>li{padding:.65rem 0;border-bottom:1px solid var(--bg-light)}.punten-lijst>li:not(.groep-kop){display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.25rem 1rem}.groep-kop{margin-top:1rem;font-weight:900;color:var(--accent)}.punt-waarde{font-weight:900}.punt-uitleg{grid-column:1/-1;margin:0;font-size:.9rem;opacity:.78}.limiet-naam{font-weight:900}.btn-link{min-height:auto!important;padding:.3rem .65rem!important;margin-top:.4rem;font-size:.85rem}.uitleg-popup{position:fixed;z-index:1000;inset:0}.uitleg-popup-backdrop{position:absolute;inset:0;background:#071c17c7;backdrop-filter:blur(3px)}.uitleg-popup-panel{position:absolute;z-index:1;left:50%;top:50%;width:min(92vw,720px);max-height:88vh;padding:1rem;overflow:auto;transform:translate(-50%,-50%);border-radius:var(--radius);background:var(--bg);box-shadow:0 20px 80px #000a}.uitleg-popup-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.example-rows{display:grid;gap:.65rem}.advice-details{display:none}.advice-details.is-open{display:block}@media(max-width:520px){.accordion-body{padding:.8rem}.punten-lijst>li:not(.groep-kop){grid-template-columns:1fr}.punt-uitleg{grid-column:1}.stenenrij img,.example-row img,.tile-strip img{width:34px}}
.rules-accordions img[src*="/tiles/"]{width:clamp(29px,3.45vw,49px);height:auto;flex:0 0 auto}
.score-dialog{max-height:min(90vh,780px);overflow:auto}.score-breakdown h3{margin:1rem 0 .35rem;font-size:.95rem}.score-breakdown ul{margin:0;padding:0;list-style:none}.score-breakdown li{display:flex;justify-content:space-between;gap:1rem;padding:.35rem 0;border-bottom:1px solid #dce5e1}.score-breakdown li b{font-variant-numeric:tabular-nums}.score-subtotal{font-weight:800}.score-formula{margin:1rem 0;padding:.7rem;border:2px solid #a8beb7;border-radius:9px;background:#edf4f1;color:#17352f;text-align:center;font-size:1.05rem}.score-formula strong{color:#0b3f32}.score-formula sup{font-size:.7em}
#score-dialog{width:min(96vw,1050px);max-height:min(calc(100vh - 24px),800px)}#score-content{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(250px,.8fr);align-items:start;gap:0 2rem}#score-content>.score-total,#score-content>.winning-combination{grid-column:1/-1}.winning-combination{margin:0 0 .5rem}.winning-combination h3{margin:.25rem 0 .45rem;font-size:.95rem}.winning-groups{display:flex;align-items:flex-end;gap:.55rem;flex-wrap:nowrap;max-width:100%;padding:.2rem 0 .45rem;overflow-x:auto}.winning-group{display:inline-flex;align-items:flex-end;gap:2px;padding:.25rem;border-radius:7px;background:#edf4f1}.winning-group .tile{width:clamp(29px,3.45vw,49px)}.score-winning-tile{outline:4px solid #c99b16;outline-offset:1px}.winning-table-layout{flex-wrap:nowrap;gap:.45rem}.winning-table-group{background:#082f2780}.winning-table-group .tile{width:clamp(29px,3.45vw,49px)}.winning-bonus{display:flex;align-items:center;gap:3px;flex-wrap:wrap;margin-top:.45rem;font-size:.8rem}.winning-bonus .tile{width:29px}.score-settlement{padding-top:1rem}.score-settlement h3{margin:0 0 .35rem;font-size:.95rem}.score-settlement .score-balances{margin-top:0}@media(max-width:650px){#score-dialog{width:min(92vw,470px)}#score-content{display:block}.score-settlement{padding-top:0}}
#score-dialog{padding:1.15rem 2rem}#score-dialog>.eyebrow{margin:0 0 .15rem}#score-title{margin:0 0 .65rem}#score-dialog .winning-combination{margin-bottom:.2rem}#score-dialog .winning-combination h3{margin:0 0 .3rem}#score-dialog .score-breakdown h3{margin:.55rem 0 .2rem}#score-dialog .score-breakdown li{padding:.22rem 0}#score-dialog .score-formula{margin:.6rem 0 0;padding:.45rem}#score-dialog .score-settlement{padding-top:.55rem}#score-dialog .score-balances{margin-top:0}#score-dialog .score-balances div{padding:.35rem 0}#score-new-game{display:flex;margin:.7rem 0 0 auto}
.table-controls .advice-row{display:flex;flex:1 0 100%;align-items:center;justify-content:center;gap:.55rem;max-width:min(1050px,96%);margin:.15rem auto 0}.table-controls .advice-panel{flex:1 1 auto;max-width:none;margin:0;padding:.55rem .8rem;font-size:.83rem}.table-controls .advice-panel strong{display:inline;margin-right:.35rem}.kong-buttons{display:flex;flex:0 0 auto}.kong-buttons:empty{display:none}@media(max-width:700px){.table-controls .advice-row{align-items:stretch;flex-direction:column}.kong-buttons button{width:100%}}
.table-controls .advice-panel #open-coach{min-height:1.8rem;margin-left:.6rem;padding:.2rem .55rem;font-size:.75rem}.advice-limit-link{min-height:auto!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:inherit!important;text-decoration:underline;text-underline-offset:2px}.coach-dialog{width:min(94vw,960px)}#coach-content h3{margin:1rem 0 .35rem}#coach-content h4{margin:.8rem 0 .35rem}.coach-targets{display:grid;gap:.65rem;padding:0;list-style:none}.coach-targets li{display:grid;gap:.15rem;padding:.65rem .75rem;border-left:3px solid var(--accent);border-radius:0 8px 8px 0;background:color-mix(in srgb,var(--bg-dark) 70%,transparent)}.coach-targets span{font-size:.9rem;line-height:1.4;opacity:.82}.limit-percentages{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.limit-percentages span{display:flex;justify-content:space-between;gap:1rem;padding:.55rem;border-radius:8px;background:#edf4f1;color:#17352f}.limit-analysis small{display:block;margin:.35rem 0;color:inherit;opacity:.75}.limit-tiles{display:flex;flex-wrap:wrap;gap:3px}.limit-tiles .tile{width:clamp(29px,3.45vw,49px)}.limit-owned{outline:3px solid #38a35a;outline-offset:1px}.limit-missing{outline:3px solid #e2b526;outline-offset:1px;filter:saturate(.8)}.limit-discards .tile{outline:3px solid #c63c38;outline-offset:1px;opacity:.72}@media(max-width:560px){.limit-percentages{grid-template-columns:1fr}.limit-tiles .tile{width:24px}}

/* Eigen tafelindeling voor 4:3-tablets in landscape, zoals iPad 1080 × 810 CSS-pixels. */
@media (orientation:landscape) and (min-width:900px) and (max-width:1250px) and (max-aspect-ratio:3/2){
  .game-page .mahjong-table{width:100vw;min-width:0;min-height:100vh;grid-template-columns:145px minmax(0,1fr) 145px;grid-template-rows:108px minmax(390px,1fr) 132px 58px;padding:.55rem;border-width:8px}
  .game-page .seat{padding:.25rem;gap:.25rem}
  .game-page .tile,.game-page .tile-small,.game-page .seat:not(.seat-south) .hand-row .tile{width:clamp(31px,3.45vw,38px)}
  .game-page .open-row{gap:.28rem;min-height:32px}
  .game-page .hand-line,.game-page .player-rack{gap:.25rem}
  .game-page .discard-river{width:99%;height:98%;gap:3px 2px;padding:.15rem}
  .game-page .seat-heading{padding:.18rem .5rem;font-size:.82rem}
  .game-page .seat-heading span,.game-page .seat-score-link{font-size:.62rem!important}
  .game-page .round-wind-marker{width:31px;height:31px;flex-basis:31px;font-size:1rem}
  .game-page .table-controls{min-height:52px;margin:0 .35rem;padding:.25rem .45rem}
  .game-page .table-controls button:not(.tile){min-height:44px;padding:.4rem .7rem}
  .mahjong-table>.game-menu{top:.55rem;left:.55rem}
  .mahjong-table>.game-notice{top:.55rem;left:3.85rem;max-width:58%;font-size:.88rem}
  .mahjong-table>.wall-status{top:.65rem;right:.8rem}
  #score-dialog{width:min(94vw,980px);max-height:min(calc(100vh - 18px),790px)}
  .coach-dialog{width:min(94vw,960px);max-height:calc(100vh - 18px)}
}

/* Feestelijk einde van een volledige Mahjong-avond. */
.evening-dialog{position:relative;width:min(92vw,1180px);max-height:88vh;padding:0;border:0;border-radius:20px;overflow:hidden;background:#182b27;color:#f7f1df;box-shadow:0 24px 100px #000c}
.evening-dialog::backdrop{background:#061b16d9;backdrop-filter:blur(7px)}
.evening-dialog[open]{display:grid;grid-template-columns:minmax(0,3fr) minmax(350px,2fr);align-items:stretch}
.evening-dialog>img{display:block;width:100%;height:auto;min-height:0;aspect-ratio:3/2;align-self:center;object-fit:cover}
.evening-copy{display:flex;flex-direction:column;justify-content:center;padding:2.4rem 2.2rem;isolation:isolate}
.evening-copy h2{margin:.25rem 0 1rem;color:#f5c84b;font:800 clamp(1.8rem,3vw,2.7rem) Georgia,serif}
.live-table-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem;margin:1rem 0}.live-table-choice{display:grid;gap:.25rem;padding:.75rem 1rem;border:1px solid #4f6570;border-radius:10px;background:#26343b;color:#eaf7ff;text-align:left}.live-table-choice span{font-size:.75rem;opacity:.78}.live-table-choice.is-selected{border-color:#68c9f5;background:#173b4d;box-shadow:inset 0 0 0 1px #68c9f5}
.seat-heading strong,#game-menu [id^="menu-name-"]{letter-spacing:.01em}.seat-heading strong{color:inherit}.seat-heading strong::first-letter{letter-spacing:normal}
.evening-proverb{margin:.25rem 0 1rem;font:italic 1.2rem/1.55 Georgia,serif;color:#fff}
.evening-actions{display:flex;flex-wrap:wrap;gap:.7rem;margin:1.35rem 0 .8rem}.evening-actions button{flex:1 1 180px}
.evening-confetti{position:absolute;inset:0;z-index:3;overflow:hidden;pointer-events:none}
.evening-confetti i{position:absolute;top:-8%;left:var(--x);width:9px;height:16px;border-radius:2px;background:#f4c542;animation:evening-confetti var(--duration) var(--delay) linear infinite}
.evening-confetti i:nth-child(3n){background:#e94b46}.evening-confetti i:nth-child(3n+1){background:#68d7bc}.evening-confetti i:nth-child(4n){border-radius:50%}
@keyframes evening-confetti{to{transform:translate3d(35px,115vh,0) rotate(var(--spin));opacity:.25}}
@media(max-width:850px){.evening-dialog[open]{display:block;max-height:94vh;overflow:auto}.evening-dialog>img{height:auto;max-height:42vh;aspect-ratio:3/2}.evening-copy{padding:1.4rem}.evening-confetti{position:fixed}}
@media(prefers-reduced-motion:reduce){.evening-confetti i{animation:none;display:none}}

/* Houd de kop even hoog voor en na het inloggen. */
.page-title{position:relative;display:grid;min-height:58px;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;align-items:center}
.page-header{position:relative}.language-switch{position:absolute;z-index:2;top:10px;right:12px;display:grid;width:48px;height:48px;place-items:center;border:1px solid var(--bg-light);border-radius:50%;background:var(--bg);font-size:1.65rem;line-height:1;text-decoration:none;box-shadow:0 2px 8px #0002}.language-switch:hover{border-color:var(--accent);transform:translateY(-1px)}.page-title{width:100%}.page-title .site-identity{padding-right:58px}
.page-user{position:static;grid-row:2;max-width:100%;margin-top:.2rem;overflow:hidden;transform:none;white-space:nowrap;text-overflow:ellipsis;justify-self:end}

/* Compacte landscape-tablets rond iPad mini 1133 × 744 CSS-pixels. */
@media (orientation:landscape) and (min-width:1000px) and (max-width:1250px) and (min-aspect-ratio:3/2) and (max-aspect-ratio:8/5) and (max-height:800px){
  .game-page .mahjong-table{width:100vw;min-width:0;min-height:100vh;grid-template-columns:135px minmax(0,1fr) 135px;grid-template-rows:92px minmax(340px,1fr) 118px 54px;padding:.45rem;border-width:8px}
  .game-page .seat{padding:.18rem;gap:.2rem}
  .game-page .tile,.game-page .tile-small,.game-page .seat:not(.seat-south) .hand-row .tile{width:clamp(29px,3vw,36px)}
  .game-page .open-row{gap:.22rem;min-height:29px}
  .game-page .hand-line,.game-page .player-rack{gap:.2rem}
  .game-page .discard-river{width:99%;height:99%;gap:2px;padding:.1rem}
  .game-page .seat-heading{padding:.14rem .45rem;font-size:.78rem}
  .game-page .seat-heading span,.game-page .seat-score-link{font-size:.59rem!important}
  .game-page .round-wind-marker{width:29px;height:29px;flex-basis:29px;font-size:.92rem}
  .game-page .table-controls{min-height:50px;margin:0 .25rem;padding:.2rem .4rem}
  .game-page .table-controls button:not(.tile){min-height:44px;padding:.35rem .65rem}
  .game-page .table-controls .advice-panel{max-width:94%;padding:.35rem .6rem;font-size:.76rem}
  .mahjong-table>.game-menu{top:.45rem;left:.45rem}
  .mahjong-table>.game-notice{top:.45rem;left:3.75rem;max-width:57%;font-size:.82rem}
  .mahjong-table>.wall-status{top:.55rem;right:.7rem}
  #score-dialog{width:min(95vw,1040px);max-height:calc(100vh - 14px);padding:.9rem 1.5rem}
  .coach-dialog{width:min(95vw,1040px);max-height:calc(100vh - 14px);padding:1.2rem}
}

/* Grote 4:3-tablets in landscape, waaronder iPad 13 inch 1366 × 1024. */
@media (orientation:landscape) and (min-width:1251px) and (max-width:1450px) and (max-aspect-ratio:3/2) and (min-height:850px){
  .game-page .mahjong-table{width:100vw;min-width:0;min-height:100vh;grid-template-columns:180px minmax(0,1fr) 180px;grid-template-rows:122px minmax(500px,1fr) 155px 62px;padding:.7rem;border-width:10px}
  .game-page .seat{padding:.35rem;gap:.32rem}
  .game-page .tile,.game-page .tile-small,.game-page .seat:not(.seat-south) .hand-row .tile{width:clamp(35px,3vw,44px)}
  .game-page .open-row{gap:.35rem;min-height:38px}
  .game-page .hand-line,.game-page .player-rack{gap:.3rem}
  .game-page .discard-river{width:99%;height:98%;gap:4px 3px;padding:.2rem}
  .game-page .seat-heading{padding:.22rem .6rem;font-size:.9rem}
  .game-page .seat-heading span,.game-page .seat-score-link{font-size:.68rem!important}
  .game-page .round-wind-marker{width:35px;height:35px;flex-basis:35px;font-size:1.12rem}
  .game-page .table-controls{min-height:58px;margin:0 .45rem;padding:.3rem .55rem}
  .game-page .table-controls button:not(.tile){min-height:48px;padding:.5rem .85rem}
  .game-page .table-controls .advice-panel{max-width:92%;padding:.45rem .75rem;font-size:.82rem}
  .mahjong-table>.game-menu{top:.7rem;left:.7rem}
  .mahjong-table>.game-notice{top:.7rem;left:4.1rem;max-width:60%;font-size:.92rem}
  .mahjong-table>.wall-status{top:.8rem;right:1rem}
  #score-dialog{width:min(92vw,1100px);max-height:min(calc(100vh - 24px),800px)}
  .coach-dialog{width:min(92vw,1050px);max-height:calc(100vh - 24px)}
}
/* Progressive-web-app install hint */
.pwa-install-hint{position:fixed;left:12px;right:12px;bottom:12px;z-index:99999;background:rgba(27,27,27,.96);color:#f3f3f3;border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:12px 14px;box-shadow:0 10px 28px rgba(0,0,0,.35);font:500 14px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.pwa-install-hint p{margin:0 0 8px}.pwa-install-hint button{border:1px solid rgba(255,255,255,.28);background:#262628;color:#fff;border-radius:10px;padding:8px 12px;cursor:pointer;font:600 13px/1.2 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}

/* Beheeromgeving */
.admin-shell{display:grid;gap:12px}.admin-alert,.admin-panel{padding:14px;border:1px solid var(--bg-light);border-radius:var(--radius);background:var(--bg-dark)}.admin-alert{margin:0;font-weight:700}.admin-alert.is-success{border-left:5px solid var(--success)}.admin-alert.is-error{border-left:5px solid var(--red);color:var(--red)}.admin-tabs{display:flex;gap:7px;flex-wrap:wrap}.admin-tabs a{flex:1;padding:.65rem;border:1px solid var(--bg-light);border-radius:10px;background:var(--bg);color:var(--text);text-align:center;text-decoration:none;font-weight:700}.admin-panel{scroll-margin-top:10px}.admin-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.admin-form label,.admin-inline label{display:grid;gap:5px}.admin-form input,.admin-form select,.admin-inline input{width:100%;min-height:42px;padding:.55rem;border:1px solid var(--bg-light);border-radius:9px;background:var(--bg);color:var(--text);font:inherit}.admin-form button{align-self:end}.admin-form label small{opacity:.7}.admin-user-list{display:grid;gap:8px;margin-top:14px}.admin-user,.admin-create,.danger-zone{border:1px solid var(--bg-light);border-radius:10px;background:var(--bg)}.admin-user>summary,.admin-create>summary,.danger-zone>summary{padding:12px;cursor:pointer;font-weight:800}.admin-user>summary{display:flex;justify-content:space-between;gap:10px}.admin-user>summary span{display:grid}.admin-user>summary small{font-weight:400;opacity:.7}.admin-user-body{display:grid;gap:14px;padding:0 12px 12px}.admin-balance{padding:10px;border-radius:9px;background:var(--bg-dark)}.admin-inline{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.admin-inline label{flex:1;min-width:180px}.button-danger{border-color:var(--red)!important;color:var(--red)!important}.admin-game-list{display:grid;gap:7px}.admin-game-list>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px;border-bottom:1px solid var(--bg-light)}.admin-game-list form{margin:0}.danger-zone{margin-top:16px;border-color:var(--red)}.danger-zone>*:not(summary){margin-left:12px;margin-right:12px}.danger-zone form{margin-bottom:12px}@media(max-width:620px){.admin-form{grid-template-columns:1fr}.admin-tabs{display:grid;grid-template-columns:1fr 1fr}.admin-user>summary{align-items:flex-start;flex-direction:column}}

.player-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.player-overview-card{padding:12px;border:1px solid var(--bg-light);border-radius:12px;background:var(--bg)}.player-overview-card dl{margin:0}.player-overview-card dl div{display:flex;justify-content:space-between;gap:12px;padding:.35rem 0;border-bottom:1px solid var(--bg-light)}.player-overview-card dd{margin:0;font-weight:800}.stats-panel>p{opacity:.75}.stats-list{display:grid;gap:12px}.stats-item>div{display:flex;justify-content:space-between;gap:12px}.stats-item progress{width:100%;height:12px;accent-color:var(--accent)}@media(max-width:560px){.player-overview-grid{grid-template-columns:1fr}}
