:root{--ink: #23201b;--ink-soft: #5f5a51;--paper: #fbf8f2;--paper-2: #f2ede2;--line: #ddd5c6;--accent: #a8552d;--accent-dark: #8a4322;--on-accent: #ffffff;--danger: #a32b26;--good: #2c6e49;--input-bg: #ffffff;--raised: rgba(255, 255, 255, .85);--mark-bg: #fff6e5;--mark-line: #e8cf9a;--danger-bg: #fdecea;--danger-line: #f0b3ae;--good-bg: #e6f2ea;--good-line: #a8cdb6;--scrim: rgba(20, 18, 14, .55);--focus: #4a90d9;--rule-soft: rgba(0, 0, 0, .25);--suit-a: #1f5fa8;--suit-b: #276f45;--suit-c: #a8322a;--ink-red: #a8322a;--ink-green: #276f45;--ink-flower: #a05a9c;--radius: 12px;--shadow: 0 1px 2px rgba(0, 0, 0, .07), 0 6px 20px rgba(0, 0, 0, .07);--felt: #1f4633;--felt-2: #2a5a42;--tile-gap: 6px;--card-scale: 1;color-scheme:light}html[data-theme=dark]{--ink: #e9e5dc;--ink-soft: #a49d92;--paper: #24262b;--paper-2: #17191d;--line: #3a3e46;--accent: #c9713f;--accent-dark: #ab5c31;--on-accent: #16120f;--danger: #f18b81;--good: #6ecb9a;--input-bg: #2c2f36;--raised: rgba(255, 255, 255, .09);--mark-bg: #3a3122;--mark-line: #6d5c34;--danger-bg: #3b2523;--danger-line: #7a3d37;--good-bg: #1e3529;--good-line: #3d6a52;--scrim: rgba(0, 0, 0, .68);--focus: #7db3e8;--rule-soft: rgba(255, 255, 255, .3);--suit-a: #7fb6ff;--suit-b: #5fd39a;--suit-c: #ff9184;--ink-red: #ff9184;--ink-green: #5fd39a;--ink-flower: #d69ad0;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 6px 20px rgba(0, 0, 0, .35);color-scheme:dark}body[data-felt=slate]{--felt: #34393f;--felt-2: #434a52}body[data-felt=navy]{--felt: #1e2f4d;--felt-2: #2a406a}body[data-felt=burgundy]{--felt: #4a2027;--felt-2: #612a33}body[data-felt=sand]{--felt: #6d5c3f;--felt-2: #857049}body[data-density=compact]{--tile-gap: 2px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.45;color:var(--ink);background:var(--paper-2);-webkit-text-size-adjust:100%}h1{font-size:1.6rem;margin:0}h2{font-size:1.15rem;margin:1.6rem 0 .5rem}h3{font-size:1rem;margin:0 0 .35rem}p{margin:.5rem 0}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--paper-2);padding:0 4px;border-radius:4px}.muted{color:var(--ink-soft)}.small{font-size:.85rem}.pad{padding:1rem}.grow{flex:1}.error{color:var(--danger)}.won{color:var(--good);font-weight:700}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.row{display:flex;align-items:center}.row.gap{gap:.5rem}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between;width:100%}.stack{display:flex;flex-direction:column;gap:.5rem}button{font:inherit;border-radius:9px;border:1px solid transparent;padding:.45rem .85rem;cursor:pointer;background:transparent;color:inherit;transition:background .12s ease,border-color .12s ease,transform .05s ease}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.primary{background:var(--accent);color:var(--on-accent);font-weight:650}.primary:hover:not(:disabled){background:var(--accent-dark)}.primary.on{background:var(--accent-dark)}.ghost{border-color:var(--line);background:var(--paper)}.ghost:hover:not(:disabled){background:var(--paper-2)}.ghost.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.danger{color:var(--danger)}.primary.danger,.ghost.danger:hover{background:var(--danger);color:var(--paper);border-color:var(--danger)}.big{padding:.6rem 1.2rem;font-size:1.05rem}.tiny{font-size:.75rem;padding:.2rem .45rem;border:1px solid var(--line);background:var(--raised)}.link{background:none;border:none;color:var(--accent);text-decoration:underline;padding:0 .25rem}input,select,textarea{font:inherit;color:inherit;padding:.45rem .6rem;border:1px solid var(--line);border-radius:9px;background:var(--input-bg);width:100%}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:1px}.segmented{display:inline-flex;flex-wrap:wrap;gap:2px;background:var(--paper-2);padding:2px;border-radius:10px;border:1px solid var(--line)}.segmented button{padding:.3rem .7rem;border-radius:8px;font-size:.92rem}.segmented button.on{background:var(--ink);color:var(--paper);font-weight:650}.check{display:flex;align-items:center;gap:.5rem;font-size:.95rem}.check input{width:auto}.swatch{width:30px;height:30px;border-radius:50%;border:2px solid transparent}.swatch.on{border-color:var(--ink);box-shadow:0 0 0 2px var(--paper) inset}.chip{display:inline-block;width:12px;height:12px;border-radius:50%;flex:none}.chip.small{width:9px;height:9px}.tag{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink);background:var(--paper-2);border:1px solid var(--line);border-radius:999px;padding:0 .4rem;white-space:nowrap}.tag.warn{background:var(--danger-bg);border-color:var(--danger-line);color:var(--danger)}.badge{font-size:.75rem;border-radius:999px;padding:.05rem .5rem;border:1px solid var(--line);background:var(--paper-2)}.badge.playing{background:var(--good-bg);border-color:var(--good-line);color:var(--good)}.shell{min-height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:1rem;padding:.5rem 1rem;background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand{font-weight:800;font-size:1.05rem;letter-spacing:-.01em;padding-left:0}.topbar nav{display:flex;gap:.15rem;flex:1;flex-wrap:wrap}.navlink{color:var(--ink-soft);border-radius:8px}.navlink.active{background:var(--paper-2);color:var(--ink);font-weight:650}.who{display:flex;align-items:center;gap:.4rem;font-size:.9rem}.who-name{font-weight:600}main{flex:1}.page{max-width:1100px;margin:0 auto;padding:1.25rem 1rem 4rem}.page.narrow{max-width:720px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow);margin:.75rem 0}.card.form{display:flex;flex-direction:column;gap:.9rem}.field{display:flex;flex-direction:column;gap:.35rem}.field-label{font-weight:650;font-size:.9rem}.seat-label{min-width:4.5rem;font-size:.9rem}.banner{padding:.6rem 1rem;border-radius:9px;background:var(--paper);border:1px solid var(--line);margin:.5rem 1rem}.banner.error{background:var(--danger-bg);border-color:var(--danger-line);color:var(--danger)}.splash,.entry{min-height:100%;display:grid;place-items:center;background:radial-gradient(120% 120% at 50% 0%,var(--felt-2),var(--felt))}.splash-inner{color:#fff;opacity:.85}.entry-card{width:min(400px,92vw)}.entry-card h1{margin-bottom:.25rem}.entry-card label{font-weight:650;font-size:.9rem}.table-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem}.table-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:.8rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.2rem}.table-card:hover{border-color:var(--accent)}.table-card-main{text-align:left;display:flex;flex-direction:column;gap:.2rem;width:100%;padding:0}.table-card-head{display:flex;justify-content:space-between;gap:.5rem;align-items:center}.table-card-actions{display:flex;gap:.4rem;justify-content:flex-end;align-items:center;margin-top:.4rem;border-top:1px solid var(--line);padding-top:.4rem}.seat-list{list-style:none;padding:0;margin:.5rem 0;display:flex;flex-direction:column;gap:.35rem}.seat-list li{display:flex;align-items:center;gap:.5rem}.shell-table main{display:flex;flex-direction:column}.table-screen{display:flex;flex-direction:column;min-height:calc(100vh - 49px);background:var(--paper-2)}.table-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 1rem;background:var(--paper);border-bottom:1px solid var(--line);flex-wrap:wrap}.table-title{display:flex;flex-direction:column;line-height:1.2}.card-button{font-weight:700}.felt{flex:1;margin:.6rem;border-radius:16px;background:radial-gradient(120% 120% at 50% 0%,var(--felt-2),var(--felt));color:#eef3ef;display:grid;grid-template-areas:". top ." "left center right" ". bottom .";grid-template-columns:minmax(110px,1fr) minmax(220px,2.2fr) minmax(110px,1fr);grid-template-rows:auto minmax(120px,1fr) auto;gap:.5rem;padding:.75rem;min-height:300px}.table-screen.card-open .felt{min-height:0;flex:0 1 auto;max-height:32vh;overflow:auto;padding:.4rem}.table-screen.card-open .discard-pool{max-height:13vh}.table-screen.card-open .hidden-rack{display:none}.seat{border-radius:10px;padding:.4rem .5rem;background:#00000029;font-size:.85rem;align-self:start}.seat-left,.seat-right{align-self:center}.seat-top{grid-area:top}.seat-left{grid-area:left}.seat-right{grid-area:right}.seat-bottom{grid-area:bottom}.seat.active{background:#ffffff2e;box-shadow:inset 0 0 0 2px #ffffff80}.seat.dead{opacity:.6}.seat-head{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.seat-name{font-weight:650}.wind{display:inline-block;background:#fff3;border-radius:4px;padding:0 .3rem;font-size:.75rem}.seat-body{display:flex;flex-direction:column;gap:.25rem;margin-top:.25rem}.hidden-rack{display:flex;flex-wrap:wrap;gap:1px}.exposures{display:flex;flex-wrap:wrap;gap:.4rem}.meld{display:inline-flex;gap:1px;align-items:center;background:#ffffff1f;border-radius:6px;padding:2px}.center{grid-area:center;display:flex;flex-direction:column;align-items:center;gap:.4rem}.center-status{font-weight:650;text-align:center}.status-line{background:#00000040;padding:.2rem .8rem;border-radius:999px}.countdown{font-variant-numeric:tabular-nums;opacity:.85}.discard-pool{display:flex;flex-wrap:wrap;gap:2px;justify-content:center;align-content:flex-start;max-height:34vh;overflow:auto;padding:.35rem;background:#00000024;border-radius:10px;width:100%}.rack-area{background:var(--paper);border-top:1px solid var(--line);padding:.6rem .75rem .9rem;position:sticky;bottom:0}.rack{display:flex;flex-wrap:wrap;gap:var(--tile-gap);justify-content:center}.facedown-group{display:flex;gap:var(--tile-gap);margin-left:.75rem;padding-left:.75rem;border-left:2px dashed var(--line)}.rack-area.compact{padding:.35rem .5rem .5rem}.rack-area.compact .controls{margin-top:.35rem;min-height:0}.tile-button{padding:0;border:none;background:none;line-height:0;border-radius:10px}.tile-button:disabled{opacity:.6}.tile{display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.25));transition:transform .08s ease}.tile-button:hover .tile{transform:translateY(-3px)}.tile-selected{transform:translateY(-9px);filter:drop-shadow(0 4px 6px rgba(0,0,0,.35))}.tile-dim{opacity:.55}.tile-highlight{outline:3px solid #f0c419;outline-offset:1px;border-radius:9px}.controls{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap;margin-top:.6rem;min-height:2.4rem;align-items:center}.call-controls{background:var(--mark-bg);border:1px solid var(--mark-line);border-radius:10px;padding:.4rem .7rem}.popover{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:.5rem;box-shadow:var(--shadow);max-width:460px}.overlay{position:fixed;inset:0;background:var(--scrim);display:grid;place-items:center;padding:1rem;z-index:40}.result-card{width:min(760px,96vw);max-height:90vh;overflow:auto}.reveal{display:flex;flex-direction:column;gap:.5rem;margin:.75rem 0}.reveal-row{border-top:1px solid var(--line);padding-top:.4rem}.reveal-row.dead{opacity:.65}.reveal-name{font-weight:650;display:flex;gap:.4rem;align-items:center}.reveal-tiles{display:flex;flex-wrap:wrap;gap:3px;align-items:center;margin-top:.2rem}.welcome-card{width:min(640px,96vw);max-height:92vh;overflow:auto;display:flex;flex-direction:column;gap:.6rem}.welcome-card:focus{outline:none}.welcome-card h2{margin:0;font-size:1.35rem}.welcome-body{display:flex;flex-direction:column;gap:.75rem;font-size:1.02rem}.welcome-body p{margin:0}.welcome-body ul{margin:.3rem 0 0;padding-left:1.1rem;display:flex;flex-direction:column;gap:.25rem}.welcome-preview{display:flex;gap:4px;justify-content:center;padding:.5rem;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius)}.welcome-foot{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:.7rem;margin-top:.2rem}.welcome-dots{display:flex;gap:5px}.welcome-dot{width:7px;height:7px;border-radius:50%;background:var(--line)}.welcome-dot.on{background:var(--accent)}.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.why{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius);padding:.6rem .8rem}.why h3{margin:0;font-size:.95rem}.why ul{font-size:.95rem}.pin-form{display:flex;flex-direction:column;gap:.6rem;border-top:1px solid var(--line);padding-top:.7rem}.pin-form input{max-width:9rem;font-size:1.3rem;letter-spacing:.4em;text-align:center}@media (max-width: 600px){.why-grid{grid-template-columns:1fr}.welcome-foot{justify-content:flex-end}}.card-overlay{background:var(--paper);border-top:1px solid var(--line);display:flex;flex-direction:column;flex:1 1 auto;min-height:14rem;max-height:62vh;font-size:calc(1rem * var(--card-scale, 1))}.card-overlay.with-rack{max-height:min(46vh,460px)}.card-overlay-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .9rem;border-bottom:1px solid var(--line);font-size:1rem;flex-wrap:wrap}.card-overlay .small{font-size:.85em}.card-scroll{overflow:auto;padding:.5rem .9rem 1.5rem}.card-category{margin-bottom:.9rem}.card-category h3{text-transform:uppercase;letter-spacing:.06em;font-size:.78em;color:var(--ink-soft);border-bottom:1px solid var(--line);padding-bottom:.2rem}.card-lines{list-style:none;margin:.4rem 0 0;padding:0;display:grid;grid-template-columns:1fr;gap:.1rem 1.1rem;align-items:start}@media (min-width: 620px){.card-lines{grid-template-columns:repeat(auto-fill,minmax(min(50% - .6rem,max(25% - .9rem,22em)),1fr))}}.card-line{border-radius:8px;padding:.1rem .3rem;min-width:0}.card-line.pinned{background:var(--mark-bg);box-shadow:inset 0 0 0 2px var(--mark-line)}.card-line.close .card-line-hint{color:var(--good);font-weight:650}.card-line-main{display:flex;width:100%;justify-content:space-between;gap:.5rem;align-items:baseline;text-align:left;padding:.15rem .2rem;flex-wrap:wrap}.card-tokens{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1em;font-weight:700;letter-spacing:.02em;display:flex;gap:.4em;flex-wrap:wrap;min-width:0}.token.no-joker{text-decoration:underline dotted var(--rule-soft);text-underline-offset:3px}.suit-a{color:var(--suit-a)}.suit-b{color:var(--suit-b)}.suit-c{color:var(--suit-c)}.ink-red{color:var(--ink-red)}.ink-green{color:var(--ink-green)}.ink-flower{color:var(--ink-flower)}.ink-plain{color:var(--ink)}.card-meta{display:flex;gap:.5em;align-items:baseline;font-size:.8em;color:var(--ink-soft);white-space:nowrap;margin-left:auto}.card-meta .conceal{font-weight:800}.card-meta .conceal.c{color:var(--danger)}.card-meta .value{font-variant-numeric:tabular-nums;font-weight:700}.card-line-hint{font-size:.8em;color:var(--ink-soft);padding:0 .2rem .2rem}.stepper{display:inline-flex;align-items:center;gap:.15rem;border:1px solid var(--line);border-radius:9px;background:var(--paper-2);padding:1px}.stepper button{padding:.15rem .5rem;border-radius:8px;font-weight:800;line-height:1.1}.stepper button:hover:not(:disabled){background:var(--paper)}.stepper .stepper-value{font-size:.75rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;min-width:2.6rem;text-align:center}.chat{position:fixed;right:.75rem;bottom:.75rem;width:min(340px,92vw);max-height:60vh;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;z-index:30}.chat-head{padding:.5rem .75rem;border-bottom:1px solid var(--line)}.chat-list{flex:1;overflow:auto;padding:.5rem .75rem;display:flex;flex-direction:column;gap:.3rem;font-size:.9rem}.chat-event{color:var(--ink-soft);font-size:.82rem}.chat-message{display:flex;gap:.35rem;align-items:baseline;flex-wrap:wrap}.chat-form{display:flex;gap:.4rem;padding:.5rem;border-top:1px solid var(--line)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem;margin-top:.75rem}.stat{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:.7rem}.stat-value{font-size:1.5rem;font-weight:800;font-variant-numeric:tabular-nums}.stat-label{font-size:.8rem;color:var(--ink-soft)}.cat-list,.recent-list,.card-list{list-style:none;padding:0;margin:.5rem 0;display:flex;flex-direction:column;gap:.3rem}.cat-list li,.recent-list li{display:flex;gap:.75rem;justify-content:space-between;background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:.4rem .7rem;flex-wrap:wrap}.card-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:.7rem;flex-wrap:wrap}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.6rem}.theme-option{border:2px solid var(--line);border-radius:var(--radius);padding:.6rem;background:var(--paper-2);display:flex;flex-direction:column;align-items:center;gap:.4rem}.theme-option.on{border-color:var(--accent);background:var(--input-bg)}.theme-preview{display:flex;gap:3px}.hand-editor{list-style:none;padding:0;margin:.5rem 0;display:flex;flex-direction:column;gap:.5rem}.hand-row{display:grid;grid-template-columns:1.3fr 1fr auto;gap:.4rem;align-items:center}.hand-row .hand-feedback{grid-column:1 / -1}.hand-row.bad input.mono{border-color:var(--danger);background:var(--danger-bg)}.notation-help table{width:100%;border-collapse:collapse;font-size:.9rem}.notation-help td{border-top:1px solid var(--line);padding:.35rem .4rem;vertical-align:top}.notation-help td:first-child{white-space:nowrap;width:10rem}@media (max-width: 780px){.felt{grid-template-areas:"top" "center" "left" "right" "bottom";grid-template-columns:1fr;grid-template-rows:auto auto auto auto auto}.topbar{flex-wrap:wrap}.topbar nav{order:3;width:100%}.hand-row{grid-template-columns:1fr}.card-line-main{gap:.2rem .6rem}.chat{left:.75rem;right:.75rem;width:auto}.table-screen.card-open .felt{max-height:23vh}.card-overlay.with-rack{max-height:54vh}.card-category{margin-bottom:.6rem}.card-overlay .card-category>p.small{margin:.15rem 0}}@media (prefers-reduced-motion: reduce){*{transition:none!important}}
