@import url(https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap);*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#191022;--surface:#9942f014;--surface-hover:#9942f026;--primary:#9942f0;--primary-dim:#9942f040;--text:#f0eeff;--text-secondary:#f0eeff80;--border:#9942f02e;--font:"Space Grotesk",sans-serif;--radius:12px;--radius-lg:20px}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;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}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:8px;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:8px;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:#0a051499;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:6px;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:#9942f059;color:var(--text)}.nav-drawer-item-icon{align-items:center;background:#ffffff12;border-radius:8px;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 20px 0}.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:6px;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:10px;width:100%}.game-guide-slide{background:#1a0b2e99;border:1px solid #9942f026;border-radius:10px;display:flex;justify-content:center;padding:12px;width:100%}.game-guide-slide svg{display:block;height:auto;max-width:260px;width:100%}.game-guide-caption{align-items:center;color:#f0eeffd9;display:flex;font-size:13px;line-height:1.4;min-height:36px;text-align:center}.game-guide-nav{align-items:center;display:flex;gap:12px}.game-guide-arrow{align-items:center;background:#0000;border:1px solid #9942f04d;border-radius:50%;color:#f0eeffb3;cursor:pointer;display:flex;font-size:18px;height:28px;justify-content:center;line-height:1;padding:0;transition:background .15s;width:28px}.game-guide-arrow:hover:not(:disabled){background:#9942f033}.game-guide-arrow:disabled{cursor:default;opacity:.25}.game-guide-dots{display:flex;gap:6px}.game-guide-dot{background:#9942f040;border:none;border-radius:50%;cursor:pointer;height:8px;padding:0;transition:background .15s;width:8px}.game-guide-dot.active{background:#9942f0}.game-guide-fab{align-items:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:#1e0f32e6;border:1px solid #9942f066;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:#9942f04d;border-color:#9942f0}.game-guide-overlay{align-items:center;animation:guideIn .2s ease;background:#0a051499;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:#1e0f32;border:1px solid #9942f033;border-radius:14px;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:#9942f0b3;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:6px;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:#0a051499;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:#1e0f32;border:1px solid #9942f033;border-radius:14px;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:6px;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:8px;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 #9942f04d;border-radius:8px;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:#9942f01a;border-color:#9942f080}.bug-report-preview{display:inline-block;margin-top:8px;position:relative}.bug-report-preview img{border:1px solid #9942f033;border-radius:8px;max-height:120px;max-width:100%}.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-submit{background:var(--primary);border:none;border-radius:10px;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 #9942f033;border-radius:50%;border-top:3px solid 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-secondary);font-size:11px;line-height:1.5;margin:24px auto 32px;max-width:600px;opacity:.5;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 #9942f059,0 0 0 1px #9942f033;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:#0a0514b3;display:flex;inset:0;justify-content:center;position:fixed;z-index:300}.auth-modal{background:#1a0b2ef5;border:1px solid var(--border);border-radius:16px;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:8px;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:8px;color:#f06060;font-size:13px;padding:10px 12px}.auth-btn{border:none;border-radius:8px;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:8px;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-view-toggle-wrap{align-items:flex-start;display:flex;flex-direction:column;gap:6px;margin-bottom:32px}.library-view-toggle-label{color:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.06em;opacity:.6;text-transform:uppercase}.library-view-toggle{background:var(--surface);border:1px solid var(--border);border-radius:8px;display:inline-flex;gap:2px;padding:3px}.library-view-toggle-btn{background:#0000;border:none;border-radius:6px;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-subsection{border-left:2px solid var(--border);margin-bottom:16px;margin-left:12px;padding-left:12px}.library-subsection-label{color:var(--text-secondary);font-size:12px;font-weight:600;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.library-search-wrap{margin-bottom:40px;position:relative}.library-search-icon{stroke:var(--text-secondary);fill:none;stroke-width:2;stroke-linecap:round;height:18px;left:14px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);width:18px}.library-search{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-family:var(--font);font-size:14px;outline:none;padding:12px 16px 12px 42px;transition:border-color .2s,background .2s;width:100%}.library-search::placeholder{color:var(--text-secondary)}.library-search:focus{background:#9942f01f;border-color:var(--primary)}.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:4px;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%,#9942f01f 0,#0000 70%);inset:0;pointer-events:none;position:absolute}.library-card-icon{color:var(--primary);filter:drop-shadow(0 0 12px rgba(153,66,240,.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(153,66,240,.7));transform:translate(-50%,-70%)}.library-card-complexity{border-radius:4px;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-modal-overlay{align-items:center;animation:fadeIn .2s ease;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);background:#0a0514b3;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:400}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.library-modal{animation:modalSlideUp .3s cubic-bezier(.175,.885,.32,1.275);background:#1e0f32;border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 24px 60px #00000080;max-width:400px;padding:28px;width:100%}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.library-modal-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.library-modal-game-info{align-items:center;display:flex;gap:14px}.library-modal-icon{color:var(--primary);font-size:36px;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 40;line-height:1}.library-modal-name{color:var(--text);font-size:20px;font-weight:700}.library-modal-subtitle{color:var(--text-secondary);font-size:13px}.library-modal-close{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);display:flex;flex-shrink:0;font-size:18px;height:32px;justify-content:center;transition:background .2s,color .2s;width:32px}.library-modal-close:hover{background:var(--surface-hover);color:var(--text)}.library-modal-complexity{align-items:baseline;border-radius:6px;display:flex;font-size:11px;gap:4px;margin-bottom:16px;padding:6px 10px}.library-modal-complexity-label{font-weight:700;letter-spacing:.04em;text-transform:uppercase}.library-modal-complexity-desc{font-weight:400;opacity:.7}.library-modal-complexity.complexity-low{background:#6ee7a014;color:#6ee7a0}.library-modal-complexity.complexity-medium{background:#f0c06014;color:#f0c060}.library-modal-complexity.complexity-high{background:#f0707014;color:#f07070}.library-modal-label{color:var(--text-secondary);font-size:11px;font-weight:700;letter-spacing:.15em;margin-bottom:10px}.library-modal-difficulties{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.library-modal-diff-btn{background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text-secondary);flex:1 1;font-size:13px;font-weight:600;min-width:70px;padding:9px 12px;text-transform:capitalize;transition:background .2s,color .2s,border-color .2s}.library-modal-diff-btn:hover{background:var(--surface-hover);color:var(--text)}.library-modal-diff-btn.selected{background:var(--primary-dim);border-color:var(--primary);color:var(--text)}.library-modal-play-btn{background:var(--primary);border:none;border-radius:var(--radius);color:#fff;font-size:15px;font-weight:700;letter-spacing:.05em;padding:14px;transition:opacity .2s,transform .15s;width:100%}.library-modal-play-btn:hover{opacity:.9;transform:scale(1.02)}.library-modal-play-btn:active{transform:scale(.98)}.library-statespace-explainer{color:var(--text-secondary);font-size:12px;line-height:1.5;margin:0 0 28px;max-width:480px;opacity:.7}.library-card-statespace{background:var(--primary-dim);border-radius:4px;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-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:20px;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:8px;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:4px;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:#9942f01a;border:1px solid #9942f04d;border-radius:6px;color:#f0eeff99;cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;width:28px}.match-replay-btn:hover{background:#9942f040;color:#f0eeff}.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:#9942f00f;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 #9942f059;border-radius:4px;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:#9942f00f;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:8px;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:4px;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 #9942f066;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:20px;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:#9942f00a}.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}