:root{--bg:#f4f1ea;--surface:#fffdf8;--ink:#1d2433;--muted:#5e6675;--line:#e2ddd1;--green:#14532d;--green-2:#1f7a4a;--felt-1:#2a8a57;--felt-2:#12502c;--red:#c62828;--black:#1b1f2a;--gold:#e0a526;--blue:#2563eb;--good:#16a34a;--bad:#dc2626;--team0:#2563eb;--team1:#c2410c;--radius:14px;--shadow:0 1px 2px #0000000f, 0 4px 14px #00000012;--header-h:56px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*,:before,:after{box-sizing:border-box}body{min-height:100dvh;margin:0}h1,h2,h3,h4{margin:0 0 .5em;line-height:1.2}h1{font-size:clamp(1.6rem,4vw,2.3rem)}a{color:var(--green-2)}button{font:inherit;color:inherit}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.suit-red{color:var(--red)}.suit-black{color:var(--black)}.feedback .suit-black,.choice-btn .suit-black{color:#000}.muted{color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--green-2);margin:0 0 .4rem;font-size:.75rem;font-weight:700}.btn{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:.35em;padding:.55rem 1rem;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,transform .1s;display:inline-flex}.btn:hover:not(:disabled){background:#fff;border-color:#c9c2b2}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}.btn--primary{background:var(--green-2);border-color:var(--green-2);color:#fff}.btn--primary:hover:not(:disabled){background:var(--green);border-color:var(--green)}.btn--small{min-height:36px;padding:.3rem .7rem;font-size:.875rem}.btn--ghost{color:var(--muted);background:0 0;border-color:#0000}.btn--ghost:hover:not(:disabled){background:#0000000a;border-color:#0000}.btn--danger{color:var(--bad)}.btn.is-on{border-color:var(--green-2);color:var(--green);background:#e7f3ec}:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.chips{flex-wrap:wrap;gap:.4rem;display:flex}.chip{white-space:nowrap;background:#ece7db;border-radius:999px;align-items:center;gap:.3em;padding:.2rem .6rem;font-size:.8rem;font-weight:600;display:inline-flex}.chip--muted{color:var(--muted);background:0 0;border:1px dashed #c9c2b2}.chip--hot{color:#9a5b00;background:#fff1d6}.progress-line{background:#e6e0d3;border-radius:99px;height:6px;margin:.6rem 0 .35rem;overflow:hidden}.progress-line>span{background:var(--green-2);border-radius:inherit;height:100%;transition:width .4s;display:block}.progress-line--score>span{background:linear-gradient(90deg, var(--gold), var(--green-2))}.toggle{cursor:pointer;align-items:center;gap:.45rem;min-height:36px;font-weight:500;display:inline-flex}.toggle input{width:1.15rem;height:1.15rem;accent-color:var(--green-2)}.dealer-chip{background:var(--gold);color:#3b2a00;border-radius:99px;place-items:center;min-width:1.3rem;height:1.3rem;padding:0 .3rem;font-size:.7rem;font-weight:800;display:inline-grid}.team-dot{vertical-align:middle;border-radius:50%;width:.65rem;height:.65rem;display:inline-block}.team-dot.team-0{background:var(--team0)}.team-dot.team-1{background:var(--team1)}.app-header{z-index:40;min-height:var(--header-h);padding:0 max(.75rem, env(safe-area-inset-left));background:var(--green);color:#fff;align-items:center;gap:.75rem;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #00000026}.brand{color:#fff;white-space:nowrap;align-items:center;gap:.5rem;font-weight:800;text-decoration:none;display:flex}.brand__mark{width:2rem;height:2rem;color:var(--red);letter-spacing:-.1em;background:#fff;border-radius:8px;place-items:center;font-size:.85rem;display:grid}.game-nav{scrollbar-width:none;gap:.2rem;margin-left:auto;display:flex;overflow-x:auto}.game-nav a{color:#d5eadc;white-space:nowrap;border-radius:8px;padding:.45rem .7rem;font-size:.92rem;font-weight:600;text-decoration:none}.game-nav a:hover{color:#fff;background:#ffffff1a}.game-nav a.is-on{color:#fff;background:#ffffff2e}.game-nav__name{font-weight:800!important}@media (width<=640px){.app-header:has(.game-nav) .brand__name{display:none}.game-nav{margin-left:0}.game-nav a{padding:.45rem .55rem}}.page{max-width:1080px;padding:1.25rem max(1rem, env(safe-area-inset-left)) 3rem;margin:0 auto}.page__head p{color:var(--muted);margin-top:0}.hero{max-width:44rem;padding:1.5rem 0 1rem}.hero p{color:var(--muted);font-size:1.1rem;line-height:1.55}.game-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:1rem;display:grid}.game-tile{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);color:inherit;flex-direction:column;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex;overflow:hidden}a.game-tile:hover{transform:translateY(-2px);box-shadow:0 6px 24px #0000001f}.game-tile__art{justify-content:center;align-items:center;height:140px;display:flex}.game-tile__art .pcard{margin:0 -10px}.game-tile__body{padding:1rem 1.1rem 1.2rem}.game-tile__body p{color:var(--muted);margin:0 0 .75rem;line-height:1.45}.game-tile__body small{color:var(--muted)}.game-tile--soon{border:2px dashed var(--line);box-shadow:none;background:0 0}.hub__head p{color:var(--muted);max-width:40rem;line-height:1.5}.modes{gap:.9rem;margin:1.5rem 0 2.5rem;display:grid}@media (width>=760px){.modes{grid-template-columns:repeat(3,1fr)}}.mode{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);border-top:5px solid var(--green-2);color:inherit;flex-direction:column;padding:1.2rem;text-decoration:none;transition:transform .15s;display:flex}.mode:hover{transform:translateY(-2px)}.mode--practice{border-top-color:var(--gold)}.mode--play{border-top-color:var(--red)}.mode--online{border-top-color:var(--blue)}@media (width>=760px){.modes--4{grid-template-columns:repeat(2,1fr)}}@media (width>=1040px){.modes--4{grid-template-columns:repeat(4,1fr)}}.mode__icon{font-size:1.8rem}.mode h2{margin:.3rem 0 .2rem}.mode p{color:var(--muted);margin:0 0 .6rem;line-height:1.45}.mode__stat{color:var(--muted);font-size:.85rem}.mode__cta{color:var(--green-2);margin-top:auto;padding-top:.75rem;font-weight:700}.hub__group h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-top:1.5rem;font-size:.8rem}.lesson-list{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);margin:0;padding:0;list-style:none;overflow:hidden}.lesson-list li{border-bottom:1px solid var(--line);align-items:center;gap:.75rem;padding:.25rem .9rem;display:flex}.lesson-list li:last-child{border-bottom:0}.lesson-list a{color:inherit;flex-direction:column;flex:1;padding:.6rem 0;text-decoration:none;display:flex}.lesson-list a span{color:var(--muted);font-size:.9rem}.lesson-list li.is-done a strong,.lesson-list li.is-skipped a strong{color:var(--muted)}.lesson-list__check input{width:1.3rem;height:1.3rem;accent-color:var(--green-2);cursor:pointer}.status{white-space:nowrap;border-radius:99px;padding:.15rem .5rem;font-size:.75rem;font-weight:700}.status--done{color:#166534;background:#dcf3e4}.status--skipped{color:var(--muted);background:#ece7db}.learn{gap:2rem;max-width:1180px;display:grid}@media (width>=900px){.learn{grid-template-columns:250px minmax(0,1fr)}.toc-toggle{display:none!important}.toc{top:calc(var(--header-h) + 1rem);max-height:calc(100dvh - var(--header-h) - 2rem);align-self:start;position:sticky;overflow-y:auto}}.toc-toggle{justify-self:start}@media (width<=899px){.learn{gap:1rem}.toc{inset:var(--header-h) auto 0 0;z-index:30;background:var(--surface);width:min(85vw,320px);padding:1rem;transition:transform .25s;position:fixed;overflow-y:auto;transform:translate(-105%);box-shadow:4px 0 24px #0003}.toc.is-open{transform:none}.toc-backdrop{inset:var(--header-h) 0 0 0;z-index:29;background:#00000059;animation:.2s fade;position:fixed}}.toc__progress{color:var(--muted);margin-bottom:1rem;font-size:.85rem}.toc__group h4{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:1rem 0 .35rem;font-size:.72rem}.toc ol{margin:0;padding:0;list-style:none}.toc a{color:var(--ink);border-radius:8px;align-items:center;gap:.55rem;padding:.5rem .6rem;font-size:.94rem;text-decoration:none;display:flex}.toc a:hover{background:#efeadf}.toc a.is-current{background:#e2f0e7;font-weight:700}.toc a.is-done,.toc a.is-skipped{color:var(--muted)}.toc__mark{text-align:center;width:1.1rem;color:var(--green-2);font-weight:800}.toc a:not(.is-done):not(.is-skipped) .toc__mark{color:#b9b2a2}.toc__practice{margin-top:1rem;font-weight:700;color:var(--green-2)!important}.lesson{min-width:0;max-width:50rem}.lesson__head h1{margin-bottom:.4rem}.lesson__status{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.lesson__status .btn--ghost{padding-left:0}.lesson__body{font-size:1.05rem;line-height:1.65}.lesson__body h3{margin-top:1.8rem}.lesson__body ul,.lesson__body ol{padding-left:1.3rem}.lesson__body li{margin-bottom:.35rem}.lesson__nav{border-top:1px solid var(--line);justify-content:space-between;gap:.6rem;margin-top:2.5rem;padding-top:1.25rem;display:flex}.lesson__nav .btn{min-width:0}.lesson__nav-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=520px){.lesson__nav a .lesson__nav-title{display:none}}.aside{color:var(--muted);font-size:.92rem}.flow{counter-reset:flow;list-style:none;padding:0!important}.flow li{counter-increment:flow;margin-bottom:.7rem;padding-left:2.4rem;position:relative}.flow li:before{content:counter(flow);background:var(--green-2);color:#fff;border-radius:50%;place-items:center;width:1.7rem;height:1.7rem;font-size:.85rem;font-weight:800;display:grid;position:absolute;top:.05rem;left:0}.callout{border-left:4px solid var(--green-2);background:#eaf4ee;border-radius:12px;gap:.75rem;margin:1.25rem 0;padding:.9rem 1rem;font-size:.98rem;line-height:1.55;display:flex}.callout--warn{border-left-color:var(--gold);background:#fff5e0}.callout--rule{border-left-color:var(--blue);background:#eaf0fb}.callout__title{margin-bottom:.15rem;display:block}.card-row{margin:1rem 0}.card-row__cards{flex-wrap:wrap;gap:.4rem;display:flex}.card-row figcaption{color:var(--muted);margin-top:.4rem;font-size:.88rem}.deck-grid .card-row{margin:.4rem 0}.score-table{border-collapse:collapse;background:var(--surface);width:100%;box-shadow:var(--shadow);border-radius:12px;overflow:hidden}.score-table th,.score-table td{text-align:left;border-bottom:1px solid var(--line);padding:.65rem .9rem}.score-table th{background:#efeadf;font-size:.85rem}.score-table td:last-child{white-space:nowrap;font-weight:700}.score-table tr.is-bad td{background:#fdecec}.ref-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:.75rem;display:grid}.ref-grid section{background:var(--surface);box-shadow:var(--shadow);border-radius:12px;padding:.9rem 1rem}.ref-grid h3{font-size:1rem;margin:0 0 .3rem!important}.ref-grid p{margin:0;font-size:.94rem;line-height:1.5}.glossary{grid-template-columns:max-content 1fr;gap:.5rem 1rem;display:grid}.glossary dt{font-weight:700}.glossary dd{margin:0}.widget{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);margin:1.25rem 0;padding:1rem}.widget__controls{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.widget__note{color:var(--muted);margin:.6rem 0 0;font-size:.9rem}.suit-picker{flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.75rem;font-weight:700;display:flex}.suit-btn{border:2px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;width:48px;height:48px;font-size:1.5rem}.suit-btn--red{color:var(--red)}.suit-btn--black{color:var(--black)}.suit-btn.is-on{border-color:var(--green-2);box-shadow:0 0 0 2px var(--green-2);background:#e7f3ec}.explorer__row{border-top:1px solid var(--line);padding:.6rem 0}.explorer__title{flex-direction:column;margin-bottom:.4rem;font-size:.95rem;display:flex}.explorer__title small{color:var(--muted)}.explorer__cards{flex-wrap:wrap;gap:.35rem;display:flex}.explorer__card{width:calc(var(--cw-sm) + 4px);flex-direction:column;align-items:center;display:flex}.explorer__card small{text-align:center;color:var(--muted);min-height:1em;margin-top:.15rem;font-size:.66rem;line-height:1.2}.bower-pair{gap:1.5rem;margin:1rem 0;display:flex}.bower-pair>div{text-align:center;flex-direction:column;align-items:center;gap:.4rem;font-size:.85rem;line-height:1.3;display:flex}.deal-demo__table{background:radial-gradient(ellipse at center, var(--felt-1), var(--felt-2));color:#fff;border-radius:12px;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-areas:"north north north""west kitty east""south south south";place-items:center;gap:.75rem .25rem;padding:1rem .35rem;display:grid}.deal-demo__seat--north{grid-area:north}.deal-demo__seat--south{grid-area:south}.deal-demo__seat--west{grid-area:west}.deal-demo__seat--east{grid-area:east}.deal-demo__seat{flex-direction:column;align-items:center;gap:.3rem;display:flex}.deal-demo__name{font-size:.8rem;font-weight:700}.deal-demo__hand{min-height:calc(var(--cw-xs) * 1.4);display:flex}.deal-demo__hand .pcard+.pcard{margin-left:calc(var(--cw) * -.62)}.deal-demo__seat--south .deal-demo__hand .pcard+.pcard{margin-left:2px}.deal-demo__kitty{text-align:center;flex-direction:column;grid-area:kitty;align-items:center;gap:.35rem;font-size:.72rem;display:flex}.deal-demo__stack{width:calc(var(--cw-xs) + 16px);height:calc(var(--cw-xs) * 1.4);position:relative}.deal-demo__seat{border-radius:10px;padding:.3rem .25rem;transition:background .25s,box-shadow .25s}.deal-demo__seat.is-dealer .deal-demo__name{color:#ffe08a}.deal-demo__seat.is-dealer{box-shadow:0 0 0 2px var(--gold)}.deal-demo__seat.is-intro{animation:1s ease-in-out infinite dealer-pulse}.deal-demo__seat.is-receiving{background:#ffffff29}.deal-demo__name .dealer-chip{margin-left:.3rem}.deal-demo__tally{opacity:.9;min-height:1em;font-size:.72rem;font-weight:700}.deal-demo__caption{min-height:3em;margin:.75rem 0 .25rem;font-size:1.02rem;font-weight:650;line-height:1.4}.deal-demo__order{flex-direction:column;gap:.35rem;margin:.4rem 0 0;padding:0;list-style:none;display:flex}.deal-demo__order li{flex-wrap:wrap;align-items:center;gap:.3rem;display:flex}.deal-demo__round{text-transform:uppercase;letter-spacing:.05em;width:4.2rem;color:var(--muted);font-size:.72rem;font-weight:700}.packet{border:1.5px solid var(--line);color:var(--muted);border-radius:99px;padding:.15rem .5rem;font-size:.8rem;transition:background .2s,color .2s,border-color .2s}.packet b{color:var(--ink)}.packet.is-now{background:var(--green-2);border-color:var(--green-2);color:#fff}.packet.is-now b{color:#fff}.packet.is-done{background:#e7f3ec;border-color:#b7dcc5}.deal-fly{animation:.38s cubic-bezier(.2,.7,.3,1) backwards deal-fly}@keyframes deal-fly{0%{opacity:.2;transform:translate(var(--fx,0), var(--fy,-40px)) scale(.85) rotate(-8deg)}}@keyframes dealer-pulse{50%{box-shadow:0 0 0 5px #e0a5268c}}.seat-diagram{grid-template:".north.""west table east"110px".south."/1fr minmax(110px,160px) 1fr;place-items:center;gap:.5rem;max-width:420px;margin:1.25rem auto;display:grid;position:relative}.seat-diagram__table{background:radial-gradient(ellipse at center, var(--felt-1), var(--felt-2));color:#fffc;border-radius:50%;grid-area:table;align-content:center;place-items:center;width:100%;height:100%;display:grid}.seat-diagram__arrow{font-size:2.2rem;line-height:1}.seat-diagram__cw{font-size:.7rem}.seat-diagram__seat{background:var(--surface);box-shadow:var(--shadow);border-bottom:3px solid;border-radius:10px;flex-direction:column;align-items:center;gap:.2rem;padding:.45rem .7rem;font-size:.9rem;display:flex}.seat-diagram__seat.team-0{border-color:var(--team0)}.seat-diagram__seat.team-1{border-color:var(--team1)}.seat-diagram__seat--north{grid-area:north}.seat-diagram__seat--south{grid-area:south}.seat-diagram__seat--west{grid-area:west}.seat-diagram__seat--east{grid-area:east}.seat-diagram figcaption{color:var(--muted);text-align:center;grid-column:1/-1;font-size:.82rem}.steps{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);border:1px solid var(--line);margin:1.5rem 0;padding:1rem 1.1rem}.steps__head{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;justify-content:space-between;font-size:.78rem;font-weight:700;display:flex}.steps__dots{gap:.3rem;margin:.5rem 0 .9rem;display:flex}.steps__dots span{background:#e6e0d3;border-radius:99px;flex:1;height:4px}.steps__dots .is-past{background:#9fcfb3}.steps__dots .is-on{background:var(--green-2)}.steps h4{margin-bottom:.25rem;font-size:1.1rem}.steps__body p{margin:0 0 .75rem}.steps__nav{justify-content:space-between;margin-top:1rem;display:flex}.scene{background:radial-gradient(ellipse at top, var(--felt-1), var(--felt-2));color:#fff;border-radius:12px;flex-wrap:wrap;gap:.9rem 1.5rem;margin:.75rem 0 1rem;padding:.9rem;display:flex}.scene__meta{flex-wrap:wrap;flex-basis:100%;align-items:center;gap:.4rem;display:flex}.scene__meta .chip{color:#fff;white-space:normal;background:#ffffff26;max-width:100%}.scene__block{flex-direction:column;gap:.35rem;display:flex}.scene__label{text-transform:uppercase;letter-spacing:.08em;color:#ffffffbf;font-size:.7rem;font-weight:700}.scene__trick{flex-wrap:wrap;gap:.5rem;display:flex}.scene__play{flex-direction:column;align-items:center;gap:.2rem;font-size:.75rem;font-weight:600;display:flex}.turned-down{opacity:.55;filter:grayscale(.4);margin:0 .5rem;display:inline-block;transform:rotate(90deg)scale(.9)}.trump-badge{color:var(--ink);background:#fff;border-radius:99px;align-items:center;gap:.35rem;padding:.2rem .65rem .2rem .3rem;font-size:.85rem;font-weight:700;display:inline-flex;box-shadow:0 1px 3px #0003}.trump-badge__label{background:var(--gold);color:#3b2a00;text-transform:uppercase;letter-spacing:.06em;border-radius:99px;padding:.05rem .45rem;font-size:.68rem}.trump-badge__suit{font-size:1.15rem;line-height:1}.trump-badge--red .trump-badge__suit{color:var(--red)}.question__prompt{margin:0 0 .25rem;font-size:1.12rem;font-weight:650;line-height:1.45}.question__hint{color:var(--muted);margin:0 0 .5rem;font-size:.88rem}.question__cards{flex-wrap:wrap;gap:.9rem .6rem;margin:1rem 0;display:flex}.choice-card{flex-direction:column;align-items:center;display:flex;position:relative}.choice-card__mark{border-radius:99px;margin-top:.3rem;padding:.05rem .45rem;font-size:.75rem;font-weight:800}.choice-card__mark--right{color:#166534;background:#dcf3e4}.choice-card__mark--wrong{color:#991b1b;background:#fde2e2}.choice-card__mark--also{color:#166534;background:#dcf3e4}.choice-btn--also{border-color:var(--good);border-style:dashed}.choice-card__mark--missed{color:#1e40af;background:#dbe7fd}.question__buttons{gap:.5rem;margin:.5rem 0 1rem;display:grid}@media (width>=640px){.question__buttons{grid-template-columns:repeat(2,1fr)}}.choice-btn{border:2px solid var(--line);background:var(--surface);text-align:left;cursor:pointer;border-radius:10px;align-items:center;gap:.5rem;min-height:48px;padding:.6rem .9rem;font-weight:600;display:flex}.choice-btn:hover:not(:disabled){border-color:#b9b2a2}.choice-btn:disabled{cursor:default}.choice-btn--selected{border-color:var(--green-2);background:#e7f3ec}.choice-btn--right{border-color:var(--good);background:#dcf3e4}.choice-btn--wrong{border-color:var(--bad);background:#fde2e2}.choice-btn--missed{border-color:var(--blue);border-style:dashed}.choice-btn--other{opacity:.55}.feedback{border-radius:10px;margin:.75rem 0 1rem;padding:.85rem 1rem;line-height:1.55;animation:.25s fade-up}.feedback--good{border-left:4px solid var(--good);background:#dcf3e4}.feedback--bad{border-left:4px solid var(--bad);background:#fdeaea}.feedback__review{margin-top:.5rem;font-weight:700}.practice-block{border-radius:var(--radius);background:#fbf7ee;border:2px solid #eadfc4;margin:2rem 0 0;padding:1.1rem}.practice-block header{justify-content:space-between;align-items:center;margin-bottom:.4rem;display:flex}.practice-block h3{margin:0}.test-cta{border-radius:var(--radius);background:linear-gradient(120deg, var(--green), var(--green-2));color:#fff;box-shadow:var(--shadow);align-items:center;gap:1rem;margin:1rem 0 2rem;padding:1.1rem 1.2rem;text-decoration:none;display:flex}.test-cta>span:first-child{font-size:2rem}.test-cta div{flex-direction:column;flex:1;display:flex}.test-cta div span{opacity:.85;font-size:.92rem}.test-cta__go{white-space:nowrap;font-weight:800}.topic-group{margin-bottom:1.75rem}.topic-group h2{margin-bottom:.2rem}.topic-group>.muted{margin:0 0 .75rem;font-size:.92rem}.topic-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:.75rem;display:grid}.topic{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);color:inherit;flex-direction:column;gap:.2rem;padding:1rem;text-decoration:none;transition:transform .15s;display:flex}.topic:hover{transform:translateY(-2px)}.topic>span{color:var(--muted);font-size:.92rem;line-height:1.4}.topic small{color:var(--muted)}.runner__head{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:1rem;display:flex}.runner__head h1{flex:1;margin:0;font-size:1.5rem}@media (width<=560px){.runner__head h1{flex-basis:100%;order:1}.runner__head .chip{order:2}}.runner__head .btn--ghost{padding-left:0}.question-card{border-radius:var(--radius);background:var(--surface);max-width:760px;box-shadow:var(--shadow);padding:1.2rem}.progress-line--test{max-width:760px;margin-bottom:1rem}.results{text-align:center;margin:0 auto}.results h1{margin:0;font-size:3rem}.results__verdict{font-size:1.1rem}.results__dots{flex-wrap:wrap;justify-content:center;gap:.35rem;padding:0;list-style:none;display:flex}.results__dots li{border-radius:50%;place-items:center;width:2rem;height:2rem;font-size:.85rem;font-weight:800;display:grid}.results__dots .is-right{color:#166534;background:#dcf3e4}.results__dots .is-wrong{color:#991b1b;background:#fde2e2}.results__review{text-align:left;line-height:1.8;display:inline-block}.results__actions{flex-wrap:wrap;justify-content:center;gap:.6rem;margin-top:1.25rem;display:flex}:root{--cw-xs:32px;--cw-sm:clamp(50px, 13vw, 64px);--cw-md:clamp(64px, 18vw, 84px);--cw-lg:clamp(58px, 17.5vw, 92px)}@media (width>=640px){:root{--cw-xs:38px;--cw-sm:clamp(50px, 10dvh - 18px, 64px);--cw-lg:clamp(70px, 15dvh - 28px, 92px)}}.pcard{--cw:var(--cw-md);width:var(--cw);height:calc(var(--cw) * 1.4);border-radius:calc(var(--cw) * .08);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#fff;border:1px solid #cfc9bd;flex:none;padding:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;transition:transform .15s,box-shadow .15s,opacity .2s,filter .2s;position:relative;box-shadow:0 1px 2px #0000002e,0 2px 6px #00000014;container-type:size}.pcard--xs{--cw:var(--cw-xs)}.pcard--sm{--cw:var(--cw-sm)}.pcard--md{--cw:var(--cw-md)}.pcard--lg{--cw:var(--cw-lg)}.pcard--red{color:var(--red)}.pcard--black{color:var(--black)}button.pcard{cursor:default}.pcard.is-clickable{cursor:pointer}@media (hover:hover){.pcard.is-clickable:hover{transform:translateY(-6px);box-shadow:0 8px 18px #00000038}}.pcard.pcard.is-selected{box-shadow:0 0 0 3px var(--green-2), 0 8px 18px #00000040;background:#effaf3;transform:translateY(-8px)}.pcard.is-dim{opacity:.45;filter:grayscale(.35)}.pcard.glow-good{box-shadow:0 0 0 3px var(--good), 0 0 14px #16a34a99}.pcard.glow-bad{box-shadow:0 0 0 3px var(--bad), 0 0 14px #dc262680}.pcard.glow-info{box-shadow:0 0 0 3px var(--gold), 0 0 14px #e0a526b3}.pcard__face-wrap{border-radius:inherit;position:absolute;inset:0;overflow:hidden}.pcard__index{flex-direction:column;align-items:center;line-height:.95;display:flex;position:absolute;top:4cqw;left:6cqw}.pcard__rank{letter-spacing:-.08em;font-size:40cqw;font-weight:800}.pcard__suit{margin-top:-1cqw;font-size:34cqw}.pcard__big{font-size:62cqw;line-height:1;position:absolute;bottom:5cqw;right:6cqw}.pcard__big--court{font-family:Segoe UI Symbol,"Noto Sans Symbols 2",DejaVu Sans,Apple Symbols,system-ui,sans-serif;font-size:70cqw;bottom:3cqw;right:5cqw}.pcard--back{background:#fff;padding:0}.pcard__back{border-radius:calc(var(--cw) * .05);background-color:#1e3a8a;background-image:repeating-linear-gradient(45deg,#ffffff24 0 2px,#0000 2px 7px),repeating-linear-gradient(-45deg,#ffffff24 0 2px,#0000 2px 7px),radial-gradient(circle,#b91c1c 0 22%,#0000 23%);position:absolute;inset:5cqw;box-shadow:inset 0 0 0 1.5px #ffffff59}.pcard.is-selected .pcard__badge{background:var(--green-2);color:#fff}.pcard__badge{background:var(--gold);color:#3b2a00;border-radius:99px;place-items:center;min-width:1.35rem;height:1.35rem;padding:0 .25rem;font:800 .72rem system-ui,sans-serif;display:grid;position:absolute;top:-.5rem;right:-.4rem;box-shadow:0 1px 3px #0000004d}.app--play main{max-width:1000px;margin:0 auto}.play{padding:.6rem max(.5rem, env(safe-area-inset-left)) calc(1rem + env(safe-area-inset-bottom));flex-direction:column;gap:.6rem;display:flex}.play__bar{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.scoreboard{background:var(--surface);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:.4rem;padding:.3rem .4rem;display:flex}.scoreboard__team{border-left:4px solid;border-radius:4px;grid-template-rows:auto auto;grid-template-columns:auto auto;align-items:center;column-gap:.4rem;padding:.1rem .5rem;display:grid}.scoreboard__team.team-0{border-color:var(--team0)}.scoreboard__team.team-1{border-color:var(--team1)}.scoreboard__name{text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:700}.scoreboard__score{font-variant-numeric:tabular-nums;grid-row:span 2;font-size:1.6rem;font-weight:800}.scoreboard__tricks{gap:2px;display:flex}.scoreboard__tricks span{background:#e2ddd1;border-radius:2px;width:7px;height:7px}.team-0 .scoreboard__tricks .is-won{background:var(--team0)}.team-1 .scoreboard__tricks .is-won{background:var(--team1)}.scoreboard__target{color:var(--muted);padding-right:.3rem;font-size:.72rem}.play__status{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.play__tools{gap:.35rem;margin-left:auto;display:flex}@media (width<=560px){.play__tools{order:3;width:100%;margin-left:0}.play__tools .btn{flex:1}.play__status{margin-left:auto}}.panel{background:var(--surface);box-shadow:var(--shadow);border-radius:12px;padding:.8rem 1rem}.settings{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;display:flex}.settings small{color:var(--muted)}.settings__rules{border:0;flex-direction:column;flex-basis:100%;gap:.2rem;margin:0;padding:0;display:flex}.settings__rules legend{margin-bottom:.2rem;font-weight:700}.settings__rules .toggle{align-items:flex-start}.settings__rules .toggle input{margin-top:.2rem}.table__msg--tap.is-renege{background:var(--bad)}.settings__speed{text-transform:capitalize;align-items:center;gap:.3rem;display:flex}.felt{background:radial-gradient(ellipse at 50% 40%, #ffffff14, transparent 60%), radial-gradient(ellipse at center, var(--felt-1), var(--felt-2))}.table{color:#fff;border:6px solid #5b3a1e;border-radius:22px;grid-template:".north.""west center east"minmax(190px,1fr)".south."/minmax(68px,1fr) minmax(0,2.4fr) minmax(68px,1fr);gap:.3rem;padding:.6rem;display:grid;box-shadow:inset 0 0 30px #00000059,0 4px 16px #0003}@media (width>=640px){.table{grid-template-rows:auto minmax(calc(var(--cw-sm) * 2.8 + 1.6rem), 1fr) auto;min-height:clamp(280px,100dvh - 410px,420px)}.play{padding-bottom:.5rem}}.seat{border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:.25rem;padding:.3rem;transition:background .2s;display:flex;position:relative}.seat.is-turn{background:#ffffff1f;box-shadow:0 0 0 2px #fff6}.seat.is-out{opacity:.5}.seat--north{grid-area:north}.seat--south{flex-direction:row;grid-area:south}.seat--west{grid-area:west}.seat--east{grid-area:east}.seat__label{flex-wrap:wrap;justify-content:center;align-items:center;gap:.3rem;font-size:.85rem;display:flex}.seat.team-0 .seat__label strong{border-bottom:2px solid #93c5fd}.seat.team-1 .seat__label strong{border-bottom:2px solid #fdba74}.seat__partner{opacity:.75;font-size:.66rem}.seat__player{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;background:#ffffffe6;border-radius:99px;max-width:9em;padding:.05rem .4rem;font-size:.72rem;font-weight:700;overflow:hidden}.seat__player.is-away{color:#9a5b00;background:#fff1d6}.seat__badge{color:var(--green);white-space:nowrap;background:#fff;border-radius:99px;padding:.05rem .4rem;font-size:.66rem;font-weight:800}.seat__cards{min-height:calc(var(--cw-xs) * 1.4);align-items:center;display:flex}.seat__cards .pcard+.pcard{margin-left:calc(var(--cw-xs) * -.78)}.seat__out{font-size:.75rem;font-style:italic}.seat__tricks{opacity:.85;font-size:.7rem}.bubble{z-index:5;color:var(--ink);white-space:nowrap;background:#fff;border-radius:10px;padding:.25rem .6rem;font-size:.78rem;font-weight:800;animation:.25s pop;position:absolute;top:-.4rem;left:50%;transform:translate(-50%,-100%);box-shadow:0 2px 8px #00000040}.seat--north .bubble{top:auto;bottom:-.4rem;transform:translate(-50%,100%)}.seat--west .bubble,.seat--east .bubble{margin-top:.2rem;position:static;transform:none}.seat--south .bubble{position:static;transform:none}.table__center{grid-area:center;place-items:center;min-width:0;display:grid}.table__msg{text-align:center;background:#00000059;border-radius:99px;margin:0;padding:.4rem .8rem;font-size:.85rem;font-weight:600}.table__msg--tap{z-index:20;color:#fff;white-space:nowrap;cursor:pointer;background:#000000a6;border:0;animation:.25s pop;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.kitty{flex-direction:column;align-items:center;gap:.6rem;display:flex}.kitty__stack{width:calc(var(--cw-sm) + 14px);height:calc(var(--cw-sm) * 1.4);position:relative}.kitty__stack .turned-down{margin:0;transform:rotate(90deg)scale(.9)}.kitty__label{text-align:center;opacity:.9;font-size:.8rem}.turn-up{animation:.45s flip-in}.trick-pile{width:min(100%,250px);height:calc(var(--cw-sm) * 1.4 * 2 + 1.6rem);max-height:100%;position:relative}.trick-pile__card{position:absolute}.trick-pile__card--north{top:0;left:50%;translate:-50%}.trick-pile__card--south{bottom:0;left:50%;translate:-50%}.trick-pile__card--west{top:50%;left:6%;translate:0 -50%;rotate:-8deg}.trick-pile__card--east{top:50%;right:6%;translate:0 -50%;rotate:8deg}.trick-pile__card.is-led .pcard__badge{color:var(--green);border:1.5px solid var(--green-2);text-transform:uppercase;letter-spacing:.04em;background:#fff;font-size:.62rem;top:auto;bottom:-.55rem;right:50%;translate:50%}.led-note{white-space:nowrap;font-weight:700}.led-note .suit-red{color:var(--red)}.trick-pile__card.is-loser{filter:brightness(.82)}.play__actions{text-align:center;flex-direction:column;align-items:center;gap:.4rem;min-height:2.5rem;display:flex}.prompt{margin:0;font-weight:650}.prompt--wait{color:var(--muted);font-weight:500}.alert{color:#8f1d1d;background:#fdeaea;border-radius:10px;margin:0;padding:.5rem .8rem;font-size:.92rem;animation:.3s shake}.bid-bar{flex-direction:column;align-items:center;gap:.5rem;display:flex}.bid-bar__buttons{flex-wrap:wrap;justify-content:center;align-items:center;gap:.45rem;display:flex}.hand{min-height:calc(var(--cw-lg) * 1.4 + 1rem);justify-content:center;padding:.75rem .25rem .25rem;display:flex}.hand.is-out{opacity:.45}@media (width>=640px){.hand{padding-top:.5rem}}.hand .hand__card+.hand__card{margin-left:min(8px, calc((100vw - 1.5rem - 3px - var(--cw) * var(--n)) / max(var(--n) - 1, 1)))}.hand__card.is-playable:not(.glow-info){box-shadow:0 0 0 2px #16a34a8c,0 2px 6px #00000026}.coach{background:#fff8e6;border:1px solid #f1dfae;gap:.7rem;line-height:1.5;display:flex}.coach p{margin:0}.coach__icon{font-size:1.4rem}.coach--paused{border-color:#e0b84a;box-shadow:0 0 0 2px #e0b84a59}.coach__paused{color:#8a6200;flex-wrap:wrap;align-items:center;gap:.4rem .6rem;margin-top:.45rem;font-size:.85rem;font-weight:700;display:flex}.feedback-toast{left:50%;top:calc(var(--header-h) + .5rem);z-index:50;width:min(92vw,440px);color:var(--ink);text-align:left;border:0;border-left:6px solid var(--good);cursor:pointer;background:#fff;border-radius:14px;align-items:flex-start;gap:.6rem;padding:.7rem .9rem;font-size:.92rem;line-height:1.4;animation:.25s toast-in;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #00000040}.feedback-toast strong{font-size:.95rem;display:block}.feedback-toast.is-fine{border-left-color:#7fbf98}.feedback-toast.is-mistake{border-left-color:var(--gold)}.feedback-toast__icon{background:var(--good);color:#fff;border-radius:50%;flex:none;place-items:center;width:1.7rem;height:1.7rem;font-weight:800;display:grid}.is-fine .feedback-toast__icon{background:#7fbf98}.is-mistake .feedback-toast__icon{background:var(--gold);color:#3b2a00}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-10px)}}.coach{padding-right:2.5rem;position:relative}.coach__close{width:2rem;height:2rem;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;font-size:1.3rem;line-height:1;position:absolute;top:.35rem;right:.35rem}.btn--coach{background:#fff8e6;border-color:#f1dfae}.log h3{margin:0 0 .4rem;font-size:1rem}.log ol{max-height:220px;margin:0;padding-left:1.2rem;font-size:.9rem;line-height:1.6;overflow-y:auto}.log li.team-0{color:#1e40af}.log li.team-1{color:#9a3412}.log li.is-system{color:var(--muted);font-style:italic}.modal{z-index:60;background:#0a140f8c;place-items:center;padding:1rem;animation:.2s fade;display:grid;position:fixed;inset:0}.modal__card{overscroll-behavior:contain;background:var(--surface);text-align:center;border-radius:18px;width:min(100%,460px);max-height:calc(100dvh - 2rem);padding:1.5rem 1.25rem 0;animation:.3s pop;overflow-y:auto;box-shadow:0 20px 60px #00000059}.modal__reason{color:var(--muted)}.modal__actions{padding:.9rem 1.25rem calc(1rem + env(safe-area-inset-bottom));background:linear-gradient(to bottom, #fffdf800, var(--surface) 30%);margin:0 -1.25rem;position:sticky;bottom:0}.modal__actions .btn{width:100%}.modal__actions--two{grid-template-columns:1fr 2fr;gap:.6rem;display:grid}.review{text-align:left;border-top:1px solid var(--line);padding-top:.9rem}.review__summary{text-align:center;margin:0 0 .75rem}.review__list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.review__list li{background:#f3f8f4;border-radius:10px;gap:.6rem;padding:.6rem .7rem;font-size:.92rem;line-height:1.45;display:flex}.review__list li.is-mistake{background:#fff6e3}.review__list li.is-fine{background:#f1f6f2}.review__list p{margin:.1rem 0 0}.review__icon{background:var(--good);color:#fff;border-radius:50%;flex:none;place-items:center;width:1.5rem;height:1.5rem;font-size:.8rem;font-weight:800;display:grid}.review__list li.is-illegal{background:#fdeaea}.is-illegal .review__icon{background:var(--bad)}.is-fine .review__icon{background:#7fbf98}.review__renege{color:#8f1d1d}.is-mistake .review__icon{background:var(--gold);color:#3b2a00}.review__label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);align-items:center;gap:.4rem;font-size:.72rem;font-weight:800;display:flex}.review__asked{text-transform:none;letter-spacing:0;background:#e6e0d3;border-radius:99px;padding:.05rem .4rem;font-weight:700}.review__heading{margin:1.1rem 0 .5rem;font-size:.95rem}.review__tricks{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.review__tricks li{grid-template-columns:1.4rem auto 1fr;align-items:center;gap:.5rem;font-size:.85rem;display:grid}.review__trick-no{color:var(--muted);text-align:center;font-weight:800}.review__cards{gap:.25rem;display:flex}.review__cards figure{color:var(--muted);flex-direction:column;align-items:center;margin:0;font-size:.62rem;font-weight:700;display:flex}.review__cards figure.is-you figcaption{color:var(--team0)}.review__winner{line-height:1.3}.review__note{color:#8a5a00;background:#fff1d6;border-radius:99px;margin-left:.3rem;padding:0 .35rem;font-size:.72rem;font-weight:700;display:inline-block}.modal__score{justify-content:center;gap:.6rem;margin:1rem 0 1.25rem;font-size:1.5rem;font-weight:800;display:flex}.modal__score .team-0{color:var(--team0)}.modal__score .team-1{color:var(--team1)}@media (width<=480px){.play,.play__bar{gap:.4rem}.hand{padding-top:.5rem}.seat--south{padding:.1rem}.table{border-width:4px;grid-template-columns:66px minmax(0,1fr) 66px;padding:.4rem .2rem}.seat__label{font-size:.75rem}}.deal-in{animation:.35s backwards deal-in}.play-in{animation:.25s play-in}@keyframes deal-in{0%{opacity:0;transform:translateY(-24px)scale(.85)rotate(-6deg)}}@keyframes play-in{0%{opacity:0;scale:1.2}}@keyframes flip-in{0%{transform:rotateY(90deg)}}@keyframes pop{0%{opacity:0;scale:.9}}@keyframes fade{0%{opacity:0}}@keyframes fade-up{0%{opacity:0;transform:translateY(4px)}}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.bid-counter__hand{flex-wrap:wrap;gap:.3rem;display:flex}.bid-counter__count ul{margin:.75rem 0 .25rem;padding:0;list-style:none}.bid-counter__count li{border-bottom:1px dashed var(--line);justify-content:space-between;padding:.25rem 0;font-size:.95rem;display:flex}.bid-counter__total{margin:.5rem 0 0;font-size:1.05rem}.seat__cards{position:relative}.seat__count{min-width:1.4rem;color:var(--green);text-align:center;background:#fff;border-radius:99px;padding:.05rem .35rem;font-size:.72rem;font-weight:800;position:absolute;bottom:-.4rem;right:-.5rem;box-shadow:0 1px 3px #0000004d}.hand--split{flex-wrap:wrap;row-gap:.45rem}.hand__break{flex-basis:100%;height:0}.hand--split .hand__card+.hand__card{margin-left:min(8px, calc((100vw - 1.5rem - 3px - var(--cw) * var(--n)) / max(var(--n) - 1, 1)))}@media (width>=900px){.hand--split{flex-wrap:nowrap}.hand__break{display:none}.hand--split .hand__card:not(:first-child){margin-left:min(8px, calc((960px - var(--cw) * var(--n-all)) / max(var(--n-all) - 1, 1)))}}.bid-pad{grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem;width:min(100%,460px);display:grid}.bid-pad__btn{font-variant-numeric:tabular-nums;min-height:44px;padding:.3rem 0}.bid-pad__btn.is-nil{color:var(--red)}@media (width>=900px){.bid-pad{grid-template-columns:repeat(14,minmax(0,1fr));width:600px}}.scoreboard__meta{color:var(--muted);white-space:nowrap;font-size:.68rem}.hand-results{text-align:left;gap:.5rem;margin:.5rem 0;font-size:.92rem;line-height:1.45;display:grid}.hand-result{background:#f6f3ec;border-left:4px solid;border-radius:10px;padding:.6rem .75rem}.hand-result.team-0{border-color:var(--team0)}.hand-result.team-1{border-color:var(--team1)}.hand-result strong{display:block}.modal__bags{margin-top:-.6rem;font-size:.85rem}.review__details{margin-top:.9rem}.review__details summary{cursor:pointer;padding:.4rem 0;font-weight:700}@media (width<=380px){.scoreboard__target{display:none}.scoreboard__team{padding:.1rem .4rem}}.table--bridge.has-top{grid-template-rows:auto auto minmax(190px,1fr) auto;grid-template-areas:"top top top"".north.""west center east"".south."}.table--bridge.has-top--north{grid-template-rows:auto minmax(190px,1fr) auto;grid-template-areas:"top top top""west center east"".south."}@media (width<=640px){.table--bridge.has-top{grid-template-rows:auto auto minmax(150px,1fr) auto;padding:.4rem}.table--bridge.has-top--north{grid-template-rows:auto minmax(150px,1fr) auto}.table--bridge.has-top .seat{padding:.15rem}}@media (width>=640px){.table--bridge.has-top--north{grid-template-rows:auto minmax(calc(var(--cw-sm) * 2.8 + 1.6rem), 1fr) auto}}@media (width>=900px){.table--bridge.has-top--west,.table--bridge.has-top--east{grid-template-rows:auto minmax(calc(var(--cw-sm) * 2.8 + 1.6rem), 1fr) auto}.table--bridge.has-top--west{grid-template-columns:minmax(0,1.4fr) minmax(0,2fr) minmax(68px,1fr);grid-template-areas:"top north.""top center east""top south."}.table--bridge.has-top--east{grid-template-columns:minmax(68px,1fr) minmax(0,2fr) minmax(0,1.4fr);grid-template-areas:".north top""west center top"".south top"}.table--bridge.has-top--west .seat--west,.table--bridge.has-top--east .seat--east{display:none}.table--bridge.has-top--west .table__top,.table--bridge.has-top--east .table__top{align-self:center}}.table__top{background:#0000002e;border-radius:12px;grid-area:top;justify-self:center;width:min(100%,420px);padding:.3rem .5rem .4rem;transition:box-shadow .2s}.table__top.is-turn{background:#ffffff1f;box-shadow:0 0 0 2px #ffffff8c}.table__top.is-mine{box-shadow:0 0 0 3px #fde68a}.suit-rows{flex-direction:column;gap:.2rem;display:flex}.suit-rows__label{justify-content:space-between;gap:.5rem;font-size:.8rem;font-weight:700;display:flex}.table__top .suit-rows__label .muted{color:#ffffffbf}.suit-rows__row{flex-wrap:wrap;align-items:center;gap:.2rem;min-height:1.9rem;display:flex}.suit-rows__suit{text-align:center;width:1.4rem;font-size:1.25rem;line-height:1}.table__top .suit-rows__suit.suit-black{color:#fff}.table__top .suit-rows__suit.suit-red{color:#ffb4b4}.suit-rows__void{opacity:.6}.rank-chip{min-width:1.9rem;height:1.9rem;font:inherit;cursor:default;background:#fff;border:1px solid #d7d2c6;border-radius:6px;padding:0 .3rem;font-size:1rem;font-weight:800;line-height:1}.rank-chip:disabled{opacity:1}.rank-chip.suit-black{color:#1f2937}.rank-chip.suit-red{color:#c81e1e}.rank-chip:not(:disabled){cursor:pointer}.rank-chip.is-playable{border-color:var(--good,#16a34a);box-shadow:0 0 0 2px var(--good,#16a34a)}.rank-chip.is-dim{opacity:.45}@media (pointer:coarse){.table__top .rank-chip{min-width:2.35rem;height:2.35rem}.table__top .suit-rows__row{min-height:2.35rem}}.rank-chip.is-hint{border-color:#60a5fa;box-shadow:0 0 0 3px #60a5fa}@media (hover:hover){.rank-chip.is-playable:hover{transform:translateY(-2px)}}.auction-grid{border-collapse:collapse;table-layout:fixed;text-align:center;background:#00000040;border-radius:10px;width:min(100%,240px);font-size:.85rem;overflow:hidden}.auction-grid th{text-transform:uppercase;opacity:.8;padding:.25rem .4rem;font-size:.72rem}.auction-grid td{white-space:nowrap;padding:.2rem .15rem;font-weight:700}.auction-grid th{white-space:nowrap}.auction-grid td.is-turn{color:#fde68a}.auction-grid .suit-red{color:#ffb4b4}.auction-grid .suit-black{color:#fff}.review .auction-grid{background:var(--surface-2,#f3f0e8);color:var(--ink)}.review .auction-grid .suit-red{color:#c81e1e}.review .auction-grid .suit-black{color:var(--ink)}.bidding-box,.mini-chooser{flex-direction:column;gap:.4rem;width:100%;max-width:460px;display:flex}.bidding-box__levels,.bidding-box__strains,.bidding-box__other{gap:.3rem;display:grid}.bidding-box__levels{grid-template-columns:repeat(7,1fr)}.bidding-box__strains{grid-template-columns:repeat(5,1fr)}.bidding-box__other{grid-template-columns:repeat(auto-fit,minmax(90px,1fr))}.bidding-box .btn,.mini-chooser .btn{min-height:2.6rem;padding:.3rem;font-weight:800}.bidding-box__strain{font-size:1.1rem}.suit-call--red{color:#c81e1e}.suit-call--black{color:#1f2937}.bidding-box__strain.is-on{box-shadow:0 0 0 3px var(--green-2)}.bidding-box__strain.is-on.suit-call--red{color:#c81e1e}.bidding-box__strain.is-on.suit-call--black{color:#1f2937}.bidding-box__pass{background:#dcfce7}.mini-chooser__fit{gap:.1rem;margin-right:.5rem;font-weight:700;display:inline-flex}.review__hands{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem;margin-top:.4rem;display:grid}.review__hands .suit-rows{background:var(--surface-2,#f3f0e8);border-radius:8px;padding:.4rem}.review__hands .rank-chip{min-width:1.5rem;height:1.5rem;font-size:.85rem}.scoreboard--solo{flex-wrap:wrap}.scoreboard__player{border-radius:6px;flex-direction:column;align-items:center;min-width:2.8rem;padding:.1rem .35rem;display:flex}.scoreboard__player .scoreboard__score{font-size:1.25rem;line-height:1.1}.scoreboard__player.is-you{background:#e7f3ec}.seat.is-solo .seat__label strong{border-bottom:2px solid #fff9}.pass-bar{flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem .8rem;display:flex}.pass-received{margin:0;font-size:.85rem}.hearts-scores{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin:.5rem 0}.hearts-scores th,.hearts-scores td{text-align:right;border-bottom:1px solid #e7e2d6;padding:.3rem .5rem}.hearts-scores th:first-child{text-align:left}.hearts-scores thead th{color:var(--muted);text-transform:uppercase;font-size:.75rem}.hearts-scores tr.is-you{background:#f3faf6}.hearts-scores tr.is-winner th:after{content:" 🏆"}.online{max-width:760px}.online__card{flex-direction:column;align-items:flex-start;gap:.7rem;padding:1.1rem 1.2rem;display:flex}.online__card h1,.online__card h2,.online__card p{margin:0}.online__choices{gap:.9rem;display:grid}@media (width>=640px){.online__choices{grid-template-columns:1fr 1fr}}.online__me{align-items:center;gap:.3rem;display:flex}.online__hosted ul{margin:0;padding:0;list-style:none}.online__hosted li{align-items:center;gap:.5rem;display:flex}.online__note{margin-top:2rem;font-size:.85rem}.field{flex-direction:column;gap:.3rem;width:100%;font-weight:600;display:flex}.field input{font:inherit;border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:10px;padding:.55rem .7rem;font-size:1.05rem;font-weight:500}.field input:focus{outline:2px solid var(--green-2);outline-offset:1px}.room-bar{padding:.4rem max(1rem, env(safe-area-inset-left)) 0;flex-wrap:wrap;align-items:center;gap:.4rem .75rem;font-size:.9rem;display:flex}.room-bar .btn{margin-left:auto}.room-bar__alert{color:#9a5b00;background:#fff1d6;border-radius:99px;padding:.15rem .6rem;font-weight:600}.lobby__share{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.lobby__link{overflow-wrap:anywhere;min-width:0;color:var(--muted);flex:14rem;font-size:.85rem}.lobby__heading{margin:1.5rem 0 .5rem}.lobby__seats{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.lobby__seat{background:var(--surface);box-shadow:var(--shadow);border-left:4px solid var(--team0);border-radius:12px;flex-wrap:wrap;align-items:center;gap:.4rem .75rem;padding:.6rem .8rem;display:flex}.lobby__seat.team-1{border-left-color:var(--team1)}.lobby__spot{color:var(--muted);flex:0 0 8.5rem;font-size:.85rem;font-weight:600}.lobby__who{flex:1;align-items:center;gap:.4rem;min-width:0;display:flex}.lobby__move{font:inherit;border:1px solid var(--line);background:#fff;border-radius:8px;padding:.3rem;font-size:.9rem}.lobby__teams{font-size:.85rem}.lobby__start{flex-direction:column;align-items:flex-start;gap:.5rem;margin-top:1rem;display:flex}.lobby__start small{color:var(--muted)}.lobby__start p{margin:0}.settings__room{color:var(--muted);flex-basis:100%;margin:0}.modal__wait{color:var(--muted);margin:0;padding:.6rem 0;font-weight:600}.settings__seats{flex-direction:column;flex-basis:100%;gap:.35rem;display:flex}.settings__seat{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.chip--friends{color:#1e40af;background:#dbeafe}@media (width<=400px){.game-nav{gap:0}.game-nav a{padding:.45rem .38rem;font-size:.84rem}}@media (width<=350px){.app-header:has(.game-nav){padding:0 max(.5rem, env(safe-area-inset-left));gap:.4rem}.game-nav a{padding:.45rem .22rem;font-size:.78rem}}
