@import "https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800;900&family=JetBrains+Mono:wght@400;500;700&family=Fredoka+One&display=swap";:root{--color-bg:#0f0f1a;--color-surface:#1a1a2e;--color-surface-2:#16213e;--color-surface-3:#0d1b2a;--color-border:#ffffff14;--color-border-accent:#ffb4dc4d;--color-pink:#ff6eb4;--color-pink-light:#ffaad4;--color-pink-dark:#cc4a8a;--color-pink-glow:#ff6eb433;--color-blue:#6eb4ff;--color-blue-light:#aad4ff;--color-purple:#b46eff;--color-purple-light:#d4aaff;--color-success:#6effa8;--color-success-glow:#6effa833;--color-error:#ff6e6e;--color-error-glow:#ff6e6e33;--color-warning:#ffcc6e;--color-xp:gold;--color-text:#f0e6ff;--color-text-muted:#f0e6ff80;--color-text-faint:#f0e6ff40;--font-ui:"Nunito", sans-serif;--font-display:"Fredoka One", cursive;--font-code:"JetBrains Mono", monospace;--sidebar-width:280px;--bottombar-height:64px;--javachan-width:180px;--javachan-height:220px;--topbar-height:56px;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--radius-xl:32px;--radius-full:9999px;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 4px 20px #0006;--shadow-lg:0 8px 40px #0009;--shadow-pink:0 0 20px var(--color-pink-glow), 0 0 60px #ff6eb41a;--shadow-glow:0 0 30px var(--color-pink-glow);--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s ease;--transition-spring:.5s cubic-bezier(.34, 1.56, .64, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-ui);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.6}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-accent);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-pink-dark)}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.text-pink{color:var(--color-pink)}.text-blue{color:var(--color-blue)}.text-muted{color:var(--color-text-muted)}.text-success{color:var(--color-success)}.text-error{color:var(--color-error)}.font-code{font-family:var(--font-code)}.font-display{font-family:var(--font-display)}.sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border-accent);z-index:50;height:100vh;transition:transform var(--transition-slow);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar--open{transform:translate(0)}.sidebar-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.sidebar-title{font-family:var(--font-display);color:var(--color-pink-light);font-size:1.2rem}.sidebar-close{color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;padding:4px 8px;font-size:1rem}.sidebar-close:hover{color:var(--color-text);background:var(--color-border)}.sidebar-nav{flex:1;padding:12px 0;overflow-y:auto}.sidebar-unit{margin-bottom:4px}.sidebar-unit-header{width:100%;color:var(--color-text);cursor:pointer;text-align:left;transition:background var(--transition-fast);font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.05em;background:0 0;border:none;align-items:center;gap:8px;padding:10px 16px;font-size:.8rem;font-weight:700;display:flex}.sidebar-unit-header:hover:not(:disabled){background:var(--color-border)}.sidebar-unit-header--locked{opacity:.4;cursor:not-allowed}.sidebar-unit-icon{text-align:center;flex-shrink:0;width:16px;font-size:.9rem}.sidebar-unit-title{color:var(--color-pink);flex-shrink:0}.sidebar-unit-name{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.sidebar-lessons{padding:0 0 8px;list-style:none}.sidebar-lesson-btn{width:100%;color:var(--color-text-muted);cursor:pointer;text-align:left;font-family:var(--font-ui);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;border-radius:0;align-items:center;gap:10px;padding:8px 16px 8px 36px;font-size:.9rem;display:flex}.sidebar-lesson-btn:hover{background:var(--color-border);color:var(--color-text)}.sidebar-lesson-btn--active{color:var(--color-pink-light);background:var(--color-pink-glow)}.sidebar-lesson-btn--done{color:var(--color-success)}.sidebar-lesson-indicator{text-align:center;flex-shrink:0;width:16px;font-size:.75rem}.xp-display{font-family:var(--font-ui);align-items:center;gap:5px;display:flex}.xp-icon{color:var(--color-xp);font-size:.9rem;animation:2s ease-in-out infinite xp-pulse}.xp-value{color:var(--color-xp);font-size:.95rem;font-weight:800}.xp-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}@keyframes xp-pulse{0%,to{opacity:1}50%{opacity:.6}}.progress-bar-wrapper{flex-direction:column;gap:3px;width:100%;display:flex}.progress-bar-track{background:var(--color-border);border-radius:var(--radius-full);width:100%;height:6px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg, var(--color-pink-dark), var(--color-pink));border-radius:var(--radius-full);height:100%;box-shadow:0 0 8px var(--color-pink-glow);transition:width .6s cubic-bezier(.34,1.56,.64,1)}.progress-bar-label{color:var(--color-text-faint);font-size:.7rem;font-family:var(--font-ui)}.bottombar{background:var(--color-surface);border-top:1px solid var(--color-border);z-index:10;grid-area:bottombar;align-items:center;gap:16px;padding:0 20px;display:flex}.bottombar-left{flex-shrink:0}.bottombar-center{flex:1;min-width:0}.bottombar-right{flex-shrink:0;align-items:center;gap:12px;display:flex}.bottombar-shop-btn{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-full);cursor:pointer;width:34px;height:34px;transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:1.05rem;display:flex}.bottombar-shop-btn:hover{border-color:var(--color-pink);box-shadow:0 0 10px var(--color-pink-glow);transform:translateY(-1px)}.bottombar-level{color:var(--color-text-muted);font-size:.85rem;font-family:var(--font-ui)}.bottombar-level strong{color:var(--color-xp);margin-left:2px;font-size:1rem}.javachan-widget{bottom:calc(var(--bottombar-height) + 8px);width:var(--javachan-width);z-index:20;pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:fixed;right:8px}.javachan-sprite-wrap{pointer-events:none;justify-content:center;align-items:flex-end;width:180px;height:220px;display:flex}.javachan-sprite-img{object-fit:contain;object-position:bottom center;filter:drop-shadow(0 4px 16px #00000080);width:100%;height:100%}.dialogue-bubble{background:var(--color-surface-2);border:1px solid var(--color-border-accent);border-radius:var(--radius-md);pointer-events:all;cursor:pointer;width:max-content;max-width:210px;box-shadow:var(--shadow-md), 0 0 12px #ff6eb41a;text-align:left;font-family:var(--font-ui);background-color:var(--color-surface-2);color:var(--color-text);padding:9px 13px;position:relative}.dialogue-bubble:hover{border-color:var(--color-pink)}.dialogue-bubble p{color:var(--color-text);margin:0;font-size:.81rem;line-height:1.55}.dialogue-tail{border-left:8px solid #0000;border-right:8px solid #0000;border-top:8px solid var(--color-border-accent);width:0;height:0;position:absolute;bottom:-8px;left:50%;transform:translate(-50%)}.dialogue-tail:after{content:"";border-left:7px solid #0000;border-right:7px solid #0000;border-top:7px solid var(--color-surface-2);width:0;height:0;position:absolute;top:-9px;left:50%;transform:translate(-50%)}.domain-expansion{z-index:200;cursor:pointer;background:#0a0805ed;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.domain-glow{pointer-events:none;background:radial-gradient(60% 50% at 50% 60%,#ff78142e 0%,#ff50a014 50%,#0000 80%);position:absolute;inset:0}.domain-content{text-align:center;flex-direction:column;align-items:center;gap:20px;max-width:560px;padding:32px;display:flex;position:relative}.domain-sprite-wrap{justify-content:center;align-items:flex-end;width:300px;height:360px;display:flex}.domain-sprite-img{object-fit:contain;object-position:bottom center;filter:drop-shadow(0 0 40px #ff8c0080)drop-shadow(0 0 80px #ff50a033);width:100%;height:100%}.domain-dialogue{max-width:440px;color:var(--color-text);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#14100ad9;border:1px solid #ff8c0040;padding:18px 26px;font-size:1.05rem;line-height:1.75;box-shadow:0 0 30px #ff78141a}.domain-tap-hint{color:#ffc87866;letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;animation:1.8s ease-in-out infinite domain-blink}@keyframes domain-blink{0%,to{opacity:.25}50%{opacity:1}}.app-layout{grid-template-rows:var(--topbar-height) 1fr var(--bottombar-height);background:var(--color-bg);grid-template-columns:1fr;grid-template-areas:"topbar""main""bottombar";width:100vw;height:100vh;display:grid;position:relative;overflow:hidden}.topbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:10;grid-area:topbar;align-items:center;gap:12px;padding:0 20px;display:flex}.hamburger-btn{cursor:pointer;border-radius:var(--radius-sm);width:36px;height:36px;transition:background var(--transition-fast);background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;padding:6px;display:flex}.hamburger-btn:hover{background:var(--color-border)}.hamburger-btn span{background:var(--color-text);width:100%;height:2px;transition:opacity var(--transition-fast);border-radius:2px;display:block}.topbar-title{font-family:var(--font-display);letter-spacing:.02em;font-size:1.4rem}.topbar-title-main{color:var(--color-text)}.topbar-title-accent{color:var(--color-pink)}.main-content{padding-right:calc(var(--javachan-width) + 16px);grid-area:main;position:relative;overflow:hidden auto}.sidebar-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:40;background:#0009;animation:.2s fadeIn;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.home-page{flex-direction:column;gap:48px;max-width:720px;padding:40px 32px;display:flex}.home-hero{flex-direction:column;gap:16px;display:flex}.home-title{font-family:var(--font-display);color:var(--color-text);font-size:2.2rem;line-height:1.2}.home-title-accent{color:var(--color-pink)}.home-subtitle{color:var(--color-text-muted);font-size:1rem;line-height:1.7}.home-actions{margin-top:8px}.home-btn-primary{padding:14px 32px;font-size:1rem}.home-progress-note{color:var(--color-text-faint);font-size:.82rem}.home-shop-banner{background:var(--color-surface);border:1px solid var(--color-border-accent);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:14px;padding:14px 18px;display:flex}.home-shop-banner:hover{background:var(--color-pink-glow);border-color:var(--color-pink);transform:translateY(-1px)}.home-shop-banner-icon{flex-shrink:0;font-size:1.6rem}.home-shop-banner-text{flex-direction:column;flex:1;gap:2px;display:flex}.home-shop-banner-title{font-family:var(--font-display);color:var(--color-text);font-size:.95rem}.home-shop-banner-sub{color:var(--color-text-muted);font-size:.76rem}.home-shop-banner-arrow{color:var(--color-pink);flex-shrink:0;font-size:1.1rem}.home-section-title{font-family:var(--font-display);color:var(--color-pink-light);text-transform:uppercase;letter-spacing:.06em;margin-bottom:16px;font-size:1.1rem}.home-unit-list{flex-direction:column;gap:8px;display:flex}.home-unit-card{border-radius:var(--radius-md);border:1px solid var(--color-border);transition:all var(--transition-fast);align-items:center;gap:16px;padding:14px 18px;display:flex}.home-unit-card--active{cursor:pointer;border-color:var(--color-border-accent)}.home-unit-card--active:hover{background:var(--color-pink-glow);border-color:var(--color-pink)}.home-unit-card--locked{opacity:.4;cursor:not-allowed}.home-unit-number{text-transform:uppercase;letter-spacing:.08em;color:var(--color-pink);flex-shrink:0;width:52px;font-size:.72rem;font-weight:800}.home-unit-title{color:var(--color-text);flex:1;font-size:.95rem}.home-unit-meta{color:var(--color-text-muted);flex-shrink:0;font-size:.78rem}.code-block{background:var(--color-surface-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-code);font-size:.88rem;overflow:hidden}.code-block-label{text-transform:uppercase;letter-spacing:.08em;background:var(--color-border);color:var(--color-text-muted);font-size:.72rem;font-weight:700;font-family:var(--font-ui);padding:6px 14px}.code-block-pre{white-space:pre;margin:0;padding:14px 0;overflow-x:auto}.code-line{align-items:baseline;min-height:1.6em;padding:0 2px;display:flex}.code-line:hover{background:#ffffff08}.code-line-number{text-align:right;width:36px;color:var(--color-text-faint);-webkit-user-select:none;user-select:none;flex-shrink:0;padding-right:16px;font-size:.78rem}.code-line-content{padding-right:20px}.token-keyword{color:#79b8ff;font-weight:600}.token-type{color:#9ecbff}.token-string{color:#85e89d}.token-comment{color:#6a737d;font-style:italic}.token-number{color:#ffab70}.token-method{color:var(--color-pink-light)}.token-annotation{color:var(--color-purple-light)}.token-class-name{color:#f8e3a1}.phase-indicator{align-items:center;gap:0;padding:0 4px;display:flex;position:relative}.phase-connectors{pointer-events:none;z-index:0;display:flex;position:absolute;top:50%;left:0;right:0}.phase-connector{background:var(--color-border);height:2px;transition:background var(--transition-base);flex:1;margin:0 44px}.phase-connector--done{background:var(--color-pink-dark)}.phase-tab{z-index:1;cursor:pointer;transition:opacity var(--transition-fast);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:4px;padding:8px 16px;display:flex;position:relative}.phase-tab:disabled{cursor:not-allowed;opacity:.35}.phase-tab-icon{background:var(--color-surface);border:2px solid var(--color-border);width:32px;height:32px;color:var(--color-text-muted);transition:all var(--transition-base);border-radius:50%;justify-content:center;align-items:center;font-size:.85rem;display:flex}.phase-tab--active .phase-tab-icon{border-color:var(--color-pink);background:var(--color-pink-glow);color:var(--color-pink-light);box-shadow:var(--shadow-pink)}.phase-tab--done .phase-tab-icon{border-color:var(--color-success);background:var(--color-success-glow);color:var(--color-success)}.phase-tab-label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);white-space:nowrap;font-size:.7rem;font-weight:700}.phase-tab--active .phase-tab-label{color:var(--color-pink-light)}.phase-tab--done .phase-tab-label{color:var(--color-success)}.lesson-canvas{flex-direction:column;gap:24px;min-height:100%;padding:24px 28px;display:flex}.lesson-phase{flex-direction:column;gap:20px;display:flex}.phase-heading{font-family:var(--font-display);letter-spacing:.02em;font-size:1.3rem}.phase-heading--work{color:var(--color-success)}.phase-heading--break{color:var(--color-error)}.phase-heading--try{color:var(--color-pink-light)}.phase-explanation,.phase-prompt{color:var(--color-text);white-space:pre-wrap;font-size:.95rem;line-height:1.8}.output-block{background:var(--color-surface-3);border:1px solid var(--color-success);border-radius:var(--radius-md);overflow:hidden}.output-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-success);font-size:.72rem;font-weight:700;font-family:var(--font-ui);background:#6effa81a;padding:5px 14px;display:block}.output-block pre{font-family:var(--font-code);color:var(--color-success);margin:0;padding:12px 16px;font-size:.88rem}.error-block{background:var(--color-surface-3);border:1px solid var(--color-error);border-radius:var(--radius-md);overflow:hidden}.error-label{text-transform:uppercase;letter-spacing:.08em;background:var(--color-error-glow);color:var(--color-error);font-size:.72rem;font-weight:700;font-family:var(--font-ui);padding:5px 14px;display:block}.error-block pre{font-family:var(--font-code);color:var(--color-error);white-space:pre-wrap;margin:0;padding:12px 16px;font-size:.85rem}.solution-block{border:1px solid var(--color-warning);border-radius:var(--radius-md);overflow:hidden}.solution-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-warning);font-size:.72rem;font-weight:700;font-family:var(--font-ui);background:#ffcc6e1a;padding:6px 14px;display:block}.code-editor{background:var(--color-surface-3);border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;min-height:160px;font-family:var(--font-code);color:var(--color-text);resize:vertical;transition:border-color var(--transition-fast);outline:none;padding:14px 16px;font-size:.9rem;line-height:1.6}.code-editor:focus{border-color:var(--color-pink);box-shadow:0 0 0 2px var(--color-pink-glow)}.mcq-input{background:var(--color-surface-3);border:1px solid var(--color-border);border-radius:var(--radius-md);width:80px;font-family:var(--font-code);color:var(--color-text);text-align:center;text-transform:uppercase;transition:border-color var(--transition-fast);outline:none;padding:10px 16px;font-size:1.1rem}.mcq-input:focus{border-color:var(--color-pink)}.validation-feedback{border-radius:var(--radius-md);padding:10px 16px;font-size:.9rem;font-weight:600}.validation-feedback--pass{background:var(--color-success-glow);border:1px solid var(--color-success);color:var(--color-success)}.validation-feedback--fail{background:var(--color-error-glow);border:1px solid var(--color-error);color:var(--color-error)}.attempt-counter{color:var(--color-text-muted);font-size:.78rem}.phase3-actions{flex-wrap:wrap;gap:12px;display:flex}.btn{border-radius:var(--radius-md);font-family:var(--font-ui);cursor:pointer;transition:all var(--transition-fast);border:none;align-self:flex-start;padding:10px 22px;font-size:.9rem;font-weight:700}.btn-primary{background:linear-gradient(135deg, var(--color-pink-dark), var(--color-pink));color:#fff;box-shadow:0 2px 12px var(--color-pink-glow)}.btn-primary:hover{box-shadow:0 4px 20px var(--color-pink-glow);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-ghost{color:var(--color-text-muted);border:1px solid var(--color-border);background:0 0}.btn-ghost:hover{color:var(--color-text);border-color:var(--color-text-muted);background:var(--color-border)}.lesson-page{flex-direction:column;min-height:100%;display:flex}.lesson-page-header{border-bottom:1px solid var(--color-border);align-items:center;gap:16px;padding:16px 28px;display:flex}.lesson-back-btn{flex-shrink:0;padding:6px 14px;font-size:.82rem}.lesson-page-meta{align-items:center;gap:12px;min-width:0;display:flex}.lesson-id-badge{font-family:var(--font-code);background:var(--color-pink-glow);color:var(--color-pink-light);border-radius:var(--radius-full);border:1px solid var(--color-border-accent);flex-shrink:0;padding:3px 10px;font-size:.75rem}.lesson-title{font-family:var(--font-display);color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-size:1.15rem;overflow:hidden}.lesson-page-state{color:var(--color-text-muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:80px 32px;display:flex}.lesson-error{color:var(--color-error);font-size:.95rem}.loading-spinner{border:3px solid var(--color-border);border-top-color:var(--color-pink);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.unit-page{flex-direction:column;gap:32px;padding:32px 28px;display:flex}.unit-page-header{align-items:flex-start;gap:20px;display:flex}.unit-page-badge{text-transform:uppercase;letter-spacing:.08em;color:var(--color-pink);font-size:.72rem;font-weight:800}.unit-page-title{font-family:var(--font-display);color:var(--color-text);margin-top:4px;font-size:1.4rem}.unit-page-progress{color:var(--color-text-muted);margin-top:6px;font-size:.82rem}.unit-lessons-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;display:grid}.unit-lesson-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);font-family:var(--font-ui);flex-direction:column;align-items:center;gap:6px;padding:16px 12px;display:flex}.unit-lesson-card:hover{border-color:var(--color-pink);background:var(--color-pink-glow)}.unit-lesson-card--done{border-color:var(--color-success);background:var(--color-success-glow)}.unit-lesson-check{color:var(--color-text-muted);font-size:1rem}.unit-lesson-card--done .unit-lesson-check{color:var(--color-success)}.unit-lesson-id{color:var(--color-text);font-size:.82rem;font-weight:700}.unit-page-state{color:var(--color-text-muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:80px;display:flex}.shop-page{flex-direction:column;gap:32px;max-width:880px;padding:32px 32px 64px;display:flex}.shop-header{align-items:flex-start;gap:18px;display:flex}.shop-title{font-family:var(--font-display);color:var(--color-text);margin-bottom:4px;font-size:1.6rem}.shop-subtitle{color:var(--color-text-muted);max-width:480px;font-size:.88rem;line-height:1.6}.shop-level-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-direction:column;gap:8px;padding:16px 18px;display:flex}.shop-level-row{align-items:center;gap:14px;display:flex}.shop-level-badge{font-family:var(--font-display);color:var(--color-bg);background:linear-gradient(135deg, var(--color-xp), #fa0);border-radius:var(--radius-full);flex-shrink:0;padding:4px 12px;font-size:.95rem}.shop-level-count{color:var(--color-text-faint);align-self:flex-end;font-size:.74rem}.shop-section{flex-direction:column;gap:14px;display:flex}.shop-section-title{font-family:var(--font-display);color:var(--color-pink-light);text-transform:uppercase;letter-spacing:.06em;font-size:1.05rem}.shop-section-note{color:var(--color-text-faint);margin-top:-10px;font-size:.78rem;font-style:italic}.shop-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;display:grid}.shop-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;display:flex;overflow:hidden}.shop-card:not(.shop-card--locked):hover{border-color:var(--color-border-accent);box-shadow:var(--shadow-md)}.shop-card--equipped{border-color:var(--color-pink);box-shadow:var(--shadow-pink)}.shop-card--locked{opacity:.55}.shop-card-thumb{justify-content:center;align-items:center;height:130px;display:flex;position:relative;overflow:hidden}.shop-card-emoji{filter:drop-shadow(0 2px 8px #0006);font-size:2.4rem}.shop-card-outfit-preview{object-fit:contain;object-position:bottom center;height:150%;transition:filter var(--transition-fast)}.shop-card-lock{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#0a080c99;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex;position:absolute;inset:0}.shop-card-lock-icon{font-size:1.4rem}.shop-card-lock-label{color:var(--color-text);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem;font-weight:700}.shop-card-equipped-badge{color:var(--color-bg);background:var(--color-pink-light);border-radius:var(--radius-full);padding:3px 8px;font-size:.65rem;font-weight:800;position:absolute;top:8px;right:8px}.shop-card-body{flex-direction:column;flex:1;gap:4px;padding:12px 14px 4px;display:flex}.shop-card-name{color:var(--color-text);font-size:.88rem;font-weight:700}.shop-card-desc{color:var(--color-text-muted);font-size:.74rem;line-height:1.5}.shop-card-btn{text-align:center;align-self:stretch;margin:12px 14px 14px;padding:9px 14px;font-size:.8rem}.shop-card-btn:disabled{cursor:not-allowed;opacity:.6}.shop-card--dl .shop-card-thumb{position:relative}.shop-card-coming-soon{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-faint);border-radius:var(--radius-full);white-space:nowrap;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a080c8c;padding:3px 10px;font-size:.6rem;font-weight:800;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.shop-toast{left:50%;bottom:calc(var(--bottombar-height) + 20px);background:var(--color-surface-2);border:1px solid var(--color-pink);color:var(--color-text);border-radius:var(--radius-full);box-shadow:var(--shadow-pink);z-index:60;pointer-events:none;padding:10px 20px;font-size:.85rem;font-weight:600;position:fixed}
