:root{--ink:#071d17;--felt:#0b533b;--felt2:#073f2f;--gold:#e7b958;--paper:#f6f0e4;--cream:#fffaf0;--red:#b9322c;--muted:#75817c;--line:rgba(255,255,255,.13);font-family:"DM Sans",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 15% 15%,#fffaf0 0,transparent 28%),var(--paper);font-size:16px}.noise{position:fixed;inset:0;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.hidden{display:none!important}.topbar{height:74px;padding:0 clamp(20px,4vw,64px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(7,29,23,.12);position:relative;z-index:5}.brand{display:flex;gap:11px;align-items:center;color:var(--ink);text-decoration:none;font:700 21px "Fraunces",serif}.brand-mark{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--ink);color:var(--gold)}.text-button,.room-chip button{border:0;background:none;color:var(--ink);font:600 14px inherit;cursor:pointer;text-decoration:underline;text-underline-offset:5px}.room-chip{display:flex;align-items:center;gap:12px;padding:8px 10px 8px 14px;border:1px solid rgba(7,29,23,.14);border-radius:99px;font-size:13px}.room-chip strong{letter-spacing:.14em}.room-chip button{background:var(--ink);color:white;border-radius:99px;padding:7px 11px;text-decoration:none}.welcome{min-height:calc(100vh - 74px);display:grid;grid-template-columns:1.12fr .88fr;align-items:center;gap:clamp(40px,7vw,110px);padding:60px clamp(24px,8vw,130px)}.eyebrow{font-size:12px;font-weight:700;letter-spacing:.19em;color:#8b6a28;margin:0 0 18px}.welcome h1{font:700 clamp(54px,7vw,104px)/.91 "Fraunces",serif;letter-spacing:-.055em;margin:0;max-width:780px}.welcome h1 em{color:var(--felt);font-weight:600}.lede{font-size:clamp(17px,1.7vw,22px);line-height:1.55;max-width:560px;color:#52615b;margin:32px 0}.suit-row{display:flex;gap:16px;font:600 28px "Fraunces"}.red{color:var(--red)}.entry-card{background:rgba(255,255,255,.82);border:1px solid rgba(7,29,23,.11);box-shadow:0 28px 80px rgba(24,44,36,.13);border-radius:24px;padding:9px;backdrop-filter:blur(16px);max-width:520px;width:100%}.mode-tabs{display:grid;grid-template-columns:1fr 1fr;background:#e9e2d4;border-radius:16px;padding:5px}.mode-tabs button{border:0;padding:13px;border-radius:12px;background:transparent;font:600 14px inherit;color:#66716c;cursor:pointer}.mode-tabs button.active{background:white;color:var(--ink);box-shadow:0 2px 8px rgba(10,25,20,.08)}form{padding:24px 18px 18px}label{display:grid;gap:8px;font-size:13px;font-weight:700;letter-spacing:.02em}input{width:100%;border:1px solid #d8d2c6;background:#fffcf6;border-radius:12px;padding:14px 15px;font:500 16px inherit;color:var(--ink);outline:0}input:focus{border-color:var(--felt);box-shadow:0 0 0 3px rgba(11,83,59,.11)}.setting-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;margin-top:18px}.primary{border:0;background:var(--ink);color:white;padding:14px 18px;border-radius:12px;font:700 15px inherit;cursor:pointer;box-shadow:0 8px 20px rgba(7,29,23,.18);transition:.18s transform,.18s background}.primary:hover{background:#123c30;transform:translateY(-1px)}.primary:disabled{opacity:.45;cursor:not-allowed;transform:none}.wide{width:100%;display:flex;justify-content:space-between;margin-top:22px}.form-error{color:var(--red);font-size:13px;min-height:18px;margin:10px 0 0}.table-view{height:calc(100vh - 74px);display:grid;grid-template-columns:250px minmax(450px,1fr) 310px;background:var(--ink);color:white}.players-panel,.hand-panel{padding:25px 20px;background:#0a251e;overflow:auto}.players-panel{border-right:1px solid var(--line)}.hand-panel{border-left:1px solid var(--line)}.panel-heading{display:flex;justify-content:space-between;color:#9eb0aa;font-size:11px;font-weight:700;letter-spacing:.15em;margin-bottom:20px}.players{display:grid;gap:8px}.player{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:10px;padding:11px;border:1px solid transparent;border-radius:12px}.player.active{border-color:rgba(231,185,88,.55);background:rgba(231,185,88,.08)}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#17483a;font-weight:700;color:#ddc27f}.player strong{display:block;font-size:14px}.player small{color:#8fa29c;font-size:12px}.card-count{font:700 13px "Fraunces";color:var(--gold)}.host-start{margin-top:24px}.felt-wrap{display:grid;grid-template-rows:minmax(0,1fr) auto;background:#0c2f26;padding:24px;gap:18px}.felt{position:relative;overflow:hidden;min-height:430px;border:10px solid #173d32;border-radius:48% / 17%;background:radial-gradient(ellipse at center,#116146 0,#0a4b36 64%,#073c2d 100%);box-shadow:inset 0 0 70px rgba(0,0,0,.28),0 20px 50px rgba(0,0,0,.18);display:grid;place-items:center}.felt-line{position:absolute;inset:26px;border:1px solid rgba(231,185,88,.25);border-radius:48% / 17%}.center-mark{position:absolute;display:grid;place-items:center;opacity:.12;text-align:center;font-family:"Fraunces"}.center-mark span{font-size:80px;line-height:.75}.center-mark small{letter-spacing:.22em}.table-status{position:absolute;top:48px;background:rgba(4,29,21,.72);border:1px solid rgba(255,255,255,.12);border-radius:99px;padding:9px 14px;font-size:13px;color:#c9d9d3}.bid-plaque{position:relative;z-index:1;text-align:center;min-width:min(410px,74%);padding:28px 24px;border:1px solid rgba(231,185,88,.5);background:rgba(4,31,22,.9);border-radius:18px;box-shadow:0 18px 40px rgba(0,0,0,.22)}.plaque-label{display:block;color:var(--gold);font-size:10px;font-weight:700;letter-spacing:.19em;margin-bottom:10px}.bid-plaque strong{display:block;font:600 clamp(25px,3vw,40px) "Fraunces";text-transform:capitalize}.bid-plaque small{display:block;color:#a8bbb4;margin-top:9px}.action-dock{min-height:76px;border:1px solid var(--line);background:#0b281f;border-radius:18px;padding:13px;display:flex;gap:10px;align-items:center}.action-dock .turn-copy{margin-right:auto;padding:0 8px}.turn-copy strong{display:block;font-size:15px}.turn-copy small{color:#90a59e}.bid-form{display:flex;gap:9px;flex:1}.bid-form input{background:#f9f4e9}.challenge{background:#a73630}.challenge:hover{background:#c33d35}.hand{display:flex;flex-wrap:wrap;gap:10px;align-content:flex-start;min-height:160px}.playing-card{width:76px;height:108px;background:#fffdf8;color:#101b17;border-radius:9px;padding:8px;box-shadow:0 7px 18px rgba(0,0,0,.26);border:1px solid #ded8cb;display:flex;flex-direction:column;font:700 21px "Fraunces"}.playing-card.red-card{color:var(--red)}.playing-card .suit{margin:auto;font-size:35px}.playing-card.mini{width:51px;height:71px;font-size:15px;border-radius:6px;padding:5px;box-shadow:0 4px 10px rgba(0,0,0,.18)}.playing-card.mini .suit{font-size:23px}.private-note{font-size:12px;color:#8fa29c;border-bottom:1px solid var(--line);padding:16px 0 22px}.private-note span{color:var(--gold)}.rank-guide{padding-top:20px}.rank-guide p{font-size:10px;letter-spacing:.16em;color:#91a49e;font-weight:700}.rank-guide ol{columns:2;padding-left:21px;color:#afbeb9;font-size:12px;line-height:1.9}.rank-guide li::marker{color:#5b736b}dialog{border:0;border-radius:22px;padding:0;background:#fffaf0;color:var(--ink);max-width:570px;width:calc(100% - 32px);box-shadow:0 35px 100px rgba(0,0,0,.35)}dialog::backdrop{background:rgba(2,17,12,.72);backdrop-filter:blur(5px)}.modal-head{display:flex;justify-content:space-between;padding:28px 30px 18px;border-bottom:1px solid #ddd5c7}.modal-head h2{font:700 34px "Fraunces";margin:0}.close{border:0;background:#e8e1d4;width:38px;height:38px;border-radius:50%;font-size:24px;cursor:pointer}.rules-copy{padding:25px 30px 30px;line-height:1.6;color:#485751}.rule-step{display:grid;grid-template-columns:42px 1fr;gap:12px;margin:19px 0}.rule-step b{color:#a37b28;font:700 21px "Fraunces"}.rule-step strong{display:block;color:var(--ink)}code{background:#e9e1d1;padding:2px 5px;border-radius:5px}.reveal-modal{max-width:760px;padding:28px}.reveal-title{font:700 36px "Fraunces";margin:5px 0}.reveal-sub{color:#64716c}.revealed-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:22px 0}.revealed-player{background:#ebe4d7;border-radius:13px;padding:13px;min-width:0}.revealed-player strong{font-size:13px}.card-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}.winning-hand{background:var(--ink);color:white;border-radius:16px;padding:18px}.winning-hand .card-row{margin:13px 0}.verdict{color:var(--gold);font-weight:700}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:#a73630;color:white;border-radius:10px;padding:11px 16px;opacity:0;pointer-events:none;transition:.2s;z-index:20}.toast.show{opacity:1;transform:translate(-50%,0)}@media(max-width:1050px){.table-view{grid-template-columns:210px 1fr}.hand-panel{grid-column:1/-1;position:fixed;bottom:0;left:0;right:0;height:168px;z-index:4;display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;border-top:1px solid var(--line);padding:14px 20px}.hand-panel .panel-heading{display:none}.hand-panel .hand{min-height:0;flex-wrap:nowrap;overflow-x:auto}.private-note{border:0;white-space:nowrap}.rank-guide{display:none}.felt-wrap{padding-bottom:186px}}@media(max-width:760px){.topbar{height:62px;padding:0 16px}.brand{font-size:18px}.table-view{height:calc(100vh - 62px);display:block;overflow:auto}.players-panel{height:auto;padding:12px 14px;border:0}.players{display:flex;overflow-x:auto}.player{min-width:155px}.panel-heading{margin-bottom:8px}.felt-wrap{padding:12px 12px 190px;min-height:620px}.felt{min-height:360px;border-radius:30px;border-width:7px}.action-dock{align-items:stretch;flex-direction:column}.bid-form{flex-direction:column}.action-dock button{width:100%}.hand-panel{height:178px;grid-template-columns:1fr;padding:12px}.private-note{display:none}.welcome{grid-template-columns:1fr;padding:40px 20px;gap:40px}.welcome h1{font-size:52px}.setting-grid{grid-template-columns:1fr}.room-chip{position:fixed;top:68px;right:8px;background:var(--paper);z-index:8}.revealed-grid{grid-template-columns:1fr}.reveal-modal{padding:20px}.playing-card{width:65px;height:92px}.hand-panel .playing-card{flex:0 0 58px;width:58px;height:82px}}
