*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--paper:#faf9f7;--surface:#fff;--well:#f4f2ee;--ink:#141a17;--ink-2:#5b645f;--ink-3:#8d948f;--ink-on-dark:#f2f5f3;--ink-on-accent:#fff;--line:#e5e2dc;--line-strong:#d2cec6;--accent:#1b4d3e;--accent-hover:#143a2e;--accent-tint:#eef3f0;--accent-ring:#1b4d3e40;--felt:#1d4a3d;--felt-deep:#12332a;--felt-rail:#0d241d;--brass:#c08a2e;--brass-bright:#e0a94a;--brass-tint:#fdf6e7;--danger:#b42318;--danger-tint:#fef3f2;--danger-line:#f3c3bf;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-full:9999px;--shadow-sm:0 1px 2px #141a170f;--shadow-md:0 2px 8px #141a1712, 0 1px 2px #141a170d;--shadow-lg:0 12px 28px #141a171a, 0 2px 6px #141a170f;--shadow-table:0 24px 60px #0d241d47, 0 4px 12px #0d241d2e;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.4, .64, 1);--fast:.14s;--normal:.24s;--slow:.42s;font-family:var(--font-sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}body{background:var(--paper);min-height:100vh}#root{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3,h4{color:var(--ink);letter-spacing:-.018em;font-weight:600;line-height:1.2}h1{letter-spacing:-.026em;font-size:1.875rem}h2{font-size:1.375rem}h3{font-size:.9375rem}h4{font-size:.875rem}p{color:var(--ink-2);line-height:1.6}a{color:var(--accent);border-bottom:1px solid var(--accent-ring);transition:border-color var(--fast) var(--ease-out);font-weight:500;text-decoration:none}a:hover{border-bottom-color:var(--accent)}.num,.card-value,.seat-card-value,.room-code,.stat-value,.vote-chip{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.glass-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.btn{justify-content:center;align-items:center;gap:var(--s2);min-height:40px;padding:0 var(--s4);border-radius:var(--radius-md);font-family:var(--font-sans);letter-spacing:-.006em;cursor:pointer;white-space:nowrap;transition:background-color var(--fast) var(--ease-out), border-color var(--fast) var(--ease-out), color var(--fast) var(--ease-out), box-shadow var(--fast) var(--ease-out), transform var(--fast) var(--ease-out);border:1px solid #0000;font-size:.9375rem;font-weight:500;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:var(--ink-on-accent);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--accent-hover);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn-secondary:hover{background:var(--well);border-color:var(--ink-3)}.btn-danger{background:var(--surface);color:var(--danger);border-color:var(--danger-line)}.btn-danger:hover{background:var(--danger-tint);border-color:var(--danger)}.btn-ghost{color:var(--ink-2);background:0 0}.btn-ghost:hover{background:var(--well);color:var(--ink)}.btn-sm{min-height:32px;padding:0 var(--s3);font-size:.8125rem}.btn-lg{min-height:48px;padding:0 var(--s5);font-size:1rem}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.input-group{gap:var(--s2);flex-direction:column;display:flex}.input-group label{color:var(--ink-2);font-size:.8125rem;font-weight:500}.input,.select{width:100%;min-height:44px;padding:var(--s3) var(--s4);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-md);color:var(--ink);font-family:var(--font-sans);transition:border-color var(--fast) var(--ease-out), box-shadow var(--fast) var(--ease-out);outline:none;font-size:.9375rem}textarea.input{resize:vertical;min-height:72px;line-height:1.5}.input::placeholder{color:var(--ink-3)}.input:hover:not(:focus),.select:hover:not(:focus){border-color:var(--ink-3)}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%235b645f' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;padding-right:36px}.badge{padding:3px var(--s2);border-radius:var(--radius-sm);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;border:1px solid #0000;align-items:center;font-size:.6875rem;font-weight:600;display:inline-flex}.badge-accent{background:var(--accent-tint);color:var(--accent);border-color:#1b4d3e29}.badge-success{background:var(--accent-tint);color:var(--accent);font-family:var(--font-mono);font-variant-numeric:tabular-nums;border-color:#1b4d3e29}.badge-warning{background:var(--well);color:var(--ink-2);border-color:var(--line-strong)}.badge-muted{color:var(--ink-3);border-color:var(--line);background:0 0}.error-message{align-items:flex-start;gap:var(--s2);padding:var(--s3) var(--s4);background:var(--danger-tint);border:1px solid var(--danger-line);border-radius:var(--radius-md);color:var(--danger);font-size:.875rem;line-height:1.45;display:flex}.error-message:before{content:"!";border-radius:var(--radius-full);background:var(--danger);color:#fff;text-align:center;flex:none;width:16px;height:16px;margin-top:2px;font-size:.6875rem;font-weight:700;line-height:16px}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes scaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes pulseDot{0%,to{opacity:1}50%{opacity:.35}}.animate-fade-in{animation:fadeIn var(--normal) var(--ease-out) both}.animate-fade-in-up{animation:fadeInUp var(--slow) var(--ease-out) both}.animate-scale-in{animation:scaleIn var(--normal) var(--ease-spring) both}.stagger>*{animation:fadeInUp var(--normal) var(--ease-out) both}.stagger>:first-child{animation-delay:0s}.stagger>:nth-child(2){animation-delay:50ms}.stagger>:nth-child(3){animation-delay:.1s}.stagger>:nth-child(4){animation-delay:.15s}.stagger>:nth-child(5){animation-delay:.2s}.stagger>:nth-child(6){animation-delay:.25s}.stagger>:nth-child(7){animation-delay:.3s}.stagger>:nth-child(8){animation-delay:.35s}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line-strong);border:3px solid var(--paper);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}.text-accent{color:var(--accent)}.text-secondary{color:var(--ink-2)}.text-success{color:var(--accent)}.text-danger{color:var(--danger)}.text-center{text-align:center}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=768px){h1{font-size:1.5rem}h2{font-size:1.1875rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.auth-page{padding:var(--s5) var(--s4);background:radial-gradient(ellipse 70% 50% at 50% 0%, #1b4d3e0d, transparent 70%), var(--paper);flex:1;justify-content:center;align-items:center;display:flex}.auth-card{width:100%;max-width:400px;padding:var(--s6);box-shadow:var(--shadow-lg)}.auth-brand{align-items:center;gap:var(--s3);margin-bottom:var(--s5);display:flex}.auth-logo{background:var(--accent);border-radius:var(--radius-md);place-items:center;width:36px;height:36px;font-size:1.125rem;line-height:1;display:grid}.auth-title{letter-spacing:-.02em;font-size:1.125rem;font-weight:600}.auth-subtitle{margin-bottom:var(--s5);letter-spacing:-.022em;font-size:1.375rem;font-weight:600}.auth-form{gap:var(--s4);flex-direction:column;display:flex}.auth-form .btn{width:100%;margin-top:var(--s1)}.auth-footer{margin-top:var(--s5);padding-top:var(--s4);border-top:1px solid var(--line);color:var(--ink-2);font-size:.875rem}.auth-subtitle .text-accent{font-family:var(--font-mono);letter-spacing:.06em;font-weight:700}.role-group{gap:var(--s2);flex-direction:column;display:flex}.role-label{color:var(--ink-2);font-size:.8125rem;font-weight:500}.role-options{gap:var(--s2);grid-template-columns:1fr 1fr;display:grid}.role-option{justify-content:center;align-items:center;gap:var(--s2);min-height:48px;padding:0 var(--s3);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-md);color:var(--ink-2);cursor:pointer;transition:border-color var(--fast) var(--ease-out), background-color var(--fast) var(--ease-out), color var(--fast) var(--ease-out);font-size:.875rem;font-weight:500;display:flex}.role-option:hover{border-color:var(--ink-3)}.role-option input{opacity:0;pointer-events:none;position:absolute}.role-option:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.role-option.active{background:var(--accent-tint);border-color:var(--accent);color:var(--accent)}.dashboard-page{flex-direction:column;flex:1;display:flex}.dashboard-header{justify-content:space-between;align-items:center;gap:var(--s4);padding:var(--s3) var(--s5);background:var(--surface);border:none;border-bottom:1px solid var(--line);box-shadow:none;border-radius:0;display:flex}.dashboard-brand{align-items:center;gap:var(--s2);display:flex}.brand-logo{background:var(--accent);border-radius:var(--radius-sm);place-items:center;width:30px;height:30px;font-size:.9375rem;line-height:1;display:grid}.brand-name{letter-spacing:-.015em;font-size:.9375rem;font-weight:600}.dashboard-user{align-items:center;gap:var(--s3);display:flex}.user-greeting{color:var(--ink-2);font-size:.875rem}.user-greeting strong{color:var(--ink);font-weight:600}.dashboard-main{padding:var(--s8) var(--s4);flex:1;justify-content:center;display:flex}.dashboard-content{width:100%;max-width:520px}.dashboard-content>h1{margin-bottom:var(--s2)}.dashboard-content>p{margin-bottom:var(--s6);font-size:1rem}.create-form{gap:var(--s4);padding:var(--s5);flex-direction:column;display:flex}.create-form .btn{width:100%}.session-created{gap:var(--s4);padding:var(--s5);border-color:var(--accent-ring);flex-direction:column;display:flex}.session-created-header{justify-content:space-between;align-items:center;gap:var(--s3);padding-bottom:var(--s4);border-bottom:1px solid var(--line);display:flex}.session-created>p{font-size:.875rem}.room-code{letter-spacing:.14em;color:var(--ink);font-size:1.25rem;font-weight:700}.join-link-row{gap:var(--s2);display:flex}.join-link-input{background:var(--well);min-width:0;font-family:var(--font-mono);color:var(--ink-2);cursor:text;flex:1;font-size:.8125rem}.join-link-row .btn{flex:none}.session-created .btn-lg{width:100%}.room-page{gap:var(--s6);width:100%;max-width:1240px;padding:var(--s6) var(--s5);flex:1;grid-template-columns:minmax(0,1fr) 320px;align-items:start;margin:0 auto;display:grid}.room-main{align-items:center;gap:var(--s5);flex-direction:column;min-width:0;display:flex}.room-sidebar{gap:var(--s4);top:var(--s5);flex-direction:column;display:flex;position:sticky}.ticket-panel{width:100%;max-width:620px;padding:var(--s4) var(--s5);text-align:center}.ticket-key{margin-bottom:var(--s2)}.ticket-summary{font-size:1.125rem;font-weight:600;line-height:1.35}.ticket-desc{margin-top:var(--s2);font-size:.875rem;line-height:1.55}.ticket-panel.empty{box-shadow:none;background:0 0;border-style:dashed}.ticket-panel.empty p{color:var(--ink-3);font-size:.875rem}.poker-table{aspect-ratio:1.35;perspective:1000px;width:100%;max-width:min(520px,max(260px,135vh - 580.5px));position:relative}.table-surface{background:radial-gradient(ellipse at 50% 34%, #235a49 0%, var(--felt) 42%, var(--felt-deep) 100%);border:6px solid var(--felt-rail);box-shadow:var(--shadow-table), inset 0 2px 12px #ffffff12, inset 0 -10px 30px #0000004d;border-radius:50%;place-items:center;display:grid;position:absolute;inset:0}.table-logo{color:#ffffff0e;-webkit-user-select:none;user-select:none;font-size:clamp(2rem,7vw,3.25rem);line-height:1}.table-empty-hint{padding:0 var(--s6);color:#f2f5f39e;text-align:center;pointer-events:none;place-items:center;font-size:.875rem;display:grid;position:absolute;inset:0}.player-seat{align-items:center;gap:var(--s2);flex-direction:column;width:clamp(56px,15vw,72px);display:flex;position:absolute;transform:translate(-50%,-50%)}.seat-card{border-radius:var(--radius-sm);width:clamp(40px,11vw,52px);height:clamp(56px,15.4vw,73px);transition:background-color var(--normal) var(--ease-out), border-color var(--normal) var(--ease-out);backface-visibility:hidden;place-items:center;display:grid}.seat-card.empty{background:#00000024;border:1.5px dashed #f2f5f34d}.seat-card.facedown{background:repeating-linear-gradient(45deg,#ffffff0d 0 3px,#0000 3px 6px),linear-gradient(160deg,#2a6553,#1a4437);border:1.5px solid #f2f5f338;box-shadow:0 3px 8px #00000047}.seat-card-back{color:#f2f5f36b;font-size:1.0625rem;line-height:1}.seat-card.revealed{border:1.5px solid var(--brass);background:linear-gradient(#fff,#f6f3ec);box-shadow:0 6px 16px #00000052}.seat-card-value{color:var(--ink);font-size:1.375rem;font-weight:700;line-height:1}@keyframes dealerFlip{0%{transform:rotateY(90deg)}to{transform:rotateY(0)}}.seat-card.revealed{animation:dealerFlip .32s var(--ease-out) backwards}.poker-table .player-seat:nth-child(2) .seat-card.revealed{animation-delay:0s}.poker-table .player-seat:nth-child(3) .seat-card.revealed{animation-delay:70ms}.poker-table .player-seat:nth-child(4) .seat-card.revealed{animation-delay:.14s}.poker-table .player-seat:nth-child(5) .seat-card.revealed{animation-delay:.21s}.poker-table .player-seat:nth-child(6) .seat-card.revealed{animation-delay:.28s}.poker-table .player-seat:nth-child(7) .seat-card.revealed{animation-delay:.35s}.poker-table .player-seat:nth-child(8) .seat-card.revealed{animation-delay:.42s}.poker-table .player-seat:nth-child(9) .seat-card.revealed{animation-delay:.49s}.seat-name{color:#f2f5f3d1;text-align:center;text-shadow:0 1px 3px #00000080;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.75rem;font-weight:500;overflow:hidden}.poker-grid{gap:var(--s4);width:100%;max-width:620px;padding:var(--s5);background:var(--felt);border:6px solid var(--felt-rail);border-radius:var(--radius-xl);box-shadow:var(--shadow-table);perspective:1000px;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));display:grid}.poker-grid .player-seat{width:auto;position:static;transform:none}.poker-grid .player-seat:first-child .seat-card.revealed{animation-delay:0s}.poker-grid .player-seat:nth-child(2) .seat-card.revealed{animation-delay:45ms}.poker-grid .player-seat:nth-child(3) .seat-card.revealed{animation-delay:90ms}.poker-grid .player-seat:nth-child(4) .seat-card.revealed{animation-delay:.135s}.poker-grid .player-seat:nth-child(5) .seat-card.revealed{animation-delay:.18s}.poker-grid .player-seat:nth-child(6) .seat-card.revealed{animation-delay:.225s}.poker-grid .player-seat:nth-child(7) .seat-card.revealed{animation-delay:.27s}.poker-grid .player-seat:nth-child(8) .seat-card.revealed{animation-delay:.315s}.poker-grid .player-seat:nth-child(9) .seat-card.revealed{animation-delay:.36s}.poker-grid .player-seat:nth-child(10) .seat-card.revealed{animation-delay:.405s}.poker-grid .player-seat:nth-child(n+11) .seat-card.revealed{animation-delay:.45s}.card-deck{justify-content:center;gap:var(--s2);width:100%;max-width:620px;display:flex}.poker-card{justify-content:center;align-items:center;gap:var(--s1);aspect-ratio:.7;min-width:48px;padding:var(--s2);background:var(--surface);border:1.5px solid var(--line-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform var(--fast) var(--ease-out), border-color var(--fast) var(--ease-out), box-shadow var(--fast) var(--ease-out), background-color var(--fast) var(--ease-out);flex-direction:column;flex:0 68px;display:flex}.poker-card:hover:not(:disabled){border-color:var(--accent);box-shadow:var(--shadow-lg);transform:translateY(-6px)}.card-value{color:var(--ink);font-size:1.25rem;font-weight:700;line-height:1}.card-suit{color:var(--ink-3);font-size:.75rem;line-height:1}.poker-card.selected{background:var(--accent);border-color:var(--accent);box-shadow:var(--shadow-lg);transform:translateY(-10px)}.poker-card.selected .card-value,.poker-card.selected .card-suit{color:var(--ink-on-accent)}.poker-card.selected .card-suit{opacity:.7}.poker-card:disabled{opacity:.4;cursor:not-allowed;transform:none}.vote-progress{align-items:center;gap:var(--s2);color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:.8125rem;font-weight:500;display:inline-flex}.vote-progress:before{content:"";border-radius:var(--radius-full);background:var(--line-strong);width:7px;height:7px;animation:pulseDot 1.8s var(--ease-out) infinite}.vote-progress.all-in{color:var(--accent);font-weight:600}.vote-progress.all-in:before{background:var(--accent);animation:none}.vote-reveal{width:100%;max-width:620px;padding:var(--s5);text-align:center}.vote-reveal h3{margin-bottom:var(--s4);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:.75rem;font-weight:600}.vote-stats{justify-content:center;gap:var(--s7);display:flex}.vote-stat{gap:var(--s1);flex-direction:column;display:flex}.stat-label{color:var(--ink-2);order:2;font-size:.75rem;font-weight:500}.stat-value{color:var(--ink);order:1;font-size:2rem;font-weight:700;line-height:1}.stat-value.high-variance{color:var(--brass)}.variance-warning{margin-top:var(--s4);padding-top:var(--s4);border-top:1px solid var(--line);color:var(--ink-2);font-size:.875rem}.vote-chip{min-width:32px;padding:var(--s1) var(--s2);background:var(--well);border-radius:var(--radius-sm);justify-content:center;align-items:center;font-weight:700;display:inline-flex}@keyframes noteIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.facilitator-note{margin-top:var(--s5);padding:var(--s4);background:var(--brass-tint);border:1px solid #c08a2e4d;border-left:3px solid var(--brass);border-radius:var(--radius-md);text-align:left;animation:noteIn var(--slow) var(--ease-out) both}.facilitator-note-label{margin-bottom:var(--s2);letter-spacing:.07em;text-transform:uppercase;color:#8a6220;font-size:.6875rem;font-weight:700;display:block}.facilitator-note p{color:#4a3a1c;font-size:.9375rem;line-height:1.6}.host-controls{justify-content:center;gap:var(--s2);width:100%;max-width:620px;padding:var(--s4);background:var(--well);border:1px solid var(--line);border-radius:var(--radius-lg);bottom:var(--s4);z-index:20;box-shadow:var(--shadow-md);display:flex;position:sticky}.host-controls:before{content:"Host";top:-8px;left:var(--s4);padding:0 var(--s2);background:var(--paper);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);font-size:.6875rem;font-weight:600;position:absolute}.observer-notice{width:100%;max-width:620px;padding:var(--s4);box-shadow:none;text-align:center;background:0 0;border-style:dashed}.observer-notice p{color:var(--ink-3);font-size:.875rem}.session-ended{max-width:400px;margin:var(--s8) auto;padding:var(--s6);text-align:center}.session-ended h2{margin-bottom:var(--s2)}.observer-list,.invite-panel,.ticket-manager{padding:var(--s4)}.observer-header,.invite-header,.ticket-manager-header,.participant-header{justify-content:space-between;align-items:center;gap:var(--s2);margin-bottom:var(--s3);display:flex}.observer-header h3,.invite-header h3,.ticket-manager-header h3,.participant-header h3{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:.75rem;font-weight:600}.invite-header .room-code{font-size:.9375rem}.invite-panel .join-link-row{flex-direction:column}.invite-panel .join-link-row .btn{width:100%}.participant-list{padding:var(--s4)}.observer-empty,.ticket-list-empty{padding:var(--s2) 0;color:var(--ink-3);font-size:.8125rem;line-height:1.5}.observer-items,.participant-items,.ticket-list{gap:var(--s1);flex-direction:column;list-style:none;display:flex}.observer-item,.participant-item{align-items:center;gap:var(--s2);padding:var(--s2);border-radius:var(--radius-sm);display:flex}.observer-item:hover,.participant-item:hover{background:var(--well)}.participant-avatar{background:var(--accent-tint);border-radius:var(--radius-full);width:26px;height:26px;color:var(--accent);flex:none;place-items:center;font-size:.6875rem;font-weight:600;display:grid}.participant-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.875rem;overflow:hidden}.watching-indicator{opacity:.5;font-size:.75rem}.participant-status{align-items:center;gap:var(--s2);display:flex}.status-dot{border-radius:var(--radius-full);width:7px;height:7px}.status-dot.waiting{background:var(--line-strong);animation:pulseDot 1.8s var(--ease-out) infinite}.status-dot.voted{background:var(--accent)}.ticket-source-choice{gap:var(--s2);margin-bottom:var(--s3);flex-direction:column;display:flex}.source-option{align-items:center;gap:0 var(--s3);padding:var(--s3);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-md);text-align:left;cursor:pointer;transition:border-color var(--fast) var(--ease-out), background-color var(--fast) var(--ease-out);grid-template-rows:auto auto;grid-template-columns:auto 1fr;display:grid;position:relative}.source-option:hover:not(:disabled){border-color:var(--accent);background:var(--accent-tint)}.source-option:disabled{opacity:.55;cursor:not-allowed}.source-option-icon{grid-row:1/3;font-size:1.125rem}.source-option-title{color:var(--ink);font-size:.875rem;font-weight:600}.source-option-hint{color:var(--ink-2);font-size:.75rem}.source-option-badge{top:var(--s2);right:var(--s2);position:absolute}.ticket-form{gap:var(--s3);margin-bottom:var(--s4);padding-bottom:var(--s4);border-bottom:1px solid var(--line);flex-direction:column;display:flex}.ticket-item{justify-content:space-between;align-items:center;gap:var(--s2);padding:var(--s2) var(--s2) var(--s2) var(--s3);border-radius:var(--radius-md);transition:background-color var(--fast) var(--ease-out), border-color var(--fast) var(--ease-out);border:1px solid #0000;display:flex}.ticket-item:hover{background:var(--well)}.ticket-item-info{align-items:center;gap:var(--s2);min-width:0;display:flex}.ticket-item-summary{text-overflow:ellipsis;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:.8125rem;line-height:1.35;display:-webkit-box;overflow:hidden}.ticket-item-actions{align-items:center;gap:var(--s1);flex:none;display:flex}.ticket-item.active{background:var(--accent-tint);border-color:var(--accent-ring)}.ticket-item.estimated .ticket-item-summary{color:var(--ink-3)}.ticket-delete-btn{min-height:26px;padding:0 var(--s2);color:var(--ink-3);opacity:0;transition:opacity var(--fast) var(--ease-out), color var(--fast) var(--ease-out);font-size:1rem;line-height:1}.ticket-item:hover .ticket-delete-btn,.ticket-delete-btn:focus-visible{opacity:1}.ticket-delete-btn:hover{color:var(--danger);background:var(--danger-tint)}.end-session-btn{width:100%}.connection-status{z-index:50;justify-content:center;align-items:center;gap:var(--s2);padding:var(--s2) var(--s4);background:var(--ink);color:var(--ink-on-dark);box-shadow:var(--shadow-md);font-size:.8125rem;font-weight:500;display:flex;position:fixed;top:0;left:0;right:0}.connection-status:before{content:"";border-radius:var(--radius-full);background:var(--brass-bright);width:7px;height:7px;animation:pulseDot 1.4s var(--ease-out) infinite}@keyframes backdropIn{0%{opacity:0}to{opacity:1}}.modal-backdrop{z-index:100;padding:var(--s4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:backdropIn var(--fast) var(--ease-out) both;background:#0d241d6b;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{width:100%;max-width:420px;max-height:calc(100vh - var(--s7));background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);outline:none;flex-direction:column;display:flex}.modal-header{justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s4) var(--s4) var(--s3) var(--s5);border-bottom:1px solid var(--line);display:flex}.modal-title{letter-spacing:-.015em;text-transform:none;color:var(--ink);font-size:1rem;font-weight:600}.modal-close{min-height:28px;padding:0 var(--s2);color:var(--ink-3);flex:none;font-size:1.25rem;line-height:1}.modal-body{padding:var(--s5);overflow-y:auto}.modal-body>p{font-size:.9375rem}.modal-footer{justify-content:flex-end;gap:var(--s2);padding:var(--s4) var(--s5);background:var(--well);border-top:1px solid var(--line);border-radius:0 0 var(--radius-lg) var(--radius-lg);display:flex}.estimate-intro{margin-bottom:var(--s4);font-size:.875rem}.estimate-picker{gap:var(--s2);grid-template-columns:repeat(auto-fit,minmax(44px,1fr));display:grid}.estimate-option{background:var(--surface);border:1.5px solid var(--line-strong);border-radius:var(--radius-md);min-height:52px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);cursor:pointer;transition:border-color var(--fast) var(--ease-out), background-color var(--fast) var(--ease-out), color var(--fast) var(--ease-out);place-items:center;font-size:1.0625rem;font-weight:700;display:grid}.estimate-option:hover{border-color:var(--accent)}.estimate-option.selected{background:var(--accent);border-color:var(--accent);color:var(--ink-on-accent)}.estimate-context{margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--line);color:var(--ink-2);font-size:.8125rem}.estimate-context strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink)}.landing-page{background:radial-gradient(ellipse 60% 45% at 50% 0%, #1b4d3e0f, transparent 70%), var(--paper);flex-direction:column;flex:1;display:flex}.landing-header{justify-content:space-between;align-items:center;gap:var(--s4);width:100%;max-width:1080px;padding:var(--s4) var(--s5);margin:0 auto;display:flex}.landing-nav{align-items:center;gap:var(--s2);display:flex}.landing-header .btn-ghost:hover{border-bottom-color:#0000}.landing-hero{align-items:center;gap:var(--s8);width:100%;max-width:1080px;padding:var(--s8) var(--s5);grid-template-columns:minmax(0,1fr) minmax(0,360px);margin:0 auto;display:grid}.hero-eyebrow{margin-bottom:var(--s3);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:600}.hero-heading{letter-spacing:-.032em;max-width:15ch;font-size:clamp(2rem,4.6vw,2.875rem);line-height:1.08}.hero-sub{max-width:46ch;margin-top:var(--s4);font-size:1.0625rem}.hero-actions{align-items:center;gap:var(--s3);margin-top:var(--s6);flex-wrap:wrap;display:flex}.hero-actions .btn-lg{border-bottom-color:#0000}.hero-join{gap:var(--s2);display:flex}.hero-code-input{width:11ch;min-height:48px;font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;font-size:1rem;font-weight:600}.hero-code-input::placeholder{letter-spacing:.06em;text-transform:none;font-weight:400}.hero-note{margin-top:var(--s4);font-size:.8125rem}.landing-fan{height:260px;position:relative}.fan-card{justify-content:center;align-items:center;gap:var(--s1);aspect-ratio:.7;background:var(--surface);border:1.5px solid var(--line-strong);border-radius:var(--radius-md);width:clamp(74px,19vw,94px);box-shadow:var(--shadow-md);transform-origin:50% 135%;flex-direction:column;display:flex;position:absolute;top:50%;left:50%}.fan-card:first-child{z-index:1;transform:translate(-50%,-50%)rotate(-21deg)}.fan-card:nth-child(2){z-index:2;transform:translate(-50%,-50%)rotate(-7deg)}.fan-card:nth-child(3){z-index:3;transform:translate(-50%,-50%)rotate(7deg)}.fan-card:nth-child(4){z-index:4;transform:translate(-50%,-54%)rotate(21deg)}.fan-card-back{background:repeating-linear-gradient(45deg, #ffffff0d 0 5px, transparent 5px 10px), radial-gradient(ellipse at 50% 30%, #235a49, var(--felt-deep));border-color:var(--felt-rail)}.fan-card-picked{background:var(--accent);border-color:var(--accent);box-shadow:var(--shadow-lg)}.fan-card-picked .card-value,.fan-card-picked .card-suit{color:var(--ink-on-accent)}.fan-card-picked .card-suit{opacity:.7}.landing-section{width:100%;max-width:1080px;padding:var(--s8) var(--s5);border-top:1px solid var(--line);margin:0 auto}.section-heading{margin-bottom:var(--s6);letter-spacing:-.024em;font-size:clamp(1.375rem,3vw,1.75rem)}.step-list{gap:var(--s6);grid-template-columns:repeat(3,minmax(0,1fr));list-style:none;display:grid}.step{align-items:flex-start;gap:var(--s4);display:flex}.step-number{background:var(--accent-tint);border-radius:var(--radius-full);width:32px;height:32px;color:var(--accent);border:1px solid #1b4d3e29;flex:none;place-items:center;font-size:.875rem;font-weight:700;line-height:1;display:grid}.step-title{margin-bottom:var(--s2)}.step p{font-size:.875rem}.feature-grid{gap:var(--s4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.feature-card{gap:var(--s3);padding:var(--s5);flex-direction:column;display:flex}.feature-card-header{justify-content:space-between;align-items:center;gap:var(--s3);display:flex}.feature-card p{font-size:.875rem}.feature-card .badge-muted{color:var(--ink-2)}.landing-footer{justify-content:space-between;align-items:center;gap:var(--s3);width:100%;max-width:1080px;padding:var(--s5);border-top:1px solid var(--line);flex-wrap:wrap;margin:auto auto 0;display:flex}.footer-stack,.footer-meta{color:var(--ink-2);font-size:.8125rem}.footer-meta{align-items:center;gap:var(--s4);display:flex}@media (width<=900px){.landing-hero{gap:var(--s6);padding-top:var(--s6);grid-template-columns:minmax(0,1fr)}.hero-heading{max-width:20ch}.landing-fan{height:210px}.step-list{gap:var(--s5);grid-template-columns:repeat(2,minmax(0,1fr))}.feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.landing-header{padding:var(--s3) var(--s4)}.landing-header .brand-name{font-size:.875rem}.landing-hero{padding:var(--s5) var(--s4) var(--s6)}.hero-heading{max-width:none;font-size:1.75rem}.hero-sub{font-size:1rem}.hero-actions{align-items:stretch;gap:var(--s3);flex-direction:column}.hero-actions .btn-lg{width:100%}.hero-join .btn{flex:none}.hero-code-input{flex:1;width:auto;min-width:0}.landing-fan{height:180px}.landing-section{padding:var(--s6) var(--s4)}.section-heading{margin-bottom:var(--s5)}.step-list,.feature-grid{grid-template-columns:minmax(0,1fr)}.step-list{gap:var(--s4)}.landing-footer{padding:var(--s5) var(--s4);flex-direction:column;align-items:flex-start}}@media (height<=820px){.room-page{padding:var(--s5)}.room-main{gap:var(--s4)}.ticket-panel{padding:var(--s3) var(--s4)}.vote-reveal{padding:var(--s4)}.vote-reveal h3{margin-bottom:var(--s3)}.stat-value{font-size:1.5rem}}@media (width<=1000px){.room-page{gap:var(--s5);padding:var(--s5) var(--s4);grid-template-columns:minmax(0,1fr)}.room-sidebar{position:static}}@media (width<=640px){.room-page{padding:var(--s4) var(--s3) var(--s3);gap:var(--s4)}.room-main{gap:var(--s4)}.ticket-panel{padding:var(--s3) var(--s4)}.ticket-summary{font-size:1rem}.poker-table{aspect-ratio:1.15}.table-surface{inset:7% 13%}.player-seat{width:clamp(48px,17vw,60px)}.seat-card{width:clamp(34px,12vw,44px);height:clamp(48px,17vw,62px)}.seat-card-value{font-size:1.125rem}.seat-name{font-size:.6875rem}.card-deck{z-index:20;gap:var(--s1);margin:0 calc(var(--s3) * -1);padding:var(--s3);background:var(--paper);border-top:1px solid var(--line);scrollbar-width:none;justify-content:flex-start;position:sticky;bottom:0;overflow-x:auto}.card-deck::-webkit-scrollbar{display:none}.poker-card{min-width:52px;padding:var(--s1);flex:0 0 52px}.poker-card:hover:not(:disabled){transform:none}.poker-card.selected{transform:translateY(-4px)}.card-value{font-size:1.0625rem}.vote-reveal{padding:var(--s4)}.vote-stats{gap:var(--s6)}.stat-value{font-size:1.625rem}.host-controls{box-shadow:none;flex-wrap:wrap;position:relative;bottom:auto}.host-controls .btn{flex:140px}.dashboard-main{padding:var(--s5) var(--s4)}.dashboard-header{padding:var(--s3) var(--s4)}.user-greeting{display:none}.auth-card{padding:var(--s5)}.join-link-row{flex-direction:column}.join-link-row .btn{width:100%}.modal-backdrop{align-items:flex-end;padding:0}.modal{border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-width:none;max-height:88vh}.modal-footer{padding-bottom:calc(var(--s4) + env(safe-area-inset-bottom,0px));border-radius:0}.modal-footer .btn{flex:1}}
