@import url(https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap);@import url(https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;600;700&display=swap);*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#191022;--surface:rgba(var(--primary-rgb),0.08);--surface-hover:rgba(var(--primary-rgb),0.15);--primary:#9942f0;--primary-rgb:153,66,240;--primary-dim:rgba(var(--primary-rgb),0.25);--panel:#1e0f32;--overlay:#0a051499;--text:#f0eeff;--text-secondary:#b0aabe;--text-muted:#948da3;--border:rgba(var(--primary-rgb),0.18);--font:"Space Grotesk",sans-serif;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--radius-sm:8px;--radius:12px;--radius-lg:20px;--radius-pill:999px;--z-header:100;--z-drawer:200;--z-modal:300;--z-toast:500}body{background:#191022;background:var(--bg);color:#f0eeff;color:var(--text);font-family:Space Grotesk,sans-serif;font-family:var(--font);min-height:100dvh;overflow-x:hidden}@keyframes fluid-movement{0%{transform:translate(0) scale(1)}33%{transform:translate(2%,4%) scale(1.1)}66%{transform:translate(-3%,2%) scale(.95)}to{transform:translate(0) scale(1)}}.fluid-glow{animation:fluid-movement 20s ease-in-out infinite alternate;background:radial-gradient(circle at 20% 20%,#9942f033 0,#0000 50%),radial-gradient(circle at 80% 80%,#9942f026 0,#0000 50%),radial-gradient(circle at 50% 50%,#9942f00d 0,#0000 70%);filter:blur(40px)}.fixed-bg{inset:0;pointer-events:none;position:fixed;z-index:-1}.card-hover{transition:transform .3s cubic-bezier(.175,.885,.32,1.275),box-shadow .3s ease}.card-hover:hover{box-shadow:0 16px 40px -8px #9942f040;box-shadow:0 16px 40px -8px rgba(var(--primary-rgb),.25);transform:scale(1.03)}.card-hover:active{transform:scale(.97)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.app-root{display:flex;flex-direction:column;min-height:100dvh}.app-main{flex:1 1;padding-top:64px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#9942f040;background:var(--primary-dim);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#9942f0;background:var(--primary)}.visually-hidden{clip:rect(0,0,0,0);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}body.modal-open{overflow:hidden}.skip-link{background:#9942f0;background:var(--primary);border-radius:8px;border-radius:var(--radius-sm);color:#fff;font-family:Space Grotesk,sans-serif;font-family:var(--font);font-size:14px;font-weight:600;left:8px;padding:10px 16px;position:fixed;text-decoration:none;top:8px;transform:translateY(-150%);transition:transform .2s ease;z-index:1000}.skip-link:focus{transform:translateY(0)}button{cursor:pointer;font-family:Space Grotesk,sans-serif;font-family:var(--font)}.portal-header{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:#191022d9;border-bottom:1px solid var(--border);height:64px;left:0;position:fixed;right:0;top:0;z-index:100}.portal-header-inner{align-items:center;display:flex;height:100%;justify-content:space-between;margin:0 auto;max-width:1200px;padding:0 20px}.portal-logo{color:var(--text);gap:10px;text-decoration:none}.portal-logo,.portal-logo-icon{align-items:center;display:flex}.portal-logo-icon{background:var(--primary);border-radius:var(--radius-sm);flex-shrink:0;height:36px;justify-content:center;width:36px}.portal-logo-icon svg{fill:#fff;height:20px;width:20px}.portal-logo-text{color:var(--text);font-size:16px;font-weight:700;letter-spacing:.15em}.portal-menu-btn{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);display:flex;height:40px;justify-content:center;transition:background .2s ease;width:40px}.portal-menu-btn:hover{background:var(--surface-hover)}.portal-menu-btn svg{stroke:currentColor;fill:none;height:20px;width:20px}.nav-drawer-overlay{display:flex;inset:0;justify-content:flex-end;pointer-events:none;position:fixed;visibility:hidden;z-index:200}.nav-drawer-overlay.open{pointer-events:auto;visibility:visible}.nav-drawer-backdrop{background:var(--overlay);inset:0;opacity:0;position:absolute;transition:opacity .3s ease}.nav-drawer-overlay.open .nav-drawer-backdrop{opacity:1}.nav-drawer-panel{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:#1a0b2eeb;border-left:1px solid var(--border);display:flex;flex-direction:column;height:100%;max-width:90vw;padding:24px 0;position:relative;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);width:300px}.nav-drawer-overlay.open .nav-drawer-panel{transform:translateX(0)}.nav-drawer-header{align-items:center;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:0 20px 24px}.nav-drawer-title{color:var(--text-secondary);font-size:12px;font-weight:700;letter-spacing:.2em}.nav-drawer-close{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);display:flex;height:32px;justify-content:center;transition:color .2s,background .2s;width:32px}.nav-drawer-close:hover{background:var(--surface-hover);color:var(--text)}.nav-drawer-close svg{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;height:16px;width:16px}.nav-drawer-items{display:flex;flex:1 1;flex-direction:column;gap:4px;padding:16px 12px}.nav-drawer-item{align-items:center;background:none;border:1px solid #0000;border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;display:flex;gap:14px;opacity:0;padding:12px 10px;text-align:left;transform:translateY(10px);transition:background .2s,color .2s,border-color .2s;width:100%}.nav-drawer-overlay.open .nav-drawer-item{animation:slideUp .3s ease forwards}.nav-drawer-overlay.open .nav-drawer-item:first-child{animation-delay:.05s}.nav-drawer-overlay.open .nav-drawer-item:nth-child(2){animation-delay:.1s}.nav-drawer-overlay.open .nav-drawer-item:nth-child(3){animation-delay:.15s}.nav-drawer-overlay.open .nav-drawer-item:nth-child(4){animation-delay:.2s}.nav-drawer-overlay.open .nav-drawer-item:nth-child(5){animation-delay:.25s}.nav-drawer-overlay.open .nav-drawer-item:nth-child(6){animation-delay:.3s}.nav-drawer-item:hover{background:var(--surface);border-color:var(--border);color:var(--text)}.nav-drawer-item.active{background:var(--primary-dim);border-color:rgba(var(--primary-rgb),.35);color:var(--text)}.nav-drawer-item-icon{align-items:center;background:#ffffff12;border-radius:var(--radius-sm);display:flex;flex-shrink:0;height:36px;justify-content:center;transition:background .2s;width:36px}.nav-drawer-item.active .nav-drawer-item-icon{background:var(--primary)}.nav-drawer-item-icon svg{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;height:18px;width:18px}.nav-drawer-item-text{display:flex;flex-direction:column;gap:1px}.nav-drawer-item-title{color:inherit;font-size:14px;font-weight:600}.nav-drawer-item-subtitle{color:var(--text-secondary);font-size:11px}.nav-drawer-footer{border-top:1px solid var(--border);display:flex;flex-direction:column;gap:12px;padding:16px 12px 0}.nav-drawer-about{margin-bottom:4px;opacity:1;transform:none}.nav-drawer-footer-text{color:var(--primary);font-size:10px;font-weight:600;letter-spacing:.2em;opacity:.6}.nav-drawer-signin-btn{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;display:flex;font-size:13px;font-weight:600;gap:10px;padding:10px 12px;transition:background .2s,border-color .2s;width:100%}.nav-drawer-signin-btn:hover{background:var(--surface-hover);border-color:var(--primary)}.nav-drawer-signin-btn svg{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;height:16px;width:16px}.nav-drawer-auth-section{display:flex;flex-direction:column;gap:8px}.nav-drawer-user{align-items:center;display:flex;gap:8px}.nav-drawer-user-icon{color:var(--primary);font-size:18px}.nav-drawer-user-name{color:var(--text);font-size:13px;font-weight:600}.nav-drawer-auth-actions{display:flex;gap:8px}.nav-drawer-auth-btn{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;flex:1 1;font-size:11px;font-weight:500;padding:6px 10px;transition:background .2s,color .2s}.nav-drawer-auth-btn:hover{background:var(--surface-hover);color:var(--text)}.nav-drawer-signout{border-color:#f03c3c33;color:#f06060}.nav-drawer-signout:hover{background:#f03c3c1a;color:#f06060}.game-guide{align-items:center;display:flex;flex-direction:column;gap:6px;margin:0 auto;max-width:220px;width:100%}.game-guide-thumb{background:#1a0b2e99;border:1px solid rgba(var(--primary-rgb),.15);border-radius:var(--radius-sm);display:flex;justify-content:center;overflow:hidden;padding:8px;width:100%}.game-guide-thumb svg{display:block;height:auto;max-height:180px;max-width:200px;width:100%}.game-guide-placeholder{background:#1a0b2e66;border-radius:6px;height:140px;width:200px}.game-guide-caption{color:#f0eeff99;font-size:12px;font-style:italic;line-height:1.4;text-align:center}.game-guide-fab{align-items:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:#1e0f32e6;border:1px solid rgba(var(--primary-rgb),.4);border-radius:50%;bottom:20px;box-shadow:0 4px 16px #0006;color:#f0eeffcc;cursor:pointer;display:flex;font-size:20px;font-weight:700;height:44px;justify-content:center;position:fixed;right:20px;transition:background .15s,border-color .15s;width:44px;z-index:500}.game-guide-fab:hover{background:rgba(var(--primary-rgb),.3);border-color:var(--primary)}.game-guide-overlay{align-items:center;animation:guideIn .2s ease;background:var(--overlay);display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:510}@keyframes guideIn{0%{opacity:0}to{opacity:1}}.game-guide-panel{animation:guidePanelIn .25s cubic-bezier(.175,.885,.32,1.275);background:var(--panel);border:1px solid rgba(var(--primary-rgb),.2);border-radius:var(--radius-lg);box-shadow:0 16px 48px #00000080;max-width:340px;padding:20px;width:100%}@keyframes guidePanelIn{0%{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.game-guide-panel-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.game-guide-panel-title{color:rgba(var(--primary-rgb),.7);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.game-guide-panel-close{align-items:center;background:#0000;border:1px solid #f0eeff26;border-radius:var(--radius-sm);color:#f0eeff80;cursor:pointer;display:flex;font-size:16px;height:28px;justify-content:center;width:28px}.game-guide-panel-close:hover{background:#f0eeff14;color:#f0eeffcc}.bug-report-fab{align-items:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:#1e0f32e6;border:1px solid #f03c3c66;border-radius:50%;bottom:20px;box-shadow:0 4px 16px #0006;color:#f0eeffcc;cursor:pointer;display:flex;font-size:20px;height:44px;justify-content:center;left:20px;position:fixed;transition:background .15s,border-color .15s;width:44px;z-index:500}.bug-report-fab:hover{background:#f03c3c40;border-color:#f06060}.bug-report-overlay{align-items:center;animation:bugIn .2s ease;background:var(--overlay);display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:510}@keyframes bugIn{0%{opacity:0}to{opacity:1}}.bug-report-panel{animation:bugPanelIn .25s cubic-bezier(.175,.885,.32,1.275);background:var(--panel);border:1px solid rgba(var(--primary-rgb),.2);border-radius:var(--radius-lg);box-shadow:0 16px 48px #00000080;max-width:380px;padding:20px;width:100%}@keyframes bugPanelIn{0%{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.bug-report-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:14px}.bug-report-title{color:#f03c3ccc;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.bug-report-close{align-items:center;background:#0000;border:1px solid #f0eeff26;border-radius:var(--radius-sm);color:#f0eeff80;cursor:pointer;display:flex;font-size:16px;height:28px;justify-content:center;width:28px}.bug-report-close:hover{background:#f0eeff14;color:#f0eeffcc}.bug-report-label{color:#f0eeff80;display:block;font-size:11px;font-weight:600;letter-spacing:.05em;margin-bottom:6px;text-transform:uppercase}.bug-report-textarea{background:#ffffff0f;border:1px solid var(--border);border-radius:var(--radius-sm);box-sizing:border-box;color:var(--text);font-family:inherit;font-size:14px;min-height:100px;outline:none;padding:10px 14px;resize:vertical;transition:border-color .2s;width:100%}.bug-report-textarea:focus{border-color:var(--primary)}.bug-report-textarea::placeholder{color:#f0eeff4d}.bug-report-attach{margin-top:12px}.bug-report-file-input{display:none}.bug-report-attach-btn{align-items:center;background:#0000;border:1px dashed rgba(var(--primary-rgb),.3);border-radius:var(--radius-sm);color:#f0eeff99;cursor:pointer;display:inline-flex;font-size:13px;gap:6px;padding:8px 14px;transition:background .15s,border-color .15s}.bug-report-attach-btn:hover{background:rgba(var(--primary-rgb),.1);border-color:rgba(var(--primary-rgb),.5)}.bug-report-previews{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px;margin-top:8px}.bug-report-preview{display:inline-block;position:relative}.bug-report-preview img{border:1px solid rgba(var(--primary-rgb),.2);border-radius:var(--radius-sm);height:80px;object-fit:cover;width:80px}.bug-report-preview-remove{align-items:center;background:#f06060;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:12px;height:22px;justify-content:center;position:absolute;right:-6px;top:-6px;width:22px}.bug-report-error{background:#f03c3c1f;border:1px solid #f03c3c4d;border-radius:var(--radius-sm);color:#f06060;font-size:13px;line-height:1.4;margin-top:var(--space-3);padding:10px 12px}.bug-report-submit{background:var(--primary);border:none;border-radius:var(--radius-sm);color:#fff;cursor:pointer;font-size:14px;font-weight:700;height:44px;margin-top:16px;transition:opacity .15s;width:100%}.bug-report-submit:disabled{cursor:default;opacity:.5}.bug-report-submit:hover:not(:disabled){opacity:.85}.bug-report-success{color:#2ecc71;font-size:14px;line-height:1.6;padding:20px 0;text-align:center}.bug-report-success-icon{font-size:36px;margin-bottom:8px}.game-wrapper-loading{align-items:center;background:var(--bg);color:var(--text-secondary);display:flex;flex-direction:column;font-family:var(--font);gap:16px;justify-content:center;min-height:100dvh}.game-wrapper-spinner{animation:spin .8s linear infinite;border:3px solid rgba(var(--primary-rgb),.2);border-radius:50%;border-top-color:var(--primary);height:40px;width:40px}@keyframes spin{to{transform:rotate(1turn)}}.game-wrapper-error{align-items:center;background:var(--bg);color:var(--text);display:flex;flex-direction:column;font-family:var(--font);gap:16px;justify-content:center;min-height:100dvh}.game-wrapper-error button{background:var(--primary);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;font-family:var(--font);padding:10px 24px}.game-wrapper-disclaimer{color:var(--text-muted);font-size:11px;line-height:1.5;margin:24px auto 32px;max-width:600px;padding:0 20px;text-align:center}.badge-toast{align-items:center;animation:toastSlideUp .4s cubic-bezier(.175,.885,.32,1.275) forwards;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:#1a0b2ef2;border:1px solid var(--primary);border-radius:var(--radius-lg);bottom:32px;box-shadow:0 8px 32px rgba(var(--primary-rgb),.35),0 0 0 1px rgba(var(--primary-rgb),.2);cursor:pointer;display:flex;gap:14px;left:50%;max-width:400px;min-width:280px;padding:14px 20px;position:fixed;transform:translateX(-50%) translateY(120px);z-index:500}.badge-toast.dismissing{animation:toastSlideDown .3s ease forwards}@keyframes toastSlideUp{0%{opacity:0;transform:translateX(-50%) translateY(120px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes toastSlideDown{0%{opacity:1;transform:translateX(-50%) translateY(0)}to{opacity:0;transform:translateX(-50%) translateY(120px)}}.badge-toast-icon{color:var(--primary);flex-shrink:0;font-size:32px;line-height:1}.badge-toast-img{border-radius:50%;flex-shrink:0;height:40px;object-fit:cover;width:40px}.badge-toast-body{display:flex;flex-direction:column;gap:2px}.badge-toast-label{color:var(--primary);font-size:10px;font-weight:700;letter-spacing:.2em}.badge-toast-name{color:var(--text);font-size:16px;font-weight:700}.badge-toast-desc{color:var(--text-secondary);font-size:12px}.badge-toast-progress{animation:toastProgress 4s linear forwards;background:var(--primary);border-radius:0 0 var(--radius-lg) var(--radius-lg);bottom:0;height:3px;left:0;position:absolute}@keyframes toastProgress{0%{width:100%}to{width:0}}.auth-overlay{align-items:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);background:var(--overlay);display:flex;inset:0;justify-content:center;position:fixed;z-index:300}.auth-modal{background:#1a0b2ef5;border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 20px 60px #00000080;max-width:92vw;padding:32px 28px;position:relative;width:380px}.auth-close{align-items:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;position:absolute;right:14px;top:14px;width:28px}.auth-close:hover{color:var(--text)}.auth-close svg{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;height:16px;width:16px}.auth-title{color:var(--text);font-size:22px;font-weight:700;margin:0 0 4px}.auth-subtitle{color:var(--text-secondary);font-size:13px;margin:0 0 24px}.auth-form{gap:16px}.auth-form,.auth-label{display:flex;flex-direction:column}.auth-label{color:var(--text-secondary);font-size:12px;font-weight:600;gap:6px;letter-spacing:.05em}.auth-input{background:#ffffff0f;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:14px;height:44px;outline:none;padding:0 14px;transition:border-color .2s}.auth-input:focus{border-color:var(--primary)}.auth-input::placeholder{color:var(--text-secondary);opacity:.5}.auth-error{background:#f03c3c1f;border:1px solid #f03c3c4d;border-radius:var(--radius-sm);color:#f06060;font-size:13px;padding:10px 12px}.auth-btn{border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:600;height:44px;transition:opacity .2s}.auth-btn:disabled{cursor:not-allowed;opacity:.5}.auth-btn-primary{background:var(--primary);color:#fff}.auth-btn-primary:hover:not(:disabled){opacity:.9}.auth-toggle{color:var(--text-secondary);font-size:13px;margin:20px 0 0;text-align:center}.auth-toggle-btn{background:none;border:none;color:var(--primary);cursor:pointer;font-size:13px;font-weight:600;padding:0}.auth-toggle-btn:hover{text-decoration:underline}.auth-success{align-items:center;display:flex;flex-direction:column;gap:12px;padding:16px 0;text-align:center}.auth-success p{color:var(--text-secondary);font-size:14px;line-height:1.5;margin:0}.auth-skip-btn{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:13px;margin-bottom:16px;padding:8px;transition:color .2s,border-color .2s;width:100%}.auth-skip-btn:hover{border-color:var(--text-secondary);color:var(--text)}.auth-username-status{font-size:11px;font-weight:500;margin-top:-2px}.auth-username-status.checking{color:var(--text-secondary)}.auth-username-status.available{color:#2ecc71}.auth-username-status.taken{color:#f06060}.library{margin:0 auto;max-width:900px;padding:32px 20px 60px}.library-quick-actions{display:flex;gap:12px;justify-content:center;margin-bottom:20px}.library-quick-btn{background:#1a0b2e80;border:1px solid rgba(var(--primary-rgb),.3);border-radius:var(--radius-sm);color:#f0eeffe6;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:14px;font-weight:600;padding:10px 24px;transition:background .2s,border-color .2s,transform .1s}.library-quick-btn:hover{background:rgba(var(--primary-rgb),.15);border-color:rgba(var(--primary-rgb),.5);transform:translateY(-1px)}.library-quick-btn.learn{border-color:#66e08c66}.library-quick-btn.learn:hover{background:#66e08c1f;border-color:#66e08c99}.library-quick-btn.puzzles{border-color:#ffe06666}.library-quick-btn.puzzles:hover{background:#ffe0661f;border-color:#ffe06699}.library-view-toggle-wrap{align-items:flex-start;display:flex;flex-direction:column;gap:6px;margin-bottom:32px}.library-view-toggle-label{color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.library-view-toggle{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);display:inline-flex;gap:2px;padding:3px}.library-view-toggle-btn{background:#0000;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-family:var(--font);font-size:12px;font-weight:600;letter-spacing:.04em;padding:6px 16px;transition:color .2s,background .2s}.library-view-toggle-btn:hover{color:var(--text)}.library-view-toggle-btn.active{background:var(--primary-dim);color:var(--text)}.library-section-tag-theme{color:var(--text-secondary);font-size:11px;font-style:italic;font-weight:500;opacity:.7}.library-section{margin-bottom:40px}.library-section-header{align-items:baseline;display:flex;gap:12px;margin-bottom:16px}.library-section-title{color:var(--text);font-size:18px;font-weight:700}.library-section-tag{background:var(--primary-dim);border-radius:var(--radius-sm);color:var(--primary);font-size:10px;font-weight:700;letter-spacing:.18em;padding:3px 8px}.library-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(2,1fr)}@media (min-width:600px){.library-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width:900px){.library-grid{grid-template-columns:repeat(4,1fr)}}.library-card{align-items:flex-start;aspect-ratio:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;padding:14px;position:relative;text-align:left;width:100%}.library-card-glow{background:radial-gradient(circle at 50% 30%,rgba(var(--primary-rgb),.12) 0,#0000 70%);inset:0;pointer-events:none;position:absolute}.library-card-icon{color:var(--primary);filter:drop-shadow(0 0 12px rgba(var(--primary-rgb),.4));font-size:40px;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 40;left:50%;line-height:1;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-65%);transition:transform .3s ease,filter .3s ease}.library-card:hover .library-card-icon{filter:drop-shadow(0 0 20px rgba(var(--primary-rgb),.7));transform:translate(-50%,-70%)}.library-card-complexity{border-radius:var(--radius-sm);font-size:9px;font-weight:600;letter-spacing:.06em;opacity:.7;padding:2px 6px;position:absolute;right:10px;text-transform:uppercase;top:10px;z-index:1}.complexity-low{background:#6ee7a01a;color:#6ee7a0}.complexity-medium{background:#f0c0601a;color:#f0c060}.complexity-high{background:#f070701a;color:#f07070}.library-card-name{color:var(--text);font-size:14px;font-weight:700;line-height:1.2;position:relative;z-index:1}.library-card-subtitle{color:var(--text-secondary);font-size:11px;margin-top:2px;position:relative;z-index:1}.library-statespace-explainer{color:var(--text-muted);font-size:12px;line-height:1.5;margin:0 0 28px;max-width:480px}.library-card-statespace{background:var(--primary-dim);border-radius:var(--radius-sm);color:var(--primary);font-family:var(--font);font-size:11px;font-weight:600;opacity:.85;padding:2px 7px;position:absolute;right:10px;top:10px;z-index:1}.library-card-statespace sup{font-size:.75em}.library-empty{color:var(--text-secondary);font-size:15px;padding:60px 20px;text-align:center}.replay-overlay{align-items:center;background:#000000b3;display:flex;inset:0;justify-content:center;position:fixed;z-index:300}.replay-panel{background:#1a0b2e;border:1px solid #9942f04d;border-radius:16px;max-height:90vh;max-width:500px;overflow-y:auto;padding:20px 24px;width:90vw}.replay-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.replay-title{color:#f0eeff;font-size:16px;font-weight:600}.replay-close{background:none;border:none;color:#f0eeff80;cursor:pointer;font-size:24px;line-height:1;padding:0 4px}.replay-close:hover{color:#f0eeff}.replay-board-area{display:flex;justify-content:center;margin-bottom:12px}.replay-info{color:#f0eeff80;display:flex;font-size:13px;justify-content:space-between;margin-bottom:12px;padding:0 4px}.replay-controls{display:flex;gap:8px;justify-content:center}.replay-controls button{align-items:center;background:#9942f01a;border:1px solid #9942f04d;border-radius:8px;color:#f0eeff;cursor:pointer;display:flex;font-size:16px;height:44px;justify-content:center;width:44px}.replay-controls button:hover:not(:disabled){background:#9942f040}.replay-controls button:disabled{cursor:default;opacity:.3}.replay-mobile{background:#1a0b2e;display:flex;flex-direction:column;inset:0;position:fixed;z-index:300}.replay-mobile-inner{display:flex;flex-direction:column;height:100%;width:100%}.replay-mobile-header{align-items:center;display:flex;flex-shrink:0;justify-content:space-between;padding:12px 16px}.replay-mobile-title{color:#f0eeff;font-size:15px;font-weight:600}.replay-mobile-board{align-items:center;display:flex;flex:1 1;justify-content:center;overflow:hidden;padding:8px}.replay-mobile-board svg{height:auto;max-height:100%;max-width:400px;width:100%}.replay-mobile-board>div{display:flex;justify-content:center;width:100%}.replay-mobile-bottom{background:#1a0b2ef2;border-top:1px solid #9942f040;flex-shrink:0;padding:12px 16px max(12px,env(safe-area-inset-bottom))}.replay-mobile-move-label{color:#f0eeff;font-size:15px;font-weight:600;margin-bottom:4px;text-align:center}.replay-mobile-step{color:#f0eeff66;font-size:12px;margin-bottom:10px;text-align:center}.replay-mobile-controls{display:flex;gap:12px;justify-content:center}.replay-mobile-controls button{-webkit-tap-highlight-color:transparent;align-items:center;background:#9942f01f;border:1px solid #9942f04d;border-radius:10px;color:#f0eeff;cursor:pointer;display:flex;font-size:18px;height:48px;justify-content:center;touch-action:manipulation;width:56px}.replay-mobile-controls button:active:not(:disabled){background:#9942f059}.replay-mobile-controls button:disabled{cursor:default;opacity:.25}.replay-mancala-board{align-items:center;display:flex;gap:8px}.replay-store{align-items:center;display:flex;flex-direction:column;gap:4px}.replay-store-label{color:#f0eeff66;font-size:10px;text-transform:uppercase}.replay-pits-area{display:flex;flex-direction:column;gap:6px}.replay-pit-row{display:flex;gap:4px}.replay-pit{align-items:center;display:flex;flex-direction:column;gap:2px}.replay-pit-count{color:#f0eeff66;font-size:10px}.match-history{margin:0 auto;max-width:800px;padding:32px 20px 60px}.match-history-heading{color:var(--text);font-size:26px;font-weight:700;margin-bottom:28px}.match-history-stats{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,1fr);margin-bottom:28px}.match-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;text-align:center}.match-stat-value{color:var(--text);font-size:28px;font-weight:700;line-height:1}.match-stat-label{color:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.12em;margin-top:4px}.match-history-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.match-filter-chip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:600;letter-spacing:.08em;padding:5px 14px;text-transform:uppercase;transition:background .2s,color .2s,border-color .2s}.match-filter-chip:hover{background:var(--surface-hover);color:var(--text)}.match-filter-chip.active{background:var(--primary-dim);border-color:var(--primary);color:var(--text)}.match-section-label{color:var(--text-secondary);font-size:11px;font-weight:700;letter-spacing:.2em;margin-bottom:12px}.match-history-list{display:flex;flex-direction:column;gap:8px}.match-history-row{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;gap:14px;padding:14px 16px;transition:background .2s}.match-history-row:hover{background:var(--surface-hover)}.match-row-icon{align-items:center;background:var(--primary-dim);border-radius:var(--radius-sm);display:flex;flex-shrink:0;font-size:20px;height:40px;justify-content:center;width:40px}.match-row-info{flex:1 1;min-width:0}.match-row-name{color:var(--text);font-size:14px;font-weight:600}.match-row-meta{color:var(--text-secondary);font-size:12px;margin-top:2px}.match-row-result{align-items:flex-end;display:flex;flex-direction:column;flex-shrink:0;gap:3px}.match-result-badge{border-radius:var(--radius-sm);font-size:11px;font-weight:700;letter-spacing:.08em;padding:3px 9px}.match-result-badge.won{background:#48c77426;border:1px solid #48c7744d;color:#48c774}.match-result-badge.lost{background:#ff50501f;border:1px solid #ff505040;color:#ff6b6b}.match-row-time{color:var(--text-secondary);font-size:11px}.match-replay-btn{align-items:center;background:rgba(var(--primary-rgb),.1);border:1px solid rgba(var(--primary-rgb),.3);border-radius:var(--radius-sm);color:#f0eeff99;cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;width:28px}.match-replay-btn:hover{background:rgba(var(--primary-rgb),.25);color:var(--text)}.match-history-empty{color:var(--text-secondary);font-size:15px;padding:60px 20px;text-align:center}.elo-trends{margin:0 auto;max-width:900px;padding:32px 20px 60px}.elo-trends-heading{color:var(--text);font-size:26px;font-weight:700;margin-bottom:8px}.elo-trends-subtext{color:var(--text-secondary);font-size:14px;margin-bottom:32px}.elo-trends-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.elo-game-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;transition:border-color .2s,background .2s}.elo-game-card:hover{background:rgba(var(--primary-rgb),.06);border-color:var(--primary)}.elo-view-history{color:var(--primary);font-size:12px;margin-top:8px;opacity:0;transition:opacity .2s}.elo-game-card:hover .elo-view-history{opacity:1}.elo-game-header{align-items:center;display:flex;gap:12px;margin-bottom:14px}.elo-game-icon{color:var(--primary);font-size:24px;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;line-height:1}.elo-game-name{color:var(--text);font-size:15px;font-weight:700}.elo-game-meta{color:var(--text-secondary);font-size:12px}.elo-game-rating{align-items:baseline;display:flex;gap:6px;margin-bottom:12px}.elo-rating-value{color:var(--primary);font-size:28px;font-weight:700}.elo-rating-label{color:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.1em}.elo-rating-delta{font-size:13px;font-weight:600;margin-left:auto}.elo-rating-delta.positive{color:#48c774}.elo-rating-delta.negative{color:#ff6b6b}.elo-rating-delta.neutral{color:var(--text-secondary)}.elo-chart-wrap{height:60px;overflow:hidden;width:100%}.elo-chart-wrap svg{height:100%;width:100%}.elo-chart-line{fill:none;stroke:var(--primary);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.elo-chart-area{fill:url(#elo-gradient)}.elo-empty{color:var(--text-secondary);font-size:15px;padding:60px 20px;text-align:center}.elo-starter-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);opacity:.5;padding:18px}.badges-view{-webkit-overflow-scrolling:touch;margin:0 auto;max-height:100vh;max-width:800px;overflow-y:auto;padding:32px 20px 60px}.badges-view-heading{color:var(--text);font-size:26px;font-weight:700;margin-bottom:8px}.badges-player-row{align-items:center;display:flex;gap:14px;margin-bottom:28px}.badges-player-avatar{align-items:center;background:var(--primary);border-radius:50%;display:flex;flex-shrink:0;font-size:22px;height:48px;justify-content:center;width:48px}.badges-player-name{color:var(--text);font-size:16px;font-weight:700}.badges-player-level{background:var(--primary-dim);border:1px solid rgba(var(--primary-rgb),.35);border-radius:var(--radius-sm);color:var(--primary);display:inline-block;font-size:10px;font-weight:700;letter-spacing:.1em;margin-top:3px;padding:2px 7px}.badges-tabs{border-bottom:1px solid var(--border);display:flex;gap:4px;margin-bottom:24px}.badges-tab{background:none;border:none;border-bottom:2px solid #0000;color:var(--text-secondary);cursor:pointer;font-size:13px;font-weight:600;margin-bottom:-1px;padding:10px 18px;transition:color .2s,border-color .2s}.badges-tab:hover{color:var(--text)}.badges-tab.active{border-bottom-color:var(--primary);color:var(--text)}.badges-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,1fr)}@media (min-width:600px){.badges-grid{grid-template-columns:repeat(3,1fr)}}.badge-card{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:8px;padding:18px 16px;position:relative;text-align:center;transition:background .2s,border-color .2s}.badge-card.earned{background:rgba(var(--primary-rgb),.06);border-color:var(--rarity-color,var(--border))}.badge-card.locked{opacity:.45}.badge-card-icon-wrap{align-items:center;display:flex;height:64px;justify-content:center;width:64px}.badge-card-img{border-radius:var(--radius-sm);filter:drop-shadow(0 0 8px transparent);filter:drop-shadow(0 0 8px var(--rarity-color,transparent));height:64px;object-fit:contain;width:64px}.badge-card.locked .badge-card-img{filter:grayscale(1)}.badge-card-icon{filter:drop-shadow(0 0 8px transparent);filter:drop-shadow(0 0 8px var(--rarity-color,transparent));font-size:36px;line-height:1}.badge-card.locked .badge-card-icon{filter:grayscale(1)}.badges-player-avatar .material-symbols-outlined{color:#fff;font-size:28px}.badge-card-rarity{background:#ffffff0f;border-radius:var(--radius-sm);color:var(--text-secondary);color:var(--rarity-color,var(--text-secondary));font-size:9px;font-weight:700;letter-spacing:.18em;padding:2px 8px}.badge-card-name{color:var(--text);font-size:13px;font-weight:700;line-height:1.2}.badge-card-desc{color:var(--text-secondary);font-size:11px;line-height:1.4}.badge-card-date{color:var(--text-secondary);font-size:10px;margin-top:2px}.badge-locked-icon{font-size:14px;opacity:.4;position:absolute;right:12px;top:12px}.badges-empty{color:var(--text-secondary);font-size:14px;grid-column:1/-1;padding:40px 20px;text-align:center}.profile-view{margin:0 auto;max-width:700px;padding:32px 20px 60px}.profile-header{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;gap:20px;margin-bottom:36px;padding:24px}.profile-avatar{align-items:center;background:linear-gradient(135deg,var(--primary) 0,#6a1fc2 100%);border:3px solid rgba(var(--primary-rgb),.4);border-radius:50%;display:flex;flex-shrink:0;font-size:32px;height:72px;justify-content:center;width:72px}.profile-info{flex:1 1}.profile-username{color:var(--text);font-size:22px;font-weight:700;margin-bottom:4px}.profile-tagline{color:var(--text-secondary);font-size:13px}.profile-stats-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,1fr);margin-bottom:28px}@media (min-width:500px){.profile-stats-grid{grid-template-columns:repeat(4,1fr)}}.profile-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 12px;text-align:center}.profile-stat-value{color:var(--text);font-size:24px;font-weight:700;line-height:1}.profile-stat-label{color:var(--text-secondary);font-size:10px;font-weight:600;letter-spacing:.12em;margin-top:5px}.profile-section{margin-bottom:28px}.profile-section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:14px}.profile-section-title{color:var(--text-secondary);font-size:14px;font-weight:700;letter-spacing:.08em}.profile-section-link{background:none;border:none;color:var(--primary);cursor:pointer;font-size:12px;font-weight:600;transition:opacity .2s}.profile-section-link:hover{opacity:.8}.profile-badges-row{display:flex;gap:10px}.profile-badge-mini{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex:1 1;flex-direction:column;gap:6px;padding:14px 10px;text-align:center}.profile-badge-mini-icon{color:var(--primary);font-size:24px;line-height:1}.profile-badge-mini-img{border-radius:50%;height:36px;object-fit:cover;width:36px}.profile-badge-mini-name{color:var(--text);font-size:11px;font-weight:600}.profile-no-badges{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-size:13px;padding:20px;text-align:center}.profile-nav-buttons{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}.profile-nav-btn{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);display:flex;font-size:13px;font-weight:600;gap:10px;padding:14px 16px;text-align:left;transition:background .2s,border-color .2s}.profile-nav-btn:hover{background:var(--surface-hover);border-color:var(--primary)}.profile-nav-btn svg{stroke:var(--primary);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;height:18px;width:18px}.lb-view{margin:0 auto;max-width:700px;padding:32px 20px 60px}.lb-heading{color:var(--text);font-size:26px;font-weight:700;margin-bottom:8px}.lb-subtext{color:var(--text-secondary);font-size:14px;margin-bottom:24px}.lb-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:24px}.lb-tab{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:600;padding:6px 14px;transition:all .2s;white-space:nowrap}.lb-tab:hover{border-color:var(--primary);color:var(--text)}.lb-tab.active{background:var(--primary);border-color:var(--primary);color:#fff}.lb-table{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.lb-header{border-bottom:1px solid var(--border);color:var(--text-secondary);font-size:11px;font-weight:700;letter-spacing:.08em}.lb-header,.lb-row{display:grid;grid-template-columns:48px 1fr 80px 80px;padding:12px 16px}.lb-row{border-bottom:1px solid #ffffff0a;color:var(--text);font-size:14px;transition:background .15s}.lb-row:last-child{border-bottom:none}.lb-row:hover{background:rgba(var(--primary-rgb),.04)}.lb-rank{color:var(--text-secondary);font-weight:700}.lb-name{font-weight:600}.lb-elo{color:var(--primary);font-weight:700;text-align:right}.lb-games{color:var(--text-secondary);font-size:13px;text-align:right}.lb-row.medal-gold .lb-rank{color:gold}.lb-row.medal-silver .lb-rank{color:silver}.lb-row.medal-bronze .lb-rank{color:#cd7f32}.lb-row.medal-gold{background:#ffd7000d}.lb-row.medal-silver{background:#c0c0c00a}.lb-row.medal-bronze{background:#cd7f3208}.lb-empty{color:var(--text-secondary);font-size:14px;padding:48px 20px;text-align:center}.about-view{margin:0 auto;max-width:640px;padding:32px 20px 60px}.about-heading{color:var(--text);font-size:24px;font-weight:700;margin-bottom:16px}.about-intro{color:#f0eeffbf;font-size:15px;line-height:1.6;margin-bottom:12px}.about-subheading{color:rgba(var(--primary-rgb),.85);font-size:17px;font-weight:700;letter-spacing:.03em;margin-bottom:14px;margin-top:28px}.about-card{background:#1a0b2e80;border:1px solid rgba(var(--primary-rgb),.15);border-radius:var(--radius-sm);margin-bottom:10px;padding:16px 18px}.about-card h3{color:var(--text);font-size:14px;font-weight:700;margin:0 0 6px}.about-card p{color:#f0eeffa6;font-size:14px;line-height:1.55;margin:0}.about-reasons{display:flex;flex-direction:column;gap:12px}.about-reason h3{color:#f0eeffe6;font-size:13px;font-weight:700;margin:0 0 4px}.about-reason p{color:#f0eeff8c;font-size:13px;line-height:1.55;margin:0}.about-cta{background:rgba(var(--primary-rgb),.08);border:1px solid rgba(var(--primary-rgb),.2);border-radius:var(--radius);margin-top:32px;padding:20px;text-align:center}.about-cta h2{color:var(--text);font-size:17px;font-weight:700;margin:0 0 8px}.about-cta p{color:#f0eeffa6;font-size:14px;line-height:1.5;margin:0 0 10px}.about-cta p:last-child{margin-bottom:0}.about-link{color:var(--primary);font-weight:600;text-decoration:none}.about-link:hover{text-decoration:underline}.about-low-badge{background:#6ee7a01a;border-radius:var(--radius-sm);color:#6ee7a0;display:inline-block;font-size:11px;font-weight:700;margin:0 2px;padding:2px 8px;text-transform:uppercase;vertical-align:middle}.blog-view{margin:0 auto;max-width:640px;padding:32px 20px 60px}.blog-heading{color:var(--text);font-size:24px;font-weight:700;margin-bottom:8px}.blog-intro{color:#f0eeffa6;font-size:15px;line-height:1.6;margin-bottom:24px}.blog-posts{display:flex;flex-direction:column;gap:16px}.blog-card{background:#1a0b2e80;border:1px solid rgba(var(--primary-rgb),.15);border-radius:var(--radius-sm);display:block;padding:20px 22px;text-decoration:none;transition:border-color .2s,background .2s}.blog-card:hover{background:#1a0b2eb3;border-color:rgba(var(--primary-rgb),.4)}.blog-card-meta{align-items:center;display:flex;gap:10px;margin-bottom:10px}.blog-card-category{border-radius:var(--radius-sm);display:inline-block;font-size:10px;font-weight:700;letter-spacing:.1em;padding:3px 8px;text-transform:uppercase}.blog-card-category.math{background:#6366f126;border:1px solid #6366f140;color:#8b8effe6}.blog-card-category.cs{background:#10b9811f;border:1px solid #10b98140;color:#34d399e6}.blog-card-games{color:#f0eeff73;font-size:11px;font-weight:500}.blog-card-title{color:var(--text);font-size:18px;font-weight:700;line-height:1.3;margin:0 0 6px}.blog-card-subtitle{color:#f0eeff99;font-size:14px;line-height:1.5;margin:0 0 10px}.blog-card-date{color:#f0eeff59;font-size:12px}.psolver{align-items:flex-start;display:flex;gap:24px;margin:0 auto;max-width:1000px;padding:16px}.psolver-board{align-items:center;display:flex;flex:1 1 460px;flex-direction:column;min-width:0}.psolver-panel{color:#e8e2f5;display:flex;flex:0 0 300px;flex-direction:column;gap:14px}.psolver-top{align-items:center;display:flex;justify-content:space-between}.psolver-themes-btn{background:none;border:1px solid #9942f066;border-radius:6px;color:#d8c9f0;cursor:pointer;font-size:13px;padding:5px 12px}.psolver-themes-btn:hover{background:#9942f024;border-color:#9942f0;color:#fff}.psolver-stream{color:#9a86c4;font-size:13px}.psolver-stream .psolver-rating{color:#ffe066;font-weight:600}.psolver-head{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.psolver-turn{border-radius:6px;font-size:16px;font-weight:700;padding:3px 10px}.psolver-turn.black{background:#222;color:#fff}.psolver-turn.white{background:#f5f5f0;color:#222}.psolver-winin{border:1px solid #ffe06666;border-radius:6px;color:#ffe066;font-size:13px;font-weight:600;padding:3px 8px}.psolver-captures{display:flex;flex-wrap:wrap;gap:22px;justify-content:center;margin-top:10px}.psolver-cap-row{align-items:center;display:flex;gap:8px}.psolver-cap-label{color:#9a86c4;font-size:12px;min-width:38px}.psolver-cap-stones{display:flex;gap:6px}.psolver-cap-pair{display:flex;gap:2px}.psolver-cap-stone{background:#ffffff14;border:1px solid #ffffff2e;border-radius:50%;box-sizing:border-box;height:12px;width:12px}.psolver-cap-stone.filled.black{background:#222;border-color:#555}.psolver-cap-stone.filled.white{background:#f5f5f0;border-color:#aaa}.psolver-cap-count{font-feature-settings:"tnum";color:#e8e2f5;font-size:13px;font-variant-numeric:tabular-nums;font-weight:600}.psolver-pid{font-feature-settings:"tnum";color:#6b5a90;font-size:11px;font-variant-numeric:tabular-nums}.psolver-winin.analyse{border-color:#66e08c66;color:#8be0a3}.psolver-thinking{animation:psolver-spin .8s linear infinite;border:2px solid #ffffff2e;border-radius:50%;border-top-color:#b79ce0;display:inline-block;height:14px;vertical-align:middle;width:14px}@keyframes psolver-spin{to{transform:rotate(1turn)}}.psolver-trail-grid{grid-gap:2px 4px;background:#0000002e;border-radius:8px;display:grid;gap:2px 4px;grid-template-columns:32px 1fr 1fr;max-height:280px;overflow-y:auto;padding:8px}.psolver-trail-num{font-feature-settings:"tnum";align-items:center;color:#6b5a90;display:flex;font-size:12px;font-variant-numeric:tabular-nums;justify-content:flex-end;padding-right:4px}.psolver-trail-cell{font-feature-settings:"tnum";background:#0000;border:1px solid #0000;border-radius:4px;color:#e8e2f5;cursor:pointer;font-family:inherit;font-size:13px;font-variant-numeric:tabular-nums;min-height:24px;padding:4px 8px;text-align:left}.psolver-trail-cell.empty{cursor:default}.psolver-trail-cell:not(.empty):hover{background:#9942f029}.psolver-trail-cell.current{background:#ffe0661f;border-color:#ffe066}.psolver-trail-cell.branch{color:#c3aee8;font-style:italic}.psolver-trail-cell.side-black:before,.psolver-trail-cell.side-white:before{border:1px solid #ffffff40;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:6px;vertical-align:middle;width:8px}.psolver-trail-cell.side-black:before{background:#222}.psolver-trail-cell.side-white:before{background:#f5f5f0}button.psolver-move{border:1px solid #0000;cursor:pointer;font-family:inherit}.psolver-move.current{border-color:#ffe066;box-shadow:inset 0 0 0 1px #ffe066}.psolver-move.branch{font-style:italic;opacity:.9}.psolver-nav{display:flex;gap:4px;padding:4px 0}.psolver-nav,.psolver-nav-btn{align-items:center;justify-content:center}.psolver-nav-btn{background:#ffffff0a;border:1px solid #9942f04d;border-radius:6px;color:#d8c9f0;cursor:pointer;display:inline-flex;height:32px;padding:0;width:36px}.psolver-nav-btn svg{display:block}.psolver-nav-btn:hover:not(:disabled){background:#9942f024;border-color:#9942f0}.psolver-nav-btn:disabled{cursor:default;opacity:.35}.psolver-nav-pos{font-feature-settings:"tnum";color:#9a86c4;font-size:12px;font-variant-numeric:tabular-nums;margin:0 6px}.psolver-feedback{border:1px solid #0000;border-radius:8px;font-size:14px;line-height:1.45;padding:10px 12px}.psolver-feedback.prompt{background:#ffffff0a;color:#b8a9d4}.psolver-feedback.good{background:#66e08c1f;border-color:#66e08c66;color:#8be0a3}.psolver-feedback.wrong{background:#e54f4f1f;border-color:#e54f4f66;color:#f0a0a0}.psolver-feedback.solved{background:#66e08c29;border-color:#66e08c80;color:#8be0a3;font-weight:600}.psolver-feedback.failed{background:#f0a0501f;border-color:#f0a05066;color:#f0c08a}.psolver-trail{background:#0000002e;border-radius:8px;display:flex;flex-wrap:wrap;gap:5px;min-height:30px;padding:8px}.psolver-trail-empty{color:#6b5a90;font-size:12px}.psolver-move{font-feature-settings:"tnum";background:#ffe06624;border-radius:4px;color:#e8d98a;font-size:12px;font-variant-numeric:tabular-nums;padding:2px 6px}.psolver-move.opp{background:#9942f02e;color:#c3aee8}.psolver-move b{margin-right:2px;opacity:.7}.psolver-actions{display:flex;gap:8px;margin-top:2px}.psolver-btn{background:#9942f01f;border:1px solid #9942f066;border-radius:8px;color:#d8c9f0;cursor:pointer;flex:1 1;font-size:14px;padding:9px 12px}.psolver-btn:hover{background:#9942f038}.psolver-btn.primary{background:#9942f0;border-color:#9942f0;color:#fff;font-weight:600}.psolver-btn.primary:hover{background:#a755f5}@media (max-width:760px){.psolver{align-items:stretch;flex-direction:column;gap:12px;padding:10px}.psolver-board{flex:none}.psolver-panel{flex-basis:auto}.psolver-feedback{font-size:13px;padding:8px 10px}.psolver-actions{flex-wrap:wrap}.psolver-btn{flex:1 1 45%}}.ppz-shell{background:#1a1230;box-sizing:border-box;color:#e8e2f5;min-height:100vh;padding:32px 20px 80px}.ppz-msg{color:#9a86c4;font-size:15px;padding:80px 0;text-align:center}.ppz-shell-nav{font-size:13px;margin:-16px auto 16px;max-width:1000px}.ppz-back-link{color:#b79ce0;text-decoration:none}.ppz-back-link:hover{color:#fff}.ppz-page{margin:0 auto;max-width:760px}.ppz-header{margin-bottom:24px}.ppz-header.center{margin-bottom:32px;text-align:center}.ppz-header h1{color:#fff;font-size:30px;margin:0 0 6px}.ppz-header p{color:#9a86c4;font-size:14px;margin:0}.ppz-back{background:none;border:none;color:#b79ce0;cursor:pointer;font-size:14px;padding:0 0 8px}.ppz-back:hover{color:#fff}.ppz-choices{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.ppz-choice{background:linear-gradient(150deg,#9942f038,#9942f00f);border:1px solid #9942f059;border-radius:14px;color:#e8e2f5;cursor:pointer;display:flex;flex-direction:column;gap:8px;padding:26px 22px;text-align:left}.ppz-choice:hover{border-color:#9942f0}.ppz-choice.themes{background:linear-gradient(150deg,#ffe06629,#9942f00f);border-color:#ffe06659}.ppz-choice-title{color:#fff;font-size:22px;font-weight:700}.ppz-choice-sub{color:#b8a9d4;flex:1 1;font-size:13px;line-height:1.5}.ppz-choice-go{color:#b79ce0;font-size:13px;font-weight:600;margin-top:6px}.ppz-choice.themes .ppz-choice-go{color:#ffe066}.ppz-section{margin-bottom:22px}.ppz-section h3{color:#b79ce0;font-size:13px;letter-spacing:.08em;margin:0 0 10px;text-transform:uppercase}.ppz-theme-list{display:flex;flex-direction:column;gap:8px}.ppz-theme-row{align-items:center;background:#ffffff08;border:1px solid #9942f038;border-radius:10px;color:#e8e2f5;cursor:pointer;display:flex;gap:14px;padding:12px 16px;text-align:left}.ppz-theme-row:hover{background:#9942f01f;border-color:#9942f0}.ppz-theme-row.featured{background:#ffe06612;border-color:#ffe06666}.ppz-theme-text{display:flex;flex:1 1;flex-direction:column;gap:2px;min-width:0}.ppz-theme-name{font-size:15px;font-weight:600}.ppz-theme-desc{color:#9a86c4;font-size:12.5px;line-height:1.4}.ppz-theme-n{background:#0000004d;border-radius:10px;color:#9a86c4;flex:none;font-size:12px;padding:3px 10px}@media (max-width:560px){.ppz-choices{grid-template-columns:1fr}}.gpsolver{grid-gap:20px;color:#e8e2f5;display:grid;gap:20px;grid-template-columns:minmax(0,1fr) 320px;margin:0 auto;max-width:1100px;padding:16px}.gpsolver-board{align-items:center}.gpsolver-board,.gpsolver-panel{display:flex;flex-direction:column;gap:10px}.gpsolver-panel{background:#1a0b2e80;border:1px solid #9942f026;border-radius:10px;height:fit-content;padding:14px}.gpsolver-top{align-items:center;color:#e8e2f599;display:flex;font-size:12px;justify-content:space-between}.gpsolver-stream{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.gpsolver-pid{color:#e8e2f559;font-family:JetBrains Mono,monospace;font-size:11px}.gpsolver-rating{color:#9942f0;font-weight:600}.gpsolver-themes-btn{background:#0000;border:1px solid #9942f066;border-radius:4px;color:#e8e2f5;cursor:pointer;font-size:12px;padding:4px 10px}.gpsolver-themes-btn:hover{background:#9942f01f}.gpsolver-head{align-items:center;border-bottom:1px solid #9942f01f;display:flex;gap:10px;padding-bottom:8px}.gpsolver-turn{border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.06em;padding:4px 10px;text-transform:uppercase}.gpsolver-turn.black,.gpsolver-turn.p1,.gpsolver-turn.red{background:#e055552e;color:#e05555}.gpsolver-turn.blue,.gpsolver-turn.p2,.gpsolver-turn.white{background:#5588e02e;color:#5588e0}.gpsolver-winin{color:#e8e2f58c;font-size:11px;font-weight:600;letter-spacing:.08em;margin-left:auto;text-transform:uppercase}.gpsolver-winin.done{color:#66e08c}.gpsolver-feedback{border-radius:6px;font-size:13px;font-weight:500;padding:8px 10px;text-align:center}.gpsolver-feedback.good{background:#66e08c1f;color:#66e08c}.gpsolver-feedback.wrong{background:#e055551f;color:#ff8a8a}.gpsolver-feedback.failed{background:#ffe0661f;color:#ffe066}.gpsolver-feedback.solved{background:#66e08c2e;color:#88f0a8;font-weight:700}.gpsolver-feedback.prompt{background:#9942f014;color:#e8e2f5b3;font-style:italic}.gpsolver-trail{align-content:flex-start;background:#14082466;border-radius:6px;display:flex;flex-wrap:wrap;font-size:13px;gap:6px;min-height:56px;padding:8px}.gpsolver-trail-empty{color:#e8e2f559;font-size:12px}.gpsolver-move{font-feature-settings:"tnum";align-items:center;background:#9942f026;border-radius:4px;display:inline-flex;font-variant-numeric:tabular-nums;gap:4px;padding:3px 8px}.gpsolver-move b{color:#e8e2f580;font-size:11px;font-weight:600}.gpsolver-move.opp{background:#5555552e;color:#e8e2f5b3}.gpsolver-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}.gpsolver-btn{background:#0000;border:1px solid #9942f066;border-radius:6px;color:#e8e2f5;cursor:pointer;flex:1 1;font-family:inherit;font-size:13px;min-width:0;padding:9px 12px;transition:background .15s}.gpsolver-btn:hover{background:#9942f01f}.gpsolver-btn.primary{background:#9942f0;border-color:#9942f0}.gpsolver-btn.primary:hover{background:#b25dff}@media (max-width:800px){.gpsolver{grid-template-columns:1fr}}.tactics-page{background:#0a0418;color:#e8e2f5;min-height:100vh}.tactics-bar{align-items:center;border-bottom:1px solid #9942f026;display:flex;gap:16px;margin:0 auto;max-width:1100px;padding:14px 20px}.tactics-back{color:#e8e2f5b3;font-size:14px;text-decoration:none}.tactics-back:hover{color:#9942f0}.tactics-title{flex:1 1;font-size:18px;font-weight:700;letter-spacing:.02em;margin:0}.tactics-progress{font-feature-settings:"tnum";color:#e8e2f58c;font-size:13px;font-variant-numeric:tabular-nums}.tactics-page-note{color:#e8e2f58c;font-size:13px;line-height:1.5;margin:8px auto 0;max-width:1100px;padding:0 20px}.bridges-puzzles{color:#e8e2f5;font-family:Inter,system-ui,sans-serif;margin:0 auto;max-width:720px;padding:16px 12px 32px}.bridges-puzzles-bar{align-items:center;border-bottom:1px solid #9942f033;display:flex;gap:16px;margin-bottom:16px;padding-bottom:12px}.bridges-puzzles-back{color:#e8e2f5b3;font-size:14px;text-decoration:none}.bridges-puzzles-back:hover{color:#9942f0}.bridges-puzzles-title{flex:1 1;font-size:18px;font-weight:700;letter-spacing:.02em;margin:0}.bridges-puzzles-progress{font-feature-settings:"tnum";color:#e8e2f58c;font-size:13px;font-variant-numeric:tabular-nums}.bridges-puzzles-note{color:#e8e2f58c;font-size:13px;line-height:1.5;margin:0 0 16px}.bridges-puzzle-card{background:#1a0b2e80;border:1px solid #9942f026;border-radius:12px;display:flex;flex-direction:column;gap:12px;padding:16px}.bridges-puzzle-header{align-items:center;display:flex;font-size:13px;gap:12px}.bridges-puzzle-side{border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.06em;padding:3px 10px;text-transform:uppercase}.bridges-puzzle-side-red{background:#e055552e;color:#e05555}.bridges-puzzle-side-blue{background:#5588e02e;color:#5588e0}.bridges-puzzle-len{color:#e8e2f5b3;flex:1 1;font-weight:600}.bridges-puzzle-id{color:#e8e2f559;font-family:JetBrains Mono,monospace;font-size:11px}.bridges-puzzle-svg{background:#1a1030;border-radius:8px;display:block;height:auto;margin:0 auto;max-width:460px;width:100%}.bridges-puzzle-feedback{color:#ffe066;font-size:14px;min-height:22px;text-align:center}.bridges-puzzle-actions{display:flex;gap:8px;justify-content:center}.bridges-puzzle-btn{background:#0000;border:1px solid #9942f066;border-radius:6px;color:#e8e2f5;cursor:pointer;font-family:inherit;font-size:13px;padding:8px 16px;transition:background .15s}.bridges-puzzle-btn:hover{background:#9942f01f}.bridges-puzzle-btn.primary{background:#9942f0;border-color:#9942f0}.bridges-puzzle-btn.primary:hover{background:#b25dff}.game-walls{background:#191022;font-family:Space Grotesk,sans-serif;min-height:100dvh}.game-walls .start-screen{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1a0b2ed9;border:1px solid #9942f02e;border-radius:20px;margin:0 auto;max-width:440px;padding:40px}.game-walls h1{color:#f0eeff;font-size:32px;font-weight:700;letter-spacing:.25em;margin-bottom:8px;text-transform:uppercase}.game-walls .start-desc{color:#f0eeff99;margin-bottom:6px}.game-walls .start-rule{color:#f0eeff66;font-size:13px;margin-bottom:24px}.game-walls .start-checkbox{color:#f0eeff;display:block;margin-bottom:16px}.game-walls .difficulty-row{align-items:center;display:flex;gap:8px;justify-content:center;margin-bottom:16px}.game-walls .difficulty-row label{color:#f0eeff80;margin-right:8px}.game-walls .diff-btn{background:#9942f014;border:1px solid #9942f02e;border-radius:6px;color:#f0eeffb3;cursor:pointer;font-family:Space Grotesk,sans-serif;margin:0 4px;padding:4px 12px;transition:background .2s}.game-walls .diff-btn.active{background:#9942f059;border-color:#9942f099;color:#f0eeff}.game-walls .btn-primary{background:#9942f0;border:none;border-radius:12px;color:#fff;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:16px;margin-top:8px;padding:12px 32px;transition:background .2s}.game-walls .btn-primary:hover{background:#7a2fd4}.game-walls .status-bar{color:#f0eeff;font-size:20px;font-weight:600;letter-spacing:.05em;line-height:30px;min-height:30px}.game-walls .hint-text{color:#f0eeff66;font-size:12px;min-height:18px;text-align:center}.game-walls .game-controls{display:flex;gap:12px;justify-content:center;padding:16px}.game-walls .ctrl-btn{background:#9942f01a;border:1px solid #9942f033;border-radius:999px;color:#f0eeffcc;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:13px;font-weight:600;letter-spacing:.1em;padding:10px 20px;transition:background .2s}.game-walls .ctrl-btn:hover{background:#9942f033}.game-walls .ctrl-btn:disabled{cursor:default;opacity:.35}.game-walls .game-menu-overlay{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000b3;display:flex;inset:0;justify-content:center;position:fixed;z-index:200}.game-walls .game-menu-panel{background:#1a0b2ef2;border:1px solid #9942f04d;border-radius:16px;display:flex;flex-direction:column;gap:12px;min-width:240px;padding:32px}.game-walls .game-menu-panel button{background:#9942f01a;border:1px solid #9942f033;border-radius:8px;color:#f0eeff;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:14px;padding:12px 24px;transition:background .2s}.game-walls .game-menu-panel button:hover{background:#9942f040}.game-walls .winner-overlay{align-items:center;animation:wallsFadeIn .4s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#191022b3;display:flex;inset:0;justify-content:center;position:fixed;z-index:200}.game-walls .winner-banner{align-items:center;background:#1a0b2ef2;border:2px solid #9942f066;border-radius:20px;box-shadow:0 0 60px #9942f040;display:flex;flex-direction:column;gap:8px;padding:40px 48px;text-align:center}.game-walls .winner-label{color:#f0eeff;font-size:28px;font-weight:700;letter-spacing:.15em;text-shadow:0 0 20px #9942f099}.game-walls .winner-reason{color:#f0eeff80;font-size:14px;margin-bottom:16px}@keyframes wallsFadeIn{0%{opacity:0}to{opacity:1}}.shared-start-screen{margin:0 auto;max-width:420px;padding:32px 24px;text-align:center}.shared-start-title{color:#c8b8e8;font-size:28px;letter-spacing:.15em;margin-bottom:8px}.shared-start-subtitle{color:#8a7ab0;font-size:15px;margin-bottom:20px}.shared-start-screen .game-guide{margin-bottom:20px}.shared-start-option{margin-bottom:14px}.shared-start-checkbox{align-items:center;color:#c8b8e8;cursor:pointer;display:inline-flex;font-size:14px;gap:8px}.shared-start-checkbox input{accent-color:#9942f0}.shared-start-difficulty{align-items:center;display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-bottom:18px}.shared-start-difficulty label{color:#8a7ab0;font-size:14px;margin-right:4px}.shared-start-diff-btn{background:#191022;border:1px solid #5a3a8a;border-radius:6px;color:#c8b8e8;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:13px;padding:5px 14px;transition:background .15s}.shared-start-diff-btn.active{background:#5a3a8a}.shared-start-diff-btn:hover:not(.active){background:#5a3a8a4d}.shared-start-play-btn{background:#5a3a8a;border:none;border-radius:10px;color:#fff;cursor:pointer;display:block;font-family:Space Grotesk,sans-serif;font-size:18px;font-weight:600;margin:20px auto 0;max-width:280px;padding:14px 32px;transition:background .15s;width:100%}.shared-start-play-btn:hover{background:#6e48a8}.shared-start-home-btn{background:#0000;border:1px solid #5a3a8a66;border-radius:6px;color:#8a7ab0;cursor:pointer;display:inline-block;font-family:Space Grotesk,sans-serif;font-size:13px;margin-top:14px;padding:8px 18px;transition:background .15s}.shared-start-home-btn:hover{background:#5a3a8a26}.tutorial-buttons{border-top:1px solid #9942f01f;display:flex;gap:10px;justify-content:center;margin-top:20px;padding-top:16px}.tutorial-start-btn{background:#9942f01f;border:1px solid #9942f040;border-radius:8px;color:#f0eeffcc;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:13px;font-weight:600;padding:8px 18px;transition:background .15s}.tutorial-start-btn:hover{background:#9942f040;color:#f0eeff}.tutorial-start-btn.secondary{background:#0000;border-color:#9942f026;color:#f0eeff80}.tutorial-start-btn.secondary:hover{background:#9942f01a;color:#f0eeffb3}.shared-start-related{border-top:1px solid #5a3a8a40;margin-top:28px;padding-top:20px}.shared-start-related-label{color:#8a7ab0;font-size:12px;letter-spacing:.1em;margin-bottom:10px;text-transform:uppercase}.shared-start-related-games{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.shared-start-related-btn{align-items:center;background:#19102299;border:1px solid #5a3a8a4d;border-radius:8px;color:#c8b8e8;cursor:pointer;display:flex;font-family:Space Grotesk,sans-serif;font-size:13px;gap:6px;padding:6px 14px;transition:background .15s,border-color .15s}.shared-start-related-btn:hover{background:#5a3a8a40;border-color:#5a3a8a80}.shared-start-related-btn .related-icon{color:#9942f0;font-size:18px}.shared-start-related-btn .related-name{font-weight:500}.review-controls{align-items:center;animation:reviewFadeIn .4s ease-out;display:flex;flex-direction:column;gap:10px;padding:12px 16px}@keyframes reviewFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.review-banner{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.review-win-title{color:#ffe066;font-size:18px;font-weight:700;letter-spacing:.08em;text-shadow:0 0 12px #ffe0664d}.review-win-subtitle{color:#f0eeff80;font-size:13px}.review-elo{align-items:center;display:flex;gap:6px}.review-elo-rating{color:#f0eeff;font-size:15px;font-weight:700}.review-elo-change{font-size:13px;font-weight:600}.review-elo-change.positive{color:#6ee7a0}.review-elo-change.negative{color:#ff6b6b}.review-nav{align-items:center;display:flex;gap:8px}.review-nav-buttons{align-items:center;display:flex;gap:4px}.review-nav-btn{align-items:center;background:#f0eeff0d;border:1px solid #f0eeff26;border-radius:6px;color:#f0eeffcc;cursor:pointer;display:flex;font-family:inherit;font-size:14px;height:32px;justify-content:center;padding:0;transition:background .15s,opacity .15s;width:36px}.review-nav-btn:hover:not(:disabled){background:#f0eeff1f}.review-nav-btn:disabled{cursor:default;opacity:.3}.review-step-label{font-feature-settings:"tnum";color:#f0eeff99;font-size:13px;font-variant-numeric:tabular-nums;min-width:60px;text-align:center}.review-actions{display:flex;gap:8px}.review-btn-primary{background:#9942f0;border:none;border-radius:8px;color:#fff;cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;padding:8px 24px;transition:opacity .15s}.review-btn-primary:hover{opacity:.85}.review-btn-secondary{background:#0000;border:1px solid #f0eeff33;border-radius:6px;color:#f0eeffb3;cursor:pointer;font-family:inherit;font-size:13px;padding:8px 20px;transition:background .15s}.review-btn-secondary:hover{background:#f0eeff14}.tutorial-mode{display:flex;flex-direction:row;height:100dvh;position:relative;width:100%}.tutorial-sidebar{background:#140824f2;border-right:1px solid #9942f026;display:none;flex-direction:column;flex-shrink:0;height:100dvh;width:240px}.tutorial-sidebar-header{border-bottom:1px solid #9942f01f;flex-shrink:0;padding:18px 20px 12px}.tutorial-sidebar-title{color:#f0eeff80;font-family:Space Grotesk,sans-serif;font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.tutorial-sidebar-scroll{flex:1 1;overflow-y:auto;padding:12px 0 20px;scrollbar-color:#9942f040 #0000;scrollbar-width:thin}.tutorial-sidebar-scroll::-webkit-scrollbar{width:4px}.tutorial-sidebar-scroll::-webkit-scrollbar-thumb{background:#9942f040;border-radius:4px}.tutorial-tree-nav{display:flex;flex-direction:column;gap:4px}.tutorial-tree-tier{padding:0 12px}.tutorial-puzzles-cta{background:#9942f029;border:1px solid #9942f073;border-radius:8px;color:#e8e2f5;cursor:pointer;display:block;font-family:inherit;font-size:13px;font-weight:600;letter-spacing:.06em;margin:4px 8px 0;padding:10px 12px;text-align:left;text-transform:uppercase;width:calc(100% - 16px)}.tutorial-puzzles-cta:first-of-type{margin-top:18px}.tutorial-puzzles-cta:last-of-type{margin-bottom:80px}.tutorial-puzzles-cta:hover{background:#9942f047;border-color:#9942f0}.tutorial-tree-tier-header{color:#f0eeff8c;font-family:Space Grotesk,sans-serif;font-size:12px;font-weight:700;letter-spacing:.06em;padding:12px 8px 6px;text-transform:uppercase}.tutorial-tree-tier-divider{background:#9942f01f;height:1px;margin:0 8px 4px}.tutorial-tree-lessons{display:flex;flex-direction:column;gap:1px;list-style:none;margin:0;padding:0}.tutorial-tree-lesson{align-items:center;background:#0000;border:none;border-radius:6px;color:#f0eeff99;cursor:pointer;display:flex;font-family:Space Grotesk,sans-serif;font-size:13px;font-weight:500;gap:8px;line-height:1.3;padding:8px 10px;text-align:left;transition:background .15s,color .15s;width:100%}.tutorial-tree-lesson:hover:not(.active){background:#9942f014;color:#f0eeffcc}.tutorial-tree-lesson.active{background:#9942f038;color:#f0eeff}.tutorial-tree-lesson.complete:not(.active){color:#f0eeff73}.tutorial-tree-lesson-num{font-feature-settings:"tnum";color:#9942f099;flex-shrink:0;font-size:11px;font-variant-numeric:tabular-nums;font-weight:700;min-width:24px}.tutorial-tree-lesson.active .tutorial-tree-lesson-num{color:#9942f0e6}.tutorial-tree-lesson-title{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tutorial-tree-check{color:#66e08c;flex-shrink:0;font-size:12px;font-weight:700}.tutorial-tree-progress{font-feature-settings:"tnum";background:#9942f01f;border-radius:8px;color:#9942f0b3;flex-shrink:0;font-size:10px;font-variant-numeric:tabular-nums;font-weight:600;padding:1px 6px}.tutorial-main{display:flex;flex:1 1;flex-direction:column;height:100dvh;min-width:0;position:relative}.tutorial-exit{align-items:center;background:#f0eeff0a;border:1px solid #f0eeff1f;border-radius:8px;color:#f0eeff73;cursor:pointer;display:flex;height:32px;justify-content:center;position:absolute;right:12px;top:12px;transition:background .15s,color .15s;width:32px;z-index:10}.tutorial-exit:hover{background:#f0eeff1a;color:#f0eeffe6}.tutorial-content{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:12px;margin:0 auto;max-width:820px;overflow-y:auto;padding:14px 24px 12px;width:100%}.tutorial-intro{background:#9942f00f;border:1px solid #9942f026;border-radius:8px;margin-bottom:12px;padding:14px 16px 12px}.tutorial-intro-text{color:#f0eeffa6;font-size:13px;line-height:1.55;margin:0 0 10px}.tutorial-intro-dismiss{background:#0000;border:1px solid #9942f040;border-radius:4px;color:#f0eeff80;cursor:pointer;display:inline-block;font-family:Space Grotesk,sans-serif;font-size:12px;padding:4px 14px;transition:background .15s,color .15s}.tutorial-intro-dismiss:hover{background:#9942f01a;color:#f0eeffcc}.tutorial-step-header{align-items:center;display:flex;gap:10px;width:100%}.tutorial-step-label{color:#f0eeff59;font-family:Space Grotesk,sans-serif;font-size:11px;font-weight:600;letter-spacing:.05em;white-space:nowrap}.tutorial-dots{display:flex;gap:6px}.tutorial-dot{background:#9942f033;border-radius:50%;height:8px;transition:background .2s;width:8px}.tutorial-dot.active{background:#9942f0;box-shadow:0 0 6px #9942f080}.tutorial-dot.done{background:#9942f080}.tutorial-instruction{background:#1a0b2e80;border:1px solid #9942f01f;border-radius:10px;color:#f0eeffe6;font-family:Space Grotesk,sans-serif;font-size:15px;line-height:1.5;padding:12px 16px;position:relative;text-align:center;white-space:pre-line;width:100%;z-index:2}.tutorial-instruction.puzzle{background:#2e1f1480;border-color:#ffe06640}.tutorial-badge{border-radius:4px;display:inline-block;font-family:Space Grotesk,sans-serif;font-size:10px;font-weight:700;letter-spacing:.1em;margin-right:8px;padding:2px 8px;text-transform:uppercase;vertical-align:middle}.tutorial-badge.puzzle{background:#ffe06633;border:1px solid #ffe0664d;color:#ffe066}.tutorial-badge.solved{background:#66e08c33;border:1px solid #66e08c4d;color:#66e08c}.tutorial-board{display:flex;justify-content:center;width:100%}.tutorial-feedback{animation:feedbackIn .2s ease;border-radius:8px;font-family:Space Grotesk,sans-serif;font-size:14px;padding:8px 16px;text-align:center}@keyframes feedbackIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tutorial-feedback.correct{background:#66e08c26;border:1px solid #66e08c40;color:#66e08c}.tutorial-feedback.wrong{background:#e0666626;border:1px solid #e0666640;color:#e06666}.tutorial-feedback.hint{background:#ffe0661a;border:1px solid #ffe06633;color:#ffe066}.tutorial-hint-btn{background:#0000;border:1px solid #ffe0664d;border-radius:6px;color:#ffe066b3;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:12px;padding:4px 12px}.tutorial-hint-btn:hover{background:#ffe0661a}.tutorial-bottom{background:linear-gradient(180deg,#19102200,#191022 12px);flex-direction:column;flex-shrink:0;gap:8px;margin:0 auto;max-width:600px;padding:10px 24px 16px}.tutorial-bottom,.tutorial-nav{align-items:center;display:flex;width:100%}.tutorial-nav{gap:12px;justify-content:space-between}.tutorial-nav-btn{background:#0000;border:1px solid #9942f04d;border-radius:8px;color:#f0eeffb3;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:13px;padding:8px 16px;transition:background .15s}.tutorial-nav-btn:hover:not(:disabled){background:#9942f026}.tutorial-nav-btn:disabled{cursor:default;opacity:.25}.tutorial-nav-btn.primary{background:#9942f04d;border-color:#9942f0;color:#f0eeff;font-weight:600}.tutorial-nav-btn.primary:hover{background:#9942f080}.tutorial-drawer-backdrop,.tutorial-drawer-toggle{display:none}@media (min-width:769px){.tutorial-sidebar{display:flex}}@media (max-width:768px){.tutorial-mode{flex-direction:column}.tutorial-sidebar{display:none}.tutorial-content{gap:10px;padding:10px 12px 8px}.tutorial-bottom{padding:8px 12px 12px}.tutorial-drawer-toggle{align-items:center;background:#140824f2;border:none;border-top:1px solid #9942f026;color:#f0eeffb3;cursor:pointer;display:flex;flex-shrink:0;font-family:Space Grotesk,sans-serif;font-size:13px;font-weight:600;padding:10px 16px;transition:background .15s;width:100%}.tutorial-drawer-toggle:hover{background:#140824;color:#f0eeffe6}.tutorial-drawer-backdrop{align-items:flex-end;animation:drawerFadeIn .2s ease;background:#0009;display:flex;inset:0;position:fixed;z-index:100}@keyframes drawerFadeIn{0%{opacity:0}to{opacity:1}}.tutorial-drawer{animation:drawerSlideUp .25s ease;background:#140824fa;border-radius:16px 16px 0 0;border-top:1px solid #9942f040;display:flex;flex-direction:column;max-height:70dvh;width:100%}@keyframes drawerSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.tutorial-drawer-header{align-items:center;border-bottom:1px solid #9942f01f;display:flex;flex-shrink:0;justify-content:space-between;padding:16px 20px 12px}.tutorial-drawer-title{color:#f0eeffb3;font-family:Space Grotesk,sans-serif;font-size:14px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.tutorial-drawer-close{align-items:center;background:#0000;border:1px solid #f0eeff1a;border-radius:8px;color:#f0eeff80;cursor:pointer;display:flex;height:30px;justify-content:center;transition:background .15s;width:30px}.tutorial-drawer-close:hover{background:#f0eeff14;color:#f0eeffe6}.tutorial-drawer-scroll{flex:1 1;overflow-y:auto;padding:8px 0 24px}.tutorial-exit{height:28px;right:8px;top:8px;width:28px}.tutorial-instruction{font-size:14px;padding:10px 12px}.tutorial-nav-btn{font-size:12px;padding:6px 12px}.tutorial-drawer-toggle{padding-bottom:80px}}.game-hexes{background:#191022;font-family:Space Grotesk,sans-serif;min-height:100dvh}.game-hexes .start-screen{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1a0b2ed9;border:1px solid #9942f02e;border-radius:20px;margin:0 auto;max-width:440px;padding:40px}.game-hexes h1{color:#f0eeff;font-size:32px;font-weight:700;letter-spacing:.25em;margin-bottom:8px;text-transform:uppercase}.game-hexes .start-desc{color:#f0eeff99;margin-bottom:6px}.game-hexes .start-rule{color:#f0eeff66;font-size:13px;margin-bottom:24px}.game-hexes .start-checkbox{color:#f0eeff;display:block;margin-bottom:16px}.game-hexes .difficulty-row{align-items:center;display:flex;gap:8px;justify-content:center;margin-bottom:16px}.game-hexes .difficulty-row label{color:#f0eeff80;margin-right:8px}.game-hexes .diff-btn{background:#9942f014;border:1px solid #9942f02e;border-radius:6px;color:#f0eeffb3;cursor:pointer;font-family:Space Grotesk,sans-serif;margin:0 4px;padding:4px 12px;transition:background .2s}.game-hexes .diff-btn.active{background:#9942f059;border-color:#9942f099;color:#f0eeff}.game-hexes .btn-primary{background:#9942f0;border:none;border-radius:12px;color:#fff;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:16px;margin-top:8px;padding:12px 32px;transition:background .2s}.game-hexes .btn-primary:hover{background:#7a2fd4}.game-hexes .status-bar{color:#f0eeff;font-size:18px;font-weight:600;letter-spacing:.05em}.game-hexes .swap-hint{color:#f0eeff80;font-size:12px}.game-hexes .swap-btn{background:#4f7fd9;border:none;border-radius:6px;color:#fff;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:13px;padding:6px 18px}.game-hexes .legend{color:#f0eeff73;display:flex;font-size:13px;gap:24px}.game-hexes .game-controls{display:flex;gap:12px;justify-content:center;padding:16px}.game-hexes .ctrl-btn{background:#9942f01a;border:1px solid #9942f033;border-radius:999px;color:#f0eeffcc;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:13px;font-weight:600;letter-spacing:.1em;padding:10px 20px;transition:background .2s}.game-hexes .ctrl-btn:hover{background:#9942f033}.game-hexes .ctrl-btn:disabled{cursor:default;opacity:.35}.game-hexes .game-menu-overlay{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000b3;display:flex;inset:0;justify-content:center;position:fixed;z-index:200}.game-hexes .game-menu-panel{background:#1a0b2ef2;border:1px solid #9942f04d;border-radius:16px;display:flex;flex-direction:column;gap:12px;min-width:240px;padding:32px}.game-hexes .game-menu-panel button{background:#9942f01a;border:1px solid #9942f033;border-radius:8px;color:#f0eeff;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:14px;padding:12px 24px;transition:background .2s}.game-hexes .game-menu-panel button:hover{background:#9942f040}.game-fives{background:#191022;font-family:Space Grotesk,sans-serif;min-height:100dvh}.game-fives .start-screen{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1a0b2ed9;border:1px solid #9942f02e;border-radius:20px;margin:0 auto;max-width:440px;padding:40px}.game-fives h1{color:#f0eeff;font-size:32px;font-weight:700;letter-spacing:.25em;margin-bottom:8px;text-transform:uppercase}.game-fives .start-desc{color:#f0eeff99;margin-bottom:6px}.game-fives .start-rule{color:#f0eeff66;font-size:13px;margin-bottom:24px}.game-fives .color-picker-label{color:#9942f0cc;font-size:13px;margin-bottom:6px}.game-fives .start-checkbox{color:#f0eeff;display:block;margin-bottom:16px}.game-fives .difficulty-row{align-items:center;display:flex;gap:8px;justify-content:center;margin-bottom:16px}.game-fives .difficulty-row label{color:#f0eeff80;margin-right:8px}.game-fives .diff-btn{background:#9942f014;border:1px solid #9942f02e;border-radius:6px;color:#f0eeffb3;cursor:pointer;font-family:Space Grotesk,sans-serif;margin:0 4px;padding:4px 12px;transition:background .2s}.game-fives .diff-btn.active{background:#9942f059;border-color:#9942f099;color:#f0eeff}.game-fives .btn-primary{background:#9942f0;border:none;border-radius:12px;color:#fff;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:16px;margin-top:8px;padding:12px 32px;transition:background .2s}.game-fives .btn-primary:hover{background:#7a2fd4}.game-fives .status-bar{color:#f0eeff;font-size:18px;font-weight:600;letter-spacing:.05em}.game-fives .game-controls{display:flex;gap:12px;justify-content:center;padding:16px}.game-fives .ctrl-btn{background:#9942f01a;border:1px solid #9942f033;border-radius:999px;color:#f0eeffcc;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:13px;font-weight:600;letter-spacing:.1em;padding:10px 20px;transition:background .2s}.game-fives .ctrl-btn:hover{background:#9942f033}.game-fives .ctrl-btn:disabled{cursor:default;opacity:.35}.game-fives .game-menu-overlay{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000b3;display:flex;inset:0;justify-content:center;position:fixed;z-index:200}.game-fives .game-menu-panel{background:#1a0b2ef2;border:1px solid #9942f04d;border-radius:16px;display:flex;flex-direction:column;gap:12px;min-width:240px;padding:32px}.game-fives .game-menu-panel button{background:#9942f01a;border:1px solid #9942f033;border-radius:8px;color:#f0eeff;cursor:pointer;font-family:Space Grotesk,sans-serif;font-size:14px;padding:12px 24px;transition:background .2s}.game-fives .game-menu-panel button:hover{background:#9942f040}