:root{color-scheme:dark;--felt:#103b32;--ink:#f6f0db;--gold:#ecd18c;--muted:#bdd0bd;--line:#dae6c326;--panel:#173c32;--red:#b54245;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--felt);color:var(--ink)}
*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(ellipse at 50% 35%,#27584988,transparent 67%),var(--felt)}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.42}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}a{color:inherit}button{color:inherit}input{min-width:0;color:var(--ink);background:#07291f66;border:1px solid var(--line);border-radius:13px;padding:15px;min-height:50px;font-size:16px}button:not(.icon-button){min-height:48px;border-radius:13px;padding:13px 22px;font-weight:650;border:1px solid var(--line)}.primary{background:var(--gold);color:#20342b;border-color:var(--gold)!important}.primary:not(:disabled):hover{background:#f5e2ac;transform:translateY(-1px)}.secondary{background:#e2e8bf09}.secondary:not(:disabled):hover{background:#e2e8bf16}.icon-sprite{width:0;height:0;position:absolute;overflow:hidden}.icon-button{height:43px;width:43px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:#ffffff07;flex-shrink:0;font-size:24px}.icon-button:hover{background:#ffffff13}.icon-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.gold{color:var(--gold)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-100px;left:12px;z-index:30;padding:12px;background:var(--ink);color:var(--felt)}.skip-link:focus{top:10px}
.table-nav{padding:12px max(20px,env(safe-area-inset-right)) 10px max(20px,env(safe-area-inset-left));height:72px;display:flex;align-items:center;gap:18px;position:relative;z-index:4}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:21px;font-weight:780;letter-spacing:-1px}.table-nav nav{display:flex;gap:5px;margin-left:auto}.round-label{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}main{min-height:calc(100svh - 72px);position:relative;display:flex;flex-direction:column;outline:none}.setup{width:min(430px,100%);align-self:center;display:flex;flex-direction:column;align-items:center;padding:15px 24px 24px;animation:arrive .5s both}.intro-art{position:relative;width:230px;height:162px;margin:10px 0 20px}.intro-card{position:absolute;width:96px;height:139px;top:10px;border-radius:11px;background:#f6f1df;border:2px solid #efe6cf;box-shadow:0 14px 30px #001b1b30;color:#17382f;font:650 30px Georgia,serif;padding:9px 12px;display:flex;flex-direction:column;line-height:1}.intro-card small{font-size:48px;align-self:center;margin-top:18px}.intro-card.red{left:24px;transform:rotate(-17deg);color:var(--red)}.intro-card.black{left:101px;top:2px;transform:rotate(13deg)}.intro-chip{height:66px;width:66px;background:var(--gold);color:#17382f;border:7px dashed #f6e3b3;border-radius:50%;position:absolute;right:0;bottom:0;display:grid;place-items:center;box-shadow:0 6px 20px #08261b55;font-weight:800;font-size:22px;transform:rotate(-12deg)}.eyebrow{font-size:10px;letter-spacing:.19em;font-weight:650;color:var(--muted);margin:0 0 8px}h1{font-size:clamp(46px,9vw,66px);font-weight:760;letter-spacing:-4px;line-height:1;margin:0}h2{letter-spacing:-.9px}.intro-note{font-size:13px;color:var(--muted);margin:16px 0 25px}.room-form{display:grid;width:100%;gap:9px}.room-form label{font-size:12px;color:var(--muted)}.room-form .primary{margin-top:3px}.or{display:flex;align-items:center;gap:14px;justify-content:center;font-size:11px;color:var(--muted);margin:15px 0}.or:before,.or:after{content:"";height:1px;flex:1;background:var(--line)}.small-note{font-size:12px;line-height:1.6;color:var(--muted);text-wrap:pretty}.setup>.small-note{text-align:center;margin-top:23px;font-size:11px}.lobby{align-self:center;width:min(620px,100%);padding:45px 24px}.lobby h2{font-size:clamp(35px,7vw,48px);margin:5px 0 28px}.invite-row{display:flex;gap:8px;flex-wrap:wrap}.invite-row input{flex:1;min-width:140px;font-size:12px}.lobby-players{padding:0;list-style:none;display:grid;gap:12px;margin:30px 0}.lobby-players li{display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding-bottom:14px}.avatar{width:36px;height:36px;border-radius:50%;background:#ecd18c17;display:grid;place-items:center;color:var(--gold);font-weight:750}.member-name{flex:1;font-size:14px}.member-detail{font-size:11px;color:var(--muted)}
.game-table{width:100%;flex:1;display:flex;flex-direction:column;align-items:center;padding:8px 22px 18px;position:relative;isolation:isolate;gap:14px}.dealer-area{display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;min-height:205px}.area-heading{display:flex;gap:15px;align-items:center;color:var(--muted);font-size:10px;letter-spacing:.2em;min-height:21px}.area-heading strong{letter-spacing:0;font-size:18px;color:var(--ink)}.cards{display:flex;justify-content:center;align-items:center;padding:8px 5px 13px;min-height:120px}.playing-card{background:#f8f2e0;color:#15362d;width:82px;height:119px;border:1px solid #e2dcc9;border-radius:9px;box-shadow:0 5px 10px #001b1b25;position:relative;flex-shrink:0;margin-left:-12px;animation:deal-in .35s cubic-bezier(.2,.8,.3,1) both}.playing-card:first-child{margin-left:0}.playing-card.red{color:var(--red)}.card-corner{position:absolute;left:8px;top:7px;font:650 19px/1 Georgia,serif;text-align:center;display:flex;flex-direction:column;gap:2px}.card-corner small{font-size:15px}.card-corner.bottom{top:auto;left:auto;bottom:7px;right:8px;transform:rotate(180deg)}.card-pip{position:absolute;inset:25px 12px;display:grid;place-items:center;font:43px/1 Georgia,serif}.playing-card.hidden-card{background:repeating-linear-gradient(45deg,#235449 0px,#235449 3px,#214b40 3px,#214b40 8px);border:5px solid #f4edd4;display:grid;place-items:center;box-shadow:0 5px 10px #001b1b25}.hidden-card span{height:55px;width:37px;border:1px solid #e9d08a88;border-radius:50%;color:var(--gold);display:grid;place-items:center;font:italic 21px Georgia,serif}.table-rule{font-size:9px;color:#cfd5a685;letter-spacing:.13em;text-align:center}.felt-mark{position:absolute;top:27%;left:50%;transform:translateX(-50%);font:italic 150px Georgia,serif;letter-spacing:-18px;color:#dce5b808;pointer-events:none;z-index:-1}.players{display:flex;list-style:none;margin:0;padding:0;width:min(900px,100%);gap:10px;overflow:auto;scrollbar-width:thin;justify-content:safe center}.player{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:90px;max-width:150px;padding:9px 11px;border-bottom:2px solid transparent;opacity:.68}.player[data-active="true"]{border-bottom-color:var(--gold);opacity:1}.player[data-connected="false"]{opacity:.4}.player-name{font-size:12px;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-balance{color:var(--gold);font-size:13px}.player-note{font-size:10px;color:var(--muted)}.own-area{margin-top:auto;width:min(780px,100%)}.own-heading{display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:.13em;gap:10px;color:var(--muted)}.balance{font-size:18px;letter-spacing:0;color:var(--ink);display:flex;gap:8px;align-items:center}.balance strong{font-weight:600}.chip-symbol{color:var(--gold);font-size:23px}.turn-label{text-align:center;font-size:14px;font-weight:550;min-height:21px;margin:14px 0 4px}.own-hands{display:flex;justify-content:safe center;overflow:auto;gap:14px;padding:0 0 4px;min-height:157px;scrollbar-width:thin}.hand-box{min-width:130px;border-bottom:2px solid transparent;display:flex;flex-direction:column;align-items:center;padding:0 4px}.hand-box[data-active="true"]{border-color:var(--gold)}.hand-box .cards{padding-bottom:6px}.hand-result{min-height:25px;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:10px}.hand-total{font-size:18px;color:var(--ink);font-weight:650}.hand-bet{font-size:10px;color:var(--gold)}.actions{display:flex;gap:9px;justify-content:center;flex-wrap:wrap}.play-actions{width:min(620px,100%);display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.play-actions button{padding-inline:12px;font-size:13px}.play-actions .primary{font-size:15px}.action-panel{width:min(490px,100%);text-align:center;min-height:93px}.bet-form label{display:block;font-size:12px;color:var(--muted);margin-bottom:9px}.bet-entry{display:flex;gap:8px;justify-content:center}.bet-entry input{width:115px;text-align:center}.bet-entry button{flex:1}.bet-form~#deal{width:100%;margin-top:10px}.round-result{text-align:center;padding:0 0 5px}.round-result h2{margin:4px 0;font-size:24px}.round-result p{font-size:13px;color:var(--muted);margin:8px 0 17px}.status{width:min(650px,100%);align-self:center;min-height:15px;text-align:center;font-size:12px;color:var(--muted);margin:6px 0;padding:0 22px 8px;line-height:1.5}.status:empty{display:none}.status[data-error="true"]{color:#ffd7af}.reconnect{align-self:center;margin:0 20px 15px}
dialog{color:var(--ink);background:#12362d;border:1px solid #ffffff28;border-radius:24px;width:min(550px,calc(100% - 28px));max-height:calc(100svh - 32px);padding:25px;box-shadow:0 25px 100px #00191266;overflow:auto}dialog::backdrop{background:#001c17bd;backdrop-filter:blur(8px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.dialog-heading h2{margin:0;font-size:26px}dialog p,dialog .rules{font-size:13px;line-height:1.65;color:#d0dfc9}.rules{padding-left:18px;display:grid;gap:10px}.source-link{font-size:12px;color:var(--gold);display:inline-block;margin:8px 0 14px}dialog h3{font-size:16px;margin-top:20px}.table-person{border-bottom:1px solid var(--line);padding:14px 0}.table-person h3{margin:0;font-size:15px}.table-person .cards{justify-content:flex-start;min-height:85px}.table-person .playing-card{width:51px;height:75px;margin-left:-7px;border-radius:6px}.table-person .card-pip{font-size:26px;inset:15px 8px}.table-person .card-corner{font-size:12px;left:4px;top:5px}.table-person .card-corner small{font-size:10px}.table-person .card-corner.bottom{left:auto;right:4px;top:auto;bottom:5px}.table-person .hand-result{font-size:11px}
@keyframes deal-in{from{opacity:0;transform:translateY(-15px) rotate(-5deg) scale(.94)}to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}@keyframes arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1000px){.setup{padding-top:45px}.intro-art{margin-bottom:28px}.game-table{padding-top:28px;gap:20px;max-width:1250px;align-self:center}.dealer-area{min-height:230px}.playing-card{width:94px;height:136px}.card-pip{font-size:52px}.own-hands{min-height:180px}.table-nav{padding-inline:32px}.own-area{margin-top:auto}.felt-mark{font-size:210px;top:26%}}
@media(max-width:550px){.table-nav{padding-inline:14px;gap:8px;height:65px}.table-nav nav{gap:0}.brand{font-size:18px;gap:8px}.icon-button{width:36px;height:40px}.round-label{display:none}main{min-height:calc(100svh - 65px)}.setup{padding-top:20px}.intro-art{height:143px;margin:0 0 14px;transform:scale(.9)}.setup h1{font-size:51px}.game-table{padding:10px 17px 12px;gap:12px}.dealer-area{min-height:188px;gap:8px}.cards{min-height:118px}.playing-card{width:75px;height:108px}.players{gap:0}.player{min-width:78px;padding:7px 7px}.player-name{font-size:11px;max-width:105px}.table-rule{font-size:8px;letter-spacing:.09em}.play-actions{grid-template-columns:repeat(2,1fr)}.play-actions button{min-height:46px}.own-hands{min-height:145px}.own-heading{font-size:9px}.turn-label{margin:11px 0 3px;font-size:13px}.hand-box .playing-card{width:74px;height:107px}.card-corner{font-size:17px}.own-hands:has(.hand-box:nth-child(2)) .hand-box{min-width:122px}.own-hands:has(.hand-box:nth-child(2)) .playing-card{width:62px;height:91px;margin-left:-16px}.own-hands:has(.hand-box:nth-child(2)) .card-pip{font-size:33px}.own-hands:has(.hand-box:nth-child(2)) .card-corner{font-size:14px}.round-result h2{font-size:22px}.felt-mark{top:30%;font-size:130px}.lobby{padding-top:30px}dialog{padding:22px}.room-form .primary,.room-form .secondary{min-height:49px}}
@media(max-height:740px){.intro-art{transform:scale(.76);height:120px;margin-bottom:3px}.setup{padding-top:4px}.intro-note{margin:13px 0 19px}.setup>.small-note{margin-top:14px}.game-table{gap:8px}.dealer-area{min-height:156px}.dealer-hand .playing-card{width:65px;height:95px}.dealer-hand{min-height:105px}.players{min-height:62px}.own-hands{min-height:140px}.turn-label{margin:8px 0 2px}}
@media(orientation:landscape) and (max-height:550px){.table-nav{height:56px}.setup{width:min(780px,100%);display:grid;grid-template-columns:1fr 1fr;column-gap:45px;padding-top:18px}.setup .intro-art{grid-column:1;grid-row:1/4;justify-self:center;transform:scale(.85)}.setup .eyebrow{display:none}.setup h1{grid-column:1;grid-row:4;text-align:center;font-size:45px}.setup .intro-note{grid-column:1;grid-row:5;text-align:center;margin-top:10px}.setup .room-form{grid-column:2;grid-row:1/6}.setup>.small-note{grid-column:1/-1;margin:15px 0 0}.or{margin:4px 0}.room-form{gap:5px}.room-form input{min-height:40px;padding:10px}.room-form button{min-height:40px!important;padding-block:9px!important}.game-table{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr auto;gap:8px 28px;align-items:start}.dealer-area{grid-column:1;grid-row:1/3;min-height:170px}.players{grid-column:1;grid-row:3}.own-area{grid-column:2;grid-row:1/3;margin-top:0;min-width:0}.action-panel,.play-actions,.round-result{grid-column:2;grid-row:3;align-self:center}.table-rule{font-size:7px}.own-heading{font-size:9px}.turn-label{margin:7px 0 0}.own-hands{min-height:145px}.play-actions{grid-template-columns:repeat(4,1fr)}.play-actions button{padding:9px 6px;font-size:11px;min-height:39px}.status{font-size:10px}.felt-mark{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.icon-button{width:44px;height:44px}
.veintiuno-page .table-nav .tools-install-control{box-sizing:border-box;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:#ffffff08;color:var(--ink);display:inline-flex;align-items:center;justify-content:center}
.veintiuno-page .table-nav .tools-install-control:hover{background:#ffffff14}
.veintiuno-page .tools-install-dialog{background:var(--felt);color:var(--ink);border-color:var(--line)}
.veintiuno-page .tools-install-dialog :is(.tools-install-help,.tools-install-status){color:var(--muted)}
.veintiuno-page .tools-install-dialog button{background:var(--gold);color:#17372f;border-color:transparent;padding:10px 16px}
.member-name{min-width:0;overflow-wrap:anywhere}.turn-label,.table-person h3{overflow-wrap:anywhere}
.offline-entry{display:grid;gap:9px}.offline-entry select{font:inherit;min-height:48px;border:1px solid var(--line);border-radius:13px;padding:12px;color:var(--ink);background:var(--felt);width:100%}.offline-entry select:focus-visible{outline:3px solid var(--gold);outline-offset:4px}.offline-entry .small-note{margin:0;text-align:center;font-size:11px}.offline-mode-note{font-size:11px;color:var(--gold);margin:0;text-align:center;grid-column:1/-1}
@media(max-width:360px){.table-nav .brand>span{font-size:0}.table-nav .brand>span:before{content:'21';font-size:22px;letter-spacing:-1px}}
