@import"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400&family=Manrope:wght@300;400;500;600;700;800&display=swap";:root{--bg: #0B0F1A;--bg-subtle: #0F1423;--surface: #151D30;--surface-hover: #1C2642;--surface-elevated: #222E4A;--surface-overlay: rgba(11, 15, 26, .85);--brand: #1B2D4A;--brand-light: #253D62;--primary: #D4AF55;--primary-hover: #E0BE68;--primary-dim: #B8963F;--primary-glow: rgba(212, 175, 85, .15);--primary-surface: rgba(212, 175, 85, .06);--secondary: #5A8FA3;--secondary-hover: #6BA3B8;--secondary-surface: rgba(90, 143, 163, .08);--secondary-glow: rgba(90, 143, 163, .12);--border: rgba(212, 175, 85, .06);--border-strong: rgba(212, 175, 85, .12);--border-accent: rgba(212, 175, 85, .25);--text: #E5E1D8;--text-secondary: #9DA3B0;--text-tertiary: #5C6478;--danger: #C45B5B;--danger-hover: #D66A6A;--danger-surface: rgba(196, 91, 91, .1);--success: #5BA87A;--success-surface: rgba(91, 168, 122, .1);--board-light: #D4C8B0;--board-dark: #7A6B52;--font-display: "Playfair Display", "Georgia", serif;--font-body: "Manrope", system-ui, sans-serif;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);--shadow-md: 0 4px 20px rgba(0, 0, 0, .45);--shadow-lg: 0 12px 48px rgba(0, 0, 0, .55);--shadow-board: 0 20px 60px rgba(0, 0, 0, .6), 0 0 0 1px rgba(212, 175, 85, .04);--shadow-gold: 0 4px 24px rgba(212, 175, 85, .2);--transition: .15s ease;--transition-slow: .3s ease}:root.high-contrast{--bg: #000000;--surface: #1a1a1a;--surface-hover: #2a2a2a;--surface-elevated:#333333;--text: #ffffff;--text-secondary: #cccccc;--text-tertiary: #999999;--primary: #FFD700;--primary-hover: #FFE44D;--primary-dim: #CCAD00;--board-light: #ffffff;--board-dark: #666666;--border: rgba(255, 255, 255, .15);--border-strong: #ffffff;--border-accent: rgba(255, 215, 0, .4)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-body);background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.02;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:256px 256px}body:before{content:"";position:fixed;top:-50%;left:50%;transform:translate(-50%);width:120%;height:70%;background:radial-gradient(ellipse,rgba(212,175,85,.03) 0%,transparent 60%);pointer-events:none;z-index:0}#root{min-height:100vh;display:flex;flex-direction:column;position:relative;z-index:1}.container{max-width:1200px;margin:0 auto;padding:2rem;flex:1;display:flex;flex-direction:column}.center-content{justify-content:center;align-items:center}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;line-height:1.2}a{color:var(--primary);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--primary-hover)}.btn{background:var(--primary);color:var(--bg);border:none;padding:.7rem 1.8rem;border-radius:var(--radius-md);font-size:.95rem;font-weight:700;cursor:pointer;transition:all var(--transition);font-family:var(--font-body);position:relative;letter-spacing:.01em}.btn:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-gold)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.btn-full{width:100%}.btn-large{padding:.9rem 2.5rem;font-size:1.15rem;border-radius:var(--radius-lg)}.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border-strong);box-shadow:none}.btn-secondary:hover{background:var(--surface-hover);border-color:var(--border-accent);box-shadow:none;transform:translateY(-1px)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover);box-shadow:0 4px 16px #c45b5b40}.btn-play{padding:1rem 3.5rem;font-size:1.2rem;font-family:var(--font-body);font-weight:800;letter-spacing:.02em;text-transform:uppercase;border-radius:var(--radius-lg);box-shadow:0 0 0 1px #d4af554d,var(--shadow-gold)}.btn-play:hover{box-shadow:0 0 0 1px #d4af5580,0 8px 36px #d4af554d}.btn-sm{padding:.4rem 1rem;font-size:.85rem;border-radius:var(--radius-sm)}.btn-text{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-family:var(--font-body);font-size:.9rem;transition:color var(--transition);padding:.25rem 0}.btn-text:hover{color:var(--text)}.glass-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:2rem;box-shadow:var(--shadow-md)}.auth-panel{max-width:420px;width:100%}.auth-title{font-family:var(--font-display);font-size:2.2rem;font-weight:700;margin:0 0 .4rem;text-align:center;color:var(--text)}.auth-subtitle{color:var(--text-tertiary);text-align:center;margin-bottom:2rem;font-size:.95rem}.auth-form{display:flex;flex-direction:column;gap:1.25rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group label{font-size:.75rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.08em}.form-group input{background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:.75rem 1rem;color:var(--text);font-size:.95rem;font-family:var(--font-body);transition:border-color var(--transition),box-shadow var(--transition)}.form-group input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}.form-group input::placeholder{color:var(--text-tertiary)}.auth-error{color:var(--danger);font-size:.85rem;text-align:center;margin:0;padding:.5rem;background:var(--danger-surface);border-radius:var(--radius-sm)}.auth-switch{text-align:center;color:var(--text-tertiary);margin-top:1.5rem;font-size:.9rem}.auth-switch a{color:var(--primary);font-weight:600}.auth-switch a:hover{text-decoration:underline}.home{flex:1;display:flex;flex-direction:column;position:relative;overflow:hidden}.home-bg{position:absolute;inset:0;overflow:hidden;pointer-events:none}.home-board{position:absolute;width:200%;height:200%;left:50%;top:50%;transform:translate(-50%,-50%) perspective(500px) rotateX(45deg) rotate(45deg);background:repeating-conic-gradient(#ffffff12 0% 25%,#ffffff04 0% 50%) 0 0 / 100px 100px;mask-image:radial-gradient(ellipse 70% 60% at 50% 50%,black 10%,transparent 65%);-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 50%,black 10%,transparent 65%);animation:board-drift 25s ease-in-out infinite alternate}@keyframes board-drift{0%{transform:translate(-50%,-50%) perspective(500px) rotateX(45deg) rotate(45deg)}to{transform:translate(-50%,-50%) perspective(500px) rotateX(44deg) rotate(46deg)}}.home-gradient{position:absolute;inset:0;background:radial-gradient(ellipse 50% 60% at 50% 40%,rgba(212,175,85,.03) 0%,transparent 60%)}.home-content{position:relative;z-index:2;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;gap:1.5rem;animation:home-enter .5s ease-out}@keyframes home-enter{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.home-title{font-family:var(--font-display);font-size:2.4rem;font-weight:700;margin:0;color:var(--text);text-align:center}.home-title-accent{color:var(--primary);font-style:italic}.hub-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);width:100%;max-width:580px;overflow:hidden}.hub-tabs{display:flex;border-bottom:1px solid var(--border)}.hub-tab{flex:1;background:none;border:none;padding:.9rem 1rem;font-family:var(--font-body);font-weight:600;font-size:.9rem;color:var(--text-tertiary);cursor:pointer;transition:all var(--transition);position:relative;display:flex;align-items:center;justify-content:center;gap:.4rem}.hub-tab:hover{color:var(--text-secondary);background:#ffffff05}.hub-tab-active{color:var(--primary)}.hub-tab-active:after{content:"";position:absolute;bottom:-1px;left:1rem;right:1rem;height:2px;background:var(--primary);border-radius:2px 2px 0 0}.hub-tab-soon{cursor:default;opacity:.5}.hub-tab-soon:hover{color:var(--text-tertiary);background:none}.hub-tab-badge{font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;background:var(--border-strong);color:var(--text-tertiary);padding:.1rem .4rem;border-radius:100px;font-weight:700}.hub-body{padding:1.75rem 2.25rem 2.25rem;display:flex;flex-direction:column;gap:1.5rem}.tc-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem}.tc-tab{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:.75rem .5rem;cursor:pointer;text-align:center;transition:all var(--transition);display:flex;flex-direction:column;align-items:center;gap:.15rem}.tc-tab:hover{border-color:var(--border-strong);background:var(--surface-hover)}.tc-tab-active{border-color:var(--primary);background:var(--primary-surface)}.tc-tab-label{font-family:var(--font-body);font-weight:700;font-size:.85rem;color:var(--text)}.tc-tab-active .tc-tab-label{color:var(--primary)}.tc-tab-desc{font-size:.65rem;color:var(--text-tertiary);font-weight:500}.tc-tab:disabled{opacity:.4;cursor:not-allowed}.tc-options-row{display:flex;gap:.4rem;flex-wrap:wrap}.variant-selector{margin-top:.5rem}.tc-pill{background:var(--bg);border:1px solid var(--border);color:var(--text-secondary);padding:.55rem 1.4rem;border-radius:100px;cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:.95rem;transition:all var(--transition);font-variant-numeric:tabular-nums}.tc-pill:hover{border-color:var(--border-strong);color:var(--text);background:var(--surface-hover)}.tc-pill-active{background:var(--primary);border-color:var(--primary);color:var(--bg);font-weight:700;box-shadow:var(--shadow-gold)}.tc-pill-active:hover{background:var(--primary-hover);color:var(--bg)}.tc-pill:disabled{opacity:.4;cursor:not-allowed}.rating-filter-section{margin-bottom:.25rem}.rating-filter-toggle{background:none;border:none;color:var(--text-secondary);font-family:var(--font-body);font-size:.8rem;cursor:pointer;padding:.25rem 0;display:flex;align-items:center;gap:.5rem;transition:color var(--transition)}.rating-filter-toggle:hover{color:var(--primary)}.rating-filter-toggle:disabled{opacity:.4;cursor:not-allowed}.rating-filter-active-badge{background:var(--surface-elevated);color:var(--primary);font-size:.7rem;font-weight:600;padding:.1rem .4rem;border-radius:4px}.rating-filter-inputs{display:flex;align-items:center;gap:.5rem;margin-top:.4rem}.rating-filter-label{display:flex;flex-direction:column;gap:.15rem;font-size:.75rem;color:var(--text-secondary);font-family:var(--font-body);flex:1}.rating-filter-input{background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:var(--font-body);font-size:.85rem;padding:.35rem .5rem;width:100%;transition:border-color var(--transition)}.rating-filter-input:focus{outline:none;border-color:var(--primary)}.rating-filter-input:disabled{opacity:.4;cursor:not-allowed}.rating-filter-dash{color:var(--text-tertiary);font-size:1rem;margin-top:1rem}.hub-actions{display:flex;flex-direction:column;gap:.5rem}.hub-error{color:var(--danger);text-align:center;font-size:.85rem;padding:.5rem 1rem;background:var(--danger-surface);border-radius:var(--radius-sm)}.searching-bar{display:flex;align-items:center;gap:1rem;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:.75rem 1.25rem}.searching-spinner{width:24px;height:24px;border:2.5px solid rgba(212,175,85,.15);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.searching-info{flex:1;display:flex;flex-direction:column}.searching-text{font-weight:600;font-size:.85rem;color:var(--text)}.searching-tc{color:var(--text-tertiary);font-size:.75rem;font-variant-numeric:tabular-nums}.hub-soon-body{min-height:180px;align-items:center;justify-content:center}.hub-soon{text-align:center;padding:1rem 0}.hub-soon-title{font-family:var(--font-display);font-size:1.3rem;font-weight:700;margin:0 0 .5rem;color:var(--text)}.hub-soon-text{color:var(--text-tertiary);font-size:.9rem;margin:0;max-width:280px}.challenge-section{margin-top:.25rem}.challenge-divider{height:1px;background:var(--border-strong);margin-bottom:1rem}.challenge-heading{font-family:var(--font-display);font-size:.95rem;font-weight:600;color:var(--text-secondary);margin:0 0 .6rem}.bot-options{display:flex;flex-direction:column;gap:.6rem;margin-bottom:.8rem}.bot-option-group{display:flex;flex-direction:column;gap:.3rem}.bot-option-label{font-family:var(--font-body);font-size:.8rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.challenge-form{display:flex;gap:.5rem}.challenge-input{flex:1;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.55rem .75rem;color:var(--text);font-family:var(--font-body);font-size:.85rem;outline:none;transition:border-color .15s}.challenge-input:focus{border-color:var(--primary)}.challenge-input::placeholder{color:var(--text-tertiary)}.challenge-sent{display:flex;align-items:center;gap:.75rem;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:.65rem 1rem}.challenge-sent-text{flex:1;font-size:.85rem;color:var(--text)}.open-challenge-link-row{display:flex;align-items:center;gap:.5rem;width:100%}.open-challenge-link-row .challenge-input{flex:1;cursor:pointer;font-size:.8rem}.challenge-incoming{margin-top:.75rem}.challenge-item{display:flex;align-items:center;gap:.75rem;background:var(--primary-surface);border:1px solid var(--border-accent);border-radius:var(--radius-sm);padding:.6rem .85rem;margin-bottom:.4rem}.challenge-item-text{flex:1;font-size:.85rem;color:var(--text)}.challenge-item-actions{display:flex;gap:.35rem;flex-shrink:0}.clock{background:#0000004d;padding:.6rem 1.2rem;border-radius:var(--radius-md);display:flex;flex-direction:column;align-items:center;min-width:90px;border:1px solid transparent;transition:all var(--transition)}.clock-active{background:var(--primary-surface);border-color:#d4af5533;box-shadow:0 0 20px var(--primary-glow)}.clock-active .clock-time{color:var(--primary)}.clock-low{background:var(--danger-surface);border-color:#c45b5b40;animation:clock-pulse 1s ease-in-out infinite}.clock-low .clock-time{color:var(--danger)}@keyframes clock-pulse{0%,to{box-shadow:0 0 8px #c45b5b1a}50%{box-shadow:0 0 24px #c45b5b33}}.clock-label{font-size:.6rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.14em;font-weight:700}.clock-time{font-family:var(--font-body);font-size:1.6rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.game-layout{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:560px}.player-panel{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;border-radius:var(--radius-lg)}.player-info{display:flex;align-items:center;gap:.75rem}.player-avatar{width:36px;height:36px;border-radius:50%}.opponent-avatar{background:var(--surface-elevated);border:1px solid var(--border-strong)}.my-avatar{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dim) 100%)}.player-details h3{margin:0;font-size:.95rem;font-family:var(--font-body);font-weight:700}.player-name{font-weight:600}.player-status{font-size:.75rem;color:var(--text-tertiary)}.status-online{color:var(--success)}.board-wrapper{position:relative;width:100%}.opening-name{color:var(--text-tertiary);font-family:Manrope,sans-serif;font-size:.8rem;text-align:center;padding:.25rem 0;letter-spacing:.02em}.board-container{width:100%;aspect-ratio:unset;box-shadow:var(--shadow-board);border-radius:var(--radius-xs);overflow:hidden}.move-input-form{margin-top:.5rem}.move-input{width:100%;padding:.5rem .75rem;background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-xs);font-family:Courier New,Courier,monospace;font-size:.95rem;outline:none;transition:border-color .2s ease,transform .1s ease;box-sizing:border-box}.move-input:focus{border-color:var(--primary)}.move-input::placeholder{color:var(--text-tertiary);font-family:Courier New,Courier,monospace}.move-input-error{border-color:var(--danger)!important;animation:shake .4s ease}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.confirm-move-bar{display:flex;gap:.5rem;justify-content:center;padding:.5rem;background:var(--surface);border-top:1px solid rgba(255,255,255,.06)}.confirm-move-btn,.confirm-move-cancel{min-width:100px}.game-over-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--surface-overlay);z-index:10;border-radius:var(--radius-xs);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.game-over-panel{text-align:center;max-width:300px}.game-over-title{font-family:var(--font-display);font-size:1.4rem;font-weight:700;margin:0 0 1.5rem;color:var(--primary)}.game-over-actions{display:flex;gap:.5rem;justify-content:center}.btn-copied{border-color:var(--success)!important;color:var(--success)!important}.connection-status{margin-top:.5rem;color:var(--primary);text-align:center;font-size:.85rem;font-weight:500}.btn-sound-toggle{background:transparent;border:1px solid var(--border-strong);color:var(--text-secondary);width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .2s,border-color .2s,background .2s;padding:0}.btn-sound-toggle:hover{color:var(--primary);border-color:var(--primary);background:var(--primary-glow)}.btn-sound-toggle.sound-muted{color:var(--text-tertiary)}.btn-sound-toggle.sound-muted:hover{color:var(--primary)}.btn-zen-badge{background:transparent;border:1px solid var(--primary);color:var(--primary);width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .2s,border-color .2s,background .2s;padding:0;font-family:Manrope,sans-serif;font-weight:700;font-size:.85rem}.btn-zen-badge:hover{background:var(--primary-glow);color:var(--primary-hover);border-color:var(--primary-hover)}.game-controls{margin-top:.75rem;display:flex;justify-content:center;gap:.5rem}.resign-confirm{display:flex;align-items:center;gap:.75rem;color:var(--text-secondary);font-size:.9rem}.draw-offer-notification{margin-top:.75rem;display:flex;align-items:center;justify-content:center;gap:1rem;padding:.75rem 1.25rem;font-size:.9rem;color:var(--text);border-color:var(--primary)}.draw-offer-actions{display:flex;gap:.5rem}.btn-draw-claim{background:transparent;border:1px solid var(--primary);color:var(--primary);font-size:.85rem;padding:.4rem 1rem;cursor:pointer;border-radius:6px;transition:background .2s,color .2s}.btn-draw-claim:hover{background:var(--primary);color:var(--bg)}.invite-panel{margin-top:1.25rem;display:flex;flex-direction:column;align-items:center;gap:.5rem;max-width:560px}.invite-label{color:var(--text-tertiary);font-size:.85rem}.invite-link{background:var(--bg);padding:.6rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);-webkit-user-select:all;user-select:all;cursor:pointer;font-size:.8rem;word-break:break-all;transition:all var(--transition);color:var(--text-secondary);font-family:var(--font-body)}.invite-link:hover{background:var(--surface);border-color:var(--primary);color:var(--text)}.invite-hint{font-size:.7rem;color:var(--text-tertiary)}.color-select{display:flex;gap:1rem;margin-top:2rem;justify-content:center}.color-btn{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem 2rem;border-radius:var(--radius-lg);border:1px solid var(--border-strong);cursor:pointer;font-family:var(--font-body);font-weight:700;font-size:1rem;transition:all var(--transition)}.color-white{background:var(--board-light);color:var(--bg)}.color-white:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 8px 28px #d4af5526}.color-black{background:var(--bg);color:var(--text);border-color:var(--border-strong)}.color-black:hover{border-color:var(--text-tertiary);transform:translateY(-2px);box-shadow:0 8px 28px #00000080}.color-piece{font-size:2.5rem;line-height:1}.tc-badge{margin-top:.75rem;background:var(--primary-surface);color:var(--primary);padding:.25rem .75rem;border-radius:var(--radius-sm);font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums;border:1px solid rgba(212,175,85,.12)}.promotion-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--surface-overlay);z-index:20;border-radius:var(--radius-xs);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.promotion-dialog{background:var(--surface);border:1px solid var(--border-strong);padding:1.5rem;border-radius:var(--radius-lg);text-align:center;box-shadow:var(--shadow-lg)}.promotion-dialog p{margin:0 0 1rem;font-family:var(--font-display);font-weight:700;font-size:1.1rem}.promotion-options{display:flex;gap:.5rem}.promotion-btn{background:var(--surface-elevated);border:1px solid var(--border-strong);color:var(--text);padding:.6rem 1rem;border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:.9rem;transition:all var(--transition)}.promotion-btn:hover{background:var(--primary);border-color:var(--primary);color:var(--bg)}@keyframes fade-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.auth-panel,.game-layout{animation:fade-up .45s ease-out}@media(max-width:640px){.home-content{padding:1.5rem 1rem}.home-title{font-size:1.9rem}.hub-card{border-radius:var(--radius-lg)}.hub-body{padding:1.25rem 1.25rem 1.5rem}.tc-tabs{grid-template-columns:repeat(2,1fr)}.btn-play{padding:.9rem 2rem;font-size:1.05rem}.container{padding:1.25rem}.auth-title{font-size:1.8rem}}.puzzle-page{display:flex;justify-content:center;gap:.75rem;padding:2rem 1rem;min-height:calc(100vh - 60px)}.puzzle-layout{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:560px}.puzzle-back-bar{margin-bottom:.25rem}.puzzle-back-link{font-family:var(--font-body);font-size:.8rem;color:var(--text-secondary);text-decoration:none;transition:color .15s}.puzzle-back-link:hover{color:var(--primary)}.puzzle-unrated-badge{font-family:var(--font-body);font-size:.7rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em;padding:.15rem .4rem;border:1px solid var(--text-tertiary);border-radius:3px}.puzzle-info-bar{display:flex;justify-content:space-between;align-items:center;padding:.5rem .75rem;background:var(--surface);border-radius:var(--radius-md);border:1px solid rgba(212,175,85,.1)}.puzzle-info-left{display:flex;align-items:center;gap:.75rem}.puzzle-rating-badge{font-family:var(--font-display);font-size:1.1rem;font-weight:700;color:var(--primary)}.puzzle-themes{font-size:.8rem;color:var(--text-secondary);text-transform:capitalize}.puzzle-move-counter{font-size:.8rem;color:var(--text-tertiary)}.puzzle-board-container{position:relative;aspect-ratio:1;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-board)}.puzzle-result-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;background:var(--surface-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10}.puzzle-result-panel{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.75rem;background:var(--surface);border-radius:8px;width:140px;flex-shrink:0;font-size:.85rem;align-self:flex-start;position:sticky;top:5rem}.puzzle-result-panel .btn{width:100%;font-size:.8rem;padding:.5rem}@media(max-width:600px){.puzzle-page{flex-direction:column;align-items:center}.puzzle-result-panel{width:100%;max-width:560px;position:static;order:-1}}.puzzle-result-text{font-family:var(--font-display);font-size:1.8rem;font-weight:700}.puzzle-result-solved .puzzle-result-text{color:var(--success)}.puzzle-result-failed .puzzle-result-text{color:var(--danger)}.puzzle-rating-change{font-family:var(--font-body);font-size:1rem;font-weight:600}.puzzle-rating-change.positive{color:var(--success)}.puzzle-rating-change.negative{color:var(--danger)}.puzzle-solution-btn{font-size:.85rem}.puzzle-result-themes{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:center}.puzzle-theme-tag{font-size:.7rem;padding:.15rem .5rem;border-radius:999px;background:#d4af5526;color:var(--primary);text-transform:capitalize;font-family:var(--font-body)}.puzzle-game-link{font-size:.8rem;text-decoration:none;text-align:center}.puzzle-vote-section{display:flex;align-items:center;gap:.75rem;margin:.5rem 0}.puzzle-vote-buttons{display:flex;align-items:center;gap:.5rem}.puzzle-vote-btn{background:none;border:1px solid var(--border-strong);color:var(--text-secondary);font-size:.9rem;cursor:pointer;padding:.25rem .5rem;border-radius:var(--radius-xs);transition:color .15s,border-color .15s}.puzzle-vote-btn:hover{color:var(--primary);border-color:var(--primary)}.puzzle-vote-btn.active{color:var(--primary);border-color:var(--primary);background:#d4af551a}.puzzle-vote-count{font-family:Manrope,sans-serif;font-size:.85rem;color:var(--text);min-width:1.5rem;text-align:center}.puzzle-report-link{background:none;border:none;color:var(--text-tertiary);font-size:.75rem;cursor:pointer;text-decoration:underline;padding:0}.puzzle-report-link:hover{color:var(--danger)}.puzzle-report-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200}.puzzle-report-modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:1.5rem;max-width:400px;width:90%}.puzzle-report-modal h3{margin:0 0 .75rem;color:var(--text);font-family:Playfair Display,serif}.puzzle-report-textarea{width:100%;background:var(--bg);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-xs);padding:.5rem;font-family:Manrope,sans-serif;font-size:.9rem;resize:vertical;box-sizing:border-box}.puzzle-report-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem}.puzzle-report-success{color:var(--success);font-family:Manrope,sans-serif}.puzzle-loading .puzzle-result-text{color:var(--text-secondary);font-size:1.2rem}.puzzle-controls{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.puzzle-controls-left,.puzzle-controls-right{display:flex;align-items:center;gap:.5rem}.puzzle-theme-select{background:var(--surface);color:var(--text);border:1px solid rgba(212,175,85,.15);border-radius:var(--radius-sm);padding:.4rem .6rem;font-family:var(--font-body);font-size:.85rem;cursor:pointer;transition:border-color var(--transition)}.puzzle-theme-select:focus{outline:none;border-color:var(--primary)}.puzzle-hint-badge{font-size:.75rem;color:var(--primary);padding:.25rem .5rem;background:#d4af551a;border-radius:var(--radius-xs)}.puzzle-error{color:var(--danger);font-size:.85rem;text-align:center;padding:.5rem}.btn-sm{padding:.35rem .75rem;font-size:.8rem}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mode-page{display:flex;justify-content:center;padding:2rem 1rem;min-height:calc(100vh - 60px)}.mode-start-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;max-width:480px;width:100%;padding:3rem 2rem;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);text-align:center}.mode-title{font-family:var(--font-display);font-size:2.4rem;font-weight:700;color:var(--primary);margin:0;letter-spacing:-.02em}.mode-description{font-family:var(--font-body);font-size:1.15rem;color:var(--text);margin:0;font-weight:500}.mode-description-sub{font-family:var(--font-body);font-size:.9rem;color:var(--text-secondary);margin:0;line-height:1.6}.mode-start-btn{margin-top:.5rem;padding:.75rem 2.5rem;font-size:1.05rem}.mode-score-display{font-family:var(--font-display);font-size:5rem;font-weight:800;color:var(--primary);line-height:1;margin:.5rem 0}.mode-score-label{font-family:var(--font-body);font-size:1rem;color:var(--text-secondary);margin:0;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.mode-game-over{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;max-width:480px;width:100%;padding:3rem 2rem;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);text-align:center;animation:fadeIn .3s ease}.mode-gameover-title{font-family:var(--font-display);font-size:1.8rem;font-weight:700;color:var(--text);margin:0}.mode-new-best{font-family:var(--font-display);font-size:1.2rem;font-weight:600;color:var(--success);padding:.4rem 1rem;background:var(--success-surface);border-radius:var(--radius-sm)}.mode-best-score{font-family:var(--font-body);font-size:.9rem;color:var(--text-tertiary);margin:0}.streak-counter{color:var(--primary)}.streak-counter-inline{font-family:var(--font-display);font-size:1.6rem;font-weight:800;color:var(--primary);line-height:1}.streak-label{font-family:var(--font-body);font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.streak-difficulty{font-family:var(--font-display);font-size:.95rem;font-weight:700;color:var(--secondary);padding:.2rem .6rem;background:var(--secondary-surface);border-radius:var(--radius-xs)}.storm-info-bar{gap:1rem}.storm-score-inline{font-family:var(--font-display);font-size:1.6rem;font-weight:800;color:var(--primary);line-height:1}.storm-score{color:var(--primary)}.storm-timer{font-family:var(--font-display);font-size:1.4rem;font-weight:700;color:var(--text);letter-spacing:.02em;transition:color var(--transition)}.storm-timer-low{color:var(--danger);animation:timerPulse 1s ease infinite}@keyframes timerPulse{0%,to{opacity:1}50%{opacity:.6}}.storm-consecutive-badge{font-family:var(--font-body);font-size:.8rem;color:var(--text-secondary);font-weight:500}.storm-feedback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:10;animation:feedbackFlash .6s ease forwards}.storm-feedback-correct{background:#5ba87a26}.storm-feedback-wrong{background:#c45b5b26}.storm-feedback-bonus{background:#5ba87a33}.storm-feedback-text{font-family:var(--font-display);font-size:2rem;font-weight:700}.storm-feedback-correct .storm-feedback-text{color:var(--success)}.storm-feedback-wrong .storm-feedback-text{color:var(--danger)}.storm-feedback-bonus .storm-feedback-text{color:var(--success);font-size:2.4rem}@keyframes feedbackFlash{0%{opacity:0}20%{opacity:1}80%{opacity:1}to{opacity:0}}.puzzle-hub{max-width:700px;margin:2rem auto;padding:2rem 1.5rem;text-align:center}.puzzle-hub-title{font-family:var(--font-display);font-size:2.2rem;font-weight:700;color:var(--text);margin-bottom:1.5rem}.puzzle-hub-rating{display:flex;flex-direction:column;align-items:center;gap:.25rem;margin-bottom:2rem}.puzzle-hub-rating-label{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em}.puzzle-hub-rating-value{font-family:var(--font-display);font-size:2.6rem;font-weight:700;color:var(--primary)}.puzzle-mode-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1.25rem;margin-bottom:2rem}.puzzle-mode-card{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:2rem 1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;text-decoration:none;transition:all .2s ease;cursor:pointer}.puzzle-mode-card:hover{background:var(--surface-hover);border-color:var(--primary);box-shadow:0 4px 20px var(--primary-glow);transform:translateY(-2px)}.puzzle-mode-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:12px;background:var(--primary-surface);border:1px solid var(--border-accent);font-family:var(--font-display);font-size:1.4rem;font-weight:700;color:var(--primary)}.puzzle-mode-title{font-family:var(--font-display);font-size:1.15rem;font-weight:600;color:var(--text);margin:0}.puzzle-mode-desc{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);margin:0;line-height:1.4}.puzzle-hub-stats-link{font-family:var(--font-body);font-size:.95rem;color:var(--primary);text-decoration:none;transition:color .15s}.puzzle-hub-stats-link:hover{color:var(--primary-hover)}@media(max-width:600px){.puzzle-mode-cards{grid-template-columns:1fr}}.hub-puzzles-body{text-align:center}.hub-puzzles-intro{padding:1.5rem 0}.hub-puzzles-title{font-family:var(--font-display);font-size:1.4rem;font-weight:600;color:var(--text);margin:0 0 .5rem}.hub-puzzles-text{font-family:var(--font-body);font-size:.9rem;color:var(--text-secondary);margin:0 0 1.5rem;line-height:1.5}.daily-puzzle-card{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:1.25rem;margin-bottom:1rem}.daily-puzzle-header{display:flex;align-items:center;gap:.5rem;width:100%;justify-content:center;flex-wrap:wrap}.daily-puzzle-title{font-family:var(--font-display);font-size:1.1rem;font-weight:600;color:var(--primary);margin:0}.daily-puzzle-board{border-radius:var(--radius-md);overflow:hidden;line-height:0}.daily-puzzle-themes{font-family:var(--font-body);font-size:.8rem;color:var(--text-tertiary)}.daily-puzzle-solved-badge{font-family:var(--font-body);font-size:.75rem;font-weight:600;color:var(--success);background:#5ba87a1f;padding:.15rem .5rem;border-radius:var(--radius-sm)}.daily-puzzle-failed-badge{font-family:var(--font-body);font-size:.75rem;font-weight:600;color:var(--danger);background:var(--danger-surface);padding:.15rem .5rem;border-radius:var(--radius-sm)}.dashboard-page{max-width:1600px;margin:2rem auto;padding:0 3rem 2rem}.dashboard-columns{display:grid;grid-template-columns:1fr 1.4fr 1.2fr;gap:4rem;align-items:start}.dashboard-col{min-width:0}.dashboard-col-left,.dashboard-col-right{position:sticky;top:5rem;max-height:calc(100vh - 8rem);overflow-y:auto}.dashboard-pagination{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-top:.75rem}.dashboard-page-info{font-family:var(--font-body);font-size:.75rem;color:var(--text-tertiary)}.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.dashboard-title{font-family:var(--font-display);font-size:1.8rem;font-weight:700;color:var(--text);margin:0}.dashboard-back-link{font-family:var(--font-body);font-size:.85rem;color:var(--primary);text-decoration:none}.dashboard-back-link:hover{color:var(--primary-hover)}.dashboard-loading,.dashboard-error,.dashboard-empty{font-family:var(--font-body);color:var(--text-secondary);text-align:center;padding:3rem 0}.dashboard-error{color:var(--danger)}.dashboard-rating-section{text-align:center;margin-bottom:1.5rem}.dashboard-rating-value{font-family:var(--font-display);font-size:3rem;font-weight:700;color:var(--primary)}.dashboard-rating-rd{display:block;font-family:var(--font-body);font-size:.85rem;color:var(--text-tertiary);margin-top:.25rem}.dashboard-period-tabs{display:flex;justify-content:center;gap:.5rem;margin-bottom:1.5rem}.dashboard-period-tab{font-family:var(--font-body);font-size:.8rem;padding:.4rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);cursor:pointer;transition:all .15s}.dashboard-period-tab:hover{background:var(--surface-hover);color:var(--text)}.dashboard-period-tab.active{background:var(--primary-surface);border-color:var(--primary);color:var(--primary)}.dashboard-stats-row{display:flex;gap:1rem;margin-bottom:1.5rem}.dashboard-stat-box{flex:1;display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:1.25rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:10px}.dashboard-stat-label{font-family:var(--font-body);font-size:.75rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em}.dashboard-stat-value{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--text)}.dashboard-bests{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}.dashboard-best-card{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:1.25rem;background:var(--surface);border:1px solid var(--border-accent);border-radius:10px}.dashboard-best-label{font-family:var(--font-body);font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.dashboard-best-value{font-family:var(--font-display);font-size:1.8rem;font-weight:700;color:var(--primary)}.dashboard-retry-section{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:1rem;background:#d4af5514;border:1px solid rgba(212,175,85,.2);border-radius:8px}.dashboard-retry-btn{white-space:nowrap}.dashboard-retry-hint{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary)}.puzzle-retry-mode-label{font-family:var(--font-body);font-size:.85rem;color:var(--primary);font-weight:600;margin-left:auto}.puzzle-retry-counter{font-family:var(--font-body);font-size:.8rem;color:var(--text-secondary);margin-left:.5rem}.dashboard-section{margin-bottom:1.5rem}.dashboard-section-title{font-family:var(--font-display);font-size:1.15rem;font-weight:600;color:var(--text);margin:0 0 1rem}.dashboard-theme-table{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:.85rem}.dashboard-theme-table th{text-align:left;padding:.6rem .75rem;color:var(--text-tertiary);font-weight:500;text-transform:uppercase;font-size:.7rem;letter-spacing:.06em;border-bottom:1px solid var(--border-strong)}.dashboard-theme-table td{padding:.6rem .75rem;color:var(--text);border-bottom:1px solid var(--border)}.dashboard-theme-table tr:hover td{background:var(--surface)}.dashboard-rating-history{display:flex;flex-direction:column;gap:.5rem}.dashboard-rating-point{display:flex;align-items:center;gap:.75rem}.dashboard-rating-date{font-family:var(--font-body);font-size:.75rem;color:var(--text-tertiary);min-width:80px}.dashboard-rating-bar{height:6px;background:var(--primary);border-radius:3px;transition:width .3s ease}.dashboard-rating-num{font-family:var(--font-body);font-size:.8rem;color:var(--text-secondary);min-width:40px}.dashboard-history-list{display:flex;flex-direction:column;gap:.5rem}.dashboard-history-card{display:flex;align-items:center;gap:.75rem;padding:.5rem .6rem;background:var(--surface);border-radius:8px;border-left:3px solid transparent;text-decoration:none;color:inherit;transition:border-color .15s,background .15s;cursor:pointer}.dashboard-history-card:hover{border-color:var(--primary);background:#d4af550a}.dashboard-history-card.solved{border-left-color:var(--success)}.dashboard-history-card.failed{border-left-color:var(--danger)}.dashboard-history-details{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:0}.dashboard-history-top,.dashboard-history-bottom{display:flex;align-items:center;gap:.5rem}.dashboard-history-rating{font-family:var(--font-body);font-size:.8rem;font-weight:600;color:var(--text)}.dashboard-history-result{font-family:var(--font-body);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.dashboard-history-result.success{color:var(--success)}.dashboard-history-result.danger{color:var(--danger)}.dashboard-history-hint{font-family:var(--font-body);font-size:.65rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em}.dashboard-history-change{font-family:var(--font-body);font-size:.8rem;font-weight:600}.dashboard-history-change.positive{color:var(--success)}.dashboard-history-change.negative{color:var(--danger)}.dashboard-history-date{font-family:var(--font-body);font-size:.75rem;color:var(--text-tertiary)}@media(max-width:400px){.dashboard-history-card{flex-direction:column;align-items:flex-start}}.dashboard-leaderboard-tabs{display:flex;gap:.5rem;margin-bottom:1rem}.dashboard-lb-tab{font-family:var(--font-body);font-size:.8rem;padding:.4rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);cursor:pointer;transition:all .15s}.dashboard-lb-tab:hover{background:var(--surface-hover);color:var(--text)}.dashboard-lb-tab.active{background:var(--primary-surface);border-color:var(--primary);color:var(--primary)}.dashboard-leaderboard{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:.95rem}.dashboard-leaderboard th{text-align:left;padding:.75rem 1rem;color:var(--text-tertiary);font-weight:500;text-transform:uppercase;font-size:.7rem;letter-spacing:.06em;border-bottom:1px solid var(--border-strong)}.dashboard-leaderboard td{padding:.75rem 1rem;color:var(--text);border-bottom:1px solid var(--border)}.dashboard-leaderboard tr:hover td{background:var(--surface)}@media(max-width:900px){.dashboard-columns{grid-template-columns:1fr}.dashboard-col-left,.dashboard-col-right{position:static;max-height:none}}@media(max-width:600px){.dashboard-stats-row{flex-direction:column}.dashboard-bests{grid-template-columns:1fr}}@media(max-width:768px){.container{padding:1rem}.game-layout{max-width:100%}.board-wrapper{max-width:100vw}.player-panel{padding:.5rem .75rem;flex-wrap:wrap;gap:.5rem}.player-avatar{width:28px;height:28px}.player-details h3{font-size:.85rem}.clock-time{font-size:1.3rem}.game-controls{flex-wrap:wrap}.game-controls .btn,.game-controls .btn-secondary,.game-controls .btn-danger,.game-controls .btn-draw-claim{min-height:44px;min-width:44px;padding:.5rem 1rem}.btn-sound-toggle{width:44px;height:44px}.game-over-panel{max-width:260px;padding:1.25rem}.game-over-title{font-size:1.2rem}.game-over-actions{flex-wrap:wrap}.draw-offer-notification{flex-direction:column;gap:.5rem;padding:.75rem;text-align:center;font-size:.85rem}.invite-panel{max-width:100%}.color-btn{padding:1rem 1.25rem}.color-piece{font-size:2rem}.resign-confirm{flex-wrap:wrap;justify-content:center;gap:.5rem}}@media(max-width:640px){.home-content{padding:1.5rem 1rem}.home-title{font-size:1.9rem}.hub-card{border-radius:var(--radius-lg)}.hub-body{padding:1.25rem 1.25rem 1.5rem}.tc-tabs{grid-template-columns:repeat(2,1fr)}.btn-play{padding:.9rem 2rem;font-size:1.05rem}.container{padding:1rem .75rem}.auth-title{font-size:1.8rem}.challenge-form{flex-direction:column}.challenge-form .btn{width:100%;min-height:44px}.challenge-sent{flex-direction:column;gap:.5rem;text-align:center}.open-challenge-link-row{flex-direction:column}.open-challenge-link-row .btn{width:100%;min-height:44px}.challenge-item{flex-direction:column;gap:.5rem;text-align:center}.challenge-item-actions{width:100%;justify-content:center}.tc-tab{padding:.85rem .5rem;min-height:44px}.tc-pill{padding:.65rem 1.2rem;min-height:44px;display:flex;align-items:center;justify-content:center}.hub-tab{padding:.85rem .5rem;min-height:44px}.promotion-btn{min-height:44px;min-width:44px;padding:.6rem 1.25rem}.glass-panel{padding:1.25rem;border-radius:var(--radius-lg)}.auth-panel{max-width:100%}.editor-tablebase{grid-column:1 / -1}}.tablebase-panel{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:.75rem 1rem;display:flex;flex-direction:column;gap:.5rem}.tablebase-panel .btn{align-self:flex-start}.tablebase-result{display:flex;flex-direction:column;gap:.5rem}.tablebase-eval{font-family:Manrope,sans-serif;font-weight:700;font-size:1rem;padding:.25rem .5rem;border-radius:var(--radius-sm);display:inline-block;width:fit-content}.tablebase-eval--win{color:var(--success);background:#5ba87a1a}.tablebase-eval--loss{color:var(--danger);background:#c45b5b1a}.tablebase-eval--draw{color:var(--text-secondary);background:#9da3b014}.tablebase-moves{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.tablebase-moves-label{color:var(--text-tertiary);font-size:.8rem;font-weight:600;margin-right:.25rem}.tablebase-move{font-family:Manrope,sans-serif;font-weight:600;font-size:.85rem;padding:.15rem .4rem;border-radius:var(--radius-sm);cursor:default}.editor-tablebase{margin-top:.5rem}.settings-overlay{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center;animation:settingsFadeIn .15s ease-out}@keyframes settingsFadeIn{0%{opacity:0}to{opacity:1}}.settings-panel{width:420px;max-width:90vw;max-height:80vh;overflow-y:auto;padding:1.75rem}.settings-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.settings-title{font-family:var(--font-display);font-size:1.25rem;color:var(--text);margin:0}.settings-close{background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:.25rem;border-radius:4px;transition:color var(--transition),background var(--transition);display:flex;align-items:center;justify-content:center}.settings-close:hover{color:var(--text);background:#ffffff0d}.settings-section{margin-bottom:1.5rem}.settings-section:last-child{margin-bottom:0}.settings-section-title{font-family:var(--font-body);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);margin:0 0 .75rem}.theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.theme-swatch{background:none;border:2px solid transparent;border-radius:8px;padding:.5rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.4rem;transition:border-color var(--transition),background var(--transition)}.theme-swatch:hover{background:#ffffff08;border-color:var(--text-tertiary)}.theme-swatch--active{border-color:var(--primary);background:#d4af5514}.theme-swatch--active:hover{border-color:var(--primary)}.theme-preview{display:grid;grid-template-columns:1fr 1fr;width:48px;height:48px;border-radius:4px;overflow:hidden;box-shadow:0 1px 4px #0000004d}.theme-square{width:100%;height:100%}.theme-label{font-family:var(--font-body);font-size:.7rem;font-weight:600;color:var(--text-secondary);text-align:center}.theme-swatch--active .theme-label{color:var(--primary)}.settings-toggle{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.settings-toggle-label{font-family:var(--font-body);font-size:.85rem;color:var(--text)}.settings-toggle-switch{position:relative;width:40px;height:22px;background:#ffffff1a;border:none;border-radius:11px;cursor:pointer;padding:0;transition:background var(--transition)}.settings-toggle-switch--active{background:var(--primary)}.settings-toggle-knob{position:absolute;top:3px;left:3px;width:16px;height:16px;background:var(--text);border-radius:50%;transition:transform var(--transition)}.settings-toggle-switch--active .settings-toggle-knob{transform:translate(18px)}.settings-select{background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:6px;padding:.35rem .6rem;font-family:var(--font-body);font-size:.82rem;font-weight:600;color:var(--text);cursor:pointer;transition:border-color var(--transition);appearance:auto}.settings-select:hover{border-color:var(--primary)}.settings-select:focus{outline:none;border-color:var(--primary)}.piece-set-list{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.piece-set-option{background:#ffffff0a;border:2px solid transparent;border-radius:6px;padding:.4rem .85rem;cursor:pointer;font-family:var(--font-body);font-size:.8rem;font-weight:600;color:var(--text-secondary);transition:border-color var(--transition),color var(--transition),background var(--transition)}.piece-set-option:hover{border-color:var(--text-tertiary);color:var(--text)}.piece-set-option--active{border-color:var(--primary);color:var(--primary);background:#d4af5514}.piece-set-coming-soon{font-family:var(--font-body);font-size:.75rem;font-style:italic;color:var(--text-tertiary)}.settings-btn{background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:.25rem;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:color var(--transition)}.settings-btn:hover{color:var(--text)}.navbar{background:#0b0f1aeb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.navbar-inner{max-width:1200px;margin:0 auto;padding:0 2rem;height:56px;display:flex;align-items:center;justify-content:space-between}.navbar-brand{font-family:var(--font-body);font-size:1.15rem;font-weight:800;color:var(--text);text-decoration:none;display:flex;align-items:center;gap:.6rem;letter-spacing:.04em;text-transform:uppercase;transition:opacity var(--transition)}.navbar-brand:hover{opacity:.85;color:var(--text)}.navbar-logo-img{height:28px;width:auto;border-radius:3px}.navbar-links{display:flex;align-items:center;gap:1.25rem}.nav-link{color:var(--text-tertiary);text-decoration:none;font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;transition:color var(--transition)}.nav-link:hover{color:var(--text)}.navbar-user{display:flex;align-items:center;gap:.75rem}.navbar-username{color:var(--primary);font-weight:700;font-size:.9rem;text-decoration:none}.navbar-username:hover{color:var(--primary-hover)}.navbar .btn-text:hover{color:var(--danger)}.navbar-kid-badge{display:inline-flex;align-items:center;justify-content:center;color:var(--primary);margin-right:.25rem}.navbar-messages-btn{position:relative;text-decoration:none}.navbar-unread-badge{position:absolute;top:-4px;right:-6px;background:var(--danger);color:#fff;font-size:.6rem;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1;pointer-events:none}.notif-bell,.notif-bell-btn{position:relative}.notif-badge{position:absolute;top:-4px;right:-6px;background:var(--danger);color:#fff;font-size:.65rem;font-weight:700;min-width:16px;height:16px;line-height:16px;border-radius:8px;text-align:center;padding:0 4px;pointer-events:none}.notif-dropdown{position:absolute;top:calc(100% + 8px);right:0;width:320px;max-height:400px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 32px #00000080;z-index:300;display:flex;flex-direction:column;overflow:hidden}.notif-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border)}.notif-header-title{font-weight:700;font-size:.85rem;color:var(--text);text-transform:uppercase;letter-spacing:.04em}.notif-mark-all{background:none;border:none;color:var(--primary);font-size:.75rem;font-weight:600;cursor:pointer;font-family:var(--font-body);padding:0;transition:color var(--transition)}.notif-mark-all:hover{color:var(--primary-hover)}.notif-list{overflow-y:auto;flex:1}.notif-empty{padding:2rem 1rem;text-align:center;color:var(--text-tertiary);font-size:.85rem}.notif-item{display:block;width:100%;padding:.65rem 1rem;background:none;border:none;border-bottom:1px solid var(--border);text-align:left;cursor:pointer;font-family:var(--font-body);transition:background var(--transition)}.notif-item:last-child{border-bottom:none}.notif-item:hover{background:#d4af550f}.notif-unread{background:#d4af5514;border-left:3px solid var(--primary)}.notif-item-title{font-size:.85rem;font-weight:600;color:var(--text);margin-bottom:2px}.notif-item-msg{font-size:.78rem;color:var(--text-secondary);line-height:1.3}.notif-item-time{font-size:.7rem;color:var(--text-tertiary);margin-top:3px}.player-search,.player-search-container{position:relative}.player-search-input{width:180px;padding:.35rem .7rem;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.85rem;font-family:var(--font-body);outline:none;transition:border-color var(--transition)}.player-search-input:focus{border-color:var(--primary)}.player-search-input::placeholder{color:var(--text-tertiary)}.player-search-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;min-width:200px;background:var(--surface);border:1px solid var(--border);border-radius:6px;overflow:hidden;z-index:200;box-shadow:0 8px 24px #0006}.player-search-result{display:block;width:100%;padding:.55rem .75rem;background:none;border:none;color:var(--text);font-size:.85rem;font-family:var(--font-body);text-align:left;cursor:pointer;transition:background var(--transition)}.player-search-result:hover{background:#d4af551a;color:var(--primary)}.player-search-loading,.player-search-empty{padding:.55rem .75rem;color:var(--text-tertiary);font-size:.8rem}.navbar-hamburger{display:none;background:none;border:none;cursor:pointer;padding:.5rem;width:44px;height:44px;flex-direction:column;align-items:center;justify-content:center;gap:5px;-webkit-tap-highlight-color:transparent}.hamburger-line{display:block;width:22px;height:2px;background:var(--text);border-radius:2px;transition:transform .25s ease,opacity .25s ease}.hamburger-open .hamburger-line:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger-open .hamburger-line:nth-child(2){opacity:0}.hamburger-open .hamburger-line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.navbar-backdrop{display:none}@media(max-width:768px){.navbar-inner{padding:0 1rem}.navbar-hamburger{display:flex}.navbar-links{display:none;position:absolute;top:56px;left:0;right:0;background:#0b0f1af7;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border);flex-direction:column;align-items:stretch;padding:.75rem 1.5rem 1.25rem;gap:0;z-index:99;animation:menuSlideDown .2s ease-out}.navbar-links-open{display:flex}@keyframes menuSlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.navbar-links .nav-link{display:block;padding:.75rem 0;font-size:.95rem;border-bottom:1px solid var(--border);min-height:44px;line-height:44px;padding:0}.navbar-links .nav-link:last-of-type{border-bottom:none}.navbar-links .settings-btn{padding:.75rem 0;min-height:44px;display:flex;align-items:center}.navbar-links .navbar-user{padding-top:.75rem;border-top:1px solid var(--border);margin-top:.5rem;justify-content:space-between;min-height:44px}.navbar-links .btn.btn-sm{width:100%;text-align:center;padding:.65rem 1rem;margin-top:.5rem;min-height:44px}.navbar-backdrop{display:block;position:fixed;inset:56px 0 0;background:#00000080;z-index:98}}.online-count{position:fixed;bottom:12px;right:16px;display:flex;align-items:center;gap:6px;padding:6px 12px;font-family:Manrope,sans-serif;font-size:.8rem;color:var(--text-secondary);background:var(--surface);border-radius:20px;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:50}.online-count-dot{width:8px;height:8px;border-radius:50%;background-color:var(--success);flex-shrink:0}.online-count-text{white-space:nowrap}.captured-pieces{display:flex;align-items:center;gap:.25rem;min-height:1.2rem}.captured-symbols{font-size:.8rem;color:var(--text-secondary);letter-spacing:.05em}.material-advantage{font-size:.75rem;font-weight:600;color:var(--primary);margin-left:.15rem}.move-list-panel{display:flex;flex-direction:column;padding:.75rem 1rem;border-radius:var(--radius-lg);max-height:360px;min-width:200px}.move-list-title{margin:0 0 .5rem;font-family:var(--font-body);font-size:.8rem;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em}.move-list-scroll{flex:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.move-list-scroll::-webkit-scrollbar{width:4px}.move-list-scroll::-webkit-scrollbar-track{background:transparent}.move-list-scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:2px}.move-list-empty{color:var(--text-tertiary);font-size:.85rem;text-align:center;padding:1.5rem 0}.move-row{display:grid;grid-template-columns:2rem 1fr 1fr;gap:.25rem;padding:.2rem .25rem;border-radius:var(--radius-xs)}.move-row:nth-child(2n){background:#ffffff05}.move-number{color:var(--text-tertiary);font-family:var(--font-body);font-size:.85rem;font-weight:500;text-align:right;padding-right:.35rem;-webkit-user-select:none;user-select:none}.move-san{color:var(--text);font-family:var(--font-body);font-size:.9rem;font-weight:500;padding:.1rem .35rem;border-radius:var(--radius-xs);transition:background .15s ease}.move-active{background:#d4af552e;color:var(--primary);font-weight:600}@media(min-width:900px){.game-outer{display:flex;justify-content:center;align-items:flex-start;gap:1.25rem}.game-layout{max-width:560px;flex-shrink:0}.move-list-panel{width:240px;max-height:480px;align-self:stretch}}@media(max-width:899px){.game-outer{display:flex;flex-direction:column;align-items:center;gap:.75rem;width:100%}.move-list-panel{width:100%;max-width:560px;max-height:200px}}@media(max-width:480px){.move-list-panel{min-width:0;padding:.5rem .75rem;max-height:160px}.move-san{font-size:.82rem}}.game-chat-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:100}.game-chat-toggle{width:44px;height:44px;border-radius:50%;background:var(--surface);border:1px solid var(--border-strong);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;position:relative}.game-chat-toggle:hover,.game-chat-toggle.chat-open{background:var(--surface-hover);color:var(--primary);border-color:var(--border-accent)}.chat-badge{position:absolute;top:-4px;right:-4px;background:var(--primary);color:var(--bg);font-family:Manrope,sans-serif;font-size:.65rem;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}.game-chat-panel{position:absolute;bottom:52px;right:0;width:300px;max-height:400px;display:flex;flex-direction:column;border:1px solid var(--border-strong);border-radius:12px;overflow:hidden;animation:chatSlideUp .2s ease}@keyframes chatSlideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.game-chat-header{display:flex;align-items:center;justify-content:space-between;padding:.6rem .8rem;border-bottom:1px solid var(--border);font-family:Manrope,sans-serif;font-size:.85rem;font-weight:600;color:var(--text)}.game-chat-close{background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:2px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:color .15s ease}.game-chat-close:hover{color:var(--text)}.game-chat-messages{flex:1;overflow-y:auto;padding:.6rem;display:flex;flex-direction:column;gap:.35rem;min-height:200px;max-height:280px}.game-chat-empty{color:var(--text-tertiary);font-size:.8rem;text-align:center;margin:auto;font-family:Manrope,sans-serif}.game-chat-msg{display:flex;align-items:flex-start;gap:.4rem;max-width:85%;font-family:Manrope,sans-serif;font-size:.8rem;line-height:1.35}.game-chat-msg.msg-mine{align-self:flex-end;flex-direction:row-reverse}.game-chat-msg.msg-opponent{align-self:flex-start}.msg-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:3px}.msg-dot-white{background:#e5e1d8;border:1px solid var(--border-strong)}.msg-dot-black{background:#2a2a2a;border:1px solid var(--text-tertiary)}.msg-dot-spectator{background:var(--text-tertiary);border:1px solid var(--border-strong)}.msg-text{background:var(--surface-hover);padding:.35rem .6rem;border-radius:8px;color:var(--text);word-break:break-word}.msg-mine .msg-text{background:#d4af551f;color:var(--text)}.game-chat-input-row{display:flex;align-items:center;gap:.4rem;padding:.5rem .6rem;border-top:1px solid var(--border)}.game-chat-input{flex:1;background:var(--bg);border:1px solid var(--border-strong);border-radius:8px;padding:.4rem .6rem;color:var(--text);font-family:Manrope,sans-serif;font-size:.8rem;outline:none;transition:border-color .15s ease}.game-chat-input::placeholder{color:var(--text-tertiary)}.game-chat-input:focus{border-color:var(--primary)}.game-chat-send{width:34px;height:34px;border-radius:8px;background:var(--primary);border:none;color:var(--bg);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s ease}.game-chat-send:hover:not(:disabled){background:var(--primary-hover)}.game-chat-send:disabled{opacity:.4;cursor:not-allowed}.game-chat-messages::-webkit-scrollbar{width:4px}.game-chat-messages::-webkit-scrollbar-track{background:transparent}.game-chat-messages::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:2px}@media(max-width:600px){.game-chat-panel{width:calc(100vw - 3rem);right:0}.game-chat-container{bottom:1rem;right:1rem}}.report-modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.report-modal{background:var(--surface);border:1px solid var(--border, #2a3050);border-radius:12px;padding:2rem;max-width:420px;width:90%}.report-modal-title{font-family:var(--font-display);font-size:1.4rem;color:var(--text);margin:0 0 .5rem}.report-modal-desc{color:var(--text-secondary);font-size:.9rem;margin:0 0 1.25rem}.report-modal-reasons{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.report-reason-option{display:flex;align-items:center;gap:.6rem;padding:.6rem .8rem;border:1px solid var(--border, #2a3050);border-radius:8px;cursor:pointer;color:var(--text);font-size:.95rem;transition:border-color .15s,background .15s}.report-reason-option:hover{border-color:var(--text-tertiary)}.report-reason-selected{border-color:var(--primary);background:#d4af5514}.report-reason-option input[type=radio]{accent-color:var(--primary)}.report-modal-details{width:100%;background:var(--bg);border:1px solid var(--border, #2a3050);border-radius:8px;padding:.6rem .8rem;color:var(--text);font-family:var(--font-body);font-size:.9rem;resize:vertical;margin-bottom:1rem;box-sizing:border-box}.report-modal-details::placeholder{color:var(--text-tertiary)}.report-modal-error{color:var(--danger);font-size:.85rem;margin:0 0 .75rem}.report-modal-actions{display:flex;justify-content:flex-end;gap:.75rem}.report-modal-cancel{background:transparent;border:1px solid var(--border, #2a3050);color:var(--text-secondary);padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-size:.9rem}.report-modal-cancel:hover{color:var(--text)}.report-modal-close{background:var(--primary);color:var(--bg);border:none;padding:.5rem 1.2rem;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:600}.report-modal-submit{background:var(--danger);color:#fff;border:none;padding:.5rem 1.2rem;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:600}.report-modal-submit:disabled{opacity:.5;cursor:not-allowed}.report-link{color:var(--text-tertiary);font-size:.85rem;cursor:pointer;background:none;border:none;padding:0;text-decoration:underline;transition:color .15s}.report-link:hover{color:var(--danger)}.conditional-moves-panel{max-width:600px;width:100%;margin-top:.75rem;padding:0!important;overflow:hidden}.conditional-moves-toggle{display:flex;align-items:center;gap:.5rem;width:100%;padding:.75rem 1rem;background:none;border:none;color:var(--text);cursor:pointer;font-family:Manrope,sans-serif;font-size:.9rem;text-align:left;transition:background .2s}.conditional-moves-toggle:hover{background:var(--surface-hover)}.conditional-moves-title{font-weight:600}.conditional-moves-count{color:var(--primary);font-size:.85rem}.conditional-moves-chevron{margin-left:auto;font-size:.75rem;color:var(--text-secondary);transition:transform .2s}.conditional-moves-chevron.expanded{transform:rotate(180deg)}.conditional-moves-body{padding:0 1rem 1rem}.conditional-moves-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.conditional-move-item{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:var(--surface-hover);border-radius:6px;font-size:.85rem}.conditional-move-text{color:var(--text-secondary)}.conditional-move-text strong{color:var(--primary)}.conditional-move-remove{background:none;border:none;color:var(--text-tertiary);cursor:pointer;font-size:1.1rem;padding:0 .25rem;line-height:1;transition:color .15s}.conditional-move-remove:hover{color:var(--danger)}.conditional-moves-clear{align-self:flex-end;background:none;border:none;color:var(--text-tertiary);cursor:pointer;font-size:.8rem;padding:.25rem 0;font-family:Manrope,sans-serif;transition:color .15s}.conditional-moves-clear:hover{color:var(--danger)}.conditional-moves-add{display:flex;flex-direction:column;gap:.5rem}.conditional-moves-row{display:flex;align-items:center;gap:.5rem}.conditional-moves-label{font-size:.8rem;color:var(--text-secondary);white-space:nowrap;min-width:110px}.conditional-moves-select{flex:1;padding:.4rem .6rem;background:var(--surface);border:1px solid var(--border-strong);border-radius:6px;color:var(--text);font-family:Manrope,sans-serif;font-size:.85rem;cursor:pointer;transition:border-color .15s}.conditional-moves-select:hover,.conditional-moves-select:focus{border-color:var(--primary);outline:none}.conditional-moves-select option{background:var(--surface);color:var(--text)}.conditional-moves-add-btn{align-self:flex-end;margin-top:.25rem;padding:.4rem 1rem!important;font-size:.85rem!important}.conditional-moves-hint{font-size:.8rem;color:var(--text-tertiary);margin:.5rem 0 0;line-height:1.4}.coord-training{max-width:900px;margin:2rem auto;padding:0 1rem}.coord-training-title{font-family:var(--font-display);font-size:2rem;color:var(--text);text-align:center;margin-bottom:1.5rem}.coord-start{display:flex;flex-direction:column;align-items:center;gap:1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2.5rem 2rem;max-width:500px;margin:0 auto}.coord-start h2{font-family:var(--font-display);font-size:1.5rem;color:var(--text)}.coord-mode-select,.coord-time-select{display:flex;flex-direction:column;align-items:center;gap:.5rem;width:100%}.coord-mode-select label,.coord-time-select label{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.coord-mode-buttons,.coord-time-buttons{display:flex;gap:.5rem}.coord-mode-buttons button,.coord-time-buttons button{font-family:var(--font-body);font-size:.95rem;padding:.5rem 1.2rem;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-hover);color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.coord-mode-buttons button:hover,.coord-time-buttons button:hover{border-color:var(--primary);color:var(--text)}.coord-mode-buttons button.active,.coord-time-buttons button.active{background:var(--primary);color:var(--bg);border-color:var(--primary);font-weight:600}.coord-start-btn{font-family:var(--font-body);font-size:1.1rem;font-weight:600;padding:.75rem 2.5rem;border-radius:10px;border:none;background:var(--primary);color:var(--bg);cursor:pointer;transition:background .15s ease;margin-top:.5rem}.coord-start-btn:hover{background:var(--primary-hover)}.coord-best-score{font-family:var(--font-body);font-size:.9rem;color:var(--text-tertiary)}.coord-best-score span{color:var(--primary);font-weight:600}.coord-playing{display:flex;gap:1.5rem;align-items:flex-start;justify-content:center}.coord-board-wrapper{position:relative;width:400px;flex-shrink:0}.coord-board-overlay{position:absolute;inset:0;z-index:10;cursor:pointer}.coord-sidebar{display:flex;flex-direction:column;gap:1rem;min-width:220px}.coord-timer{font-family:var(--font-display);font-size:3rem;color:var(--primary);text-align:center;line-height:1}.coord-timer.warning{color:var(--danger);animation:coord-pulse .5s ease-in-out infinite alternate}@keyframes coord-pulse{0%{opacity:1}to{opacity:.6}}.coord-stats{display:flex;gap:1rem;justify-content:center}.coord-stat{display:flex;flex-direction:column;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.75rem 1rem;flex:1}.coord-stat-label{font-family:var(--font-body);font-size:.75rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.coord-stat-value{font-family:var(--font-display);font-size:1.6rem;color:var(--text)}.coord-prompt{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem}.coord-prompt-label{font-family:var(--font-body);font-size:.85rem;color:var(--text-tertiary);margin-bottom:.25rem}.coord-input-row{display:flex;gap:.5rem;justify-content:center;margin-top:.5rem}.coord-input{font-family:var(--font-body);font-size:1.3rem;text-align:center;width:80px;padding:.5rem;border-radius:8px;border:2px solid var(--border-strong);background:var(--bg);color:var(--text);outline:none;transition:border-color .15s ease}.coord-input:focus{border-color:var(--primary)}.coord-find-prompt{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.25rem}.coord-find-prompt .coord-prompt-label{margin-bottom:.5rem}.coord-target-square{font-family:var(--font-display);font-size:2.5rem;color:var(--primary);font-weight:700}.coord-feedback{text-align:center;font-family:var(--font-body);font-size:.95rem;font-weight:600;padding:.5rem;border-radius:8px;min-height:2.2rem;display:flex;align-items:center;justify-content:center;transition:opacity .2s ease}.coord-feedback.correct{background:var(--success-surface);color:var(--success)}.coord-feedback.wrong{background:var(--danger-surface);color:var(--danger)}.coord-feedback.empty{opacity:0}.coord-results{display:flex;flex-direction:column;align-items:center;gap:1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2.5rem 2rem;max-width:500px;margin:0 auto}.coord-results h2{font-family:var(--font-display);font-size:1.8rem;color:var(--text)}.coord-results-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;width:100%}.coord-result-item{display:flex;flex-direction:column;align-items:center;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:1rem}.coord-result-label{font-family:var(--font-body);font-size:.8rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.coord-result-value{font-family:var(--font-display);font-size:2rem;color:var(--text)}.coord-result-value.best{color:var(--primary)}.coord-new-best{font-family:var(--font-body);font-size:.85rem;color:var(--primary);font-weight:600}.coord-results-actions{display:flex;gap:.75rem}.coord-results-actions .btn{font-family:var(--font-body);font-size:1rem;font-weight:600;padding:.65rem 1.8rem;border-radius:10px;border:none;cursor:pointer;transition:background .15s ease}.coord-results-actions .btn-primary{background:var(--primary);color:var(--bg)}.coord-results-actions .btn-primary:hover{background:var(--primary-hover)}.coord-results-actions .btn-secondary{background:var(--surface-hover);color:var(--text-secondary);border:1px solid var(--border-strong)}.coord-results-actions .btn-secondary:hover{color:var(--text);border-color:var(--primary)}@media(max-width:700px){.coord-playing{flex-direction:column;align-items:center}.coord-board-wrapper{width:100%;max-width:400px}.coord-sidebar{width:100%;max-width:400px;min-width:unset}}.mini-board{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border-radius:4px;overflow:hidden;flex-shrink:0}.mini-square{display:flex;align-items:center;justify-content:center}.mini-square.light{background-color:var(--board-light, #D4C8B0)}.mini-square.dark{background-color:var(--board-dark, #7A6B52)}.mini-piece{display:flex;align-items:center;justify-content:center;pointer-events:none}.mini-piece svg{width:100%;height:100%}.import-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.import-modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-xl);padding:2rem;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);position:relative}.import-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.import-modal-title{font-family:var(--font-display);font-size:1.4rem;font-weight:700;color:var(--text);margin:0}.import-close-btn{background:none;border:none;color:var(--text-tertiary);font-size:1.4rem;cursor:pointer;padding:.25rem;line-height:1;transition:color var(--transition)}.import-close-btn:hover{color:var(--text)}.import-form{display:flex;flex-direction:column;gap:1rem}.import-field{display:flex;flex-direction:column;gap:.35rem}.import-field label{font-size:.7rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.08em}.import-field input[type=text],.import-field input[type=number],.import-field input[type=date],.import-field select{background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:.65rem .85rem;color:var(--text);font-size:.9rem;font-family:var(--font-body);transition:border-color var(--transition),box-shadow var(--transition);width:100%}.import-field input:focus,.import-field select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}.import-field input::placeholder{color:var(--text-tertiary)}.import-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.import-checkbox{flex-direction:row;align-items:center;gap:.5rem}.import-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer}.import-checkbox label{text-transform:none;font-size:.88rem;color:var(--text);font-weight:500;cursor:pointer}.import-radio-group{display:flex;gap:1rem}.import-radio-option{display:flex;align-items:center;gap:.4rem;cursor:pointer}.import-radio-option input[type=radio]{accent-color:var(--primary);cursor:pointer}.import-radio-option span{font-size:.88rem;color:var(--text)}.import-submit{margin-top:.5rem}.scan-camera-area{position:relative;border:2px dashed var(--border-strong);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg);min-height:200px;display:flex;align-items:center;justify-content:center}.scan-camera-area video{width:100%;display:block}.scan-camera-area canvas{display:none}.scan-preview{width:100%}.scan-capture-btn{background:var(--primary);color:var(--bg);border:none;padding:.6rem 1.2rem;border-radius:var(--radius-md);font-weight:700;font-size:.88rem;cursor:pointer;font-family:var(--font-body);transition:all var(--transition)}.scan-capture-btn:hover{background:var(--primary-hover)}.scan-retake-btn{background:var(--surface-hover);color:var(--text-secondary);border:1px solid var(--border-strong);padding:.4rem 1rem;border-radius:var(--radius-sm);font-size:.82rem;cursor:pointer;font-family:var(--font-body);margin-top:.5rem;transition:all var(--transition)}.scan-retake-btn:hover{border-color:var(--primary);color:var(--primary)}.scan-camera-placeholder{text-align:center;color:var(--text-tertiary);padding:2rem}.scan-camera-placeholder p{margin:.5rem 0 0;font-size:.85rem}.import-progress{text-align:center;padding:2rem 1rem}.import-spinner{width:36px;height:36px;border:3px solid var(--border-strong);border-top-color:var(--primary);border-radius:50%;animation:import-spin .8s linear infinite;margin:0 auto 1rem}@keyframes import-spin{to{transform:rotate(360deg)}}.import-progress-text{color:var(--text-secondary);font-size:.9rem;margin:0}.import-progress-count{color:var(--primary);font-weight:700;font-size:1.1rem;margin:.5rem 0 0}.import-success{text-align:center;padding:2rem 1rem}.import-success-icon{font-size:2.5rem;color:var(--success);margin-bottom:.75rem}.import-success-title{font-family:var(--font-display);font-size:1.2rem;color:var(--text);margin:0 0 .5rem}.import-success-text{color:var(--text-secondary);font-size:.9rem;margin:0 0 1.25rem}.import-success-actions{display:flex;gap:.75rem;justify-content:center}.import-error{text-align:center;padding:1.5rem 1rem}.import-error-text{color:var(--danger);font-size:.88rem;background:var(--danger-surface);padding:.65rem 1rem;border-radius:var(--radius-sm);margin:0 0 1rem}@media(max-width:520px){.import-modal{margin:1rem;padding:1.5rem;max-width:100%}.import-row{grid-template-columns:1fr}}.improve-page{max-width:1200px;margin:0 auto;padding:2rem}.improve-header{margin-bottom:2rem}.improve-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.btn-export-pgn{padding:.5rem 1rem;font-size:.85rem;font-weight:600;color:var(--bg);background:var(--primary);border:none;border-radius:6px;cursor:pointer;white-space:nowrap;transition:background .15s}.btn-export-pgn:hover:not(:disabled){background:var(--primary-hover)}.btn-export-pgn:disabled{opacity:.6;cursor:not-allowed}.improve-title{font-family:var(--font-display);font-size:2rem;font-weight:700;color:var(--text);margin:0 0 .25rem}.improve-subtitle{color:var(--text-tertiary);font-size:.95rem;margin:0}.import-bar{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:2rem}.tools-bar{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-bottom:2rem}.import-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;cursor:pointer;transition:all var(--transition);display:flex;align-items:center;gap:1rem;text-align:left}.import-card:hover{border-color:var(--primary);background:var(--surface-hover);transform:translateY(-2px);box-shadow:var(--shadow-gold)}.import-card-icon{font-size:1.8rem;width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--primary-surface);border-radius:var(--radius-md);color:var(--primary);flex-shrink:0}.import-card-info{display:flex;flex-direction:column;gap:.15rem}.import-card-title{font-weight:700;font-size:.95rem;color:var(--text)}.import-card-desc{font-size:.8rem;color:var(--text-tertiary)}.improve-main{display:grid;grid-template-columns:1fr 260px;gap:1.5rem}.game-list-section{min-width:0}.game-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.game-list-title{font-family:var(--font-display);font-size:1.2rem;font-weight:600;color:var(--text);margin:0}.game-list-count{font-size:.8rem;color:var(--text-tertiary)}.game-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.game-list-table{width:100%;border-collapse:collapse}.game-list-table th{text-align:left;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);font-weight:600;padding:.75rem 1rem;border-bottom:1px solid var(--border);background:var(--bg-subtle)}.game-list-table td{padding:.65rem 1rem;font-size:.88rem;color:var(--text);border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-list-table tr:last-child td{border-bottom:none}.game-list-table tbody tr{cursor:pointer;transition:background var(--transition)}.game-list-table tbody tr:hover{background:var(--surface-hover)}.game-source-icon{font-size:1.1rem;color:var(--text-secondary)}.game-opponent{font-weight:600}.game-opening{color:var(--text-secondary);max-width:180px;overflow:hidden;text-overflow:ellipsis}.game-result{font-weight:700;font-size:.8rem;padding:.15rem .5rem;border-radius:var(--radius-xs);display:inline-block}.game-result-win{color:var(--success);background:var(--success-surface)}.game-result-loss{color:var(--danger);background:var(--danger-surface)}.game-result-draw{color:var(--text-secondary);background:var(--secondary-surface)}.game-date{color:var(--text-tertiary);font-size:.82rem}.game-list-empty{padding:3rem 2rem;text-align:center;color:var(--text-tertiary)}.game-list-empty-title{font-family:var(--font-display);font-size:1.1rem;color:var(--text-secondary);margin:0 0 .5rem}.game-list-empty-text{font-size:.88rem;margin:0}.game-list-footer{padding:1rem;text-align:center;border-top:1px solid var(--border)}.btn-load-more{background:var(--bg);border:1px solid var(--border-strong);color:var(--text-secondary);padding:.5rem 1.5rem;border-radius:var(--radius-md);font-size:.85rem;font-weight:600;cursor:pointer;font-family:var(--font-body);transition:all var(--transition)}.btn-load-more:hover{border-color:var(--primary);color:var(--primary)}.btn-load-more:disabled{opacity:.45;cursor:not-allowed}.filter-sidebar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;height:fit-content;position:sticky;top:5rem}.filter-title{font-family:var(--font-display);font-size:1rem;font-weight:600;color:var(--text);margin:0 0 1rem}.filter-group{margin-bottom:1rem}.filter-label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);font-weight:600;margin-bottom:.35rem}.filter-select,.filter-input{width:100%;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.5rem .65rem;color:var(--text);font-size:.85rem;font-family:var(--font-body);transition:border-color var(--transition);appearance:auto}.filter-select:focus,.filter-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}.filter-reset{width:100%;background:none;border:1px solid var(--border-strong);color:var(--text-secondary);padding:.45rem;border-radius:var(--radius-sm);font-size:.8rem;font-weight:600;cursor:pointer;font-family:var(--font-body);transition:all var(--transition);margin-top:.5rem}.filter-reset:hover{border-color:var(--danger);color:var(--danger)}.improve-loading{text-align:center;padding:4rem 2rem;color:var(--text-secondary)}@media(max-width:768px){.improve-page{padding:1rem}.improve-title{font-size:1.5rem}.import-bar,.improve-main{grid-template-columns:1fr}.filter-sidebar{position:static;order:-1;display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.filter-title{grid-column:1 / -1;margin-bottom:0}.filter-reset{grid-column:1 / -1}.game-list-table th:nth-child(3),.game-list-table td:nth-child(3){display:none}.game-list-table th,.game-list-table td{padding:.55rem .65rem;font-size:.82rem}.import-card{padding:1rem;min-height:44px}}@media(max-width:480px){.game-list-table th:nth-child(5),.game-list-table td:nth-child(5){display:none}}.move-tree-list{display:flex;flex-direction:column;font-size:.88rem;font-family:var(--font-body)}.move-tree-row{display:grid;grid-template-columns:32px 1fr 1fr;gap:0}.variation-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem;padding:.2rem .4rem .2rem 1.5rem;margin:.15rem 0;border-left:2px solid var(--border-strong);background:#ffffff05;border-radius:0 var(--radius-xs) var(--radius-xs) 0}.variation-move-number{font-size:.74rem;padding:.15rem .1rem;color:var(--text-tertiary);font-weight:600;-webkit-user-select:none;user-select:none}.variation-move{font-size:.82rem;padding:.15rem .35rem;color:var(--text-secondary)}.variation-move:hover{background:var(--surface-hover);color:var(--text)}.variation-move.move-cell-active{background:var(--primary-surface);color:var(--primary);font-weight:700;border:1px solid rgba(212,175,85,.2)}.variation-context-menu{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:0 4px 16px #0006;z-index:1000;overflow:hidden;min-width:140px}.variation-context-menu-item{display:block;width:100%;background:none;border:none;color:var(--danger);padding:.5rem .75rem;font-size:.82rem;font-family:var(--font-body);font-weight:600;cursor:pointer;text-align:left;transition:background var(--transition)}.variation-context-menu-item:hover{background:var(--surface-hover)}.game-detail-page{max-width:1200px;margin:0 auto;padding:2rem}.game-detail-loading{text-align:center;padding:4rem 2rem;color:var(--text-secondary)}.game-detail-error{text-align:center;padding:4rem 2rem}.game-detail-error p{color:var(--danger);font-size:.95rem;margin:0 0 1rem}.game-detail-layout{display:grid;grid-template-columns:minmax(300px,1fr) minmax(280px,420px);gap:2rem;align-items:start}.game-detail-board{display:flex;flex-direction:column;gap:1rem}.game-detail-board-wrapper{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-board);aspect-ratio:1}.game-detail-nav{display:flex;justify-content:center;gap:.5rem}.game-nav-btn{background:var(--surface);border:1px solid var(--border-strong);color:var(--text-secondary);width:44px;height:36px;border-radius:var(--radius-sm);font-size:.85rem;font-weight:700;cursor:pointer;font-family:var(--font-body);transition:all var(--transition);display:flex;align-items:center;justify-content:center}.game-nav-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-surface)}.game-nav-btn:disabled{opacity:.3;cursor:not-allowed}.game-detail-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden}.game-detail-header{padding:1.25rem 1.25rem 1rem;border-bottom:1px solid var(--border)}.game-detail-players{font-family:var(--font-display);font-size:1.15rem;font-weight:700;color:var(--text);margin:0 0 .5rem}.game-detail-meta{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;font-size:.82rem;color:var(--text-secondary)}.game-detail-meta-sep{color:var(--text-tertiary)}.game-detail-result-badge{font-weight:700;font-size:.78rem;padding:.1rem .45rem;border-radius:var(--radius-xs);display:inline-block}.game-detail-result-white,.game-detail-result-black{color:var(--text);background:#e5e1d81f}.game-detail-result-draw{color:var(--text-secondary);background:var(--secondary-surface)}.game-detail-opening{padding:.75rem 1.25rem;border-bottom:1px solid var(--border)}.game-detail-opening-name{font-weight:600;font-size:.9rem;color:var(--text);margin:0}.game-detail-opening-eco{font-size:.78rem;color:var(--text-tertiary);margin:.15rem 0 0}.game-detail-source{padding:.5rem 1.25rem;border-bottom:1px solid var(--border)}.source-badge{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;color:var(--text-secondary);background:var(--bg-subtle);padding:.2rem .6rem;border-radius:var(--radius-xs);font-weight:600}.game-detail-moves{flex:1;overflow-y:auto;padding:.75rem 1.25rem;max-height:380px}.move-list{display:grid;grid-template-columns:32px 1fr 1fr;gap:0;font-size:.88rem;font-family:var(--font-body)}.move-number{color:var(--text-tertiary);font-size:.78rem;font-weight:600;padding:.25rem .4rem .25rem .15rem;text-align:right}.move-cell{padding:.25rem .4rem;border-radius:var(--radius-xs);cursor:pointer;color:var(--text);transition:all var(--transition);font-weight:500}.move-cell:hover{background:var(--surface-hover)}.move-cell-active{background:var(--primary-surface);color:var(--primary);font-weight:700;border:1px solid rgba(212,175,85,.2)}.move-list-empty{color:var(--text-tertiary);font-size:.88rem;text-align:center;padding:2rem 1rem}.game-detail-footer{padding:1rem 1.25rem;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.5rem}.btn-export{background:var(--surface-hover);color:var(--text);border:1px solid var(--border-strong);padding:.5rem 1rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;cursor:pointer;font-family:var(--font-body);transition:all var(--transition);text-align:center}.btn-export:hover{border-color:var(--primary);color:var(--primary)}.btn-learn-mistakes{display:block;text-align:center;text-decoration:none;background:var(--primary-surface);border-color:var(--primary-dim)}.btn-learn-mistakes:hover{background:var(--primary-glow);color:var(--primary-hover)}.game-detail-back{display:inline-block;color:var(--text-secondary);font-size:.82rem;text-align:center;transition:color var(--transition)}.game-detail-back:hover{color:var(--primary)}@media(max-width:768px){.game-detail-page{padding:1rem}.game-detail-layout{grid-template-columns:1fr}.game-detail-moves{max-height:250px}}.profile-page{max-width:900px;margin:2rem auto;padding:0 1.5rem}.profile-loading,.profile-error,.profile-not-found{text-align:center;padding:4rem 1rem;color:var(--text-secondary);font-size:1.1rem}.profile-error{color:var(--danger)}.profile-header{text-align:center;margin-bottom:2.5rem}.profile-username{font-family:var(--font-display);font-size:2.4rem;font-weight:700;color:var(--text);margin:0 0 .35rem}.profile-status{display:flex;align-items:center;justify-content:center;gap:.4rem;margin-bottom:.25rem}.profile-status-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.profile-status-dot.profile-status-online{background-color:var(--success);box-shadow:0 0 6px var(--success)}.profile-status-dot.profile-status-offline{background-color:var(--text-tertiary)}.profile-status-label{font-size:.8rem;font-weight:600}.profile-status-label.profile-status-online{color:var(--success)}.profile-status-label.profile-status-offline{color:var(--text-tertiary)}.profile-follow-counts{display:flex;align-items:center;justify-content:center;gap:.6rem;margin:.5rem 0 .25rem;font-size:.9rem;color:var(--text-secondary)}.profile-follow-stat strong{color:var(--text);font-weight:700}.profile-follow-separator{color:var(--text-tertiary)}.profile-action-buttons{display:flex;align-items:center;justify-content:center;gap:.75rem;margin:.75rem 0 .25rem}.profile-message-btn{display:inline-block;padding:.5rem 1.75rem;font-size:.85rem;font-weight:700;border:2px solid var(--secondary);border-radius:6px;background:transparent;color:var(--secondary);cursor:pointer;text-decoration:none;transition:background .15s,color .15s}.profile-message-btn:hover{background:var(--secondary);color:var(--bg)}.profile-follow-btn{display:inline-block;margin:0;padding:.5rem 1.75rem;font-size:.85rem;font-weight:700;border:2px solid var(--primary);border-radius:6px;background:var(--primary);color:var(--bg);cursor:pointer;transition:background .15s,color .15s}.profile-follow-btn:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.profile-follow-btn--following{background:transparent;color:var(--primary)}.profile-follow-btn--following:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:var(--text)}.profile-follow-btn:disabled{opacity:.5;cursor:not-allowed}.profile-joined{color:var(--text-tertiary);font-size:.9rem}.profile-ratings{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:2.5rem}.profile-rating-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.25rem 1rem;text-align:center}.profile-rating-category{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin-bottom:.5rem}.profile-rating-value{font-family:var(--font-display);font-size:2rem;font-weight:700;color:var(--primary);line-height:1.1}.profile-rating-games{color:var(--text-tertiary);font-size:.8rem;margin-top:.4rem}.profile-rating-wld{display:flex;justify-content:center;gap:.6rem;margin-top:.5rem;font-size:.8rem;font-weight:600}.profile-wld-win{color:var(--success)}.profile-wld-loss{color:var(--danger)}.profile-wld-draw{color:var(--text-secondary)}.profile-rating-history{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.5rem;margin-bottom:2.5rem}.profile-rh-tabs{display:flex;gap:.5rem;margin-bottom:1.25rem}.profile-rh-tab{background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);font-family:var(--font-body);font-size:.8rem;font-weight:600;padding:.35rem 1rem;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.profile-rh-tab:hover{border-color:var(--primary);color:var(--text)}.profile-rh-tab--active{background:var(--primary);border-color:var(--primary);color:var(--bg)}.profile-rh-graph{width:100%;min-height:180px;display:flex;align-items:center;justify-content:center}.profile-rh-svg{width:100%;height:auto;max-height:280px}.profile-rh-empty{color:var(--text-tertiary);font-size:.9rem;text-align:center;padding:2rem 0;margin:0}.profile-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.profile-section-header .profile-section-title{margin-bottom:0}.btn-export-pgn{background:transparent;border:1px solid var(--primary);color:var(--primary);padding:.35rem .85rem;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;font-family:Manrope,sans-serif;transition:background .15s,color .15s}.btn-export-pgn:hover:not(:disabled){background:var(--primary);color:var(--bg)}.btn-export-pgn:disabled{opacity:.5;cursor:not-allowed}.profile-h2h{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.5rem;text-align:center;margin-bottom:2.5rem}.profile-h2h-record{display:flex;justify-content:center;align-items:center;gap:.75rem;font-size:1.6rem;font-weight:700;font-family:var(--font-display);margin:.75rem 0 .5rem}.profile-h2h-win{color:var(--success)}.profile-h2h-loss{color:var(--danger)}.profile-h2h-draw{color:var(--text-secondary)}.profile-h2h-separator{color:var(--text-tertiary);font-weight:400}.profile-h2h-total{color:var(--text-tertiary);font-size:.85rem;margin:0}.profile-section-title{font-family:var(--font-display);font-size:1.3rem;font-weight:700;color:var(--text);margin-bottom:1rem}.profile-games-table{width:100%;border-collapse:collapse}.profile-games-table th{text-align:left;color:var(--text-tertiary);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.6rem .75rem;border-bottom:1px solid var(--border)}.profile-games-table td{padding:.65rem .75rem;font-size:.9rem;color:var(--text);border-bottom:1px solid var(--border)}.profile-games-table tr:last-child td{border-bottom:none}.profile-result-win{color:var(--success);font-weight:700}.profile-result-loss{color:var(--danger);font-weight:700}.profile-result-draw{color:var(--text-secondary);font-weight:700}.profile-games-empty{color:var(--text-tertiary);text-align:center;padding:2rem 0}.profile-achievements{margin-bottom:2.5rem}.profile-achievements-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.75rem}.profile-achievement-badge{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem .75rem;text-align:center;transition:transform .15s ease,box-shadow .15s ease}.profile-achievement-badge:hover{transform:translateY(-2px)}.profile-achievement-unlocked{border-color:var(--primary);box-shadow:0 0 12px #d4af5526}.profile-achievement-unlocked .profile-achievement-icon{color:var(--primary);text-shadow:0 0 8px rgba(212,175,85,.4)}.profile-achievement-locked{opacity:.4}.profile-achievement-locked .profile-achievement-icon{color:var(--text-tertiary)}.profile-achievement-icon{font-size:1.8rem;line-height:1;margin-bottom:.5rem}.profile-achievement-name{font-family:var(--font-display);font-size:.8rem;font-weight:700;color:var(--text);margin-bottom:.25rem;line-height:1.2}.profile-achievement-desc{font-size:.7rem;color:var(--text-secondary);line-height:1.3}.profile-achievement-toast{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);z-index:1000;animation:toast-slide-up .3s ease-out}.profile-achievement-toast-inner{display:flex;align-items:center;gap:.6rem;background:var(--surface);border:1px solid var(--primary);border-radius:10px;padding:.85rem 1.5rem;color:var(--text);font-size:.9rem;font-weight:600;box-shadow:0 4px 20px #0006,0 0 15px #d4af5533}.profile-achievement-toast-icon{color:var(--primary);font-size:1.3rem}@keyframes toast-slide-up{0%{opacity:0;transform:translate(-50%) translateY(1rem)}to{opacity:1;transform:translate(-50%) translateY(0)}}.profile-notes{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.5rem;margin-bottom:2.5rem}.profile-notes-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.profile-notes-header .profile-section-title{margin-bottom:0}.profile-notes-private{font-size:.75rem;color:var(--text-tertiary);font-style:italic}.profile-notes-saved{font-size:.75rem;color:var(--success);font-weight:600;margin-left:auto;animation:profile-notes-fade-in .2s ease}@keyframes profile-notes-fade-in{0%{opacity:0}to{opacity:1}}.profile-notes-textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:var(--font-body);font-size:.9rem;padding:.75rem;resize:vertical;min-height:4rem;line-height:1.5;box-sizing:border-box}.profile-notes-textarea::placeholder{color:var(--text-tertiary)}.profile-notes-textarea:focus{outline:none;border-color:var(--primary)}.profile-stream-links{display:flex;align-items:center;justify-content:center;gap:.75rem;margin:.5rem 0}.profile-stream-link{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .85rem;border-radius:6px;font-size:.8rem;font-weight:600;text-decoration:none;transition:opacity .15s}.profile-stream-link:hover{opacity:.8}.profile-stream-twitch{background:#9146ff26;color:#9146ff;border:1px solid rgba(145,70,255,.3)}.profile-stream-youtube{background:#ff00001a;color:#f44;border:1px solid rgba(255,0,0,.2)}.profile-links-edit{margin:.5rem 0}.profile-links-display{display:flex;align-items:center;justify-content:center;gap:.75rem;flex-wrap:wrap}.profile-links-form{display:flex;flex-direction:column;align-items:center;gap:.5rem;max-width:360px;margin:0 auto}.profile-links-input{width:100%;padding:.45rem .75rem;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;font-family:var(--font-body);font-size:.85rem;box-sizing:border-box}.profile-links-input::placeholder{color:var(--text-tertiary)}.profile-links-input:focus{outline:none;border-color:var(--primary)}.profile-links-error{color:var(--danger);font-size:.8rem;margin:0}.profile-links-actions{display:flex;gap:.5rem}.profile-links-actions button{padding:.35rem .85rem;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;font-family:Manrope,sans-serif;transition:background .15s,color .15s}.profile-links-actions button:first-child{background:var(--primary);color:var(--bg);border:1px solid var(--primary)}.profile-links-actions button:first-child:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.profile-links-actions button:last-child{background:transparent;color:var(--text-secondary);border:1px solid var(--border)}.profile-links-actions button:last-child:hover:not(:disabled){color:var(--text);border-color:var(--text-secondary)}.profile-links-actions button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:700px){.profile-ratings{grid-template-columns:repeat(2,1fr)}.profile-username{font-size:1.8rem}.profile-achievements-grid{grid-template-columns:repeat(3,1fr)}.profile-games-table th:nth-child(4),.profile-games-table td:nth-child(4){display:none}}@media(max-width:400px){.profile-ratings{grid-template-columns:1fr}.profile-achievements-grid{grid-template-columns:repeat(2,1fr)}}.profile-sessions{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.5rem;margin-bottom:2.5rem}.profile-sessions-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.profile-sessions-header .profile-section-title{margin-bottom:0}.profile-sessions-revoke-all{background:transparent;border:1px solid var(--danger);color:var(--danger);padding:.35rem .85rem;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;font-family:Manrope,sans-serif;transition:background .15s,color .15s}.profile-sessions-revoke-all:hover:not(:disabled){background:var(--danger);color:#fff}.profile-sessions-revoke-all:disabled{opacity:.5;cursor:not-allowed}.profile-sessions-list{display:flex;flex-direction:column;gap:.5rem}.profile-session-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--bg);border:1px solid var(--border);border-radius:8px;gap:1rem}.profile-session-current{border-color:var(--primary)}.profile-session-info{flex:1;min-width:0}.profile-session-device{font-size:.85rem;font-weight:600;color:var(--text);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.profile-session-badge{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--primary);background:#d4af551f;padding:.15rem .5rem;border-radius:4px}.profile-session-meta{display:flex;gap:1rem;font-size:.75rem;color:var(--text-tertiary);margin-top:.25rem}.profile-session-revoke{background:transparent;border:1px solid var(--danger);color:var(--danger);padding:.3rem .75rem;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;font-family:Manrope,sans-serif;white-space:nowrap;transition:background .15s,color .15s}.profile-session-revoke:hover:not(:disabled){background:var(--danger);color:#fff}.profile-session-revoke:disabled{opacity:.5;cursor:not-allowed}.profile-danger-zone{margin-top:2rem;padding:1.25rem;border:1px solid var(--danger);border-radius:var(--radius);background:#c45b5b0d}.profile-danger-desc{color:var(--text-secondary);font-size:.9rem;margin:.5rem 0 1rem}.profile-danger-btn{background:var(--danger);color:#fff;border:none;padding:.5rem 1.25rem;border-radius:var(--radius-sm);cursor:pointer;font-family:Manrope,sans-serif;font-weight:600;font-size:.9rem;transition:opacity .15s}.profile-danger-btn:hover{opacity:.85}.profile-modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200}.profile-modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:1.5rem;max-width:400px;width:90%}.profile-modal-title{margin:0 0 .5rem;color:var(--danger);font-family:Playfair Display,serif;font-size:1.25rem}.profile-modal-desc{color:var(--text-secondary);font-size:.9rem;margin:0 0 1rem}.profile-modal-input{width:100%;padding:.5rem .75rem;background:var(--bg);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-xs);font-family:Manrope,sans-serif;font-size:.95rem;box-sizing:border-box}.profile-modal-error{color:var(--danger);font-size:.85rem;margin:.5rem 0 0}.profile-modal-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1rem}.profile-modal-cancel{background:none;border:1px solid var(--border-strong);color:var(--text);padding:.5rem 1rem;border-radius:var(--radius-sm);cursor:pointer;font-family:Manrope,sans-serif}.profile-modal-confirm{background:var(--danger);color:#fff;border:none;padding:.5rem 1rem;border-radius:var(--radius-sm);cursor:pointer;font-family:Manrope,sans-serif;font-weight:600}.profile-modal-confirm:disabled{opacity:.5;cursor:not-allowed}.leaderboard-page{max-width:800px;margin:2rem auto;padding:0 1.5rem}.leaderboard-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2rem}.leaderboard-title{font-family:var(--font-display);font-size:1.6rem;font-weight:700;color:var(--text);margin:0 0 1.5rem;text-align:center}.leaderboard-tabs{display:flex;gap:.5rem;justify-content:center;margin-bottom:1.5rem}.leaderboard-tab{background:transparent;border:1px solid var(--border-strong);border-radius:6px;padding:.5rem 1.25rem;color:var(--text-secondary);font-family:var(--font-body);font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;transition:all .15s ease}.leaderboard-tab:hover{color:var(--text);border-color:var(--border-accent)}.leaderboard-tab.active{background:var(--primary);color:var(--bg);border-color:var(--primary)}.leaderboard-loading,.leaderboard-empty{text-align:center;color:var(--text-secondary);padding:3rem 1rem;font-size:.95rem}.leaderboard-error{text-align:center;color:var(--danger);padding:3rem 1rem;font-size:.95rem}.leaderboard-table-wrap{overflow-x:auto}.leaderboard-table{width:100%;border-collapse:collapse;font-size:.9rem}.leaderboard-table thead th{color:var(--text-tertiary);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;padding:.6rem .75rem;border-bottom:1px solid var(--border-strong);text-align:left}.leaderboard-table tbody tr{transition:background .1s ease}.leaderboard-table tbody tr:hover{background:var(--surface-hover)}.leaderboard-table tbody tr.highlight{background:var(--primary-surface)}.leaderboard-table tbody tr.highlight:hover{background:var(--primary-glow)}.leaderboard-table tbody td{padding:.65rem .75rem;color:var(--text);border-bottom:1px solid var(--border)}.col-rank{width:3rem;text-align:center;font-weight:700;color:var(--text-secondary)}.leaderboard-table tbody tr.highlight .col-rank{color:var(--primary)}.col-player{font-weight:600}.col-rating{font-weight:700;font-variant-numeric:tabular-nums}.col-games{color:var(--text-secondary);font-variant-numeric:tabular-nums}.col-wld{color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}.leaderboard-player-link{color:var(--primary);text-decoration:none;transition:color .15s ease}.leaderboard-player-link:hover{color:var(--primary-hover)}.leaderboard-view-tabs{display:flex;gap:0;justify-content:center;margin-bottom:1rem;border-bottom:1px solid var(--border)}.leaderboard-view-tab{background:transparent;border:none;border-bottom:2px solid transparent;padding:.6rem 1.5rem;color:var(--text-secondary);font-family:var(--font-body);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s ease}.leaderboard-view-tab:hover{color:var(--text)}.leaderboard-view-tab.active{color:var(--primary);border-bottom-color:var(--primary)}.distribution-section{padding:1rem 0}.distribution-percentile{text-align:center;font-family:var(--font-display);font-size:1.4rem;font-weight:700;color:var(--primary);margin:0 0 1.5rem}.distribution-chart{display:flex;align-items:flex-end;gap:2px;height:200px;padding:0 .5rem}.distribution-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}.distribution-bar{width:100%;min-height:2px;background:var(--secondary);border-radius:2px 2px 0 0;transition:height .3s ease}.distribution-bar-col.user-bucket .distribution-bar{background:var(--primary)}.distribution-label{font-size:.6rem;color:var(--text-tertiary);margin-top:4px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.distribution-bar-col.user-bucket .distribution-label{color:var(--primary);font-weight:700}.distribution-axis-label{text-align:center;color:var(--text-tertiary);font-size:.75rem;margin-top:.5rem;text-transform:uppercase;letter-spacing:.06em}@media(max-width:600px){.leaderboard-card{padding:1.25rem}.leaderboard-tabs{flex-wrap:wrap}.leaderboard-tab{padding:.4rem .9rem;font-size:.8rem}.leaderboard-table{font-size:.82rem}}.editor-page{max-width:1200px;margin:0 auto;padding:2rem}.editor-header{margin-bottom:1.5rem}.editor-title{font-family:var(--font-display);font-size:2rem;font-weight:700;color:var(--text);margin:0 0 .25rem}.editor-subtitle{color:var(--text-tertiary);font-size:.95rem;margin:0}.editor-fen-bar{display:flex;gap:.75rem;margin-bottom:.5rem}.editor-fen-input{flex:1;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.6rem .85rem;color:var(--text);font-size:.88rem;font-family:monospace;transition:border-color var(--transition)}.editor-fen-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}.editor-fen-input::placeholder{color:var(--text-tertiary)}.editor-fen-btn{white-space:nowrap;flex-shrink:0}.editor-fen-error{color:var(--danger);font-size:.82rem;margin:.25rem 0 .75rem}.editor-main{display:grid;grid-template-columns:100px 1fr 260px;gap:1.5rem;align-items:start}.editor-palette{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1rem .75rem}.editor-palette-title{font-family:var(--font-display);font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;margin:0 0 .5rem;text-align:center}.editor-palette-title:not(:first-child){margin-top:1rem}.editor-palette-group{display:grid;grid-template-columns:1fr 1fr;gap:.35rem}.editor-palette-piece{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:1.6rem;background:var(--bg);border:2px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);color:var(--text);padding:0}.editor-palette-piece:hover{border-color:var(--primary);background:var(--surface-hover)}.editor-palette-piece--active{border-color:var(--primary);background:var(--primary-surface);box-shadow:0 0 0 2px var(--primary-glow),var(--shadow-gold)}.editor-palette-deselect{width:100%;margin-top:.75rem;padding:.4rem .5rem;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.72rem;font-family:var(--font-body);font-weight:600;cursor:pointer;transition:all var(--transition)}.editor-palette-deselect:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.editor-palette-deselect:disabled{opacity:.4;cursor:not-allowed}.editor-board{max-width:560px;width:100%}.editor-board .board-container{width:100%}.editor-controls{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;position:sticky;top:5rem}.editor-controls-title{font-family:var(--font-display);font-size:1rem;font-weight:600;color:var(--text);margin:0 0 1rem}.editor-control-group{margin-bottom:1.25rem}.editor-control-label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);font-weight:600;margin-bottom:.5rem}.editor-action-btn{width:100%;padding:.5rem;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.85rem;font-weight:600;font-family:var(--font-body);cursor:pointer;transition:all var(--transition);margin-bottom:.5rem}.editor-action-btn:hover{border-color:var(--primary);color:var(--primary)}.editor-action-btn--danger:hover{border-color:var(--danger);color:var(--danger)}.editor-toggle-group{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden}.editor-toggle{padding:.45rem;background:var(--bg);border:none;color:var(--text-secondary);font-size:.82rem;font-weight:600;font-family:var(--font-body);cursor:pointer;transition:all var(--transition)}.editor-toggle:first-child{border-right:1px solid var(--border-strong)}.editor-toggle:hover{background:var(--surface-hover)}.editor-toggle--active{background:var(--primary-surface);color:var(--primary)}.editor-castling-grid{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.editor-castling-item{display:flex;align-items:center;gap:.35rem;font-size:.78rem;color:var(--text-secondary);cursor:pointer}.editor-castling-item input[type=checkbox]{accent-color:var(--primary);width:14px;height:14px;cursor:pointer}.editor-current-fen{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.5rem .65rem;font-family:monospace;font-size:.72rem;color:var(--text-secondary);word-break:break-all;line-height:1.4;-webkit-user-select:all;user-select:all}.editor-analyze-btn{width:100%}@media(max-width:900px){.editor-main{grid-template-columns:1fr}.editor-palette{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;padding:.75rem 1rem}.editor-palette-title{margin:0;font-size:.7rem}.editor-palette-title:not(:first-child){margin-top:0;margin-left:.5rem}.editor-palette-group{display:flex;gap:.35rem}.editor-palette-piece{width:36px;height:36px;font-size:1.3rem}.editor-palette-deselect{margin-top:0;width:auto;padding:.35rem .75rem}.editor-board{max-width:100%}.editor-controls{position:static}}@media(max-width:500px){.editor-page{padding:1rem}.editor-fen-bar{flex-direction:column}}.tv-panel{max-width:600px;width:100%;padding:2rem}.tv-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.tv-title{font-family:var(--font-display);font-size:1.5rem;color:var(--text);margin:0}.tv-btn{font-size:.85rem}.tv-loading{text-align:center;color:var(--text-secondary);padding:2rem 0}.tv-empty{text-align:center;padding:2rem 0}.tv-empty-text{color:var(--text-secondary);margin-bottom:1rem}.tv-game-list{display:flex;flex-direction:column;gap:.5rem}.tv-game-card{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:border-color var(--transition),background var(--transition);width:100%;text-align:left;color:var(--text);font-family:var(--font-body);font-size:.9rem}.tv-game-card:hover{border-color:var(--primary);background:#d4af550f}.tv-game-players{display:flex;align-items:center;gap:.5rem}.tv-player{font-weight:600}.tv-white{color:var(--text)}.tv-black{color:var(--text-secondary)}.tv-vs{color:var(--text-tertiary);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.tv-game-info{display:flex;align-items:center;gap:.75rem}.tv-tc{background:#d4af5526;color:var(--primary);padding:.15rem .5rem;border-radius:4px;font-size:.8rem;font-weight:600}.tv-moves{color:var(--text-tertiary);font-size:.8rem}.otb-page{display:flex;flex-direction:column;align-items:center;min-height:calc(100vh - 60px);padding:1rem;gap:1rem}.otb-setup{display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding:2rem;max-width:420px;width:100%}.otb-setup h2{font-family:var(--font-display);color:var(--text);margin:0;font-size:1.5rem}.otb-setup-section{width:100%;display:flex;flex-direction:column;gap:.5rem}.otb-setup-section h4{font-family:var(--font-body);color:var(--text-secondary);margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}.otb-game{display:flex;flex-direction:column;align-items:center;gap:.75rem;width:100%;max-width:560px}.otb-player-bar{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem 1rem;border-radius:var(--radius-lg)}.otb-player-label{font-family:var(--font-body);font-weight:700;font-size:.95rem;color:var(--text)}.otb-player-bar-active{border:1px solid var(--primary)}.otb-board-wrapper{position:relative;width:100%;transition:transform .6s cubic-bezier(.4,0,.2,1)}.otb-sidebar{width:100%;max-width:560px}.otb-game-over{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0b0f1abf;border-radius:var(--radius-lg);z-index:10}.otb-game-over-panel{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem;text-align:center}.otb-game-over-title{font-family:var(--font-display);font-size:1.3rem;color:var(--primary);margin:0}.otb-game-over-actions{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}.otb-controls{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center;width:100%;max-width:560px}.otb-status{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);text-align:center}@media(max-width:600px){.otb-page{padding:.5rem}.otb-controls{flex-direction:column;align-items:stretch}.otb-controls .btn{width:100%}}.chess-clock-page{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;background:var(--bg);font-family:var(--font-body);user-select:none;-webkit-user-select:none;overflow:hidden}.clock-setup{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:2rem;gap:2rem}.clock-setup-title{font-family:var(--font-display);font-size:2rem;color:var(--text);font-weight:600}.clock-presets{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;max-width:480px;width:100%}.clock-preset-btn{background:var(--surface);border:1px solid var(--border-strong);color:var(--text);font-family:var(--font-body);font-size:1.1rem;font-weight:600;padding:.85rem .5rem;border-radius:8px;cursor:pointer;transition:all .15s ease}.clock-preset-btn:hover{background:var(--surface-hover);border-color:var(--border-accent)}.clock-preset-btn.selected{background:var(--primary);color:var(--bg);border-color:var(--primary)}.clock-custom{display:flex;flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:480px}.clock-custom-label{color:var(--text-secondary);font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.clock-custom-row{display:flex;align-items:center;gap:1rem;width:100%;justify-content:center}.clock-custom-field{display:flex;flex-direction:column;align-items:center;gap:.35rem}.clock-custom-field label{color:var(--text-tertiary);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.clock-custom-field input{background:var(--surface);border:1px solid var(--border-strong);color:var(--text);font-family:var(--font-body);font-size:1.4rem;font-weight:600;width:5rem;text-align:center;padding:.6rem .5rem;border-radius:8px;outline:none}.clock-custom-field input:focus{border-color:var(--primary)}.clock-custom-plus{color:var(--text-secondary);font-size:1.5rem;font-weight:700;padding-top:1.2rem}.clock-start-btn{background:var(--primary);color:var(--bg);border:none;font-family:var(--font-body);font-size:1.2rem;font-weight:700;padding:1rem 3rem;border-radius:10px;cursor:pointer;transition:background .15s ease;margin-top:.5rem}.clock-start-btn:hover{background:var(--primary-hover)}.clock-back-link{color:var(--text-secondary);font-size:.9rem;text-decoration:none;transition:color .15s ease}.clock-back-link:hover{color:var(--text)}.clock-faces{display:flex;flex-direction:column;flex:1}.clock-face{flex:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s ease;position:relative}.clock-face-top{transform:rotate(180deg)}.clock-face-inactive{background:var(--surface)}.clock-face-active{background:var(--primary)}.clock-face-flagged{background:var(--danger);cursor:default}.clock-face-paused{opacity:.7}.clock-face-time{font-family:var(--font-body);font-size:5rem;font-weight:800;letter-spacing:.02em;line-height:1}.clock-face-inactive .clock-face-time{color:var(--text)}.clock-face-active .clock-face-time{color:var(--bg)}.clock-face-flagged .clock-face-time{color:var(--text)}.clock-face-flag-text{font-family:var(--font-display);font-size:1.5rem;font-weight:600;margin-top:.5rem;color:var(--text)}.clock-face-move-count{position:absolute;bottom:1rem;right:1.5rem;font-size:.9rem;font-weight:500;color:var(--text-secondary);opacity:.6}.clock-face-top .clock-face-move-count{bottom:1rem;right:1.5rem}.clock-controls{display:flex;align-items:center;justify-content:center;gap:1.5rem;padding:.75rem;background:var(--bg);border-top:1px solid var(--border);border-bottom:1px solid var(--border);z-index:10}.clock-ctrl-btn{background:var(--surface);border:1px solid var(--border-strong);color:var(--text);font-family:var(--font-body);font-size:.85rem;font-weight:600;padding:.55rem 1.2rem;border-radius:6px;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;gap:.4rem}.clock-ctrl-btn:hover{background:var(--surface-hover);border-color:var(--border-accent)}.clock-ctrl-btn svg{width:16px;height:16px}@media(max-width:600px){.clock-face-time{font-size:4rem}.clock-presets{grid-template-columns:repeat(3,1fr)}.clock-setup-title{font-size:1.5rem}}@media(max-height:500px){.clock-face-time{font-size:3rem}.clock-controls{padding:.4rem}}.messages-page{max-width:1000px;margin:2rem auto;padding:0 1rem;min-height:calc(100vh - 120px)}.messages-layout{display:flex;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;height:calc(100vh - 140px);min-height:500px}.messages-sidebar{width:320px;min-width:320px;border-right:1px solid var(--border);display:flex;flex-direction:column}.messages-sidebar-header{padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.messages-sidebar-header h2{margin:0;font-family:var(--font-display);font-size:1.15rem;color:var(--text)}.messages-sidebar-loading,.messages-sidebar-empty{padding:2rem 1.25rem;color:var(--text-tertiary);font-size:.85rem;text-align:center}.messages-conversation-list{flex:1;overflow-y:auto}.messages-conversation-item{display:flex;align-items:center;width:100%;padding:.85rem 1.25rem;background:none;border:none;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;transition:background .15s;font-family:var(--font-body);gap:.75rem}.messages-conversation-item:hover{background:#d4af550d}.messages-conversation-active{background:#d4af551a}.messages-conversation-info{flex:1;min-width:0}.messages-conversation-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.25rem}.messages-conversation-name{font-weight:700;color:var(--text);font-size:.9rem}.messages-conversation-date{font-size:.75rem;color:var(--text-tertiary);white-space:nowrap;margin-left:.5rem}.messages-conversation-preview{font-size:.8rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.messages-unread-badge{background:var(--primary);color:var(--bg);font-size:.7rem;font-weight:700;min-width:20px;height:20px;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 6px;flex-shrink:0}.messages-thread{flex:1;display:flex;flex-direction:column;min-width:0}.messages-thread-header{display:flex;align-items:center;gap:.75rem;padding:.85rem 1.25rem;border-bottom:1px solid var(--border)}.messages-back-btn{display:none;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:.25rem;border-radius:4px;transition:color .15s}.messages-back-btn:hover{color:var(--text)}.messages-thread-username{font-weight:700;font-size:.95rem;color:var(--primary);text-decoration:none}.messages-thread-username:hover{color:var(--primary-hover)}.messages-thread-body{flex:1;overflow-y:auto;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.5rem}.messages-thread-loading,.messages-thread-empty,.messages-thread-placeholder{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-tertiary);font-size:.9rem}.messages-date-divider{text-align:center;margin:.75rem 0}.messages-date-divider span{background:var(--surface);color:var(--text-tertiary);font-size:.75rem;padding:.2rem .75rem;border-radius:10px;border:1px solid var(--border)}.messages-bubble{max-width:75%;padding:.6rem .9rem;border-radius:12px;position:relative}.messages-bubble-mine{align-self:flex-end;background:var(--primary);color:var(--bg);border-bottom-right-radius:4px}.messages-bubble-theirs{align-self:flex-start;background:#ffffff14;color:var(--text);border-bottom-left-radius:4px}.messages-bubble-content{font-size:.88rem;line-height:1.45;word-break:break-word}.messages-bubble-time{font-size:.65rem;opacity:.6;margin-top:.2rem;text-align:right}.messages-compose{padding:.75rem 1.25rem;border-top:1px solid var(--border);display:flex;gap:.5rem;align-items:center}.messages-compose-error{color:var(--danger);font-size:.8rem;padding:0 0 .25rem;width:100%}.messages-compose-input{flex:1;padding:.55rem .85rem;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.88rem;font-family:var(--font-body);outline:none;transition:border-color .15s}.messages-compose-input:focus{border-color:var(--primary)}.messages-compose-input::placeholder{color:var(--text-tertiary)}.messages-compose-send{padding:.55rem 1.1rem;background:var(--primary);color:var(--bg);border:none;border-radius:8px;font-weight:700;font-size:.85rem;cursor:pointer;transition:background .15s;font-family:var(--font-body)}.messages-compose-send:hover:not(:disabled){background:var(--primary-hover)}.messages-compose-send:disabled{opacity:.5;cursor:not-allowed}.messages-empty{display:flex;align-items:center;justify-content:center;height:300px;color:var(--text-secondary)}.messages-empty a{color:var(--primary)}@media(max-width:768px){.messages-page{margin:0;padding:0}.messages-layout{border-radius:0;border:none;height:calc(100vh - 56px)}.messages-sidebar{width:100%;min-width:100%}.messages-sidebar-hidden-mobile{display:none}.messages-thread{width:100%}.messages-thread-hidden-mobile{display:none}.messages-back-btn{display:flex}.messages-bubble{max-width:85%}}.racer-progress-bar{width:100%;height:6px;background:var(--surface);border-radius:3px;overflow:hidden;margin-bottom:.75rem}.racer-progress-fill{height:100%;background:var(--primary);border-radius:3px;transition:width .3s ease}.racer-info-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem}.racer-progress-text{font-family:Manrope,sans-serif;font-size:.85rem;color:var(--text-secondary);font-weight:600}.racer-timer{font-family:Manrope,sans-serif;font-size:1.1rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.racer-score-inline{font-family:Manrope,sans-serif;font-size:1rem;font-weight:700;color:var(--primary)}.racer-feedback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:10;animation:racer-flash .5s ease forwards}.racer-feedback-correct{background:#5ba87a26}.racer-feedback-wrong{background:#c45b5b33}.racer-feedback-text{font-family:Manrope,sans-serif;font-size:1.1rem;font-weight:700;padding:.3rem .8rem;border-radius:6px}.racer-feedback-correct .racer-feedback-text{color:var(--success)}.racer-feedback-wrong .racer-feedback-text{color:var(--danger)}@keyframes racer-flash{0%{opacity:0}20%{opacity:1}80%{opacity:1}to{opacity:0}}.racer-results{display:flex;flex-direction:column;align-items:center;gap:1rem}.racer-time-display{font-family:Playfair Display,serif;font-size:3rem;font-weight:700;color:var(--primary);line-height:1}.racer-time-label{font-family:Manrope,sans-serif;font-size:.9rem;color:var(--text-secondary);margin-top:-.5rem}.racer-stats{display:flex;gap:2rem;margin:.5rem 0}.racer-stat{text-align:center}.racer-stat-value{font-family:Manrope,sans-serif;font-size:1.5rem;font-weight:700;color:var(--text);display:block}.racer-stat-value.correct{color:var(--success)}.racer-stat-value.wrong{color:var(--danger)}.racer-stat-label{font-family:Manrope,sans-serif;font-size:.75rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.racer-new-best{font-family:Manrope,sans-serif;font-size:1rem;font-weight:700;color:var(--primary);padding:.4rem 1rem;background:#d4af551f;border-radius:6px}.racer-best-score{font-family:Manrope,sans-serif;font-size:.85rem;color:var(--text-secondary)}.explorer-page{max-width:1100px;margin:0 auto;padding:2rem}.explorer-header{margin-bottom:2rem}.explorer-title{font-family:var(--font-display);font-size:2rem;font-weight:700;color:var(--text);margin:0 0 .25rem}.explorer-subtitle{color:var(--text-tertiary);font-size:.95rem;margin:0 0 .75rem}.explorer-back-link{background:none;border:none;color:var(--primary);cursor:pointer;font-size:.9rem;padding:0;text-decoration:underline}.explorer-back-link:hover{color:var(--primary-hover)}.explorer-main{display:flex;gap:2rem;align-items:flex-start}.explorer-board-col{flex-shrink:0}.explorer-data-col{flex:1;min-width:0}.explorer-controls{display:flex;align-items:center;gap:.75rem;margin-top:.75rem}.explorer-btn{background:var(--surface);border:1px solid var(--text-tertiary);color:var(--text);padding:.4rem 1rem;border-radius:4px;cursor:pointer;font-size:.85rem;transition:background .15s,border-color .15s}.explorer-btn:hover:not(:disabled){background:var(--primary);border-color:var(--primary);color:var(--bg)}.explorer-btn:disabled{opacity:.4;cursor:not-allowed}.explorer-move-count{color:var(--text-secondary);font-size:.85rem;margin-left:auto}.explorer-summary{margin-bottom:1rem}.explorer-total{display:block;font-size:1.1rem;font-weight:600;color:var(--text);margin-bottom:.5rem}.explorer-result-bar{display:flex;height:24px;border-radius:4px;overflow:hidden;font-size:.75rem;font-weight:600}.result-bar-segment{display:flex;align-items:center;justify-content:center;min-width:0;transition:width .3s ease}.result-bar-segment span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px}.result-bar-white{background:#e8e0d0;color:#333}.result-bar-draw{background:#888;color:#fff}.result-bar-black{background:#333;color:#e8e0d0}.explorer-table{width:100%;border-collapse:collapse}.explorer-table thead th{text-align:left;color:var(--text-tertiary);font-size:.8rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;padding:.5rem .75rem;border-bottom:1px solid var(--text-tertiary)}.explorer-row{cursor:pointer;transition:background .12s}.explorer-row:hover{background:#d4af5514}.explorer-row td{padding:.6rem .75rem;border-bottom:1px solid rgba(255,255,255,.05)}.explorer-move-cell{font-weight:600;color:var(--primary);font-size:.95rem;white-space:nowrap}.explorer-count-cell{color:var(--text-secondary);font-size:.9rem;white-space:nowrap}.explorer-bar-cell{width:40%}.explorer-mini-bar{display:flex;height:14px;border-radius:3px;overflow:hidden}.mini-bar-segment{min-width:0;transition:width .3s ease}.mini-bar-white{background:#e8e0d0}.mini-bar-draw{background:#888}.mini-bar-black{background:#333}.explorer-error{color:var(--danger);font-size:.9rem;margin-bottom:1rem}.explorer-loading-text{color:var(--text-secondary);font-size:.9rem}.explorer-empty{color:var(--text-tertiary);font-size:.95rem;padding:2rem 0;text-align:center}.explorer-loading{color:var(--text-secondary);text-align:center;padding:4rem 0}@media(max-width:768px){.explorer-main{flex-direction:column}.explorer-board-col{width:100%;display:flex;flex-direction:column;align-items:center}.explorer-data-col{width:100%}}.lesson-hub{max-width:750px;margin:2rem auto;padding:0 1rem}.lesson-hub-header{margin-bottom:1.5rem}.lesson-back-link{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);text-decoration:none}.lesson-back-link:hover{color:var(--primary)}.lesson-hub-title{font-family:var(--font-display);font-size:2rem;color:var(--text);margin:.5rem 0 .25rem}.lesson-hub-subtitle{font-family:var(--font-body);font-size:.95rem;color:var(--text-secondary);margin:0}.lesson-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.lesson-card{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:1.25rem;text-align:left;cursor:pointer;transition:background var(--transition),border-color var(--transition),transform var(--transition);display:flex;flex-direction:column;gap:.35rem}.lesson-card:hover{background:var(--surface-hover);border-color:var(--primary);transform:translateY(-2px)}.lesson-card--done{border-color:var(--success)}.lesson-card-number{font-family:var(--font-display);font-size:1.6rem;font-weight:700;color:var(--primary);line-height:1}.lesson-card-title{font-family:var(--font-display);font-size:1.1rem;color:var(--text);margin:0}.lesson-card-desc{font-family:var(--font-body);font-size:.82rem;color:var(--text-secondary);margin:0;flex:1}.lesson-card-progress{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.lesson-card-bar{flex:1;height:5px;background:var(--surface-elevated);border-radius:3px;overflow:hidden}.lesson-card-bar-fill{height:100%;background:var(--primary);border-radius:3px;transition:width var(--transition-slow)}.lesson-card--done .lesson-card-bar-fill{background:var(--success)}.lesson-card-pct{font-family:var(--font-body);font-size:.75rem;color:var(--text-tertiary);min-width:3.5rem;text-align:right}.lesson-viewer{max-width:900px;margin:1.5rem auto;padding:0 1rem}.lesson-viewer-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.lesson-back-btn{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);background:none;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.35rem .75rem;cursor:pointer;transition:color var(--transition),border-color var(--transition)}.lesson-back-btn:hover{color:var(--primary);border-color:var(--primary)}.lesson-viewer-title{font-family:var(--font-display);font-size:1.5rem;color:var(--text);margin:0;flex:1}.lesson-viewer-step{font-family:var(--font-body);font-size:.82rem;color:var(--text-tertiary)}.lesson-viewer-body{display:flex;gap:1.5rem;align-items:flex-start}.lesson-board-wrap{flex-shrink:0}.lesson-panel{flex:1;min-width:0;display:flex;flex-direction:column;gap:1rem}.lesson-text-area{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:1.25rem}.lesson-text{font-family:var(--font-body);font-size:.95rem;color:var(--text);line-height:1.6;margin:0}.lesson-hint{font-family:var(--font-body);font-size:.85rem;color:var(--primary);margin:.75rem 0 0;font-weight:500}.lesson-feedback{font-family:var(--font-body);font-size:.9rem;font-weight:600;margin:.75rem 0 0}.lesson-feedback--wrong{color:var(--danger)}.lesson-feedback--correct{color:var(--success)}.lesson-nav{display:flex;gap:.75rem}.lesson-nav-btn{flex:1;font-family:var(--font-body);font-size:.9rem;font-weight:600;padding:.65rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;transition:background var(--transition),border-color var(--transition)}.lesson-nav-btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--primary)}.lesson-nav-btn:disabled{opacity:.35;cursor:not-allowed}.lesson-nav-btn--primary{background:var(--primary);color:var(--bg);border-color:var(--primary)}.lesson-nav-btn--primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}@media(max-width:700px){.lesson-viewer-body{flex-direction:column}.lesson-board-wrap{width:100%;display:flex;justify-content:center}.lesson-grid{grid-template-columns:1fr}}.endgame-practice{max-width:960px;margin:2rem auto;padding:0 1rem}.endgame-practice-title{font-family:var(--font-display);font-size:2rem;color:var(--text);text-align:center;margin-bottom:1.5rem}.endgame-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;margin-bottom:1.5rem}.endgame-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem;cursor:pointer;transition:all var(--transition);display:flex;flex-direction:column;gap:.5rem}.endgame-card:hover{border-color:var(--primary);background:var(--surface-hover);transform:translateY(-2px);box-shadow:var(--shadow-md)}.endgame-card-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.endgame-card-name{font-family:var(--font-display);font-size:1.1rem;color:var(--text);font-weight:600}.endgame-badge{font-family:var(--font-body);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.2rem .6rem;border-radius:20px;flex-shrink:0}.endgame-badge.easy{background:var(--success-surface);color:var(--success);border:1px solid rgba(91,168,122,.25)}.endgame-badge.medium{background:var(--primary-surface);color:var(--primary);border:1px solid rgba(212,175,85,.25)}.endgame-badge.hard{background:var(--danger-surface);color:var(--danger);border:1px solid rgba(196,91,91,.25)}.endgame-card-goal{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary)}.endgame-card-desc{font-family:var(--font-body);font-size:.8rem;color:var(--text-tertiary);line-height:1.4}.endgame-playing{display:flex;gap:1.5rem;align-items:flex-start;justify-content:center}.endgame-board-wrapper{width:440px;flex-shrink:0}.endgame-sidebar{display:flex;flex-direction:column;gap:1rem;min-width:240px}.endgame-info-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem;display:flex;flex-direction:column;gap:.75rem}.endgame-info-card h2{font-family:var(--font-display);font-size:1.25rem;color:var(--text);margin:0}.endgame-goal-text{font-family:var(--font-body);font-size:.9rem;color:var(--primary);font-weight:600}.endgame-desc-text{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);line-height:1.5}.endgame-move-counter{display:flex;align-items:center;gap:.5rem;font-family:var(--font-body);font-size:.9rem;color:var(--text-secondary)}.endgame-move-counter strong{font-family:var(--font-display);font-size:1.4rem;color:var(--text)}.endgame-turn-indicator{font-family:var(--font-body);font-size:.85rem;color:var(--text-tertiary);padding:.4rem .75rem;background:var(--bg);border-radius:8px;text-align:center}.endgame-turn-indicator.your-turn{color:var(--primary);background:var(--primary-surface);border:1px solid rgba(212,175,85,.2)}.endgame-result{text-align:center;padding:1rem;border-radius:10px;font-family:var(--font-body);font-weight:600;font-size:1rem}.endgame-result.success{background:var(--success-surface);color:var(--success);border:1px solid rgba(91,168,122,.25)}.endgame-result.failure{background:var(--danger-surface);color:var(--danger);border:1px solid rgba(196,91,91,.25)}.endgame-result.draw{background:var(--secondary-surface);color:var(--secondary);border:1px solid rgba(90,143,163,.25)}.endgame-actions{display:flex;gap:.6rem;flex-wrap:wrap}.endgame-btn{font-family:var(--font-body);font-size:.9rem;font-weight:600;padding:.6rem 1.4rem;border-radius:10px;border:none;cursor:pointer;transition:background var(--transition)}.endgame-btn-primary{background:var(--primary);color:var(--bg)}.endgame-btn-primary:hover{background:var(--primary-hover)}.endgame-btn-secondary{background:var(--surface-hover);color:var(--text-secondary);border:1px solid var(--border-strong)}.endgame-btn-secondary:hover{color:var(--text);border-color:var(--primary)}.endgame-back-link{display:inline-block;font-family:var(--font-body);font-size:.9rem;color:var(--text-tertiary);text-decoration:none;margin-bottom:1rem;transition:color var(--transition)}.endgame-back-link:hover{color:var(--primary)}@media(max-width:780px){.endgame-playing{flex-direction:column;align-items:center}.endgame-board-wrapper{width:100%;max-width:440px}.endgame-sidebar{width:100%;max-width:440px;min-width:unset}}.opening-practice{max-width:1000px;margin:2rem auto;padding:0 1rem}.opening-practice-title{font-family:var(--font-display);font-size:2rem;color:var(--text);text-align:center;margin-bottom:1.5rem}.opening-setup{display:flex;flex-direction:column;align-items:center;gap:1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2.5rem 2rem;max-width:600px;margin:0 auto}.opening-setup h2{font-family:var(--font-display);font-size:1.5rem;color:var(--text);margin:0}.opening-search-box{width:100%;max-width:400px}.opening-search-input{width:100%;padding:.65rem 1rem;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font-body);font-size:.95rem;outline:none;transition:border-color var(--transition);box-sizing:border-box}.opening-search-input::placeholder{color:var(--text-tertiary)}.opening-search-input:focus{border-color:var(--primary)}.opening-list{width:100%;max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:.35rem}.opening-list-item{display:flex;justify-content:space-between;align-items:center;padding:.6rem 1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition)}.opening-list-item:hover{border-color:var(--primary);background:var(--surface-hover)}.opening-list-item.selected{border-color:var(--primary);background:var(--primary-surface)}.opening-list-name{font-family:var(--font-body);font-size:.95rem;color:var(--text);font-weight:500}.opening-list-moves{font-family:var(--font-body);font-size:.75rem;color:var(--text-tertiary);max-width:50%;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.opening-color-select{display:flex;flex-direction:column;align-items:center;gap:.5rem;width:100%}.opening-color-select label{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.opening-color-buttons{display:flex;gap:.5rem}.opening-color-btn{padding:.5rem 1.4rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text-secondary);font-family:var(--font-body);font-size:.9rem;cursor:pointer;transition:all var(--transition)}.opening-color-btn:hover{border-color:var(--primary);color:var(--text)}.opening-color-btn.active{background:var(--primary);border-color:var(--primary);color:var(--bg);font-weight:600}.opening-start-btn{padding:.75rem 2.5rem;border-radius:var(--radius-sm);border:none;background:var(--primary);color:var(--bg);font-family:var(--font-body);font-size:1rem;font-weight:600;cursor:pointer;transition:background var(--transition)}.opening-start-btn:hover:not(:disabled){background:var(--primary-hover)}.opening-start-btn:disabled{opacity:.4;cursor:default}.opening-game{display:flex;gap:1.5rem;justify-content:center;align-items:flex-start}.opening-board-col{flex:0 0 auto;max-width:480px;width:100%}.opening-info-col{flex:0 0 280px;display:flex;flex-direction:column;gap:1rem}.opening-info-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem}.opening-info-name{font-family:var(--font-display);font-size:1.3rem;color:var(--primary);margin:0 0 .5rem}.opening-info-fen{font-family:var(--font-body);font-size:.7rem;color:var(--text-tertiary);word-break:break-all;margin:0}.opening-info-color{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);margin:.5rem 0 0}.opening-moves-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem;max-height:220px;overflow-y:auto}.opening-moves-card h3{font-family:var(--font-display);font-size:1rem;color:var(--text);margin:0 0 .75rem}.opening-move-list{font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);line-height:1.8}.opening-move-list .move-number{color:var(--text-tertiary);margin-right:.25rem}.opening-move-list .move{color:var(--text);margin-right:.5rem}.opening-status{font-family:var(--font-body);font-size:.95rem;color:var(--text);padding:.75rem;background:var(--primary-surface);border:1px solid var(--border-accent);border-radius:var(--radius-sm);text-align:center}.opening-status.turn{background:var(--primary-surface);border-color:var(--border-accent)}.opening-status.waiting{background:var(--secondary-surface);border-color:var(--secondary);color:var(--text-secondary)}.opening-status.ended{background:var(--surface-elevated);border-color:var(--border-strong)}.opening-stats{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem 1.25rem}.opening-stats h3{font-family:var(--font-display);font-size:1rem;color:var(--text);margin:0 0 .5rem}.opening-stat-row{display:flex;justify-content:space-between;font-family:var(--font-body);font-size:.85rem;color:var(--text-secondary);padding:.2rem 0}.opening-stat-val{color:var(--primary);font-weight:600}.opening-actions{display:flex;gap:.5rem}.opening-actions .btn{flex:1;padding:.6rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text-secondary);font-family:var(--font-body);font-size:.85rem;cursor:pointer;transition:all var(--transition);text-align:center}.opening-actions .btn:hover{border-color:var(--primary);color:var(--text)}.opening-actions .btn-primary{background:var(--primary);border-color:var(--primary);color:var(--bg);font-weight:600}.opening-actions .btn-primary:hover{background:var(--primary-hover)}@media(max-width:768px){.opening-game{flex-direction:column;align-items:center}.opening-info-col{flex:unset;width:100%;max-width:480px}}.streamers-page{max-width:900px;margin:2rem auto;padding:0 1.5rem}.streamers-title{font-family:var(--font-display);font-size:2rem;font-weight:700;color:var(--text);margin:0 0 .5rem;text-align:center}.streamers-subtitle{text-align:center;color:var(--text-secondary);font-size:.95rem;margin:0 0 2rem}.streamers-loading,.streamers-empty{text-align:center;color:var(--text-tertiary);font-size:1rem;padding:3rem 1rem}.streamers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.streamer-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.25rem;transition:border-color .15s,transform .15s}.streamer-card:hover{border-color:var(--primary);transform:translateY(-2px)}.streamer-header{margin-bottom:.75rem}.streamer-name{font-family:var(--font-display);font-size:1.15rem;font-weight:700;color:var(--primary);text-decoration:none;display:flex;align-items:center;gap:.4rem}.streamer-name:hover{color:var(--primary-hover)}.streamer-flag{font-size:1.2rem}.streamer-links{display:flex;gap:.5rem;flex-wrap:wrap}.streamer-link{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .7rem;border-radius:5px;font-size:.78rem;font-weight:600;text-decoration:none;transition:opacity .15s}.streamer-link:hover{opacity:.8}.streamer-link-twitch{background:#9146ff26;color:#9146ff;border:1px solid rgba(145,70,255,.3)}.streamer-link-youtube{background:#ff00001a;color:#f44;border:1px solid rgba(255,0,0,.2)}@media(max-width:600px){.streamers-grid{grid-template-columns:1fr}}.api-docs-page{max-width:960px;margin:2rem auto;padding:0 1.5rem 4rem}.api-docs-header{text-align:center;margin-bottom:2.5rem}.api-docs-title{font-family:var(--font-display);font-size:2rem;font-weight:700;color:var(--text);margin:0 0 .5rem}.api-docs-subtitle{font-family:var(--font-body);font-size:.95rem;color:var(--text-secondary);margin:0 0 1.5rem}.api-docs-base-url{display:inline-block;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.4rem 1rem;font-family:Courier New,monospace;font-size:.85rem;color:var(--primary)}.api-docs-nav{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-bottom:2rem}.api-docs-nav-btn{background:transparent;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.4rem 1rem;color:var(--text-secondary);font-family:var(--font-body);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;transition:all var(--transition)}.api-docs-nav-btn:hover{color:var(--text);border-color:var(--border-accent)}.api-docs-nav-btn.active{background:var(--primary);color:var(--bg);border-color:var(--primary)}.api-docs-category{margin-bottom:2.5rem}.api-docs-category-title{font-family:var(--font-display);font-size:1.35rem;font-weight:700;color:var(--text);margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border-strong)}.api-endpoint{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:.75rem;overflow:hidden;transition:border-color var(--transition)}.api-endpoint:hover{border-color:var(--border-strong)}.api-endpoint-summary{display:flex;align-items:center;gap:.75rem;padding:.85rem 1.25rem;cursor:pointer;background:none;border:none;width:100%;text-align:left;font-family:var(--font-body);color:var(--text)}.api-endpoint-summary:hover{background:var(--surface-hover)}.api-method{display:inline-block;min-width:54px;text-align:center;padding:.2rem .5rem;border-radius:var(--radius-xs);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;flex-shrink:0}.api-method.get{background:#5ba87a26;color:var(--success)}.api-method.post{background:#5a8fa326;color:var(--secondary)}.api-method.put{background:#d4af5526;color:var(--primary)}.api-method.delete{background:#c45b5b26;color:var(--danger)}.api-path{font-family:Courier New,monospace;font-size:.85rem;color:var(--text);flex:1}.api-desc-inline{font-size:.8rem;color:var(--text-tertiary);flex-shrink:0}.api-auth-badge{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.15rem .5rem;border-radius:var(--radius-xs);flex-shrink:0}.api-auth-badge.required{background:#d4af551f;color:var(--primary)}.api-auth-badge.public{background:#5ba87a1f;color:var(--success)}.api-auth-badge.optional{background:#5a8fa31f;color:var(--secondary)}.api-endpoint-expand{font-size:.75rem;color:var(--text-tertiary);transition:transform var(--transition);flex-shrink:0}.api-endpoint-expand.open{transform:rotate(180deg)}.api-endpoint-details{padding:0 1.25rem 1.25rem;border-top:1px solid var(--border)}.api-detail-section{margin-top:1rem}.api-detail-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin-bottom:.4rem}.api-detail-desc{font-size:.9rem;color:var(--text-secondary);line-height:1.5}.api-code-block{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem 1rem;font-family:Courier New,monospace;font-size:.8rem;color:var(--text-secondary);line-height:1.6;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.api-docs-search{display:flex;justify-content:center;margin-bottom:1.5rem}.api-docs-search-input{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.6rem 1rem;width:100%;max-width:400px;font-family:var(--font-body);font-size:.9rem;color:var(--text);outline:none;transition:border-color var(--transition)}.api-docs-search-input::placeholder{color:var(--text-tertiary)}.api-docs-search-input:focus{border-color:var(--primary)}.api-ws-note{background:var(--surface);border:1px solid var(--border-strong);border-left:3px solid var(--secondary);border-radius:var(--radius-sm);padding:1rem 1.25rem;margin-bottom:2rem}.api-ws-note-title{font-family:var(--font-body);font-size:.9rem;font-weight:700;color:var(--secondary);margin:0 0 .5rem}.api-ws-note-text{font-size:.85rem;color:var(--text-secondary);line-height:1.6;margin:0}@media(max-width:640px){.api-endpoint-summary{flex-wrap:wrap;gap:.4rem}.api-desc-inline{display:none}.api-docs-nav{gap:.35rem}.api-docs-nav-btn{font-size:.7rem;padding:.3rem .7rem}}.lfm-page{max-width:1200px;margin:0 auto;padding:2rem}.lfm-loading,.lfm-empty{text-align:center;padding:4rem 2rem;color:var(--text-secondary)}.lfm-empty h2{font-family:var(--font-display);color:var(--text);margin:0 0 .75rem}.lfm-empty p{color:var(--text-secondary);font-size:.9rem;margin:0 0 1.5rem}.lfm-error{text-align:center;padding:4rem 2rem}.lfm-error p{color:var(--danger);font-size:.95rem;margin:0 0 1rem}.lfm-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.lfm-back-link{color:var(--text-secondary);font-size:.82rem;transition:color var(--transition)}.lfm-back-link:hover{color:var(--primary)}.lfm-title{font-family:var(--font-display);font-size:1.25rem;font-weight:700;color:var(--text);margin:0;flex:1}.lfm-progress{font-size:.85rem;color:var(--text-secondary);font-weight:600;background:var(--surface);padding:.25rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--border)}.lfm-layout{display:grid;grid-template-columns:minmax(300px,1fr) minmax(280px,420px);gap:2rem;align-items:start}.lfm-board-section{display:flex;flex-direction:column;gap:1rem}.lfm-board-wrapper{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-board);aspect-ratio:1}.lfm-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden}.lfm-mistake-info{padding:1.25rem;border-bottom:1px solid var(--border)}.lfm-mistake-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.lfm-severity{font-size:.78rem;font-weight:700;padding:.15rem .5rem;border-radius:var(--radius-xs);text-transform:uppercase;letter-spacing:.03em}.severity-blunder{color:#fff;background:var(--danger)}.severity-mistake{color:#fff;background:#c78a2b}.severity-inaccuracy{color:var(--text);background:var(--surface-hover)}.lfm-eval-drop{font-size:.85rem;font-weight:600;color:var(--danger)}.lfm-move-context{font-size:.9rem;color:var(--text);margin:0}.lfm-game-move{font-weight:700;color:var(--danger)}.lfm-prompt{color:var(--primary);font-weight:600;font-style:italic}.lfm-eval-bar{display:flex;gap:.5rem;align-items:center;margin-top:.5rem;font-size:.82rem}.lfm-eval-label{color:var(--text-tertiary)}.lfm-eval-value{font-weight:600;color:var(--text-secondary)}.lfm-feedback{padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.lfm-feedback p{margin:0;font-size:.88rem}.lfm-feedback p+p{margin-top:.35rem}.lfm-feedback-different{background:var(--success-surface);border-left:3px solid var(--success)}.lfm-feedback-same{background:var(--danger-surface);border-left:3px solid var(--danger)}.lfm-feedback-game{color:var(--text-secondary);font-size:.82rem!important}.lfm-show-game-btn{background:none;border:none;color:var(--secondary);font-size:.82rem;font-weight:600;cursor:pointer;padding:.5rem 1.25rem;text-align:left;border-bottom:1px solid var(--border);transition:color var(--transition);font-family:var(--font-body)}.lfm-show-game-btn:hover{color:var(--secondary-hover)}.lfm-nav{display:flex;gap:.5rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.lfm-nav .btn,.lfm-nav .btn-secondary{flex:1;text-align:center}.lfm-skip-btn{border-style:dashed!important}.lfm-mistake-list{padding:.75rem 0;max-height:250px;overflow-y:auto}.lfm-list-title{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);padding:0 1.25rem;margin:0 0 .5rem}.lfm-list-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4rem 1.25rem;background:none;border:none;color:var(--text);font-size:.85rem;font-family:var(--font-body);cursor:pointer;transition:background var(--transition);text-align:left}.lfm-list-item:hover{background:var(--surface-hover)}.lfm-list-item-active{background:var(--primary-surface);border-left:2px solid var(--primary)}.lfm-list-item-improved{border-right:3px solid var(--success)}.lfm-list-item-same{border-right:3px solid var(--danger)}.lfm-list-move{flex:1;font-weight:600}.lfm-list-severity{font-size:.72rem;font-weight:700;padding:.1rem .35rem;border-radius:var(--radius-xs)}.lfm-list-drop{font-size:.78rem;color:var(--danger);font-weight:600;min-width:2.5rem;text-align:right}.lfm-summary{padding:1.25rem;border-top:1px solid var(--border);text-align:center}.lfm-summary h3{font-family:var(--font-display);font-size:1.1rem;color:var(--primary);margin:0 0 .5rem}.lfm-summary p{font-size:.88rem;color:var(--text-secondary);margin:0 0 1rem}@media(max-width:768px){.lfm-page{padding:1rem}.lfm-layout{grid-template-columns:1fr}.lfm-header{flex-wrap:wrap}.lfm-mistake-list{max-height:180px}}.battle-layout{display:flex;gap:1.5rem;max-width:900px;margin:0 auto;padding:1rem;align-items:flex-start}.battle-board-side{flex:1;min-width:0}.battle-opponent-side{width:240px;flex-shrink:0;display:flex;flex-direction:column;gap:1rem}.battle-timer-bar{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1rem;background:var(--surface);border-radius:8px;margin-bottom:.75rem}.battle-timer{font-family:Manrope,sans-serif;font-size:1.3rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.battle-timer.urgent{color:var(--danger);animation:battle-pulse 1s ease infinite}@keyframes battle-pulse{0%,to{opacity:1}50%{opacity:.6}}.battle-progress-bar{width:100%;height:6px;background:var(--surface);border-radius:3px;overflow:hidden;margin-bottom:.75rem}.battle-progress-fill{height:100%;background:var(--primary);border-radius:3px;transition:width .3s ease}.battle-info-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.5rem}.battle-puzzle-info{font-family:Manrope,sans-serif;font-size:.85rem;color:var(--text-secondary);font-weight:600}.battle-my-score{font-family:Manrope,sans-serif;font-size:1rem;font-weight:700;color:var(--primary)}.battle-opponent-card{background:var(--surface);border-radius:10px;padding:1.25rem;text-align:center}.battle-opponent-label{font-family:Manrope,sans-serif;font-size:.75rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.battle-opponent-score{font-family:Playfair Display,serif;font-size:2.5rem;font-weight:700;color:var(--text);line-height:1}.battle-opponent-progress{font-family:Manrope,sans-serif;font-size:.85rem;color:var(--text-secondary);margin-top:.5rem}.battle-score-comparison{display:flex;justify-content:center;gap:1.5rem;margin-top:1rem}.battle-score-item{text-align:center}.battle-score-value{font-family:Manrope,sans-serif;font-size:1.5rem;font-weight:700;display:block}.battle-score-value.mine{color:var(--primary)}.battle-score-value.theirs{color:var(--secondary)}.battle-score-tag{font-family:Manrope,sans-serif;font-size:.7rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.battle-waiting-card{background:var(--surface);border-radius:10px;padding:1.5rem;text-align:center}.battle-waiting-spinner{display:inline-block;width:32px;height:32px;border:3px solid var(--text-tertiary);border-top-color:var(--primary);border-radius:50%;animation:battle-spin .8s linear infinite;margin-bottom:1rem}@keyframes battle-spin{to{transform:rotate(360deg)}}.battle-share-link{display:flex;align-items:center;gap:.5rem;margin-top:1rem}.battle-share-input{flex:1;padding:.5rem .75rem;background:var(--bg);border:1px solid var(--text-tertiary);border-radius:6px;color:var(--text);font-family:Manrope,sans-serif;font-size:.85rem}.battle-copy-btn{padding:.5rem .75rem;background:var(--primary);color:var(--bg);border:none;border-radius:6px;cursor:pointer;font-family:Manrope,sans-serif;font-size:.85rem;font-weight:600;white-space:nowrap}.battle-copy-btn:hover{background:var(--primary-hover)}.battle-feedback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:10;animation:racer-flash .5s ease forwards}.battle-feedback-correct{background:#5ba87a26}.battle-feedback-wrong{background:#c45b5b33}.battle-results{display:flex;flex-direction:column;align-items:center;gap:1rem}.battle-result-title{font-family:Playfair Display,serif;font-size:2rem;font-weight:700;color:var(--text)}.battle-result-title.won{color:var(--success)}.battle-result-title.lost{color:var(--danger)}.battle-result-title.draw{color:var(--secondary)}.battle-final-scores{display:flex;gap:3rem;margin:1rem 0}.battle-final-player{text-align:center}.battle-final-name{font-family:Manrope,sans-serif;font-size:.85rem;color:var(--text-secondary);margin-bottom:.25rem}.battle-final-score{font-family:Playfair Display,serif;font-size:2.5rem;font-weight:700;line-height:1}.battle-final-score.winner{color:var(--primary)}.battle-final-score.loser{color:var(--text-tertiary)}@media(max-width:700px){.battle-layout{flex-direction:column}.battle-opponent-side{width:100%;flex-direction:row;flex-wrap:wrap}.battle-opponent-card{flex:1;min-width:120px}}
