@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,600;1,600&display=swap');
:root{font-family:'DM Sans',sans-serif;color:#f6f2e8;background:#071c1b;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 50% 10%,#17463d 0,#0b302e 35%,#071c1b 80%)}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.35;cursor:not-allowed}header{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1150px)/2));border-bottom:1px solid #ffffff19;background:#061d1b9a}.brand{font-weight:800;letter-spacing:3px;font-size:21px;display:flex;align-items:center;gap:12px}.brand small{display:block;font-size:9px;letter-spacing:4px;color:#d5be8b}.mark{font-size:30px;color:#d8b66e}.connection{color:#9cbea9;font-size:12px}.welcome{max-width:1150px;margin:9vh auto;display:grid;grid-template-columns:1.35fr .85fr;gap:90px;align-items:center;padding:30px}.eyebrow{letter-spacing:3px;font-size:10px;color:#d8b777;font-weight:800}.hero h1{font:600 clamp(52px,7vw,95px)/1.1 'Playfair Display',serif;letter-spacing:-3px;margin:20px 0 24px}.hero h1 em{color:#d8b977}.hero p{color:#b6cbc1;max-width:460px;line-height:1.9;font-size:16px}.panel{background:#f9f5e9;color:#1f3732;border-radius:20px;padding:32px;box-shadow:0 30px 70px #0004}.panel h2{font:600 29px 'Playfair Display',serif;margin:0 0 14px}.panel p{color:#667970;line-height:1.7}.panel label{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:1px;display:block;margin:20px 0 12px}.panel input{width:100%;border:1px solid #cdd8d1;border-radius:9px;padding:14px;margin-top:9px;background:white;color:#16352d;outline:0}.panel input:focus{border-color:#258d74;box-shadow:0 0 0 3px #258d7420}.primary,.secondary,.gold{border:0;border-radius:10px;padding:14px 18px;font-weight:800;transition:transform .17s,filter .17s}.primary{background:#d4ad67;color:#102922}.secondary{background:#dce8e0;color:#24483a}.gold{background:#fff0b9;color:#69490b}.primary:hover,.secondary:hover,.gold:hover{transform:translateY(-2px);filter:brightness(1.06)}.panel>.primary,.panel>.secondary{width:100%;margin:8px 0}.or{text-align:center;color:#98a69e;font-size:10px;letter-spacing:2px;margin:25px 0}.minor{font-size:11px;text-align:center}.hidden{display:none!important}#game{max-width:1150px;margin:0 auto;padding:24px}.roomBar{display:flex;justify-content:space-between;align-items:center;margin:12px 0 22px}.roomBar h2{font:600 34px 'Playfair Display',serif;margin:4px 0}.roomActions{display:flex;align-items:center;gap:12px}.small{padding:10px}.phaseBadge{border:1px solid #ffffff44;border-radius:50px;color:#b8d1c8;padding:8px 14px;font-size:11px;letter-spacing:1px}.lobby{max-width:680px;margin:35px auto}.lobbyPlayers{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:25px 0}.lobbyPlayer{background:#ebefe9;border-radius:12px;padding:16px;display:flex;justify-content:space-between}.ready{color:#168b62}.settings{display:flex;align-items:end;gap:12px}.settings label{flex:1}.settings button{margin-bottom:12px}.scoreStrip{display:flex;gap:12px;overflow-x:auto;margin-bottom:12px}.score{padding:12px 18px;flex:1;min-width:125px;border:1px solid #ffffff30;border-radius:12px;background:#103c36;font-size:12px}.score strong{display:block;font-size:18px;color:#e5cd8f;margin-top:4px}.score.active{border-color:#e5cd8f}.table{position:relative;min-height:375px;border-radius:46% / 31%;border:12px solid #805a34;box-shadow:0 14px 0 #482e1b,0 22px 32px #0006,inset 0 0 0 4px #d2a56e,inset 0 0 70px #031e1a;background:radial-gradient(ellipse,#1c7360,#0e5949 60%,#093e34);display:flex;flex-direction:column;justify-content:space-between;padding:30px 30px 22px}.topSeats{display:flex;justify-content:space-around;gap:8px}.seat{border-radius:25px;background:#082a2599;border:1px solid #a3c6ae40;padding:9px 14px;text-align:center;font-size:11px;max-width:160px}.seat b{display:block;font-size:13px}.seat.active{border-color:#e0bb76;box-shadow:0 0 18px #ffdb9945}.center{display:flex;justify-content:center;gap:clamp(15px,7vw,100px);align-items:center}.pileHolder{text-align:center}.pileCaption{color:#c4e3d5;font-size:10px;letter-spacing:2px;margin-bottom:8px}.backCard,.card.large,.jokerCard{height:109px;width:74px;border-radius:9px;box-shadow:0 5px 10px #0004}.backCard{background:repeating-linear-gradient(45deg,#164b59,#164b59 3px,#1d6780 3px,#1d6780 6px);border:4px solid #f2e9d5;color:#ecdba6;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:35px}.backCard small{font-size:12px}.card.large{border:3px solid #fff;background:#fffef5;color:#1b3030;font-size:24px;font-weight:800}.jokerCard{border:2px dashed #c89f58;color:#e4c276;background:#0c4037;display:flex;flex-direction:column;justify-content:center;align-items:center}.jokerCard b{font-size:28px}.notice{text-align:center;font-size:13px;color:#f3dab0;min-height:22px}.handWrap{background:#092822;border:1px solid #265f50;border-radius:22px;padding:20px;margin-top:34px}.handHead{display:flex;justify-content:space-between;align-items:center;gap:10px}.handHead strong{font-size:18px}.handHead span{color:#a7c3b6;margin-left:12px}.handControls{display:flex;gap:8px}.handControls button{padding:10px 13px;font-size:12px}.textbutton{background:transparent;color:#d2c092;border:1px solid #4a796b;border-radius:10px}.hand{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;padding:23px 0 7px;min-height:133px}.card.handCard{position:relative;width:68px;height:102px;flex-shrink:0;border-radius:9px;border:2px solid #e5e0d8;background:#fffef7;color:#171f25;display:flex;flex-direction:column;justify-content:space-between;padding:7px;box-shadow:0 5px 14px #0004;transition:transform .18s,box-shadow .18s;animation:none}.card.handCard.red{color:#cf2938}.card.handCard.selected{transform:translateY(-17px);box-shadow:0 0 0 3px #e6c374,0 12px 20px #0008}.card.handCard .rank{font-size:17px;font-weight:800;text-align:left}.card.handCard .suit{font-size:32px;text-align:center}.card.handCard.jok{outline:2px solid #d9b36b}.card.handCard.recommended:after{content:'WIN';position:absolute;top:-11px;right:-8px;background:#e9c77c;color:#42300a;padding:3px 5px;border-radius:5px;font-size:9px;font-weight:900}.hint{text-align:center;color:#8bb3a3;font-size:11px}.toast{position:fixed;bottom:22px;right:22px;max-width:340px;background:#f9efe1;color:#372c1a;border-radius:12px;padding:16px 23px;box-shadow:0 20px 40px #0007;z-index:5}.resultRow{display:flex;justify-content:space-between;border-bottom:1px solid #dde5de;padding:12px 0}#results{max-width:640px;margin:24px auto}@keyframes deal{from{transform:translateY(-45px) rotate(-7deg);opacity:0}to{transform:none;opacity:1}}@media(max-width:760px){.welcome{grid-template-columns:1fr;gap:35px;margin:25px auto}.hero h1{font-size:54px}.panel{padding:23px}.table{border-radius:26% / 12%;min-height:310px;padding:18px 5px;border-width:8px}.center{gap:20px}.handHead{flex-direction:column}.handControls{flex-wrap:wrap;justify-content:center}.card.handCard{width:49px;height:80px;padding:4px}.card.handCard .suit{font-size:24px}.topSeats{flex-wrap:wrap}.roomBar{flex-wrap:wrap}.score{min-width:90px;padding:8px}.brand{font-size:16px}header{padding:0 15px}}
.botActions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0}.botActions button{width:auto}.removeBot{margin-left:auto;background:#ede1d2;border:0;border-radius:7px;padding:6px 9px;cursor:pointer;font-size:12px}.lobbyPlayer{gap:12px;display:flex;align-items:center}
.handCard,.backCard,.card.large{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.hand,.pileHolder{position:relative}
.hand{border:2px dashed transparent;border-radius:16px;transition:border-color .12s,background .12s}
#hand.dropReady{border-color:#ffd778;background:#e8bd5430;box-shadow:inset 0 0 22px #ffe08a30}
#hand.dropReject{border-color:#be5555}
#deck.dropReady,#discardPile.dropReady{outline:4px solid #f9cf66;outline-offset:5px;box-shadow:0 0 0 9px #f8da7355,0 0 30px #f5c96c}
#deck.dropReject,#discardPile.dropReject{outline:3px solid #c75b5b;outline-offset:4px}
#hand.dropReady:after,#deck.dropReady:after,#discardPile.dropReady:after{content:attr(data-drop-label);position:absolute;left:50%;bottom:calc(100% + 12px);transform:translateX(-50%);background:#ffe19a;color:#2c2b1b;border-radius:6px;padding:6px 9px;font-size:10px;font-weight:900;white-space:nowrap;pointer-events:none;z-index:12;box-shadow:0 6px 16px #0006}
#hand.dropReady:after{bottom:auto;top:-24px}
#deck,#discardPile{position:relative}
.dragGhost{position:fixed!important;z-index:1000!important;pointer-events:none!important;transform:translate(-50%,-65%) rotate(-5deg)!important;opacity:.92!important;animation:none!important;box-shadow:0 16px 40px #0009!important}
.dragSource{opacity:.4!important}
.dragStatus{text-align:center;color:#ffe19a;font-size:13px;font-weight:700;min-height:18px}
@media(prefers-reduced-motion:reduce){.dragGhost,.handCard{animation:none!important;transition:none!important}}
/* Stable card interaction: hover lift + insertion-gap preview */
.handCard{will-change:transform,translate;transition:transform 170ms cubic-bezier(.2,.8,.2,1),translate 170ms cubic-bezier(.2,.8,.2,1),box-shadow 170ms!important}
.handCard:not(.dragSource):hover{transform:translateY(-13px);z-index:3;box-shadow:0 12px 22px #0008}
.handCard.selected,.handCard.selected:hover{transform:translateY(-19px);z-index:4}
.handCard.dragSource{opacity:.28!important}
@media(prefers-reduced-motion:reduce){.handCard{transition:none!important}}

/* QoL: no whole-hand replay after server updates */
.handCard.cardEnter{animation:deal .28s ease-out backwards}
.handCard:not(.dragSource):hover{transform:translateY(-15px) scale(1.035)}
.handCard:hover + .handCard{transform:translateY(-5px)}
.handCard:has(+ .handCard:hover){transform:translateY(-5px)}
.handCard.selected,.handCard.selected:hover{transform:translateY(-19px) scale(1.035)}
#notice.yourTurn{color:#ffe7a8;font-weight:800;text-shadow:0 0 15px #f4b74755}
#declare.canDeclare{box-shadow:0 0 0 2px #f3d47a,0 0 17px #f3d47a66}
#deck:not(:disabled),#discardPile:not(:disabled){cursor:grab;box-shadow:0 0 0 2px #e5c88175,0 5px 10px #0004}
.pilePulse{animation:pilePulse .4s ease-out!important}
@keyframes pilePulse{0%{filter:brightness(1);transform:translateY(0)}45%{filter:brightness(1.25);transform:translateY(-7px)}100%{filter:brightness(1);transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.handCard.cardEnter,.pilePulse{animation:none!important}}

/* Persistent, unobtrusive release identifier */
.game-version{position:fixed;right:12px;bottom:8px;z-index:2;font:500 10px/1.4 'DM Sans',sans-serif;letter-spacing:.045em;color:#a6b8ae;opacity:.58;pointer-events:none;user-select:none}
@media(max-width:760px){.game-version{right:9px;bottom:5px;font-size:9px;opacity:.55}}

/* Two-player round forfeit and audio preference */
.soundToggle{background:#123b32;color:#d3e9da;border:1px solid #517867;font-size:11px;white-space:nowrap}
.forfeitButton{color:#f4b3a4;border-color:#815248;opacity:.75}
.forfeitButton:hover{opacity:1;background:#65382d55}
.forfeitDialog{width:min(420px,calc(100vw - 32px));border:1px solid #d8c9ae;border-radius:16px;padding:26px;background:#fffaf1;color:#16372f;box-shadow:0 30px 100px #000b}
.forfeitDialog::backdrop{background:#001b17ae;backdrop-filter:blur(3px)}
.forfeitDialog h2{margin:0 0 10px;font:600 27px 'Playfair Display',serif}
.forfeitDialog p{font-size:14px;line-height:1.65;color:#52695e}
.forfeitActions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}
.forfeitActions button{border-radius:9px;padding:11px 13px;font-size:12px;font-weight:800}
.danger{background:#a54338;color:#fff;border:0}
@media(max-width:600px){.roomActions{flex-wrap:wrap;justify-content:flex-end}.forfeitActions{flex-wrap:wrap}}

.avatarCustomizer{margin:20px 0;padding:15px;background:#edf1e9;border-radius:13px}.avatarCustomizer strong{font-size:14px}.avatarCustomizer .minor{text-align:left;margin:5px 0 12px}
.avatarChoices{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}.avatarOption{border:2px solid #c9d9cc;border-radius:11px;background:#fffaf1;min-height:57px;display:grid;place-content:center;color:#254a3d}.avatarOption .avatarIcon{font-size:27px}.avatarOption small{font-size:9px}.avatarOption.active{border-color:#ad7a2d;background:#fff0be;box-shadow:0 0 0 2px #e9c98055}
.seat{min-width:136px;max-width:230px;display:flex;align-items:center;gap:10px;text-align:left}.seatAvatar{flex-shrink:0;width:39px;height:39px;border-radius:50%;display:grid;place-content:center;font-size:24px;background:#113f36;border:2px solid #ba9961}.seatContent{min-width:0}.seatContent b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat.active .seatAvatar{box-shadow:0 0 17px #efc46c}
.opponentCards{display:flex;justify-content:center;align-items:center;margin-top:7px;height:40px}.opponentBack{width:24px;height:36px;border:2px solid #ddcf9f;border-radius:4px;background:repeating-linear-gradient(45deg,#15455c 0 3px,#1c6374 3px 6px);box-shadow:0 2px 5px #0006;margin-left:-8px;transform:rotate(var(--tilt,0deg));display:grid;place-content:center;color:#d4c58c;font-size:10px}.opponentBack:first-child{margin-left:0}
.shuffleChooser{max-width:680px;margin:30px auto;text-align:center}.shuffleChooser .eyebrow{color:#906725}.shuffleChoices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px auto}.shuffleChoice{border:2px solid #d6dacc;border-radius:16px;background:#fffdf3;padding:17px;color:#12352f;text-align:left;cursor:pointer;transition:transform .2s,box-shadow .2s}.shuffleChoice:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 10px 22px #103a2b2c}.shuffleChoice .shuffleIcon{font-size:27px}.shuffleChoice b{display:block;font-size:16px;margin:7px 0}.shuffleChoice small{font-size:11px;color:#60776b}
.presentation{position:fixed;inset:0;background:radial-gradient(ellipse at center,#135b49 0%,#082a25 72%,#031813);z-index:40;display:flex;align-items:center;justify-content:center;overflow:hidden}.presentationStage{width:min(750px,95vw);height:min(570px,90vh);border:10px solid #76502c;border-radius:43% / 28%;box-shadow:0 20px 70px #000b,inset 0 0 0 4px #c69e5c,inset 0 0 80px #001e19;position:relative;display:flex;align-items:center;justify-content:center}.presentationLabel{position:absolute;top:19%;font:600 clamp(22px,4vw,38px) 'Playfair Display',serif;color:#efcf8a;text-shadow:0 4px 10px #0008;z-index:2}.presentationDeck{height:130px;width:175px;position:relative;perspective:900px}.presentationCard{position:absolute;left:58px;top:15px;width:65px;height:96px;background:repeating-linear-gradient(45deg,#19495d 0 4px,#226b77 4px 8px);border:4px solid #f7ebcd;border-radius:8px;box-shadow:0 6px 12px #0007;display:grid;place-content:center;font-size:29px;color:#e5c67c;will-change:transform,opacity}.presentationPlayers{position:absolute;bottom:19%;display:flex;justify-content:space-around;width:90%;gap:12px}.presentationSeat{display:flex;align-items:center;flex-direction:column;gap:5px;color:#fff0c6;font-size:12px;font-weight:700;text-shadow:0 2px 3px #0008}.presentationSeat span{font-size:28px}.presentationFooter{position:absolute;bottom:6%;display:flex;align-items:center;justify-content:center;gap:15px;flex-wrap:wrap;color:#bad6c8;font-size:12px}.presentationFooter button{background:#d6bd88;color:#0c3328}
@media(max-width:690px){.avatarChoices{grid-template-columns:repeat(4,minmax(0,1fr))}.seat{min-width:112px;padding:7px}.seatAvatar{width:32px;height:32px;font-size:19px}.opponentBack{width:18px;height:29px;margin-left:-7px}.shuffleChoice{padding:12px}.presentationStage{height:420px;border-radius:30% / 16%}.presentationLabel{top:13%}.presentationPlayers{bottom:23%}}

/* Match the actual suit color on the face-up discard card. */
#discardPile.redSuit{color:#cf2938}

/* Final-match penalty arrangement. Client-side review only, never mutates match scores. */
.matchScoring{margin-top:22px;border-top:1px solid #c9d7ce;padding-top:21px}.matchScoring h3{font:600 24px 'Playfair Display',serif;color:#153d34;margin:0 0 4px}.matchScoring h4{margin:17px 0 7px;font-size:13px;color:#2c5c4c}.matchScoring .scoreExplain{font-size:12px;line-height:1.6;margin:5px 0 14px}.scoreWorkspaceTop{display:flex;flex-wrap:wrap;gap:12px}.scoreWorkspaceTop>div{min-width:170px;flex:1;background:#e6eee5;border-radius:11px;padding:11px 15px}.scoreMetricLabel{display:block;color:#526f60;font-size:11px}.scoreWorkspaceTop strong{display:block;color:#173d2f;font-size:25px}.scoreSequenceNote{margin:13px 0;font-size:12px;font-weight:700;color:#886027}.scoringCards{display:flex;flex-wrap:wrap;gap:6px;min-height:77px;border:1px dashed #b2c6b6;border-radius:11px;padding:10px;background:#edf2e9}.scoreCard{width:48px;height:66px;border:2px solid #dbddd4;border-radius:7px;background:#fffef7;color:#172c2a;font-weight:800;font-size:13px;display:grid;place-items:center;cursor:pointer;box-shadow:0 2px 4px #0002;user-select:none}.scoreCard.red{color:#cf2938}.scoreCard.marked{border-color:#b9811d;box-shadow:0 0 0 2px #f0c66d;background:#fff3cf}.scoreCard:focus-visible{outline:3px solid #e1a849}.scoringGroups{display:flex;gap:9px;flex-wrap:wrap;margin-top:13px}.scoringGroup{background:#e7eee6;border:1px solid #b3cbb8;border-radius:11px;padding:10px;min-width:158px}.scoringGroup.invalid{border-color:#d4a18e;background:#f8e9e3}.scoringGroup strong{font-size:12px}.scoringGroup .scoringCards{background:transparent;border:0;min-height:0;padding:7px 0}.scoringGroup button.ungroup{background:none;border:0;color:#775b36;font-size:11px;text-decoration:underline}.scoringActions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.scoringActions .primary,.scoringActions .secondary{width:auto!important;margin:0!important}

/* Mauritius identity: CSS flag, distinctive custom badge, no downloaded graphics */
.mruFlag{display:inline-flex;flex-direction:column;flex-shrink:0;width:26px;height:18px;overflow:hidden;border-radius:2px;box-shadow:0 0 0 1px #ffffff4b,0 3px 7px #0003}
.mruFlag i{display:block;flex:1;min-height:0;width:100%}
.mruFlag i:nth-child(1){background:#e2231a}.mruFlag i:nth-child(2){background:#173c87}.mruFlag i:nth-child(3){background:#f8ca20}.mruFlag i:nth-child(4){background:#14853c}
.brand .mruFlag{width:23px;height:16px;margin-left:6px;align-self:center}
.hero{position:relative;isolation:isolate}
.heroIdentity{display:flex;gap:15px;align-items:center;flex-wrap:wrap}
.originPill{display:inline-flex;align-items:center;gap:12px;padding:8px 14px 8px 9px;border:1px solid #e8ca8c60;border-radius:100px;background:linear-gradient(110deg,#edc67a12,#e6d1a008);color:#f1d8a1;font-size:10px;letter-spacing:1.5px;font-weight:800;white-space:nowrap}
.originPill .mruFlag{width:29px;height:20px}
.originEdition{font-size:9px;color:#a6cab9;letter-spacing:1.5px;font-weight:700}
.hero h1{margin-top:27px}
.originSignature{display:flex;align-items:center;gap:25px;margin-top:34px;padding-top:24px;max-width:535px;border-top:1px solid #c7af7f36}
.morisSeal{height:118px;width:118px;min-width:118px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;transform:rotate(-8deg);border-radius:50%;border:2px solid #e1c184;outline:1px dashed #e1c1848e;outline-offset:4px;background:radial-gradient(circle,#254f43 0%,#16372f 70%);box-shadow:inset 0 0 0 5px #1f4a3d,0 8px 24px #0003;color:#f4d79d;text-align:center}
.morisSeal:before,.morisSeal:after{content:"✦";position:absolute;top:52px;font-size:8px;color:#e8cc8e}.morisSeal:before{left:9px}.morisSeal:after{right:9px}
.sealTop{letter-spacing:2.2px;font-size:9px;font-weight:700}
.sealMain{font-family:'Playfair Display',Georgia,serif;font-size:22px;font-weight:700;line-height:.94;letter-spacing:.7px;margin:7px 0}
.sealMain small{font:700 9px 'DM Sans',sans-serif;letter-spacing:0}
.sealBottom{font-size:7px;letter-spacing:1.5px;font-weight:800}
.creatorSignature{display:flex;flex-direction:column;gap:7px;min-width:0}
.creatorSignature>span{color:#9ebcaf;font-weight:700;font-size:9px;letter-spacing:1.4px}
.creatorSignature strong{font:600 clamp(20px,2.2vw,29px) 'Playfair Display',Georgia,serif;color:#f4eee0}
.creatorSignature em{color:#f0cc89;font-style:italic}
.creatorSignature small{color:#b4c9bd;font-size:12px;line-height:1.6}
.siteCredits{position:fixed;bottom:7px;left:15px;right:12px;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:12px;pointer-events:none;font:500 10px/1.5 'DM Sans',sans-serif;color:#bccdc3;text-shadow:0 1px 5px #001a16}
.siteCredits .siteCreditCreator{opacity:.78;letter-spacing:.2px}
.siteCreditCreator strong{color:#e8d8b8;font-weight:700}
.footerDot{padding:0 4px;color:#b89b65}
.siteCredits .game-version{position:static;font:inherit;letter-spacing:.03em;color:#bdc8c0;opacity:.55}
@media(max-width:850px){.welcome{gap:30px;margin:5vh auto}.heroIdentity{gap:10px}.originEdition{display:none}}
@media(max-width:600px){.brand .mruFlag{width:20px;height:14px}.originPill{font-size:9px;letter-spacing:1px}.hero h1{margin-top:18px}.originSignature{margin-top:26px;gap:18px}.morisSeal{width:97px;height:97px;min-width:97px}.sealMain{font-size:19px}.sealTop{font-size:8px}.sealBottom{font-size:6px}.morisSeal:before,.morisSeal:after{top:43px}.creatorSignature strong{font-size:23px}.creatorSignature>span{font-size:8px;letter-spacing:.7px}.siteCredits{bottom:5px;left:9px;right:9px;font-size:9px}.siteCreditCreator{max-width:75%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}

/* Reduced branding: clear, readable author credit and subtle Mauritius flag motif */
.hero::before{content:"";position:absolute;z-index:-1;right:-35px;top:12px;width:min(25vw,180px);height:min(25vw,180px);opacity:.13;transform:rotate(-12deg);border-radius:8px;background:linear-gradient(to bottom,#e2231a 0%,#e2231a 25%,#173c87 25%,#173c87 50%,#f8ca20 50%,#f8ca20 75%,#14853c 75%,#14853c 100%);box-shadow:0 0 70px #001a14}
.originSignature{margin-top:24px;padding-top:14px;border-top:1px solid #e9c99235;max-width:360px;gap:0}
.creatorSignature{display:block}
.creatorSignature strong{font:600 17px 'DM Sans',sans-serif;color:#e9d3a4;letter-spacing:.2px}
.siteCreditCreator{white-space:nowrap}
@media(max-width:600px){.hero::before{width:94px;height:94px;top:5px;right:12px;opacity:.10}.creatorSignature strong{font-size:15px}.originSignature{margin-top:18px;padding-top:12px}}

/* Lightweight illustrated character portraits */
.avatarChoices{grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}
.avatarOption{min-width:0;min-height:106px;padding:6px 3px;overflow:hidden;transition:transform .16s,box-shadow .16s,border-color .16s}
.avatarOption:hover{transform:translateY(-3px)}
.avatarOption .avatarIcon{display:flex;align-items:center;justify-content:center;height:72px;font-size:31px}
.avatarOption .avatarIcon img{display:block;width:64px;height:72px;object-fit:contain;border-radius:8px}
.avatarOption small{font-size:10px;font-weight:750;white-space:normal;line-height:1.25;margin-top:3px}
.avatarOption.active{box-shadow:0 0 0 3px #e7bc6555,0 9px 18px #37231024}
.seatAvatar{overflow:hidden}.seatAvatar .avatarPortrait{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}
.presentationSeat span{display:grid;place-content:center;min-height:46px}
.presentationSeat .avatarPortrait{height:44px;width:44px;object-fit:cover;border-radius:50%;border:2px solid #d7c08a}
@media(max-width:600px){.avatarChoices{grid-template-columns:repeat(3,minmax(0,1fr))}.avatarOption{min-height:102px}}

/* Distinct, restrained feedback for newly completed sets and sequences. */
.meldRewardNotice{width:max-content;max-width:100%;margin:9px auto 3px;padding:8px 19px;border-radius:999px;border:1px solid #f8d888a8;background:#2b523d;color:#ffe5a7;font-size:12px;font-weight:800;letter-spacing:.08em;text-align:center;box-shadow:0 5px 21px #0004;text-shadow:0 1px 2px #182b1f}.meldPop{animation:meldRewardPop .34s cubic-bezier(.12,.8,.16,1) both}@keyframes meldRewardPop{from{transform:scale(.87) translateY(5px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.card.handCard.meldGlow{box-shadow:0 0 0 3px #f6d677,0 0 22px #f9dd8baa!important}@media(prefers-reduced-motion:reduce){.meldPop{animation:none}}

/* Character selector: display quick placeholders, then reveal decoded portraits. */
.avatarOption .avatarIcon.avatarPending{position:relative;overflow:hidden;border-radius:9px;background:#e1e6da}
.avatarPlaceholder{display:grid;place-items:center;width:54px;height:64px;border-radius:8px;background:#e5ecdf;color:#8ba198;font-size:23px}
.avatarIcon.avatarReady img{animation:portraitIn .18s ease-out both}
@keyframes portraitIn{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.avatarIcon.avatarReady img{animation:none}}

/* Always-available, low-profile Rummi rules reference. */
.ruleBookButton{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:calc(52px + env(safe-area-inset-bottom));z-index:85;display:flex;align-items:center;gap:8px;padding:11px 16px;border-radius:999px;border:1px solid #c6a266;background:#092e29;color:#f8e8bb;box-shadow:0 7px 22px #0008;font:700 12px 'DM Sans',sans-serif;letter-spacing:.01em;cursor:pointer}
.ruleBookButton:hover,.ruleBookButton:focus-visible{background:#154d3f;border-color:#f0d296;outline-offset:3px}
.ruleBookDialog{position:fixed;max-width:min(560px,calc(100vw - 28px));width:560px;max-height:min(80dvh,760px);padding:0;border:1px solid #c0a577;border-radius:18px;background:#f9f5e9;color:#183a31;box-shadow:0 25px 80px #000a;overflow:hidden}
.ruleBookDialog::backdrop{background:#031f1cba;backdrop-filter:blur(3px)}
.ruleBookHeader{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:21px 23px 15px;border-bottom:1px solid #d4ded2}
.ruleBookHeader h2{margin:4px 0 0;font:600 27px 'Playfair Display',serif}
.ruleBookEyebrow{font:800 9px 'DM Sans',sans-serif;letter-spacing:2px;color:#906a2e}
.ruleBookClose{border:1px solid #d0d7ca;border-radius:9px;background:#eef0e8;color:#26493f;width:36px;height:36px;flex-shrink:0;font-size:18px}
.ruleBookContent{overflow:auto;max-height:calc(min(80dvh,760px) - 157px);padding:4px 23px 15px;overscroll-behavior:contain}
.ruleBookContent section{padding:13px 0;border-bottom:1px solid #dce2d8}
.ruleBookContent section:last-child{border-bottom:0}
.ruleBookContent h3{font-size:15px;margin:3px 0 9px}
.ruleBookContent p,.ruleBookContent li{font-size:12px;line-height:1.65;color:#3c584d;margin:7px 0}
.ruleBookContent ol{padding-left:20px}
.ruleExample{background:#e8eee4;border:1px solid #d2ded1;border-radius:11px;padding:10px 12px;margin:9px 0;display:grid;gap:4px}
.ruleExample strong{font-size:12px}
.ruleExample span{font-size:19px;font-weight:800;letter-spacing:4px;color:#9f3334}
.ruleExample small{font-size:11px;line-height:1.5;color:#527062}
.ruleBookFooter{padding:10px 23px 17px;border-top:1px solid #d4ded2;background:#f9f5e9}
.ruleBookFooter button{width:100%;padding:11px}
@media(max-width:600px){.ruleBookButton{right:12px;bottom:calc(43px + env(safe-area-inset-bottom));padding:9px 12px;font-size:11px}.ruleBookDialog{max-height:88dvh}.ruleBookContent{max-height:calc(88dvh - 148px);padding:4px 17px 12px}.ruleBookHeader{padding:16px 17px 12px}.ruleBookHeader h2{font-size:23px}.ruleBookFooter{padding:9px 17px 13px}}

/* Between-round hand review and dealer handoff. */
.nextDealerNote{margin:15px 0 8px;padding:11px 15px;border-radius:10px;background:#e8eee4;border:1px solid #bbcfbd;color:#285243;font-weight:800;font-size:12px;text-align:center}

/* Empty discard placeholder: fit inside the card without changing real card styling. */
#discardPile.emptyDiscard{overflow:hidden;display:flex;align-items:center;justify-content:center}
#discardPile.emptyDiscard #discardCard{display:block;max-width:100%;min-width:0;padding:0 3px;font-size:14px;line-height:1.2;letter-spacing:0;font-weight:700;white-space:nowrap;text-align:center}

/* v0.4: neutral draw back, actual revealed indicator card, and clearer hand. */
#deck .deckEmblem{width:35px;height:35px;border:2px solid #d8cfa9;border-radius:8px;display:grid;place-items:center;font-size:20px;color:#e7d4a0;transform:rotate(45deg)}
#deck .deckEmblem::first-letter{transform:rotate(-45deg)}
#jokerCard.revealedJoker{position:relative;background:#fffdf4;color:#202c2c;border:3px solid #eee5cf;border-radius:9px;box-shadow:0 5px 10px #0004;display:flex;align-items:center;justify-content:center;min-width:74px}
#jokerCard.revealedJoker .jokerFace{font-size:27px;font-weight:900;letter-spacing:-1px;line-height:1}
#jokerCard.revealedJoker.redSuit{color:#cf2938}
#jokerCard.revealedJoker.jokerRecycled{background:#16463b;color:#d7c697;border:2px dashed #b9a074}
.jokerNote{display:block;max-width:130px;margin:6px auto 0;color:#d7c799;font-size:9px;line-height:1.25}
.hand{gap:8px}
.card.handCard{width:76px;height:112px;padding:8px}
.card.handCard .rank{font-size:19px}
.card.handCard .suit{font-size:35px}
.card.handCard.groupGap{margin-right:17px}
.sortLabel{display:flex;align-items:center;gap:7px;color:#d2c092;font-size:12px;font-weight:700}
.sortLabel select{font:inherit;color:#f6edcc;background:#123b32;border:1px solid #4a796b;border-radius:9px;padding:9px;max-width:172px;cursor:pointer}
.groupBreakButton:disabled{opacity:.45}
@media(max-width:760px){.card.handCard{width:56px;height:86px;padding:5px}.card.handCard .rank{font-size:15px}.card.handCard .suit{font-size:27px}.card.handCard.groupGap{margin-right:11px}.hand{gap:5px}.sortLabel{font-size:11px}.sortLabel select{max-width:145px;padding:8px}#jokerCard.revealedJoker{min-width:64px}}

/* Batch 2: timer, local arranged penalty, public discard viewer, ephemeral speech. */
.liveUtilities{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin:8px 0 14px}
.turnClock,.livePenalty{padding:9px 13px;border-radius:10px;border:1px solid #467d6b;background:#113a31;color:#fae7bf;font-size:13px;font-weight:800}
.turnClock.urgent{border-color:#fa866e;color:#ffb2a1;animation:clockWarn .7s ease-in-out infinite alternate}
@keyframes clockWarn{to{opacity:.55}}
.roomBubbles{display:flex;position:relative;justify-content:center;flex-wrap:wrap;gap:9px;min-height:0;pointer-events:none;z-index:9}
.speechBubble{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;background:#fffae9;color:#263d35;border:1px solid #c8a974;border-radius:14px;padding:8px 13px;box-shadow:0 5px 14px #0007;max-width:240px;min-width:80px;font-size:13px;overflow-wrap:anywhere;animation:bubbleArrive .2s ease-out}
.speechBubble strong{font-size:10px;color:#846329}
@keyframes bubbleArrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.chatControls{display:flex;align-items:center;gap:8px;margin:12px 0 0;flex-wrap:wrap}
.chatControls input{flex:1;min-width:150px;background:#10392f;color:#f8f3e5;border:1px solid #4d806e;border-radius:9px;padding:10px}
.chatControls select{max-width:195px;background:#10392f;color:#f8f3e5;border:1px solid #4d806e;border-radius:9px;padding:10px}
.discardDialog{width:min(520px,92vw);max-height:85vh;background:#f8f3e6;color:#18352c;border:0;border-radius:16px;padding:24px;box-shadow:0 14px 75px #000a}
.discardDialog::backdrop{background:#0009}
.discardDialog h2{margin:0 0 8px}
.discardDialog p{font-size:13px;color:#52695e}
.discardHistoryCards{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0;max-height:55vh;overflow:auto}
.discardHistoryCard{display:grid;place-items:center;min-width:42px;height:63px;background:#fff;border:2px solid #ded9cd;border-radius:7px;font-size:17px;font-weight:800;color:#1d302e}
.discardHistoryCard.red{color:#c72b38}
.emptyHistory{padding:14px;font-size:13px}
@media(max-width:760px){.liveUtilities{justify-content:center}.chatControls select{max-width:100%}.speechBubble{font-size:12px;max-width:175px}}

/* Anchor short-lived bubbles above avatars instead of collecting them below the table. */
.table{position:relative}
.roomBubbles{position:absolute;inset:0;display:block;pointer-events:none;z-index:9}
.speechBubble{position:absolute;transform:translateX(-50%);width:max-content;max-width:200px}
@media(max-width:760px){.speechBubble{max-width:160px}}

/* Lobby auto-save, direct hand sorting controls, and safe leave confirmation. */
.handControls .sortAction{white-space:nowrap;min-height:38px}
.handControls .sortAction.active{background:#b7985e;color:#102c27;border-color:#ddc282;font-weight:800}
.leaveActions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:16px;flex-wrap:wrap}
.roomActions #leaveTable{border-color:#b8a58b}
@media(max-width:760px){.handControls .sortAction{padding:9px 10px;font-size:11px}}

/* Make returning to the main menu discoverable at every stage. */
#leaveTable,.leaveShortcut{white-space:normal;line-height:1.25}
#leaveTable{border:1px solid #e7c890;background:#274b3e;color:#fff1cb;font-weight:750}
#leaveTable:hover,.leaveShortcut:hover{filter:brightness(1.13)}
.handEscape{display:flex;justify-content:flex-end;align-items:center;margin-bottom:12px}
.handEscape .leaveShortcut{font-size:12px;padding:8px 13px;border-color:#c59d69;color:#f7deaf}
.resultLeave{display:block;margin:13px 0 0 auto;width:auto}
.lobby>.leaveShortcut{margin:12px 0 15px}
@media(max-width:760px){.roomBar{flex-wrap:wrap;gap:10px}.roomActions{flex-wrap:wrap;justify-content:flex-start}#leaveTable{order:0}.handEscape{justify-content:center}}

/* Minimal legal navigation */
.siteCredits .legalLinks{display:inline-flex;gap:7px;align-items:center;font-size:12px}
.siteCredits .legalLinks a{color:#ebcf9c;text-decoration:underline;text-underline-offset:3px}


.brand .siteLogo{display:block;width:44px;height:44px;object-fit:contain;flex-shrink:0}
@media(max-width:600px){.brand .siteLogo{width:36px;height:36px}}
