:root{color-scheme:dark;--bg:#131416;--panel:#202124;--muted:#afb0b5;--ink:#f4f1e9;--red:#e45663;--accent:#a82235;--line:#3a3b3d;--tilew:48px;--tileh:65px;--zoom:1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 system-ui,-apple-system,'Segoe UI',sans-serif}button,input,select{font:inherit}button,a,input,select{ -webkit-tap-highlight-color:transparent}button{background:#292a2d;border:1px solid #4a4b50;color:var(--ink);border-radius:7px;padding:10px 15px;cursor:pointer;font-weight:600}button:hover{background:#3a3a3f;border-color:#999}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #f8bd5d;outline-offset:3px}a{color:#f2a2aa}button.primary{background:var(--accent);border-color:#ca4355;color:white}button.primary:hover{background:#c52d43}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Georgia,'Times New Roman',serif}h2{font-size:28px}h1 span{color:var(--red)}[hidden]{display:none!important}.site-header{height:64px;max-width:1440px;margin:auto;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{color:var(--ink);text-decoration:none;font-size:21px;font-weight:800;letter-spacing:-.8px}.brand em{color:var(--red)}.brand span{display:inline-block;color:var(--muted);font-size:9px;letter-spacing:2px;margin-left:10px;font-weight:500}.return{font-size:13px;text-decoration:none}.hero{max-width:1250px;margin:auto;padding:78px 5vw 60px;display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center}.eyebrow{font-size:11px;letter-spacing:2.3px;color:var(--red);font-weight:700}.hero h1{font-size:clamp(50px,6.5vw,90px);line-height:1.05;margin-bottom:24px;letter-spacing:-3px}.tagline{font-size:23px;line-height:1.4}.intro{color:var(--muted);max-width:400px}.hero-actions{display:flex;gap:10px;margin-top:28px;flex-wrap:wrap}.muted{color:var(--muted);font-size:13px}.hero-art{min-height:350px;border:1px solid #3c514b;border-radius:20px;background:radial-gradient(ellipse at top right,#2b4a3e,#192d27 65%);box-shadow:0 35px 70px #0005;padding:70px 25px 30px;transform:rotate(-3deg)}.art-run,.art-group{display:flex;gap:8px;justify-content:center}.art-group{margin-top:18px;margin-left:40px}.art-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;width:62px;height:83px;background:#faf2df;border-radius:7px;border-bottom:5px solid #c1b59d;box-shadow:0 4px 9px #0006;font: bold 42px/.95 Georgia;transform:rotate(3deg)}.art-tile small{font:14px/1.7 system-ui}.red{color:#b92738}.blue{color:#174f9a}.amber{color:#8b5a00}.green{color:#177045}.art-caption{text-align:center;font-size:11px;color:#b7c9c0;letter-spacing:1.5px;text-transform:uppercase;margin-top:30px}.mode-section{max-width:1250px;margin:auto;padding:20px 5vw 60px}.mode-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.mode-grid button{text-align:left;padding:24px;background:#1d1e21;border-color:#393a3f;transition:transform .15s}.mode-grid button:hover{transform:translateY(-3px);border-color:var(--red)}.mode-grid b{display:block;font-size:17px;margin-bottom:10px}.mode-grid span{font-size:13px;color:var(--muted);font-weight:400}.setup-footer{padding:25px 5vw;border-top:1px solid var(--line);display:flex;gap:12px;justify-content:center;flex-wrap:wrap;align-items:center;font-size:12px}.setup-footer button{padding:7px 10px;font-size:12px}.setup-footer span{color:var(--muted)}
body.playing{height:100dvh;overflow:hidden}.playing .site-header{height:43px;padding:0 24px;max-width:none}.playing .brand{font-size:18px}.playing .brand span{font-size:8px}#game{height:calc(100dvh - 43px);max-width:1600px;margin:auto;display:flex;flex-direction:column;padding:0 24px 10px;gap:6px}.game-title{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;padding-top:5px}.game-title>div{display:flex;align-items:center;gap:16px}.game-title h1{font-size:28px;margin:0;letter-spacing:-.8px}.game-title button{padding:5px 12px;font-size:12px}#roundLabel{font-size:12px;color:var(--muted)}.players{display:flex;gap:7px;flex-shrink:0}.player{flex:1;background:#222326;border:1px solid #3e4044;border-radius:7px;padding:7px 10px;min-width:0}.player.active{border-color:#f18b95;background:#39252b}.player b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player small{color:#ccc;font-size:11px}.turn-line{display:flex;justify-content:space-between;align-items:center;gap:5px;font-size:12px;min-height:24px}.turn-line strong{color:#ffd0d5}.turn-line span{color:var(--muted)}.table-tools{display:flex;gap:6px;overflow:auto;flex-shrink:0;padding:3px 1px 6px;align-items:center}.table-tools button{white-space:nowrap;font-size:12px;padding:7px 10px;min-height:34px}.table-tools label{display:flex;align-items:center;white-space:nowrap;font-size:11px;gap:7px}.table-tools input{width:85px}.table-viewport{flex:1;min-height:100px;overflow:auto;border:1px solid #385448;border-radius:10px;background:radial-gradient(ellipse at 30% 10%,#294839,#1c342c);position:relative;overscroll-behavior:contain}.table-surface{display:grid;grid-template-columns:repeat(3,max-content);gap:24px 30px;align-content:start;min-width:100%;min-height:100%;padding:27px;zoom:var(--zoom)}.meld{border:1px solid #67847580;background:#11291b44;border-radius:9px;padding:9px 10px;min-width:190px;min-height:105px;position:relative;align-self:start}.meld.invalid{border-color:#ff9e90;background:#611c243d}.meld.valid{border-color:#87bca47a}.meld-label{font-size:10px;text-transform:uppercase;letter-spacing:1.1px;color:#b9cec2;margin-bottom:9px;display:flex;justify-content:space-between;gap:10px}.meld.invalid .meld-label{color:#ffc6be}.meld-tiles{display:flex;gap:5px;min-height:65px;align-items:center}.tile{position:relative;width:var(--tilew);height:var(--tileh);flex-shrink:0;padding:3px 1px 4px;background:#faf2df;color:#222;border:1px solid #d4c9b5;border-bottom:4px solid #baae96;border-radius:6px;box-shadow:0 3px 5px #0005;font:bold 30px/1 Georgia;display:flex;align-items:center;justify-content:center;flex-direction:column;touch-action:none;user-select:none;-webkit-user-select:none}.tile:hover{background:#fff9ed;border-color:#e7c67c}.tile .symbol{font:11px/1.4 system-ui}.tile .jmark{font:8px system-ui;color:#4b3c28;position:absolute;top:2px;left:3px}.tile.red{color:#b92738}.tile.blue{color:#174f9a}.tile.amber{color:#865800}.tile.green{color:#11663e}.tile.selected{outline:3px solid #ffd57d;outline-offset:2px;transform:translateY(-4px);background:#fff4d3}.tile.unassigned{font-size:22px;color:#6b3a79}.insert{border:1px dashed #96b4a3;background:#2a493a;color:#eff7ed;border-radius:5px;padding:0;min-width:19px;height:50px;font:18px system-ui;box-shadow:none}.drop-target{min-width:160px;min-height:90px;border:1px dashed #769584;background:#142b2050;color:#c3d8ca}.table-empty{color:#b8cabe;font-size:15px;max-width:320px;align-self:start}.message{font-size:12px;color:#e8cdb5;min-height:21px;max-height:58px;overflow:auto;flex-shrink:0;padding:1px 3px}.message.error{color:#ffacae}.rack-section{flex-shrink:0;background:#232326;border:1px solid #454346;border-radius:10px;padding:7px 10px 10px}.rack-caption{display:flex;justify-content:space-between;align-items:center;font-size:12px;gap:5px;margin-bottom:8px}.rack-caption>div{display:flex;gap:5px}.rack-caption button{font-size:10px;padding:4px 7px}.rack-caption span{font-size:10px;color:#f4cf88}.rack{display:flex;gap:6px;overflow:auto;padding:5px 3px 7px;min-height:80px;overscroll-behavior:contain}.rack .tile{--tilew:46px;--tileh:63px}.turn-controls{display:flex;gap:8px;justify-content:flex-end;flex-shrink:0}.turn-controls button{min-height:43px}.lesson{padding:8px 12px;font-size:12px;border-left:3px solid #f2b85e;background:#343025;flex-shrink:0;max-height:108px;overflow:auto}.lesson strong{color:#ffd28f}.lesson button{font-size:11px;padding:4px 7px;margin-left:8px}.handoff{position:fixed;inset:43px 0 0;background:#17181b;z-index:15;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:25px}.handoff h2{font-size:38px}.handoff a{margin-top:40px;font-size:13px}.handoff .primary{padding:15px 30px}dialog{color:var(--ink);background:#222326;border:1px solid #61565a;border-radius:14px;width:min(680px,calc(100vw - 24px));max-height:calc(100dvh - 30px);padding:22px;box-shadow:0 30px 90px #000a}dialog::backdrop{background:#000b;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.dialog-head h2{margin:0}.dialog-head button{padding:5px 10px}#modalBody{font-size:14px}#modalBody label{display:block;margin:12px 0}input[type=text],input[type=password],input[type=number],select{width:100%;background:#141517;border:1px solid #646469;color:white;border-radius:5px;padding:10px;min-height:43px}input[type=checkbox]{width:20px;height:20px;vertical-align:middle;margin-right:10px}.form-row{display:flex;gap:12px}.form-row>*{flex:1;min-width:0}.dialog-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.error-text{color:#ffacb4}.puzzle-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.puzzle-grid button{text-align:left;padding:12px;font-size:12px}.puzzle-grid small{display:block;color:#c3b9ac;font-weight:400}.rule-list li{margin-bottom:9px}.hint-preview{display:flex;gap:5px;margin:15px 0;flex-wrap:wrap}.score-table{border-collapse:collapse;width:100%}.score-table th,.score-table td{text-align:left;border-bottom:1px solid #555;padding:9px}.online-code{font:700 34px monospace;letter-spacing:5px;color:#f4c6ca}.online-message{margin-top:12px}.busy{cursor:progress}#dragGhost{position:fixed;pointer-events:none;z-index:50;transform:translate(-50%,-70%);padding:12px 18px;background:#f9efd9;color:#292018;border:3px solid #ffd57d;border-radius:8px;font-size:21px;box-shadow:0 10px 25px #0009}.contrast{--bg:#000;--panel:#101010;--muted:#fff;--line:#aaa}.contrast .table-viewport{background:#071e15}.contrast .player small{color:white}.contrast .tile{border:2px solid #fff;border-bottom:4px solid #999}.reduced *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(min-width:1300px){:root{--tilew:53px;--tileh:72px}.tile{font-size:34px}.meld-tiles{min-height:72px}}
@media(max-width:700px){.site-header{padding:0 18px;height:58px}.brand{font-size:19px}.brand span{display:inline-block;font-size:7px;letter-spacing:1px;margin-left:5px}.return{font-size:11px}.hero{padding:45px 22px 35px;grid-template-columns:1fr;gap:30px}.hero h1{font-size:64px}.hero-art{min-height:280px;padding-top:36px;max-width:420px;width:100%;justify-self:center}.art-tile{width:52px;height:74px;font-size:36px}.mode-section{padding:20px 20px 35px}.mode-grid{grid-template-columns:1fr 1fr;gap:9px}.mode-grid button{padding:17px 13px}.mode-grid b{font-size:14px}.mode-grid span{font-size:12px}.playing .site-header{padding:0 10px;height:36px}.playing .brand{font-size:16px}.playing .return{font-size:11px}#game{height:calc(100dvh - 36px);padding:0 7px max(6px,env(safe-area-inset-bottom));gap:4px}.game-title{padding-top:3px}.game-title h1{font-size:23px}.game-title>div{gap:8px}.game-title button{font-size:11px;padding:6px 10px;min-height:32px}#roundLabel{font-size:10px}.player{padding:4px 6px;font-size:11px}.player small{font-size:9px}.turn-line{min-height:22px;font-size:10px}.table-tools{gap:5px;padding-bottom:4px}.table-tools button{font-size:11px;min-height:34px;padding:7px 9px}.table-surface{grid-template-columns:repeat(2,max-content);padding:15px;gap:17px;}.meld{min-width:170px;padding:8px}.tile{--tilew:44px;--tileh:61px;font-size:29px}.rack-section{padding:4px 7px 3px}.rack-caption{margin-bottom:2px;font-size:10px}.rack-caption button{font-size:10px;min-height:29px;padding:3px 6px}.rack{min-height:76px;padding:6px 3px 5px}.rack .tile{--tilew:43px;--tileh:59px;font-size:28px}.turn-controls{gap:5px}.turn-controls button{padding:8px 5px;flex:1;font-size:12px;min-height:42px}.turn-controls #end{flex:1.1}.message{font-size:11px;min-height:19px;max-height:40px}.lesson{font-size:11px;padding:6px 9px;max-height:78px}.puzzle-grid{grid-template-columns:1fr}.handoff{inset:36px 0 0}.form-row{flex-wrap:wrap}.form-row>*{flex:1 1 140px}dialog{padding:16px}.dialog-head h2{font-size:25px}.insert{min-width:20px}.tagline{font-size:22px}}
@media(max-height:650px) and (max-width:700px){.players{display:none}.game-title h1{font-size:20px}.table-tools button{min-height:29px}.rack .tile{--tileh:52px}.rack{min-height:65px}.message{max-height:28px}.lesson{max-height:50px}}

#detailedGuide{width:min(780px,94vw);font-size:18px;line-height:1.75}#detailedGuide p{font-size:18px;line-height:1.75}#detailedGuide select{width:100%;font:inherit;min-height:44px}#detailedGuide button{min-height:44px;font-size:17px}.dialog-head{flex-wrap:wrap}

/* Fit the full phone hand in rows; keep tile faces readable when overlapping. */
@media(max-width:700px){
#rack.phone-fit{display:block;position:relative;width:100%;min-width:0;overflow:visible;padding:0;min-height:76px;touch-action:pan-y}
#rack.phone-fit>.tile{position:absolute;left:var(--rack-x);top:var(--rack-y);z-index:var(--rack-z);width:43px;min-width:43px;--tilew:43px;--tileh:53px;height:53px;align-items:flex-start;justify-content:flex-start;padding:4px 2px;font-size:23px;line-height:1;box-shadow:1px 2px 4px #0007}
#rack.phone-fit>.tile>span:not(.symbol):not(.jmark){min-width:23px;text-align:left;letter-spacing:-1px}
#rack.phone-fit>.tile .symbol{font-size:12px;line-height:1.1;margin-top:4px;text-align:left}
#rack.phone-fit>.tile .jmark{font-size:6px;left:auto;right:1px;top:auto;bottom:3px;writing-mode:vertical-rl}
#rack.phone-fit>.tile.selected,#rack.phone-fit>.tile:focus-visible{z-index:200;transform:translateY(-8px);box-shadow:0 4px 9px #0009}
#rack.phone-fit>.insert{display:none}
.rack-section{overflow:visible;min-width:0}.rack-caption{flex-wrap:wrap;gap:4px}.rack-caption>div{flex-wrap:wrap}.rack-caption button{min-height:36px}.turn-controls{flex-shrink:0}
}

@media(max-width:700px){#game{overflow-y:auto}}
