.library-page{min-height:100vh;min-height:100svh;display:flex;flex-direction:column}.library-header{position:sticky;top:0;z-index:10;background:var(--color-bg);border-bottom:1px solid var(--color-border);padding:calc(10px + env(safe-area-inset-top,0px)) 12px 10px 12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.sort-controls{display:flex;gap:4px}.sort-btn{padding:10px 12px;min-height:44px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);font-family:var(--font-sans);font-size:.8125rem;font-weight:500;cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease}.sort-btn:hover{color:var(--color-text);border-color:var(--color-text-muted)}.sort-btn.active{color:var(--color-accent);border-color:var(--color-accent);background:#e5a00d14}.refresh-btn{padding:10px;min-height:44px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);font-family:var(--font-sans);font-size:.8125rem;cursor:pointer;display:flex;align-items:center;gap:5px;transition:color .15s ease,border-color .15s ease}.refresh-btn:hover{color:var(--color-text);border-color:var(--color-text-muted)}.refresh-btn:disabled{opacity:.5;cursor:not-allowed}.refresh-btn svg{width:14px;height:14px}.refresh-btn.spinning svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.watch-together-btn{padding:8px 16px;background:var(--color-accent);color:#1a1a2e;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:.875rem;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;transition:background-color .15s ease;white-space:nowrap;min-height:44px}.watch-together-btn:hover{background:var(--color-accent-hover)}.header-spacer{flex:1}.settings-link{padding:10px;min-height:44px;min-width:44px;background:none;border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;text-decoration:none;transition:color .15s ease,border-color .15s ease}.settings-link:hover{color:var(--color-text);border-color:var(--color-text-muted)}.settings-link svg{width:16px;height:16px}.sync-progress{width:100%;padding:0;font-size:.8125rem;color:var(--color-accent);font-weight:500}.poster-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px}@media (min-width: 640px){.poster-grid{grid-template-columns:repeat(4,1fr)}}@media (min-width: 900px){.poster-grid{grid-template-columns:repeat(6,1fr)}}@media (min-width: 1200px){.poster-grid{grid-template-columns:repeat(8,1fr)}}.poster-card{position:relative;aspect-ratio:2 / 3;border-radius:var(--radius);overflow:hidden;background:var(--color-surface);cursor:pointer}.poster-card img{width:100%;height:100%;object-fit:cover;display:block}.poster-card.watched{opacity:.5}.poster-card .unwatched-badge{position:absolute;top:6px;right:6px;width:10px;height:10px;border-radius:50%;background:var(--color-accent);z-index:2;box-shadow:0 1px 3px #0006}.poster-overlay{position:absolute;bottom:0;left:0;right:0;padding:24px 8px 8px;background:linear-gradient(to top,rgba(0,0,0,.85) 0%,transparent 100%);opacity:0;transition:opacity .2s ease;pointer-events:none}.poster-card:hover .poster-overlay,.poster-card.active .poster-overlay{opacity:1}.poster-title{font-size:.8125rem;font-weight:600;color:#fff;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.poster-meta{font-size:.6875rem;color:var(--color-text-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skeleton-card{aspect-ratio:2 / 3;border-radius:var(--radius);background:var(--color-surface);animation:skeleton-pulse 1.5s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{background:var(--color-surface)}50%{background:var(--color-surface-hover)}}.error-toast{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);background:#ef444426;color:var(--color-error);border:1px solid rgba(239,68,68,.3);border-radius:var(--radius);padding:10px 20px;font-size:.875rem;z-index:100;animation:toast-in .3s ease;max-width:90%;text-align:center}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.library-empty{text-align:center;padding:48px 24px;color:var(--color-text-muted)}.library-empty p{margin:8px 0;font-size:.9375rem}.library-empty a{color:var(--color-accent);text-decoration:none}.library-empty a:hover{text-decoration:underline}.empty-watch-link{display:inline-block;margin-top:16px;padding:10px 20px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text)!important;font-weight:500;text-decoration:none!important;transition:border-color .15s ease,background-color .15s ease}.empty-watch-link:hover{border-color:var(--color-accent);background:var(--color-surface-hover)}.watch-fab{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom,0px));right:calc(24px + env(safe-area-inset-right,0px));display:flex;align-items:center;gap:8px;padding:14px 24px;background:var(--color-accent);color:#1a1a2e;border:none;border-radius:28px;font-family:var(--font-sans);font-size:1rem;font-weight:600;text-decoration:none;cursor:pointer;box-shadow:0 4px 12px #0006;transition:background-color .15s ease,transform .1s ease,box-shadow .15s ease;z-index:20}.watch-fab:hover{background:var(--color-accent-hover);transform:translateY(-2px);box-shadow:0 6px 16px #00000080}.watch-fab:active{transform:translateY(0)}.config-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;min-height:100svh;padding:16px}.config-header{position:fixed;top:calc(16px + env(safe-area-inset-top,0px));right:calc(16px + env(safe-area-inset-right,0px));z-index:10}.settings-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:8px;color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s ease,border-color .15s ease}.settings-btn:hover{color:var(--color-text);border-color:var(--color-text-muted)}.config-card{background:var(--color-surface);border-radius:var(--radius);padding:32px;max-width:480px;width:100%;box-shadow:0 4px 24px #0000004d}.config-card h1{margin:0 0 8px;font-size:1.5rem;font-weight:600;color:var(--color-text)}.config-card .config-subtitle{margin:0 0 28px;font-size:.875rem;color:var(--color-text-muted)}.auth-tabs{display:flex;gap:0;margin-bottom:20px;border-bottom:1px solid var(--color-border)}.auth-tab{flex:1;padding:10px 16px;background:none;border:none;border-bottom:2px solid transparent;color:var(--color-text-muted);font-family:var(--font-sans);font-size:.875rem;font-weight:500;cursor:pointer;transition:color .15s ease,border-color .15s ease}.auth-tab:hover{color:var(--color-text)}.auth-tab.active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.auth-section{margin-bottom:20px}.pin-start{text-align:center;padding:8px 0}.token-status{margin:0 0 12px;font-size:.8125rem;color:var(--color-text-muted)}.plex-signin-btn{width:100%;padding:12px 24px;background:var(--color-accent);color:#1a1a2e;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:.9375rem;font-weight:600;cursor:pointer;transition:background-color .15s ease}.plex-signin-btn:hover{background:var(--color-accent-hover)}.pin-auth{text-align:center;padding:16px 0}.pin-code{font-family:var(--font-mono);font-size:clamp(1.75rem,8vw,3rem);font-weight:700;letter-spacing:clamp(.2em,2vw,.5em);padding:20px;margin:16px 0;color:var(--color-accent);background:var(--color-bg);border:2px solid var(--color-accent);border-radius:var(--radius);display:inline-block;min-width:min(200px,80vw)}.pin-instructions{margin:12px 0 4px;font-size:.9375rem;color:var(--color-text)}.pin-instructions a{color:var(--color-accent);text-decoration:none;font-weight:600}.pin-instructions a:hover{text-decoration:underline}.pin-waiting{margin:8px 0 16px;font-size:.8125rem;color:var(--color-text-muted);animation:pulse 2s ease-in-out infinite}.pin-loading{color:var(--color-text-muted);font-size:.9375rem}.pin-error{color:var(--color-error);margin:0 0 12px;font-size:.9375rem}.pin-retry-btn{padding:10px 20px;background:var(--color-accent);color:#1a1a2e;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:.875rem;font-weight:600;cursor:pointer;margin-right:8px;transition:background-color .15s ease}.pin-retry-btn:hover{background:var(--color-accent-hover)}.pin-cancel-btn{padding:10px 20px;background:none;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius);font-family:var(--font-sans);font-size:.875rem;cursor:pointer;transition:color .15s ease,border-color .15s ease}.pin-cancel-btn:hover{color:var(--color-text);border-color:var(--color-text-muted)}.config-field{margin-bottom:20px}.config-field label{display:block;margin-bottom:6px;font-size:.875rem;font-weight:500;color:var(--color-text)}.config-field input,.config-field select{width:100%;padding:12px;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);font-family:var(--font-sans);font-size:.9375rem;outline:none;transition:border-color .15s ease}.config-field input::placeholder{color:var(--color-text-muted);opacity:.7}.config-field input:focus,.config-field select:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px #e5a00d26}.config-field .help-text{margin-top:6px;font-size:.75rem;color:var(--color-text-muted)}.library-picker{margin-top:16px}.library-picker select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238e8ea0' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px;cursor:pointer}.library-picker select option{background:var(--color-surface);color:var(--color-text)}.config-save-btn{width:100%;padding:12px 24px;margin-top:8px;background:var(--color-accent);color:#1a1a2e;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:.9375rem;font-weight:600;cursor:pointer;transition:background-color .15s ease}.config-save-btn:hover:not(:disabled){background:var(--color-accent-hover)}.config-save-btn:disabled{opacity:.6;cursor:not-allowed}.connection-status{margin-top:16px;padding:12px 14px;border-radius:var(--radius);font-size:.875rem;display:flex;align-items:center;gap:10px}.connection-status.testing{background:#e5a00d14;color:var(--color-accent);border:1px solid rgba(229,160,13,.2)}.connection-status.success{background:#22c55e14;color:var(--color-success);border:1px solid rgba(34,197,94,.2)}.connection-status.error{background:#ef444414;color:var(--color-error);border:1px solid rgba(239,68,68,.2)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--color-accent);animation:pulse 1.5s ease-in-out infinite;flex-shrink:0}.status-icon{font-weight:700;font-size:1rem;flex-shrink:0}.config-status{margin-top:16px;padding:10px 14px;border-radius:var(--radius);font-size:.875rem;text-align:center}.config-status.success{background:#22c55e1a;color:var(--color-success);border:1px solid rgba(34,197,94,.2)}.config-status.error{background:#ef44441a;color:var(--color-error);border:1px solid rgba(239,68,68,.2)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.deck-options{width:100%;margin-bottom:16px;text-align:left}.deck-options-title{font-size:.8125rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px;text-align:center}.deck-option{padding:8px 12px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:6px}.deck-option:last-child{margin-bottom:0}.deck-option-header{display:flex;align-items:center;gap:10px;min-height:44px}.deck-option-info{flex:1;min-width:0;display:flex;align-items:center;gap:8px}.deck-option-label{font-size:.875rem;font-weight:500;color:var(--color-text);white-space:nowrap}.deck-toggle{position:relative;width:44px;height:26px;flex-shrink:0}.deck-toggle input{opacity:0;width:0;height:0;position:absolute}.deck-toggle-track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:13px;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.deck-toggle input:checked+.deck-toggle-track{background:var(--color-accent);border-color:var(--color-accent)}.deck-toggle-knob{position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s ease;pointer-events:none}.deck-toggle input:checked~.deck-toggle-knob{transform:translate(18px)}.deck-toggle input:focus-visible+.deck-toggle-track{outline:2px solid var(--color-accent);outline-offset:2px}.deck-intensity-inline{display:inline-flex;align-items:center;gap:4px;background:none;border:none;padding:2px 0;cursor:pointer;font-family:var(--font-sans);font-size:.75rem;color:var(--color-text-muted)}.deck-intensity-inline:hover{color:var(--color-text)}.deck-intensity-current{color:var(--color-accent);font-weight:500}.deck-intensity-chevron{font-size:.6rem;transition:transform .2s ease}.deck-intensity-chevron.expanded{transform:rotate(180deg)}.deck-intensity{display:flex;gap:0;margin-top:6px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--color-border)}.deck-intensity-btn{flex:1;padding:6px 0;background:var(--color-bg);color:var(--color-text-muted);border:none;border-right:1px solid var(--color-border);font-family:var(--font-sans);font-size:.75rem;font-weight:500;cursor:pointer;transition:background-color .15s ease,color .15s ease;min-height:36px}.deck-intensity-btn:last-child{border-right:none}.deck-intensity-btn:hover{background:var(--color-surface-hover)}.deck-intensity-btn.active{background:var(--color-accent);color:#1a1a2e;font-weight:600}.deck-intensity-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}@media (min-width: 768px){.deck-options{max-width:520px;margin-left:auto;margin-right:auto}}.filter-panel{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow-y:auto;padding:1.25rem 1rem calc(2rem + env(safe-area-inset-bottom,0px));overscroll-behavior:contain}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:90}.drawer-backdrop.visible{opacity:1;pointer-events:auto}.filter-drawer{position:fixed;top:0;left:0;bottom:0;width:min(400px,85vw);background:var(--color-bg);border-right:1px solid var(--color-border);z-index:100;transform:translate(-100%);transition:transform .3s cubic-bezier(.32,.72,0,1);overflow-y:auto;overscroll-behavior:contain;padding:calc(1.25rem + env(safe-area-inset-top,0px)) 1rem calc(2rem + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column}.filter-drawer.open{transform:translate(0)}.drawer-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.drawer-header h2{font-size:1.125rem;font-weight:600;color:var(--color-text);margin:0}.drawer-close{background:none;border:none;color:var(--color-text-muted);cursor:pointer;padding:10px;min-height:44px;min-width:44px;border-radius:6px;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}.drawer-close:hover{color:var(--color-text);background:var(--color-surface)}.filter-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.filter-header-text{flex:1;min-width:0}.filter-header h1{font-size:1.25rem;font-weight:600;color:var(--color-text);margin:0 0 .25rem}.remaining-count{font-size:.875rem;color:var(--color-accent);font-weight:500;margin:0}.filter-drawer-btn{display:flex;align-items:center;gap:6px;padding:8px 14px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:20px;color:var(--color-text);font-size:.875rem;font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:all .15s ease;-webkit-tap-highlight-color:transparent;white-space:nowrap;flex-shrink:0}.filter-drawer-btn:hover{background:var(--color-surface-hover);border-color:var(--color-text-muted)}.filter-drawer-btn:active{transform:scale(.96)}.filter-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background:var(--color-accent);color:#fff;font-size:.6875rem;font-weight:600;border-radius:9px}.filter-section{margin-bottom:1.25rem}.grid-section{flex:1;min-height:0;display:flex;flex-direction:column}.grid-section .exclusion-grid-wrap{flex:1;max-height:none}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.section-label{font-size:.8125rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.section-actions{display:flex;align-items:center;gap:2px}.section-action{background:none;border:none;padding:2px 4px;font-family:var(--font-sans);font-size:.75rem;color:var(--color-accent);cursor:pointer}.section-action:hover{text-decoration:underline}.section-action-sep{font-size:.7rem;color:var(--color-text-muted)}.section-hint{font-size:.75rem;color:var(--color-text-muted);margin:-.25rem 0 .5rem}.chip-container{display:flex;flex-wrap:wrap;gap:8px}.chip{border-radius:20px;padding:10px 16px;min-height:44px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;transition:all .15s ease;font-size:.875rem;font-family:var(--font-sans);line-height:1.3;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.chip:hover{background:var(--color-surface-hover);border-color:var(--color-text-muted)}.chip:active{transform:scale(.96)}.chip-selected{background:#e5a00d26;color:var(--color-accent);border-color:var(--color-accent);font-weight:500}.chip-selected:hover{background:#e5a00d40;border-color:var(--color-accent-hover)}.watched-toggle{display:flex;align-items:center;justify-content:space-between;padding:.625rem 0}.toggle-label{font-size:.9375rem;color:var(--color-text)}.toggle-switch{position:relative;width:44px;height:24px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;cursor:pointer;transition:all .2s ease;-moz-appearance:none;appearance:none;-webkit-appearance:none;outline:none;-webkit-tap-highlight-color:transparent}.toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background:var(--color-text-muted);border-radius:50%;transition:all .2s ease}.toggle-switch:checked{background:var(--color-accent);border-color:var(--color-accent)}.toggle-switch:checked:after{left:22px;background:#fff}.exclusion-grid-wrap{max-height:50vh;overflow-y:auto;overscroll-behavior:contain;border-radius:var(--radius)}.exclusion-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}@media (min-width: 480px){.exclusion-grid{grid-template-columns:repeat(5,1fr)}}.grid-item{position:relative;aspect-ratio:2/3;border-radius:6px;overflow:hidden;cursor:pointer;border:none;padding:0;background:var(--color-surface);-webkit-tap-highlight-color:transparent;transition:opacity .2s ease,filter .2s ease}.grid-item:active{transform:scale(.95)}.grid-item-excluded{opacity:.4;filter:grayscale(.8)}.grid-poster{width:100%;height:100%;object-fit:cover;display:block}.excluded-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.strikethrough-line{display:block;width:80%;height:2px;background:var(--color-error);transform:rotate(-45deg)}.ready-section{margin-top:auto;padding-top:1.25rem;text-align:center;flex-shrink:0}.ready-btn{width:100%;min-height:48px;padding:.75rem 1.5rem;border-radius:var(--radius);border:none;background:var(--color-accent);color:#fff;font-size:1rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent}.ready-btn:hover{background:var(--color-accent-hover)}.ready-btn:active{transform:scale(.98)}.ready-btn.is-ready{background:var(--color-success);cursor:default}.ready-btn.is-ready:hover{background:var(--color-success)}.ready-info{margin-top:.75rem;display:flex;flex-direction:column;gap:.375rem;align-items:center}.overlap-count{font-size:.9375rem;color:var(--color-text);font-weight:500}.overlap-warning{font-size:.875rem;color:var(--color-accent);font-weight:500}.ready-count{font-size:.8125rem;color:var(--color-text-muted)}.filter-empty{text-align:center;padding:2rem 1rem;color:var(--color-text-muted);font-size:.875rem}.onboarding-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:200;display:flex;align-items:center;justify-content:center;padding:24px;animation:onboarding-fade-in .25s ease}@keyframes onboarding-fade-in{0%{opacity:0}to{opacity:1}}.onboarding-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:16px;padding:24px;max-width:360px;width:100%}.onboarding-title{font-size:1.25rem;font-weight:600;color:var(--color-accent);margin:0 0 20px;text-align:center}.onboarding-steps{display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.onboarding-step{display:flex;align-items:flex-start;gap:12px}.onboarding-icon{flex-shrink:0;width:36px;height:36px;border-radius:50%;background:#e5a00d1f;color:var(--color-accent);display:flex;align-items:center;justify-content:center}.onboarding-step p{margin:0;font-size:.875rem;line-height:1.5;color:var(--color-text-muted);padding-top:6px}.onboarding-step strong{color:var(--color-text)}.onboarding-actions{display:flex;gap:10px}.onboarding-skip{flex:1;padding:10px;min-height:44px;border-radius:var(--radius);border:1px solid var(--color-border);background:transparent;color:var(--color-text-muted);font-size:.875rem;font-family:var(--font-sans);cursor:pointer;-webkit-tap-highlight-color:transparent}.onboarding-skip:hover{background:var(--color-surface-hover)}.onboarding-got-it{flex:2;padding:10px;min-height:44px;border-radius:var(--radius);border:none;background:var(--color-accent);color:#fff;font-size:.875rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;-webkit-tap-highlight-color:transparent}.onboarding-got-it:hover{background:var(--color-accent-hover)}@media (min-width: 768px){.exclusion-grid{grid-template-columns:repeat(6,1fr)}}@media (min-width: 1024px){.exclusion-grid{grid-template-columns:repeat(8,1fr)}}.match-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;z-index:200;display:flex;align-items:center;justify-content:center;animation:matchFadeIn .2s ease-out}.match-popup{background:var(--color-surface);border-radius:16px;max-width:360px;width:calc(100% - 48px);padding:32px 24px 24px;text-align:center;animation:matchPopIn .2s ease-out}.match-title{font-size:1.5rem;font-weight:700;color:var(--color-accent);margin:0 0 16px}.match-poster{width:240px;max-width:100%;border-radius:8px;display:block;margin:0 auto}.match-movie-title{font-size:1.1rem;font-weight:600;color:var(--color-text);margin:16px 0 4px}.match-movie-genres{font-size:.85rem;color:var(--color-text-muted);margin:0 0 20px}.match-actions{display:flex;gap:12px;margin-top:4px}.match-btn{flex:1;padding:12px;border-radius:8px;font-weight:600;font-size:1rem;cursor:pointer;border:none;transition:opacity .15s ease}.match-btn:active{opacity:.8}.match-btn-regret{background:var(--color-surface-hover);color:var(--color-text-muted)}.match-btn-select{background:var(--color-accent);color:#fff}@keyframes matchFadeIn{0%{opacity:0}to{opacity:1}}@keyframes matchPopIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.vote-progress{font-size:.8rem;color:var(--color-text-muted);text-align:center;margin:2px 0 0}.result-screen{display:flex;flex-direction:column;align-items:center;padding:24px;max-width:400px;margin:0 auto;text-align:center}.result-heading{font-size:1.4rem;font-weight:700;color:var(--color-accent);margin:0 0 16px}.result-poster{width:280px;max-width:100%;border-radius:12px;display:block}.result-title{font-size:1.3rem;font-weight:700;color:var(--color-text);margin:16px 0 4px}.result-meta{font-size:.9rem;color:var(--color-text-muted);margin:0}.result-summary{font-size:.85rem;color:var(--color-text-muted);margin:12px 0 0;line-height:1.5}.result-selected-by{font-size:.9rem;color:var(--color-accent);margin:8px 0 0;font-style:italic}.result-back-btn{margin-top:24px;padding:12px 32px;border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);border:none;font-size:1rem;cursor:pointer;transition:opacity .15s ease}.result-back-btn:active{opacity:.8}.near-miss-heading{font-size:1.2rem;font-weight:700;color:var(--color-text);margin:0 0 4px}.near-miss-subtitle{font-size:.9rem;color:var(--color-text-muted);margin:0 0 16px}.near-miss-empty{font-size:.9rem;color:var(--color-text-muted);margin:16px 0}.near-miss-list{width:100%;display:flex;flex-direction:column;gap:12px}.near-miss-item{display:flex;align-items:center;gap:12px;background:var(--color-surface);border-radius:var(--radius);padding:8px}.near-miss-rank{font-size:1.1rem;font-weight:700;color:var(--color-text-muted);min-width:28px}.near-miss-poster{width:60px;border-radius:4px}.near-miss-info{flex:1;text-align:left}.near-miss-title{font-size:.95rem;font-weight:600;color:var(--color-text)}.near-miss-year{font-size:.8rem;color:var(--color-text-muted)}.near-miss-agreement{font-size:.9rem;font-weight:600;color:var(--color-accent)}@media (min-width: 768px){.match-popup{max-width:420px}.result-screen{max-width:500px}.result-poster{width:320px}}@media (min-width: 1024px){.result-screen{max-width:560px}}.onboarding-icon-like{background:#22c55e1f;color:var(--color-success)}.onboarding-icon-nope{background:#ef44441f;color:var(--color-error)}.card-stack{display:grid;width:100%;max-width:340px;margin:0 auto}.swipe-card{grid-area:1 / 1;border-radius:var(--radius);overflow:hidden;background:var(--color-surface);will-change:transform;touch-action:none;user-select:none;-webkit-user-select:none;transition:transform .3s ease,opacity .3s ease}.swipe-card[data-stack="1"]{transform:scale(.95) translateY(8px);pointer-events:none;transition:transform .3s ease}.swipe-card[data-stack="2"]{transform:scale(.9) translateY(16px);pointer-events:none;opacity:0}.swipe-card-poster{width:100%;aspect-ratio:2 / 3;object-fit:cover;display:block}.swipe-card-info{padding:8px 14px}.swipe-card-title{font-size:1.1rem;font-weight:600;color:var(--color-accent);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.swipe-card-meta{font-size:.75rem;color:var(--color-text-muted);margin:2px 0 0}.swipe-card-summary{font-size:.8rem;color:var(--color-text-muted);margin:6px 0 0;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.swipe-stamp{position:absolute;top:20px;padding:8px 16px;border:3px solid;border-radius:8px;font-size:1.5rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;pointer-events:none;z-index:10;transition:none}.swipe-stamp-like{right:20px;color:var(--color-success);border-color:var(--color-success);transform:rotate(15deg)}.swipe-stamp-nope{left:20px;color:var(--color-error);border-color:var(--color-error);transform:rotate(-15deg)}.swipe-card.fly-left{transition:transform .4s ease-out,opacity .4s ease-out;transform:translate(-150vw) rotate(-30deg);opacity:0}.swipe-card.fly-right{transition:transform .4s ease-out,opacity .4s ease-out;transform:translate(150vw) rotate(30deg);opacity:0}.room-page:has(.card-stack-container){padding:0}.card-stack-container{display:flex;flex-direction:column;align-items:center;width:100%;height:100svh;height:100dvh;padding:0 16px calc(12px + env(safe-area-inset-bottom,0px))}.swipe-top{flex-shrink:0;text-align:center;padding:0}.swipe-progress{font-size:.85rem;color:var(--color-text-muted);margin:0}.swipe-middle{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;width:100%;overflow:hidden}.deck-exhausted{text-align:center;padding:48px 24px;color:var(--color-text-muted)}.deck-exhausted h2{color:var(--color-text);margin:0 0 8px}.deck-exhausted p{margin:0}.swipe-controls{display:flex;gap:32px;justify-content:center;flex-shrink:0;padding-top:8px}.swipe-btn-wrapper{display:flex;flex-direction:column;align-items:center;gap:6px}.swipe-btn{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;border:2px solid;background:transparent;cursor:pointer;transition:all .15s ease}.swipe-btn:active{transform:scale(.92)}.swipe-btn:disabled{opacity:.4;cursor:not-allowed}.swipe-btn-nope{border-color:var(--color-error);color:var(--color-error)}.swipe-btn-nope:hover:not(:disabled){background:#ef44441a}.swipe-btn-like{border-color:var(--color-success);color:var(--color-success)}.swipe-btn-like:hover:not(:disabled){background:#22c55e1a}.swipe-btn-label{font-size:.7rem;color:var(--color-text-muted);margin-top:4px}.card-detail-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;z-index:100;display:flex;align-items:flex-end;animation:fadeIn .2s ease}.card-detail{background:var(--color-surface);border-radius:16px 16px 0 0;height:95vh;height:95dvh;overflow-y:auto;width:100%;position:relative;padding-bottom:24px;will-change:transform;transition:transform .3s cubic-bezier(.32,.72,0,1)}.card-detail-handle{display:flex;justify-content:center;padding:10px 0 4px;cursor:grab;touch-action:none}.card-detail-handle:after{content:"";width:36px;height:4px;border-radius:2px;background:var(--color-text-muted);opacity:.5}.card-detail-close{position:absolute;top:12px;right:12px;background:var(--color-surface-hover);border:none;border-radius:50%;width:44px;height:44px;display:flex;align-items:center;justify-content:center;color:var(--color-text);cursor:pointer;z-index:2}.card-detail-poster{width:100%;max-height:50vh;max-height:50dvh;object-fit:cover;display:block}.card-detail-content{padding:16px 20px}.card-detail-content h2{font-size:1.3rem;margin:0 0 8px}.card-detail-meta{font-size:.85rem;color:var(--color-text-muted);margin-bottom:8px}.card-detail-ratings{font-size:.85rem;color:var(--color-accent);margin-bottom:12px}.card-detail-summary{font-size:.9rem;line-height:1.5;color:var(--color-text);margin:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (min-width: 768px){.card-stack{max-width:400px}.card-stack-container{max-width:700px}.card-detail{max-width:600px;margin:0 auto;border-radius:16px}.card-detail-overlay{align-items:center}}@media (min-width: 1024px){.card-stack{max-width:440px}.card-stack-container{max-width:900px}.card-detail{max-width:700px}}.room-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;min-height:100svh;padding:24px 16px}.room-choose{text-align:center;max-width:400px;width:100%}.room-logo{display:block;margin:0 auto 16px;border-radius:16px}.room-logo-wordmark{display:block;margin:0 auto 24px;width:240px;height:auto}.lobby-logo{margin-top:8px;margin-bottom:4px}.room-choose h1{font-size:1.75rem;font-weight:700;margin:0 0 8px;color:var(--color-text)}.room-choose .room-subtitle{font-size:.9375rem;color:var(--color-text-muted);margin:0 0 40px}.create-btn{display:block;width:100%;padding:16px 24px;margin-bottom:32px;background:var(--color-accent);color:#1a1a2e;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:1.0625rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,transform .1s ease;min-height:52px}.create-btn:hover{background:var(--color-accent-hover)}.create-btn:active{transform:scale(.98)}.create-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.room-divider{display:flex;align-items:center;gap:16px;margin-bottom:28px;color:var(--color-text-muted);font-size:.8125rem;text-transform:uppercase;letter-spacing:.05em}.room-divider:before,.room-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.join-section{width:100%}.join-section label{display:block;font-size:.875rem;font-weight:500;color:var(--color-text-muted);margin-bottom:10px;text-align:center}.join-row{display:flex;gap:10px}.room-code-input{flex:1;padding:14px 16px;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);font-family:var(--font-mono);font-size:1.25rem;letter-spacing:.25em;text-transform:uppercase;text-align:center;outline:none;transition:border-color .15s ease;min-height:48px}.room-code-input::placeholder{color:var(--color-text-muted);opacity:.5;letter-spacing:.15em;font-size:1rem}.room-code-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px #e5a00d26}.join-btn{padding:14px 24px;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);font-family:var(--font-sans);font-size:.9375rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease;min-height:48px;white-space:nowrap}.join-btn:hover{background:var(--color-surface-hover);border-color:var(--color-text-muted)}.join-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.room-error{margin-top:12px;padding:10px 14px;background:#ef444414;color:var(--color-error);border:1px solid rgba(239,68,68,.2);border-radius:var(--radius);font-size:.875rem;text-align:center}.back-link{display:inline-flex;align-items:center;gap:6px;margin-top:32px;color:var(--color-text-muted);text-decoration:none;font-size:.875rem;transition:color .15s ease;min-height:44px}.back-link:hover{color:var(--color-text)}.nickname-step{text-align:center;max-width:400px;width:100%}.nickname-step h2{font-size:1.5rem;font-weight:700;margin:0 0 8px;color:var(--color-text)}.nickname-step .nickname-subtitle{font-size:.875rem;color:var(--color-text-muted);margin:0 0 28px}.nickname-form{display:flex;flex-direction:column;gap:16px}.nickname-field{position:relative}.nickname-input{width:100%;padding:14px 60px 14px 16px;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);font-family:var(--font-sans);font-size:1rem;outline:none;transition:border-color .15s ease;min-height:48px}.nickname-input::placeholder{color:var(--color-text-muted);opacity:.7}.nickname-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px #e5a00d26}.nickname-input.invalid{border-color:var(--color-error)}.nickname-input.invalid:focus{box-shadow:0 0 0 2px #ef444426}.nickname-count{position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:.75rem;color:var(--color-text-muted);font-family:var(--font-mono);pointer-events:none}.nickname-count.near-limit{color:var(--color-accent)}.nickname-count.at-limit{color:var(--color-error)}.nickname-validation{font-size:.8125rem;color:var(--color-error);text-align:left;margin:0}.nickname-submit-btn{width:100%;padding:16px 24px;background:var(--color-accent);color:#1a1a2e;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,transform .1s ease;min-height:52px}.nickname-submit-btn:hover:not(:disabled){background:var(--color-accent-hover)}.nickname-submit-btn:active:not(:disabled){transform:scale(.98)}.nickname-submit-btn:disabled{opacity:.6;cursor:not-allowed}.nickname-submit-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.back-btn{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:10px 16px;background:none;border:none;color:var(--color-text-muted);font-family:var(--font-sans);font-size:.875rem;cursor:pointer;transition:color .15s ease;min-height:44px}.back-btn:hover{color:var(--color-text)}.room-lobby{text-align:center;max-width:480px;width:100%}.room-code-section{margin-bottom:20px}.room-code-label{display:block;font-size:.875rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.room-code-chars{display:flex;justify-content:center;gap:10px;margin-bottom:10px}.room-code-char{display:flex;align-items:center;justify-content:center;width:64px;height:72px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);font-family:var(--font-mono);font-size:2.5rem;font-weight:700;color:var(--color-accent);letter-spacing:0}.copy-btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 24px;background:var(--color-accent);color:#1a1a2e;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:.875rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,transform .1s ease;min-height:44px;min-width:120px}.copy-btn:hover{background:var(--color-accent-hover)}.copy-btn:active{transform:scale(.97)}.participant-section{margin-bottom:20px}.player-count{font-size:.8125rem;color:var(--color-text-muted);margin-bottom:12px}.participant-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.participant-item{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.participant-avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.125rem;font-weight:700;color:#fff;flex-shrink:0}.participant-name{font-size:.9375rem;font-weight:500;color:var(--color-text)}.host-badge{display:inline-block;padding:2px 8px;background:#e5a00d1f;color:var(--color-accent);border-radius:10px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.you-badge{font-size:.8125rem;color:var(--color-text-muted)}.kick-btn{margin-left:auto;padding:8px 12px;background:#ef444414;color:var(--color-error);border:1px solid rgba(239,68,68,.2);border-radius:var(--radius);font-family:var(--font-sans);font-size:.75rem;font-weight:500;cursor:pointer;transition:background-color .15s ease,border-color .15s ease;min-height:44px}.kick-btn:hover{background:#ef444426;border-color:#ef444466}.start-btn{display:block;width:100%;padding:16px 24px;background:var(--color-accent);color:#1a1a2e;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:1.0625rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,transform .1s ease;min-height:52px;margin-bottom:12px}.start-btn:hover:not(:disabled){background:var(--color-accent-hover)}.start-btn:active:not(:disabled){transform:scale(.98)}.start-btn:disabled{opacity:.5;cursor:not-allowed}.start-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.waiting-msg{text-align:center;color:var(--color-text-muted);font-size:.875rem;margin:0 0 12px;padding:14px 0}.leave-btn{display:block;width:100%;padding:14px 24px;background:none;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius);font-family:var(--font-sans);font-size:.9375rem;font-weight:500;cursor:pointer;transition:color .15s ease,border-color .15s ease,background-color .15s ease;min-height:48px}.leave-btn:hover{color:var(--color-text);border-color:var(--color-text-muted);background:var(--color-surface)}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-connected{background-color:#4ade80}.status-reconnecting{background-color:#fbbf24;animation:pulse-status 1.5s ease-in-out infinite}@keyframes pulse-status{0%,to{opacity:1}50%{opacity:.3}}.reconnecting-banner{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;margin-bottom:16px;background:#fbbf241a;border:1px solid rgba(251,191,36,.25);border-radius:var(--radius);color:#fbbf24;font-size:.875rem;font-weight:500}.reconnecting-spinner{width:14px;height:14px;border:2px solid rgba(251,191,36,.3);border-top-color:#fbbf24;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.deck-empty{text-align:center;padding:2rem 1rem}.deck-empty h2{color:var(--color-text);margin-bottom:.5rem}.deck-empty p{color:var(--color-text-muted);margin-bottom:1.5rem}.back-to-filters-btn{padding:.75rem 1.5rem;border-radius:var(--radius);border:none;background:var(--color-accent);color:#1a1a2e;font-family:var(--font-sans);font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .15s ease;min-height:48px}.back-to-filters-btn:hover{background:var(--color-accent-hover)}.deck-placeholder{text-align:center;padding:2rem 1rem}.deck-placeholder h2{color:var(--color-text);margin-bottom:.25rem}.deck-count{color:var(--color-text-muted);margin-bottom:1.5rem}.deck-current-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;text-align:left;max-width:400px;margin:0 auto 1rem}.deck-current-card h3{color:var(--color-text);margin:0 0 .5rem}.deck-card-genres{color:var(--color-accent);font-size:.85rem;margin:0 0 .5rem}.deck-card-summary{color:var(--color-text-muted);font-size:.9rem;line-height:1.4;margin:0 0 .75rem}.deck-card-meta{color:var(--color-text-muted);font-size:.8rem;margin:0}.deck-phase-note{color:var(--color-text-muted);font-size:.8rem;font-style:italic;margin-top:1rem}.room-toast-container{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:300;pointer-events:none;max-width:90%}.room-toast{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);padding:10px 20px;font-size:.875rem;text-align:center;white-space:nowrap;animation:room-toast-in .3s ease}.room-toast-success{border-color:#22c55e66;color:var(--color-success)}.room-toast-warning{border-color:#ef444466;color:var(--color-error)}@keyframes room-toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (min-width: 768px){.room-choose,.nickname-step{max-width:480px}.room-lobby{max-width:560px}.room-code-char{width:72px;height:80px;font-size:2.75rem}}@media (min-width: 1024px){.room-choose,.nickname-step{max-width:520px}.room-lobby{max-width:640px}}:root{--color-bg: #1a1a2e;--color-surface: #242438;--color-surface-hover: #2e2e48;--color-text: #eaeaea;--color-text-muted: #8e8ea0;--color-accent: #e5a00d;--color-accent-hover: #f0b429;--color-error: #ef4444;--color-success: #22c55e;--color-border: #333350;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", monospace;--radius: 8px}*,*:before,*:after{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);margin:0;min-height:100vh;min-height:100svh;padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
