@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2)format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2)format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2)format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2)format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2)format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2)format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2)format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2)format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2)format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2)format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2)format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2)format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2)format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2)format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2)format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2)format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2)format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2)format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2)format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2)format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--cream:#faf4ea;--surface:#fffdf8;--surface-2:#f4ebdc;--ink:#2c2318;--muted:#8a7e6c;--line:#e8dfcf;--terracotta:#d96f4e;--terracotta-dark:#c25e3f;--terracotta-soft:#f6dfd5;--sage:#8fa98f;--sage-soft:#e3ebe1;--amber:#e8b84e;--amber-soft:#f9edce;--der:#4a7fb5;--der-soft:#dee9f4;--die:#c65b7c;--die-soft:#f5dfe7;--das:#6b9e6b;--das-soft:#e2eee2;--ok:#5b9e6f;--ok-soft:#dff0e4;--no:#c4573f;--no-soft:#f6ddd6;--font-display:"Fraunces Variable", Georgia, serif;--font-ui:"Inter", -apple-system, system-ui, sans-serif;--radius:20px;--radius-sm:12px;--shadow:0 2px 10px #3c2a1412, 0 10px 30px #3c2a140d;--shadow-lift:0 4px 16px #3c2a141f, 0 16px 44px #3c2a1417;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--nav-height:64px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--cream);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;font-size:16px;line-height:1.5}button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:0 0;border:none}input{font-family:inherit;font-size:17px}h1,h2,h3{font-family:var(--font-display);font-weight:560;line-height:1.2}#app{flex-direction:column;max-width:560px;min-height:100dvh;margin:0 auto;display:flex}.app-header{z-index:20;padding:calc(10px + var(--safe-top)) 20px 10px;background:color-mix(in srgb, var(--cream) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;gap:10px;display:flex;position:sticky;top:0}#view{padding:8px 20px calc(var(--nav-height) + var(--safe-bottom) + 28px);flex:1;animation:.28s both view-in}@keyframes view-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.confetti-canvas{pointer-events:none;z-index:100;width:100vw;height:100vh;position:fixed;inset:0}::selection{background:var(--terracotta-soft)}.header-title{font-family:var(--font-display);white-space:nowrap;font-size:18px;font-weight:600}.header-right{flex-wrap:nowrap;align-items:center;gap:6px;display:flex}.streak-badge{white-space:nowrap;background:var(--amber-soft);color:#9a6b12;border-radius:999px;align-items:center;gap:3px;padding:5px 9px;font-size:13px;font-weight:600;display:inline-flex}.level-pill{background:var(--terracotta-soft);color:var(--terracotta-dark);border-radius:999px;padding:5px 10px;font-size:12px;font-weight:600}.lang-pill{white-space:nowrap;background:var(--surface-2);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:5px 8px;font-size:11px;font-weight:700;transition:transform .12s}.lang-pill:active{transform:scale(.93)}.gear-btn{color:var(--muted);border-radius:50%;min-width:40px;min-height:40px;padding:6px;font-size:18px}.bottom-nav{z-index:30;background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);width:100%;max-width:560px;padding-bottom:var(--safe-bottom);height:calc(var(--nav-height) + var(--safe-bottom));display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-tab{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:11px;font-weight:500;transition:color .15s;display:flex}.nav-tab .nav-icon{font-size:21px;line-height:1}.nav-tab.active{color:var(--terracotta-dark)}.nav-tab .nav-dot{background:var(--terracotta);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:17px;height:17px;margin-top:-28px;margin-left:26px;padding:0 4px;font-size:10.5px;font-weight:700;display:flex;position:absolute}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px;padding:18px}.btn{border-radius:16px;justify-content:center;align-items:center;gap:8px;min-height:50px;padding:12px 22px;font-size:16px;font-weight:600;transition:transform .12s,background .15s,opacity .15s;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:var(--terracotta);color:#fff;box-shadow:var(--shadow)}.btn-primary:active{background:var(--terracotta-dark)}.btn-ghost{background:var(--surface-2);color:var(--ink)}.btn-wide{width:100%}.btn[disabled]{opacity:.45;pointer-events:none}.section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:22px 0 10px;font-size:12.5px;font-weight:700}.home-greet{margin-top:10px}.home-greet h1{font-size:30px}.home-date{color:var(--muted);margin-top:3px;font-size:14px}.block-card{text-align:left;background:var(--surface);border-radius:var(--radius);width:100%;box-shadow:var(--shadow);align-items:center;gap:14px;margin-bottom:12px;padding:16px 18px;transition:transform .12s;display:flex}.block-card:active{transform:scale(.985)}.block-card .block-icon{border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;width:46px;height:46px;font-size:22px;display:flex}.block-card .block-body{flex:1;min-width:0}.block-card .block-title{font-size:16.5px;font-weight:650}.block-card .block-sub{color:var(--muted);margin-top:1px;font-size:13.5px}.block-card .block-status{flex-shrink:0;font-size:20px}.block-card.done{opacity:.72}.block-card.done .block-title{text-decoration:line-through;text-decoration-thickness:1.5px;-webkit-text-decoration-color:var(--sage);text-decoration-color:var(--sage)}.ritual-done{text-align:center;border-radius:var(--radius);background:var(--sage-soft);color:#47604a;margin-bottom:12px;padding:16px;font-weight:600}.rest-card{background:linear-gradient(140deg, var(--sage-soft), var(--surface));border-radius:var(--radius);box-shadow:var(--shadow);text-align:center;margin-bottom:12px;padding:26px 20px}.rest-card h2{margin-bottom:6px;font-size:24px}.rest-card p{color:var(--muted);font-size:14.5px}.week-header{justify-content:space-between;align-items:baseline;margin:24px 0 10px;display:flex}.week-header h2{font-size:20px}.week-header .week-count{color:var(--muted);font-size:13px;font-weight:600}.day-card{text-align:left;background:var(--surface);border-radius:var(--radius-sm);width:100%;box-shadow:var(--shadow);align-items:center;gap:13px;margin-bottom:9px;padding:13px 15px;transition:transform .12s,opacity .15s;display:flex}.day-card:active{transform:scale(.985)}.day-card .day-num{background:var(--surface-2);width:38px;height:38px;color:var(--muted);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.day-card .day-body{flex:1;min-width:0}.day-card .day-title{font-size:15.5px;font-weight:640}.day-card .day-sub{color:var(--muted);font-size:12.5px}.day-card .day-mark{flex-shrink:0;font-size:18px}.day-card.done .day-num{background:var(--sage-soft);color:#47604a}.day-card.ready{box-shadow:var(--shadow-lift);outline:2px solid var(--terracotta)}.day-card.ready .day-num{background:var(--terracotta);color:#fff}.day-card.locked,.day-card.tomorrow{opacity:.55}.day-card.rest{opacity:.75;background:var(--sage-soft);box-shadow:none}.lesson-top{align-items:center;gap:10px;margin:4px 0 14px;display:flex}.lesson-top .back-btn{color:var(--muted);padding:8px 10px 8px 0;font-size:15px;font-weight:600}.lesson-top h2{flex:1;font-size:20px}.stepper-dots{gap:6px;margin-bottom:18px;display:flex}.stepper-dots .dot{background:var(--line);border-radius:999px;flex:1;height:4.5px;transition:background .2s}.stepper-dots .dot.active{background:var(--terracotta)}.stepper-dots .dot.done{background:var(--sage)}.step-title{margin-bottom:4px;font-size:23px}.step-sub{color:var(--muted);margin-bottom:16px;font-size:14.5px}.intro-blurb{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px;padding:18px;font-size:16px}.tipp-card{background:var(--amber-soft);border-radius:var(--radius-sm);gap:10px;margin:14px 0;padding:13px 15px;font-size:14.5px;display:flex}.egg-card{background:linear-gradient(140deg, var(--die-soft), var(--surface));border-radius:var(--radius);box-shadow:var(--shadow-lift);text-align:center;margin:16px 0;padding:20px;font-size:15px}.egg-card .egg-heart{margin-bottom:8px;font-size:26px;display:block}.vocab-row{background:var(--surface);border-radius:var(--radius-sm);box-shadow:var(--shadow);border-left:4px solid var(--line);align-items:center;gap:12px;margin-bottom:8px;padding:12px 14px;display:flex}.vocab-row.a-der{border-left-color:var(--der)}.vocab-row.a-die{border-left-color:var(--die)}.vocab-row.a-das{border-left-color:var(--das)}.vocab-row .vocab-body{flex:1;min-width:0}.vocab-row .vocab-de{font-family:var(--font-display);font-size:19px;font-weight:600}.vocab-row .vocab-de .art{font-weight:700}.vocab-row.a-der .art{color:var(--der)}.vocab-row.a-die .art{color:var(--die)}.vocab-row.a-das .art{color:var(--das)}.vocab-row .vocab-say{color:var(--muted);margin-top:1px;font-size:12.5px;font-style:italic}.vocab-row .vocab-en{color:var(--muted);text-align:right;max-width:38%;font-size:14px}.speak-btn{background:var(--surface-2);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;font-size:17px;transition:transform .12s,background .15s;display:flex}.speak-btn:active{background:var(--terracotta-soft);transform:scale(.9)}.dialog-line{gap:10px;margin-bottom:10px;display:flex}.dialog-line .bubble{max-width:86%;box-shadow:var(--shadow);border-radius:16px;padding:11px 14px}.dialog-line.charly .bubble{background:var(--surface);border-bottom-left-radius:6px}.dialog-line.amy{justify-content:flex-end}.dialog-line.amy .bubble{background:var(--terracotta-soft);border-bottom-right-radius:6px}.dialog-line .who{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:2px;font-size:11px;font-weight:700}.dialog-line .de{font-family:var(--font-display);font-size:17px;font-weight:560}.dialog-line .say{color:var(--muted);margin-top:1px;font-size:12px;font-style:italic}.dialog-line .en{color:var(--muted);margin-top:3px;font-size:13px}.dialog-line .bubble.blurred .de,.dialog-line .bubble.blurred .say,.dialog-line .bubble.blurred .en{filter:blur(6px)}.dialog-line .bubble.blurred{position:relative}.dialog-line .bubble.blurred:after{content:attr(data-hint);color:var(--terracotta-dark);justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex;position:absolute;inset:0}.ex-prompt{margin-bottom:14px;font-size:19px;font-weight:600}.ex-prompt .big-de{font-family:var(--font-display);margin-top:6px;font-size:30px;display:block}.mc-option{text-align:left;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius-sm);width:100%;margin-bottom:9px;padding:14px 16px;font-size:16.5px;font-weight:500;transition:border-color .15s,background .15s,transform .12s;display:block}.mc-option:active{transform:scale(.985)}.mc-option.correct{border-color:var(--ok);background:var(--ok-soft)}.mc-option.wrong{border-color:var(--no);background:var(--no-soft)}.type-input{border:2px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:54px;color:var(--ink);outline:none;padding:13px 16px;transition:border-color .15s}.type-input:focus{border-color:var(--terracotta)}.type-input.ok{border-color:var(--ok);background:var(--ok-soft)}.type-input.almost{border-color:var(--amber);background:var(--amber-soft)}.type-input.no{border-color:var(--no);background:var(--no-soft)}.feedback-note{border-radius:var(--radius-sm);margin-top:10px;padding:11px 14px;font-size:14.5px;font-weight:550}.feedback-note.ok{background:var(--ok-soft);color:#3d6b4c}.feedback-note.almost{background:var(--amber-soft);color:#8a6210}.feedback-note.no{background:var(--no-soft);color:#8f3e2c}.article-word{font-family:var(--font-display);text-align:center;margin:22px 0;font-size:34px;font-weight:600}.article-row{gap:10px;display:flex}.article-btn{color:#fff;border-radius:16px;flex:1;min-height:58px;font-size:19px;font-weight:700;transition:transform .12s,opacity .15s}.article-btn:active{transform:scale(.95)}.article-btn.b-der{background:var(--der)}.article-btn.b-die{background:var(--die)}.article-btn.b-das{background:var(--das)}.article-btn.dim{opacity:.35}.match-grid{grid-template-columns:1fr 1fr;gap:9px;display:grid}.match-tile{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius-sm);text-align:center;justify-content:center;align-items:center;min-height:58px;padding:10px;font-size:15px;font-weight:550;transition:all .15s;display:flex}.match-tile.sel{border-color:var(--terracotta);background:var(--terracotta-soft)}.match-tile.matched{border-color:var(--ok);background:var(--ok-soft);opacity:.55;pointer-events:none}.match-tile.shake{animation:.3s shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.drill-score{color:var(--muted);justify-content:space-between;margin-bottom:14px;font-size:13.5px;font-weight:600;display:flex}.train-count{text-align:center;color:var(--muted);margin-bottom:12px;font-size:13.5px;font-weight:600}.flashcard{perspective:1100px;margin:8px 0 18px}.flashcard-inner{width:100%;min-height:300px;transform-style:preserve-3d;transition:transform .45s cubic-bezier(.4,.1,.2,1);position:relative}.flashcard.flipped .flashcard-inner{transform:rotateY(180deg)}.flashcard .face{backface-visibility:hidden;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lift);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex;position:absolute;inset:0}.flashcard .face.back{transform:rotateY(180deg)}.flashcard .face .fc-hint{letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:700}.flashcard .face .fc-word{font-family:var(--font-display);font-size:34px;font-weight:600}.flashcard .face .fc-word .art{font-weight:700}.flashcard .face .fc-word.c-der .art{color:var(--der)}.flashcard .face .fc-word.c-die .art{color:var(--die)}.flashcard .face .fc-word.c-das .art{color:var(--das)}.flashcard .face .fc-say{color:var(--muted);font-size:14px;font-style:italic}.flashcard .face .fc-tap{color:var(--muted);margin-top:12px;font-size:13px}.grade-row{gap:9px;display:flex}.grade-btn{border-radius:16px;flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:56px;font-size:15px;font-weight:700;transition:transform .12s;display:flex}.grade-btn:active{transform:scale(.95)}.grade-btn small{opacity:.75;font-size:11px;font-weight:500}.grade-btn.again{background:var(--no-soft);color:#8f3e2c}.grade-btn.good{background:var(--sage-soft);color:#3d6b4c}.grade-btn.easy{background:var(--der-soft);color:#2f5e8f}.practice-tile{text-align:left;background:var(--surface);border-radius:var(--radius);width:100%;box-shadow:var(--shadow);align-items:center;gap:14px;margin-bottom:11px;padding:16px 18px;transition:transform .12s;display:flex}.practice-tile:active{transform:scale(.985)}.practice-tile .p-icon{font-size:26px}.practice-tile .p-body{flex:1}.practice-tile .p-title{font-size:16px;font-weight:650}.practice-tile .p-sub{color:var(--muted);font-size:13px}.stats-row{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;display:grid}.stat-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);text-align:center;padding:16px}.stat-card .stat-num{font-family:var(--font-display);font-size:30px;font-weight:640}.stat-card .stat-label{color:var(--muted);font-size:12.5px;font-weight:600}.ring-row{justify-content:space-between;gap:8px;display:flex}.ring-item{text-align:center;flex:1}.ring-item svg{width:62px;height:62px}.ring-item .ring-label{color:var(--muted);margin-top:4px;font-size:12px;font-weight:600}.ring-bg{stroke:var(--line)}.ring-fg{stroke:var(--terracotta);transition:stroke-dashoffset .6s}.cal-grid{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.cal-cell{aspect-ratio:1;background:var(--surface-2);color:var(--muted);border-radius:8px;justify-content:center;align-items:center;font-size:10.5px;display:flex}.cal-cell.active{background:var(--terracotta);color:#fff;font-weight:700}.cal-cell.sunday{background:var(--sage-soft)}.cal-cell.today{outline:2px solid var(--terracotta-dark)}.achievement-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.achievement{background:var(--surface);border-radius:var(--radius-sm);box-shadow:var(--shadow);align-items:center;gap:10px;padding:13px;display:flex}.achievement.locked{opacity:.4;filter:grayscale(.9)}.achievement .a-icon{font-size:22px}.achievement .a-title{font-size:13px;font-weight:650}.achievement .a-desc{color:var(--muted);font-size:11px}.xp-bar{background:var(--line);border-radius:999px;height:8px;margin-top:8px;overflow:hidden}.xp-bar .fill{background:var(--terracotta);border-radius:999px;height:100%;transition:width .5s}.setting-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:14px 0;display:flex}.setting-row:last-child{border-bottom:none}.setting-row .s-label{font-size:15.5px;font-weight:550}.setting-row .s-sub{color:var(--muted);font-size:12.5px}.toggle{background:var(--line);border-radius:999px;flex-shrink:0;width:52px;height:31px;transition:background .2s;position:relative}.toggle.on{background:var(--sage)}.toggle:after{content:"";background:#fff;border-radius:50%;width:25px;height:25px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 4px #0003}.toggle.on:after{transform:translate(21px)}select.voice-select{border:1.5px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;max-width:55%;padding:8px 10px;font-size:16px}.toast-wrap{top:calc(var(--safe-top) + 12px);z-index:90;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(92vw,420px);display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{background:var(--ink);color:var(--cream);box-shadow:var(--shadow-lift);text-align:center;border-radius:999px;padding:11px 20px;font-size:14.5px;font-weight:600}.toast.achievement-toast{background:var(--terracotta);border-radius:var(--radius)}.liebe-note{background:linear-gradient(150deg, var(--die-soft), var(--surface));border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:11px;padding:17px;font-size:14.5px}.liebe-note .l-day{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:11px;font-weight:700}.summary-hero{text-align:center;padding:34px 20px 20px}.summary-hero .s-emoji{margin-bottom:10px;font-size:44px;display:block}.summary-hero h2{margin-bottom:6px;font-size:26px}.summary-hero p{color:var(--muted);font-size:15px}.empty-note{text-align:center;color:var(--muted);padding:30px 16px;font-size:14.5px}
