:root{color-scheme:dark;--surface-page: #0d1020;--surface-page-soft: #15182c;--surface-table: #153a3b;--surface-table-deep: #0b292c;--surface-panel: rgba(27, 31, 53, .86);--surface-panel-solid: #1b1f35;--surface-raised: #252a45;--surface-input: rgba(7, 10, 22, .48);--border-soft: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .18);--text-primary: #f8f5eb;--text-muted: #a9acc1;--text-dark: #171827;--accent-primary: #e7b968;--accent-primary-bright: #f5d28e;--accent-danger: #f17878;--accent-success: #67d6a5;--role-attacker: #ff686f;--role-defender: #73b9ff;--focus-ring: #f8d58e;--shadow-card-rest: 0 8px 22px rgba(0, 0, 0, .28);--shadow-card-lifted: 0 18px 30px rgba(0, 0, 0, .44), 0 0 0 2px var(--accent-primary);--shadow-panel: 0 24px 70px rgba(0, 0, 0, .32);--radius-panel: 22px;--radius-control: 12px;--duration-fast: .12s;--duration-standard: .22s;--duration-card: .3s;--ease-standard: cubic-bezier(.22, 1, .36, 1);--header-height: 70px}*{box-sizing:border-box}html{min-width:320px;background:var(--surface-page);scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--text-primary);background:radial-gradient(circle at 75% 5%,rgba(69,75,132,.2),transparent 34rem),var(--surface-page);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button,a{color:inherit}:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}::selection{background:#e7b96859}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:-.035em}.app{min-height:100vh;display:flex;flex-direction:column}.skip-link{position:fixed;z-index:1000;left:1rem;top:-5rem;padding:.75rem 1rem;background:var(--text-primary);color:var(--text-dark);border-radius:8px}.skip-link:focus{top:1rem}.site-header{height:var(--header-height);padding:0 clamp(1.1rem,4vw,4.5rem);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-soft);background:#0d1020c2;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);position:relative;z-index:30}.brand{display:inline-flex;align-items:center;gap:.7rem;text-decoration:none;font-weight:750;letter-spacing:-.03em}.brand__mark{width:31px;height:38px;display:grid;place-items:center;color:var(--text-dark);background:linear-gradient(145deg,#ffe6ae,var(--accent-primary));border-radius:7px;transform:rotate(-4deg);box-shadow:4px 5px #e7b9682e;font-family:Georgia,serif}.site-header nav a{color:var(--text-muted);text-decoration:none;font-size:.9rem}.site-header nav a:hover,.site-header nav a.active{color:var(--text-primary)}.site-footer{margin-top:auto;min-height:74px;border-top:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem clamp(1.1rem,4vw,4.5rem);color:var(--text-muted);font-size:.8rem}.eyebrow{display:block;margin-bottom:.65rem;color:var(--accent-primary);font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.button{min-height:48px;border:1px solid transparent;border-radius:var(--radius-control);padding:.78rem 1.2rem;display:inline-flex;align-items:center;justify-content:center;gap:.6rem;cursor:pointer;font-weight:760;background:linear-gradient(145deg,var(--accent-primary-bright),var(--accent-primary));color:var(--text-dark);box-shadow:0 7px 22px #e7b96826;transition:transform var(--duration-fast),filter var(--duration-fast),background var(--duration-fast)}.button:hover:not(:disabled){transform:translateY(-2px);filter:brightness(1.05)}.button:active:not(:disabled){transform:translateY(0)}.button:disabled{cursor:not-allowed;opacity:.42;box-shadow:none}.button--secondary{color:var(--text-primary);border-color:var(--border-strong);background:#fff1;box-shadow:none}.button--quiet{color:var(--text-muted);border-color:transparent;background:transparent;box-shadow:none}.button--quiet:hover:not(:disabled){color:var(--text-primary);background:#ffffff0f}.button--danger{color:#fff;border-color:#f1787866;background:#b53d46b3;box-shadow:none}.button--compact{min-height:38px;padding:.45rem .7rem;border-radius:9px;font-size:.78rem}.text-link{color:var(--text-primary);font-weight:700;text-underline-offset:5px}.home-page{overflow:hidden}.hero{min-height:calc(100vh - var(--header-height));max-width:1440px;margin:0 auto;padding:clamp(3rem,8vw,8rem) clamp(1.25rem,7vw,7rem);display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.85fr);align-items:center;gap:clamp(2rem,7vw,7rem)}.hero__copy h1{max-width:790px;margin-bottom:1.7rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(3.3rem,7vw,6.9rem);font-weight:500;line-height:.94}.hero__copy h1 em{color:var(--accent-primary);font-weight:400}.hero__copy>p{max-width:610px;color:var(--text-muted);font-size:clamp(1rem,1.4vw,1.2rem);line-height:1.7}.hero-option{width:min(100%,420px);display:grid;gap:.55rem;margin-top:1.4rem;color:var(--text-muted);font-size:.78rem;font-weight:700}.hero__actions{display:flex;align-items:center;gap:1.5rem;margin-top:2.2rem}.trust-row{display:flex;flex-wrap:wrap;gap:1rem 1.5rem;margin-top:2.4rem;color:var(--text-muted);font-size:.78rem}.trust-row span:before{content:"◇";color:var(--accent-primary);margin-right:.45rem}.card-vignette{position:relative;height:min(540px,55vw);min-height:410px;border:1px solid var(--border-soft);border-radius:45% 45% 22px 22px;background:radial-gradient(ellipse at center,#235054 0%,var(--surface-table-deep) 68%);box-shadow:inset 0 0 80px #00000073,0 35px 90px #00000059;perspective:900px}.vignette-glow{position:absolute;width:60%;height:35%;left:20%;top:24%;border-radius:50%;background:#7eebca1f;filter:blur(30px)}.demo-card{--card-width: 160px;position:absolute;top:calc(50% - 114px);left:calc(50% - 80px);width:var(--card-width);aspect-ratio:.7}.demo-card>.playing-card{width:100%;height:100%;border-radius:13px;box-shadow:0 35px 50px #0006}.demo-card--one{margin-left:-86px}.demo-card--two{z-index:2}.demo-card--three{margin-left:86px}.steps{max-width:1240px;margin:0 auto;padding:6rem clamp(1.25rem,5vw,5rem) 8rem}.steps>div{display:flex;align-items:baseline;justify-content:space-between;gap:2rem}.steps ol{list-style:none;padding:0;margin:3rem 0 0;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border-soft);border:1px solid var(--border-soft);border-radius:var(--radius-panel);overflow:hidden}.steps li{padding:2.2rem;background:var(--surface-page-soft)}.steps li>span{color:var(--accent-primary);font:italic 1.1rem Georgia,serif}.steps h3{margin:2rem 0 .7rem;font-size:1.35rem}.steps p{margin:0;color:var(--text-muted);line-height:1.55}.name-field{display:grid;gap:.65rem;margin-bottom:1.4rem;color:var(--text-muted);font-size:.8rem;font-weight:700}.name-field input,.rules-form select{width:100%;min-height:48px;border:1px solid var(--border-soft);border-radius:10px;padding:.75rem .9rem;color:var(--text-primary);background:var(--surface-input)}.rules-form select{appearance:none;padding-right:3rem;background-color:var(--surface-input);background-image:linear-gradient(180deg,#ffffff0b,#fff0),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23e7b968' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:center,right 1.1rem center;background-repeat:no-repeat;background-size:auto,1rem 1rem;box-shadow:inset 0 1px #ffffff0a;cursor:pointer;transition:border-color var(--duration-fast),background-color var(--duration-fast),box-shadow var(--duration-fast)}.rules-form select:hover:not(:disabled){border-color:#e7b96894;background-color:#ffffff13}.rules-form select:disabled{cursor:not-allowed;opacity:.58}.rules-form select option{color:var(--text-primary);background:var(--surface-panel-solid)}.name-field input::placeholder{color:#73778e}.name-field input:focus,.rules-form select:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #e7b96826}.rules-form{display:grid;gap:1rem}.rules-form fieldset{margin:0;padding:1rem;border:1px solid var(--border-soft);border-radius:13px;display:grid;gap:.9rem}.rules-form legend{padding:0 .4rem;color:var(--text-primary);font-weight:750}.rules-form label{display:grid;gap:.45rem;color:var(--text-muted);font-size:.78rem}.rule-image-field{display:grid;gap:.45rem}.rule-image-field__label{color:var(--text-muted);font-size:.78rem}.variant-toggle{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.variant-choice{min-width:0;height:72px;display:flex;align-items:center;justify-content:flex-start;gap:.45rem;border:1px solid var(--border-soft);border-radius:10px;padding:.25rem .55rem;color:var(--text-muted);background:var(--surface-input);cursor:pointer;font:inherit;font-weight:750;text-align:left;transition:border-color var(--duration-fast),background var(--duration-fast),color var(--duration-fast),transform var(--duration-fast)}.variant-choice:hover:not(:disabled){border-color:#e7b968b3;color:var(--text-primary);transform:translateY(-1px)}.variant-choice:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.variant-choice.is-selected{border-color:var(--accent-primary);color:var(--text-primary);background:#e7b9681f;box-shadow:inset 0 0 0 1px #e7b9684d}.variant-choice:disabled{cursor:not-allowed;opacity:.58}.variant-choice>span{min-width:0;overflow-wrap:anywhere}.variant-choice__icon{width:66px;height:66px;flex:none;object-fit:contain;filter:drop-shadow(0 5px 8px rgba(0,0,0,.28));-webkit-user-select:none;user-select:none}.rule-image-choice{height:74px}.form-error{margin:1rem 0;color:#faa;font-size:.84rem}.join-page,.room-state{min-height:calc(100vh - var(--header-height));padding:4rem 1.2rem;display:grid;place-items:center}.join-card{width:min(480px,100%);padding:clamp(1.5rem,5vw,3rem);border:1px solid var(--border-soft);border-radius:var(--radius-panel);background:var(--surface-panel);box-shadow:var(--shadow-panel);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.join-card h1{margin-bottom:.8rem;font:400 3.2rem Georgia,serif}.join-card>p,.join-card>small{color:var(--text-muted);line-height:1.55}.join-card form{margin:2rem 0 1.4rem}.join-card form .button{width:100%}.room-state{text-align:center;align-content:center}.room-state__mark{width:64px;aspect-ratio:.72;display:grid;place-items:center;margin:0 auto 1.5rem;border-radius:9px;background:var(--text-primary);color:var(--text-dark);transform:rotate(-5deg);font-size:1.5rem}.room-state h1{max-width:600px;font:400 clamp(1.8rem,5vw,3.5rem) Georgia,serif}.room-state a{color:var(--accent-primary);text-underline-offset:5px}.connection-banner{position:fixed;z-index:90;top:82px;left:50%;transform:translate(-50%);min-height:42px;padding:.6rem 1rem;display:flex;align-items:center;gap:.6rem;border:1px solid var(--border-strong);border-radius:22px;background:#101225eb;box-shadow:0 12px 30px #0000004d;font-size:.8rem}.connection-banner__pulse{width:8px;height:8px;border-radius:50%;background:var(--accent-primary);animation:pulse 1s ease-in-out infinite alternate}.toast{position:fixed;z-index:80;top:82px;right:1.2rem;max-width:360px;padding:.8rem 1rem;border:1px solid var(--border-soft);border-radius:12px;background:var(--surface-panel-solid);box-shadow:var(--shadow-panel);color:var(--text-muted);font-size:.82rem}.toast--danger{border-color:#f1787866;color:#ffc4c4}.toast--success{border-color:#67d6a566;color:#bdf5da}@keyframes pulse{to{opacity:.35;transform:scale(.8)}}.lobby-shell{width:min(1180px,calc(100% - 2.4rem));margin:0 auto;padding:clamp(2rem,6vw,5rem) 0 6rem}.lobby-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:2rem}.lobby-hero h1{margin-bottom:.7rem;font:400 clamp(2.4rem,5vw,4.7rem) Georgia,serif}.lobby-hero p{max-width:600px;margin:0;color:var(--text-muted)}.lobby-hero__count{display:flex;align-items:baseline;gap:.4rem}.lobby-hero__count strong{color:var(--accent-primary);font:400 3.6rem Georgia,serif}.lobby-hero__count span{color:var(--text-muted)}.share-room{margin-bottom:1.2rem;padding:1.1rem 1.3rem;border:1px solid rgba(231,185,104,.24);border-radius:16px;display:flex;align-items:center;gap:1rem;background:linear-gradient(90deg,#e7b96817,#e7b96805)}.share-room>div{display:grid;gap:.1rem;margin-right:auto}.share-room .eyebrow{margin:0;font-size:.62rem}.share-room strong{font-size:.88rem}.lobby-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:1.2rem;align-items:start}.lobby-panel{padding:clamp(1.2rem,3vw,2rem);border:1px solid var(--border-soft);border-radius:var(--radius-panel);background:var(--surface-panel);box-shadow:var(--shadow-panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.3rem}.panel-heading .eyebrow{margin-bottom:.35rem}.panel-heading h2{margin:0;font:400 2rem Georgia,serif}.seat-list{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.seat-row{min-height:59px;padding:.55rem .65rem;border:1px dashed var(--border-soft);border-radius:12px;display:flex;align-items:center;gap:.7rem;color:var(--text-muted)}.seat-row.is-occupied{border-style:solid;background:#ffffff09}.seat-row.is-viewer{border-color:#e7b9689e;background:linear-gradient(90deg,#e7b96829,#e7b9680b);box-shadow:inset 3px 0 0 var(--accent-primary),0 0 0 1px #e7b96814}.seat-row.is-viewer .seat-row__number{color:#171827;background:var(--accent-primary);font-weight:850}.seat-row__number{width:25px;height:25px;flex:none;border-radius:50%;display:grid;place-items:center;background:#ffffff0f;font-size:.7rem}.presence-dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--text-muted);box-shadow:0 0 0 3px #ffffff0a}.presence-dot--connected{background:var(--accent-success)}.presence-dot--bot{background:var(--accent-primary);box-shadow:0 0 0 3px #e7b9681f}.presence-dot--disconnected{background:var(--accent-danger)}.presence-dot--left{background:#73778e}.seat-row__identity{min-width:0;margin-right:auto;display:grid;gap:.15rem}.seat-row__identity strong{overflow:hidden;color:var(--text-primary);font-size:.84rem;text-overflow:ellipsis;white-space:nowrap}.seat-row__name-line{min-width:0;display:flex;align-items:center;gap:.35rem}.seat-row__name-line strong{min-width:0}.name-edit-button,.seat-row__rename button{width:27px;height:27px;flex:none;display:grid;place-items:center;border:1px solid transparent;border-radius:7px;color:var(--text-muted);background:transparent;cursor:pointer}.name-edit-button:hover,.name-edit-button:focus-visible,.seat-row__rename button:hover,.seat-row__rename button:focus-visible{border-color:var(--border-soft);color:var(--accent-primary);background:#ffffff0d}.name-edit-button:disabled{cursor:not-allowed;opacity:.45}.name-edit-button svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.seat-row__rename{min-width:min(240px,44vw);display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.25rem}.seat-row__rename input{min-width:0;height:34px;border:1px solid var(--accent-primary);border-radius:8px;padding:.4rem .55rem;color:var(--text-primary);background:var(--surface-input)}.seat-row__rename-error{grid-column:1 / -1;color:var(--accent-danger)!important}.bot-badge{display:inline-flex;align-items:center;min-height:1.15rem;margin-left:.45rem;padding:.05rem .38rem;border:1px solid rgba(231,185,104,.38);border-radius:999px;color:var(--accent-primary);font-family:var(--font-sans);font-size:.55rem;font-weight:800;letter-spacing:.08em;line-height:1;text-transform:uppercase;vertical-align:middle}.seat-row__identity small,.seat-row__empty{font-size:.7rem;color:var(--text-muted)}.ready-mark{min-width:78px;min-height:27px;padding:.22rem .58rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-soft);border-radius:999px;color:var(--text-muted);background:#ffffff0d;font-size:.6rem;font-weight:850;letter-spacing:.08em;line-height:1;text-transform:uppercase;white-space:nowrap}.ready-mark.is-ready{border-color:#67d6a56b;color:#bdf5da;background:#67d6a524}.lobby-actions{display:flex;gap:.7rem;margin-top:1.3rem}.lobby-actions .button{flex:1}.start-reason{margin:.7rem 0 0;text-align:center;color:var(--text-muted);font-size:.72rem}.rules-summary{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin:0}.rules-summary>div{padding:.8rem;border-radius:10px;background:#ffffff09}.rules-summary dt{margin-bottom:.3rem;color:var(--text-muted);font-size:.65rem;text-transform:uppercase;letter-spacing:.08em}.rules-summary dd{margin:0;font-size:.84rem;font-weight:700}.game-shell{--card-width: clamp(66px, 7.2vw, 105px);position:relative;min-height:calc(100vh - var(--header-height));padding:2.5rem clamp(.75rem,2.5vw,2.5rem) 1.5rem;overflow:hidden;background:radial-gradient(circle at 50% 42%,rgba(47,117,105,.18),transparent 42rem)}.game-table{position:relative;width:min(1160px,94vw);height:clamp(390px,57vh,650px);margin:0 auto;border:1px solid rgba(122,215,189,.14);border-radius:48%/28%;background:radial-gradient(ellipse at center,#1d514d 0%,var(--surface-table) 48%,var(--surface-table-deep) 100%);box-shadow:inset 0 0 0 9px #080e164d,inset 0 -40px 90px #00000052,0 35px 70px #0000004d}.game-table:after{content:"";position:absolute;pointer-events:none;inset:10%;border:1px solid rgba(255,255,255,.035);border-radius:inherit}.playing-card,.card-back{width:var(--card-width);aspect-ratio:.7;border-radius:calc(var(--card-width) * .085);box-shadow:var(--shadow-card-rest)}.playing-card{position:relative;border:1px solid rgba(15,17,26,.15);display:grid;place-items:center;overflow:hidden;color:#151521;background:linear-gradient(145deg,#fffdf7,#e9e6dc)}button.playing-card{padding:0;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none}button.playing-card:disabled{cursor:default}.playing-card--hearts,.playing-card--diamonds{color:#b52d40}.playing-card__corner{position:absolute;top:8%;left:10%;display:flex;min-width:calc(var(--card-width) * .25);flex-direction:column;align-items:center;font-family:Georgia,serif;line-height:.9}.playing-card__corner b{display:block;width:100%;text-align:center;font-size:calc(var(--card-width) * .2)}.playing-card__corner span{display:block;width:100%;margin-top:calc(var(--card-width) * .018);text-align:center;font-size:calc(var(--card-width) * .17)}.playing-card__pip{display:block;font-size:calc(var(--card-width) * .48);line-height:1;opacity:.9}.playing-card>*{pointer-events:none}.playing-card.is-selected{transform:translateY(-13px);box-shadow:var(--shadow-card-lifted)}.playing-card.is-dimmed{opacity:1;background:linear-gradient(145deg,#cecec9,#a2a4a6);filter:saturate(.42) brightness(.82) contrast(.9);box-shadow:0 4px 10px #0000003d}.playing-card--compact,.card-back--compact{--card-width: clamp(48px, 5.4vw, 75px)}.card-back{position:relative;flex:none;display:inline-block;border:3px solid #ebe5d6;background:#28305f;overflow:hidden}.card-back span{position:absolute;inset:4px;border:1px solid rgba(255,255,255,.45);border-radius:inherit;background:repeating-linear-gradient(45deg,transparent 0 5px,rgba(255,255,255,.08) 5px 7px)}.opponents{position:absolute;z-index:7;inset:0;pointer-events:none}.opponent-seat{--seat-role-color: transparent;--seat-role-glow: transparent;position:absolute;left:var(--seat-x, 50%);top:var(--seat-y, 4%);width:190px;text-align:center;transform:translate(-50%,-50%)}.opponent-seat.is-attacker{--seat-role-color: var(--role-attacker);--seat-role-glow: rgba(255, 84, 92, .48)}.opponent-seat.is-defender{--seat-role-color: var(--role-defender);--seat-role-glow: rgba(71, 154, 255, .5)}.opponent-seat.is-taking-cards{--seat-role-color: var(--accent-primary);--seat-role-glow: rgba(231, 185, 104, .55)}.opponent-seat--0{left:var(--seat-x, 50%);top:var(--seat-y, 4%)}.opponent-seat--1{left:var(--seat-x, 82%);top:var(--seat-y, 25%)}.opponent-seat--2{left:var(--seat-x, 87%);top:var(--seat-y, 65%)}.opponent-seat--3{left:var(--seat-x, 13%);top:var(--seat-y, 65%)}.opponent-seat--4{left:var(--seat-x, 18%);top:var(--seat-y, 25%)}.opponent-seat__cards{height:50px;display:flex;justify-content:center;align-items:end;transition:filter var(--duration-standard)}.opponent-seat.is-attacker .opponent-seat__cards,.opponent-seat.is-defender .opponent-seat__cards{filter:drop-shadow(0 0 9px var(--seat-role-glow))}.opponent-seat__cards .card-back{width:35px;margin:0 -12px;border-width:2px;box-shadow:0 4px 10px #00000040;transform:rotate(-3deg)}.opponent-seat__name{position:relative;z-index:2;width:max-content;max-width:170px;min-height:34px;margin:-4px auto 0;padding:.4rem .65rem;display:flex;align-items:center;gap:.45rem;border:1px solid var(--border-soft);border-radius:18px;background:#0b111ce6;box-shadow:0 8px 20px #0003;font-size:.72rem}.opponent-seat__name strong{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opponent-seat__name>span:last-child{color:var(--accent-primary);font-weight:800}.opponent-seat.is-priority .opponent-seat__name{border-color:var(--accent-primary);box-shadow:0 0 25px #e7b96847}.opponent-seat.is-attacker .opponent-seat__name,.opponent-seat.is-defender .opponent-seat__name{border-color:var(--seat-role-color);box-shadow:0 0 0 1px var(--seat-role-color),0 0 26px var(--seat-role-glow),0 8px 20px #0000003d}.opponent-seat.is-taking-cards .opponent-seat__name{border-color:var(--accent-primary);box-shadow:0 0 0 1px #e7b968c2,0 0 28px #e7b9686b,0 8px 20px #0000003d}.take-cards-callout{position:relative;z-index:3;width:max-content;max-width:170px;margin:.3rem auto 0;padding:.22rem .54rem;border:1px solid rgba(231,185,104,.42);border-radius:999px;color:var(--accent-primary-bright);background:#0a0e19f0;box-shadow:0 8px 18px #00000047;font-size:.64rem;font-weight:850;letter-spacing:.08em;line-height:1.1;text-transform:uppercase;transform-origin:center;animation:take-cards-callout-pulse .82s ease-in-out infinite alternate}.take-cards-arrow{position:absolute;z-index:6;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;color:var(--accent-primary-bright);filter:drop-shadow(0 0 9px rgba(231,185,104,.58))}.take-cards-arrow marker path{fill:currentColor}.take-cards-arrow__path{fill:none;stroke:currentColor;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;stroke-dasharray:8.5 6;animation:take-cards-arrow-flow 1s linear infinite}@keyframes take-cards-callout-pulse{0%{transform:scale(.96)}to{transform:scale(1.07)}}@keyframes take-cards-arrow-flow{to{stroke-dashoffset:-14}}.player-role-badge{position:relative;z-index:3;width:max-content;margin:.35rem auto 0;padding:.22rem .5rem .22rem .35rem;display:flex;align-items:center;gap:.28rem;border:1px solid currentColor;border-radius:999px;background:#0a0e19f0;box-shadow:0 5px 14px #00000052;font-size:.58rem;font-weight:800;letter-spacing:.04em;line-height:1;text-transform:uppercase}.player-role-badge svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.player-role-badge .player-role-badge__sword-blade{fill:currentColor;stroke:none}.player-role-badge--attacker{color:var(--role-attacker)}.player-role-badge--defender{color:var(--role-defender)}.role-chips{display:flex;justify-content:center;gap:.3rem;margin-top:.3rem}.role-chips span{padding:.18rem .42rem;border-radius:8px;background:#ffffff1a;color:#e8e8ef;font-size:.56rem;text-transform:uppercase}.stock{position:absolute;z-index:3;left:clamp(24px,3vw,48px);top:45%;width:150px;height:100px}.stock__trump{position:absolute;left:35px;transform:rotate(90deg)}.stock__trump-placeholder{width:var(--card-width);aspect-ratio:.7;box-sizing:border-box;display:grid;place-items:center;border:2px dashed rgba(235,229,214,.68);border-radius:calc(var(--card-width) * .085);color:#fffdf7d1;background:#0b111c57;box-shadow:inset 0 0 0 1px #ffffff0f}.stock__trump-placeholder--hearts,.stock__trump-placeholder--diamonds{color:#ff7b8bdb}.stock__trump-placeholder span{font-family:Georgia,serif;font-size:calc(var(--card-width) * .48);line-height:1}.stock__deck{position:absolute;left:-24px;top:0}.stock__deck--drawing-source{opacity:.22}.stock__deck b{position:absolute;inset:0;display:grid;place-items:center;text-shadow:0 2px 4px #000}.table-bout{--table-card-width: clamp(64px, 5.8vw, 84px);position:absolute;z-index:5;left:50%;top:51%;width:min(68%,720px);transform:translate(-50%,-50%);display:grid;grid-template-columns:repeat(auto-fit,var(--table-card-width));gap:1rem clamp(28px,2.5vw,34px);justify-content:center;justify-items:center}.table-bout .playing-card--compact{--card-width: var(--table-card-width)}.table-bout--empty{width:min(54%,620px);min-height:clamp(210px,34vh,280px);box-sizing:border-box;padding-inline:clamp(16px,3vw,40px);display:grid;place-items:center;border:1px dashed rgba(255,255,255,.13);border-radius:32px;color:#ffffff75;text-align:center;font:italic .92rem/1.35 Georgia,serif}.game-table[data-attack-drop] .table-bout{transition:background var(--duration-fast),border-color var(--duration-fast),box-shadow var(--duration-fast)}.game-table[data-attack-drop] .table-bout.is-drop-target{border-color:#e7b968cc;background:#e7b9681c;box-shadow:0 0 36px #e7b9684d}.bout-pair{position:relative;width:var(--table-card-width);min-height:calc(var(--table-card-width) / .7 + 18px);isolation:isolate}.bout-pair__attack{width:var(--table-card-width)}.table-card-arrival{width:var(--table-card-width);transform-origin:center center;transform-style:preserve-3d}[data-card-pickup-source],[data-card-discard-source]{opacity:0}.remote-card-flights{position:fixed;z-index:1000;inset:0;overflow:hidden;pointer-events:none}.remote-card-flight{position:fixed;perspective:900px;filter:drop-shadow(0 12px 18px rgba(0,0,0,.32))}.remote-card-flight__inner,.remote-card-flight__face{position:absolute;inset:0}.remote-card-flight__inner{transform-style:preserve-3d}.remote-card-flight__face{overflow:hidden;border-radius:8.5%;backface-visibility:hidden}.remote-card-flight__back{box-sizing:border-box;border:3px solid #ebe5d6;background:#28305f}.remote-card-flight__back span{position:absolute;inset:4px;border:1px solid rgba(255,255,255,.45);border-radius:inherit;background:repeating-linear-gradient(45deg,transparent 0 5px,rgba(255,255,255,.08) 5px 7px)}.table-pickup-flights{position:fixed;z-index:1000;inset:0;overflow:hidden;pointer-events:none}.table-pickup-flight{position:fixed;perspective:900px;filter:drop-shadow(0 14px 18px rgba(0,0,0,.34))}.table-pickup-flight__inner,.table-pickup-flight__face{position:absolute;inset:0}.table-pickup-flight__inner{transform-style:preserve-3d}.table-pickup-flight__face{backface-visibility:hidden}.table-pickup-flight__face .playing-card{width:100%;height:100%}.table-pickup-flight__back{box-sizing:border-box;overflow:hidden;border:3px solid #ebe5d6;border-radius:8.5%;background:#28305f;transform:rotateY(180deg)}.table-pickup-flight__back span{position:absolute;inset:4px;border:1px solid rgba(255,255,255,.45);border-radius:inherit;background:repeating-linear-gradient(45deg,transparent 0 5px,rgba(255,255,255,.08) 5px 7px)}.stock-draw-flights{position:fixed;z-index:1000;inset:0;overflow:hidden;pointer-events:none}.stock-draw-flight{position:fixed;filter:drop-shadow(0 14px 18px rgba(0,0,0,.34))}.stock-draw-flight--local{filter:drop-shadow(0 14px 18px rgba(0,0,0,.34)) drop-shadow(0 0 10px rgba(231,185,104,.28))}.stock-draw-flight .card-back{width:100%;height:100%;border-radius:8.5%}.table-discard-flights{position:fixed;z-index:1000;inset:0;overflow:hidden;pointer-events:none}.table-discard-flight{position:fixed;filter:drop-shadow(0 14px 18px rgba(0,0,0,.34))}.table-discard-flight .playing-card{width:100%;height:100%}.bout-pair[data-defense-drop] .bout-pair__target:before{content:"";position:absolute;z-index:-1;inset:-28px;border:1px dashed transparent;border-radius:22px;pointer-events:none;transition:border-color var(--duration-fast),background var(--duration-fast),box-shadow var(--duration-fast)}.is-dragging-card .bout-pair[data-defense-drop] .bout-pair__target:before,.bout-pair.is-drop-target .bout-pair__target:before{border-color:#73b9ff85;background:#73b9ff14;box-shadow:0 0 26px #73b9ff29}.bout-pair__defense{position:absolute;top:18px;left:18px;transform:rotate(5deg)}.bout-pair__target{position:relative;z-index:1;isolation:isolate;padding:0;border:2px solid transparent;border-radius:10px;background:transparent;cursor:pointer}.bout-pair__target:hover,.bout-pair__target:focus-visible,.bout-pair.is-targeted .bout-pair__target,.bout-pair.is-drop-target .bout-pair__target{border-color:var(--role-defender);box-shadow:0 0 20px #73b9ff59}.bout-pair.is-drop-target .bout-pair__target{transform:translateY(-5px) scale(1.04)}.discard-pile{position:absolute;z-index:4;right:14%;top:47%;width:55px;height:75px;border:1px dashed rgba(255,255,255,.1);border-radius:7px;transform:rotate(4deg)}.discard-pile__card{position:absolute;inset:0;box-sizing:border-box;border:2px solid rgba(235,229,214,.72);border-radius:5px;background:#28305f;opacity:0;transition:opacity var(--duration-fast)}.discard-pile__card:after{content:"";position:absolute;inset:4px;border:1px solid rgba(255,255,255,.35);border-radius:3px;background:repeating-linear-gradient(45deg,transparent 0 5px,rgba(255,255,255,.08) 5px 7px)}.discard-pile--occupied .discard-pile__card{opacity:1}.discard-pile__card--rear{transform:translate(-5px,3px) rotate(-7deg)}.discard-pile__card--middle{transform:translate(4px,2px) rotate(5deg)}.discard-pile__card--front{transform:rotate(-1deg)}.discard-pile small{position:absolute;top:82px;left:50%;width:max-content;transform:translate(-50%);text-align:center;color:#ffffff80;font-size:.55rem;text-transform:uppercase}.discard-pile small b{min-width:1.25rem;margin-left:.2rem;padding:.08rem .28rem;display:inline-block;border-radius:999px;background:#ffffff1a;color:#ffffffc7;font-size:inherit}.player-hand{--hand-role-glow: transparent;position:relative;z-index:10;width:100%;max-width:1320px;margin:max(-58px,-6vh) auto 0}.player-hand.is-attacker{--hand-role-glow: rgba(255, 84, 92, .42)}.player-hand.is-defender{--hand-role-glow: rgba(71, 154, 255, .44)}.player-hand.is-attacker:before,.player-hand.is-defender:before{content:"";position:absolute;z-index:-1;left:15%;right:15%;bottom:0;height:72%;pointer-events:none;background:radial-gradient(ellipse at center bottom,var(--hand-role-glow),transparent 68%);filter:blur(12px)}.player-hand__role{position:absolute;z-index:50;top:.2rem;right:max(.75rem,8vw)}.player-hand__role .player-role-badge{margin:0;padding:.32rem .65rem .32rem .42rem;font-size:.64rem}.player-hand__cards{--hand-overlap: calc(var(--card-width) * .18);--hand-side-padding: max(20px, calc(var(--card-width) * .62));min-height:calc(var(--card-width) / .7 + 38px);padding:15px var(--hand-side-padding) 2px;display:flex;justify-content:center;overflow-x:clip;overflow-y:hidden;scrollbar-width:thin}.player-hand__cards.is-scrollable{justify-content:flex-start;overflow-x:auto}.player-hand__card-slot{position:relative;flex:none;width:var(--card-width);height:calc(var(--card-width) / .7 + 30px);margin-left:calc(0px - var(--hand-overlap));transform:translateY(var(--fan-drop)) rotate(var(--fan-angle));transform-origin:50% 125%;z-index:var(--card-order);transition:transform var(--duration-fast),opacity var(--duration-fast)}.player-hand__card-slot:first-child{margin-left:0}.player-hand__card-slot:hover,.player-hand__card-slot:focus-within{z-index:40}.player-hand__card-slot.is-dragging{opacity:.24}.card-drag-preview{position:fixed;z-index:1000;pointer-events:none;filter:drop-shadow(0 22px 20px rgba(0,0,0,.45))}.card-drag-preview__surface,.card-drag-preview__card{position:absolute;inset:0}.card-drag-preview__surface>strong{position:absolute;z-index:5;right:-14px;top:-16px;width:30px;height:30px;display:grid;place-items:center;border:2px solid #fff8e8;border-radius:50%;color:#171923;background:var(--accent-primary);box-shadow:0 5px 14px #00000059;font-size:.78rem}.is-dragging-card,.is-dragging-card *{cursor:grabbing!important}.game-controls{position:relative;z-index:12;width:min(900px,100%);margin:.35rem auto 0;display:flex;justify-content:center;align-items:stretch;gap:.6rem}.game-sort-button{flex:none;min-height:68px;white-space:nowrap}.action-bar{position:relative;flex:0 1 720px;min-height:68px;padding:.55rem .65rem .55rem 1rem;display:flex;align-items:center;gap:1rem;border:1px solid var(--border-soft);border-radius:17px;background:#121526f0;box-shadow:0 16px 45px #00000052;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.action-bar__hint{flex:1;display:flex;flex-direction:column;color:var(--text-muted);font-size:.72rem;line-height:1.35}.action-bar__progress{color:var(--text-primary);font-size:.68rem;font-weight:600}.action-bar__buttons{display:flex;gap:.5rem}.action-bar .button{min-height:44px}.game-done-button--prompt:not(:disabled){border-color:var(--accent-primary);color:var(--accent-primary-bright);animation:done-button-pulse 1.15s ease-in-out infinite alternate}@keyframes done-button-pulse{0%{box-shadow:0 0 #e7b96833}to{box-shadow:0 0 0 4px #e7b96826,0 0 22px 5px #e7b9689e}}.result-overlay{position:fixed;z-index:50;top:50%;left:50%;width:min(560px,calc(100% - 2rem));padding:2.5rem;border:1px solid rgba(231,185,104,.3);border-radius:var(--radius-panel);text-align:center;background:#14172af2;box-shadow:0 30px 100px #0000009e;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.result-overlay h2{margin-bottom:.8rem;font:400 clamp(2rem,5vw,3.5rem) Georgia,serif}.result-overlay p{color:var(--text-muted)}.result-overlay__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;margin-top:1.7rem}.rules-page{width:min(1120px,calc(100% - 2.4rem));margin:0 auto;padding:clamp(4rem,8vw,8rem) 0}.rules-page>header{max-width:780px;margin-bottom:5rem}.rules-page h1{margin-bottom:1.5rem;font:400 clamp(3rem,7vw,6rem) Georgia,serif;line-height:.98}.rules-page header p{max-width:620px;color:var(--text-muted);font-size:1.1rem;line-height:1.7}.rules-article{display:grid;grid-template-columns:190px 1fr;gap:clamp(2rem,7vw,7rem)}.rules-article aside{position:sticky;top:100px;align-self:start;display:grid;gap:.8rem}.rules-article aside strong{margin-bottom:.5rem;color:var(--accent-primary);text-transform:uppercase;letter-spacing:.1em;font-size:.7rem}.rules-article aside a{color:var(--text-muted);text-decoration:none;font-size:.82rem}.rules-article aside a:hover{color:var(--text-primary)}.rules-article article{display:grid;gap:1px;border:1px solid var(--border-soft);border-radius:var(--radius-panel);overflow:hidden;background:var(--border-soft)}.rules-article section{scroll-margin-top:100px;padding:clamp(1.5rem,4vw,3rem);display:grid;grid-template-columns:55px 1fr;gap:1rem;background:var(--surface-page-soft)}.rules-article section>span{color:var(--accent-primary);font:italic 1.1rem Georgia,serif}.rules-article section h2{font:400 2rem Georgia,serif}.rules-article section p{color:var(--text-muted);line-height:1.75}@media(max-width:900px){.hero{grid-template-columns:1fr;padding-top:4rem}.card-vignette{width:min(560px,100%);height:480px;justify-self:center}.lobby-grid{grid-template-columns:1fr}.game-table{width:100%;height:52vh;min-height:420px;border-radius:35%/18%}.opponent-seat{width:145px}.opponent-seat--1{left:var(--seat-x, 87%)}.opponent-seat--4{left:var(--seat-x, 13%)}.discard-pile{right:8%}.rules-article{grid-template-columns:1fr}.rules-article aside{position:static;grid-template-columns:repeat(4,auto);overflow-x:auto}.rules-article aside strong{display:none}}@media(max-width:796px){.table-bout:not(.table-bout--empty){width:min(66%,calc(var(--table-card-width) * 3 + 74px));column-gap:28px}}@media(max-width:620px){:root{--header-height: 60px}.site-header{padding:0 1rem}.site-footer{align-items:flex-start;flex-direction:column}.hero{min-height:auto;padding:3.2rem 1.2rem}.hero__copy h1{font-size:clamp(3rem,15vw,4.6rem)}.hero__actions{align-items:stretch;flex-direction:column}.hero__actions .text-link{text-align:center}.card-vignette{min-height:340px;height:105vw;max-height:450px}.demo-card{--card-width: 120px;width:var(--card-width);top:calc(50% - 86px);left:calc(50% - 60px)}.demo-card--one{margin-left:-60px}.demo-card--three{margin-left:60px}.steps{padding:4rem 1.2rem}.steps ol{grid-template-columns:1fr}.steps li{padding:1.5rem}.steps h3{margin-top:1rem}.connection-banner{top:68px;width:max-content;max-width:calc(100% - 1rem)}.toast{top:auto;right:.6rem;bottom:.6rem;left:.6rem;max-width:none}.lobby-shell{width:min(100% - 1.2rem,1180px);padding-top:2rem}.lobby-hero{align-items:flex-start}.lobby-hero__count{display:none}.share-room{align-items:stretch;flex-direction:column}.share-room .button{width:100%}.seat-row .button{width:38px;overflow:hidden;color:transparent;position:relative}.seat-row .button:after{content:"×";color:var(--accent-danger);position:absolute;inset:0;display:grid;place-items:center;font-size:1.1rem}.rules-summary{grid-template-columns:1fr}.game-shell{--card-width: 66px;padding:1.75rem .4rem 1rem;min-height:calc(100vh - 60px)}.game-table{height:49vh;min-height:370px;border-radius:28%/13%}.opponent-seat{width:115px}.opponent-seat--0{top:var(--seat-y, 3%)}.opponent-seat--1{left:var(--seat-x, 82%);top:var(--seat-y, 20%)}.opponent-seat--2{left:var(--seat-x, 85%);top:var(--seat-y, 72%)}.opponent-seat--3{left:var(--seat-x, 15%);top:var(--seat-y, 72%)}.opponent-seat--4{left:var(--seat-x, 18%);top:var(--seat-y, 20%)}.opponent-seat__cards{height:35px}.opponent-seat__cards .card-back{width:28px;margin:0 -10px}.opponent-seat__name{min-height:30px;padding:.32rem .5rem;max-width:110px}.opponent-seat__name strong{max-width:65px}.role-chips{display:none}.stock{top:42%;transform:scale(.78);transform-origin:left center}.discard-pile{right:4%;top:44%;transform:scale(.8) rotate(4deg)}.table-bout{--table-card-width: clamp(62px, 17vw, 68px);top:52%;row-gap:10px}.table-bout--empty{width:54%}.playing-card--compact,.card-back--compact{--card-width: 48px}.player-hand{margin-top:-35px}.player-hand__cards{padding-inline:var(--hand-side-padding)}.game-controls{position:sticky;bottom:.4rem;gap:.35rem}.game-sort-button{width:108px;min-height:58px;padding:.4rem .5rem;white-space:normal}.action-bar{min-height:58px;padding:.4rem;flex-direction:column;gap:.3rem;border-radius:14px}.action-bar__hint{min-height:15px;font-size:.64rem;text-align:center}.action-bar__buttons{width:100%}.action-bar__buttons .button{flex:1;padding:.55rem .65rem}.result-overlay{padding:1.6rem}.rules-page{width:calc(100% - 2rem);padding-top:4rem}.rules-page>header{margin-bottom:3rem}.rules-article aside{grid-template-columns:repeat(4,max-content)}.rules-article section{grid-template-columns:36px 1fr;padding:1.3rem}}@media(max-width:421px){.table-bout:not(.table-bout--empty){width:min(72%,calc(var(--table-card-width) * 2 + 40px));column-gap:22px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.button:hover:not(:disabled),.playing-card.is-selected{transform:none}}
