@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/fraunces-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/instrument-sans-latin-400-normal.woff2) format("woff2")}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/instrument-sans-latin-600-normal.woff2) format("woff2")}:root{--navy: #14263a;--navy-dark: #0e1b29;--navy-mid: #2b4763;--amber: #d99a4e;--amber-dark: #c4832f;--amber-ink: #8a5410;--bg: #f6f1e8;--paper: #fbf7f0;--card: #ffffff;--amber-tint: #fdf6ec;--ink: #14263a;--text: #22303f;--muted: #6a6459;--border: #e7ddcd;--radius: 14px;--maxw: 1080px;--font-sans: "Instrument Sans", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display: "Fraunces", Georgia, "Times New Roman", serif;color-scheme:light dark}:root[data-theme=light]{color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--navy: #e8ecf2;--navy-dark: #0c1015;--navy-mid: #aeb9c8;--amber: #e0a35a;--amber-dark: #cf9346;--amber-ink: #e6b573;--bg: #12161c;--paper: #171d26;--card: #1b212b;--text: #e7ebf0;--muted: #9aa4b1;--border: #2b333e;--amber-tint: #2d2717;--ink: #10161d;color-scheme:dark}}:root[data-theme=dark]{--navy: #e8ecf2;--navy-dark: #0c1015;--navy-mid: #aeb9c8;--amber: #e0a35a;--amber-dark: #cf9346;--amber-ink: #e6b573;--bg: #12161c;--paper: #171d26;--card: #1b212b;--text: #e7ebf0;--muted: #9aa4b1;--border: #2b333e;--amber-tint: #2d2717;--ink: #10161d;color-scheme:dark}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .footer{background:#0c1015}:root:not([data-theme=light]) .btn-outline:hover{background:var(--navy-mid);color:var(--navy-dark)}:root:not([data-theme=light]) .card{box-shadow:0 1px 2px #0000004d,0 10px 28px #00000059}}:root[data-theme=dark] .footer{background:#0c1015}:root[data-theme=dark] .btn-outline:hover{background:var(--navy-mid);color:var(--navy-dark)}:root[data-theme=dark] .card{box-shadow:0 1px 2px #0000004d,0 10px 28px #00000059}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);color:var(--text);background:var(--bg);line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--navy-mid);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}.container{max-width:var(--maxw);margin:0 auto;padding:0 20px}.section{padding:64px 0}.wrap,.tool,.calc{margin-inline:auto}h1,h2,h3{font-family:var(--font-display);color:var(--navy);line-height:1.12;margin:0 0 .5em;font-weight:600;letter-spacing:-.01em}h1{font-size:clamp(2.2rem,5.2vw,3.35rem);letter-spacing:-.02em}h2{font-size:clamp(1.6rem,3vw,2.3rem)}.lead{font-size:1.2rem;color:var(--muted);line-height:1.55;max-width:62ch}.muted{color:var(--muted)}.data-note{margin-top:18px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--paper);font-size:.78rem;line-height:1.5;color:var(--muted)}.data-note strong{color:var(--navy);font-weight:600}.data-note b{color:var(--navy-mid);font-weight:600}.kicker{display:inline-block;font-family:var(--font-sans);font-weight:600;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--amber-ink);margin-bottom:14px}.kicker:before{content:"— ";opacity:.6}.btn{display:inline-block;padding:12px 22px;border-radius:999px;font-weight:600;cursor:pointer;border:2px solid transparent;transition:all .15s;font-family:inherit;font-size:1rem}.btn-primary{background:var(--amber);color:var(--navy-dark)}.btn-primary:hover{background:var(--amber-dark);text-decoration:none}.btn-outline{background:transparent;border-color:var(--navy);color:var(--navy)}.btn-outline:hover{background:var(--navy);color:#fff;text-decoration:none}.btn:disabled{opacity:.6;cursor:progress}.tool-actions{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:16px}.tool-actions>*{margin-top:0;margin-bottom:0}.burger{margin-left:auto;display:none;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:0;border:1px solid var(--border);border-radius:12px;background:var(--card);cursor:pointer}.burger span{display:block;width:20px;height:2px;margin:0 auto;background:var(--navy);border-radius:2px;transition:transform .2s ease,opacity .2s ease}.burger[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}.burger[aria-expanded=true] span:nth-child(2){opacity:0}.burger[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.theme-toggle{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid var(--border);border-radius:12px;background:var(--card);cursor:pointer;font-size:1.1rem;line-height:1}.theme-toggle:hover{border-color:var(--amber)}.burger{margin-left:8px}.site-header .brand-text{min-width:0;overflow:hidden}.site-header .brand-name,.site-header .brand-tag{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.site-header .theme-toggle,.site-header .burger,.site-header .back{flex:0 0 auto}.msc-appbar{position:fixed;top:10px;right:10px;z-index:45;display:flex;gap:8px}.msc-appbar-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--border);border-radius:11px;background:var(--card);color:var(--text);cursor:pointer;font-size:1.05rem;line-height:1;box-shadow:0 4px 14px #14263a24;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.msc-appbar-btn:hover{border-color:var(--amber)}.msc-appbar-burger{display:flex;flex-direction:column;gap:4px}.msc-appbar-burger span{display:block;width:17px;height:2px;background:var(--navy);border-radius:2px}.msc-appbar-menu{position:absolute;top:48px;right:0;min-width:224px;padding:6px;background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:0 14px 40px #14263a38;display:flex;flex-direction:column;opacity:0;transform:translateY(-6px);transition:opacity .18s ease,transform .18s ease}.msc-appbar-menu[hidden]{display:none}.msc-appbar-menu.open{opacity:1;transform:translateY(0)}.msc-appbar-link{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;color:var(--text);text-decoration:none;font-size:.92rem;font-weight:600}.msc-appbar-link:hover{background:var(--paper)}.msc-appbar-link[aria-current=page]{color:var(--amber-ink);background:var(--amber-tint)}button.msc-appbar-link{width:100%;background:none;border:0;cursor:pointer;font-family:inherit}.msc-appbar-seglbl{margin:4px 6px;font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}.msc-appbar-seg{display:flex;gap:4px;padding:0 6px 6px}.msc-appbar-segbtn{flex:1;padding:8px 4px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--text);font:inherit;font-size:.72rem;font-weight:600;cursor:pointer;white-space:nowrap;text-align:center}.msc-appbar-segbtn:hover{border-color:var(--amber)}.msc-appbar-segbtn[aria-pressed=true]{background:var(--amber);color:var(--navy-dark);border-color:var(--amber-dark)}.msc-appbar-ico{width:22px;text-align:center;font-size:1rem}.nav-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#14263a6b;z-index:40;opacity:0;transition:opacity .2s ease}.nav-scrim.open{opacity:1}.nav-drawer{position:fixed;top:0;right:0;height:100%;width:min(86vw,340px);background:var(--card);border-left:1px solid var(--border);box-shadow:-12px 0 40px #14263a29;z-index:50;transform:translate(100%);transition:transform .24s ease;display:flex;flex-direction:column;padding:14px;overflow-y:auto}.nav-drawer.open{transform:translate(0)}.nav-drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.nav-title{font-weight:800;color:var(--navy);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}.nav-close{width:36px;height:36px;border:none;background:transparent;font-size:1.05rem;color:var(--muted);cursor:pointer;border-radius:10px}.nav-close:hover{background:#14263a0f}.nav-links{display:flex;flex-direction:column;gap:2px}.nav-link{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;text-decoration:none;color:var(--navy);font-weight:600;white-space:nowrap;overflow:hidden}.nav-link .nav-ico{flex:0 0 auto}.nav-link:hover{background:#14263a0d;text-decoration:none}.nav-ico{font-size:1.15rem;width:1.4em;text-align:center}.nav-sep{border:none;border-top:1px solid var(--border);margin:8px 4px}.nav-drawer.open .nav-link{animation:navLinkIn .32s both}.nav-drawer.open .nav-link:nth-child(1){animation-delay:.03s}.nav-drawer.open .nav-link:nth-child(2){animation-delay:.06s}.nav-drawer.open .nav-link:nth-child(3){animation-delay:.09s}.nav-drawer.open .nav-link:nth-child(4){animation-delay:.12s}.nav-drawer.open .nav-link:nth-child(5){animation-delay:.15s}.nav-drawer.open .nav-link:nth-child(6){animation-delay:.18s}.nav-drawer.open .nav-link:nth-child(n+7){animation-delay:.21s}@keyframes navLinkIn{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@media (prefers-reduced-motion: reduce){.nav-drawer.open .nav-link{animation:none}}.nav-search-form{margin-bottom:10px}.nav-search{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);font:inherit;font-size:.9rem}.nav-search:focus{outline:2px solid var(--amber);border-color:transparent}@media (max-width: 720px){.burger{display:flex}.site-header .back{display:none}}@media (min-width: 721px){.nav-drawer,.nav-scrim{display:none!important}}.to-top{position:fixed;right:16px;bottom:16px;z-index:30;width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--card);color:var(--navy);font-size:1.2rem;line-height:1;cursor:pointer;box-shadow:0 6px 20px #14263a2e;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .2s ease,transform .2s ease}.to-top.show{opacity:1;transform:translateY(0);pointer-events:auto}.app-share-btn{position:fixed;left:16px;bottom:16px;z-index:30;display:inline-flex;align-items:center;gap:6px;padding:9px 15px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--navy);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;box-shadow:0 6px 20px #14263a29;opacity:.9}.app-share-btn:hover{opacity:1;border-color:var(--amber)}.app-share-toast{position:fixed;left:16px;bottom:62px;z-index:31;padding:8px 14px;border-radius:10px;background:var(--ink);color:#fff;font-size:.82rem;opacity:0;transform:translateY(6px);transition:opacity .2s ease,transform .2s ease;pointer-events:none}.app-share-toast.show{opacity:1;transform:translateY(0)}:root[data-embed="1"] .app-share-btn,:root[data-embed="1"] .app-share-toast{display:none!important}.brand{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--navy);text-decoration:none}.brand img{width:40px;height:40px}.brand-text{display:flex;flex-direction:column;line-height:1.08}.brand-name{font-weight:700;font-size:1.05rem}.brand-tag{font-family:var(--font-sans);font-weight:500;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:26px;box-shadow:0 1px 2px #14263a0a,0 10px 28px #14263a0b;transition:transform .18s ease,box-shadow .18s ease}.field{margin-bottom:16px}.field label,.field>span{display:block;font-weight:600;margin-bottom:6px}.field input,.field textarea,.field select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-family:inherit;font-size:1rem;background:var(--card);color:var(--text)}.field input:focus{outline:2px solid var(--amber);border-color:transparent}.hero{position:relative;overflow:hidden;background:var(--paper);border-bottom:1px solid var(--border)}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(58% 78% at 88% -12%,rgba(217,154,78,.2),transparent 60%),radial-gradient(48% 68% at 6% 116%,rgba(20,38,58,.07),transparent 60%)}.hero .container{position:relative;z-index:1}.hero h1{color:var(--navy)}.hero .lead{color:var(--muted)}.footer{background:var(--navy);color:#cdd6e0;margin-top:40px}.footer a{color:#cdd6e0}.footer h4{color:#fff;margin:0 0 10px}.footer-bottom{border-top:1px solid rgba(255,255,255,.12)}.footer-bottom .container{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding:14px 20px;font-size:.8rem;color:#9fb0c0}.center{text-align:center}.mt{margin-top:22px}.app-about{background:var(--paper);border-top:1px solid var(--border);margin-top:32px}.app-about>summary{list-style:none;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;gap:8px;padding:15px 20px;font-family:var(--font-sans);font-weight:600;font-size:.95rem;color:var(--navy-mid)}.app-about>summary::-webkit-details-marker{display:none}.app-about>summary:hover{color:var(--navy);text-decoration:underline}.app-about>summary svg{flex:0 0 auto;opacity:.85}.app-about[open]>summary{color:var(--navy);border-bottom:1px solid var(--border)}.app-about-body{max-width:820px;padding:32px 20px 48px}.app-about h2{margin:0 0 .5rem}.app-about h3{margin:0 0 .35rem;font-size:1.05rem;color:var(--navy)}.about-lead{margin:0 0 1.75rem}.about-grid{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin-bottom:1.75rem}.about-grid p{margin:0}.about-steps,.about-rules{margin:.5rem 0 1.75rem;padding-left:1.25rem;line-height:1.7}.about-steps li{margin-bottom:.45rem}.about-editor{margin:0 0 1.25rem;font-size:.92rem}.about-links{margin:0}.ce-bloc{max-width:820px;margin:28px auto 0;padding:16px 20px;border:1px solid var(--border);border-left:4px solid var(--amber);border-radius:var(--radius);background:var(--amber-tint)}.ce-bloc p{margin:0;color:var(--text);line-height:1.55;font-size:.95rem}.ce-bloc a{color:var(--amber-ink);font-weight:600;text-decoration:none;white-space:nowrap}.ce-bloc a:hover{text-decoration:underline}.head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.head-logo{display:inline-flex;line-height:0;border-radius:8px}.head-logo:focus-visible{outline:2px solid var(--amber);outline-offset:2px}html[data-standalone] .retour,html[data-standalone] .about-links .to-apps,html[data-standalone] .about-links .sep-apps{display:none}:root[data-embed="1"] .retour,:root[data-embed="1"] .head,:root[data-embed="1"] .tool-head,:root[data-embed="1"] .version-line,:root[data-embed="1"] .tool-version,:root[data-embed="1"] .calc-version,:root[data-embed="1"] .app-about,:root[data-embed="1"] .ce-bloc,:root[data-embed="1"] .msc-appbar{display:none!important}:root[data-embed="1"] body{background:transparent}:root[data-embed="1"] .wrap,:root[data-embed="1"] .tool{margin-top:0}:root[data-embed="1"] main>h1{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:root[data-embed="1"] main>h1+p,:root[data-embed="1"] .intro{display:none!important}.embed-share{display:none}:root[data-embed="1"] .embed-share{display:inline-flex}:root[data-embed="1"] .embed-share.embed-shared{opacity:.7}:root[data-embed="1"] .wrap>.embed-share,:root[data-embed="1"] .tool>.embed-share{margin-top:.75rem}.skel{display:inline-block;border-radius:6px;vertical-align:middle;background:linear-gradient(90deg,var(--border) 25%,var(--paper) 37%,var(--border) 63%);background-size:400% 100%;animation:skelShimmer 1.4s ease infinite}@keyframes skelShimmer{0%{background-position:100% 0}to{background-position:0 0}}@media (prefers-reduced-motion: reduce){.skel{animation:none}}.lb-skel{pointer-events:none}.lb-skel .skel-rank{width:1.1em;height:1em}.lb-skel .skel-line{width:55%;height:.85em}.lb-skel .skel-val{width:3em;height:.85em}.lb{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--border)}.lb-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:.6rem}.lb-head h3{margin:0;font-size:1.05rem;color:var(--navy)}.lb-variants{display:flex;gap:6px;flex-wrap:wrap}.lb-vtab{font:inherit;font-size:.78rem;padding:4px 10px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--navy-mid);cursor:pointer}.lb-vtab.on{border-color:var(--amber);background:var(--amber-tint);color:var(--navy);font-weight:600}.lb-list{list-style:none;margin:0 0 .6rem;padding:0;display:flex;flex-direction:column;gap:2px}.lb-row{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:8px;background:var(--card);border:1px solid var(--border);font-size:.9rem}.lb-row.me{border-color:var(--amber);background:var(--amber-tint);font-weight:600}.lb-rank{min-width:1.6rem;text-align:center;font-family:var(--font-display);font-weight:600;color:var(--navy-mid);font-variant-numeric:tabular-nums}.lb-row:nth-child(1) .lb-rank{color:#b8860b}.lb-date{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-val{font-variant-numeric:tabular-nums;font-weight:600;color:var(--navy)}.lb-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:.4rem}.lb-ask{display:flex;gap:8px;margin-bottom:.5rem}.lb-ask input{flex:1;min-width:0}.lb-you{margin:0 0 .5rem;font-size:.85rem}.lb-msg{font-size:.88rem;margin:.2rem 0}.lb-note{font-size:.72rem;margin:.3rem 0 0}.linklike{border:none;background:none;color:var(--navy-mid);font:inherit;font-size:.85rem;cursor:pointer;text-decoration:underline;padding:0}:root[data-embed="1"] .lb{display:none!important}.qr-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;background:#14263a8c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.qr-modal{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:22px;max-width:340px;width:100%;text-align:center;box-shadow:0 20px 60px #14263a47}.qr-title{margin:0 0 2px;font-family:var(--font-display);font-weight:600;color:var(--navy);font-size:1.1rem}.qr-code{margin:0 0 12px;font-size:.9rem;color:var(--muted)}.qr-code strong{color:var(--navy);letter-spacing:.08em}.qr-imgbox{display:flex;align-items:center;justify-content:center;min-height:256px;margin:0 auto 12px;border-radius:12px;background:#fff;padding:12px;border:1px solid var(--border)}.qr-imgbox img{width:100%;max-width:256px;height:auto;display:block;image-rendering:pixelated}.qr-hint{margin:0 0 16px;font-size:.82rem;color:var(--muted);line-height:1.35}.join-code{margin:0 0 1rem;padding:10px 14px;border-radius:10px;background:var(--amber-tint);border:1px solid var(--amber);color:var(--navy-mid);font-size:.92rem}.join-code strong{color:var(--navy);letter-spacing:.08em}.retour.xplay{margin-left:.6rem;padding:2px 9px;border:1px solid currentColor;border-radius:999px;opacity:.85;text-decoration:none;white-space:nowrap}.retour.xplay:hover{opacity:1}@media (prefers-reduced-motion: no-preference){.hero:before{animation:mscHeroDrift 22s ease-in-out infinite alternate;will-change:transform}@keyframes mscHeroDrift{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(-2.5%,2%,0) scale(1.08)}}.hero .kicker{animation:mscFadeUp .7s cubic-bezier(.2,.7,.2,1) both}.hero h1{animation:mscFadeUp .7s cubic-bezier(.2,.7,.2,1) .07s both}.hero .lead,.hero .container>p{animation:mscFadeUp .7s cubic-bezier(.2,.7,.2,1) .14s both}@keyframes mscFadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.reveal{opacity:0;transform:translateY(20px)}.reveal.in{opacity:1;transform:none;transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.2,1)}a.app-card{transition:transform .18s cubic-bezier(.2,.7,.2,1),box-shadow .18s ease}a.app-card:hover{transform:translateY(-4px)}.rail-card{transition:transform .18s cubic-bezier(.2,.7,.2,1),box-shadow .18s ease}.col-card{transition:transform .2s cubic-bezier(.2,.7,.2,1),box-shadow .2s ease}.col-card:hover{box-shadow:0 1px 2px #14263a14,0 18px 40px #14263a29}.gtab{transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.gtab:hover{transform:translateY(-1px)}.pf-chip{transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.pf-chip:hover{transform:translateY(-1px)}}.gtabs{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 20px}.gtab{font:inherit;font-size:.85rem;font-weight:600;padding:7px 14px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--navy-mid);cursor:pointer}.gtab:hover{border-color:var(--amber)}.gtab.on{background:var(--amber);border-color:var(--amber-dark);color:var(--navy-dark)}.app-preview{position:fixed;z-index:60;width:300px;max-width:calc(100vw - 16px);background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:0 14px 44px #14263a3d;overflow:hidden;display:block;text-decoration:none;color:inherit;cursor:pointer}.app-preview:hover{text-decoration:none}.app-preview:hover .apv-cta{text-decoration:underline}.app-preview .apv-thumb{aspect-ratio:1200 / 630;background:var(--paper)}.app-preview .apv-thumb img{width:100%;height:100%;object-fit:cover;display:block}.app-preview .apv-body{padding:12px 14px 14px}.app-preview .apv-title{margin:0 0 4px;font-family:var(--font-display);font-weight:600;color:var(--navy);font-size:1.02rem}.app-preview .apv-obj{margin:0 0 10px;font-size:.85rem;color:var(--muted);line-height:1.45}.app-preview .apv-cta{font-size:.8rem;font-weight:600;color:var(--amber-ink)}@media (prefers-reduced-motion: no-preference){.app-preview{animation:apvIn .12s ease}@keyframes apvIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}}.msc-share{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}.msc-share__btn{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border-radius:999px;border:1.5px solid var(--border);background:var(--card, #fff);color:var(--navy);font:inherit;font-size:.82rem;font-weight:600;line-height:1.1;cursor:pointer;transition:border-color .12s,background .12s}.msc-share__btn:hover{border-color:var(--amber);background:#fdf6ec}.msc-reconnect{display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:8px 12px;border-radius:10px;background:#fbecea;border:1px solid #e6b3ab;color:#a5342a;font-size:.85rem;font-weight:600}.msc-reconnect__dot{width:9px;height:9px;border-radius:50%;background:#c0392b;animation:msc-reconnect-pulse 1s infinite}@keyframes msc-reconnect-pulse{0%,to{opacity:1}50%{opacity:.3}}.pbackup{margin:10px 0}.pb-open{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--border, #e2e0d8);border-radius:999px;background:var(--card, #fff);color:var(--navy, #14263a);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer}.pb-open:hover{border-color:var(--amber, #d69e2e)}.pb-panel{margin-top:10px;padding:12px;border:1px solid var(--border, #e2e0d8);border-radius:14px;background:var(--card, #fff);text-align:left}.pb-hint{margin:0 0 10px;font-size:.8rem;color:var(--muted, #5b6b7a);line-height:1.4}.pb-linkrow{display:flex;gap:6px}.pb-link{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--border, #e2e0d8);border-radius:10px;background:var(--bg, #faf9f6);color:var(--muted, #5b6b7a);font-size:.8rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.pb-copy{flex:0 0 auto;padding:8px 12px;border:1px solid var(--amber, #d69e2e);border-radius:10px;background:var(--amber, #d69e2e);color:#3a2b00;font:inherit;font-size:.82rem;font-weight:700;cursor:pointer}.pb-qr{display:block;margin:12px auto 2px;width:180px;height:180px;border-radius:12px;background:#fff}.pb-empty{margin:8px 0 0;font-size:.82rem;color:var(--muted, #5b6b7a)}.pbackup-restore{margin:12px 0;padding:14px 16px;border:1px solid var(--amber, #d69e2e);border-radius:14px;background:var(--card, var(--amber-tint));text-align:center}.pb-r-title{margin:0 0 4px;font-weight:800;color:var(--navy, #14263a)}.pb-r-sum{margin:0 0 12px;color:var(--muted, #5b6b7a);font-size:.9rem}.pb-r-actions{display:flex;gap:8px;justify-content:center}.pb-btn{padding:9px 18px;border:1px solid var(--border, #e2e0d8);border-radius:999px;background:var(--card, #fff);color:var(--navy, #14263a);font:inherit;font-weight:700;cursor:pointer}.pb-btn-primary{border-color:var(--amber, #d69e2e);background:var(--amber, #d69e2e);color:#3a2b00}.pb-r-ok{margin:6px 0 0;font-weight:700;color:#2e8b57}.pb-r-note{margin:10px 0 0;font-size:.76rem;color:var(--muted, #5b6b7a)}.notify-toggle{display:flex;align-items:center;gap:8px;width:100%;margin:10px 0;padding:9px 14px;border:1px solid var(--amber, #d99a4e);border-radius:12px;background:var(--amber-tint);color:var(--amber-ink, #8a5410);font:inherit;font-size:.85rem;font-weight:600;text-align:left;cursor:pointer}.notify-toggle:hover{background:#d99a4e2e}.celebration-canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:2147482000;pointer-events:none}.celebration-record{position:fixed;top:18px;left:50%;transform:translate(-50%,-160%);z-index:2147483000;padding:10px 18px;border-radius:999px;background:linear-gradient(135deg,#f4c65a,#d99a4e);color:#14263a;font-family:Instrument Sans,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-weight:800;font-size:.95rem;white-space:nowrap;box-shadow:0 10px 28px #14263a52;opacity:0;transition:transform .42s cubic-bezier(.2,1.2,.4,1),opacity .42s ease;pointer-events:none}.celebration-record.show{transform:translate(-50%);opacity:1}@media (prefers-reduced-motion: reduce){.celebration-record{transition:opacity .3s ease;transform:translate(-50%)}}.gfs:fullscreen{width:100vw;height:100vh;max-width:none;margin:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 100% at 30% 10%,#24405c,#14273c 55%,#0b1622);overflow:auto;padding:max(env(safe-area-inset-top,0px),14px) 14px max(env(safe-area-inset-bottom,0px),14px);box-sizing:border-box}.gfs:-webkit-full-screen{width:100vw;height:100vh;max-width:none;margin:0;display:flex;align-items:center;justify-content:center;background:#13273c;overflow:auto;box-sizing:border-box}.gfs:fullscreen>.board,.gfs:fullscreen>.grid,.gfs:fullscreen>.plateau,.gfs:fullscreen>*>.board,.gfs:fullscreen>*>.grid,.gfs:fullscreen>*>.plateau{max-width:min(96vw,94vh);max-height:94vh}.fb-toggle{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.fb-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid var(--border);border-radius:999px;background:var(--card);color:var(--muted);font:inherit;font-size:.8rem;font-weight:600;cursor:pointer}.fb-btn.on{border-color:var(--amber);color:var(--navy);background:var(--amber-tint)}.fb-btn:hover{border-color:var(--amber)}body{min-height:100vh;background:var(--bg);padding:1.5rem 1rem}.retour{display:inline-block;color:var(--muted);font-size:.85rem;margin-bottom:1rem}.retour:hover{color:var(--amber-dark)}.wrap{width:min(460px,100%);margin:4vh auto}.wrap h1{font-size:1.7rem;margin:.4rem 0 .2rem}.head{display:flex;align-items:center;gap:12px;margin-bottom:4px}.head img{width:40px;height:40px}.row{display:flex;gap:8px}.row input{flex:1}.btn-sm{padding:8px 12px;font-size:.85rem}.btn-full{width:100%;text-align:center}.api-err{color:#b03a3a;font-size:.88rem}.version-line{margin-top:14px;padding-top:12px;border-top:1px solid var(--border);font-size:.72rem;color:var(--muted);text-align:center}.modes{display:flex;gap:10px}.modebtn{flex:1;display:flex;flex-direction:column;gap:2px;padding:12px;border-radius:12px;border:1px solid var(--border);background:var(--card);color:var(--navy);cursor:pointer;font:inherit;text-align:left}.modebtn strong{font-size:.98rem}.modebtn span{font-size:.78rem;color:var(--muted)}.modebtn.on{border-color:var(--amber);background:var(--amber-tint)}.modehint{font-size:.76rem;margin:6px 0 0}.session{width:min(600px,100%);margin:0 auto}.bfs:fullscreen{width:100vw;height:100vh;max-width:none;margin:0;overflow:auto;background:var(--bg);padding:10px clamp(10px,3vw,32px) 22px;box-sizing:border-box}.bfs:fullscreen .wrap,.bfs:fullscreen.wrap{margin:0 auto}.fs-float{position:fixed;top:10px;right:10px;z-index:60;width:40px;height:40px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:10px;border:1px solid var(--border);background:var(--card);color:var(--navy);font-size:1.05rem;line-height:1;cursor:pointer;box-shadow:0 2px 8px #0000001f}.fs-float:hover{background:var(--bg)}.s-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--card);border:1px solid var(--border);border-radius:14px;margin-bottom:12px}.s-brand img{width:34px;height:34px;display:block}.s-room{flex:1;font-size:.9rem;color:var(--muted);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.s-room strong{color:var(--navy);letter-spacing:.08em}.s-mode{font-size:.72rem;padding:1px 8px;border-radius:999px;background:var(--amber-tint);border:1px solid var(--amber);color:var(--navy-mid)}.linkbtn{border:none;background:none;color:var(--navy-mid);font:inherit;font-size:.82rem;cursor:pointer;text-decoration:underline;padding:0}.scoreboard{display:flex;align-items:stretch;gap:8px;margin-bottom:12px}.scoreboard .team{flex:1;display:grid;grid-template-columns:1fr auto;align-items:center;gap:2px 8px;padding:8px 12px;border-radius:12px;border:1px solid var(--border);background:var(--card)}.scoreboard .team.mine{border-color:var(--amber);background:var(--amber-tint)}.team-name{font-family:var(--font-display);font-weight:600;color:var(--navy)}.team-players{grid-column:1;font-size:.72rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-score{grid-column:2;grid-row:1 / span 2;font-family:var(--font-display);font-weight:600;font-size:1.6rem;color:var(--navy);font-variant-numeric:tabular-nums}.scoreboard .vs{align-self:center;font-size:.8rem;color:var(--muted)}.table{position:relative;display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:auto auto auto;gap:6px;background:#1f3a2b;background-image:radial-gradient(circle at 50% 40%,#285139,#17301f);border-radius:18px;padding:14px;min-height:260px;margin-bottom:12px;color:#eef}.seat{display:flex;flex-direction:column;align-items:center;gap:4px}.seat-N{grid-column:2;grid-row:1}.seat-W{grid-column:1;grid-row:2}.seat-E{grid-column:3;grid-row:2}.seat-S{grid-column:2;grid-row:3}.table-center{grid-column:2;grid-row:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.seat-tag{font-size:.72rem;color:#dfebe2;display:flex;align-items:center;gap:4px;text-align:center}.seat.active .seat-tag{color:#ffe6a8;font-weight:700}.seat.active{filter:drop-shadow(0 0 6px rgba(255,200,90,.6))}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot.t0{background:#e8b04b}.dot.t1{background:#6fb3ff}.tk{font-size:.62rem;padding:0 5px;border-radius:999px;background:#e8b04b;color:#14263a;font-weight:700}.dl{font-size:.62rem;padding:0 5px;border-radius:999px;background:#fff3}.seat-card{min-height:62px;display:flex;align-items:center}.trump{font-weight:700;font-size:1rem;background:#ffffffeb;padding:2px 10px;border-radius:999px}.trump.red{color:#c62828}.trump.black{color:#14263a}.contract{font-size:.78rem;background:#00000059;padding:2px 8px;border-radius:999px}.lasthint{color:#cde;font-size:.7rem}.pcard{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:44px;height:60px;border-radius:8px;background:#fbfbf7;border:1px solid #d6dae0;box-shadow:0 2px 4px #0000002e;font-family:var(--font-display);line-height:1;padding:0;cursor:default}.pcard.sm{width:34px;height:47px}.pcard .c-rank{font-size:1.05rem;font-weight:600}.pcard .c-suit{font-size:1.15rem}.pcard.red{color:#c62828}.pcard.black{color:#14263a}.pcard.faded{opacity:.55}button.pcard{cursor:pointer;transition:transform .08s}button.pcard:not(:disabled):hover{transform:translateY(-6px)}button.pcard:disabled{cursor:default}button.pcard.dim{opacity:.42}.hand{display:flex;flex-wrap:nowrap;gap:6px;justify-content:center;padding:8px 0}.hand .pcard{flex:1 1 0;min-width:0;max-width:48px;width:auto;height:auto;aspect-ratio:48 / 66}.turn-line{text-align:center;margin:4px 0 0;font-size:.85rem}.bidbox{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:12px;margin-bottom:12px}.turned{display:flex;align-items:center;gap:10px;justify-content:center;margin-bottom:10px}.turned .muted{font-size:.8rem}.bid-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.bid-actions.col{flex-direction:column;align-items:center}.val-row,.suit-row{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-bottom:8px}.valbtn{min-width:44px;padding:6px 8px;border-radius:8px;border:1px solid var(--border);background:var(--card);color:var(--navy);font:inherit;font-weight:600;cursor:pointer}.valbtn.on{border-color:var(--amber);background:var(--amber-tint)}.valbtn:disabled{opacity:.35;cursor:default}.suitbtn{width:46px;height:40px;font-size:1.4rem;border-radius:8px;border:1px solid var(--border);background:var(--card);cursor:pointer}.suitbtn.red{color:#c62828}.suitbtn.black{color:#14263a}.suitbtn.on{border-color:var(--amber);background:var(--amber-tint)}.banner{text-align:center;padding:8px 12px;border-radius:10px;background:#5aa0c41f;color:var(--navy-mid);margin:8px 0;font-size:.92rem}.banner.wait{background:var(--amber-tint)}.banner.you{background:#2e8b7429;color:#2e8b74}.solo-suggest{display:flex;flex-direction:column;gap:6px;margin-top:4px}.seats-wait{list-style:none;margin:10px 0;padding:0;display:flex;flex-direction:column;gap:4px}.seats-wait li{padding:8px 12px;border-radius:10px;background:var(--card);border:1px solid var(--border);font-size:.88rem;color:var(--muted)}.seats-wait li.on{color:var(--navy);border-color:var(--amber)}.mene-result{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;text-align:center}.mene-result h2{margin:0 0 8px;font-size:1.3rem}.mr-line{margin:4px 0}.mr-verdict{font-weight:600;margin:6px 0 12px}.mr-verdict.ok{color:#1c6b3f}.mr-verdict.ko{color:#b3261e}.mr-scores{display:flex;gap:10px;justify-content:center;margin-bottom:14px}.mr-scores>div{flex:1;max-width:180px;display:flex;flex-direction:column;padding:10px;border-radius:12px;border:1px solid var(--border)}.mr-scores>div.mine{border-color:var(--amber);background:var(--amber-tint)}.mr-scores span{font-size:.78rem;color:var(--muted)}.mr-scores b{font-size:1.4rem;font-family:var(--font-display);color:var(--navy)}.mr-scores small{font-size:.8rem;color:var(--muted)}@media (max-width: 480px){body{padding:.55rem .6rem}.s-bar{padding:6px 10px;gap:8px;margin-bottom:8px;border-radius:12px}.s-brand img{width:26px;height:26px}.s-room{font-size:.8rem;gap:6px 8px}.snd,.s-bar .btn-sm{padding:6px 9px;font-size:.8rem}.scoreboard{gap:6px;margin-bottom:8px}.scoreboard .team{padding:4px 10px;border-radius:10px;gap:0 8px}.team-score{font-size:1.2rem}.team-players{font-size:.66rem}.table{min-height:0;padding:8px;margin-bottom:8px;border-radius:14px;gap:3px}.seat-tag{font-size:.68rem}.seat-card{min-height:50px}.pcard{width:36px;height:50px}.pcard .c-rank{font-size:.92rem}.pcard .c-suit{font-size:1rem}.table-center .trump{font-size:.86rem;padding:1px 8px}.hand{gap:4px;padding:4px 0}.hand .pcard{max-width:44px;margin-bottom:13px}.turn-line{font-size:.8rem;margin-top:2px}.bidbox{padding:10px;margin-bottom:8px}.turned{margin-bottom:8px}.val-row,.suit-row{gap:5px;margin-bottom:6px}.valbtn{min-width:38px;padding:5px 7px}.suitbtn{width:42px;height:36px;font-size:1.25rem}}@media (max-width: 380px){.table{padding:7px}.pcard{width:34px;height:47px}.hand .pcard{max-width:40px}.seat-card{min-height:47px}}.lobby{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.lobby-seat{background:var(--card);border:1.5px solid var(--border);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.lobby-seat.mine{border-color:var(--amber);background:var(--amber-tint)}.lobby-seat .ls-head{font-size:.72rem;color:var(--muted);display:flex;align-items:center;gap:6px}.lobby-seat .ls-head em{font-style:normal;opacity:.8}.lobby-seat .dot{width:9px;height:9px;border-radius:3px;display:inline-block}.lobby-seat .dot.t0{background:var(--navy)}.lobby-seat .dot.t1{background:#b06a3a}.ls-name{font-weight:700;color:var(--navy)}.ls-empty{color:var(--muted);font-style:italic}.ls-actions{display:flex;gap:6px;flex-wrap:wrap}.ls-actions .btn-sm{padding:5px 9px;font-size:.78rem}.seat{position:relative}.bubble{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:6px;background:var(--card);color:var(--navy);border:1.5px solid var(--navy);border-radius:12px;padding:4px 10px;font-size:.8rem;font-weight:700;white-space:nowrap;z-index:20;box-shadow:0 2px 7px #00000040;animation:bpop .25s ease}.bubble:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#fff;filter:drop-shadow(0 1px 0 var(--navy))}.bubble .bsuit-red{color:#c62828}@keyframes bpop{0%{opacity:0;transform:translate(-50%) translateY(5px) scale(.9)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.seat.active .seat-tag{animation:turnpulse 1.5s ease-in-out infinite;border-radius:999px}@keyframes turnpulse{0%,to{box-shadow:0 0 #d99a4e00}50%{box-shadow:0 0 0 4px #d99a4e66}}.seat-card .pcard{animation:cardin .25s ease}.seat.winner .seat-tag{color:#ffe6a8;font-weight:700}.pcard.trickwin{box-shadow:0 0 0 2px #f4c65a,0 0 12px 2px #f4c65aa6;border-radius:8px;animation:trickpop .3s ease}@keyframes trickpop{0%{transform:scale(1)}50%{transform:scale(1.12)}to{transform:scale(1.06)}}.trickwon{color:#f4c65a;font-size:.8rem;font-weight:700}.recap-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;background:#0a1622ad;animation:rfade .2s ease}.recap-card{width:min(360px,100%);background:var(--card);border-radius:18px;padding:22px 20px;text-align:center;box-shadow:0 12px 40px #0006;animation:rpop .28s ease}.recap-kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--amber-dark);font-weight:700}.recap-suit{font-size:3.4rem;line-height:1;margin:8px 0 4px}.recap-suit.red{color:#c0342e}.recap-suit.black{color:#17293c}.recap-line{font-family:var(--font-display);font-size:1.25rem;color:var(--navy)}.recap-line strong{text-transform:capitalize}.recap-contract{margin-top:6px;color:var(--navy);font-size:.95rem}.recap-teams{margin-top:12px;font-weight:700;color:var(--navy)}.recap-lead{margin-top:4px;font-size:.85rem}.recap-card .btn{margin-top:16px}.hand .pcard.atout{box-shadow:inset 0 -4px 0 var(--amber),0 2px 4px #0000002e}.hand .pcard.atout:after{content:"atout";position:absolute;bottom:-14px;left:50%;transform:translate(-50%);font-size:.52rem;letter-spacing:.04em;color:var(--amber-dark);font-weight:700}.hand .pcard{position:relative;margin-bottom:12px}.snd{line-height:1;padding-left:10px;padding-right:10px}.hand .pcard{animation:deal-in .36s cubic-bezier(.2,.7,.3,1) backwards}.hand .pcard:nth-child(1){animation-delay:.02s}.hand .pcard:nth-child(2){animation-delay:.06s}.hand .pcard:nth-child(3){animation-delay:.1s}.hand .pcard:nth-child(4){animation-delay:.14s}.hand .pcard:nth-child(5){animation-delay:.18s}.hand .pcard:nth-child(6){animation-delay:.22s}.hand .pcard:nth-child(7){animation-delay:.26s}.hand .pcard:nth-child(8){animation-delay:.3s}@media (prefers-reduced-motion: reduce){.hand .pcard{animation:none}}.plis{margin:4px 0 12px}.plis-toggle{width:100%;text-align:center}.plis-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.pli-row{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--card);border:1px solid var(--border);border-radius:10px}.pli-no{font-family:var(--font-display);font-weight:700;color:var(--muted);min-width:1.4em;text-align:center}.pli-cards{display:flex;gap:3px;flex:1;flex-wrap:wrap}.pli-cards .pcard.pwin{box-shadow:0 0 0 2px #f4c65a,0 1px 3px #0000002e}.pli-win{font-size:.78rem;color:var(--navy-mid);white-space:nowrap}.mr-details{list-style:none;margin:6px auto 14px;padding:0;display:inline-flex;flex-direction:column;gap:4px;font-size:.86rem;color:var(--navy-mid);text-align:left}.mr-details strong{color:var(--navy)}.mr-details b.ok{color:#1c6b3f}.mr-details b.ko{color:#b3261e}.mode-choice{display:flex;flex-direction:column;gap:10px;margin-top:16px}.xplay{margin-left:12px}.solo .topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:8px;flex-wrap:wrap}.solo .titles h1{font-size:2rem;margin:0;line-height:1}.solo .titles p{margin:4px 0 0;font-size:.9rem}.solo .scores{display:flex;gap:8px}.solo .score-box{display:flex;flex-direction:column;align-items:center;min-width:66px;padding:7px 12px;background:var(--ink);color:#fff;border-radius:12px}.solo .score-box.eux{background:#5b3a2e}.solo .score-lbl{font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:#cdd7e2}.solo .score-box.eux .score-lbl{color:#e5cdbf}.solo .score-val{font-family:var(--font-display);font-size:1.4rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.1}.solo .statusline{text-align:center;font-size:.85rem;color:var(--muted);margin:6px 0 10px;min-height:1.2em}.bidsummary{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:0 0 10px}.bidcell{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;border-radius:10px;background:var(--card);border:1px solid var(--border);min-width:0}.bidcell.turn{border-color:var(--amber);background:var(--amber-tint);box-shadow:0 0 0 2px var(--amber-tint)}.bidwho{font-size:.68rem;font-weight:700;letter-spacing:.03em;color:var(--navy-mid);text-transform:uppercase;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bidwhat{font-size:.9rem;font-weight:700;color:var(--navy);line-height:1.1;text-align:center}.bidcell:not(.said) .bidwhat{color:var(--muted);font-weight:500}.bidwhat .bsuit-red,.solo .statusline b.red,.solo .pcard.red i,.solo .hcard.red i,.solo b.red{color:#c0342e}.solo .statusline b.blk,.solo b.blk{color:var(--navy)}.solo .table{position:relative;display:grid;grid-template-columns:1fr 1.6fr 1fr;grid-template-rows:auto 1fr auto;gap:6px;background:radial-gradient(circle at 50% 45%,#2c6444,#17381f);border:1px solid var(--border);border-radius:18px;padding:12px;min-height:260px;color:#e8f2ea}.solo .seat{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;justify-content:center}.solo .seat.active .pname{color:#ffe6a8;font-weight:700}.solo .seat.active{filter:drop-shadow(0 0 5px rgba(255,200,90,.55))}.solo .bubble{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:4px;z-index:5;background:var(--card);color:var(--navy);border:1.5px solid var(--navy);border-radius:12px;padding:3px 9px;font-size:.72rem;font-weight:700;white-space:nowrap;box-shadow:0 2px 5px #00000040;animation:bpop .22s ease}.solo .bubble:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#fff}.solo .bubble .bsuit-red{color:#c62828}@keyframes bpop{0%{opacity:0;transform:translate(-50%) translateY(4px) scale(.9)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.solo .seat.top{grid-column:2;grid-row:1}.solo .seat.left{grid-column:1;grid-row:2}.solo .seat.right{grid-column:3;grid-row:2}.solo .seat.bottom{grid-column:2;grid-row:3}.solo .felt{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:center}.solo .pname{font-size:.72rem;letter-spacing:.04em;opacity:.9}.solo .pname em{opacity:.7;font-style:normal}.solo .backs{min-height:26px;display:flex;align-items:center}.solo .cardback{display:inline-flex;align-items:center;justify-content:center;width:30px;height:42px;border-radius:6px;background:repeating-linear-gradient(45deg,#29506e,#29506e 4px,#1d3b52 4px,#1d3b52 8px);color:#cfe0ee;font-size:.7rem;font-weight:700;border:1px solid #14273a}.solo .tcard{min-height:46px;display:flex;align-items:center;justify-content:center}.solo .turned{transform:rotate(-6deg)}.solo .pcard{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;background:#fbfbf7;border-radius:7px;width:40px;height:56px;border:1px solid #d8cfbf;box-shadow:0 1px 3px #00000040;line-height:1}.solo .pcard.sm{width:34px;height:48px}.solo .pcard b{font-family:var(--font-display);font-size:1rem;font-weight:700}.solo .pcard i{font-style:normal;font-size:1rem}.solo .pcard.red{color:#c0342e}.solo .pcard.blk{color:#17293c}.solo .tcard .pcard{animation:cardin .25s ease}@keyframes cardin{0%{opacity:0;transform:translateY(-8px) scale(.85)}to{opacity:1;transform:none}}.solo .pcard.winner{box-shadow:0 0 0 2px #f4c65a,0 0 12px 2px #f4c65aa6;animation:trickpop .3s ease}@keyframes trickpop{0%{transform:scale(1)}50%{transform:scale(1.14)}to{transform:scale(1.06)}}.solo .trickwon{color:#f4c65a;font-size:.8rem;font-weight:700;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.4)}.solo .bidbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;margin:12px 0 4px}.solo .bidbar .bidbar-lbl{width:100%;text-align:center;font-size:.82rem;color:var(--muted);margin-bottom:2px}.solo .suitbtn{font-weight:700}.solo .suitbtn.red{color:#c0342e}.solo .home{display:flex;flex-direction:column;gap:12px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;margin-top:14px}.solo .home-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:700}.solo .modes{display:flex;gap:10px}.modes-3{flex-wrap:wrap}.modes-3 .modebtn{flex:1 1 30%;min-width:98px}.modes-3 .modebtn span{text-align:center;line-height:1.2}.solo .calc-block{margin-top:12px;display:flex;flex-direction:column;gap:6px}.calc-inline{margin-top:10px}.calc-inline>label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:4px}.modebtn.sm{padding:8px}.modebtn.sm strong{font-size:.9rem}.modebtn.sm span{font-size:.7rem}.solo .modebtn{flex:1;display:flex;flex-direction:column;gap:2px;align-items:center;padding:12px 8px;border-radius:12px;border:1.5px solid var(--border);background:var(--card);color:var(--navy);cursor:pointer;font:inherit}.solo .modebtn strong{font-size:.98rem}.solo .modebtn span{font-size:.78rem;color:var(--muted)}.solo .modebtn.on{border-color:var(--amber);background:var(--amber-tint)}.solo .bidbox{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:12px;margin:12px 0 4px}.solo .val-row,.solo .suit-row{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-bottom:8px}.solo .valbtn{min-width:44px;padding:6px 8px;border-radius:8px;border:1px solid var(--border);background:var(--card);color:var(--navy);font:inherit;font-weight:600;cursor:pointer}.solo .valbtn.on{border-color:var(--amber);background:var(--amber-tint)}.solo .valbtn:disabled{opacity:.35;cursor:default}.solo .suit-row .suitbtn{width:46px;height:40px;font-size:1.4rem;border-radius:8px;border:1px solid var(--border);background:var(--card);cursor:pointer}.solo .suit-row .suitbtn.red{color:#c0342e}.solo .suit-row .suitbtn.black{color:#17293c}.solo .suit-row .suitbtn.on{border-color:var(--amber);background:var(--amber-tint)}.solo .bid-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.solo .banner{text-align:center;padding:8px 12px;border-radius:10px;background:#eef1f5;color:var(--navy);margin:0 0 10px;font-size:.9rem}.solo .banner.you{background:#eafaf0;color:#1c6b3f}.solo .myhand{display:flex;flex-wrap:nowrap;gap:6px;justify-content:center;margin:14px 0 4px}.solo .myhand .hcard{flex:1 1 0;min-width:0;max-width:46px;width:auto;height:auto;aspect-ratio:46 / 64}.solo .hcard{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;background:var(--card);border:1.5px solid #d8cfbf;border-radius:9px;width:46px;height:64px;cursor:default;line-height:1;font:inherit;transition:transform .08s,box-shadow .12s,opacity .12s}.solo .hcard b{font-family:var(--font-display);font-size:1.15rem;font-weight:700}.solo .hcard i{font-style:normal;font-size:1.15rem}.solo .hcard.red{color:#c0342e}.solo .hcard.blk{color:#17293c}.solo .hcard.playable{cursor:pointer;border-color:var(--amber);box-shadow:0 2px 8px #d99a4e66}.solo .hcard.playable:hover{transform:translateY(-6px)}.solo .hcard.dim{opacity:.42}.solo .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#14263a8c;display:flex;align-items:center;justify-content:center;padding:16px}.solo .modalcard{background:var(--card);width:min(420px,100%);border-radius:18px;padding:20px}.solo .modalcard h2{margin:0 0 10px;font-size:1.3rem}.solo .res{font-size:.9rem;font-weight:600;margin:0 0 12px}.solo .res.ok{color:#2e6e67}.solo .res.ko{color:#b03a3a}.solo .resrow{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:6px 0;border-top:1px solid var(--border);font-size:.9rem}.solo .resrow b{font-family:var(--font-display)}.solo .controls{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.solo .hint{font-size:.78rem;margin:8px 0 0}.solo .small{font-size:.82rem}@media (max-width: 480px){.solo .topbar{margin-bottom:6px}.solo .titles h1{font-size:1.45rem}.solo .titles p{font-size:.8rem;margin-top:2px}.solo .score-box{min-width:54px;padding:4px 10px}.solo .score-val{font-size:1.2rem}.solo .statusline{font-size:.8rem;margin:4px 0 6px;min-height:1em}.solo .table{min-height:0;padding:8px;gap:4px}.solo .pcard{width:34px;height:48px}.solo .pcard b,.solo .pcard i{font-size:.85rem}.solo .pcard.sm{width:30px;height:42px}.solo .tcard{min-height:42px}.solo .backs{min-height:20px}.solo .cardback{width:24px;height:34px}.solo .pname{font-size:.68rem}.solo .myhand{gap:5px;margin:8px 0 16px}.solo .hcard{width:42px;height:58px}.solo .hcard b,.solo .hcard i{font-size:1.05rem}.solo .bidbar{margin:8px 0 4px}.solo .bidbox{padding:10px;margin:8px 0 4px}.solo .val-row,.solo .suit-row{gap:5px;margin-bottom:6px}.solo .valbtn{min-width:38px;padding:5px 7px}.solo .suit-row .suitbtn{width:42px;height:36px;font-size:1.25rem}.solo .banner{padding:6px 10px;margin-bottom:8px}}@media (max-width: 380px){.solo .table{padding:7px}.solo .pcard{width:32px;height:45px}.solo .hcard{width:39px;height:54px}.solo .tcard{min-height:40px}}.solo .recap-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;background:#0a1622a8;animation:rfade .2s ease}@keyframes rfade{0%{opacity:0}to{opacity:1}}.solo .recap-card{width:min(340px,100%);background:var(--card);border-radius:18px;padding:22px 20px;text-align:center;box-shadow:0 12px 40px #0006;animation:rpop .28s ease}@keyframes rpop{0%{opacity:0;transform:translateY(10px) scale(.94)}to{opacity:1;transform:none}}.solo .recap-kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--amber-dark);font-weight:700}.solo .recap-suit{font-size:3.4rem;line-height:1;margin:8px 0 4px}.solo .recap-suit.red{color:#c0342e}.solo .recap-suit.blk{color:#17293c}.solo .recap-line{font-family:var(--font-display);font-size:1.25rem;color:var(--navy)}.solo .recap-line strong{text-transform:capitalize}.solo .recap-teams{margin-top:12px;font-weight:700;color:var(--navy)}.solo .recap-lead{margin-top:4px;font-size:.85rem}.solo .recap-card .btn{margin-top:16px}.solo .myhand{margin-bottom:20px}.solo .hcard.atout{box-shadow:inset 0 -4px 0 var(--amber)}.solo .hcard.atout.playable{box-shadow:inset 0 -4px 0 var(--amber),0 2px 8px #d99a4e66}.solo .hcard.atout:after{content:"atout";position:absolute;bottom:-14px;left:50%;transform:translate(-50%);font-size:.5rem;letter-spacing:.03em;font-weight:700;color:var(--amber-dark)}.solo .hcard{position:relative}.solo .snd{line-height:1}@keyframes deal-in{0%{opacity:0;transform:translateY(-16px) scale(.8)}to{opacity:1;transform:none}}.solo .myhand .hcard{animation:deal-in .36s cubic-bezier(.2,.7,.3,1) backwards}.solo .myhand .hcard:nth-child(1){animation-delay:.02s}.solo .myhand .hcard:nth-child(2){animation-delay:.06s}.solo .myhand .hcard:nth-child(3){animation-delay:.1s}.solo .myhand .hcard:nth-child(4){animation-delay:.14s}.solo .myhand .hcard:nth-child(5){animation-delay:.18s}.solo .myhand .hcard:nth-child(6){animation-delay:.22s}.solo .myhand .hcard:nth-child(7){animation-delay:.26s}.solo .myhand .hcard:nth-child(8){animation-delay:.3s}@media (prefers-reduced-motion: reduce){.solo .myhand .hcard{animation:none}}.solo .plis{margin-top:14px}.solo .plis-toggle{width:100%;text-align:center}.solo .plis-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.solo .pli-row{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--card);border:1px solid var(--border);border-radius:10px}.solo .pli-no{font-family:var(--font-display);font-weight:700;color:var(--muted);min-width:1.4em;text-align:center}.solo .pli-cards{display:flex;gap:3px;flex:1;flex-wrap:wrap}.solo .pli-cell{display:inline-flex;border-radius:7px}.solo .pli-cell.win{box-shadow:0 0 0 2px #f4c65a}.solo .pli-win{font-size:.78rem;color:var(--navy);white-space:nowrap}.solo .res-details{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:4px;font-size:.86rem;color:var(--muted)}.solo .res-details b{color:var(--navy)}.suitbtn.special,.solo .suit-row .suitbtn.special{width:auto;padding:0 12px;font-size:.9rem;font-weight:700}.special-row{margin-top:-2px}
