/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.bottom-full{bottom:100%}.z-2{z-index:2}.z-3{z-index:3}.z-10{z-index:10}.z-20{z-index:20}.z-25{z-index:25}.z-40{z-index:40}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.mx-auto{margin-inline:auto}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-\[30\%\]{height:30%}.h-\[40\%\]{height:40%}.h-\[45\%\]{height:45%}.h-\[50\%\]{height:50%}.h-\[60\%\]{height:60%}.h-\[75\%\]{height:75%}.h-\[90\%\]{height:90%}.h-full{height:100%}.min-h-\[44px\]{min-height:44px}.min-h-\[180px\]{min-height:180px}.min-h-screen{min-height:100vh}.w-full{width:100%}.max-w-\[448px\]{max-width:448px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.-rotate-12{rotate:-12deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-full{border-radius:3.40282e+38px}.rounded-t-\[3rem\]{border-top-left-radius:3rem;border-top-right-radius:3rem}.rounded-t-full{border-top-left-radius:3.40282e+38px;border-top-right-radius:3.40282e+38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-none{--tw-border-style:none;border-style:none}.border-transparent{border-color:#0000}.bg-transparent{background-color:#0000}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab}.bg-gradient-to-br,.bg-gradient-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.pb-\[max\(8px\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(8px,env(safe-area-inset-bottom))}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-\[\'Plus_Jakarta_Sans\'\]{font-family:Plus Jakarta Sans}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[20px\]{font-size:20px}.whitespace-pre-line{white-space:pre-line}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-60{opacity:.6}.opacity-90{opacity:.9}.opacity-\[0\.03\]{opacity:.03}.shadow-\[0_-8px_30px_rgb\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 -8px 30px var(--tw-shadow-color,#0000000a)}.shadow-\[0_-8px_30px_rgb\(0\,0\,0\,0\.04\)\],.shadow-\[0_0_12px_rgba\(0\,105\,71\,0\.3\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(0\,105\,71\,0\.3\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,#0069474d)}.shadow-\[0_8px_30px_rgb\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#0000000a)}.shadow-\[0_20px_50px_rgba\(0\,54\,42\,0\.08\)\],.shadow-\[0_8px_30px_rgb\(0\,0\,0\,0\.04\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_50px_rgba\(0\,54\,42\,0\.08\)\]{--tw-shadow:0 20px 50px var(--tw-shadow-color,#00362a14)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (hover:hover){.group-hover\:scale-125:is(:where(.group):hover *){--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:rotate-6:is(:where(.group):hover *){rotate:6deg}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:translate-y-\[-4px\]:hover{--tw-translate-y:-4px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-\[0\.97\]:active{scale:.97}*{box-sizing:border-box;margin:0;padding:0}:root,[data-theme=light]{--bg:#d8fff0;--bg2:#bffee7;--card:#ffffffd9;--card-solid:#fff;--border:#81b8a540;--border-solid:#81b8a5;--primary:#006947;--primary-light:#0069471a;--primary-dark:#005a3c;--primary-glow:#00694738;--primary-gradient:linear-gradient(135deg,#006947,#69f6b8);--primary-container:#69f6b8;--accent:#006576;--accent-light:#0065761a;--secondary-container:#65e1ff;--on-secondary-container:#004f5d;--tertiary:#815100;--tertiary-container:#f8a010;--on-tertiary-container:#4a2c00;--surface-container-low:#bffee7;--surface-container:#b2f6de;--surface-container-high:#a7f1d8;--surface-container-highest:#9decd2;--outline-variant:#81b8a5;--text:#00362a;--text-sec:#2f6555;--text-muted:#4c8170;--green:#006947;--green-bg:#0069471a;--green-light:#69f6b847;--orange:#815100;--orange-bg:#f8a01024;--red:#b31b25;--red-bg:#b31b2517;--blue:#006576;--blue-bg:#0065761a;--radius:16px;--radius-sm:10px;--shadow:0 1px 3px #00362a0a,0 4px 16px #00362a0a;--shadow-lg:0 8px 30px #0069471f;--glass-bg:#ffffffbf;--glass-border:#ffffff80;--glass-blur:blur(20px);--nav-bg:#fffc;--header-bg:#d8fff0c7}[data-theme=dark]{--bg:#001a10;--bg2:#002b1c;--card:#002a1cd9;--card-solid:#002b1c;--border:#51b8a526;--border-solid:#1a5242;--primary:#58e7ab;--primary-light:#58e7ab1f;--primary-dark:#69f6b8;--primary-glow:#58e7ab38;--primary-gradient:linear-gradient(135deg,#58e7ab,#48d4f3);--primary-container:#005a3c;--accent:#48d4f3;--accent-light:#48d4f31f;--secondary-container:#004f5d;--on-secondary-container:#65e1ff;--tertiary:#e79400;--tertiary-container:#563400;--on-tertiary-container:#f8a010;--surface-container-low:#002b1c;--surface-container:#003525;--surface-container-high:#003f2d;--surface-container-highest:#004a35;--outline-variant:#1a5242;--text:#c8ffe0;--text-sec:#72a895;--text-muted:#4c8170;--green:#58e7ab;--green-bg:#58e7ab1a;--green-light:#58e7ab2e;--orange:#e79400;--orange-bg:#e794001f;--red:#fb5151;--red-bg:#fb51511f;--blue:#48d4f3;--blue-bg:#48d4f31f;--shadow:0 1px 3px #0006;--shadow-lg:0 8px 32px #00000080;--glass-bg:#002a1ccc;--glass-border:#1a524280;--glass-blur:blur(20px);--nav-bg:#00110ceb;--header-bg:#00110cc7}.bg-background{background-color:var(--bg)}.text-foreground{color:var(--text)}.text-muted-foreground{color:var(--text-muted)}[data-theme]{color-scheme:light;transition:background-color .3s,color .2s}[data-theme=dark]{color-scheme:dark}html{-webkit-tap-highlight-color:transparent}body{color:var(--text);font-family:Plus Jakarta Sans,Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.65;overflow:hidden}.app-container,body{background:var(--bg)}.app-container{max-width:448px;min-height:100dvh;margin:0 auto;position:relative}.glass-card{background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--shadow);border-radius:20px}.glass-card,.stitch-header{-webkit-backdrop-filter:var(--glass-blur)}.stitch-header{z-index:50;background:var(--header-bg);width:100%;border-bottom:1px solid #69f6b826;justify-content:space-between;align-items:center;height:64px;padding:0 20px;display:flex;position:fixed;top:0;box-shadow:0 1px 12px #00362a0f}.stitch-card{background:var(--card-solid);border:1px solid #ffffff80;border-radius:20px;overflow:hidden;box-shadow:0 8px 30px #00362a0f}.stitch-card-low{background:var(--surface-container-low);border-radius:16px}.stitch-answer-btn{text-align:center;background:var(--card-solid);cursor:pointer;-webkit-tap-highlight-color:transparent;border:1.5px solid #0000;border-radius:16px;padding:28px 16px;transition:all .25s;position:relative;box-shadow:0 2px 8px #00362a0f}.stitch-answer-btn:hover{background:var(--surface-container-high);border-color:#0069471f;box-shadow:0 4px 16px #00362a1a}.stitch-answer-btn:active{transform:scale(.97)}.stitch-answer-btn.selected{border-color:var(--primary);background:var(--primary-light)}.stitch-answer-btn.correct{border-color:var(--green);background:var(--green-bg)}.stitch-answer-btn.wrong{border-color:var(--red);background:var(--red-bg)}.stitch-progress-track{background:var(--surface-container-low);border-radius:999px;width:100%;height:14px;padding:3px;overflow:hidden;box-shadow:inset 0 2px 4px #00362a14}.stitch-progress-fill{background:var(--primary-gradient);border-radius:999px;height:100%;transition:width .6s;box-shadow:0 0 12px #0069474d}.stitch-hint-btn{background:var(--tertiary-container);color:var(--on-tertiary-container);cursor:pointer;border:none;border-radius:14px;align-items:center;gap:8px;padding:12px 24px;font-size:14px;font-weight:700;transition:transform .2s;display:flex;box-shadow:0 4px 16px #81510033}.stitch-hint-btn:hover{transform:scale(1.04)}.stitch-hint-btn:active{transform:scale(.95)}.stitch-topic-card{background:var(--card-solid);text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;border:1px solid #81b8a526;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:20px 16px;transition:all .25s;display:flex;position:relative;overflow:hidden}.stitch-topic-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px #0069471a}.stitch-topic-card.selected{border-color:var(--primary);background:var(--primary-light);box-shadow:0 4px 16px #00694726}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes typing{0%,to{opacity:.2}50%{opacity:1}}@keyframes pulse{0%,to{box-shadow:0 0 0 0 var(--primary-glow);transform:scale(1)}50%{box-shadow:0 0 30px 8px var(--primary-glow);transform:scale(1.06)}}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(200%)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes floatSlow{0%,to{transform:translateY(0)rotate(0)}25%{transform:translateY(-12px)rotate(5deg)}50%{transform:translateY(-6px)rotate(-3deg)}75%{transform:translateY(-15px)rotate(2deg)}}@keyframes levelUp{0%{opacity:0;transform:scale(.5)}50%{transform:scale(1.2)}to{opacity:1;transform:scale(1)}}@keyframes confetti{0%{opacity:1;transform:translateY(0)rotate(0)}to{opacity:0;transform:translateY(-100px)rotate(2turn)}}@keyframes slideRight{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes gradientShift{0%,to{background-position:0}50%{background-position:100%}}@keyframes glow{0%,to{box-shadow:0 0 20px var(--primary-glow)}50%{box-shadow:0 0 40px var(--primary-glow),0 0 60px #0065761a}}.fade-in{animation:fadeIn .3s}.fade-in-up{animation:fadeInUp .5s both}.slide-up{animation:slideUp .35s cubic-bezier(.16,1,.3,1) both}.scale-in{animation:scaleIn .25s both}.level-up{animation:levelUp .6s cubic-bezier(.34,1.56,.64,1) both}.slide-right{animation:slideRight .4s both}::-moz-selection{background:var(--primary-light);color:var(--primary-dark)}::selection{background:var(--primary-light);color:var(--primary-dark)}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-solid);border-radius:3px}button,input,textarea{font-family:inherit}button{min-height:44px}.katex{font-size:1em!important}.katex-display{overflow-x:auto;margin:.4em 0!important}.blk{border-radius:12px;margin:8px 0;padding:10px 14px;font-size:13px;line-height:1.7}.bl{opacity:.7;margin-bottom:4px;font-size:10px;font-weight:700}.sb{background:var(--primary-light);border-left:3px solid var(--primary)}.fb{background:var(--blue-bg);border-left:3px solid var(--blue)}.tb{background:var(--orange-bg);border-left:3px solid var(--orange)}.hl{background:#fef08a;border-radius:4px;padding:1px 4px;font-weight:600}.no-scroll{overflow:hidden}.stagger>*{animation:fadeInUp .5s both}.stagger>:first-child{animation-delay:0s}.stagger>:nth-child(2){animation-delay:60ms}.stagger>:nth-child(3){animation-delay:.12s}.stagger>:nth-child(4){animation-delay:.18s}.stagger>:nth-child(5){animation-delay:.24s}.stagger>:nth-child(6){animation-delay:.3s}.stagger>:nth-child(7){animation-delay:.36s}.stagger>:nth-child(8){animation-delay:.42s}.app-main,.dashboard-page{min-height:100dvh}.dashboard-page{background:var(--bg);flex-direction:column;padding-bottom:72px;display:flex}.dashboard-header{z-index:40;background:var(--header-bg);height:64px;-webkit-backdrop-filter:var(--glass-blur);border-bottom:1px solid #69f6b826;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 20px;display:flex;position:sticky;top:0;box-shadow:0 1px 12px #00362a0f}.dashboard-header-left{align-items:center;gap:10px;display:flex}.dashboard-avatar{background:var(--primary-gradient);border:2px solid var(--primary-container);width:42px;height:42px;box-shadow:0 2px 8px var(--primary-glow);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:20px;display:flex}.dashboard-greeting{color:var(--text-sec);font-size:11px;font-weight:600}.dashboard-subtitle{color:var(--primary);letter-spacing:-.3px;font-size:16px;font-weight:800;line-height:1}.dashboard-streak-badge{color:var(--text);background:#fff9;border:1px solid #81b8a533;border-radius:999px;align-items:center;gap:5px;padding:6px 12px;font-size:12px;font-weight:700;display:flex}.dashboard-scroll{flex:1;padding:16px 16px 24px;overflow-y:auto}.dashboard-section{margin-bottom:20px}.section-title{color:var(--text);align-items:center;gap:6px;margin-bottom:12px;font-size:15px;font-weight:900;display:flex}.level-xp-card{background:var(--card-solid);border:1px solid #fff9;border-radius:20px;margin-bottom:20px;padding:20px;position:relative;overflow:hidden;box-shadow:0 8px 30px #00362a0f}.level-xp-card:before{content:"";filter:blur(30px);background:#00657612;border-radius:50%;width:100px;height:100px;position:absolute;top:-20px;right:-10px}.bento-grid{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px;display:grid}.bento-activity{background:var(--surface-container-low);flex-direction:column;justify-content:space-between;min-height:180px;display:flex}.bento-activity,.bento-focus{border-radius:16px;padding:16px}.bento-focus{cursor:pointer;background:linear-gradient(135deg,#65e1ff,#48d4f3);transition:transform .25s;position:relative;overflow:hidden}.bento-focus:active{transform:scale(.98)}.activity-bars{justify-content:space-between;align-items:flex-end;gap:3px;height:80px;display:flex}.activity-bar-wrap{flex-direction:column;flex:1;align-items:center;gap:3px;display:flex}.activity-bar{border-radius:3px 3px 0 0;width:100%;transition:height .5s}.activity-bar-label{font-size:9px;font-weight:700}.challenge-card{background:var(--card-solid);cursor:pointer;border-bottom:3px solid #00694714;border-radius:16px;justify-content:space-between;align-items:center;margin-bottom:10px;padding:14px 16px;transition:border-color .2s;display:flex;box-shadow:0 2px 10px #00362a0a}.challenge-card:hover{border-bottom-color:var(--primary)}.challenge-icon-wrap{background:var(--surface-container-low);border-radius:13px;flex-shrink:0;justify-content:center;align-items:center;width:46px;height:46px;font-size:20px;transition:transform .2s;display:flex}.challenge-card:hover .challenge-icon-wrap{transform:rotate(6deg)}.challenge-play-btn{border:1.5px solid var(--outline-variant);width:36px;height:36px;color:var(--text-muted);cursor:pointer;min-height:unset;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;transition:all .2s;display:flex}.challenge-card:hover .challenge-play-btn{background:var(--primary);border-color:var(--primary);color:#fff}.stat-cards-row{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.stat-card{border-radius:var(--radius);text-align:center;border:1px solid var(--border);background:var(--card);cursor:pointer;padding:14px 10px}.stat-card-green{border-left:3px solid var(--green)}.stat-card-blue{border-left:3px solid var(--blue)}.stat-card-orange{border-left:3px solid var(--orange)}.stat-card-icon{margin-bottom:4px;font-size:20px}.stat-card-value{color:var(--text);font-size:22px;font-weight:800}.stat-card-label{color:var(--text-muted);margin-top:2px;font-size:10px}.weekly-heatmap{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.heatmap-day{flex-direction:column;align-items:center;gap:4px;display:flex}.heatmap-label{color:var(--text-muted);font-size:10px;font-weight:600}.heatmap-cell{border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;font-size:12px;font-weight:700;display:flex}.heatmap-empty{background:var(--bg2);color:var(--text-muted)}.heatmap-active{background:var(--green-bg);color:var(--green)}.heatmap-mid{background:var(--green-light)}.heatmap-high{background:var(--green);color:#fff}.heatmap-today{position:relative}.heatmap-today .heatmap-cell{box-shadow:0 0 0 2px var(--primary)}.daily-problems{flex-direction:column;gap:8px;display:flex}.daily-problem-card{border-radius:var(--radius);background:var(--card);border:1px solid var(--border);cursor:pointer;padding:12px 14px;transition:box-shadow .2s}.daily-problem-card:active{box-shadow:var(--shadow-lg)}.daily-problem-top{align-items:center;gap:8px;margin-bottom:6px;display:flex}.difficulty-badge{border-radius:10px;padding:2px 8px;font-size:10px;font-weight:700}.diff-easy{background:var(--green-bg);color:var(--green)}.diff-medium{background:var(--orange-bg);color:var(--orange)}.diff-hard{background:var(--red-bg);color:var(--red)}.problem-subcategory{color:var(--text-muted);font-size:10px}.daily-problem-question{color:var(--text);font-size:13px;line-height:1.6}.weak-topics{flex-direction:column;gap:8px;display:flex}.weak-topic-card{border-radius:var(--radius);background:var(--card);border:1px solid var(--border);border-left:3px solid var(--orange);cursor:pointer;padding:12px 14px}.weak-topic-info{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.weak-topic-name{color:var(--text);font-size:13px;font-weight:600}.weak-topic-acc{color:var(--orange);font-size:11px;font-weight:700}.weak-topic-bar-wrap{background:var(--bg2);border-radius:3px;height:6px;overflow:hidden}.weak-topic-bar{background:var(--orange);border-radius:3px;height:100%;transition:width .6s}.quick-menu-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.quick-menu-item{border-radius:var(--radius);background:var(--card-solid);border:1px solid var(--border);cursor:pointer;flex-direction:column;align-items:center;gap:6px;padding:18px 12px;transition:all .2s;display:flex;box-shadow:0 2px 8px #00362a0a}.quick-menu-item:active{background:var(--primary-light);border-color:var(--primary);transform:scale(.97)}.quick-menu-icon{font-size:26px}.quick-menu-label{color:var(--text);font-size:12px;font-weight:600}.dashboard-footer{text-align:center;color:var(--text-muted);padding:20px 0 8px;font-size:10px}.progress-page{flex-direction:column;height:100dvh;padding-bottom:64px;display:flex}.page-header{background:var(--card);border-bottom:1px solid var(--border);padding:16px 18px 12px}.page-title{color:var(--text);font-size:20px;font-weight:800}.progress-scroll{flex:1;padding:12px 14px 24px;overflow-y:auto}.progress-summary{margin-bottom:16px}.summary-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.summary-item{text-align:center;border-radius:var(--radius);background:var(--card);border:1px solid var(--border);padding:16px 8px}.summary-value{color:var(--primary);font-size:24px;font-weight:800}.summary-label{color:var(--text-muted);margin-top:4px;font-size:10px}.weekly-progress-card{border-radius:var(--radius);background:var(--card);border:1px solid var(--border);padding:14px}.weekly-progress-info{color:var(--text);justify-content:space-between;margin-bottom:8px;font-size:13px;font-weight:600;display:flex}.weekly-progress-pct{color:var(--primary)}.progress-bar-track{background:var(--bg2);border-radius:4px;height:8px;overflow:hidden}.progress-bar-fill{background:var(--primary-gradient);border-radius:4px;height:100%}.weekly-days{color:var(--text-muted);text-align:right;margin-top:6px;font-size:11px}.calendar-week{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.calendar-day{background:var(--card);border:1px solid var(--border);border-radius:12px;flex-direction:column;align-items:center;gap:3px;padding:8px 4px;display:flex}.calendar-today{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary-glow)}.calendar-active{background:var(--green-bg)}.calendar-day-name{color:var(--text-muted);font-size:9px;font-weight:600}.calendar-day-num{color:var(--text);font-size:14px;font-weight:700}.calendar-day-dot{font-size:10px}.calendar-day-count{color:var(--green);font-size:8px;font-weight:700}.progress-tabs{background:var(--bg2);border-radius:12px;gap:4px;margin-bottom:12px;padding:4px;display:flex}.progress-tab{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:10px;flex:1;padding:10px;font-size:12px;font-weight:600;transition:all .2s}.progress-tab-active{background:var(--card);color:var(--primary);box-shadow:var(--shadow)}.topic-chart-list{flex-direction:column;gap:10px;display:flex}.topic-chart-item{border-radius:var(--radius-sm);background:var(--card);border:1px solid var(--border);padding:10px 14px}.topic-chart-header{justify-content:space-between;margin-bottom:6px;display:flex}.topic-chart-name{color:var(--text);font-size:12px;font-weight:600}.topic-chart-stats{color:var(--text-muted);font-size:11px;font-weight:700}.topic-chart-bar-wrap{background:var(--bg2);border-radius:3px;height:6px;overflow:hidden}.topic-chart-bar{border-radius:3px;height:100%;transition:width .6s}.bar-green{background:var(--green)}.bar-orange{background:var(--orange)}.bar-red{background:var(--red)}.wrong-notes-list{flex-direction:column;gap:8px;display:flex}.wrong-note-item{border-radius:var(--radius);background:var(--card);border:1px solid var(--border);border-left:3px solid var(--red);cursor:pointer;padding:12px 14px}.wrong-note-top{align-items:center;gap:8px;margin-bottom:6px;display:flex}.wrong-note-date,.wrong-note-topic{color:var(--text-muted);font-size:10px}.wrong-note-date{margin-left:auto}.wrong-note-question{color:var(--text);margin-bottom:6px;font-size:13px;line-height:1.5}.wrong-note-answers{gap:12px;font-size:11px;display:flex}.wrong-answer{color:var(--red);font-weight:600}.correct-answer{color:var(--green);font-weight:600}.view-all-btn{border-radius:var(--radius-sm);border:1px dashed var(--border-solid);width:100%;color:var(--primary);cursor:pointer;background:0 0;padding:12px;font-size:13px;font-weight:600}.empty-state{text-align:center;padding:32px 16px}.empty-icon{margin-bottom:12px;font-size:48px}.empty-text{color:var(--text);margin-bottom:4px;font-size:15px;font-weight:700}.empty-sub{color:var(--text-muted);margin-bottom:16px;font-size:12px}.empty-cta{background:var(--primary-gradient);color:#fff;cursor:pointer;border:none;border-radius:12px;padding:10px 24px;font-size:13px;font-weight:700}.settings-page{flex-direction:column;height:100dvh;padding-bottom:72px;display:flex}.settings-scroll{flex:1;padding:12px 14px 24px;overflow-y:auto}.settings-section{margin-bottom:20px}.settings-section-title{color:var(--text-muted);margin-bottom:8px;padding-left:4px;font-size:13px;font-weight:700}.settings-card{border-radius:var(--radius);background:var(--card);border:1px solid var(--border);overflow:hidden}.settings-profile-row{align-items:center;gap:12px;padding:14px;display:flex}.settings-avatar{background:var(--primary-gradient);border-radius:14px;justify-content:center;align-items:center;width:48px;height:48px;font-size:24px;display:flex}.settings-profile-info{flex:1}.settings-nickname{color:var(--text);font-size:15px;font-weight:700}.settings-grade{color:var(--text-muted);margin-top:2px;font-size:12px}.settings-edit-btn{border:1px solid var(--border-solid);background:var(--bg2);color:var(--primary);cursor:pointer;border-radius:8px;padding:6px 14px;font-size:12px;font-weight:600}.settings-row{width:100%;color:var(--text);cursor:pointer;text-align:left;border:none;border-top:1px solid var(--border);background:0 0;justify-content:space-between;align-items:center;padding:14px;font-size:14px;display:flex}.settings-row:first-child{border-top:none}.settings-row-value{color:var(--text-muted);font-size:13px;font-weight:500}.settings-row-arrow{color:var(--text-muted);font-size:16px}.settings-row-danger{color:var(--red)}.theme-options{grid-template-columns:repeat(3,1fr);gap:8px;padding:12px;display:grid}.theme-option{border:2px solid var(--border);background:var(--bg2);cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:14px 8px;transition:all .2s;display:flex}.theme-option-active{border-color:var(--primary);background:var(--primary-light)}.theme-option-icon{font-size:22px}.theme-option-label{color:var(--text);font-size:11px;font-weight:600}.grade-selector-dropdown{border-top:1px solid var(--border);padding:12px;overflow:hidden}.grade-group{margin-bottom:10px}.grade-group-label{color:var(--text-muted);text-transform:uppercase;margin-bottom:6px;font-size:10px;font-weight:700}.grade-group-items{flex-wrap:wrap;gap:6px;display:flex}.grade-option{border:1px solid var(--border-solid);background:var(--bg2);cursor:pointer;color:var(--text);border-radius:8px;align-items:center;gap:4px;padding:6px 12px;font-size:12px;display:flex}.grade-option-active{border-color:var(--primary);background:var(--primary-light);color:var(--primary);font-weight:700}.reset-confirm{border-radius:var(--radius);background:var(--red-bg);border:1px solid var(--red);margin-top:8px;padding:14px}.reset-confirm-text{color:var(--text);margin-bottom:12px;font-size:12px;line-height:1.6}.reset-confirm-buttons{gap:8px;display:flex}.reset-cancel-btn{border:1px solid var(--border-solid);background:var(--card);color:var(--text);border-radius:8px;font-weight:600}.reset-cancel-btn,.reset-confirm-btn{cursor:pointer;flex:1;padding:10px;font-size:13px}.reset-confirm-btn{background:var(--red);color:#fff;border:none;border-radius:8px;font-weight:700}.settings-footer{text-align:center;padding:24px 0 8px}.settings-logo{color:var(--text);margin-bottom:6px;font-size:16px;font-weight:800}.settings-footer p{color:var(--text-muted);font-size:10px}.settings-footer-sub{opacity:.6;margin-top:2px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100000;background:var(--primary);color:#fff;border-radius:0 0 8px 8px;padding:12px 20px;font-size:14px;font-weight:700;text-decoration:none;transition:top .2s;position:absolute;top:-100%;left:8px}.skip-link:focus{top:0}:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (min-width:448px){.app-container{box-shadow:-1px 0 0 var(--border-solid),1px 0 0 var(--border-solid)}}@media (hover:none) and (pointer:coarse){[role=button],a,button{-webkit-tap-highlight-color:transparent}.quick-menu-item:active{transform:scale(.97)}}@media print{.app-container{max-width:100%}#offline-banner,.bottom-nav,nav{display:none!important}}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}