.lb-page{--lb-accent: #7c5cff;--lb-accent-top: #b59cff;--lb-accent-deep: #5a3fd1;--lb-accent-soft: #efeaff;--lb-accent-ink: #ffffff;--lb-accent-text: #5a3fd1;--lb-accent-glow: rgba(124, 92, 255, .45);--lb-accent-ring: rgba(181, 156, 255, .25);--lb-content: 760px;min-width:0}.lb-page[data-board=practice]{--lb-accent: #1fbf86;--lb-accent-top: #3ee0a6;--lb-accent-deep: #0f8a5d;--lb-accent-soft: #dcf9ec;--lb-accent-ink: #08341f;--lb-accent-text: #0b6b49;--lb-accent-glow: rgba(31, 191, 134, .45);--lb-accent-ring: rgba(62, 224, 166, .25)}.lb-page[data-board=speaking]{--lb-accent: #18b5c9;--lb-accent-top: #5fe3f2;--lb-accent-deep: #0e8796;--lb-accent-soft: #def8fb;--lb-accent-ink: #053a42;--lb-accent-text: #0b6470;--lb-accent-glow: rgba(24, 181, 201, .45);--lb-accent-ring: rgba(95, 227, 242, .25)}.lb-frame{margin:-18px -16px 0}.lb-arena{position:relative;overflow:hidden;padding:18px 16px 0;border-radius:0 0 36px 36px;background:radial-gradient(120% 70% at 50% 0%,#4a2fd0,#2a1a86 45%,#170f4a);color:#fff}.lb-arena__inner{position:relative;max-width:var(--lb-content);margin-inline:auto}.lb-star{position:absolute;border-radius:50%;animation:lb-twinkle 3s ease-in-out infinite}.lb-star--1{left:28px;top:74px;width:4px;height:4px;background:#fff}.lb-star--2{right:57px;top:60px;width:3px;height:3px;background:#ffe39a;animation-delay:.8s}.lb-star--3{right:85px;top:150px;width:5px;height:5px;background:#fff;animation-delay:1.4s}.lb-star--4{left:60px;top:190px;width:3px;height:3px;background:#c9b8ff;animation-delay:2s}.lb-arena__top{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px}.lb-arena__head{display:flex;flex-direction:column;gap:4px;min-width:0}.lb-week{font-size:12px;font-weight:800;letter-spacing:2px;color:#b9a8ff}.lb-title{margin:0;font-size:30px;line-height:1.1;font-weight:900;color:#fff}.lb-hall{flex:none;display:flex;align-items:center;gap:6px;height:44px;padding:0 14px;border:0;border-radius:999px;background:linear-gradient(180deg,#ffe28a,#ffc93c);color:#5a3d00;font:inherit;font-size:14px;font-weight:900;cursor:pointer;box-shadow:0 4px #c98f00,0 8px 20px #ffc93c59}.lb-capsule{position:relative;display:inline-flex;align-items:center;gap:8px;margin:12px 0 0;padding:8px 12px;border-radius:14px;background:#ffffff1a;border:1px solid rgba(255,255,255,.16);color:#fff}.lb-capsule__icon{flex:none;color:#ffe28a}.lb-capsule__label{font-size:13px;font-weight:800}.lb-capsule__num{font-size:16px;font-weight:900;color:#ffe28a}.lb-capsule__unit{font-size:12px;font-weight:800}.lb-modes{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px}.lb-mode{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px 9px;border:0;border-radius:18px;background:#ffffff14;color:#d9d0ff;font:inherit;cursor:pointer;min-height:44px}.lb-mode__label{font-size:14px;font-weight:900}.lb-mode__hint{font-size:10px;font-weight:800;opacity:.75}.lb-mode[aria-selected=true]{background:linear-gradient(180deg,var(--lb-accent-top),var(--lb-accent));color:var(--lb-accent-ink);box-shadow:0 4px 0 var(--lb-accent-deep),0 0 0 3px var(--lb-accent-ring),0 10px 24px var(--lb-accent-glow);transform:translateY(-2px)}.lb-mode[aria-selected=true] .lb-mode__hint{opacity:.8}.lb-spotlight{position:absolute;left:50%;top:250px;width:300px;height:330px;margin-left:-150px;pointer-events:none;background:conic-gradient(from 160deg at 50% 0%,transparent 0deg,rgba(255,227,138,.2) 20deg,transparent 40deg);filter:blur(2px)}.lb-arena__loading{display:block;height:300px;margin-top:34px;border-radius:24px 24px 0 0;background:#ffffff0f;animation:lb-shimmer 1.6s ease-in-out infinite}.lb-floor{display:block;height:22px;margin:0 -16px;background:linear-gradient(180deg,#5b42d6,#3a27a0)}.lb-podium{position:relative;display:grid;grid-template-columns:1fr 1.18fr 1fr;align-items:end;gap:6px;margin-top:34px}.lb-place{display:flex;flex-direction:column;align-items:center;min-width:0}.lb-crown{margin-bottom:-6px;position:relative;z-index:2;animation:lb-float 2.6s ease-in-out infinite}.lb-podium__avatar{display:grid;place-items:center;border-radius:50%}.lb-podium__avatar .mascot{width:100%;height:100%}.lb-place--1 .lb-podium__avatar{width:96px;height:96px;padding:5px;background:linear-gradient(160deg,#fff1b8,#ffc93c 45%,#e09a00);box-shadow:0 0 0 6px #ffc93c38,0 0 40px #ffc93c8c}.lb-place--2 .lb-podium__avatar{width:72px;height:72px;padding:4px;background:linear-gradient(160deg,#f4f7ff,#aab6d3);box-shadow:0 0 0 4px #c8d4f040}.lb-place--3 .lb-podium__avatar{width:72px;height:72px;padding:4px;background:linear-gradient(160deg,#ffd8b5,#d9803f);box-shadow:0 0 0 4px #f4a76b40}.lb-ribbon{margin-top:8px;max-width:100%;padding:3px 10px;border-radius:999px;background:#ffffff24;color:#fff;font-size:13px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-place--1 .lb-ribbon{padding:4px 12px;background:linear-gradient(180deg,#ffe28a,#ffc93c);color:#5a3d00;font-size:14px}.lb-me-pill{margin-left:5px;padding:1px 7px;border-radius:999px;background:#fff;color:#2a1a86;font-size:11px;font-weight:900}.lb-value-line{margin:4px 0 8px;font-size:12px;font-weight:800}.lb-value-line>span{font-size:18px;font-weight:900;color:#fff}.lb-place--1 .lb-value-line{color:#ffe8a8}.lb-place--1 .lb-value-line>span{font-size:22px}.lb-place--2 .lb-value-line{color:#d9e2ff}.lb-place--3 .lb-value-line{color:#ffe0c7}.lb-pedestal{display:block;width:100%}.lb-pedestal__top{display:block;border-radius:14px 14px 0 0}.lb-pedestal__front{display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900}.lb-place--1 .lb-pedestal__top{height:16px;background:#ffe7a0;border-radius:16px 16px 0 0}.lb-place--1 .lb-pedestal__front{height:100px;align-items:flex-start;padding-top:14px;background:linear-gradient(180deg,#ffcf4d,#f0a800);font-size:44px;text-shadow:0 3px 0 rgba(150,90,0,.35)}.lb-place--2 .lb-pedestal__top{height:14px;background:#dfe5f3}.lb-place--2 .lb-pedestal__front{height:64px;background:linear-gradient(180deg,#b9c4dd,#8f9bb8);font-size:34px;text-shadow:0 2px 0 rgba(0,0,0,.18)}.lb-place--3 .lb-pedestal__top{height:14px;background:#ffd2ad}.lb-place--3 .lb-pedestal__front{height:46px;background:linear-gradient(180deg,#f3a466,#cf7434);font-size:30px;text-shadow:0 2px 0 rgba(0,0,0,.18)}.lb-vacant-circle{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;border:3px dashed rgba(255,255,255,.35);color:#ffffff8c;font-size:28px;font-weight:900}.lb-bob{animation:lb-bob 2.4s ease-in-out infinite;filter:drop-shadow(0 8px 14px rgba(0,0,0,.35))}.lb-vacant-step{display:grid;place-items:center;width:100%;margin-top:18px;border-radius:14px 14px 0 0;background:#ffffff1a;border:2px dashed rgba(255,255,255,.25);border-bottom:0;color:#ffffff80;font-size:30px;font-weight:900}.lb-place--2 .lb-vacant-step{height:70px}.lb-place--3 .lb-vacant-step{height:52px;font-size:26px}.lb-place--1 .lb-vacant-step{height:104px;margin-top:6px;border-radius:16px 16px 0 0;background:linear-gradient(180deg,#ffcf4d73,#f0a80040);border:2px dashed rgba(255,227,138,.7);border-bottom:0;color:#ffe28a;font-size:40px}.lb-panel{padding:18px 16px 0;display:flex;flex-direction:column}.lb-panel>*{width:100%;max-width:var(--lb-content);margin-inline:auto}.lb-ticket{position:relative;z-index:2;margin-top:-2px;border:2px solid var(--lb-accent);border-radius:24px;background:var(--surface);box-shadow:0 5px 0 var(--edge),0 14px 30px #4b3a8f24;display:flex;flex-direction:column}.lb-ticket__row{display:flex;align-items:center;gap:12px;padding:16px 16px 0}.lb-ticket__badge{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none;width:58px;height:58px;border-radius:18px;background:linear-gradient(180deg,var(--lb-accent-top),var(--lb-accent));color:var(--lb-accent-ink);box-shadow:0 4px 0 var(--lb-accent-deep)}.lb-ticket__badge-label{font-size:11px;font-weight:800;line-height:1}.lb-ticket__badge-rank{font-size:26px;font-weight:900;line-height:1}.lb-ticket__who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.lb-ticket__label{font-size:12px;font-weight:800;color:var(--text-muted)}.lb-ticket__value{font-size:18px;font-weight:900;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-ticket__value b{color:var(--lb-accent-text)}.lb-ticket__edit{flex:none;width:44px;height:44px;border:0;border-radius:50%;background:var(--surface-muted);color:var(--brand-ink);display:grid;place-items:center;cursor:pointer}.lb-ticket__perforation{display:block;height:0;margin:12px 0;border-top:2px dashed var(--edge)}.lb-ticket__chase{display:flex;flex-direction:column;gap:8px;padding:0 16px 16px}.lb-ticket__chase-line{margin:0;font-size:15px;font-weight:900;color:var(--text)}.lb-ticket__chase-line--first{display:flex;align-items:center;gap:8px}.lb-ticket__chase-crown{flex:none}.lb-ticket__gap{color:var(--lb-accent-text);font-size:20px}.lb-ticket__rival{color:#5b3fe0}.lb-ticket__join{margin:0 16px 16px;min-height:44px;border:0;border-radius:14px;background:linear-gradient(180deg,var(--lb-accent-top),var(--lb-accent));color:var(--lb-accent-ink);font:inherit;font-size:15px;font-weight:900;box-shadow:0 4px 0 var(--lb-accent-deep);cursor:pointer}.lb-race{position:relative;height:40px}.lb-race__track{position:absolute;left:20px;right:20px;top:18px;height:6px;border-radius:6px;background:var(--lb-accent-soft)}.lb-race__fill{position:absolute;left:20px;top:18px;height:6px;border-radius:6px;width:calc((100% - 40px) * var(--lb-race-pct));background:linear-gradient(90deg,var(--lb-accent-soft),var(--lb-accent))}.lb-race__me{position:absolute;top:0;left:calc(20px + (100% - 40px) * var(--lb-race-pct));transform:translate(-50%);display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:3px solid var(--lb-accent);background:var(--surface);overflow:hidden}.lb-race__rival{position:absolute;top:4px;left:calc(20px + (100% - 40px)*.92);transform:translate(-50%);display:grid;place-items:center;width:32px;height:32px;border-radius:50%;border:2px solid var(--edge);background:var(--surface);overflow:hidden;opacity:.85}.lb-race__me .mascot,.lb-race__rival .mascot{width:100%;height:100%}.lb-lanes{display:flex;flex-direction:column;gap:10px;margin-top:22px}.lb-lanes__head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.lb-lanes__title{margin:0;font-size:19px;font-weight:900}.lb-lanes__count{font-size:12px;font-weight:800;color:var(--text-muted)}.lb-lanes__list{display:flex;flex-direction:column;gap:10px}.lb-lane{padding:12px 14px 8px;border-radius:20px;background:var(--surface);box-shadow:0 4px 0 var(--edge),0 8px 18px #4b3a8f14}.lb-lane--me{background:var(--lb-accent-soft);box-shadow:0 4px 0 var(--lb-accent-soft),0 8px 18px #4b3a8f14;outline:2px solid var(--lb-accent)}.lb-lane__row{display:flex;align-items:center;gap:10px}.lb-lane__rank{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--surface-muted);color:var(--text-muted);font-size:14px;font-weight:900}.lb-lane--me .lb-lane__rank{background:var(--lb-accent);color:var(--lb-accent-ink)}.lb-lane__name{flex:1;min-width:0;font-size:15px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.lb-lane__me{flex:none;padding:2px 8px;border-radius:999px;background:var(--lb-accent);color:var(--lb-accent-ink);font-size:11px;font-weight:900}.lb-lane__value{flex:none;font-size:20px;font-weight:900;color:var(--text)}.lb-lane__value small{font-size:11px;font-weight:800;color:var(--text-muted)}.lb-lane__track{position:relative;height:34px;margin-top:8px}.lb-lane__stripes{position:absolute;left:0;right:18px;top:13px;height:8px;border-radius:8px;background:repeating-linear-gradient(90deg,var(--surface-muted) 0 10px,var(--surface) 10px 20px)}.lb-lane__fill{position:absolute;left:0;top:13px;height:8px;border-radius:8px;background:linear-gradient(90deg,var(--lb-accent-soft),var(--lb-accent))}.lb-lane--me .lb-lane__fill{background:linear-gradient(90deg,var(--lb-accent-top),var(--lb-accent))}.lb-lane__dot{position:absolute;top:1px;transform:translate(-50%);display:grid;place-items:center;width:32px;height:32px;border-radius:50%;overflow:hidden;background:var(--surface);border:2px solid var(--edge)}.lb-lane--me .lb-lane__dot{border:3px solid var(--lb-accent)}.lb-lane__dot .mascot{width:100%;height:100%}.lb-lane__flag{position:absolute;right:0;top:4px}.lb-lanes__note{margin:6px 0 0;text-align:center;font-size:12px;font-weight:700;color:var(--text-muted)}.lb-empty{margin-top:4px;padding:20px 18px;border-radius:24px;background:var(--surface);box-shadow:0 5px 0 var(--edge),0 14px 30px #4b3a8f1f;display:flex;flex-direction:column;gap:10px;align-items:center;text-align:center}.lb-empty__title{margin:0;font-size:21px;font-weight:900;color:var(--text)}.lb-empty__body{margin:0;font-size:14px;font-weight:700;color:var(--text-muted);line-height:1.5}.lb-empty__cta{margin-top:6px;width:100%;min-height:54px;border-radius:18px;background:linear-gradient(180deg,var(--lb-accent-top),var(--lb-accent));color:var(--lb-accent-ink);display:flex;align-items:center;justify-content:center;gap:8px;font-size:17px;font-weight:900;text-decoration:none;box-shadow:0 5px 0 var(--lb-accent-deep)}.lb-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:grid;place-items:end center;background:#0c082873;animation:fade-in var(--motion-duration-in) var(--motion-ease-soft) both}.lb-sheet{position:relative;width:100%;max-width:560px;max-height:90dvh;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:10px 16px calc(24px + env(safe-area-inset-bottom));border-radius:32px 32px 0 0;background:linear-gradient(180deg,#fff6d8,#fff9ef 34%);box-shadow:0 -16px 40px #00000059;display:flex;flex-direction:column;gap:14px;color:#2b2350}.lb-sheet__grip{display:block;width:48px;height:5px;border-radius:99px;background:#e8d9a8;margin:0 auto}.lb-sheet__head{display:flex;align-items:center;justify-content:space-between;gap:12px}.lb-sheet__eyebrow{display:block;font-size:12px;font-weight:800;letter-spacing:2px;color:#b47d00}.lb-sheet__title{margin:0;font-size:26px;font-weight:900}.lb-sheet__close{flex:none;width:44px;height:44px;border:0;border-radius:50%;background:#fff;color:#6b6390;display:grid;place-items:center;box-shadow:0 3px #eadcb0;cursor:pointer}.lb-sheet__loading{margin:0;font-size:15px;font-weight:800;color:#6b6390}.lb-sheet__retry{min-height:48px;border:0;border-radius:16px;background:#fff;color:#5b3fe0;font:inherit;font-weight:900;box-shadow:0 4px #eadcb0;cursor:pointer}.lb-sheet__list{display:flex;flex-direction:column;gap:12px}.lb-sheet__footer{margin:auto 0 0;text-align:center;font-size:13px;font-weight:800;color:#8a6a1a}.lb-champ{display:flex;flex-direction:column;gap:10px}.lb-champ__card{display:flex;align-items:center;gap:14px;padding:14px;border-radius:24px;background:#fff;box-shadow:0 5px #eadcb0,0 12px 26px #b47d001f}.lb-champ__frame{position:relative;flex:none;display:block;width:82px;height:82px}.lb-champ__frame>svg:first-child{position:absolute;top:0;right:0;bottom:0;left:0}.lb-champ__frame--empty{opacity:.35;display:grid;place-items:center}.lb-champ__frame--empty:before{content:"";display:block;width:48px;height:48px;border-radius:50%;border:3px dashed #e0cfa0}.lb-champ__portrait{position:absolute;left:17px;top:13px;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;padding:3px;background:linear-gradient(160deg,#fff1b8,#ffc93c 45%,#e09a00)}.lb-champ__portrait .mascot{width:100%;height:100%}.lb-champ__crown{position:absolute;left:28px;top:0}.lb-champ__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.lb-champ__tag{align-self:flex-start;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:900}.lb-champ__tag--study{background:#efeaff;color:#5b3fe0}.lb-champ__tag--practice{background:#dcf9ec;color:#0f7a52}.lb-champ__tag--speaking{background:#def8fb;color:#0b6f7c}.lb-champ__name{font-size:19px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-champ__value{font-size:13px;font-weight:800;color:#6b6390}.lb-champ__value b{font-size:17px;font-weight:900;color:#2b2350}.lb-champ__toggle{flex:none;width:44px;height:44px;border:0;border-radius:50%;background:#fff4cf;color:#b47d00;display:grid;place-items:center;cursor:pointer}.lb-champ__toggle[aria-expanded=true] svg{transform:rotate(90deg)}.lb-champ__podium{padding:0 6px 4px}.lb-podium--mini{margin-top:8px;gap:4px}.lb-podium--mini .lb-ribbon{font-size:11px;padding:2px 8px}.lb-podium--mini .lb-value-line{font-size:10px;margin:2px 0 6px}.lb-podium--mini .lb-value-line>span{font-size:14px}.lb-podium--mini .lb-place--1 .lb-value-line>span{font-size:16px}.lb-podium--mini .lb-place--1 .lb-podium__avatar{width:48px;height:48px;padding:3px;box-shadow:0 0 0 3px #ffc93c38}.lb-podium--mini .lb-place--2 .lb-podium__avatar,.lb-podium--mini .lb-place--3 .lb-podium__avatar{width:36px;height:36px;padding:2px}.lb-podium--mini .lb-place--1 .lb-pedestal__front{height:40px;padding-top:6px;font-size:20px}.lb-podium--mini .lb-place--2 .lb-pedestal__front{height:26px;font-size:16px}.lb-podium--mini .lb-place--3 .lb-pedestal__front{height:20px;font-size:14px}.lb-podium--mini .lb-place--1 .lb-pedestal__top{height:8px;border-radius:8px 8px 0 0}.lb-podium--mini .lb-place--2 .lb-pedestal__top,.lb-podium--mini .lb-place--3 .lb-pedestal__top{height:6px;border-radius:6px 6px 0 0}.lb-podium--mini .lb-vacant-circle{width:34px;height:34px;font-size:16px;border-width:2px}.lb-skeleton{display:flex;flex-direction:column;gap:16px;padding-top:30px}.lb-skeleton>span{display:block;border-radius:20px;background:var(--surface-muted);animation:lb-shimmer 1.6s ease-in-out infinite}.lb-skeleton__lane{height:76px}.lb-error{display:flex;flex-direction:column;align-items:center;text-align:center;padding:40px 12px;gap:16px}.lb-error__retry{min-height:48px;padding:0 18px;border:0;border-radius:16px;background:var(--lb-accent-soft);color:var(--lb-accent-text);font:inherit;font-weight:900;cursor:pointer}.lb-editor-dialog{padding:0;border:0;border-radius:8px;width:min(420px,calc(100% - 32px));max-height:85dvh;overflow:auto;color:var(--text);background:var(--surface)}.lb-editor-dialog::backdrop{background:#0007}.lb-editor{padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:8px;display:grid;gap:12px}.lb-editor__header{display:flex;justify-content:space-between;align-items:center}.lb-editor h3{margin:0}.lb-editor input:not([type=checkbox]){width:100%;min-height:44px;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;padding:10px;font:inherit}.lb-editor__validation{margin:0;min-height:20px;color:var(--text-muted);font-size:13px}.lb-editor__toggle{display:flex;justify-content:space-between;align-items:center;min-height:44px}.lb-editor__toggle input{width:24px;height:24px;accent-color:var(--brand)}.lb-today-chip{display:flex;align-items:center;gap:8px;min-height:44px;padding:12px 16px;border-radius:999px;background:linear-gradient(180deg,#2a1a86,#4a2fd0);color:#fff;font-size:14px;font-weight:800;text-decoration:none}.lb-today-chip svg{flex:none}.lb-today-chip__trophy{color:#ffc93c}.lb-today-chip__chevron{color:#ffffffbf}.lb-today-chip__text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes lb-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes lb-twinkle{0%,to{opacity:.25}50%{opacity:.9}}@keyframes lb-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes lb-shimmer{50%{opacity:.6}}@media (max-width: 359px){.lb-place--1 .lb-podium__avatar{width:78px;height:78px}.lb-place--2 .lb-podium__avatar,.lb-place--3 .lb-podium__avatar{width:60px;height:60px}.lb-place--1 .lb-pedestal__front{font-size:38px}.lb-title{font-size:26px}}@media (min-width: 768px){.lb-frame{margin:-28px 0 0}.lb-arena{padding:28px 24px 0;border-radius:0 0 40px 40px}.lb-floor{margin:0 -24px}.lb-panel{padding:18px 24px 0}.lb-title{font-size:34px}.lb-sheet{border-radius:32px 32px 0 0;padding-inline:24px}}@media (prefers-reduced-motion: reduce){.lb-page *,.lb-page *:before,.lb-page *:after{animation:none!important;transition:none!important}}.lb-modes .m-tab-indicator{border-radius:18px;background:linear-gradient(180deg,var(--lb-accent-top),var(--lb-accent));box-shadow:0 4px 0 var(--lb-accent-deep),0 0 0 3px var(--lb-accent-ring),0 10px 24px var(--lb-accent-glow)}.lb-modes.m-tabs--ready .lb-mode[aria-selected=true]{background:transparent;box-shadow:none}.lb-place--3{--podium-delay: 0ms}.lb-place--2{--podium-delay: .12s}.lb-place--1{--podium-delay: .24s}.lb-pedestal,.lb-vacant-step{animation:m-pedestal var(--dur-page) var(--spring-snappy) backwards;animation-delay:var(--podium-delay)}.lb-podium__avatar{animation:m-fade-in var(--dur-enter) var(--ease-out) backwards,m-pop var(--dur-reward) var(--spring-bouncy) backwards;animation-delay:calc(var(--podium-delay) + var(--dur-page))}.lb-ribbon,.lb-value-line{animation:m-fade-in var(--dur-enter) var(--ease-out) backwards;animation-delay:calc(var(--podium-delay) + var(--dur-page))}.lb-crown{animation:m-crown var(--dur-page) var(--spring-snappy) backwards;animation-delay:calc(.24s + var(--dur-page) + var(--dur-reward))}.lb-lanes--enter>*{animation-fill-mode:backwards}.lb-lane__runner{position:absolute;left:0;top:0;height:100%;pointer-events:none}.lb-lane__runner .lb-lane__dot{left:100%}.lb-race__runner{position:absolute;left:20px;top:0;height:40px;width:calc((100% - 40px) * var(--lb-race-pct))}.lb-race__runner .lb-race__me{left:100%}.lb-lanes--enter .lb-lane__fill,.lb-race--enter .lb-race__fill{transform-origin:left center;animation:m-grow-x var(--dur-reward) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * var(--stagger))}.lb-lanes--enter .lb-lane__runner,.lb-race--enter .lb-race__runner{animation:m-race-run var(--dur-reward) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * var(--stagger))}.lb-ticket,.lb-lanes{animation:m-fade-in var(--dur-enter) var(--ease-out)}.lb-skeleton>.skeleton{animation:none}@keyframes m-pedestal{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes m-crown{0%{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:translateY(0)}}@keyframes m-race-run{0%{transform:translate(-100%)}to{transform:translate(0)}}@media (prefers-reduced-motion: reduce){.lb-page :is(.lb-ticket,.lb-lanes,.lb-crown,.lb-pedestal,.lb-podium__avatar){animation:m-fade-in var(--dur-enter) linear!important}.lb-sheet-backdrop.m-scrim[data-motion-state=open],.lb-sheet.m-sheet[data-motion-state=open]{animation:m-fade-in .2s linear!important}.lb-sheet-backdrop.m-scrim[data-motion-state=exiting],.lb-sheet.m-sheet[data-motion-state=exiting]{animation:m-fade-out .2s linear!important}}.lb-podium:not([data-entrance]) :is(.lb-pedestal,.lb-vacant-step,.lb-podium__avatar,.lb-ribbon,.lb-value-line,.lb-crown){animation:none}.papers-tabs{display:grid;grid-template-columns:repeat(2,1fr);gap:4px;margin:18px 0;padding:5px;border-radius:28px;background:var(--surface-muted)}.papers-tabs button{min-height:46px;border:0;border-radius:24px;background:transparent;color:var(--text-muted);font:inherit;font-weight:800}.papers-tabs button[aria-selected=true]{background:var(--brand);color:#fff;box-shadow:0 4px 12px color-mix(in srgb,var(--brand) 25%,transparent)}.papers-grid,.papers-part-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px}.papers-test-card__heading,.papers-section-heading,.papers-detail-row,.papers-part-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.papers-test-card__heading h2,.papers-section-heading h2,.papers-detail-row h3{margin:0}.papers-test-card__heading span,.papers-test-card__summary,.papers-detail-row p,.papers-section-heading p{color:var(--text-muted);margin:4px 0 0;font-size:.88em}.papers-test-card progress{display:block;width:100%;height:10px;margin:14px 0;accent-color:var(--brand)}.papers-test-card__actions,.papers-test-chooser__buttons,.papers-actions,.papers-nav{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.papers-test-card__actions>*,.papers-test-chooser__buttons>*{display:flex;align-items:center;justify-content:center;flex:1;color:var(--brand-ink);text-align:center;text-decoration:none}.papers-test-chooser__buttons>*{color:#fff}.papers-part-picker{margin-top:16px}.papers-part-list,.papers-detail-list{display:grid;gap:4px}.papers-part-row{width:100%;min-height:76px;padding:12px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--text);font:inherit;text-align:left;cursor:pointer}.papers-part-row:hover{background:var(--brand-soft)}.papers-part-row:active{transform:translateY(2px)}.papers-part-row__icon{font-size:26px}.papers-part-row span:nth-child(2){flex:1;min-width:0}.papers-part-row strong,.papers-part-row small{display:block}.papers-part-row small{color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.papers-accuracy,.papers-status{display:inline-block;flex:none;padding:3px 9px;border-radius:20px;background:var(--brand-soft);color:var(--brand-ink);font-weight:800;font-size:.82em}.papers-source{padding:16px;border-radius:24px;background:linear-gradient(135deg,#0f3d48,#11606e);box-shadow:0 4px #0b2f37,0 12px 26px #0f3d4840;color:#fff}.papers-source__main{display:flex;align-items:center;gap:16px;min-width:0}.papers-source__cover{flex:none;width:92px;height:125px;border-radius:6px;object-fit:cover;box-shadow:0 10px 20px #00000059;transform:rotate(3deg)}.papers-source__copy{display:grid;gap:6px;min-width:0}.papers-source__badge{justify-self:start;padding:3px 9px;border-radius:999px;background:#ffc93c;color:#5a3d00;font-size:11px;font-weight:900}.papers-source__copy h2{margin:0;color:#fff;font-size:17px;font-weight:900;line-height:1.3;overflow-wrap:anywhere}.papers-source__publisher,.papers-source__count{margin:0;color:#fff;line-height:1.4}.papers-source__publisher{font-size:12.5px;opacity:.92}.papers-source__count{font-size:13px;font-weight:700}.papers-source__footer{margin:12px 0 0;padding-top:10px;border-top:1px solid rgba(255,255,255,.24);color:#fff;font-size:12px;line-height:1.5;opacity:.92}.papers-test-chooser{margin-top:16px}.papers-section-card{margin-top:18px}.papers-section-heading{align-items:flex-start}.papers-section-heading .primary-button{flex:none}.papers-mock-button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;margin:10px 0 4px;padding:12px 14px;border:2px solid var(--brand);border-radius:var(--r-md);background:var(--brand-soft);color:var(--brand-ink);font:inherit;font-weight:900;text-align:left;box-shadow:0 4px 0 var(--edge)}.papers-mock-button:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--edge)}.papers-mock-button:disabled{opacity:.55}.papers-mock-button small{color:var(--text-muted);font-size:.78em;font-weight:700}.papers-detail-row{padding:14px;margin-top:8px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.papers-detail-row>div{min-width:0}.papers-detail-row .primary-button{flex:none;min-width:74px;padding:10px 16px}.papers-detail-row .papers-status{margin-top:8px}.papers-actions button,.papers-nav button{min-height:44px}.papers-passage{white-space:pre-wrap;line-height:1.8}.paper-zoom{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#000000f0;display:flex;align-items:center;justify-content:center;padding:70px 12px 12px}.paper-zoom__close{position:absolute;top:16px;right:16px}.paper-zoom__viewport{max-width:1100px;width:100%;max-height:100%;overflow:auto;touch-action:none}.paper-zoom__viewport img{display:block;object-fit:contain}.question-image[role=button]{cursor:zoom-in}.papers-question .writing-panels{grid-template-columns:repeat(3,minmax(0,1fr))}.practice-options--image .question-image--option{object-fit:contain}.practice-option__picture-label{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--brand-soft);color:var(--brand-ink)}.practice-options--matching{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.practice-options--matching .practice-option{min-height:48px;padding:10px;font-size:16px;overflow-wrap:anywhere}.practice-passage,.papers-passage{overflow-wrap:anywhere}.writing-panels .writing-panel--image{flex-direction:column;min-width:0}.writing-panel--image .question-image{width:100%}.writing-panel--image .writing-panel__caption{width:100%;overflow-wrap:anywhere}@media (max-width:600px){.papers-question .writing-panels{display:flex;flex-direction:column}.papers-question .writing-panel{width:100%}.papers-section-heading{display:block}.papers-section-heading .primary-button{width:100%;margin-top:12px}.papers-test-card__actions{flex-direction:column}.papers-detail-row{align-items:flex-start}.papers-detail-row .primary-button{margin-top:4px}}@media (max-width:380px){.papers-source__main{gap:12px}.papers-source__cover{width:76px;height:103px}.papers-source__copy{gap:4px}.papers-source__publisher{font-size:12px}}.paper-results{gap:16px}.paper-results__hero{position:relative;display:flex;align-items:center;gap:14px;padding:20px 18px;overflow:hidden;border-radius:26px;background:var(--hero-gradient);box-shadow:0 5px 0 var(--hero-edge);color:#fff}.paper-results__hero:after{position:absolute;top:-46px;right:-36px;width:140px;height:140px;border:22px solid rgb(255 255 255 / 10%);border-radius:50%;content:"";pointer-events:none}.paper-results__mascot{position:relative;z-index:1;flex:none}.paper-results__hero-copy{z-index:1;min-width:0}.paper-results__hero-title{margin:0;color:#fff;font-size:17px;font-weight:900;line-height:1.3;overflow-wrap:anywhere}.paper-results__score{margin:6px 0 0;font-size:44px;font-weight:900;line-height:1}.paper-results__score-sub{margin:4px 0 0;font-size:14px;opacity:.95}.paper-results__band{display:inline-block;margin-top:10px;padding:4px 12px;border-radius:999px;background:var(--surface);color:var(--brand-ink);font-size:14px;font-weight:900}.paper-results__time{margin:8px 0 0;font-size:13px;opacity:.9}.paper-results__disclaimer{margin:-4px 0 0;color:var(--text-muted);font-size:13px}.paper-results__skills{display:grid;grid-template-columns:1fr;gap:12px}.paper-skill-card{position:relative;display:grid;gap:10px;padding:16px;border-radius:var(--r-md);border:2px solid var(--border);background:var(--surface);box-shadow:0 4px 0 var(--edge)}.paper-skill-card--reading{background:var(--k-reading-soft)}.paper-skill-card--writing{background:var(--k-writing-soft)}.paper-skill-card--listening{background:var(--k-listening-soft)}.paper-skill-card__heading{display:flex;align-items:center;gap:8px}.paper-skill-card__emoji{font-size:22px}.paper-skill-card__label{flex:1;font-size:16px;font-weight:900}.paper-skill-card__count{font-size:15px;font-weight:800;color:var(--text-muted)}.paper-skill-card__bar{height:10px;border-radius:999px;background:color-mix(in srgb,var(--surface) 65%,transparent);overflow:hidden}.paper-skill-card__bar span{display:block;height:100%;border-radius:999px}.paper-skill-card__footer{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:22px}.paper-skill-card__percent{font-size:15px;font-weight:900}.paper-skill-card__pending{font-size:13px;font-weight:800;color:var(--text-muted)}.paper-skill-card__weak{flex:none;padding:2px 9px;border-radius:999px;background:var(--oops-soft);color:var(--oops-ink);font-size:12px;font-weight:900}.paper-results__parts summary{min-height:44px;display:flex;align-items:center;font-weight:800;cursor:pointer}.paper-results__part-list{display:grid;gap:10px;margin-top:10px}.paper-results__part-row{display:grid;grid-template-columns:1fr auto 72px auto;align-items:center;gap:8px}.paper-results__part-name{min-width:0;font-size:14px;font-weight:800;overflow-wrap:anywhere}.paper-results__part-count{font-size:13px;color:var(--text-muted)}.paper-results__part-bar{height:8px;border-radius:999px;background:var(--surface-muted);overflow:hidden}.paper-results__part-bar span{display:block;height:100%;border-radius:999px}.paper-results__part-percent{font-size:13px;font-weight:800;text-align:right}.paper-results__next{background:var(--sun-soft)}.paper-results__hint{margin:0 0 6px;color:var(--sun-ink);font-weight:800}.paper-results__weak-hint{margin:0;color:var(--sun-ink);font-size:14px}.paper-results__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.paper-results__actions>*{display:flex;align-items:center;justify-content:center;flex:1;min-width:150px;text-align:center;text-decoration:none}.paper-trend__chart{display:block;width:100%;height:auto;margin-top:8px;overflow:visible}.paper-trend__axis{stroke:var(--border);stroke-width:1.5}.paper-trend__tick{fill:var(--text-muted);font-size:11px}.paper-trend__reference{stroke:var(--k-listening);stroke-width:1.5;stroke-dasharray:5 4}.paper-trend__reference-label{fill:var(--k-listening);font-size:11px;font-weight:800}.paper-trend__line{fill:none;stroke:var(--brand);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.paper-trend__dot{fill:var(--brand);stroke:var(--surface);stroke-width:2}.paper-trend__delta{margin:10px 0 0;font-weight:800}.paper-results__wrong{display:grid;gap:12px}.paper-results__wrong-title{margin:6px 0 0;font-size:20px;font-weight:900}.paper-wrong-card{border-radius:var(--r-md)}.paper-wrong-card h3{margin:0 0 8px;font-size:17px}.paper-results__wrong>.primary-button{justify-self:start}@media (min-width: 768px){.page.paper-results{max-width:760px;margin-inline:auto}.paper-results__skills{grid-template-columns:repeat(3,minmax(0,1fr))}.paper-results__part-row{grid-template-columns:1fr auto 140px auto}}.reminders-card{display:flex;flex-direction:column;gap:14px}.reminders-field{display:flex;flex-direction:column;gap:6px}.reminders-field__label{font-size:15px;font-weight:800;color:var(--text)}.reminders-select{min-height:48px;padding:8px 14px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);font:inherit;font-size:18px;font-weight:700}.reminders-select:focus-visible{outline:3px solid var(--brand);outline-offset:2px}.reminders-select:disabled{opacity:.6}.reminders-status{margin:0;padding:12px 14px;border-radius:var(--r-sm);background:var(--ok-soft);color:var(--ok-ink);font-size:17px;font-weight:800}.reminders-note{margin:0;padding:12px 14px;border-radius:var(--r-sm);background:var(--brand-soft);color:var(--brand-ink);font-size:15px;font-weight:700}.reminders-card .link-button{min-height:44px;align-self:center}.app-main:has(>.sp-report-screen){padding:0 0 28px}.sp-report-screen{width:100%;margin:0 auto;background:radial-gradient(circle at 0% 0%,#ffe6f0 0,transparent 38%),radial-gradient(circle at 100% 12%,#e4f5ff 0,transparent 34%),var(--bg);overflow-wrap:anywhere;line-height:normal}.sp-report-screen p,.sp-report-screen h1,.sp-report-screen h2{margin:0}.sp-report-screen button{min-height:48px;min-width:48px;cursor:pointer;font-family:inherit;white-space:normal}.sp-report-screen button:disabled{opacity:.55;cursor:not-allowed}.sp-report-screen .sp-topbar-title h2{font-size:15px;font-weight:900}.sp-report-grid{display:grid;grid-template-columns:minmax(0,1fr);padding:4px 16px 0}.sp-report-summary,.sp-report-cards{min-width:0}.sp-celebrate{text-align:center;padding:6px 0 2px;position:relative}.sp-celebrate img{width:120px;height:120px;object-fit:contain}.sp-celebrate h1{font-size:23px;font-weight:900;margin-top:4px}.sp-celebrate p{font-size:14px;color:var(--text-muted);margin-top:2px;line-height:1.5}.sp-confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;font-size:20px}.sp-confetti span{position:absolute;animation:sp-report-float var(--motion-duration-float) ease-in-out infinite}.sp-confetti span:nth-child(1){left:18%;top:6px}.sp-confetti span:nth-child(2){right:16%;top:18px;animation-delay:-.7s}.sp-confetti span:nth-child(3){left:26%;top:84px;animation-delay:-1.4s}.sp-confetti span:nth-child(4){right:22%;top:96px;animation-delay:-2.1s}@keyframes sp-report-float{50%{transform:translateY(-5px) rotate(5deg)}}.sp-rings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}.sp-ring{background:var(--surface);border-radius:20px;padding:12px 6px;text-align:center;box-shadow:0 3px 0 var(--edge)}.sp-ring-gauge{width:64px;height:64px;margin:0 auto;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--sp-ring-color) var(--sp-ring-value),var(--sp-ring-track) 0)}.sp-ring-gauge span{width:48px;height:48px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-size:20px}.sp-ring b{display:block;font-size:14px;margin-top:6px}.sp-ring small{font-size:12px;color:var(--text-muted)}.sp-report-card{background:var(--surface);border-radius:22px;padding:14px;margin-top:12px;box-shadow:0 4px 0 var(--edge),var(--shadow)}.sp-report-card h2{font-size:16px;font-weight:900;margin-bottom:8px}.sp-report-card>p{font-size:14px;line-height:1.5}.sp-good{padding:0;margin:0}.sp-good li{list-style:none;display:flex;gap:8px;font-size:14px;line-height:1.5;margin:4px 0}.sp-fix{border-radius:16px;background:var(--surface-muted);padding:10px 12px}.sp-fix+.sp-fix{margin-top:10px}.sp-fix-from{font-size:14px;color:var(--text-muted)}.sp-fix-from s{text-decoration-color:var(--sp-strike)}.sp-fix-to{font-size:16px;font-weight:900;color:var(--ok-ink);margin-top:2px;line-height:1.5}.sp-fix-why{font-size:13px;margin-top:4px;line-height:1.5}.sp-fix>.sp-tool{margin-top:8px;max-width:100%}.sp-report-screen .speaking-audio-error{display:block;font-size:12px;color:var(--text-muted);line-height:1.5}.sp-report-words{display:flex;flex-wrap:wrap;gap:8px}.sp-report-word{display:flex;flex-wrap:wrap;align-items:center;gap:6px;max-width:100%}.sp-word-pill{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;border:0;border-radius:999px;background:var(--sp-paper-soft);color:var(--text);font-weight:900;font-size:15px;max-width:100%;overflow-wrap:anywhere}.sp-report-dock{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:10px;position:sticky;bottom:0;padding:26px 18px max(22px,env(safe-area-inset-bottom));margin:16px -16px 0;background:var(--surface);border-radius:28px 28px 0 0;box-shadow:0 -8px 24px #4b3a8f1f;z-index:2}.sp-report-retry{min-height:52px!important;border:2px solid var(--edge);border-radius:18px;background:var(--surface);color:var(--brand-ink);font-size:15px;font-weight:900;padding:10px;box-shadow:0 3px 0 var(--edge)}.sp-report-complete{min-height:52px!important;border:0;border-radius:20px;background:var(--brand);color:var(--surface);font-size:17px;font-weight:900;padding:10px;box-shadow:0 5px 0 var(--brand-deep)}.sp-report-screen .sp-error{background:var(--sun-soft);padding:10px;border-radius:var(--r-sm);margin-top:12px;font-size:14px}@media (min-width: 768px){.sp-report-screen{max-width:720px}}@media (min-width: 1024px){.app-shell:has(.sp-report-screen){max-width:1180px}.sp-report-screen{max-width:1180px}.sp-report-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);column-gap:24px;align-items:start;padding:6px 20px 24px}.sp-report-summary{grid-column:1;grid-row:1 / 3;padding-top:18px}.sp-report-cards{grid-column:2}.sp-report-dock{grid-column:2;position:static;margin:16px 0 0;border-radius:28px}}@media (prefers-reduced-motion: reduce){.sp-report-screen *,.sp-report-screen *:before,.sp-report-screen *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.speaking-page{max-width:780px;margin:0 auto;padding-bottom:100px;overflow-wrap:anywhere}.speaking-header,.speaking-actions,.speaking-scenarios,.speaking-words{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.speaking-header{justify-content:space-between;color:#58645c;font-size:14px}.speaking-page h1{margin:24px 0 12px}.speaking-page button,.speaking-page .primary-button,.speaking-page .secondary-button{min-height:48px;white-space:normal}.speaking-notice{padding:14px 18px;border-radius:16px;background:#eff7f1;color:#31513d}.speaking-modes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.speaking-mode{display:flex;flex-direction:column;align-items:flex-start;gap:12px;text-align:left;cursor:pointer;font:inherit}.speaking-mode b{font-size:21px}.speaking-mode span{color:#57645b;font-size:15px}.speaking-page button:disabled{opacity:.55;cursor:not-allowed}.speaking-question{background:#f0f7f1;border:1px solid #ceded1}.speaking-question h2{font-size:clamp(23px,4vw,32px);line-height:1.5}.speaking-eyebrow{color:#58645c}.speaking-answer{margin-top:16px}.speaking-answer>p[lang]{font-size:21px}.speaking-word{border:0;border-bottom:3px solid;border-radius:12px;padding:8px 13px;font-size:19px}.speaking-word--good{color:#215636;background:#e6f4e9}.speaking-word--ok{color:#715006;background:#fff4cf}.speaking-word--try{color:#68439a;background:#f0e9fa}.speaking-answer small{display:block;margin-top:14px;color:#58645c}.speaking-mic-area{display:flex;align-items:center;flex-direction:column;gap:12px;margin:22px 0;text-align:center}.speaking-mic-area p{margin:4px 0}.speaking-mic-area meter{width:min(280px,90%);height:18px}.speaking-mic{width:min(300px,100%);min-height:88px!important;border:0;border-radius:28px;background:#285b43;color:#fff;font-size:24px;font-weight:700;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:pointer}.speaking-mic--active{background:#9a4e24}.speaking-message{padding:14px;border-radius:14px;background:#fff4d4;color:#614717}.speaking-bands{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.speaking-bands .card{display:flex;flex-direction:column;gap:12px;padding:16px}.speaking-report>.card{margin:18px 0}.speaking-report li{margin:12px 0}.speaking-page button:focus-visible,.speaking-page a:focus-visible{outline:3px solid #7353a4;outline-offset:4px}@media (max-width: 480px){.speaking-modes,.speaking-bands{grid-template-columns:1fr}.speaking-bands .card{flex-direction:row;justify-content:space-between}}.speaking-picture-set{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:12px;margin:12px 0}.speaking-picture-set .question-image--prompt{max-height:none;margin:0}.speaking-paper-tests{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px}.speaking-paper-tests h3{margin:0}.speaking-paper-tests .speaking-actions>button{flex:1;min-width:0}.speaking-speech-active{border-radius:.5rem;background:#fff2bf;box-shadow:0 0 0 .35rem #fff2bf}.speaking-question>p[lang]{font-size:clamp(21px,3vw,28px);line-height:1.4;margin:12px 0}.speaking-answer p{margin:8px 0}.speaking-answer .speaking-words{margin-top:10px;gap:6px}.speaking-next{margin-top:12px;display:grid;gap:8px;border:2px solid #ceded1}.speaking-next h3{margin:0}.speaking-page .speaking-next__primary{width:100%;min-height:58px;font-size:22px}.speaking-next__alternatives{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.speaking-next small,.speaking-shadow-result{color:#58645c}.speaking-audio-error{display:block;flex-basis:100%;margin-block:8px;color:#614717;font-size:15px}.speaking-text-button{background:none;border:0;color:#31513d;text-decoration:underline;text-underline-offset:4px;padding:8px;font:inherit;cursor:pointer}.speaking-finish{display:block;margin:24px auto 0;font-size:14px}.speaking-wait{display:flex;align-items:center;flex-wrap:wrap;gap:10px;min-height:48px}.speaking-spinner{display:inline-block;vertical-align:middle;width:14px;height:14px;margin-right:8px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:speaking-spin .8s linear infinite}.speaking-bars{display:inline-flex;vertical-align:middle;align-items:center;gap:3px;height:20px;margin-inline:8px}.speaking-bars i{display:block;width:3px;height:14px;background:currentColor;animation:speaking-bar .7s ease-in-out infinite alternate}.speaking-bars i:nth-child(2){animation-delay:-.3s}.speaking-bars i:nth-child(3){animation-delay:-.5s}.speaking-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}@keyframes speaking-spin{to{transform:rotate(360deg)}}@keyframes speaking-bar{0%{transform:scaleY(.3)}to{transform:scaleY(1)}}@media (prefers-reduced-motion: reduce){.speaking-spinner,.speaking-bars i{animation:none}}@media (min-width: 768px) and (orientation: landscape){.page.speaking-page{max-width:1000px;gap:8px}.speaking-page h1{margin:8px 0;font-size:26px}.speaking-page .speaking-question,.speaking-page .speaking-answer,.speaking-page .speaking-next{padding:14px 18px}.speaking-eyebrow{margin:6px 0}.speaking-answer{margin-top:10px}.speaking-answer small{margin-top:8px}.speaking-answer .speaking-message{padding:8px 12px}.speaking-turn--answered{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.4fr);gap:12px;align-items:start}.speaking-turn--answered>.speaking-question{grid-column:1;grid-row:1 / 3}.speaking-turn--answered>.speaking-answer{grid-column:2;margin-top:0}.speaking-turn--answered>.speaking-next{grid-column:2;margin-top:0}}:root{--sp-dock-height: 240px;--sp-sheet-backdrop: rgba(43, 35, 80, .38);--sp-word-good: #7cf0c2;--sp-word-ok: #ffd66b;--sp-word-try: #ffb0c8;--sp-progress-track: #e7e0fb;--sp-examiner: var(--brand);--sp-examiner-soft: var(--brand-soft);--sp-topic: #18b5c9;--sp-topic-soft: #dff7fa;--sp-scene: #ff9b3d;--sp-scene-soft: #fff0dc;--sp-paper: var(--pink);--sp-paper-soft: #ffe6f0;--sp-rec: #ff5f7e;--sp-ring-track: #eee8fb;--sp-strike: #c9bff0}.sp-hub{line-height:normal;max-width:720px;margin:0 auto;padding-bottom:28px;overflow-wrap:anywhere}.sp-hub h1,.sp-hub h2,.sp-hub p{margin:0}.sp-hub button{font:inherit;color:inherit;cursor:pointer;min-height:48px}.sp-hub button:disabled{opacity:.55;cursor:not-allowed}.sp-hub-main,.sp-hub-side{min-width:0}.sp-hero{position:relative;border-radius:28px;padding:18px 18px 18px 132px;min-height:132px;background:linear-gradient(135deg,#8c6bff,#b48bff 55%,#ff9cc6);color:var(--surface);box-shadow:0 10px 24px #7c5cff47;overflow:hidden}.sp-hero img{position:absolute;left:8px;bottom:-6px;width:120px;height:auto;filter:drop-shadow(0 6px 10px rgba(0,0,0,.18))}.sp-hero h1{font-size:24px;font-weight:900;letter-spacing:.5px}.sp-hero p{font-size:14px;opacity:.95;margin-top:4px;line-height:1.45}.sp-chips{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.sp-chip{padding:4px 10px;border-radius:999px;font-size:12px;font-weight:800;background:#ffffff38}.sp-bubble-deco{position:absolute;right:-30px;top:-30px;width:120px;height:120px;border-radius:50%;background:#ffffff1f;pointer-events:none}.sp-availability{margin-top:18px;padding:14px 18px;border-radius:var(--r-md);background:var(--sun-soft);font-size:14px}.sp-section-title{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:22px 4px 10px}.sp-section-title h2{font-size:19px;font-weight:900}.sp-section-title>span{font-size:13px;color:var(--text-muted)}.sp-modes{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.sp-mode{display:flex;align-items:center;gap:14px;padding:14px;border-radius:22px;background:var(--surface);border:2px solid transparent;box-shadow:0 4px 0 var(--edge),var(--shadow);position:relative;text-align:left}.sp-mode-icon{flex:none;width:58px;height:58px;border-radius:var(--r-md);display:grid;place-items:center;font-size:30px}.sp-mode-copy{min-width:0}.sp-mode-title{display:block;font-size:18px;font-weight:900}.sp-mode-description{display:block;font-size:13px;color:var(--text-muted);margin-top:2px;line-height:1.4}.sp-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.sp-meta>span{font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px}.sp-go{margin-left:auto;flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:900;color:var(--surface)}.sp-mode--examiner .sp-mode-icon,.sp-mode--examiner .sp-meta>span{background:var(--sp-examiner-soft)}.sp-mode--examiner .sp-meta>span{color:var(--brand-ink)}.sp-mode--examiner .sp-go{background:var(--sp-examiner)}.sp-mode--topic .sp-mode-icon,.sp-mode--topic .sp-meta>span{background:var(--sp-topic-soft)}.sp-mode--topic .sp-meta>span{color:#0b7f8e}.sp-mode--topic .sp-go{background:var(--sp-topic)}.sp-topic-picker{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.sp-topic-picker button{border:1px solid var(--border);border-radius:999px;padding:8px 14px;background:var(--surface);font-size:13px}.sp-topic-picker button[aria-pressed=true]{background:var(--sp-topic-soft);border-color:var(--sp-topic);color:#0b7f8e}.sp-scenes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.sp-scene{border:0;background:var(--surface);border-radius:var(--r-md);padding:10px 4px 9px;text-align:center;box-shadow:0 3px 0 var(--edge);min-width:0}.sp-scene-icon{display:grid;place-items:center;width:44px;height:44px;margin:0 auto 4px;border-radius:50%;background:var(--sp-scene-soft);font-size:24px}.sp-scene b{display:block;font-size:13px}.sp-scene small{display:block;font-size:10px;color:var(--text-muted)}.sp-paper{background:var(--surface);border-radius:22px;padding:14px;box-shadow:0 4px 0 var(--edge),var(--shadow)}.sp-segmented{display:flex;background:var(--sp-paper-soft);border-radius:999px;padding:4px;gap:4px}.sp-segmented button{flex:1;min-width:0;text-align:center;padding:7px 0;border:0;border-radius:999px;font-size:14px;font-weight:800;color:#c2407a;background:transparent}.sp-segmented button[aria-pressed=true]{background:var(--sp-paper);color:var(--surface);box-shadow:0 3px #d94c86}.sp-parts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.sp-part{border:0;border-radius:var(--r-md);padding:12px;background:var(--sp-paper-soft);text-align:left}.sp-part b{display:block;font-size:15px}.sp-part .sp-part-label{display:flex;align-items:center;gap:8px}.sp-part>span{display:block;font-size:12px;color:var(--text-muted);margin-top:2px;line-height:1.35}.sp-part .sp-part-go{margin-top:6px;font-weight:800;color:#c2407a}.sp-part .sp-thumbs{display:flex;gap:4px;margin-top:8px}.sp-thumbs i{flex:1;max-width:28px;height:22px;border-radius:6px;background:var(--surface);border:1px solid #ffc6dc}.sp-paper-status{padding-top:12px;font-size:14px}.sp-privacy{text-align:center;font-size:12px;color:var(--text-muted);margin-top:18px}.sp-privacy p+p{margin-top:6px}@media (min-width: 1024px){.app-shell:has(.sp-hub){max-width:1180px}.sp-hub{max-width:1180px;padding:4px 20px 28px}.sp-hub-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:22px}.sp-hero{min-height:170px;padding:26px 26px 26px 180px}.sp-hero img{width:165px}.sp-hero h1{font-size:32px}.sp-hero p{font-size:16px}.sp-phone-break{display:none}.sp-modes{grid-template-columns:repeat(2,minmax(0,1fr))}.sp-mode{flex-direction:column;align-items:flex-start;padding:18px}.sp-mode .sp-go{position:absolute;right:16px;top:16px}.sp-scene{padding:14px 6px}.sp-hub-side>section:first-child>.sp-section-title{margin-top:4px}}@media (prefers-reduced-motion: reduce){.sp-hub *,.sp-hub *:before,.sp-hub *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.app-main:has(>.sp-session-screen){padding:0 0 28px}.sp-session-screen{display:flex;flex-direction:column;width:100%;max-width:720px;height:max(540px,calc(100dvh - 72px - env(safe-area-inset-top)));margin:0 auto;overflow-wrap:anywhere}.sp-session-screen button{min-height:48px;min-width:48px;max-width:100%;white-space:normal;overflow-wrap:anywhere;cursor:pointer;font-family:inherit}.sp-session-screen button:disabled{cursor:not-allowed;opacity:.55}.sp-session-screen p,.sp-session-screen h1{margin:0}.sp-topbar{display:flex;align-items:center;gap:10px;padding:10px 16px 8px;flex:none}.sp-close{flex:none;width:48px;height:48px;border:0;border-radius:50%;background:var(--surface);box-shadow:0 3px 0 var(--edge);font-weight:900;color:var(--text-muted)}.sp-topbar-title{flex:1;min-width:0;text-align:center}.sp-topbar-title h1{font-size:15px;font-weight:900}.sp-topbar-title p{font-size:12px;color:var(--text-muted)}.sp-count{flex:none;font-size:13px;font-weight:900;color:var(--brand-ink);background:var(--brand-soft);padding:6px 10px;border-radius:999px}.sp-dots{display:flex;gap:5px;padding:0 16px 6px;flex:none}.sp-dots i{flex:1;height:7px;border-radius:99px;background:var(--sp-progress-track)}.sp-dots .sp-dot-done{background:var(--ok)}.sp-dots .sp-dot-current{background:var(--brand)}.sp-stepper{display:flex;align-items:center;gap:8px;margin:2px 16px 4px;font-size:12px;font-weight:800;color:var(--text-muted)}.sp-stepper span{padding:4px 10px;border-radius:999px;background:var(--surface);box-shadow:0 2px 0 var(--edge)}.sp-stepper [aria-current=step]{background:var(--brand);color:var(--surface);box-shadow:0 2px 0 var(--brand-deep)}.sp-stepper .sp-step-arrow{padding:0;background:none;box-shadow:none}.sp-session-grid{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0}.sp-conversation{flex:1;min-height:0;overflow-y:auto;padding:10px 16px 20px;display:flex;flex-direction:column;gap:12px;scroll-padding:16px}.sp-conversation>*{flex-shrink:0}.sp-teacher,.sp-tip{display:flex;gap:10px;align-items:flex-start}.sp-avatar{flex:none;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--surface),var(--brand-soft));box-shadow:0 3px 0 var(--edge);overflow:hidden;display:grid;place-items:center}.sp-avatar img{width:60px;margin-top:10px}.sp-avatar-mini{width:38px;height:38px}.sp-avatar-mini img{width:46px;margin-top:7px}.sp-bubble{flex:1;min-width:0;background:var(--surface);border-radius:6px 22px 22px;padding:14px 16px;box-shadow:0 4px 0 var(--edge),var(--shadow)}.sp-bubble>small{font-size:12px;font-weight:800;color:var(--brand-ink)}.sp-teacher-english{font-size:22px;font-weight:900;line-height:1.35;margin-top:4px}.sp-tools{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.sp-tool{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:7px 11px;border:0;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:13px;font-weight:800}.sp-bubble .sp-audio-note{margin-top:8px;color:var(--text-muted);font-size:12px;line-height:1.5}.sp-typing{display:flex;gap:10px;align-items:flex-start}.sp-typing__bubble{flex:1;min-width:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--surface);border-radius:6px 22px 22px;padding:14px 16px;box-shadow:0 4px 0 var(--edge),var(--shadow)}.sp-typing__praise{flex:1;min-width:0;font-size:16px;font-weight:800;line-height:1.4;color:var(--brand-ink);overflow-wrap:anywhere}.sp-typing__dots{flex:none;display:inline-flex;align-items:center;gap:5px;height:16px}.sp-typing__dots i{width:7px;height:7px;border-radius:50%;background:var(--brand);animation:sp-typing-bounce 1.2s ease-in-out infinite}.sp-typing__dots i:nth-child(2){animation-delay:.15s}.sp-typing__dots i:nth-child(3){animation-delay:.3s}@keyframes sp-typing-bounce{0%,60%,to{transform:translateY(0);opacity:.45}30%{transform:translateY(-4px);opacity:1}}@media (prefers-reduced-motion: reduce){.sp-typing__dots i{animation:none;opacity:.5;transform:none}}.sp-pictures{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}.sp-pictures>*{min-width:0;max-width:100%}.sp-pictures .question-image{width:100%;min-width:0;min-height:48px;max-height:150px;margin:0;border-radius:var(--r-sm);object-fit:contain}.sp-session-screen .sp-hint{margin-left:62px;background:var(--sun-soft);border-radius:16px;padding:10px 12px;font-size:14px;color:#7a5a00}.sp-child{align-self:flex-end;max-width:86%;background:var(--brand);color:var(--surface);border-radius:22px 6px 22px 22px;padding:12px 14px;box-shadow:0 4px 0 var(--brand-deep)}.sp-child>small{font-size:12px;opacity:.85;font-weight:800}.sp-child-english{font-size:18px;font-weight:800;line-height:1.5}.sp-word{display:inline-flex;align-items:center;justify-content:center;max-width:100%;padding:5px 3px 1px;margin:0 1px;border:0;border-bottom:3px solid transparent;border-radius:0;font-size:inherit;font-weight:inherit;line-height:1.5;color:inherit;background:none;vertical-align:baseline}.sp-word-good{border-bottom-color:var(--sp-word-good)}.sp-word-ok{border-bottom-color:var(--sp-word-ok)}.sp-word-try{border-bottom-color:var(--sp-word-try);background:#ffffff2e;border-radius:6px}.sp-word-legend{text-align:right;color:var(--text-muted);font-size:11px}.sp-scores{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}.sp-score{display:flex;align-items:center;gap:5px;background:var(--surface);border-radius:999px;padding:5px 10px;font-size:12px;font-weight:800;box-shadow:0 2px 0 var(--edge)}.sp-score i{font-style:normal;color:var(--sun-deep)}.sp-tip-card{flex:1;min-width:0;background:var(--surface);border-radius:6px 22px 22px;padding:12px 14px;box-shadow:0 4px 0 var(--edge),var(--shadow);border-left:5px solid var(--sun)}.sp-tip-chinese{font-size:15px;line-height:1.55}.sp-better{margin-top:8px;padding:10px 12px;border-radius:14px;background:var(--ok-soft);font-size:17px;font-weight:900;color:var(--ok-ink)}.sp-listen{margin-top:10px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 14px;border:0;border-radius:999px;font-size:14px;font-weight:900;background:var(--brand-soft);color:var(--brand-ink)}.sp-listen[aria-busy=true]{background:var(--surface-muted);color:var(--text-muted)}.sp-listen-playing{background:var(--brand);color:var(--surface)}.sp-session-screen .speaking-speech-active{outline:3px solid var(--sun);outline-offset:3px;border-radius:10px;background:transparent;box-shadow:none}.sp-dock-card{flex:none;min-width:0;background:var(--surface);border-radius:28px 28px 0 0;box-shadow:0 -8px 24px #4b3a8f1f;padding:14px 18px 22px;text-align:center}.sp-say{font-size:14px;color:var(--text-muted);font-weight:700}.sp-listen-row{display:flex;align-items:center;justify-content:center;gap:10px}.sp-listen-row .sp-say{text-align:left}.sp-listen-bobo{flex:none;width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--surface),var(--brand-soft));box-shadow:0 3px 0 var(--edge);overflow:hidden;display:grid;place-items:center;transform:translateY(calc(var(--sp-level, 0) * -4px)) rotate(calc(-6deg + var(--sp-level, 0) * 10deg));transition:transform .12s var(--ease-out)}.sp-listen-bobo img{width:48px;margin-top:8px}.sp-mic{width:92px;height:92px;border:0;border-radius:50%;margin:0;z-index:1;display:grid;place-items:center;font-size:38px;color:var(--surface);background:linear-gradient(160deg,#9b7dff,#6a48f0);box-shadow:0 6px 0 var(--brand-deep),0 12px 24px #7c5cff59;position:relative;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.sp-mic-recording{background:linear-gradient(160deg,#ff8aa3,var(--sp-rec));box-shadow:0 6px #d9435f,0 12px 24px #ff5f7e66}.sp-mic-wrap{position:relative;width:92px;height:92px;margin:10px auto 6px}.sp-mic-halo{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.sp-mic-halo:before,.sp-mic-halo:after{content:"";position:absolute;border-radius:50%;pointer-events:none;transition:transform 90ms linear,opacity 90ms linear}.sp-mic-halo:before{top:-10px;right:-10px;bottom:-10px;left:-10px;background:color-mix(in srgb,var(--sp-rec) 20%,transparent);transform:scale(calc(1 + var(--sp-level, 0) * .3))}.sp-mic-halo:after{top:-18px;right:-18px;bottom:-18px;left:-18px;border:3px solid color-mix(in srgb,var(--sp-rec) 38%,transparent);opacity:calc(.25 + var(--sp-level, 0) * .75);transform:scale(calc(1 + var(--sp-level, 0) * .5))}.sp-mic-nudge{animation:sp-nudge 1.2s var(--ease-move) infinite}@keyframes sp-nudge{0%,to{scale:1}50%{scale:1.07}}.sp-mic-waiting{opacity:.6}.sp-mic:active{transform:translateY(3px);box-shadow:0 3px 0 var(--brand-deep),0 8px 18px #7c5cff4d}.sp-mic-recording:active{box-shadow:0 3px #d9435f,0 8px 18px #ff5f7e4d}.sp-mic-hint{font-size:13px;color:var(--text-muted);font-weight:700}.sp-live{align-self:flex-end;margin:0 0 10px auto;max-width:92%;text-align:left;background:var(--brand-soft);color:var(--text);border:2px dashed color-mix(in srgb,var(--brand) 45%,transparent);border-radius:22px 6px 22px 22px;padding:10px 14px}.sp-live>small{font-size:12px;font-weight:800;color:var(--brand)}.sp-live-text{font-size:18px;font-weight:800;line-height:1.45;min-height:26px;max-height:7.5em;overflow-y:auto;overflow-wrap:anywhere}.sp-live-placeholder{color:var(--text-muted);font-size:15px}.sp-live-caret{display:inline-block;width:2px;height:1.05em;margin-left:3px;vertical-align:-2px;background:var(--brand);animation:sp-caret 1s steps(1) infinite}.sp-live-done{border-style:solid}@keyframes sp-caret{50%{opacity:0}}.sp-live-word{display:inline-block;border-radius:6px;padding:0 2px;margin:0 -2px;animation:sp-word-lit var(--dur-reward) var(--ease-out) both}@keyframes sp-word-lit{0%{opacity:0;transform:translateY(6px) scale(.7);background:var(--sun-soft);color:var(--brand-ink)}35%{opacity:1;transform:scale(1.08);background:var(--sun-soft);color:var(--brand-ink)}to{opacity:1;transform:none;background:transparent;color:inherit}}@keyframes sp-word-fade{0%{background:var(--sun-soft)}to{background:transparent}}@media (prefers-reduced-motion: reduce){.sp-live-caret{animation:none}}.sp-mic-caption{font-size:15px;font-weight:900}.sp-wave{display:flex;justify-content:center;gap:4px;height:34px;align-items:center;margin-top:6px}.sp-wave i{width:6px;border-radius:3px;background:var(--sp-rec);opacity:.45;transition:height 90ms linear,opacity .12s linear}.sp-wave i.sp-wave-on{opacity:1}.sp-timer{font-size:13px;font-weight:900;color:var(--sp-rec)}.sp-text-button{background:none;border:0;color:var(--text-muted);font-size:13px;padding:8px 12px}.sp-quit{display:block;text-align:center;text-decoration:underline;margin:10px auto 0}.sp-wait{min-height:125px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;font-size:15px;font-weight:800;color:var(--text-muted)}.sp-wait>span{display:inline-flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.sp-loading-dots{display:inline-flex;gap:6px}.sp-loading-dots i{width:10px;height:10px;background:var(--brand);border-radius:50%;animation:sp-dots 1.2s ease-in-out infinite}.sp-loading-dots i:nth-child(2){animation-delay:.15s}.sp-loading-dots i:nth-child(3){animation-delay:.3s}.sp-scoring{min-height:125px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}.sp-scoring p{margin:0}.sp-scoring-stars{display:inline-flex;gap:8px}.sp-scoring-star{width:26px;height:26px;color:var(--sp-progress-track);animation:sp-star-twinkle 1.2s var(--ease-move) infinite;animation-delay:calc(var(--i) * .2s)}.sp-scoring-title{font-size:16px;font-weight:900;color:var(--text)}.sp-scoring-track{display:block;width:min(240px,80%);height:10px;border-radius:999px;background:var(--sp-progress-track);overflow:hidden}.sp-scoring-track i{display:block;height:100%;border-radius:999px;background:var(--reward-xp-gradient);transition:width .25s linear}.sp-scoring-step{font-size:13px;font-weight:700;color:var(--text-muted);min-height:1.5em}@keyframes sp-star-twinkle{0%,to{transform:scale(.85);color:var(--sp-progress-track)}40%{transform:scale(1.12);color:var(--sun)}}.sp-reward{--rw-soft: var(--brand-soft);--rw-edge: var(--hero-edge);--rw-ink: var(--brand-ink);position:relative;display:flex;align-items:center;gap:12px;width:100%;max-width:340px;margin:2px auto 0;padding:10px 18px 10px 10px;border-radius:var(--r-lg);border:2px solid var(--rw-edge);background:var(--rw-soft);box-shadow:0 4px 0 var(--edge);text-align:left;animation:sp-reward-in var(--dur-page) var(--spring-bouncy) both}.sp-reward--super{--rw-soft: var(--sun-soft);--rw-edge: var(--sun-edge);--rw-ink: var(--sun-ink)}.sp-reward--great{--rw-soft: var(--ok-soft);--rw-edge: var(--first-day-done-edge);--rw-ink: var(--ok-ink)}.sp-reward--good{--rw-soft: var(--brand-soft);--rw-edge: var(--hero-edge);--rw-ink: var(--brand-ink)}.sp-reward--brave{--rw-soft: var(--k-speaking-soft);--rw-edge: color-mix(in srgb, var(--k-speaking) 35%, transparent);--rw-ink: var(--text)}.sp-reward-bobo{position:relative;flex:none;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--surface),var(--brand-soft));box-shadow:0 3px 0 var(--edge);overflow:visible}.sp-reward-clip{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;overflow:hidden}.sp-reward-clip img{width:56px;margin-top:9px}.sp-reward-face{position:absolute;right:-4px;bottom:-4px;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:var(--surface);font-size:15px;line-height:1;box-shadow:0 2px 0 var(--edge)}.sp-reward-body{display:flex;flex-direction:column;gap:2px;min-width:0}.sp-reward-body b{font-size:17px;font-weight:900;color:var(--rw-ink)}.sp-reward-body small{font-size:13px;font-weight:700;color:var(--text-muted)}.sp-reward-stars{display:flex;align-items:center;gap:4px}.sp-reward-star{width:26px;height:26px;color:var(--sun);filter:drop-shadow(0 2px 0 var(--sun-deep));animation:sp-reward-star var(--dur-page) var(--spring-bouncy) both;animation-delay:calc(.14s + var(--i) * .14s)}.sp-reward--super .sp-reward-bobo{animation:sp-reward-hop .52s var(--ease-move) .2s 2}.sp-reward--great .sp-reward-bobo{animation:sp-reward-hop .52s var(--ease-move) .2s 1}.sp-reward--good .sp-reward-bobo{--nod: 8;animation:sp-reward-nod .6s var(--ease-move) .2s 1}.sp-reward--brave .sp-reward-bobo{--nod: 4;animation:sp-reward-nod .6s var(--ease-move) .2s 1}.sp-reward--super:before,.sp-reward--super:after,.sp-reward--great:before,.sp-reward--great:after{content:"✦";position:absolute;top:-9px;font-size:14px;line-height:1;color:var(--sun-deep);opacity:0;pointer-events:none;animation:sp-sparkle .9s var(--ease-move) 2}.sp-reward--super:before,.sp-reward--great:before{left:14px}.sp-reward--super:after,.sp-reward--great:after{right:14px;animation-delay:.2s}@keyframes sp-reward-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}@keyframes sp-reward-star{0%{opacity:0;transform:scale(0) rotate(-30deg)}to{opacity:1;transform:none}}@keyframes sp-reward-hop{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes sp-reward-nod{0%,to{transform:rotate(0)}35%{transform:rotate(calc(var(--nod) * -1deg))}70%{transform:rotate(calc(var(--nod) * .75deg))}}@keyframes sp-sparkle{0%,to{transform:scale(0);opacity:0}50%{transform:scale(1);opacity:1}}.sp-next-primary{width:100%;min-height:60px!important;padding:10px;border:0;border-radius:20px;background:var(--brand);color:var(--surface);font-size:19px;font-weight:900;box-shadow:0 5px 0 var(--brand-deep)}.sp-alternatives{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.sp-alternatives button{min-height:52px;padding:8px;border-radius:18px;background:var(--surface);border:2px solid var(--edge);font-size:15px;font-weight:900;color:var(--brand-ink);box-shadow:0 3px 0 var(--edge)}.sp-alternatives button:only-child{grid-column:1 / -1}.sp-session-screen .sp-keep{font-size:12px;color:var(--text-muted);margin-top:8px}.sp-error,.sp-unavailable,.sp-audio-error,.sp-daily-notice,.sp-reference{font-size:13px;color:var(--text-muted)}.sp-session-screen .sp-error{background:var(--sun-soft);padding:10px;border-radius:var(--r-sm);margin-top:8px}.sp-audio-error{display:block}.sp-scroll-anchor{height:1px}@keyframes sp-dots{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.sp-immersive{--nav-h: 0px}.sp-immersive .app-main{padding:0;min-width:0}.sp-hub,.sp-bubble,.sp-tip-card,.sp-child{overflow-wrap:anywhere}.sp-word{display:inline-block;white-space:normal;overflow-wrap:anywhere}.sp-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:flex-end;justify-content:center;padding:16px 16px max(16px,env(safe-area-inset-bottom));background:var(--sp-sheet-backdrop)}.sp-exit-sheet{width:min(100%,420px);padding:24px;border-radius:28px;background:var(--surface);color:var(--text);box-shadow:0 8px 0 var(--edge),var(--shadow);display:grid;gap:18px;text-align:center}.sp-exit-sheet h2{margin:0 0 4px;font-size:22px}.sp-exit-sheet button{min-height:48px;font-family:inherit;cursor:pointer;white-space:normal}.sp-sheet-finish{padding:10px;border:2px solid var(--edge);border-radius:18px;background:var(--surface);color:var(--brand-ink);font-weight:800}@media (max-width: 767px){.sp-session-grid{position:relative}.sp-conversation{padding-bottom:calc(var(--sp-dock-height) + 20px);scroll-padding-bottom:calc(var(--sp-dock-height) + 20px)}.sp-dock-card{position:absolute;bottom:0;width:100%;padding-bottom:max(22px,env(safe-area-inset-bottom))}}@media (min-width: 768px){.sp-sheet-backdrop{align-items:center}}@media (min-width: 768px) and (max-width: 1023px){.sp-session-screen{max-width:720px}.sp-pictures{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1024px){.app-shell:has(.sp-session-screen){max-width:1180px}.sp-session-screen{max-width:1180px;height:auto;min-height:calc(100dvh - 180px)}.sp-session-grid{display:grid;grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:24px;padding:6px 20px 24px}.sp-conversation{padding:10px 0 20px;overflow:visible}.sp-dock-card{position:sticky;top:100px;border-radius:28px;margin-top:10px}.sp-pictures{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-reduced-motion: reduce){[class^=sp-] *,[class^=sp-]:before,[class^=sp-]:after,[class^=sp-] *:before,[class^=sp-] *:after,[class^=sp-]{animation:none!important;transition:none!important;scroll-behavior:auto!important}.sp-session-screen *,.sp-session-screen *:before,.sp-session-screen *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.sp-session-screen .sp-word{min-width:0;min-height:40px;padding:2px 2px 0;margin:0 1px}@media (prefers-reduced-motion: reduce){.sp-listen-bobo,.sp-mic-halo:before,.sp-mic-halo:after{transform:none;transition:none}.sp-mic-nudge,.sp-reward,.sp-reward-star,.sp-reward-bobo,.sp-reward:before,.sp-reward:after,.sp-scoring-star{animation:none}.sp-scoring-star{color:var(--sun-soft)}.sp-scoring-star:nth-child(2){color:var(--sun)}.sp-recorder .sp-live-word{animation:sp-word-fade var(--dur-reward) linear both!important}.sp-scoring-track i,.sp-wave i{transition:none}}:root{--bg: #fff9ef;--surface: #ffffff;--surface-muted: #f6f1ff;--text: #2b2350;--text-muted: #6b6390;--border: rgba(75, 58, 143, .14);--edge: #ddd3f7;--brand: #7c5cff;--brand-deep: #5a3fd1;--brand-ink: #5b3fe0;--brand-soft: #efeaff;--hero-gradient: linear-gradient(125deg, #8b6cff, #b58cff 55%, #ffb3d2);--hero-edge: #cfbdf3;--hero-ring: #9a7cff;--sun-edge: #f3dd94;--sun-ink: #7a5a00;--primary: var(--brand);--sun: #ffc93c;--sun-deep: #e6a800;--sun-soft: #fff4cf;--ok: #22c58b;--ok-deep: #16a06f;--ok-soft: #dcf9ec;--ok-ink: #0f7a52;--oops: #ff8a4c;--oops-deep: #e56b2c;--oops-soft: #ffeddf;--oops-ink: #b8501a;--danger: #e0445a;--danger-soft: #ffe8ec;--danger-ink: #b3243a;--pink: #ff6fa5;--sky: #4cc3ff;--k-vocab: #7c5cff;--k-vocab-soft: #efeaff;--k-grammar: #22c58b;--k-grammar-soft: #dcf9ec;--k-reading: #4cc3ff;--k-reading-soft: #e2f7ff;--k-listening: #ff9b3d;--k-listening-soft: #fff0df;--k-writing: #ff6fa5;--k-writing-soft: #ffe8f1;--k-speaking: #18b5c9;--k-speaking-soft: #def8fb;--practice-dot-rest: #e7e0fb;--practice-correct-gradient: linear-gradient(145deg, #e4fff2, #c9f5e2);--practice-wrong-gradient: linear-gradient(145deg, #fff4e9, #ffe4cd);--first-day-done-gradient: linear-gradient(160deg, #e4fff2, #c9f5e2);--first-day-done-edge: #a8e8cc;--first-day-dot: #ebe5fb;--streak-soft: #fff4ec;--streak-ink: #c2531b;--streak-muted: #8a5a3c;--install-icon-gradient: linear-gradient(135deg, #8c6bff, #ff9cc6);--learn-speaking-gradient: linear-gradient(135deg, var(--k-speaking), #0e93a5);--learn-papers-gradient: linear-gradient(135deg, var(--pink), #e84d88);--book-cover-gradient: linear-gradient(160deg, var(--k-speaking), #0e8a9a);--book-cover-edge: #0b6f7c;--unit-ring-track: #eee8fb;--mistakes-hero-gradient: linear-gradient(135deg, #ffb26b, var(--oops));--mistakes-clear-gradient: linear-gradient(135deg, #69dbb0, var(--ok));--reward-spotlight: radial-gradient(circle at 50% 70%, #ffffff 0, #f3edff 55%, #e6dcff 100%);--reward-xp-gradient: linear-gradient(90deg, var(--sun), #ff9f3d);--account-hero-gradient: linear-gradient(180deg, #8c6bff, #b48bff);--account-ipad-gradient: linear-gradient(135deg, #8c6bff, #b48bff 60%, #ffa9cc);--field-soft: #faf8ff;--settings-muted: #eeeaf5;--muted-bar: #ded8eb;--chart-gradient: linear-gradient(180deg, #9b7fff, var(--brand));--r-sm: 12px;--r-md: 18px;--r-lg: 24px;--shadow: 0 6px 18px rgba(75, 58, 143, .1);--dur-press: 90ms;--dur-quick: .16s;--dur-enter: .26s;--dur-page: .36s;--dur-reward: .7s;--stagger: 45ms;--ease-out: cubic-bezier(.16,1,.3,1);--ease-in: cubic-bezier(.5,0,.75,0);--ease-move: cubic-bezier(.65,0,.35,1);--spring-snappy: cubic-bezier(.2,1.1,.3,1);--spring-bouncy: cubic-bezier(.3,1.6,.5,1);--motion-duration-fast: var(--dur-quick);--motion-duration-in: var(--dur-enter);--motion-duration-feedback: var(--dur-page);--motion-duration-emphasis: .48s;--motion-duration-reveal: var(--dur-reward);--motion-duration-reward: 1.1s;--motion-duration-progress: var(--dur-reward);--motion-duration-ripple: .26s;--motion-duration-attention: 1.8s;--motion-duration-bounce: 1.5s;--motion-duration-float: 2.8s;--motion-duration-spin: 14s;--motion-ease-standard: var(--ease-out);--motion-ease-soft: cubic-bezier(.4, 0, .2, 1);--motion-ease-spring: var(--spring-snappy);--motion-ease-spring-strong: var(--spring-bouncy);--motion-ease-in-out: ease-in-out;--nav-h: 62px;color-scheme:light}@supports (animation-timing-function: linear(0,1)){:root{--spring-snappy: linear(0, .02, .067, .132, .212, .295, .378, .46, .542, .615, .681, .742, .794, .839, .877, .911, .937, .958, .976, .99, 1, 1.007, 1.013, 1.016, 1.018, 1.019, 1.019, 1.018, 1.017, 1.016, 1.014, 1.013, 1.011, 1.009, 1.008, 1.007, 1.005, 1.004, 1.003, 1.003, 1);--spring-bouncy: linear(0, .045, .155, .311, .48, .654, .809, .945, 1.049, 1.125, 1.171, 1.191, 1.192, 1.176, 1.15, 1.118, 1.084, 1.052, 1.023, 1, .983, .971, .964, .962, .964, .968, .974, .98, .987, .993, .998, 1.002, 1.005, 1.006, 1.007, 1.007, 1.007, 1.006, 1.004, 1.003, 1)}}*{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{background:radial-gradient(circle at 0% 0%,#ffe6f0 0,transparent 38%),radial-gradient(circle at 100% 12%,#e4f5ff 0,transparent 34%),var(--bg);color:var(--text);font-family:ui-rounded,SF Pro Rounded,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,sans-serif;font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit}button,a{touch-action:manipulation}:focus-visible{outline:3px solid var(--sky);outline-offset:2px}@media (min-width: 768px){body{font-size:19px}}.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;max-width:560px;margin:0 auto}@media (min-width: 768px){.app-shell{max-width:720px}}.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:62px;padding:calc(env(safe-area-inset-top) + 8px) 14px 8px;background:#ffffffd1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);transition:background-color var(--dur-quick) var(--ease-out),box-shadow var(--dur-quick) var(--ease-out)}.app-header--scrolled{background:#fffffff0;box-shadow:0 6px 18px #4b3a8f1a}.app-header__brand{display:flex;align-items:center;gap:8px;min-width:0;color:inherit;text-decoration:none}.app-header__avatar{flex:none;width:42px;height:42px;border-radius:50%;object-fit:cover;border:2px solid var(--border);background:var(--surface)}.app-header__avatar-trigger{display:grid;place-items:center;flex:none;width:48px;height:48px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer}.app-header__avatar-trigger:disabled{cursor:default}.app-header__home{display:flex;align-items:center;min-width:0;min-height:44px;color:inherit;text-decoration:none}.app-header__avatar-trigger .mascot{transition:transform var(--motion-duration-in) var(--motion-ease-soft)}.app-header__avatar-trigger:hover .mascot,.app-header__avatar-trigger:focus-visible .mascot{transform:translateY(-2px) rotate(-3deg)}.app-header__text{display:flex;flex-direction:column;min-width:0;line-height:1.2}.app-header__title{font-size:18px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-header__subtitle{font-size:12px;color:var(--text-muted);white-space:nowrap}@media (max-width: 400px){.app-header__subtitle{display:none}.app-header__title{font-size:15px}}.hud{display:flex;align-items:center;gap:6px}.hud__chip{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:0 10px;border-radius:999px;font-size:15px;font-weight:800;text-decoration:none;font-variant-numeric:tabular-nums}.hud__chip--stars{background:var(--sun-soft);color:#8a5a00}.hud__chip--streak{background:var(--oops-soft);color:var(--oops-ink)}.sound-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;border:0;border-radius:999px;background:var(--surface-muted);font-size:18px;cursor:pointer}.sound-toggle--labeled{padding:0 18px;min-height:52px;border:2px solid var(--border);font-size:17px;font-weight:800;color:var(--text)}.app-main{flex:1;padding:18px 16px calc(var(--nav-h) + 42px)}.page{display:flex;flex-direction:column;gap:14px}.page__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.page__title{margin:0;font-size:26px;font-weight:800;line-height:1.25}.page__lead{margin:0;font-size:15px;color:var(--text-muted)}.placeholder-note{margin:0;padding:14px 16px;border-radius:var(--r-md);background:var(--surface-muted);color:var(--text-muted);font-size:15px}.bottom-nav{position:sticky;bottom:0;z-index:20;display:grid;grid-template-columns:repeat(var(--nav-count, 5),1fr);gap:2px;margin:0 10px calc(env(safe-area-inset-bottom) + 12px);padding:6px;background:var(--surface);border:0;border-radius:24px;box-shadow:0 6px 20px #4b3a8f29}.bottom-nav__indicator{position:absolute;z-index:0;left:0;top:0;width:var(--ind-w, 0px);height:var(--ind-h, 0px);border-radius:var(--r-md);background:var(--brand-soft);pointer-events:none;opacity:0;transform:translate(var(--ind-x, 0px),var(--ind-y, 0px))}.bottom-nav--indicator-ready .bottom-nav__indicator{opacity:1;transition:transform var(--dur-page) var(--spring-snappy),width var(--dur-page) var(--spring-snappy),height var(--dur-page) var(--spring-snappy),opacity var(--dur-quick) linear}.bottom-nav__rail-logo,.bottom-nav__rail-divider{display:none}.bottom-nav__item{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-height:var(--nav-h);padding:4px 2px;border-radius:var(--r-md);color:var(--text-muted);text-decoration:none;z-index:1}.bottom-nav__icon{font-size:22px;line-height:1.1;transition:transform var(--motion-duration-feedback) var(--motion-ease-spring-strong)}.bottom-nav__item--active{color:var(--brand-ink)}.bottom-nav__item--active:hover{background:transparent}.bottom-nav__item--active .bottom-nav__icon{transform:none}.bottom-nav__label{font-size:11px;font-weight:800;white-space:nowrap}.bottom-nav__hint{display:none}.bottom-nav__dot{position:absolute;top:6px;right:calc(50% - 26px);width:12px;height:12px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--surface)}@media (max-width: 767px){.app-header__brand,.app-header__home{flex:1}.app-header__title{max-width:100%}}.inbox-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;border-radius:50%;background:var(--surface-muted);color:inherit;text-decoration:none}.inbox-bell__icon{font-size:20px;line-height:1}.inbox-bell__badge{position:absolute;top:4px;right:4px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--danger);box-shadow:0 0 0 2px var(--surface);color:#fff;font-size:11px;font-weight:800;line-height:18px;text-align:center;font-variant-numeric:tabular-nums}.card{padding:18px;border-radius:var(--r-lg);background:var(--surface);border:2px solid var(--border);box-shadow:var(--shadow)}.card__title{margin:0 0 12px;font-size:18px;font-weight:800}.card__muted{margin:0;font-size:15px;color:var(--text-muted)}.card__error{margin:0;padding:12px 14px;border-radius:var(--r-sm);background:var(--danger-soft);color:var(--danger-ink);font-size:15px}.card__success{margin:0;padding:12px 14px;border-radius:var(--r-sm);background:var(--ok-soft);color:var(--ok-ink);font-size:16px;font-weight:700}.fact-list{margin:0 0 14px;display:grid;gap:8px}.fact{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:var(--r-sm);background:var(--surface-muted)}.fact dt{font-size:14px;color:var(--text-muted)}.fact dd{margin:0;font-size:14px;font-weight:700}.field{display:block}.field__label{display:block;margin-bottom:6px;font-size:15px;font-weight:700;color:var(--text-muted)}.field__input{width:100%;min-height:56px;padding:10px 16px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:18px}.field__input:focus-visible{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}.form{display:grid;gap:18px}.field--group{margin:0;padding:0;border:0}.choice-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.choice{display:flex;align-items:center;justify-content:center;gap:6px;min-height:56px;padding:8px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text-muted);font-size:16px;font-weight:700;cursor:pointer}.choice--active{border-color:var(--brand);color:var(--brand-ink);background:var(--brand-soft)}.choice input{accent-color:var(--brand)}.primary-button{min-height:58px;padding:12px 24px;border:0;border-radius:var(--r-md);background:var(--brand);color:#fff;font-size:18px;font-weight:800;box-shadow:0 5px 0 var(--brand-deep);cursor:pointer;transition:transform var(--motion-duration-fast) var(--motion-ease-standard),box-shadow var(--motion-duration-fast) var(--motion-ease-standard);-webkit-user-select:none;user-select:none}.primary-button:active:not(:disabled){transform:translateY(4px);box-shadow:0 1px 0 var(--brand-deep)}.primary-button:disabled{background:#cdc6e6;box-shadow:0 5px #b3aad6;cursor:default}.secondary-button{min-height:52px;padding:10px 18px;border:2px solid var(--brand);border-radius:var(--r-md);background:var(--surface);color:var(--brand-ink);font-size:16px;font-weight:800;box-shadow:0 4px 0 var(--edge);cursor:pointer}.secondary-button:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--edge)}.secondary-button:disabled{opacity:.55;cursor:default}.link-button{min-height:44px;padding:8px 6px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--brand-ink);font-size:16px;font-weight:800;cursor:pointer}.link-button--small{min-height:36px;margin-left:6px;font-size:14px}.link-button:disabled{opacity:.6;cursor:default}.tutor-badge{display:inline-block;margin-left:8px;padding:1px 10px;border-radius:999px;background:var(--sun-soft);color:#8a5a00;font-size:12px;font-weight:800;vertical-align:middle}.empty-state{display:flex;flex-direction:column;align-items:center;gap:6px;padding:24px 0;text-align:center}.meter{display:block;height:14px;border-radius:999px;background:#e9e2ff;overflow:hidden;box-shadow:inset 0 2px 3px #4b3a8f1f}.meter__fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--sun),var(--pink));transition:width var(--motion-duration-progress) var(--motion-ease-spring)}.meter--day .meter__fill{background:linear-gradient(90deg,var(--ok),#7be8b9)}.app-crash{display:grid;place-items:center;min-height:100vh;min-height:100dvh;padding:calc(env(safe-area-inset-top) + 24px) 20px calc(env(safe-area-inset-bottom) + 24px);background:var(--bg)}.app-crash__card{display:flex;flex-direction:column;align-items:center;gap:8px;width:min(100%,380px);text-align:center}.app-crash__title{margin:6px 0 0;font-size:22px}.app-crash__text{margin:0;color:var(--text-muted)}.app-crash__primary{width:100%;margin-top:10px}.app-crash__secondary{margin-top:2px}.account-page{display:flex;flex-direction:column;gap:18px;max-width:560px;min-height:100vh;min-height:100dvh;margin:0 auto;padding:calc(env(safe-area-inset-top) + 24px) 16px calc(env(safe-area-inset-bottom) + 28px)}@media (min-width: 768px){.account-page{max-width:640px}}.account-page--center{align-items:center;justify-content:center;text-align:center}.account-syncing{margin:0;font-size:18px;font-weight:800;color:var(--text-muted)}.account-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px;border:2px solid var(--border);border-radius:var(--r-lg);background:var(--surface-muted)}.account-tab{min-height:52px;padding:8px 10px;border:0;border-radius:var(--r-md);background:transparent;color:var(--text-muted);font-size:17px;font-weight:800;cursor:pointer}.account-tab--active{background:var(--surface);color:var(--brand-ink);box-shadow:0 3px 0 var(--edge)}.account-notice{margin:0;padding:12px 14px;border-radius:var(--r-sm);background:var(--sun-soft);color:#8a5a00;font-size:16px;font-weight:700}.account-claim{display:grid;gap:12px}.account-claim__text{margin:0;font-size:17px;font-weight:700;line-height:1.6}.account-claim__actions{display:grid;gap:12px}.account-claim__actions .primary-button,.account-claim__actions .secondary-button{width:100%}.account-card__name{margin:0 0 6px;font-size:17px}.account-card__status{margin:0;font-size:15px;color:var(--text-muted)}.account-card__status--synced{color:var(--ok-ink)}.account-card__status--offline{color:var(--oops-ink)}.account-card__status--error{color:var(--danger-ink)}.account-card__actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:14px}.account-card__form{margin-top:16px}.account-card__confirm{margin-top:16px;padding:14px 16px;border-radius:var(--r-md);background:var(--oops-soft);color:var(--oops-ink);font-size:16px;font-weight:700}.account-card__confirm p{margin:0}.sync-notice{position:fixed;top:calc(env(safe-area-inset-top) + 10px);left:50%;z-index:60;max-width:calc(100vw - 32px);padding:10px 18px;border-radius:999px;background:var(--brand-deep);color:#fff;font-size:15px;font-weight:800;text-align:center;box-shadow:var(--shadow);transform:translate(-50%);animation:fade-in var(--motion-duration-in) var(--motion-ease-soft)}.avatar-editor{display:flex;align-items:center;gap:16px}.avatar-editor__preview{flex:none;display:flex;align-items:center;justify-content:center;width:88px;height:88px;border-radius:50%;overflow:hidden;border:3px solid var(--border);background:var(--surface)}.avatar-editor__image{width:100%;height:100%;object-fit:cover}.avatar-editor__body{display:flex;flex-direction:column;gap:8px;min-width:0}.avatar-editor__actions{display:flex;flex-wrap:wrap;gap:8px}.avatar-editor__file{display:none}.account-page--redesign{position:relative;isolation:isolate;display:block;max-width:none;min-height:100vh;min-height:100dvh;padding:calc(env(safe-area-inset-top) + 24px) 22px calc(env(safe-area-inset-bottom) + 28px);background:var(--bg)}.account-page--redesign:before{position:absolute;z-index:-1;inset:0 0 auto;height:max(320px,38vh);content:"";background:var(--account-hero-gradient)}.account-layout{width:min(100%,440px);margin:0 auto}.account-hero{display:flex;flex-direction:column;align-items:center;margin-bottom:18px;color:var(--surface);text-align:center}.account-hero__mascot{filter:drop-shadow(0 8px 12px rgba(42,25,90,.2))}.account-hero__title{margin:-4px 0 4px;font-size:28px;font-weight:900}.account-hero__subtitle{margin:0;font-size:14px;opacity:.95}.account-form-card{padding:18px;border-radius:26px;background:var(--surface);box-shadow:0 6px 0 var(--edge),0 18px 30px #4b3a8f26}.account-form-card--syncing{padding:28px 18px;text-align:center}.account-form-card .account-tabs{gap:4px;padding:4px;border:0;border-radius:999px;background:var(--brand-soft)}.account-form-card .account-tab{min-height:48px;padding:8px;border-radius:999px;color:var(--brand-ink);font-size:15px}.account-form-card .account-tab--active{box-shadow:0 2px 0 var(--edge)}.account-form{gap:14px;margin-top:16px}.account-form .field__label{margin:0 0 4px 4px;font-size:13px;font-weight:800}.account-form .field__input{min-height:52px;padding:12px 14px;border-radius:16px;background:var(--field-soft);font-size:18px}.account-form .field__input::placeholder{color:var(--text-muted);opacity:.65}.account-form .primary-button{width:100%;min-height:56px;border-radius:18px}.account-form-card .account-claim{padding:0;border:0;box-shadow:none}.account-footer{margin:16px 0 0;color:var(--text-muted);font-size:12px;text-align:center;line-height:1.6}.profile-page__heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.profile-page__heading .page__title{margin-bottom:4px}.profile-page__heading-icon{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:16px;background:var(--brand-soft);font-size:23px}.profile-identity-card{align-items:flex-start;gap:12px;padding:16px;border:0;border-radius:24px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.profile-identity-card .avatar-editor__preview{width:70px;height:70px;border:0;background:linear-gradient(135deg,var(--surface),var(--brand-soft));box-shadow:0 3px 0 var(--edge)}.profile-identity-card .card__title{margin:0;font-size:20px;overflow-wrap:anywhere}.profile-identity-card .card__muted{font-size:13px}.profile-identity-card .avatar-editor__body{flex:1;gap:4px}.profile-avatar-toggle{align-self:flex-start;min-height:48px;margin-top:4px;padding:8px 12px;border:0;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font:inherit;font-size:13px;font-weight:800;cursor:pointer}.profile-identity-card .avatar-editor__actions{margin-top:6px}.profile-identity-card .secondary-button{min-height:48px;padding:8px 12px;font-size:13px}.profile-settings-form{gap:14px;margin-top:14px}.profile-setting-group{overflow:hidden;padding:0 14px;border-radius:22px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.profile-setting-group h2,.profile-setting-section>h2{margin:14px 0 6px;color:var(--text-muted);font-size:13px;font-weight:800}.profile-setting-group .field{min-width:0;margin:0;padding:12px 0;border:0;border-bottom:1px solid var(--border)}.profile-setting-group .field:last-child{border-bottom:0}.profile-setting-group .field__label{display:flex;align-items:center;gap:12px;margin-bottom:8px;color:var(--text)}.profile-setting-group legend.field__label{float:left;width:100%}.profile-setting-group .choice-row{clear:both;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.profile-setting-group .choice{min-width:0;min-height:48px;padding:10px 5px;font-size:14px}.profile-setting-section{margin-top:14px}.profile-setting-section>h2{margin:0 8px 6px}.profile-setting-list{overflow:hidden;border-radius:22px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.profile-setting-row{display:flex;align-items:center;gap:12px;min-height:58px;margin:0;padding:10px 14px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font:inherit;font-size:15px;font-weight:800;text-align:left}.profile-setting-row strong,.profile-setting-row>span:not(.settings-icon,.settings-chevron){flex:1}.profile-setting-row small{margin-left:auto;color:var(--text-muted);font-size:12px;font-weight:500}.settings-icon{display:grid;place-items:center;flex:none;width:34px;height:34px;border-radius:11px;background:var(--brand-soft);font-size:18px}.settings-icon--sun{background:var(--sun-soft)}.settings-icon--ok{background:var(--ok-soft)}.settings-icon--speaking{background:var(--k-speaking-soft)}.settings-icon--writing{background:var(--k-writing-soft)}.settings-icon--muted{background:var(--settings-muted)}.settings-chevron{margin-left:auto;color:var(--edge);font-size:26px}.profile-sound-row{border-bottom:0}.profile-sound-row .sound-toggle{position:relative;flex:none;width:56px;min-width:56px;height:48px;margin-left:auto;border:0;background:transparent;box-shadow:none}.profile-sound-row .sound-toggle:before{position:absolute;top:9px;left:3px;width:50px;height:30px;border-radius:999px;background:var(--muted-bar);content:""}.profile-sound-row .sound-toggle[aria-pressed=true]:before{background:var(--ok)}.profile-sound-row .sound-toggle:after{position:absolute;top:12px;left:6px;width:24px;height:24px;border-radius:50%;background:var(--surface);content:""}.profile-sound-row .sound-toggle[aria-pressed=true]:after{left:26px}.profile-sound-row .sound-toggle span{display:none}.profile-setting-list>.card__muted{padding:0 14px 14px;font-size:12px}.profile-parent-gate{padding:14px}.profile-advanced{border-top:1px solid var(--border)}.profile-advanced summary{cursor:pointer;list-style:none}.profile-advanced summary::-webkit-details-marker{display:none}.profile-advanced[open] .settings-chevron{transform:rotate(90deg)}.profile-advanced__content{display:grid;gap:12px;padding:0 14px 14px}.profile-advanced__content .card{min-width:0;margin:0}.profile-page button:focus-visible,.profile-page a:focus-visible,.profile-page summary:focus-visible,.account-page--redesign button:focus-visible{outline:3px solid var(--brand);outline-offset:3px}@media (min-width: 768px){.account-page--redesign{display:grid;place-items:center;padding:32px;background:var(--account-ipad-gradient)}.account-page--redesign:before{display:none}.account-footer{color:var(--surface)}.profile-page{max-width:760px}}@media (prefers-reduced-motion: reduce){.account-page--redesign *,.account-page--redesign *:before,.account-page--redesign *:after,.profile-page *,.profile-page *:before,.profile-page *:after{animation:none!important;transition:none!important}}.account-password-row{display:flex;align-items:stretch;gap:8px}.account-password-row__input{flex:1;min-width:0}.account-password-row__button{flex:none;min-height:44px;padding:8px 14px;font-size:15px;white-space:nowrap}.account-forgot-hint{margin:0 0 0 4px;color:var(--text-muted);font-size:13px;line-height:1.5}.account-signup-note{margin:0;color:var(--text-muted);font-size:12px;line-height:1.5;text-align:center}.account-role-step{display:grid;gap:12px}.account-role-step__title{margin:0;color:var(--brand-ink);font-size:22px;font-weight:900}.account-role-step .link-button{justify-self:center}.admin-page{display:flex;flex-direction:column;gap:14px;min-width:0}.admin-page>*{min-width:0}.admin-top{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}.admin-top__title{margin:0;font-size:22px}.admin-back__link{display:inline-flex;align-items:center;min-height:44px;padding:6px 14px;text-decoration:none}.admin-back{display:flex}.admin-tabs{display:flex;gap:6px;margin-left:auto;padding:4px;border:2px solid var(--border);border-radius:var(--r-md);background:var(--surface-muted)}.admin-tab{display:inline-flex;align-items:center;min-height:40px;padding:4px 18px;border-radius:var(--r-sm);color:var(--text-muted);font-size:16px;font-weight:800;text-decoration:none}.admin-tab--on{background:var(--surface);color:var(--brand-ink);box-shadow:0 2px 0 var(--edge)}.admin-error{display:grid;gap:10px;justify-items:start}.admin-error p{margin:0;font-weight:700}.admin-muted-card{margin:0;color:var(--text-muted)}.admin-stats{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.admin-stat{min-width:0;padding:10px 14px;border:2px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.admin-stat__value{font-size:26px;font-weight:800;line-height:1.2}.admin-stat__label{color:var(--text-muted);font-size:13px}.admin-charts{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}.admin-chart{min-width:0}.admin-chart__svg{display:block;width:100%;height:auto;max-height:230px}.admin-chart__svg text{fill:var(--text-muted);font-size:10px}.admin-chart__grid{stroke:var(--edge);stroke-width:1}.admin-chart__svg--blue{--admin-tone: var(--brand)}.admin-chart__svg--green{--admin-tone: var(--ok-deep)}.admin-chart__svg--orange{--admin-tone: var(--sun-deep)}.admin-chart__bar{fill:var(--admin-tone)}.admin-chart__area{fill:var(--admin-tone);opacity:.15}.admin-chart__line{fill:none;stroke:var(--admin-tone);stroke-width:2;stroke-linejoin:round}.admin-chart__dot{fill:var(--admin-tone)}.admin-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:12px}.admin-search{width:min(100%,280px)}.admin-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-table{width:100%;border-collapse:collapse;font-size:14px}.admin-table th,.admin-table td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.admin-table th{color:var(--text-muted);font-size:13px;font-weight:800}.admin-num{text-align:right!important;font-variant-numeric:tabular-nums}.admin-sort{min-height:36px;padding:0;border:0;background:none;color:inherit;font:inherit;font-weight:inherit;cursor:pointer}.admin-link{color:var(--brand-ink);font-weight:800}.admin-tag{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:12px}.admin-rate{display:flex;align-items:center;gap:8px}.admin-bar{width:90px;height:8px;overflow:hidden;border-radius:4px;background:var(--edge)}.admin-bar i{display:block;height:100%;background:var(--ok)}.admin-subtitle{margin:14px 0 6px;color:var(--text-muted);font-size:14px}.admin-facts{display:grid;gap:8px 20px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.admin-fact span:first-child{display:block;color:var(--text-muted);font-size:13px}.admin-units{display:grid;gap:6px;margin:0;padding:0;list-style:none;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr))}.admin-unit{display:flex;align-items:center;gap:8px;min-width:0;padding:6px 10px;border:1px solid var(--border);border-radius:var(--r-sm);font-size:13px}.admin-unit__title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--edge)}.admin-dot--completed{background:var(--ok)}.admin-dot--in-progress{background:var(--sun-deep)}.admin-dot--failed{background:var(--danger)}.admin-writing{margin-bottom:8px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--r-sm)}.admin-writing summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;cursor:pointer}.admin-essay{margin:8px 0;padding:10px 12px;border-radius:var(--r-sm);background:var(--surface-muted);font:inherit;white-space:pre-wrap;word-break:break-word}.admin-essay--muted{color:var(--text-muted)}.admin-funnel{min-width:0}.admin-funnel h2{margin:0 0 12px;font-size:18px}.admin-funnel h3{margin:18px 0 8px;font-size:16px}.admin-funnel__steps{display:grid;gap:10px;margin:0;padding:0;list-style:none}.admin-funnel__row{display:flex;align-items:baseline;gap:10px;font-size:14px;font-variant-numeric:tabular-nums}.admin-funnel__label{display:flex;align-items:center;gap:6px;flex:1;min-width:0;font-weight:800}.admin-funnel__label em{padding:1px 8px;border-radius:999px;background:var(--danger-soft);color:var(--danger-ink);font-size:11px;font-style:normal;font-weight:700}.admin-funnel__count,.admin-funnel__pct{color:var(--text-muted);white-space:nowrap}.admin-funnel__pct{min-width:42px;text-align:right;font-weight:800}.admin-funnel__bar{height:10px;margin-top:6px;overflow:hidden;border-radius:999px;background:var(--brand-soft)}.admin-funnel__bar i{display:block;height:100%;border-radius:999px;background:var(--brand)}.admin-funnel__row--worst,.admin-funnel__row--worst .admin-funnel__pct{color:var(--danger-ink)}.admin-funnel__row--worst+.admin-funnel__bar i{background:var(--danger)}.admin-funnel__table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-funnel__table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.admin-funnel__table th,.admin-funnel__table td{padding:6px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.admin-funnel__table th{color:var(--text-muted);font-size:12px;font-weight:800}.admin-funnel__table tbody tr:nth-child(2n){background:var(--brand-soft)}.admin-funnel__num{text-align:right}.admin-stat--warn{border-color:var(--danger);background:var(--danger-soft)}.admin-stat--warn .admin-stat__value,.admin-stat--warn .admin-stat__label{color:var(--danger-ink)}.admin-stat--link{display:block;color:inherit;text-decoration:none}.admin-range{min-height:36px;padding:4px 14px;border:2px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--text-muted);font:inherit;font-size:14px;font-weight:800;cursor:pointer}.admin-range--on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink)}.admin-ranges{display:flex;gap:6px}.admin-empty{margin:0;text-align:center;color:var(--text-muted)}.admin-error-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.admin-error-card{min-width:0;padding:12px 14px}.admin-error-card__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px}.admin-error-card__message{flex:1;min-width:0;font-weight:800;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.admin-error-card__kind{flex:none;padding:1px 8px;border-radius:999px;background:var(--danger-soft);color:var(--danger-ink);font-size:12px;font-weight:800}.admin-error-card__meta{margin:6px 0 0;color:var(--text-muted);font-size:13px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.admin-error-card__paths{margin:4px 0 0;color:var(--text-muted);font-size:12px;overflow-wrap:anywhere}.admin-error-card__detail{margin-top:8px}.admin-error-card__detail summary{cursor:pointer;color:var(--brand-ink);font-size:13px;font-weight:800}.admin-error-card__stack{max-height:240px;margin:8px 0;padding:10px 12px;overflow:auto;border-radius:var(--r-sm);background:var(--surface-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.admin-messages-form{display:grid;gap:12px}.admin-messages-textarea{min-height:132px;padding:12px 16px;font:inherit;font-size:16px;line-height:1.5;resize:vertical}.admin-counter{display:block;margin-top:4px;color:var(--text-muted);font-size:12px;text-align:right;font-variant-numeric:tabular-nums}.admin-counter--over{color:var(--danger-ink);font-weight:800}.admin-messages-preview{display:grid;gap:6px}.admin-messages-preview__label{margin:0;color:var(--text-muted);font-size:13px}.admin-messages-preview__card{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border:2px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.admin-messages-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.admin-messages-mode{display:grid;gap:8px;min-width:0;margin:0;padding:0;border:0}.admin-messages-mode legend{margin-bottom:8px;padding:0}.admin-messages-mode__option{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:10px 12px;border:2px solid var(--border);border-radius:var(--r-md);background:var(--surface);cursor:pointer}.admin-messages-mode__option--on{border-color:var(--brand);background:var(--brand-soft)}.admin-messages-mode__option input{flex:none;width:20px;height:20px;margin:2px 0 0;accent-color:var(--brand)}.admin-messages-mode__text{display:grid;gap:2px;min-width:0}.admin-messages-mode__title{font-weight:800;word-spacing:4px}.admin-messages-mode__desc{color:var(--text-muted);font-size:13px;line-height:1.5}.admin-messages-image__hint{margin:0;font-size:13px}.admin-messages-list{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}.admin-messages-row__link{display:flex;flex-direction:column;gap:6px;min-height:44px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-sm);color:inherit;text-decoration:none}.admin-messages-row__link:hover{background:var(--surface-muted)}.admin-messages-row__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px}.admin-messages-row__title{font-weight:800}.admin-messages-row__time{margin-left:auto;color:var(--text-muted);font-size:13px;font-variant-numeric:tabular-nums}.admin-tag--danger{background:var(--danger-soft);color:var(--danger-ink)}.admin-tag--popup{background:var(--oops-soft);color:var(--oops-ink)}.admin-tag--bell{background:var(--surface-muted);color:var(--text-muted)}.admin-messages-progress{display:flex;align-items:center;gap:10px}.admin-messages-progress__text{color:var(--text-muted);font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}.admin-messages-progress__bar{flex:1;max-width:220px;height:6px;background:var(--muted-bar)}.admin-crumb{margin:0}.admin-message-detail__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.admin-message-detail__title{margin:0;font-size:20px}.admin-message__body{margin:10px 0;font-size:15px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.admin-message-withdraw{color:var(--danger-ink);border-color:var(--danger)}.admin-recipient-list{display:grid;gap:6px 14px;margin:0;padding:0;list-style:none;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr))}.admin-recipient{display:flex;align-items:baseline;gap:8px;padding:6px 10px;border:1px solid var(--border);border-radius:var(--r-sm);font-size:14px}.admin-recipient__role{margin-left:auto;color:var(--text-muted);font-size:12px}.messages-list{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}.messages-item{padding:0;overflow:hidden}.messages-item__button{display:flex;flex-direction:column;gap:6px;width:100%;min-height:64px;padding:14px 16px;border:0;border-radius:inherit;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.messages-item__head{display:flex;align-items:baseline;gap:8px;min-width:0}.messages-item__dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--brand)}.messages-item__title{flex:1;min-width:0;font-size:16px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.messages-item:not(.messages-item--unread) .messages-item__title{font-weight:600;color:var(--text-muted)}.messages-item--unread .messages-item__title{font-weight:800}.messages-item__date{flex:none;color:var(--text-muted);font-size:12px;font-variant-numeric:tabular-nums}.messages-item__preview{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;color:var(--text-muted);font-size:16px;line-height:1.5}.messages-item__body{color:var(--text);font-size:16px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.messages-back{align-self:flex-start;display:inline-flex;align-items:center;min-height:44px;padding:6px 16px;text-decoration:none}.inbox-popup-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10010;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:#1410288c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.inbox-popup{display:flex;flex-direction:column;align-items:center;gap:10px;width:min(100%,360px);max-height:100%;overflow-y:auto;overscroll-behavior:contain;padding:24px 20px 20px;border-radius:24px;background:var(--surface);color:var(--text);box-shadow:0 6px 0 var(--edge),var(--shadow);text-align:center}.inbox-popup__icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--sun-soft);border:2px solid var(--sun-edge);font-size:28px}.inbox-popup__tag{padding:3px 10px;border-radius:999px;background:var(--oops-soft);color:var(--oops-ink);font-size:12px;font-weight:700}.inbox-popup h2{margin:0;font-size:20px;line-height:1.35;overflow-wrap:anywhere}.inbox-popup__date{margin:0;color:var(--text-muted);font-size:12px;font-variant-numeric:tabular-nums}.inbox-popup__body{align-self:stretch;margin:4px 0 0;max-height:min(36vh,240px);overflow-y:auto;padding:12px 14px;border-radius:14px;background:var(--surface-muted);text-align:left;font-size:15px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.inbox-popup__thumb{align-self:stretch;margin:0}.inbox-popup__thumb figcaption{margin-top:4px;color:var(--text-muted);font-size:12px}.inbox-popup__footer{align-self:stretch;display:grid;gap:10px;margin-top:6px}.inbox-popup__hint{margin:0;color:var(--text-muted);font-size:13px}.inbox-popup__confirm{width:100%;min-height:48px}.message-image{display:block;width:100%;height:auto;border-radius:var(--r-md);background:var(--surface);cursor:zoom-in}.message-image--small{max-height:240px}.message-image--thumb{width:100%;max-height:120px;object-fit:cover;object-position:top;border-radius:12px}.message-image__fallback{margin:0;color:var(--text-muted);font-size:13px}.message-image-zoom{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10020;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;overscroll-behavior:contain;padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom));background:#141028e0;cursor:zoom-out}.message-image-zoom img{width:min(100%,750px);height:auto;margin:auto 0;border-radius:var(--r-md)}@media (min-width: 768px){.message-image-zoom img.message-image-zoom__wide{width:min(100%,1400px)}}.messages-item__image{padding:0 16px 14px}@media (min-width: 768px){.messages-item__image .message-image{max-width:480px;margin:0 auto}}.admin-messages-image{display:grid;gap:8px}.admin-messages-image__row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.admin-messages-image__thumb{width:96px;max-height:96px;object-fit:contain;border:2px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.admin-messages-check{display:flex;align-items:center;gap:8px;min-height:44px;font-size:15px}.admin-messages-check input{width:20px;height:20px}.contact-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10030;display:grid;place-items:end center;background:#2b235073;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.contact-sheet{display:grid;gap:14px;width:100%;max-width:480px;max-height:90dvh;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:22px 20px calc(22px + env(safe-area-inset-bottom));border:2px solid var(--border);border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg);background:var(--surface);color:var(--text);box-shadow:0 -12px 40px #2b23503d}.contact-sheet__title{margin:0;font-size:22px}.contact-sheet__lead{margin:0;color:var(--text-muted);font-size:15px;line-height:1.5}.contact-sheet__wechat{display:grid;gap:10px;padding:14px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--brand-soft)}.contact-sheet__wechat-text{margin:0;color:var(--text);font-size:17px;font-weight:800;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.contact-sheet__copy,.contact-sheet__qr-toggle,.contact-sheet__close{width:100%;min-height:48px}.contact-sheet__note{margin:0;color:var(--text-muted);font-size:13px;line-height:1.5;text-align:center}.contact-sheet__qr{display:grid;justify-items:center;gap:8px}.contact-sheet__qr img{display:block;width:220px;max-width:60vw;height:auto;border-radius:12px;background:#fff;padding:8px}@media (min-width: 768px){.contact-sheet-backdrop{place-items:center;padding:24px}.contact-sheet{width:min(100%,440px);padding:24px 24px 26px;border-radius:var(--r-lg);box-shadow:0 8px 0 var(--edge),var(--shadow)}.contact-sheet__wechat{grid-template-columns:minmax(0,1fr) auto;align-items:center}.contact-sheet__copy{width:auto;min-width:96px}}.account-forgot-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 8px}.account-forgot-row .account-forgot-hint{flex:1 1 auto}.account-contact-link{flex:none;min-height:44px;padding:4px 6px;font-size:14px;text-decoration:underline;text-underline-offset:3px}.membership-contact{margin-left:4px;min-height:44px;padding:4px 6px;font-size:13px;text-decoration:underline;text-underline-offset:3px}.membership-page{max-width:640px;margin-inline:auto;width:100%}.membership-header{display:flex;align-items:center;gap:14px}.membership-header__bobo{flex:none;width:96px;height:96px;object-fit:contain}.membership-header__text{min-width:0}.membership-header__text .page__title{font-size:22px}.membership-status{margin:6px 0 0;font-size:16px;font-weight:800;color:var(--brand-ink)}.membership-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.membership-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:132px;padding:18px 14px 14px;border:2px solid var(--edge);border-radius:var(--r-lg);background:var(--surface);color:var(--text);font:inherit;text-align:left;cursor:pointer;box-shadow:0 4px 0 var(--edge)}.membership-card--on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 4px 0 var(--brand)}.membership-card:focus-visible{outline:none;box-shadow:0 0 0 4px var(--brand-soft),0 4px 0 var(--brand)}.membership-card__badge{position:absolute;top:-10px;right:10px;padding:2px 10px;border-radius:999px;background:var(--sun);color:var(--sun-ink);font-size:13px;font-weight:800}.membership-card__price{font-size:30px;font-weight:900;line-height:1.1;color:var(--brand-ink)}.membership-card__name{font-size:15px;font-weight:800;line-height:1.3}.membership-card__days{font-size:14px;color:var(--text-muted)}.membership-card__note{font-size:13px;color:var(--text-muted)}.membership-pay{width:100%}.membership-error{margin:0;padding:10px 14px;border-radius:var(--r-sm);background:var(--danger-soft);color:var(--danger-ink);font-size:15px;font-weight:700}.membership-note,.membership-result{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.membership-note p,.membership-result p{margin:0;font-size:16px}.membership-result--ok{background:var(--ok-soft);border-color:var(--ok)}.membership-result--ok .card__title{color:var(--ok-ink)}.membership-result__actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.membership-fine{margin:0;font-size:13px;line-height:1.5;color:var(--text-muted);text-align:center}.parent-gate{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.parent-gate__form{display:grid;gap:12px;width:100%}.parent-gate__question{display:block;font-size:32px;font-weight:900;color:var(--brand-ink)}.parent-gate__input{font-size:20px}.parent-gate__wrong{margin:0;font-size:15px;font-weight:700;color:var(--oops-ink)}.paywall-page{max-width:560px;margin-inline:auto;width:100%}.paywall-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:28px 20px;text-align:center}.paywall-card__bobo{width:140px;height:140px;object-fit:contain}.paywall-card__title{margin:0;font-size:22px;font-weight:800;line-height:1.4;text-wrap:balance}.paywall-card__cta{display:inline-flex;align-items:center;justify-content:center;min-width:200px;text-decoration:none}.membership-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--sun-soft);border-color:var(--sun-edge);color:var(--sun-ink)}.membership-banner__text{font-size:16px;font-weight:800}.membership-banner__cta{display:inline-flex;align-items:center;justify-content:center;min-height:44px;text-decoration:none}@media (min-width: 560px){.membership-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.learn-page{max-width:760px;gap:14px}.learn-page-heading{align-items:flex-start}.learn-page-heading .page__lead{margin-top:2px}.learn-add-button{min-height:48px;padding:0 14px;border:0;border-radius:999px;background:var(--surface);color:var(--brand-ink);box-shadow:0 4px 0 var(--edge);font:inherit;font-size:15px;font-weight:900;cursor:pointer}.learn-add-button:disabled{opacity:.55;cursor:not-allowed}.learn-feature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.learn-feature-card{display:grid;align-content:start;gap:3px;min-width:0;min-height:120px;padding:14px;border-radius:24px;color:var(--surface);text-decoration:none;box-shadow:0 4px 0 var(--edge)}.learn-feature-card:only-child{grid-column:1 / -1}.learn-feature-card--speaking{background:var(--learn-speaking-gradient)}.learn-feature-card--papers{background:var(--learn-papers-gradient)}.learn-feature-card__icon{margin-bottom:4px;font-size:28px;line-height:1.2}.learn-feature-card strong{font-size:17px;font-weight:900}.learn-feature-card small{font-size:12px;opacity:.92}.learn-feature-card:active,.learn-add-button:active{transform:translateY(3px);box-shadow:0 1px 0 var(--edge)}.learn-materials{display:grid;gap:12px;margin-top:12px;padding-top:18px;border-top:1px solid var(--border)}.learn-materials__title{margin:0;font-size:18px;font-weight:900}.learn-materials .material-card__main{min-width:0;min-height:48px}.learn-materials .material-card__title{overflow-wrap:anywhere}@media (min-width: 768px){.learn-page.page--wide{max-width:760px}}@media (prefers-reduced-motion: reduce){.learn-page *,.book-map *{animation:none!important;transition:none!important}}.push-status{display:grid;gap:12px;margin-top:14px;padding:14px;border:1px solid var(--border);border-left:4px solid var(--text-muted);border-radius:12px;background:var(--surface-muted)}.push-status__header{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:15px}.push-status__badge{padding:4px 10px;border-radius:999px;font-size:13px;font-weight:700}.push-status__badge--on{background:var(--ok-soft);color:var(--ok-ink)}.push-status__badge--busy{background:var(--brand-soft);color:var(--brand-ink)}.push-status__badge--off{background:var(--surface-muted);color:var(--text-muted)}.push-status__checks{display:grid;gap:6px;margin:0}.push-status__checks>div{display:flex;justify-content:space-between;gap:12px;padding-bottom:6px;border-bottom:1px solid var(--border)}.push-status__checks dt{color:var(--text-muted);font-size:13px}.push-status__checks dd,.push-status__message{margin:0;font-size:13px;font-weight:700}.push-status__message--ok{color:var(--ok-ink)}.material-card{display:flex;align-items:center;gap:12px;padding:14px 16px}.material-card__main{flex:1;display:grid;gap:4px;padding:0;border:0;background:transparent;text-align:left;cursor:pointer;font-family:inherit;color:var(--text)}.material-card__title{font-size:16px;font-weight:700}.material-card__meta{font-size:13px;color:var(--text-muted)}.material-card__link{font-size:14px;font-weight:700;color:var(--brand)}.material-card__error{font-size:13px;color:var(--danger-ink)}.status-badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:700;background:var(--surface-muted);color:var(--text-muted)}.status-badge--analyzed{background:var(--ok-soft);color:var(--ok-ink)}.status-badge--failed{background:var(--danger-soft);color:var(--danger-ink)}.status-badge--analyzing,.status-badge--extracting,.status-badge--ready_for_analysis{background:var(--brand-soft);color:var(--brand)}.material-import{display:grid;gap:14px}.material-import__divider{margin:0;font-size:13px;color:var(--text-muted);text-align:center}.material-import__textarea{min-height:120px;resize:vertical}.material-import__actions{display:flex;align-items:center;gap:12px}.material-import__confirm{display:grid;gap:10px;padding:12px;border-radius:12px;background:var(--surface-muted)}.material-import__previews{display:flex;flex-wrap:wrap;gap:8px}.material-import__preview{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.material-import__book-failures{display:grid;gap:8px;padding:12px;border-radius:12px;background:var(--surface-muted)}.analysis-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.analysis-item{display:grid;gap:2px;padding:10px 12px;border-radius:10px;background:var(--surface-muted)}.analysis-item__term{font-size:15px;font-weight:700}.analysis-item__pos{font-size:12px;color:var(--brand)}.analysis-item__meaning{font-size:14px}.analysis-item__example{font-size:13px;color:var(--text-muted)}.analysis-provenance{margin:4px 0 0;font-size:12px;color:var(--text-muted);text-align:center}.hero{display:flex;align-items:flex-end;gap:14px}.hero__mascot{flex:none;animation:float var(--motion-duration-float) var(--motion-ease-in-out) infinite}.hero__bubble{position:relative;flex:1;min-width:0;padding:12px 16px;border:2px solid var(--border);border-radius:22px;background:var(--surface);box-shadow:var(--shadow)}.hero__bubble:before{content:"";position:absolute;left:-9px;bottom:24px;width:16px;height:16px;border-left:2px solid var(--border);border-bottom:2px solid var(--border);background:var(--surface);transform:rotate(45deg)}.hero__line{margin:2px 0 0;font-size:16px;font-weight:600;color:var(--text-muted)}.plan-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.plan-header .card__title{margin-bottom:0}.plan-budget{padding:2px 12px;border-radius:999px;background:var(--brand-soft);font-size:14px;font-weight:800;color:var(--brand-ink)}.meter--day{margin:12px 0 14px}.task-list{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:12px}.task-card{display:flex;align-items:center;gap:12px;min-height:72px;padding:10px 14px;border:2px solid var(--border);border-radius:22px;background:var(--surface);box-shadow:0 4px 0 var(--edge)}.task-card--next{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 4px 0 var(--brand)}.task-card--done{border-color:#b7eed6;background:var(--ok-soft);box-shadow:0 4px #b7eed6}.task-card__icon{display:grid;flex:none;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--surface-muted);font-size:28px;line-height:1}.task-card--next .task-card__icon{background:var(--surface);animation:bounce-soft var(--motion-duration-bounce) var(--motion-ease-in-out) infinite}.task-card__label{font-size:17px;font-weight:800;line-height:1.35}.task-card__hint{font-size:13px;color:var(--text-muted)}.task-card__minutes{flex:none;margin-left:auto;font-size:13px;font-weight:800;color:var(--brand-ink);white-space:nowrap}.plan-details{margin-top:12px;padding:12px 14px;border-radius:var(--r-md);background:var(--surface-muted);display:grid;gap:8px}.plan-detail-line{margin:0;font-size:13px;color:var(--text-muted)}.plan-detail-line strong{color:var(--text);font-weight:800}.plan-detail-meta{margin:0;font-size:12px;color:var(--text-muted)}.reward-teaser{display:flex;align-items:center;gap:14px;color:inherit;text-decoration:none}.reward-teaser__emoji{display:grid;flex:none;place-items:center;width:56px;height:56px;border-radius:18px;background:var(--sun-soft);font-size:32px}.reward-teaser__body{display:grid;flex:1;gap:6px;min-width:0}.reward-teaser__title{font-size:16px;font-weight:800}.reward-teaser__hint{font-size:13px;color:var(--text-muted)}.reward-teaser__go{font-size:28px;color:var(--brand-ink)}.task-card__hint--review{color:var(--ok-ink);font-weight:700}.more-today{display:flex;flex-direction:column;gap:10px;margin-top:8px;padding-top:14px;border-top:2px dashed var(--border)}.more-today__title{margin:0;font-size:17px;font-weight:800;color:var(--brand-ink)}.more-today__cta{display:flex;flex-direction:column;gap:4px}.more-today .task-list,.more-today .practice-actions{margin-bottom:0}.more-today__day{display:flex;flex-direction:column;gap:6px}.more-today__day-title{margin:4px 0 0;font-size:16px;font-weight:800}.bonus-module{display:flex;flex-direction:column;gap:6px;min-width:0;margin-top:8px;padding-top:14px;border-top:2px dashed var(--border)}.bonus-module__title{margin:0;font-size:17px;font-weight:800;color:var(--brand-ink)}.bonus-module .task-list{margin-bottom:0}.today-path--bonus .today-step__button{background:var(--brand-soft)}.ahead-chip{margin:0;padding:8px 14px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:15px;font-weight:800;align-self:flex-start}.today-main-column,.today-side-column{display:grid;min-width:0;align-content:start;gap:16px}.today-hero{position:relative;display:flex;align-items:center;min-height:174px;gap:10px;padding:20px 16px 20px 96px;overflow:hidden;border-radius:26px;background:var(--hero-gradient);box-shadow:0 5px 0 var(--hero-edge);color:#fff}.today-hero:after{position:absolute;top:-44px;right:-34px;width:140px;height:140px;border:22px solid rgb(255 255 255 / 10%);border-radius:50%;content:"";pointer-events:none}.today-hero__mascot{position:absolute;bottom:-8px;left:-5px;width:106px;height:106px}.today-hero__copy{z-index:1;flex:1;min-width:0}.today-hero .page__title{margin:0;color:#fff;font-size:21px;line-height:1.3;overflow-wrap:anywhere}.today-hero__copy>p{margin:7px 0 0;font-size:12px;line-height:1.5}.today-hero__chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.today-chip{display:inline-flex;padding:4px 9px;border-radius:999px;background:#ffffff38;font-size:11px;font-weight:800}@property --progress{syntax: "<percentage>"; inherits: true; initial-value: 0%;}.today-progress-ring{z-index:1;display:grid;flex:none;place-items:center;width:62px;height:62px;border-radius:50%;background:conic-gradient(white var(--progress),rgb(255 255 255 / 25%) 0);transition:--progress var(--dur-reward) var(--ease-out)}.today-progress-ring--complete{animation:m-pop var(--dur-reward) var(--spring-bouncy) var(--dur-reward)}.today-progress-ring>span{display:grid;place-content:center;width:48px;height:48px;border-radius:50%;background:var(--hero-ring);text-align:center;font-size:15px;font-weight:900;line-height:1.1}.today-progress-ring small{margin-top:3px;font-size:10px}.today-main-column>.plan-card{margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.book-source{display:flex;align-items:center;gap:14px;min-width:0;padding:14px 16px;border-radius:22px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow);color:var(--text);text-decoration:none}.book-source:focus-visible{outline:3px solid var(--brand);outline-offset:3px}.book-source__cover{flex:none;width:64px;height:84px;border-radius:6px;object-fit:cover;box-shadow:0 6px 14px #2b235038;transform:rotate(-3deg)}.book-source__copy{display:grid;flex:1;gap:4px;min-width:0}.book-source__badge{display:inline-flex;justify-self:start;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:var(--sun-soft);color:#8a6200;font-size:11px;font-weight:900}.book-source__title{font-size:16px;font-weight:900;line-height:1.3;overflow-wrap:anywhere}.book-source__description{color:var(--text-muted);font-size:13px;font-weight:700;line-height:1.4}.book-source__progress-copy{font-size:12px;font-weight:800;line-height:1.3}.book-source__progress{height:6px;overflow:hidden;border-radius:999px;background:var(--brand-soft)}.book-source__progress>span{display:block;height:100%;border-radius:inherit;background:var(--brand)}.book-source__chevron{flex:none;color:var(--text-muted);font-size:28px;line-height:1}.page--today .plan-header{margin:6px 4px 10px}.page--today .plan-header .card__title{font-size:19px}.page--today .exam-countdown,.page--today .ahead-chip{margin:0;font-size:12px}.today-continue{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:60px;padding:14px 16px;border:0;border-radius:22px;background:var(--brand);box-shadow:0 5px 0 var(--brand-deep);color:#fff;font-size:16px;font-weight:900;text-align:left;text-decoration:none;cursor:pointer}.today-continue:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px 0 var(--brand-deep)}.today-continue--done{background:var(--ok-deep);box-shadow:0 5px 0 var(--ok-ink)}.today-continue--done:active:not(:disabled){box-shadow:0 2px 0 var(--ok-ink)}.today-continue:disabled{cursor:wait;opacity:.75}.today-continue__copy{min-width:0;overflow-wrap:anywhere}.today-continue__arrow{flex:none;font-size:22px}.today-continue__action{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.today-path{display:grid;gap:12px;margin:0;padding:4px;list-style:none}.today-path .today-step{position:relative;display:block;min-width:0;min-height:76px;padding:0;border:0;border-radius:20px;background:transparent;box-shadow:none;animation:none}.today-path.motion-stagger>.today-step{animation:m-rise var(--dur-enter) var(--ease-out) both;animation-delay:calc(var(--i, 0) * var(--stagger))}.today-step--just-completed .today-step__badge{animation:m-pop var(--dur-reward) var(--spring-bouncy)}.today-step--just-completed .today-step__button{isolation:isolate}.today-step--just-completed .today-step__button:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;z-index:-1;background:var(--ok-soft);animation:m-task-complete .8s var(--ease-out) both}@keyframes m-task-complete{0%,to{opacity:0}25%{opacity:.65}}.today-path .today-step__button{position:relative;z-index:1;display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:76px;padding:12px 14px;border-radius:20px;background:#fff;box-shadow:0 3px 0 var(--edge);text-align:left}.today-path .task-card--next .today-step__button{outline:2px solid var(--brand);outline-offset:-2px;box-shadow:0 4px #cfc2fb,0 8px 18px #7c5cff24}.today-path .task-card--done .today-step__button{background:#fbfefc}.today-path .today-step__button:focus-visible{outline:3px solid var(--brand);outline-offset:3px}.today-path .today-step__node{position:relative;display:grid;flex:none;place-items:center;width:52px;height:52px;border-radius:16px;background:var(--task-soft);font-size:26px;animation:none}.today-path .task-card--done .today-step__emoji{opacity:.55}.today-step__badge{position:absolute;bottom:-4px;right:-4px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 2px #fff;color:#fff;font-size:12px;font-weight:900}.today-step__copy{min-width:0}.today-path .task-card__label{display:block;font-size:16px;overflow:hidden;color:var(--text);font-weight:800;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.today-step__number{color:var(--text-muted);font-weight:700}.today-path .task-card--done .task-card__label{opacity:.75}.today-step__meta{display:flex;align-items:center;gap:4px;margin-top:3px;overflow:hidden;color:var(--text-muted);font-size:13px;line-height:20px;white-space:nowrap}.today-step__meta>span{flex-shrink:0}.today-path .task-card__hint{flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.today-path .today-step__status--done{color:var(--ok-ink);font-weight:800}.today-path .today-step__status--active{color:var(--brand-ink)}.today-step__meta .today-step__origin{flex-shrink:1;min-width:0;margin:0;padding:1px 7px;overflow:hidden;border-radius:999px;background:var(--sun-soft);color:#8a6200;font-size:11px;font-weight:800;line-height:16px;text-overflow:ellipsis}.today-path .task-card__minutes,.today-step__action{padding:4px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:13px;font-weight:800;white-space:nowrap}.today-step__action--start{display:grid;place-items:center;height:36px;padding:0 14px;background:var(--brand);box-shadow:0 3px 0 var(--brand-deep);color:#fff}.today-step__action--review{background:var(--ok-soft);color:var(--ok-ink)}.today-main-column>.book-card,.today-side-column>.card{margin:0;border:0;border-radius:22px;box-shadow:0 4px 0 var(--edge)}.today-chest{display:flex;align-items:center;gap:12px;margin:0;padding:14px;border-radius:20px;background:var(--sun-soft);box-shadow:0 3px 0 var(--sun-edge);color:var(--sun-ink)}.today-chest__icon{flex:none;font-size:30px}.today-chest strong{font-size:15px}.today-chest small{display:block;margin-top:4px;font-size:12px}.today-side-column .checkin-card{margin:0;padding:16px;border:0;background:var(--sun-soft);box-shadow:0 3px 0 var(--sun-edge)}.today-widgets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.today-widget{display:grid;align-content:start;min-width:0;min-height:114px;gap:5px;padding:12px;border-radius:20px;background:var(--surface);box-shadow:0 3px 0 var(--edge);color:var(--text);text-decoration:none}.today-widget>small,.today-widget>span{color:var(--text-muted);font-size:12px}.today-widget strong{font-size:17px;overflow-wrap:anywhere}.today-widget--leaderboard:empty{display:none}.today-widget__bar{height:8px;overflow:hidden;border-radius:99px;background:var(--brand-soft)}.today-widget__bar>i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--sun),var(--k-listening))}.today-more .more-today__cta>.card__muted{display:none}.today-guide{min-width:0;padding:4px;font-size:13px}.today-guide summary{display:flex;align-items:center;justify-content:center;min-height:48px;color:var(--text-muted);cursor:pointer}.page--today .link-button{min-height:48px}.today-extra-message{color:var(--text-muted);font-size:13px}@media (min-width: 768px){.today-hero{min-height:194px;padding-left:124px}.today-hero__mascot{width:134px;height:134px}}@media (prefers-reduced-motion: reduce){.page--today *,.page--today *:before,.page--today *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.today-hero .mascot.today-hero__mascot{position:absolute;bottom:-8px;left:-5px;margin:0}.today-hero--first{min-height:150px;padding:16px 16px 18px 120px;align-items:flex-start}.today-hero__tag{display:inline-block;margin-bottom:6px;padding:3px 9px;border-radius:999px;background:#ffffff40;font-size:11px;font-weight:900}.today-hero--first .page__title{font-size:22px}.today-hero--first .today-hero__copy>p{margin-top:4px;font-size:13.5px;font-weight:700;opacity:.95}.today-hero--first .mascot.today-hero__mascot{bottom:-14px;left:-8px;width:118px;height:118px}.first-day-prize{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:20px;background:var(--surface);box-shadow:0 4px 0 var(--sun-edge)}.first-day-prize__gift{display:grid;flex:none;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--sun-soft);font-size:26px}.first-day-prize__copy{min-width:0}.first-day-prize__copy b{display:block;font-size:15px;font-weight:900}.first-day-prize__copy small{font-size:12px;font-weight:700;color:var(--text-muted)}.first-day-prize__dots{display:flex;gap:5px;margin-left:auto}.first-day-prize__dots i{width:12px;height:12px;border-radius:50%;background:var(--first-day-dot)}.first-day-prize__dots i.on{background:var(--ok);animation:m-pop var(--dur-reward) var(--spring-bouncy)}@media (prefers-reduced-motion: reduce){.today-progress-ring{transition:none;animation:none}.today-step--just-completed .today-step__badge,.first-day-prize__dots i.on{animation:none}.today-step--just-completed .today-step__button:after{display:none}}.first-day-done{position:relative;display:grid;overflow:hidden;padding:18px 18px 16px;border-radius:28px;background:var(--first-day-done-gradient);box-shadow:0 5px 0 var(--first-day-done-edge),var(--shadow);text-align:center}.first-day-done__burst{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 30%,rgb(255 255 255 / 90%),transparent 55%);pointer-events:none}.first-day-done>*{position:relative}.first-day-done .mascot.first-day-done__mascot{margin:-4px auto -6px}.first-day-done__title{margin:0;color:var(--ok-ink);font-size:24px;font-weight:900}.first-day-done__line{margin:4px 0 0;color:var(--ok-ink);font-size:14px;font-weight:700;opacity:.85}.first-day-done__loot{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:12px}.first-day-done__loot div{padding:8px 12px;border-radius:18px;background:var(--surface);box-shadow:0 3px 0 var(--first-day-done-edge);font-size:13px;font-weight:900}.first-day-done__loot i{display:block;font-size:22px;font-style:normal}.tomorrow-card{padding:14px;border-radius:24px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.tomorrow-card__title{display:flex;align-items:center;gap:8px;margin:0;font-size:17px;font-weight:900}.tomorrow-card__minutes{margin-left:auto;color:var(--text-muted);font-size:12px;font-weight:800}.tomorrow-card__tiles{display:flex;gap:8px;margin-top:10px}.tomorrow-tile{flex:1;min-width:0;padding:10px 6px;border-radius:16px;text-align:center;font-size:12px;font-weight:900}.tomorrow-tile i{display:block;margin-bottom:2px;font-size:22px;font-style:normal}.tomorrow-tile--more{background:var(--surface-muted);color:var(--text-muted)}.tomorrow-streak{display:flex;align-items:center;gap:10px;margin-top:12px;padding:10px 12px;border-radius:18px;background:var(--streak-soft)}.tomorrow-streak__fire{font-size:26px}.tomorrow-streak b{display:block;color:var(--streak-ink);font-size:14px;font-weight:900}.tomorrow-streak small{display:block;color:var(--streak-muted);font-size:12px;font-weight:700}.install-card{padding:16px;border-radius:24px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.install-card__head{display:flex;align-items:center;gap:12px}.install-card__icon{display:grid;flex:none;place-items:center;width:54px;height:54px;overflow:hidden;border-radius:14px;background:var(--install-icon-gradient);box-shadow:0 3px 8px #7c5cff4d}.install-card__icon img{width:60px;height:60px;margin-top:12px}.install-card__title{margin:0;font-size:17px;font-weight:900}.install-card__sub{margin:2px 0 0;color:var(--text-muted);font-size:12.5px;font-weight:700}.install-steps{display:grid;gap:8px;margin:14px 0 0;padding:0;list-style:none}.install-steps li{display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 12px;border-radius:16px;background:var(--surface-muted);font-size:14px;font-weight:800}.install-steps li em{display:grid;flex:none;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--brand);color:#fff;font-size:13px;font-style:normal}.install-steps__key{display:inline-grid;min-width:34px;height:30px;margin-left:4px;padding:0 8px;border-radius:10px;background:var(--surface);box-shadow:0 2px 0 var(--edge);font-size:16px;place-items:center}.install-card__note{margin:14px 0 0;color:var(--text-muted);font-size:12.5px;font-weight:700}.install-card__copy{min-height:44px;margin-top:8px;padding:0 4px;border:0;background:none;color:var(--text-muted);font-size:13px;font-weight:900;cursor:pointer}.install-card__url{display:block;width:100%;min-height:44px;margin-top:4px;padding:0 12px;border:1px solid var(--edge);border-radius:12px;background:var(--surface);color:var(--text);font-size:14px}.install-card__install{width:100%;min-height:52px;margin-top:12px;border:0;border-radius:18px;background:var(--brand);color:#fff;font-size:16px;font-weight:900;box-shadow:0 4px 0 var(--brand-deep);cursor:pointer}.install-card__install:disabled{opacity:.75}.install-card__footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.install-card__later,.install-card__done{min-height:44px;padding:0 4px;border:0;background:none;font-size:13px;font-weight:900;cursor:pointer}.install-card__later{color:var(--text-muted)}.install-card__done{color:var(--brand-ink)}.parent-guide{padding:14px 16px;border-radius:22px;background:var(--surface-muted);border:2px dashed var(--edge)}.parent-guide__title{display:flex;align-items:center;gap:6px;margin:0;font-size:14px;font-weight:900}.parent-guide__list{margin:8px 0 0;padding-left:18px;color:var(--text-muted);font-size:13px;font-weight:600;line-height:1.6}.parent-guide__dismiss{min-height:44px;margin-top:2px;padding:0;border:0;background:none;color:var(--brand-ink);font-size:12px;font-weight:900;cursor:pointer}@media (min-width: 768px){.today-hero--first{min-height:170px;padding-left:144px}.today-hero--first .mascot.today-hero__mascot{width:140px;height:140px}}.page--onboarding .page__title--bubble{font-size:22px;font-weight:900}.page--onboarding .hero__line{margin-top:3px;font-size:14px;font-weight:700;line-height:1.45}@media (min-width: 768px){.page--onboarding .page__title--bubble{font-size:24px}.page--onboarding .hero__line{font-size:16px}}.page--onboarding .field__hint{display:block;margin:6px 0 0 4px;color:var(--text-muted);font-size:12px;font-weight:700}.page--onboarding .form__tiny{margin:10px 0 0;color:var(--text-muted);font-size:12px;font-weight:700;text-align:center}.level-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.level-tile{display:grid;place-items:center;gap:2px;min-height:54px;padding:8px 4px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text-muted);font-size:13px;font-weight:900;cursor:pointer}.level-tile__emoji{font-size:22px}.level-tile--active{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink)}.page--onboarding .choice{position:relative}.choice__badge{position:absolute;top:-9px;right:6px;padding:2px 7px;border-radius:999px;background:var(--sun);color:var(--sun-ink);font-size:10px;font-style:normal;font-weight:900}.today-widget--leaderboard{padding:0;background:transparent;box-shadow:none}.today-widget--leaderboard .lb-today-chip{height:100%;min-height:114px;box-sizing:border-box;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:6px;padding:12px 14px;border-radius:22px;box-shadow:0 4px #1b1260,0 10px 22px #2a1a8640}.today-widget--leaderboard .lb-today-chip__text{white-space:normal;overflow:visible;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.35;font-size:14px}.today-widget--leaderboard .lb-today-chip__chevron{align-self:flex-end}.parent-guide__report{display:inline-flex;align-items:center;min-height:44px;margin-right:18px}.practice-progress{padding:4px 12px;border-radius:999px;background:var(--brand-soft);font-size:14px;font-weight:800;color:var(--brand-ink);white-space:nowrap}.progress-track{height:14px;border-radius:999px;background:#e9e2ff;overflow:hidden;box-shadow:inset 0 2px 3px #4b3a8f1f}.progress-track__fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--ok),#7be8b9);transition:width var(--motion-duration-progress) var(--motion-ease-spring)}.practice-chips{display:flex;gap:8px;margin:0}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 12px;border-radius:999px;font-size:14px;font-weight:800}.chip--star{background:var(--sun-soft);color:#8a5a00}.chip--combo{background:var(--oops-soft);color:var(--oops-ink);animation:m-pop var(--dur-reward) var(--spring-bouncy)}.chip--landed{animation:m-pop .5s ease-out}.practice-source{margin:0;color:var(--text-muted);font-size:14px}.speak-chinese{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px}.speak-chinese__button{min-height:46px;padding:8px 14px}.speak-chinese__notice{color:var(--text-muted);font-size:14px}.status-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:800;background:var(--surface-muted);color:var(--text-muted)}.practice-passage{margin:12px 0 0;padding:14px 16px;border-radius:var(--r-md);background:var(--surface-muted);color:var(--text);font-size:18px;line-height:1.75}.practice-passage__label{display:block;margin-bottom:4px;color:var(--text-muted);font-size:14px}.practice-prompt{margin:14px 0 0;font-size:22px;font-weight:800;line-height:1.4}.practice-options{list-style:none;margin:0;padding:0;display:grid;gap:12px;counter-reset:option}.practice-options>li{counter-increment:option}.practice-option{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:12px 16px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:19px;font-weight:700;text-align:left;box-shadow:0 4px 0 var(--edge);cursor:pointer;transition:transform var(--motion-duration-fast) var(--motion-ease-standard),box-shadow var(--motion-duration-fast) var(--motion-ease-standard),background var(--motion-duration-fast) var(--motion-ease-soft)}.practice-option:before{content:counter(option,upper-alpha);display:grid;flex:none;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--surface-muted);color:var(--brand-ink);font-size:16px;font-weight:800}.practice-options--lettered .practice-option:before{display:none}.practice-option:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--edge)}.practice-option:disabled{cursor:default}.practice-option--selected{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink);box-shadow:0 4px 0 var(--brand);animation:pop var(--motion-duration-feedback) var(--motion-ease-soft)}.practice-option--selected:before{background:var(--brand);color:#fff}.practice-option--correct{border-color:var(--ok);background:var(--ok-soft);color:var(--ok-ink);box-shadow:0 4px 0 var(--ok-deep);animation:m-pop var(--dur-reward) var(--spring-bouncy)}.practice-option--correct.practice-option--selected{overflow:hidden}.practice-option--correct.practice-option--selected:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(90deg,transparent,rgb(255 255 255 / 60%),transparent);animation:m-answer-sheen .5s var(--ease-out) both}.practice-option--revealed{animation:m-fade-in var(--dur-enter) var(--ease-out) .2s backwards}@keyframes m-answer-sheen{0%{transform:translate(-100%);opacity:0}30%{opacity:1}to{transform:translate(100%);opacity:0}}.practice-option--correct:before{content:"✓";background:var(--ok);color:#fff}.practice-option--wrong{border-color:var(--oops);background:var(--oops-soft);color:var(--oops-ink);box-shadow:0 4px 0 var(--oops-deep);animation:m-shake .4s ease-out}.practice-option--wrong:before{background:var(--oops);color:#fff}.practice-option__letter{display:inline-block;min-width:1.6em;margin-right:6px;font-weight:800;color:var(--text-muted)}.practice-options--image .practice-option:before{display:none}.practice-hint{margin:10px 0 0;font-size:16px;color:var(--text-muted)}.practice-feedback{position:relative;display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:20px;animation:slide-up var(--motion-duration-feedback) var(--motion-ease-soft)}.practice-feedback--correct{border:2px solid var(--ok);background:var(--ok-soft)}.practice-feedback--wrong{border:2px solid var(--oops);background:var(--oops-soft)}.practice-feedback__mascot{flex:none}.practice-feedback__body{flex:1;min-width:0}.practice-feedback__title{margin:0;font-size:19px;font-weight:800;color:var(--text)}.practice-feedback--correct .practice-feedback__title{color:var(--ok-ink)}.practice-feedback--wrong .practice-feedback__title{color:var(--oops-ink)}.practice-feedback__detail{margin:4px 0 0;font-size:16px;color:var(--text)}.star-pop{position:absolute;top:-16px;right:14px;padding:4px 14px;border-radius:999px;background:var(--sun);color:#6b4200;font-size:16px;font-weight:800;box-shadow:0 3px 0 var(--sun-deep);animation:star-pop var(--motion-duration-reward) var(--motion-ease-soft) forwards;pointer-events:none}.practice-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:16px}.practice-actions .primary-button{min-width:140px}.practice-actions--sticky{position:sticky;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 20px);z-index:10;margin:0;padding:10px 0 4px;background:linear-gradient(to top,var(--bg) 60%,transparent)}.practice-actions--sticky .primary-button{flex:1;min-height:60px;font-size:20px}.practice-text-input{display:block;width:100%;min-height:60px;padding:10px 16px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:22px;font-weight:700;letter-spacing:.02em}.practice-text-input:focus-visible{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}.complete{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.complete>.complete__mascot{animation:m-pop var(--dur-reward) var(--spring-bouncy)}.complete-actions{display:contents}.complete>.complete__review,.complete-actions .practice-actions{animation:m-fade-in var(--dur-enter) var(--ease-out) both;animation-delay:calc(var(--i, 8) * var(--stagger))}.complete__rating{display:flex;gap:6px;font-size:52px;line-height:1}.complete__star{filter:grayscale(1);opacity:.28}.complete__star--on{filter:none;opacity:0;animation:star-in var(--motion-duration-emphasis) var(--motion-ease-spring-strong) forwards}.complete__gain{margin:0;padding:6px 18px;border-radius:999px;background:var(--sun-soft);color:#8a5a00;font-size:18px;font-weight:800}.complete__level{display:grid;gap:8px;width:100%;text-align:left}.complete__level-title{margin:0;font-size:17px;font-weight:800}.practice-actions--full{justify-content:stretch}.practice-actions--full .primary-button,.practice-actions--full .secondary-button,.practice-actions--full .link-button{flex:1}.practice-feedback{scroll-margin-bottom:calc(var(--nav-h) + 120px)}.practice-options--letters-only{grid-template-columns:repeat(3,minmax(0,1fr))}.practice-options--letters-only .practice-option{justify-content:center;min-height:76px;font-size:30px;font-weight:800}.practice-options--letters-only .practice-option:before{display:none}.review-dots{display:flex;flex-wrap:wrap;gap:8px}.review-dot{min-width:44px;min-height:44px;padding:0 8px;border:2px solid var(--edge);border-radius:14px;background:var(--surface);color:var(--text);font-size:16px;font-weight:800;cursor:pointer}.review-dot--ok{border-color:var(--ok);background:var(--ok-soft);color:var(--ok-ink)}.review-dot--no{border-color:var(--oops);background:var(--oops-soft);color:var(--oops-ink)}.review-dot--current{box-shadow:0 0 0 3px var(--brand)}.review-tag{margin-left:auto;padding:2px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:13px;font-weight:800;white-space:nowrap}.review-answer{display:grid;gap:8px}.review-answer__line{margin:0;font-size:19px}.review-answer__mine--ok{color:var(--ok-ink)}.review-answer__mine--no{color:var(--oops-ink)}.practice-actions--sticky .secondary-button{min-width:120px}.practice-option:disabled{color:var(--text)}.practice-option--correct:disabled{color:var(--ok-ink)}.practice-option--wrong:disabled{color:var(--oops-ink)}.practice-review-link{margin:-6px 0}.complete__review{margin-top:4px}.app-shell.sp-immersive:has(.practice-page),.app-shell.sp-immersive:has(.practice-writing-page){--nav-h: 0px}.app-shell.sp-immersive:has(.practice-page) .app-header,.app-shell.sp-immersive:has(.practice-writing-page) .app-header{display:none}.app-shell .app-main:has(.practice-page),.app-shell .app-main:has(.practice-writing-page){padding:calc(12px + env(safe-area-inset-top)) 16px 24px}.page.practice-page,.page.practice-writing-page{max-width:760px;min-width:0;gap:14px;overflow-wrap:anywhere}.page.practice-page--book{max-width:1200px}.practice-page{padding-bottom:calc(var(--practice-sheet-height, 100px) + 32px)}.practice-topbar{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:10px}.practice-topbar--icon{grid-template-columns:48px 40px minmax(0,1fr) auto}.practice-topbar__icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;font-size:24px}.practice-topbar__exit{display:grid;place-items:center;width:48px;height:48px;border:0;border-radius:50%;background:var(--surface);color:var(--text-muted);font-size:28px;line-height:1;box-shadow:0 4px 0 var(--edge);cursor:pointer}.practice-topbar__exit:active{transform:translateY(3px);box-shadow:0 1px 0 var(--edge)}.practice-topbar__copy{min-width:0}.practice-topbar__copy h1{margin:0;font-size:16px;font-weight:900;line-height:1.3}.practice-topbar__copy span{display:block;margin-top:2px;color:var(--text-muted);font-size:12px;line-height:1.5}.practice-topbar__count{padding:6px 11px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:13px;font-weight:900;white-space:nowrap}.practice-dots{display:flex;flex-wrap:wrap;gap:5px;padding-bottom:2px}.practice-dot{display:block;flex:1;min-width:5px;height:8px;border-radius:999px;--dot-color: var(--practice-dot-rest);transform:scaleX(.72);transition:transform var(--dur-page) var(--spring-snappy)}.practice-dot__fill{display:block;height:100%;border-radius:inherit;background:var(--dot-color)}.practice-dot--correct{--dot-color: var(--ok)}.practice-dot--wrong{--dot-color: var(--oops)}.practice-dot--current,.practice-dot--answered{--dot-color: var(--brand)}.practice-dot--current{transform:scaleX(1)}.practice-dot--just-answered .practice-dot__fill{animation:m-pop .36s var(--spring-bouncy)}.practice-question-enter{animation:m-rise var(--dur-enter) var(--ease-out)}.practice-question-card{padding:16px;border-radius:var(--r-lg);box-shadow:0 4px 0 var(--edge),var(--shadow)}.practice-skill-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;background:var(--skill-soft, var(--brand-soft));color:var(--text);font-size:12px;font-weight:900}.practice-page .practice-hint{margin-top:8px;font-size:13px}.practice-page .practice-prompt{margin-top:6px;font-size:22px;font-weight:900;line-height:1.35}.practice-prompt__gap{display:inline-block;min-width:68px;border-bottom:3px dashed var(--brand);color:transparent;line-height:1}.practice-page .practice-source{margin:0}.practice-page .practice-option{min-height:64px;padding:12px 14px;border-width:3px;border-radius:20px;font-size:18px}.practice-page .practice-option:before{display:none}.practice-option__badge{display:grid;flex:none;place-items:center;width:36px;height:36px;border-radius:12px;background:var(--surface-muted);color:var(--brand-ink);font-size:16px;font-weight:900}.practice-option__badge:before{content:attr(data-letter)}.practice-option--selected .practice-option__badge{background:var(--brand);color:#fff}.practice-option--correct .practice-option__badge{background:var(--ok);color:#fff}.practice-option--wrong .practice-option__badge{background:var(--oops);color:#fff}.practice-option__text{min-width:0;overflow-wrap:anywhere}.practice-options--letters-only .practice-option__badge{display:none}.practice-options--image .practice-option__badge{position:absolute;top:8px;left:8px}.practice-page .practice-options--image .practice-option{padding-top:48px}.practice-page .practice-options:has(.practice-option--correct) .practice-option:not(.practice-option--correct):not(.practice-option--wrong){opacity:.55}.practice-page .practice-option--selected{background:var(--surface)}.practice-page .practice-option--correct{background:var(--ok-soft)}.practice-page .practice-option--wrong{background:var(--oops-soft)}.practice-page .practice-text-input{min-height:68px;border-width:3px;border-radius:20px;box-shadow:0 4px 0 var(--edge)}.practice-text-input--correct{border-color:var(--ok);background:var(--ok-soft);color:var(--ok-ink)}.practice-text-input--wrong{border-color:var(--oops);background:var(--oops-soft);color:var(--oops-ink)}.practice-dock{position:fixed;inset:auto 0 0;z-index:30;max-height:55dvh;overflow-y:auto;padding:18px max(16px,env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));border-radius:28px 28px 0 0;background:var(--surface);box-shadow:0 -8px 26px #4b3a8f24;overflow-wrap:anywhere}.practice-dock--correct{background:var(--practice-correct-gradient)}.practice-dock--wrong{background:var(--practice-wrong-gradient)}.practice-dock--correct,.practice-dock--wrong{animation:m-sheet-in var(--dur-page) var(--spring-snappy)}.practice-dock .practice-actions{max-width:760px;margin:0 auto}.practice-dock .primary-button{width:100%;min-height:56px;border-radius:18px}.practice-feedback-sheet{max-width:760px;margin-inline:auto}.practice-sheet__inner{display:flex;align-items:center;gap:10px}.practice-sheet__mascot{flex:none}.practice-sheet__message{display:grid;gap:2px;min-width:0}.practice-sheet__message strong{font-size:20px;font-weight:900;line-height:1.3}.practice-sheet--correct .practice-sheet__message strong{color:var(--ok-ink)}.practice-sheet--wrong .practice-sheet__message strong{color:var(--oops-ink)}.practice-sheet__message span{color:var(--text-muted);font-size:14px}.practice-sheet__star{margin-left:auto;padding:6px 10px;border-radius:999px;background:var(--sun);color:var(--sun-ink);font-weight:900;white-space:nowrap;box-shadow:0 3px 0 var(--sun-deep)}.practice-sheet__explanation{margin:8px 0;max-height:40dvh;overflow-y:auto;color:var(--text);font-size:15px;line-height:1.6}.practice-dock .speak-chinese__button,.practice-dock .tutor-assistant>button{min-height:48px;background:#ffffffb3;box-shadow:0 3px 0 var(--edge)}.practice-sheet__next{display:block;width:100%;min-height:56px;margin-top:12px;border:0;border-radius:18px;color:#fff;font-size:19px;font-weight:900;cursor:pointer}.practice-sheet--correct .practice-sheet__next{background:var(--ok);box-shadow:0 4px 0 var(--ok-deep)}.practice-sheet--wrong .practice-sheet__next{background:var(--oops);box-shadow:0 4px 0 var(--oops-deep)}.practice-page .book-pane,.practice-writing-page .card{border-radius:var(--r-lg);box-shadow:0 4px 0 var(--edge),var(--shadow)}.practice-page .practice-review-link button,.practice-page button,.practice-writing-page button{min-height:48px}.practice-page .practice-chips{display:flex}.complete{padding:24px 16px;border-radius:28px;background:var(--hero-gradient);box-shadow:0 4px 0 var(--hero-edge),var(--shadow);color:#fff}.complete__title,.complete__lead{color:#fff}.complete__title{font-size:26px;font-weight:900}.complete~.practice-actions button,.complete~div .practice-actions button{min-height:56px;border-radius:20px}@media (min-width: 1024px){.app-shell .app-main:has(.practice-page),.app-shell .app-main:has(.practice-writing-page){padding-inline:0}.practice-dock{right:auto;bottom:18px;left:var(--dock-left, 16px);width:var(--dock-width, calc(100% - 32px) );border-radius:28px;max-height:55dvh;padding:18px}}@media (prefers-reduced-motion: reduce){.practice-page *,.practice-writing-page *,.complete *{transition:none!important;animation:none!important}.complete__star--on{opacity:1}.practice-option--correct.practice-option--selected:after{display:none}.complete-actions .practice-actions{animation:none}}.practice-options--locked .practice-option{opacity:.5;cursor:not-allowed;transition:opacity var(--motion-duration-fast) var(--motion-ease-soft)}.slow-mode-notice{display:grid;gap:8px;margin-bottom:12px;transition:opacity var(--motion-duration-fast) var(--motion-ease-soft)}.slow-mode-notice--done{visibility:hidden;opacity:0}.slow-mode-notice__bubble{display:flex;align-items:center;gap:10px;padding:10px 14px;border:2px solid var(--sun-edge);border-radius:var(--r-md);background:var(--sun-soft);color:var(--sun-ink)}.slow-mode-notice__bubble p,.slow-mode-notice__bar{margin:0;font-size:16px;font-weight:700}.slow-mode-notice__bar{padding:8px 14px;border-radius:var(--r-sm);background:var(--brand-soft);color:var(--brand-ink);text-align:center}.tutor-assistant{margin-top:12px;display:flex;flex-direction:column;gap:10px}.tutor-card{border-left:4px solid var(--primary)}.onboarding-guide{border-left:4px solid var(--primary);background:var(--surface-muted, #eef2f7)}.guide-steps{margin:8px 0 4px;padding-left:20px;display:flex;flex-direction:column;gap:8px;list-style:none;counter-reset:guide}.guide-steps li{counter-increment:guide;position:relative;padding-left:4px;font-size:15px;color:var(--text, #0f172a);line-height:1.5}.guide-steps li:before{content:counter(guide);display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-right:8px;border-radius:50%;background:var(--primary);color:#fff;font-size:13px;font-weight:700}.seed-hint{font-size:12px;text-align:center}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.stat-card{display:flex;flex-direction:column;align-items:center;padding:14px 8px}.stat-card__value{font-size:26px;font-weight:700;color:var(--text)}.stat-card__label{font-size:12px;color:var(--text-muted);margin-top:2px}.history-item{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.history-mark{flex-shrink:0;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff}.history-mark--ok{background:var(--ok)}.history-mark--no{background:var(--danger)}.history-item__body{display:flex;flex-direction:column;gap:2px}.history-item__prompt{margin:0;font-size:14px;color:var(--text);line-height:1.4}.history-item__meta{font-size:12px;color:var(--text-muted)}.question-image{display:block;margin:10px 0 0;border-radius:12px;border:1px solid var(--border);max-width:100%}.question-image--prompt{width:100%;max-height:320px;object-fit:contain;background:var(--surface-muted)}.question-image--option{width:100%;max-height:160px;object-fit:cover;margin:0 0 8px}.question-image--missing{padding:10px 12px;font-size:13px;color:var(--text-muted);background:var(--surface-muted)}.question-image--placeholder{margin:10px 0 0;height:120px;border-radius:12px;background:var(--surface-muted)}.practice-options--image{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.practice-options--image .practice-option{display:flex;flex-direction:column;align-items:stretch}@media (max-width: 600px){.practice-options--image{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}.history-list{list-style:none;margin:0;padding:0}.book-card{display:flex;flex-direction:column;gap:10px}.book-card--cta{border:1px solid var(--primary)}.book-fallback{margin:8px 0 0;text-align:center}.book-fallback__link{font-size:12px;font-weight:400;color:var(--text-muted);text-decoration:underline}.book-card__current{margin:0;font-size:16px}.book-progress{height:8px;border-radius:999px;background:var(--surface-muted);overflow:hidden}.book-progress__bar{height:100%;border-radius:999px;background:var(--primary)}.book-units{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}.book-unit{width:100%;min-height:44px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 8px;padding:8px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font-size:15px;text-align:left}.book-unit--active{border-color:var(--primary);background:var(--brand-soft)}.book-unit__title{flex:1 1 60%;min-width:0}.book-unit__state{flex:none;font-size:13px;color:var(--text-muted)}.book-unit__state--completed,.book-unit__state--done,.book-unit__state--skipped{color:var(--ok-ink)}.book-unit__state--failed{color:var(--danger-ink)}.book-unit--active .book-unit__state{color:var(--primary);font-weight:700}.book-unit .material-card__error{flex-basis:100%}.file-button{display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;cursor:pointer}.book-import__alt{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:13px}.book-card__count{flex:none;white-space:nowrap}.book-excerpt{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:12px}.book-excerpt__crop{display:flex;justify-content:center;width:100%;padding:6px;border:2px solid var(--edge);border-radius:var(--r-md);background:#fff;cursor:zoom-in}.book-stack{display:flex;flex-direction:column;gap:6px;width:100%}.book-crop{position:relative;display:block;width:100%;overflow:hidden;border-radius:10px}.book-excerpt__loading{padding:24px 0;color:var(--text-muted);font-size:15px}.book-excerpt__open{min-height:44px;padding:6px 18px;border:0;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:16px;font-weight:800;cursor:pointer}.book-viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:flex;flex-direction:column;background:#2b2350}.book-viewer__bar,.book-viewer__nav{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;background:var(--surface)}.book-viewer__bar{padding-top:calc(env(safe-area-inset-top) + 10px)}.book-viewer__nav{padding-bottom:calc(env(safe-area-inset-bottom) + 10px)}.book-viewer__nav .secondary-button{flex:1}.book-viewer__close{min-height:44px;padding:0 18px;border:0;border-radius:999px;background:var(--brand);color:#fff;font-size:16px;font-weight:800;cursor:pointer}.book-viewer__count{font-size:15px;font-weight:800;color:var(--text-muted)}.book-viewer__zoom{display:flex;gap:6px}.book-viewer__zoom-button{min-width:44px;min-height:44px;border:2px solid var(--edge);border-radius:12px;background:var(--surface);color:var(--text);font-size:15px;font-weight:800;cursor:pointer}.book-viewer__zoom-button--on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink)}.book-viewer__scroller{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom}.book-viewer__page{position:relative;margin:0 auto}.book-viewer__page img{display:block;width:100%;height:auto}.book-viewer__box{position:absolute;border:3px solid var(--pink);border-radius:8px;box-shadow:0 0 0 9999px #2b23501f;pointer-events:none}.book-viewer__status{margin:40px 20px;color:#fff;text-align:center}.practice-split__book{margin-bottom:12px}.book-pane{padding:6px 8px 8px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow)}.book-pane__bar{display:flex;align-items:center;justify-content:space-between;padding:0 2px 4px}.book-pane__title{font-size:14px;font-weight:800;color:var(--text-muted)}.book-pane__more{min-height:36px;padding:0 14px;border:0;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:14px;font-weight:800;cursor:pointer}.book-pane__scroll{max-height:36vh;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:10px}.book-pane__scroll--fit{overflow:hidden}.book-mark{position:absolute;border:2px solid var(--sun-deep);border-radius:6px;background:#ffc93c52;pointer-events:none}@media (min-width: 768px){.practice-split__book{margin-bottom:16px}.book-pane__scroll{max-height:calc(42vh - 58px)}.practice-split__main{display:flex;flex-direction:column;gap:18px;min-width:0}}@media (min-width: 1024px){.practice-split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;gap:24px}.practice-split__book{position:sticky;top:var(--stick-top);z-index:8;margin-bottom:0}.book-pane__scroll{max-height:calc(100dvh - var(--stick-top) - 24px - 58px)}}@media (max-width: 767px){.practice-split--listening .book-pane__scroll{max-height:22vh}.practice-split--listening .practice-actions--sticky:has(.primary-button:disabled){position:static}.practice-split__main{display:flex;flex-direction:column;gap:14px}}.book-pane__actions{display:flex;gap:6px}.book-map{display:grid;gap:12px}.book-header-card{display:flex;align-items:center;gap:12px;padding:14px;border-radius:var(--r-lg);background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.book-header-card__cover{display:block;flex:none;width:52px;height:68px;border-radius:6px;object-fit:cover;box-shadow:0 4px 10px #2b235033}.book-header-card__copy{min-width:0;flex:1}.book-header-card__copy h2{margin:0;font-size:16px;font-weight:900}.book-header-card__copy p{margin:2px 0 0;color:var(--text-muted);font-size:12px}.book-header-card__progress{height:10px;margin-top:8px;overflow:hidden;border-radius:999px;background:var(--brand-soft)}.book-header-card__progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),var(--pink))}.book-map__heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:2px}.book-unit-map{display:grid;gap:10px}.book-map__heading h2{margin:0;font-size:20px;font-weight:900}.book-map__heading span{color:var(--text-muted);font-size:13px}.book-import-note{margin:0;color:var(--text-muted);font-size:14px}.book-import-note .link-button{min-height:48px;margin-left:4px;padding-inline:8px}.book-unit-map .book-units{gap:10px}.book-unit-map .book-unit{min-height:72px;flex-wrap:nowrap;align-items:center;gap:12px;padding:10px 12px;border:0;border-radius:20px;box-shadow:0 3px 0 var(--edge)}.book-unit-map .book-unit--active{outline:3px solid var(--brand);outline-offset:-1px;background:var(--surface)}.book-unit--later{opacity:.62}.book-unit__number{display:grid;flex:none;place-items:center;width:48px;height:48px;border-radius:16px;background:var(--brand-soft);color:var(--brand-ink);font-size:18px;font-weight:900}.book-unit--done .book-unit__number{background:var(--ok);color:#fff}.book-unit--active .book-unit__number{background:var(--brand);color:#fff}.book-unit__copy{display:grid;flex:1;min-width:0;gap:2px}.book-unit__copy strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;font-size:15px;font-weight:900;text-overflow:ellipsis;white-space:normal;overflow-wrap:anywhere}.book-unit__copy small{overflow:hidden;color:var(--text-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.book-unit__ring{display:grid;flex:none;place-items:center;width:44px;height:44px;border-radius:50%;background:conic-gradient(var(--ok) var(--unit-progress),var(--unit-ring-track) 0)}.book-unit__ring span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--surface);font-size:11px;font-weight:900}.book-review-row{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;padding:8px 14px;border:0;border-radius:999px;background:var(--sun-soft);color:var(--sun-ink);font:inherit;font-size:13px;font-weight:800;text-align:left;cursor:pointer}.book-review-row small{margin-left:auto;color:var(--text-muted);font-size:12px}@media (min-width: 768px){.book-header-card__copy h2{font-size:18px}.book-unit-map .book-unit{min-height:84px;padding-inline:16px}}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.writing-situation{margin:12px 0 0;font-size:17px;line-height:1.6}.writing-points-label{margin:12px 0 4px;font-size:14px;font-weight:700;color:var(--text-muted)}.writing-points{margin:0;padding-left:22px;font-size:17px;line-height:1.7}.writing-panels{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.writing-panel{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 8px;border-radius:12px;background:var(--surface-muted);text-align:center}.writing-panel__emoji{font-size:44px;line-height:1.1}.writing-panel__caption{font-size:14px;line-height:1.45}@media (max-width: 420px){.writing-panels{grid-template-columns:1fr}.writing-panel{flex-direction:row;text-align:left;padding:10px 12px}.writing-panel__emoji{font-size:36px}}.writing-input{display:block;width:100%;min-height:12em;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);font-size:17px;line-height:1.6;font-family:inherit;resize:vertical}.writing-input:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.writing-ladder{border:2px solid var(--brand-soft)}.writing-ladder__progress{margin:0 0 6px;color:var(--text-muted);font-size:14px}.writing-ladder__prompt{margin:0 0 10px;font-size:17px;line-height:1.5}.writing-ladder__choices{display:grid;gap:8px}.writing-ladder__choices .secondary-button{min-height:44px;text-align:left;white-space:normal}.writing-ladder__done{margin:4px 0 10px;color:var(--ok-ink);font-weight:700}.writing-ladder__nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.writing-ladder__nav .secondary-button{min-height:44px}.writing-ladder__skip{display:block;min-height:44px;margin:6px 0 0;padding:0;border:0;background:none;color:var(--text-muted);font:inherit;font-size:14px;text-decoration:underline;cursor:pointer}.writing-ladder__reopen{min-height:44px;margin-bottom:12px}.writing-photo-note{margin:0 0 10px;padding:8px 12px;border-radius:10px;background:var(--brand-soft);font-size:14px;line-height:1.5}.writing-photo-note p{margin:0}.writing-photo-note p+p{margin-top:4px}.writing-photo-button{display:inline-flex;margin-top:12px;cursor:pointer}.writing-count{margin:8px 0 0;font-size:14px;color:var(--text-muted)}.writing-hint{margin:4px 0 0;font-size:14px;font-weight:700;color:var(--brand)}.writing-text{margin:8px 0 0;font-size:17px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}.writing-scores{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.writing-score{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:10px 12px;border-radius:10px;background:var(--surface-muted);font-size:15px}.writing-score strong{font-size:18px}.writing-score--total{background:var(--brand-soft);color:var(--brand)}.writing-note{margin:8px 0 0;font-size:12px;color:var(--text-muted)}.writing-block{margin-top:14px}.writing-block__title{margin:0 0 6px;font-size:15px}.writing-list,.writing-check-list,.writing-fixes{margin:0;padding-left:20px;font-size:15px;line-height:1.6}.writing-check-list{list-style:none;padding-left:0}.writing-fixes{list-style:none;padding-left:0;display:grid;gap:10px}.writing-fix{padding:10px 12px;border-radius:10px;background:var(--surface-muted)}.writing-fix__line{margin:0;font-size:15px}.writing-fix__old{color:var(--danger-ink);text-decoration:line-through}.writing-fix__new{color:var(--ok-ink)}.writing-fix__why{margin:4px 0 0;font-size:14px;color:var(--text-muted)}.writing-encourage{margin:14px 0 0;font-size:16px;font-weight:700;color:var(--ok-ink)}.writing-model{margin-top:12px}.writing-model summary{min-height:44px;display:flex;align-items:center;color:var(--brand);font-size:15px;font-weight:700;cursor:pointer}.writing-model__text{margin:4px 0 0;padding:12px 14px;border-radius:10px;background:var(--surface-muted);font-size:16px;line-height:1.7}.practice-hint{margin:10px 0 0;font-size:15px;color:var(--text-muted)}.listening-player{margin:12px 0 0}.listening-player__controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}.listening-player__button{min-width:148px;min-height:52px;font-size:18px}.listening-player__count{font-size:15px;font-weight:700;color:var(--brand)}.listening-player__hint,.listening-player__shared{font-size:14px;color:var(--text-muted)}.listening-player__notice{margin:0 0 8px;font-size:15px;font-weight:700;color:var(--text-muted)}.listening-player__fallback-note{margin:8px 0 0;font-size:14px;color:var(--text-muted)}.listening-script{margin-top:8px}.listening-script summary{min-height:44px;display:flex;align-items:center;color:var(--brand);font-size:15px;font-weight:700;cursor:pointer}.listening-script__lines{list-style:none;margin:4px 0 0;padding:12px 14px;border-radius:10px;background:var(--surface-muted);font-size:16px;line-height:1.7}.listening-script__lines li+li{margin-top:6px}.practice-text-input{display:block;width:100%;min-height:52px;padding:10px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);font-size:18px;font-family:inherit}.practice-text-input:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.practice-option__letter{display:inline-block;min-width:1.6em;margin-right:6px;font-weight:700;color:var(--text-muted)}.exam-countdown{margin:0;padding:8px 14px;border-radius:999px;align-self:flex-start;background:var(--sun-soft);font-size:15px;font-weight:800;color:#8a5a00}.exam-countdown--sprint{background:var(--brand-soft);font-size:14px;font-weight:700;color:var(--brand-ink)}.practice-passage--multiline{white-space:pre-line}.practice-test-bar{display:flex;align-items:center;gap:10px;margin:0}.practice-test-badge{display:inline-block;padding:2px 10px;border-radius:999px;background:var(--sun-soft);color:#92400e;font-size:13px;font-weight:700}.practice-timer{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-muted)}.scorecard-list{display:flex;flex-direction:column;gap:10px;margin:12px 0;padding:0;list-style:none}.scorecard-item{padding:12px 14px}.scorecard-item__prompt{margin:0 0 6px;font-size:15px;font-weight:700}.scorecard-item__line{margin:2px 0;font-size:14px;color:var(--text-muted)}.scorecard-item__more{margin-top:6px;font-size:14px}.scorecard-item__more summary{cursor:pointer;color:var(--brand)}.scorecard-item__more p{margin:6px 0 0}.scorecard-mark{display:inline-block;margin-right:8px;padding:1px 8px;border-radius:999px;background:var(--surface-muted);color:var(--text-muted);font-size:12px;font-weight:700}.scorecard-mark--ok{background:var(--ok-soft);color:var(--ok-ink)}.readiness-card{margin-bottom:12px;border:0;box-shadow:0 4px 0 var(--edge),var(--shadow)}.readiness-card__status{margin:0 0 4px;font-size:16px;font-weight:700}.readiness-group{margin-top:16px}.readiness-group__title{margin:0 0 6px;font-size:14px;font-weight:700}.readiness-list{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}.readiness-row{display:grid;grid-template-columns:minmax(90px,1fr) minmax(50px,1.25fr) 44px;gap:8px;align-items:center;font-size:13px;font-weight:800}.readiness-row__meta{display:flex;flex-direction:column;color:var(--text-muted);text-align:right;white-space:nowrap}.readiness-row__meta small{font-size:10px;font-weight:500}.readiness-bar{position:relative;height:10px;margin-top:0;border-radius:999px;background:var(--surface-muted);overflow:visible}.readiness-bar__fill{height:100%;border-radius:999px;background:var(--ok)}.readiness-bar__fill--low{background:var(--sun)}.readiness-bar__ref{position:absolute;top:-3px;bottom:-3px;width:2px;margin-left:-1px;background:var(--text)}.readiness-group__summary{margin:8px 0 0;font-size:13px;color:var(--text-muted)}.readiness-note{margin:16px 0 0;font-size:12px;color:var(--text-muted)}.readiness-disclaimer{margin:4px 0 0;font-size:12px;color:var(--text-muted)}.progress-page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.progress-page-heading .page__title{margin-bottom:4px}.progress-page-heading__mark{display:grid;place-items:center;width:48px;height:48px;border-radius:16px;background:var(--brand-soft);font-size:24px}.progress-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}.progress-kpi{min-height:94px;display:flex;flex-direction:column;padding:16px;border-radius:22px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.progress-kpi__value{font-size:27px;font-weight:900;letter-spacing:-.04em}.progress-kpi__value small{font-size:12px;letter-spacing:normal}.progress-kpi__label{margin-top:2px;color:var(--text-muted);font-size:13px;font-weight:800}.progress-kpi--purple{color:var(--brand-ink)}.progress-kpi--green{color:var(--ok-ink)}.progress-kpi--blue,.progress-kpi--orange{color:var(--text)}.progress-kpi__link{display:flex;align-items:center;min-height:48px;color:var(--brand-ink);font-size:12px;font-weight:700}.progress-detail-stats{margin:16px 0}.progress-page>.card,.progress-detail-stats .card{border:0;box-shadow:0 4px 0 var(--edge),var(--shadow)}.progress-page>.card{margin-bottom:14px}.progress-page .history-list{margin:0;padding:0;list-style:none}.progress-page .history-item__body{min-width:0;overflow-wrap:anywhere}.progress-page .history-mark--no{background:var(--oops)}.progress-week-card{margin:14px 0;padding:16px;border-radius:24px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.progress-week-chart{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;height:146px;margin-top:16px}.progress-week-chart__day{display:flex;min-width:0;flex-direction:column;align-items:center;gap:5px;color:var(--text-muted);font-size:12px}.progress-week-chart__track{display:flex;align-items:end;width:100%;height:90px;padding:0 5px}.progress-week-chart__track span{display:block;width:100%;min-height:8px;border-radius:8px 8px 4px 4px;background:var(--chart-gradient)}.progress-week-chart__track .progress-week-chart__bar--empty{opacity:.3}.progress-week-chart__day b{font-size:12px}.progress-week-chart__day small{color:var(--text-muted);font-size:11px}.progress-more{width:100%;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.readiness-card__subtitle{margin:-8px 0 4px;color:var(--text-muted);font-size:13px}.readiness-row--muted{color:var(--text-muted)}.readiness-row--muted .readiness-bar{background:var(--muted-bar)}.readiness-row--muted .readiness-bar__ref{opacity:.35}.readiness-row--ok .readiness-bar__fill{background:var(--ok)}.readiness-row--sun .readiness-bar__fill{background:var(--sun)}.readiness-row--oops .readiness-bar__fill{background:var(--oops)}.readiness-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px;color:var(--text-muted);font-size:12px;font-weight:800}@media (min-width: 1024px){.progress-kpi-grid,.progress-detail-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (prefers-reduced-motion: reduce){.progress-page *,.progress-page *:before,.progress-page *:after{animation:none!important;transition:none!important}}.mistakes-page{gap:12px}.mistakes-hero{display:flex;align-items:center;gap:12px;min-height:104px;padding:14px;overflow:hidden;border-radius:var(--r-lg);background:var(--mistakes-hero-gradient);color:var(--surface);box-shadow:0 8px 20px #ff8a4c4d}.mistakes-hero .mascot{flex:none;margin:-10px 0 -18px}.mistakes-hero>div{min-width:0}.mistakes-hero h1{margin:0;font-size:20px;font-weight:900;line-height:1.3}.mistakes-hero p{margin:3px 0 0;font-size:13px;opacity:.95}.mistakes-hero--clear{background:var(--mistakes-clear-gradient);box-shadow:0 8px 20px #22c58b33}.mistake-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mistake-stats--three{grid-template-columns:repeat(3,minmax(0,1fr))}.mistake-stats--four{grid-template-columns:repeat(4,minmax(0,1fr))}.mistake-stats>div{display:grid;place-items:center;gap:4px;min-height:72px;padding:10px 4px;border-radius:var(--r-md);background:var(--surface);box-shadow:0 4px 0 var(--edge)}.mistake-stats strong{font-size:22px;line-height:1}.mistake-stats span{color:var(--text-muted);font-size:12px}.mistake-stat__oops{color:var(--oops-ink)}.mistake-stat__ok{color:var(--ok-ink)}.mistakes-review{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 12px;border-radius:var(--r-md);background:var(--sun-soft)}.mistakes-review__text{margin:0;color:var(--sun-ink);font-size:13px;font-weight:800}.mistakes-review .link-button{flex:none;min-height:48px;padding-inline:6px;color:var(--sun-ink);font-size:13px}.mistakes-practice-cta{display:flex;align-items:center;gap:12px;width:100%;min-height:76px;padding:12px 14px;border:0;border-radius:20px;background:var(--oops);color:var(--surface);box-shadow:0 5px 0 var(--oops-deep);font:inherit;text-align:left;cursor:pointer}.mistakes-practice-cta>span:first-child{display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:14px;background:#fff3;font-size:26px}.mistakes-practice-cta>span:nth-child(2){display:grid;flex:1;min-width:0;gap:1px}.mistakes-practice-cta small{font-size:12px;opacity:.95}.mistakes-practice-cta strong{font-size:16px;font-weight:900}.mistakes-practice-cta>span:last-child{font-size:24px;font-weight:900}.mistakes-practice-cta:disabled{opacity:.6;cursor:wait}.mistakes-practice-cta:active{transform:translateY(3px);box-shadow:0 2px 0 var(--oops-deep)}.mistake-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin-top:6px;padding:4px;border-radius:999px;background:var(--brand-soft)}.mistake-tab{min-height:48px;padding:6px 8px;border:0;border-radius:999px;background:transparent;color:var(--text-muted);font:inherit;font-size:14px;font-weight:800;cursor:pointer}.mistake-tab--on{background:var(--surface);color:var(--brand-ink);box-shadow:0 3px 0 var(--edge)}.mistake-group{display:grid;gap:8px}.mistake-group__heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.mistake-group__heading>span{flex:none;color:var(--text-muted);font-size:12px}.mistake-group__title{margin:4px 4px 0;font-size:16px;font-weight:900}.mistake-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.mistake-card{display:flex;align-items:flex-start;gap:12px;min-height:84px;padding:12px;border-radius:20px;background:var(--surface);box-shadow:0 4px 0 var(--edge);color:inherit;text-decoration:none}.mistake-card:active{transform:translateY(3px);box-shadow:0 1px 0 var(--edge)}.mistake-card__icon{display:grid;place-items:center;flex:none;width:44px;height:44px;border-radius:14px;font-size:24px;line-height:1}.mistake-card__body{display:grid;flex:1;min-width:0;gap:3px}.mistake-card__prompt{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;font-size:16px;font-weight:900;line-height:1.35;overflow-wrap:anywhere}.mistake-card__meta{color:var(--text-muted);font-size:12px;line-height:1.4;overflow-wrap:anywhere}.mistake-card__answers{display:grid;gap:2px;font-size:12px;line-height:1.4}.mistake-card__answers>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mistake-card__answers s{color:var(--oops-ink)}.mistake-card__answers em{color:var(--ok-ink);font-style:normal;font-weight:800}.mistake-badge{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--ok-soft);color:var(--ok-ink);font-size:11px;font-weight:800}.mistake-badge--wait{background:var(--brand-soft);color:var(--brand-ink)}.mistake-segment-hint{margin:2px 4px 0;color:var(--text-muted);font-size:13px;font-weight:700}.mistake-history{margin:0;font-size:17px;font-weight:800;letter-spacing:.06em}.mistake-hint{display:inline-block;margin-left:8px;padding:2px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:13px;font-weight:800;vertical-align:middle}@media (min-width: 768px){.mistakes-page{max-width:760px;gap:14px}.mistakes-hero{min-height:120px}.mistakes-hero h1{font-size:24px}.mistake-card__prompt{font-size:18px}}@media (prefers-reduced-motion: reduce){.mistakes-page *{animation:none!important;transition:none!important}}.stat-grid--three{grid-template-columns:repeat(3,1fr);margin:0}.stat-grid--three .stat-card__value{font-size:20px}.reward-next{margin:0;padding:12px 16px;border-radius:var(--r-md);background:var(--sun-soft);color:#7a5200;font-size:16px;font-weight:700;text-align:center}.sticker-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.sticker{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;aspect-ratio:1;min-width:0;padding:4px;border:2px solid var(--border);border-radius:20px;text-align:center}.sticker__emoji{font-size:34px;line-height:1.1}.sticker__name{font-size:11px;font-weight:800;color:var(--text-muted)}.sticker--unlocked{border-color:var(--sun);background:linear-gradient(160deg,#fff,var(--sun-soft))}.sticker--unlocked .sticker__name{color:#7a5200}.sticker--locked{background:var(--surface-muted)}.sticker--new{perspective:600px;animation:sticker-flip .6s var(--spring-snappy) both}.sticker--new:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;border-radius:inherit;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.8) 48%,transparent 66%);transform:translate(-120%);animation:sticker-shine .36s var(--ease-out) .26s both;pointer-events:none}@keyframes sticker-flip{0%{opacity:.55;transform:rotateY(90deg)}to{opacity:1;transform:rotateY(0)}}@keyframes sticker-shine{to{transform:translate(120%)}}.sticker--locked .sticker__emoji{filter:brightness(0);opacity:.16}.reward-rules{margin:0;padding:0;list-style:none;display:grid;gap:10px;font-size:16px}.rewards-page{gap:16px}.rewards-page__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.rewards-page__eyebrow{margin:0 0 2px;color:var(--text-muted);font-size:13px;font-weight:800}.rewards-layout{display:flex;flex-direction:column;gap:16px}.reward-stage{position:relative;display:grid;justify-items:center;padding:16px;overflow:hidden;border:0;border-radius:28px;background:var(--reward-spotlight);text-align:center;isolation:isolate;box-shadow:0 4px 0 var(--edge),var(--shadow)}.reward-stage__floor{position:absolute;z-index:-1;top:142px;width:170px;height:30px;border-radius:50%;background:#7b5cff2e;filter:blur(4px)}.reward-stage .mascot{margin-bottom:6px}.reward-stage__level{margin:0;padding:5px 14px;border-radius:999px;background:var(--surface);color:var(--brand-ink);font-size:15px;font-weight:900;box-shadow:0 3px 0 var(--edge)}.reward-stage__meter{width:min(100%,260px);height:12px;margin-top:10px;overflow:hidden;border-radius:999px;background:#ffffffd9;box-shadow:inset 0 0 0 2px #4b3a8f14}.reward-stage__meter span{display:block;height:100%;border-radius:inherit;background:var(--reward-xp-gradient)}.reward-stage__hint{margin:5px 0 0;color:var(--text-muted);font-size:12px;font-weight:800}.rewards-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px}.rewards-stats .stat-card{min-width:0;padding:12px 6px;border-radius:18px;border:0;box-shadow:0 3px 0 var(--edge)}.rewards-stats .stat-card__value{display:block;font-size:clamp(16px,4.4vw,24px);overflow-wrap:anywhere}.rewards-stats .stat-card__label{font-size:12px}.reward-next,.reward-help,.reward-panel>.card,.reward-panel>details{border-radius:22px;box-shadow:0 4px 0 var(--edge),var(--shadow)}.reward-help{padding:0;overflow:hidden}.reward-help summary{min-height:52px;padding:14px 16px;color:var(--text);font-size:16px;font-weight:900;cursor:pointer;list-style:none}.reward-help summary::-webkit-details-marker{display:none}.reward-help summary:after{float:right;color:var(--brand-ink);content:"＋";font-size:20px;line-height:1}.reward-help[open] summary:after{content:"−"}.reward-help .reward-rules{padding:0 16px 16px}@media (max-width: 430px){.rewards-page__header .page__title{font-size:25px}.rewards-page__eyebrow{font-size:12px}}@media (min-width: 1024px){.rewards-layout{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr);align-items:start;gap:24px}.rewards-sidebar{position:sticky;top:82px}.reward-stage{padding-block:24px}}@media (prefers-reduced-motion: reduce){.rewards-page *,.rewards-page *:before,.rewards-page *:after{animation:none!important;transition:none!important}}.rewards-sidebar,.rewards-content{min-width:0}.rewards-page .reward-tabs{position:relative;display:flex;flex-wrap:nowrap;gap:6px;max-width:100%;padding:2px 2px 6px;overflow-x:auto;border-radius:0;background:transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.rewards-page .reward-tabs__indicator{position:absolute;top:2px;left:2px;z-index:0;height:48px;border-radius:999px;background:var(--brand);box-shadow:0 4px 0 var(--brand-deep);pointer-events:none;transition:transform var(--dur-page) var(--spring-snappy),width var(--dur-page) var(--spring-snappy)}.rewards-page .reward-tab{display:inline-flex;flex:none;align-items:center;justify-content:center;min-height:48px;padding:9px 14px;border-radius:999px;background:var(--surface);color:var(--text-muted);font-size:14px;font-weight:900;text-decoration:none;box-shadow:0 3px 0 var(--edge)}.rewards-page .reward-tab--active{position:relative;z-index:1;background:var(--brand);color:var(--surface);box-shadow:0 4px 0 var(--brand-deep)}.rewards-page .reward-tabs--indicator-ready .reward-tab--active{background:transparent;box-shadow:none}.rewards-page .reward-tab:active{transform:translateY(2px);box-shadow:0 1px 0 var(--edge)}.rewards-page .reward-panel{gap:14px;margin-top:8px}.rewards-page .reward-panel>.card{padding:14px;border:0}.rewards-page .reward-panel .card__title{font-size:16px}.rewards-page .reward-panel .meter__fill{background:var(--reward-xp-gradient);transition:width var(--dur-reward) var(--ease-out)}.rewards-page .month-cal__title{font-size:13px;text-align:left}.rewards-page .month-cal__cell{border-radius:12px}.rewards-page .month-cal__cell--blank{background:transparent}.rewards-page .month-cal__cell--future{opacity:1}.rewards-page .sticker,.rewards-page .item-cell{position:relative;border-radius:18px;box-shadow:0 3px 0 var(--edge)}.rewards-page .sticker--locked,.rewards-page .item-cell--locked{background:var(--surface-muted)}.rewards-page .sticker--locked:after,.rewards-page .item-cell--locked:after{position:absolute;top:5px;right:7px;content:"🔒";font-size:12px}.rewards-page .sticker--locked .sticker__emoji,.rewards-page .item-cell--locked .item-artwork{filter:none;opacity:.5}.rewards-page .reward-rules{font-size:14px;line-height:1.65}.rewards-page .wish-card{border-radius:18px;background:var(--surface);box-shadow:0 3px 0 var(--edge)}.rewards-page .wish-card__cost,.rewards-page .rarity-tag{border-radius:999px}.rewards-page .wish-card__pending-pill{flex:none;padding:12px 16px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:15px;font-weight:800;text-align:center}.waiting-list__main{flex:1;min-width:0;display:grid}.waiting-list__meta{font-size:13px;font-weight:600;color:var(--text-muted)}.waiting-list__count,.redeem-item__count{flex:none;padding:2px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:13px;font-weight:800;white-space:nowrap}.redeem-item__count{margin-left:6px}.rewards-page button,.rewards-page .wardrobe-tryon a{min-height:48px}.rewards-page .coin-card{background:linear-gradient(135deg,var(--sun-soft),var(--surface))}.celebration{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#2b23509e;animation:fade-in var(--motion-duration-in) var(--motion-ease-soft)}.celebration__card{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;max-width:340px;padding:24px 20px 20px;border-radius:28px;background:var(--surface);text-align:center;isolation:isolate;animation:pop-in var(--motion-duration-emphasis) var(--motion-ease-spring)}.celebration__mascot{animation:m-hop var(--dur-reward) var(--spring-bouncy) both}.celebration__kicker{margin:0;font-size:20px;font-weight:800;color:var(--brand-ink)}.celebration__badge{position:relative;margin:10px 0;font-size:92px;line-height:1.1;animation:bounce-soft var(--motion-duration-bounce) var(--motion-ease-in-out) infinite}.celebration__badge:before{content:"";position:absolute;top:-34px;right:-34px;bottom:-34px;left:-34px;z-index:-1;border-radius:50%;background:repeating-conic-gradient(#ffe89a66 0 10deg,transparent 10deg 20deg);-webkit-mask-image:radial-gradient(circle,#000 35%,transparent 70%);mask-image:radial-gradient(circle,#000 35%,transparent 70%);animation:spin var(--motion-duration-spin) linear infinite}.celebration__title{margin:0;font-size:24px;font-weight:800}.celebration__title span{display:block;font-size:16px;color:var(--text-muted)}.celebration__hint{margin:0 0 8px;font-size:15px;color:var(--text-muted)}.celebration__button{width:100%}.confetti{pointer-events:none}.mascot__ear{transform-box:view-box}.mascot--cheer .mascot__ear--left{animation:ear-left var(--motion-duration-emphasis) var(--motion-ease-in-out) 3}.mascot--cheer .mascot__ear--right{animation:ear-right var(--motion-duration-emphasis) var(--motion-ease-in-out) 3}.mascot__zzz{animation:float var(--motion-duration-float) var(--motion-ease-in-out) infinite}.checkin-card{position:relative;display:grid;gap:8px;overflow:hidden;text-align:center;color:inherit;text-decoration:none}.checkin-card--ready,.checkin-card--stamping{border-color:var(--sun);background:linear-gradient(160deg,#ffffff,var(--sun-soft));box-shadow:0 5px 0 var(--sun-deep)}.checkin-card--done{border-color:#b7eed6;background:var(--ok-soft);box-shadow:0 5px #b7eed6}.checkin-card__title{margin:0;font-size:22px;font-weight:800;line-height:1.3}.checkin-card__hint{margin:0;font-size:16px;color:var(--text-muted)}.checkin-card__meta{font-size:17px;font-weight:800;color:var(--ok-ink)}.checkin-card__button{position:relative;width:100%;min-height:68px;margin-top:4px;font-size:26px;letter-spacing:.3em;text-indent:.3em}.checkin-card__button:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--r-md);box-shadow:0 0 #7c5cff80;pointer-events:none;animation:checkin-ring var(--motion-duration-attention) var(--motion-ease-soft) infinite}@keyframes checkin-ring{0%{box-shadow:0 0 #7c5cff80}70%,to{box-shadow:0 0 0 14px #7c5cff00}}.checkin-hint{margin:0;padding:8px 14px;border-radius:999px;background:var(--sun-soft);color:#7a5200;font-size:14px;font-weight:700;text-align:center}.checkin-card--stamping{overflow:visible;animation:checkin-card-impact .2s var(--ease-out) .42s both}.checkin-stamp-slot{position:relative;height:72px;margin-top:4px}.checkin-stamp{position:absolute;top:0;right:0;bottom:0;left:0;width:128px;height:128px;margin:auto;display:grid;place-items:center;border:6px double var(--danger);border-radius:50%;background:#ffffffb8;color:var(--danger);font-size:28px;font-weight:900;letter-spacing:.12em;text-indent:.12em;transform:rotate(-14deg);animation:stamp-drop var(--motion-duration-reveal) var(--spring-bouncy) both;pointer-events:none}.checkin-stamp:after{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border:3px solid currentColor;border-radius:50%;opacity:0;animation:ink-burst .5s var(--ease-out) .52s both}@keyframes ink-burst{0%{opacity:.5;transform:scale(.6)}to{opacity:0;transform:scale(1.4)}}@keyframes checkin-card-impact{0%{transform:scaleY(.97)}to{transform:scaleY(1)}}@keyframes stamp-drop{0%{opacity:0;transform:translateY(-110px) rotate(-40deg) scale(2.4)}60%{opacity:1;transform:translateY(0) rotate(-14deg) scale(.9)}to{opacity:1;transform:translateY(0) rotate(-14deg) scale(1)}}.week-strip{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.week-strip__day{display:grid;justify-items:center;gap:2px;padding:4px 0;border-radius:14px}.week-strip__day--today{background:#ffffffbf;box-shadow:inset 0 0 0 2px var(--brand)}.week-strip__day--new .stamp-mark{animation:m-pop .5s var(--spring-bouncy) both}.week-strip__name{font-size:12px;font-weight:800;color:var(--text-muted)}.stamp-mark{display:grid;place-items:center;width:32px;height:32px;border:2px dashed var(--edge);border-radius:50%;color:var(--text-muted);font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}.stamp-mark--on{border:3px solid var(--danger);background:#fff;color:var(--danger);font-size:18px;transform:rotate(-8deg)}.month-cal__title{margin:0 0 8px;font-size:18px;font-weight:800;text-align:center}.month-cal__weekdays,.month-cal__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.month-cal__weekdays{text-align:center;font-size:13px;font-weight:800;color:var(--text-muted)}.month-cal__grid{list-style:none;margin:4px 0 0;padding:0;gap:6px}.month-cal__cell{display:grid;place-items:center;aspect-ratio:1;min-width:0;border-radius:14px;background:var(--surface-muted);color:var(--text-muted);font-size:14px;font-weight:800}.month-cal__cell--checked{background:var(--ok);color:#fff;box-shadow:0 3px 0 var(--ok-deep)}.month-cal__cell--today{background:var(--surface);color:var(--brand-ink);box-shadow:inset 0 0 0 3px var(--brand)}.month-cal__cell--checked.month-cal__cell--today{background:var(--ok);color:#fff;box-shadow:inset 0 0 0 3px var(--brand),0 3px 0 var(--ok-deep)}.month-cal__cell--future{opacity:.45}.checkin-goal{margin:0 0 10px;font-size:19px;font-weight:800;color:var(--brand-ink)}.checkin-goal__meta{margin-top:10px}.reward-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;padding:5px;border-radius:var(--r-lg);background:var(--surface-muted)}.reward-tab{min-height:48px;padding:6px 2px;border:0;border-radius:var(--r-md);background:transparent;color:var(--text-muted);font-size:15px;font-weight:800;white-space:nowrap;cursor:pointer}.reward-tab--active{background:var(--surface);color:var(--brand-ink);box-shadow:inset 0 0 0 2px var(--brand),0 3px 0 var(--edge)}.reward-panel{display:flex;flex-direction:column;gap:14px}.mascot__outfit{pointer-events:none;-webkit-user-select:none;user-select:none}.wardrobe-preview{display:grid;justify-items:center;gap:8px;text-align:center;background:linear-gradient(180deg,#ffffff,var(--surface-muted))}.item-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.item-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;min-height:96px;padding:8px 4px;border:2px solid var(--border);border-radius:20px;background:var(--surface);color:var(--text);cursor:pointer}.item-tile--on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 3px 0 var(--brand)}.item-tile__emoji{font-size:38px;line-height:1.1}.item-tile__name{font-size:13px;font-weight:800;line-height:1.2;text-align:center;overflow-wrap:anywhere}.item-grid--collection{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.item-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:108px;padding:6px 2px;border:2px solid var(--border);border-radius:20px;text-align:center}.item-cell__emoji{font-size:34px;line-height:1.1}.item-cell__name{font-size:11px;font-weight:800;line-height:1.15;color:#7a5200;overflow-wrap:anywhere}.item-cell--owned{border-color:var(--sun);background:linear-gradient(160deg,#ffffff,var(--sun-soft))}.item-cell--owned.item-cell--rare{border-color:var(--sky);background:linear-gradient(160deg,#fff,#dff3ff)}.item-cell--owned.item-cell--legendary{border-color:var(--pink);background:linear-gradient(160deg,#fff7d6,#ffd9ea)}.item-cell--locked{background:var(--surface-muted)}.item-cell--locked .item-cell__emoji{filter:brightness(0);opacity:.16}.item-cell--locked .item-cell__name{color:var(--text-muted)}.rarity-tag{display:inline-block;margin:0;padding:1px 10px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.rarity-tag--common{background:var(--surface-muted);color:var(--text-muted)}.rarity-tag--rare{background:#dff3ff;color:#0f6a99}.rarity-tag--legendary{background:linear-gradient(90deg,#ffe089,#ffb6d8);color:#7a3b00}.chest-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto;background:#2b2350ad;animation:fade-in var(--motion-duration-in) var(--motion-ease-soft)}.chest-card{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;max-width:340px;margin:auto;padding:22px 20px 20px;border-radius:28px;background:var(--surface);text-align:center;isolation:isolate;animation:pop-in var(--motion-duration-emphasis) var(--motion-ease-spring)}.chest-card--big{border:4px solid var(--sun);box-shadow:0 0 0 6px #ffc93c59}.chest-card__kicker{margin:0;font-size:20px;font-weight:800;color:var(--brand-ink)}.chest-card__hint{margin:0;font-size:15px;color:var(--text-muted)}.chest-card__title{margin:0;font-size:26px;font-weight:800;line-height:1.25}.chest-card__title span{display:block;font-size:17px;color:var(--text-muted)}.chest-box{display:grid;place-items:center;width:176px;height:176px;margin:6px 0;padding:0;border:0;border-radius:50%;background:radial-gradient(circle,#fff6d6 0,#ffe89a 58%,transparent 72%);cursor:pointer;animation:chest-breathe var(--motion-duration-attention) ease-in-out infinite}.chest-box-wrap{position:relative;display:grid;place-items:center;width:176px;height:176px}.chest-box__glow{position:absolute;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(255,201,60,.62),transparent 68%);opacity:.35;transform:scale(.75);animation:chest-glow 1.8s ease-in-out infinite;pointer-events:none}.chest-box--charging{animation:chest-charge .42s ease-in-out both}.chest-box--bursting{animation:chest-burst .7s var(--ease-out) both}.chest-box-wrap--bursting .chest-box__glow{animation:chest-burst-glow .7s var(--ease-out) both}@keyframes chest-breathe{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes chest-glow{0%,to{opacity:.25;transform:scale(.75)}50%{opacity:.55;transform:scale(1)}}@keyframes chest-charge{0%,to{transform:rotate(0)}20%{transform:rotate(-6deg)}40%{transform:rotate(6deg)}60%{transform:rotate(-4deg)}80%{transform:rotate(3deg)}}@keyframes chest-burst{0%{transform:scale(1)}45%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes chest-burst-glow{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1.1)}}.chest-box__emoji{font-size:108px;line-height:1}.chest-item{position:relative;margin:4px 0;font-size:108px;line-height:1.1;animation:chest-reveal var(--motion-duration-reveal) var(--motion-ease-spring-strong) both}.chest-item:before{content:"";position:absolute;top:-30px;right:-30px;bottom:-30px;left:-30px;z-index:-1;border-radius:50%;background:repeating-conic-gradient(#ffe89a66 0 10deg,transparent 10deg 20deg);-webkit-mask-image:radial-gradient(circle,#000 35%,transparent 70%);mask-image:radial-gradient(circle,#000 35%,transparent 70%);animation:spin var(--motion-duration-spin) linear infinite}.chest-item--rare:before{background:repeating-conic-gradient(#8bd8ff88 0 10deg,transparent 10deg 20deg)}.chest-item--legendary:before{background:repeating-conic-gradient(#ff9ccb88 0,#ff9ccb88 10deg,#ffe08a88 10deg,#ffe08a88 20deg)}@keyframes chest-reveal{0%{opacity:0;transform:translateY(24px) scale(.3) rotate(-20deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}.chest-coins{margin:0;padding:6px 20px;border-radius:999px;background:var(--sun-soft);color:#8a5a00;font-size:20px;font-weight:800}.chest-actions{display:grid;gap:10px;width:100%;margin-top:6px}.chest-actions .primary-button,.chest-actions .secondary-button{width:100%}@media (prefers-reduced-motion: reduce){.checkin-card--stamping,.checkin-stamp,.checkin-stamp:after,.week-strip__day--new .stamp-mark,.chest-box,.chest-box__glow{animation:none}.chest-box--charging,.chest-box--bursting{transform:none}}.coin-card{display:flex;align-items:center;gap:14px;background:linear-gradient(160deg,#ffffff,var(--sun-soft))}.coin-card__icon{font-size:46px;line-height:1}.coin-card__label{margin:0;font-size:15px;color:var(--text-muted)}.coin-card__value{margin:0;font-size:36px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}.wish-list,.waiting-list,.parent-wish-list,.redeem-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.wish-card{display:grid;gap:8px;padding:12px 14px;border:2px solid var(--border);border-radius:22px;background:var(--surface);box-shadow:0 4px 0 var(--edge)}.wish-card__head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.wish-card__title{min-width:0;font-size:18px;font-weight:800;line-height:1.3;overflow-wrap:anywhere}.wish-card__cost{flex:none;font-size:16px;font-weight:800;color:#8a5a00;white-space:nowrap}.wish-card__foot{display:flex;align-items:center;justify-content:space-between;gap:10px}.wish-card__button{flex:none;min-width:104px;min-height:52px;padding:8px 20px}.waiting-list__item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-md);background:var(--surface-muted);font-size:16px;font-weight:700}.waiting-list__title{flex:1;min-width:0;overflow-wrap:anywhere}.waiting-list__cost{flex:none;color:#8a5a00;white-space:nowrap}.exchange-confirm__text{margin:4px 0 10px;font-size:20px;font-weight:800;line-height:1.4;overflow-wrap:anywhere}.parent-gate{display:grid;gap:10px}.parent-gate__title{margin:0;font-size:17px;font-weight:800}.parent-gate__question{margin:0;font-size:30px;font-weight:800;letter-spacing:.06em;text-align:center}.parent-gate__input{text-align:center;font-size:24px}.parent-rewards{display:grid;gap:22px}.parent-rewards__section{display:grid;gap:10px}.parent-rewards__title{margin:0;font-size:17px;font-weight:800}.parent-rewards__actions{display:flex;flex-wrap:wrap;gap:10px}.parent-wish-form{display:grid;gap:12px}.parent-wish{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:8px;padding:10px;border-radius:var(--r-md);background:var(--surface-muted)}.parent-wish__actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:8px}.parent-wish__error{grid-column:1 / -1}.redeem-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 10px;padding:10px 12px;border-radius:var(--r-md);background:var(--surface-muted)}.redeem-item__main{display:grid;min-width:0}.redeem-item__title{font-size:16px;font-weight:800;overflow-wrap:anywhere}.redeem-item__meta{font-size:13px;color:var(--text-muted)}.redeem-item__status{padding:2px 12px;border-radius:999px;font-size:13px;font-weight:800;white-space:nowrap}.redeem-item__status--pending{background:var(--sun-soft);color:#7a5200}.redeem-item__status--fulfilled{background:var(--ok-soft);color:var(--ok-ink)}.redeem-item__status--cancelled{background:var(--surface);color:var(--text-muted)}.redeem-item__actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:8px}@media (min-width: 768px){.checkin-card__title{font-size:26px}.reward-tab{min-height:56px;font-size:18px}.item-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:14px}.item-grid--collection{grid-template-columns:repeat(auto-fill,minmax(116px,1fr))}.item-tile__emoji{font-size:46px}.item-cell__emoji{font-size:42px}.item-cell__name{font-size:13px}.month-cal__grid,.month-cal__weekdays{max-width:520px;margin-inline:auto}.chest-card{max-width:420px;padding:30px 28px 26px}.wish-list{grid-template-columns:repeat(2,minmax(0,1fr))}.parent-wish{grid-template-columns:minmax(0,1fr) 140px auto;align-items:center}.parent-wish__actions{grid-column:auto}.reward-panel{gap:18px}}@media (min-width: 1000px){.page--today>.checkin-hint{grid-column:1 / -1}}.page--wide.report-page{max-width:760px;min-width:0;margin-inline:auto;padding-bottom:8px}.report-hero{position:relative;display:flex;align-items:center;gap:12px;min-height:132px;padding:18px 16px;overflow:hidden;border-radius:26px;background:var(--hero-gradient);box-shadow:0 5px 0 var(--hero-edge);color:#fff}.report-hero:after{position:absolute;top:-46px;right:-30px;width:138px;height:138px;border:22px solid rgb(255 255 255 / 10%);border-radius:50%;content:"";pointer-events:none}.report-hero .mascot{position:relative;z-index:1;flex:none}.report-hero__copy{position:relative;z-index:1;flex:1;min-width:0}.report-hero__title{margin:0;font-size:20px;font-weight:900;line-height:1.3;overflow-wrap:anywhere}.report-hero__sub{margin:4px 0 0;font-size:13px;font-weight:700;opacity:.95}.report-segmented{position:relative;z-index:1;display:flex;gap:4px;margin-top:12px;padding:4px;border-radius:999px;background:#ffffff38}.report-segmented button{flex:1;min-height:44px;padding:6px 12px;border:0;border-radius:999px;background:transparent;color:#fff;font:inherit;font-size:14px;font-weight:800;cursor:pointer}.report-segmented button[aria-pressed=true]{background:#fff;color:var(--brand-ink);box-shadow:0 3px #0000001f}.report-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.report-kpi{display:flex;min-height:96px;flex-direction:column;padding:14px 16px;border-radius:22px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.report-kpi__value{font-size:26px;font-weight:900;letter-spacing:-.04em;line-height:1.15}.report-kpi__value small{font-size:12px;letter-spacing:normal}.report-kpi__label{margin-top:2px;color:var(--text-muted);font-size:13px;font-weight:800}.report-kpi__delta{margin-top:auto;padding-top:6px;font-size:12px;font-weight:800}.report-kpi__delta--up{color:var(--ok-ink)}.report-kpi__delta--down{color:var(--oops-ink)}.report-kpi__delta--flat{color:var(--text-muted)}.report-kpi--purple{color:var(--brand-ink)}.report-kpi--green{color:var(--ok-ink)}.report-kpi--blue,.report-kpi--orange{color:var(--text)}.report-card{padding:16px;border-radius:24px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.report-skills{display:grid;gap:12px;margin:0;padding:0;list-style:none}.report-skill{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:44px}.report-skill__icon{display:grid;place-items:center;width:28px;height:28px;border-radius:10px;font-size:15px}.report-skill__body{min-width:0}.report-skill__head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.report-skill__label{font-size:15px;font-weight:900}.report-skill__pill{padding:1px 8px;border-radius:999px;font-size:11px;font-weight:900}.report-skill__pill--ok{background:var(--ok-soft);color:var(--ok-ink)}.report-skill__pill--oops{background:var(--oops-soft);color:var(--oops-ink)}.report-skill__track{height:10px;margin-top:6px;border-radius:999px;overflow:hidden}.report-skill__fill{display:block;height:100%;border-radius:999px}.report-skill__meta{display:grid;justify-items:end;gap:2px;white-space:nowrap}.report-skill__accuracy{font-size:16px;font-weight:900}.report-skill__answered{color:var(--text-muted);font-size:11px;font-weight:700}.report-highlights{display:flex;flex-wrap:wrap;gap:8px}.report-chip{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:6px 12px;border-radius:999px;background:var(--surface-muted);font-size:13px;font-weight:800}.report-gate__rows{display:grid;gap:8px;margin:0}.report-gate__row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 12px;border-radius:14px;background:var(--surface-muted)}.report-gate__row dt{margin:0;color:var(--text-muted);font-size:13px;font-weight:700}.report-gate__row dd{margin:0;font-size:16px;font-weight:900;white-space:nowrap}.report-tips{display:flex;gap:12px;padding:16px;border-radius:24px;background:var(--sun-soft);box-shadow:0 4px 0 var(--sun-edge)}.report-tips .mascot{flex:none;margin-top:2px}.report-tips__body{min-width:0}.report-tips__title{margin:0 0 6px;color:var(--sun-ink);font-size:15px;font-weight:900}.report-tips__list{display:grid;gap:8px;margin:0;padding-left:18px;color:var(--text);font-size:14px;font-weight:600;line-height:1.6}.report-footer{margin:4px 2px 0;color:var(--text-muted);font-size:12px;line-height:1.6}.report-share{position:sticky;z-index:15;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 8px);display:flex;gap:10px;padding:10px;border-radius:22px;background:var(--surface);border:2px solid var(--border);box-shadow:0 6px 20px #4b3a8f2e}.report-share .primary-button,.report-share .secondary-button{flex:1;min-width:0}.report-share__status{position:absolute;right:10px;bottom:calc(100% + 8px);padding:8px 14px;border-radius:999px;background:var(--ok-soft);color:var(--ok-ink);font-size:13px;font-weight:800;box-shadow:var(--shadow)}.report-share__status--error{background:var(--danger-soft);color:var(--danger-ink)}.report-loading{padding:28px 4px;color:var(--text-muted);font-size:15px}.progress-report-card{display:flex;align-items:center;gap:12px;min-height:68px;padding:14px 16px;border-radius:22px;background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow);color:var(--text);text-decoration:none}.progress-report-card__icon{display:grid;flex:none;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--brand-soft);font-size:22px}.progress-report-card__body{display:grid;min-width:0;gap:2px}.progress-report-card__title{font-size:16px;font-weight:900}.progress-report-card__sub{color:var(--text-muted);font-size:13px;line-height:1.5}.progress-report-card__chevron{flex:none;margin-left:auto;color:var(--text-muted);font-size:24px;font-weight:900}.parent-guide__report{display:inline-flex;align-items:center;min-height:44px;color:var(--brand-ink);font-size:13px;font-weight:900;text-decoration:none}@media (min-width: 1024px){.report-kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 768px){.report-page{gap:18px}.report-share{position:static}.report-hero__title{font-size:24px}}@media (prefers-reduced-motion: reduce){.report-page *,.report-page *:before,.report-page *:after{animation:none!important;transition:none!important}}@media (min-width: 768px) and (max-height: 540px){.app-shell .bottom-nav{max-height:calc(100dvh - var(--stick-top) - 16px);overflow-y:auto;overflow-x:hidden}}@media (min-width: 768px){:root{--nav-h: 0px;--rail-w: 84px;--rail-gap: 24px;--shell-max: 1400px;--shell-gutter: 16px;--stick-top: calc(env(safe-area-inset-top) + 72px) }.app-shell{display:grid;grid-template-columns:minmax(var(--shell-gutter),1fr) var(--rail-w) var(--rail-gap) minmax(0,calc(var(--shell-max) - var(--rail-w) - var(--rail-gap))) minmax(var(--shell-gutter),1fr);grid-template-rows:auto 1fr;align-content:start;max-width:none}.app-header{grid-column:1 / -1;padding-inline:max(var(--shell-gutter),calc((100% - var(--shell-max)) / 2));background:transparent;border-bottom-color:transparent}.app-header.app-header--scrolled{background:#fffffff0}.app-header__brand{display:contents}.app-header__home{order:1}.hud{order:2}.app-header__avatar-trigger{order:3}.app-header__subtitle{display:block}.app-main{grid-column:4;grid-row:2;padding:28px 0 48px}.app-shell--no-nav .app-main{grid-column:2 / 5}.bottom-nav{grid-column:2;grid-row:2;position:sticky;top:var(--stick-top);align-self:start;bottom:auto;display:flex;flex-direction:column;align-items:center;gap:6px;width:var(--rail-w);height:max-content;margin:28px 0 16px;padding:12px 8px;overflow:visible;border:0;border-radius:28px;background:#ffffffe6;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 10px 30px #4b3a8f1f,0 0 0 1px #4b3a8f0f;scrollbar-width:none}.bottom-nav::-webkit-scrollbar{display:none}.bottom-nav__item{flex:none;gap:2px;width:68px;height:64px;min-height:64px;border-radius:18px;padding:0;overflow:visible;color:var(--text-muted)}.bottom-nav__item:hover{background:var(--surface-muted)}.bottom-nav__icon{font-size:24px;line-height:1.1}.bottom-nav__label{font-size:12px;line-height:1.2;text-align:center}.bottom-nav__hint{display:none}.bottom-nav__rail-logo{display:grid;flex:none;place-items:center;width:52px;height:52px;border-radius:16px;background:linear-gradient(145deg,#9a82ff,#6b4ee8);box-shadow:0 4px #5a3fd1}.bottom-nav__rail-divider{display:block;flex:none;width:40px;height:1px;margin:6px auto 4px;background:#eee8fb}.bottom-nav__item--active{color:var(--brand-ink);box-shadow:none}.bottom-nav__item--active:hover{background:transparent}.bottom-nav__indicator{border-radius:18px}.bottom-nav__indicator:before{position:absolute;left:-8px;top:calc(50% - 11px);width:4px;height:22px;border-radius:999px;background:var(--brand);content:""}.bottom-nav__item--active .bottom-nav__icon{transform:none}.bottom-nav__dot{top:6px;right:6px}.app-main{padding-bottom:48px}.page{width:100%;max-width:900px;margin-inline:auto;gap:18px}.page--wide{max-width:none}.page__title{font-size:32px}.page__lead{font-size:17px}.card{padding:22px}.card__title{font-size:20px}.hero__mascot{width:128px;height:128px}.hero__line{font-size:18px}.task-card{min-height:84px;padding:12px 18px}.task-card__label{font-size:19px}.task-card__icon{width:56px;height:56px;font-size:34px}.practice-prompt{font-size:26px}.practice-passage{font-size:20px}.practice-option{min-height:76px;padding:14px 20px;font-size:22px}.practice-option:before{width:40px;height:40px;font-size:18px}.practice-options--image .practice-option{padding:12px}.question-image--option{max-height:220px}.practice-actions--sticky{bottom:calc(env(safe-area-inset-bottom) + 12px)}.practice-actions--sticky .primary-button{max-width:420px;margin-left:auto}.primary-button{font-size:20px}.practice-feedback{scroll-margin-bottom:140px}.celebration__card{max-width:420px;padding:32px 28px 26px}.sticker-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:14px}.sticker__emoji{font-size:42px}.sticker__name{font-size:13px}.stat-grid{grid-template-columns:repeat(4,1fr)}.stat-grid--three{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1024px){:root{--shell-gutter: 24px}}@media (min-width: 1024px){.page--today{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.85fr);align-items:start;gap:22px}}@media (max-width: 767px){.app-header__subtitle{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@keyframes pop{0%{transform:scale(.94)}60%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes pop-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes wobble{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}@keyframes slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes star-pop{0%{opacity:0;transform:translateY(8px) scale(.6)}20%{opacity:1;transform:translateY(-4px) scale(1.1)}70%{opacity:1;transform:translateY(-16px) scale(1)}to{opacity:0;transform:translateY(-28px) scale(1)}}@keyframes star-in{0%{opacity:0;transform:scale(.2) rotate(-40deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes bounce-soft{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ear-left{0%,to{transform:rotate(0)}50%{transform:rotate(-9deg)}}@keyframes ear-right{0%,to{transform:rotate(0)}50%{transform:rotate(9deg)}}@keyframes confetti-fall{0%{opacity:1;transform:translate3d(0,-10px,0) rotate(0)}85%{opacity:1}to{opacity:0;transform:translate3d(var(--drift),105vh,0) rotate(var(--spin))}}@keyframes tap-ripple{0%{opacity:.28;transform:translate(-50%,-50%) scale(0)}to{opacity:0;transform:translate(-50%,-50%) scale(7)}}@media (prefers-reduced-motion: no-preference){@keyframes m-route-push{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes m-route-back{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:none}}@keyframes m-route-tab{0%{opacity:0}to{opacity:1}}@keyframes m-hop{0%,to{transform:translateY(0) scale(1)}30%{transform:translateY(-6px) scale(1.12)}}@keyframes m-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes m-fade-in{0%{opacity:0}to{opacity:1}}@keyframes m-fade-out{0%{opacity:1}to{opacity:0}}@keyframes m-sheet-in{0%{transform:translateY(105%)}to{transform:translateY(0)}}@keyframes m-sheet-out{0%{transform:translateY(0)}to{transform:translateY(105%)}}@keyframes m-dialog-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes m-dialog-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.97)}}@keyframes m-scrim-in{0%{opacity:0}to{opacity:1}}@keyframes m-scrim-out{0%{opacity:1}to{opacity:0}}@keyframes m-pop{0%,to{transform:scale(1)}35%{transform:scale(1.04)}}@keyframes m-shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}50%{transform:translate(5px)}75%{transform:translate(-3px)}}}.route-transition[data-route-kind=push]{animation:m-route-push var(--dur-page) var(--ease-out)}.route-transition[data-route-kind=back]{animation:m-route-back var(--dur-page) var(--ease-out)}.route-transition[data-route-kind=tab]{animation:m-route-tab .2s linear}.route-transition[data-route-kind=first]{animation:none}::view-transition-group(task-icon){animation-duration:var(--dur-page);animation-timing-function:var(--ease-move)}::view-transition-old(root){animation:m-fade-out var(--dur-quick) var(--ease-in) both}::view-transition-new(root){animation:m-route-push var(--dur-page) var(--ease-out) both;animation-delay:80ms}.vt-back::view-transition-new(root){animation-name:m-route-back}@media (prefers-reduced-motion: reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}::view-transition-old(root){animation:m-fade-out .16s linear both!important}::view-transition-new(root){animation:m-fade-in .16s linear both!important}}.route-transition{animation-fill-mode:none}.route-transition[data-route-fixed][data-route-kind=push],.route-transition[data-route-fixed][data-route-kind=back]{animation:m-route-tab .2s linear}.bottom-nav__item--hop .bottom-nav__icon{animation:m-hop var(--dur-reward) var(--spring-bouncy)}@media (prefers-reduced-motion: reduce){.route-transition[data-route-kind=push],.route-transition[data-route-kind=back],.route-transition[data-route-kind=tab]{animation:m-fade-in .2s linear}.bottom-nav__item--hop .bottom-nav__icon{animation:m-fade-in var(--dur-quick) linear}.bottom-nav--indicator-ready .bottom-nav__indicator,.app-header{transition:none}}@media (prefers-reduced-motion: reduce){@keyframes m-rise{0%{opacity:0}to{opacity:1}}@keyframes m-fade-in{0%{opacity:0}to{opacity:1}}@keyframes m-fade-out{0%{opacity:1}to{opacity:0}}@keyframes m-sheet-in{0%{opacity:0}to{opacity:1}}@keyframes m-sheet-out{0%{opacity:1}to{opacity:0}}@keyframes m-dialog-in{0%{opacity:0}to{opacity:1}}@keyframes m-dialog-out{0%{opacity:1}to{opacity:0}}@keyframes m-scrim-in{0%{opacity:0}to{opacity:1}}@keyframes m-scrim-out{0%{opacity:1}to{opacity:0}}@keyframes m-pop{0%{opacity:.8}to{opacity:1}}@keyframes m-shake{0%{opacity:.8}to{opacity:1}}}.motion-stagger>*,[data-stagger]>*{animation:m-rise var(--dur-enter) var(--ease-out) both;animation-delay:calc(var(--i, 0) * var(--stagger))}.m-pop{animation:m-pop var(--dur-reward) var(--spring-bouncy) both}.chest-stagger-item,.celebration-stagger-item{animation:m-rise var(--dur-enter) var(--ease-out) both;animation-delay:calc(var(--i, 0) * var(--stagger))}.toast{position:fixed;z-index:200;top:max(14px,env(safe-area-inset-top));left:50%;transform:translate(-50%,-140%);padding:10px 16px;border-radius:999px;background:var(--text);color:#fff;font-size:14px;font-weight:800;white-space:nowrap;box-shadow:0 10px 24px #2b23504d;animation:toast-in var(--dur-page) var(--spring-snappy) both}.toast--leaving{animation:toast-out var(--dur-quick) var(--ease-in) both}@keyframes toast-in{0%{transform:translate(-50%,-140%)}to{transform:translate(-50%)}}@keyframes toast-out{0%{transform:translate(-50%);opacity:1}to{transform:translate(-50%,-20%);opacity:0}}canvas.confetti{position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;width:100vw;height:100vh;pointer-events:none}.m-sheet[data-motion-state=open]{animation:m-sheet-in var(--dur-page) var(--spring-snappy) both}.m-sheet[data-motion-state=exiting]{animation:m-sheet-out .2s var(--ease-in) both}.m-dialog[data-motion-state=open]{animation:m-dialog-in var(--dur-page) var(--spring-snappy) both}.m-dialog[data-motion-state=exiting]{animation:m-dialog-out .16s var(--ease-in) both}.m-scrim[data-motion-state=open]{animation:m-scrim-in .2s linear both}.m-scrim[data-motion-state=exiting]{animation:m-scrim-out .2s linear both}.m-sheet[data-motion-state=entering],.m-dialog[data-motion-state=entering],.m-scrim[data-motion-state=entering]{animation:none}.m-dialog[data-motion-state=entering],.m-scrim[data-motion-state=entering]{opacity:0}.m-sheet[data-motion-state=entering]{transform:translateY(105%)}.m-dialog[data-motion-state=entering]{transform:scale(.96)}.m-motion-exiting{pointer-events:none!important}@media (prefers-reduced-motion: no-preference){button:not(:disabled),[role=button]:not([aria-disabled=true]),.link-button,.learn-feature-card,.mistake-card,.checkin-card--done,.today-continue,.bottom-nav__item,.book-pane__more,.book-excerpt__open{transition:transform var(--dur-quick) var(--spring-snappy),box-shadow var(--dur-quick) var(--spring-snappy),filter var(--dur-quick) var(--ease-out),background-color var(--dur-quick) var(--ease-out),color var(--dur-quick) var(--ease-out),opacity var(--dur-quick) linear;-webkit-tap-highlight-color:transparent}.primary-button,.secondary-button,.link-button,.choice,.practice-option,.review-dot,.sound-toggle,.icon-button,.bottom-nav__item,.book-pane__more,.book-excerpt__open{transition:transform var(--dur-quick) var(--spring-snappy),box-shadow var(--dur-quick) var(--spring-snappy),filter var(--dur-quick) var(--ease-out),background var(--dur-quick) var(--ease-out),color var(--dur-quick) var(--ease-out),opacity var(--dur-quick) linear;-webkit-tap-highlight-color:transparent}.tap-ripple{position:relative;overflow:hidden}.tap-ripple__ink{position:absolute;left:var(--tap-x);top:var(--tap-y);width:22px;height:22px;border-radius:50%;background:#ffffff6b;pointer-events:none;animation:tap-ripple var(--motion-duration-ripple) var(--motion-ease-soft) forwards}.primary-button:not(:disabled):hover,.secondary-button:not(:disabled):hover,.choice:hover,.practice-option:not(:disabled):hover,.review-dot:hover,.sound-toggle:hover,.icon-button:hover,.book-pane__more:hover,.book-excerpt__open:hover{transform:translateY(-2px);filter:saturate(1.06) brightness(1.02)}.primary-button:not(:disabled):active,.secondary-button:not(:disabled):active,button:not(:disabled):active,[role=button]:not([aria-disabled=true]):active,.choice:active,.practice-option:not(:disabled):active,.review-dot:active,.sound-toggle:active,.icon-button:active,.bottom-nav__item:active,.book-pane__more:active,.book-excerpt__open:active{transform:translateY(var(--press-y, 2px)) scale(.975);filter:saturate(.96) brightness(.98);transition-duration:var(--dur-press);transition-timing-function:var(--ease-out)}.papers-mock-button:not(:disabled):active,.practice-topbar__exit:active,.learn-feature-card:active,.learn-add-button:active,.mistakes-practice-cta:active,.sp-mic:active,.rewards-page .reward-tab:active,.today-step__button:active{transform:translateY(var(--press-y, 2px)) scale(.975);transition-duration:var(--dur-press);transition-timing-function:var(--ease-out)}.mistake-card:active,.checkin-card--done:active{transform:translateY(var(--press-y, 2px)) scale(.975);transition-duration:var(--dur-press);transition-timing-function:var(--ease-out)}.primary-button:not(:disabled),.secondary-button:not(:disabled),.sp-next-primary:not(:disabled),.sp-mic:not(:disabled),.papers-mock-button:not(:disabled),.mistakes-practice-cta:not(:disabled),.practice-option:not(:disabled),.practice-sheet__next:not(:disabled),.sp-report-complete:not(:disabled),.sp-report-retry:not(:disabled){--press-y: 4px}.learn-add-button,.learn-feature-card,.mistake-card,.checkin-card--done,.practice-topbar__exit,.sp-close,.sp-alternatives button,.rewards-page .reward-tab,.rewards-page .wardrobe-slots button,.rewards-page .wardrobe-item,.wardrobe-item{--press-y: 4px}.primary-button:not(:disabled):active,.sp-next-primary:not(:disabled):active,.sp-report-complete:not(:disabled):active{box-shadow:0 1px 0 var(--brand-deep)}.secondary-button:not(:disabled):active,.practice-option:not(:disabled):active{box-shadow:0 1px 0 var(--edge)}.practice-option--selected:not(:disabled):active{box-shadow:0 1px 0 var(--brand)}.practice-option--correct:not(:disabled):active,.practice-sheet--correct .practice-sheet__next:not(:disabled):active{box-shadow:0 1px 0 var(--ok-deep)}.practice-option--wrong:not(:disabled):active,.practice-sheet--wrong .practice-sheet__next:not(:disabled):active{box-shadow:0 1px 0 var(--oops-deep)}.papers-mock-button:not(:disabled):active,.sp-report-retry:not(:disabled):active,.learn-add-button:active,.learn-feature-card:active,.mistake-card:active,.practice-topbar__exit:active,.sp-close:active,.sp-alternatives button:active{box-shadow:0 1px 0 var(--edge)}.rewards-page .reward-tab:active{box-shadow:0 1px 0 var(--edge)}.rewards-page .reward-tab--active:active,.rewards-page .wardrobe-slots button[aria-pressed=true]:active,.rewards-page .wardrobe-item--on:active,.wardrobe-item--on:active{box-shadow:0 1px 0 var(--brand-deep)}.rewards-page .wardrobe-item--preview:active{box-shadow:0 1px 0 var(--sky)}.checkin-card--done:active{box-shadow:0 1px #b7eed6}.mistakes-practice-cta:not(:disabled):active{box-shadow:0 1px 0 var(--oops-deep)}.sp-mic:not(:disabled):active{box-shadow:0 1px 0 var(--brand-deep),0 8px 18px #7c5cff4d}.sp-mic-recording:not(:disabled):active{box-shadow:0 1px #d9435f,0 8px 18px #ff5f7e4d}.sp-alternatives button:not(:disabled):active{box-shadow:0 1px 0 var(--edge)}.primary-button:focus-visible,.secondary-button:focus-visible,.link-button:focus-visible,.choice:focus-visible,.practice-option:focus-visible,.review-dot:focus-visible,.sound-toggle:focus-visible,.icon-button:focus-visible,.bottom-nav__item:focus-visible,.book-pane__more:focus-visible,.book-excerpt__open:focus-visible{outline:3px solid var(--brand);outline-offset:3px}}@media (prefers-reduced-motion: reduce){:root{--dur-press: 0ms;--stagger: 0ms;--spring-snappy: linear;--spring-bouncy: linear}button:not(:disabled):active,[role=button]:not([aria-disabled=true]):active,.primary-button:not(:disabled):active,.secondary-button:not(:disabled):active,.choice:active,.practice-option:not(:disabled):active,.review-dot:active,.sound-toggle:active,.icon-button:active,.bottom-nav__item:active,.book-pane__more:active,.book-excerpt__open:active{transform:none;filter:none;opacity:.76;transition:opacity var(--dur-quick) linear}.learn-feature-card:active,.papers-mock-button:active:not(:disabled),.rewards-page .reward-tab:active,.today-step__button:active{transform:none;opacity:.76;transition:opacity var(--dur-quick) linear}.mistake-card:active,.checkin-card--done:active{transform:none;opacity:.76;transition:opacity var(--dur-quick) linear}.m-sheet[data-motion-state=entering],.m-dialog[data-motion-state=entering]{transform:none}.m-sheet[data-motion-state=entering]{opacity:0}.confetti{display:none}.m-pop,.toast,.toast--leaving{animation:m-fade-in var(--dur-quick) linear both}}.skeleton{display:inline-block;position:relative;overflow:hidden;flex:none;background:var(--surface-muted);vertical-align:middle}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgb(255 255 255 / 55%),transparent);animation:m-shimmer 1.2s linear infinite}.skeleton-lines{display:grid;gap:12px}@keyframes m-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.m-content{animation:m-fade-in var(--dur-enter) var(--ease-out)}.m-rise{animation:m-rise var(--dur-enter) var(--ease-out) both}.m-stagger-item{animation:m-rise var(--dur-enter) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * var(--stagger))}.m-grow-x{transform-origin:left center;animation:m-grow-x var(--dur-reward) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * var(--stagger))}.m-grow-y{transform-origin:center bottom;animation:m-grow-y var(--dur-reward) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * var(--stagger))}@keyframes m-grow-x{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes m-grow-y{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.m-tabs{position:relative}.m-tabs>button{position:relative;z-index:1}.m-tab-indicator{position:absolute;left:0;pointer-events:none;transform-origin:left center;border-radius:inherit}.m-outgoing,.m-outgoing *{animation:none!important;transition:none!important}.papers-tabs .m-tab-indicator{border-radius:24px;background:var(--brand);box-shadow:0 4px 12px color-mix(in srgb,var(--brand) 25%,transparent)}.report-segmented .m-tab-indicator{border-radius:999px;background:#fff;box-shadow:0 3px #0000001f}.admin-ranges .m-tab-indicator{border:2px solid var(--brand);border-radius:var(--r-sm);background:var(--brand-soft)}.mistake-tabs .m-tab-indicator{border-radius:999px;background:var(--surface);box-shadow:0 3px 0 var(--edge)}.mistake-tabs.m-tabs--ready .mistake-tab--on{background:transparent;box-shadow:none}.mistakes-content{display:flex;flex-direction:column;gap:12px}.papers-tabs.m-tabs--ready button[aria-selected=true],.report-segmented.m-tabs--ready button[aria-pressed=true],.admin-ranges.m-tabs--ready button{background:transparent;box-shadow:none}.admin-ranges.m-tabs--ready .admin-range--on{border-color:transparent}.report-kpi__delta{animation:m-fade-in var(--dur-enter) var(--ease-out) backwards;animation-delay:var(--dur-reward)}.progress-page .readiness-bar__fill{transform-origin:left;animation:m-grow-x var(--dur-reward) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * var(--stagger))}.progress-page .readiness-row:nth-child(1){--i: 0}.progress-page .readiness-row:nth-child(2){--i: 1}.progress-page .readiness-row:nth-child(3){--i: 2}.progress-page .readiness-row:nth-child(4){--i: 3}.progress-page .readiness-row:nth-child(5){--i: 4}.progress-page .readiness-row:nth-child(6){--i: 5}.progress-page .readiness-row:nth-child(7){--i: 6}.m-unit-current{animation:m-unit-pulse var(--dur-reward) var(--spring-snappy) backwards;animation-delay:calc(var(--i, 0) * var(--stagger) + var(--dur-enter))}@keyframes m-unit-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.page--onboarding .level-tile--active,.page--onboarding .choice--active{animation:m-pop .3s var(--spring-snappy)}:is(.progress-page,.report-page,.mistakes-page,.book-unit-map,.learn-page,.papers-page,.admin-load,.sp-hub,.sp-report-screen) .motion-stagger>*{animation-fill-mode:backwards}.paper-trend__line{stroke-dasharray:1;stroke-dashoffset:0;animation:m-trend-draw .9s var(--ease-out) backwards}@keyframes m-trend-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.paper-trend__dot{transform-box:fill-box;transform-origin:center;animation:m-fade-in var(--dur-enter) linear backwards,m-pop var(--dur-page) var(--spring-bouncy) backwards;animation-delay:calc(.9s + var(--i, 0) * var(--stagger))}.admin-chart__bar{transform-box:fill-box;transform-origin:center bottom}.admin-stats>:nth-child(1){--i: 0}.admin-stats>:nth-child(2){--i: 1}.admin-stats>:nth-child(3){--i: 2}.admin-stats>:nth-child(4){--i: 3}.admin-stats>:nth-child(5){--i: 4}.admin-stats>:nth-child(6){--i: 5}.admin-stats>:nth-child(7){--i: 6}.admin-stats>:nth-child(8){--i: 7}.admin-stats>:nth-child(n+9){--i: 8}@media (prefers-reduced-motion: reduce){.skeleton:after{animation:none;display:none}.m-grow-x,.m-grow-y,.progress-page .readiness-bar__fill,.m-unit-current{animation:m-fade-in var(--dur-enter) linear}.paper-trend__line{animation:m-fade-in var(--dur-enter) linear;stroke-dashoffset:0}.paper-trend__dot{animation:m-fade-in var(--dur-enter) linear}.report-kpi__delta{animation-delay:0ms}}.sp-ring-gauge.m-ring{position:relative;background:var(--sp-ring-track)}.m-ring-half{position:absolute;top:0;right:0;bottom:0;left:0}.m-ring-half--right{clip-path:inset(0 0 0 50%)}.m-ring-half--left{clip-path:inset(0 50% 0 0)}.m-ring-half>i{display:block;position:absolute;top:0;right:0;bottom:0;left:0;border:8px solid var(--sp-ring-color);border-radius:50%;clip-path:inset(0 50% 0 0)}.sp-ring-gauge.m-ring>span{position:relative}.admin-load{display:flex;flex-direction:column;gap:14px;min-width:0}.admin-load>*{min-width:0}.admin-load:not([data-initial-stagger]) .motion-stagger>*,.admin-load:not([data-initial-stagger]) .m-grow-y,.admin-load:not([data-initial-stagger]) .m-grow-x{animation:none}.mistake-exit{transition:height var(--dur-enter) var(--ease-out),opacity var(--dur-enter) var(--ease-out)}.mistake-detail-content{display:contents}.mistake-detail-content>*{animation:m-fade-in var(--dur-enter) var(--ease-out)}.profile-page .profile-identity-card{animation:m-rise var(--dur-enter) var(--ease-out) backwards}.sp-report-cards>.sp-report-card{animation:m-rise var(--dur-enter) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * var(--stagger))}.sp-report-cards>.sp-report-card:nth-child(1){--i: 1}.sp-report-cards>.sp-report-card:nth-child(2){--i: 2}.sp-report-cards>.sp-report-card:nth-child(3){--i: 3}.papers-content{display:flex;flex-direction:column;gap:14px}.papers-grid.motion-stagger progress::-webkit-progress-value{transform-origin:left;animation:m-grow-x var(--dur-reward) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * var(--stagger))}.papers-grid.motion-stagger progress::-moz-progress-bar{transform-origin:left;animation:m-grow-x var(--dur-reward) var(--ease-out) backwards;animation-delay:calc(var(--i, 0) * var(--stagger))}@media (prefers-reduced-motion: reduce){.papers-grid.motion-stagger progress::-webkit-progress-value{animation:none}.papers-grid.motion-stagger progress::-moz-progress-bar{animation:none}}@media (prefers-reduced-motion: reduce){.mistake-exit{transition:opacity var(--dur-enter) linear}}@media (prefers-reduced-motion: reduce){:is(.report-page,.sp-hub,.sp-report-screen) .motion-stagger>*,.sp-report-screen .m-stagger-item,.sp-report-screen .sp-report-card,.sp-hub .m-content{animation:m-fade-in var(--dur-enter) linear!important}}.mascot{position:relative;display:inline-block;flex:none;width:var(--mascot-size);height:var(--mascot-size);max-width:100%;vertical-align:middle;isolation:isolate}.mascot__viewport,.mascot__rig{position:absolute;top:0;right:0;bottom:0;left:0}.mascot__rig{z-index:1}.mascot__body{display:block;width:100%;height:100%;object-fit:contain}.mascot__body--sneakers{clip-path:inset(0 0 14%)}.mascot__body--boots{clip-path:inset(0 0 17%)}.mascot__body--slippers{clip-path:inset(0 0 10%)}.mascot__layer{position:absolute;top:0;right:0;bottom:0;left:0;display:block;pointer-events:none}.mascot__wearable{display:block;width:100%;height:100%;overflow:visible}.mascot__layer--head{z-index:6}.mascot__layer--face{z-index:7}.mascot__layer--clothes{z-index:2}.mascot__layer--shoes{z-index:1}.mascot__layer--hand{z-index:4}.mascot__layer--pet{inset:77% auto auto 16%;width:20%;height:20%;z-index:5}.mascot__frame{position:absolute;top:9%;right:9%;bottom:9%;left:9%;z-index:0;pointer-events:none}.mascot--portrait{border-radius:50%;background:#f1ebf6}.mascot--portrait .mascot__viewport{border-radius:50%;overflow:hidden;top:6%;right:6%;bottom:6%;left:6%}.mascot--portrait .mascot__rig{width:165%;height:165%;inset:-10% auto auto -32.5%}.mascot--portrait .mascot__frame{top:0;right:0;bottom:0;left:0;z-index:2}.mascot--portrait.mascot--framed{background:transparent}.mascot--portrait.mascot--framed .mascot__viewport{top:16%;right:16%;bottom:16%;left:16%;background:#f1ebf6}.mascot--portrait .mascot__layer--pet,.mascot--portrait .mascot__layer--hand{display:none}.item-artwork{display:block;width:100%;height:100%;object-fit:contain}.avatar-playground{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:end center;padding:16px;background:#2b235047;animation:fade-in var(--motion-duration-in) var(--motion-ease-soft) both}.avatar-playground__panel{width:min(100%,500px);max-height:min(90dvh,900px);overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:20px 20px calc(20px + env(safe-area-inset-bottom));border:2px solid var(--border);border-radius:28px;background:var(--surface);box-shadow:0 18px 60px #2b23503d;animation:slide-up var(--motion-duration-in) var(--motion-ease-soft) both}.avatar-playground__header{display:flex;align-items:start;justify-content:space-between;gap:12px}.avatar-playground__header{position:sticky;top:-20px;z-index:3;margin:-20px -20px 0;padding:20px 20px 8px;background:var(--surface)}.avatar-playground__header--photo{justify-content:flex-end;padding-bottom:0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.avatar-playground__photo{display:grid;justify-items:center;gap:12px;padding:4px 0 8px}.avatar-playground__photo-img{width:200px;height:200px;border:4px solid var(--edge);border-radius:50%;background:var(--surface-muted);object-fit:cover;box-shadow:var(--shadow)}.avatar-playground__photo-name{margin:0;font-size:24px;font-weight:800;text-align:center;overflow-wrap:anywhere}.avatar-playground__hint{margin:14px 0 0;text-align:center;color:var(--text-muted);font-size:13px;font-weight:700}.avatar-playground__hint--faded{visibility:hidden}.avatar-playground__options{display:grid;gap:12px;margin-top:10px;padding-top:14px;border-top:2px dashed var(--edge)}.avatar-playground__options .card{margin:0}.sheet-row{display:flex;align-items:center;gap:14px;width:100%;min-height:64px;padding:10px 14px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);text-align:left;cursor:pointer;font:inherit}.sheet-row:active{background:var(--surface-muted)}.sheet-row__icon{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--brand-soft);font-size:22px}.sheet-row__text{display:grid;gap:2px;flex:1;min-width:0}.sheet-row__text strong{font-size:17px}.sheet-row__text small{color:var(--text-muted);font-size:13px}.sheet-row__chevron{flex:none;color:var(--text-muted);font-size:28px;line-height:1}.avatar-playground__eyebrow{color:var(--brand-ink);font-size:11px;font-weight:800;letter-spacing:.14em}.avatar-playground h2{margin:2px 0 0;font-size:22px}.icon-button{width:40px;height:40px;border:0;border-radius:50%;background:var(--surface-muted);color:var(--text);font-size:26px;line-height:1;cursor:pointer}.avatar-playground__stage{position:relative;display:grid;place-items:center;width:100%;min-height:270px;margin:8px 0 0;border:0;border-radius:22px;background:linear-gradient(145deg,#f5efff,#fff7e4);cursor:pointer}.avatar-playground__stage .mascot{animation:float var(--motion-duration-float) var(--motion-ease-in-out) infinite}.avatar-playground__stage--bounce .mascot{animation:wobble var(--motion-duration-feedback) var(--motion-ease-soft) both}.avatar-playground__spark{position:absolute;color:var(--sun-deep);font-size:28px;animation:star-in var(--motion-duration-emphasis) var(--motion-ease-spring-strong) both}.avatar-playground__spark--one{top:24px;right:26%}.avatar-playground__spark--two{bottom:48px;left:24%;font-size:38px;color:var(--pink)}.avatar-playground__message{min-height:28px;margin:10px 0 14px;text-align:center;color:var(--text-muted);font-weight:700}.avatar-playground__slots{display:flex;gap:6px;overflow-x:auto;padding:3px 0 8px}.avatar-playground__slots button{flex:0 0 auto;min-height:38px;padding:0 12px;border:1px solid var(--edge);border-radius:999px;background:var(--surface);color:var(--text-muted);cursor:pointer;font-size:12px}.avatar-playground__slots button[aria-pressed=true]{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink);font-weight:800}.avatar-playground__items{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.avatar-playground__item{display:grid;justify-items:center;gap:2px;min-height:88px;padding:7px 3px;border:1px solid var(--edge);border-radius:14px;background:var(--surface);color:var(--text);cursor:pointer;font-size:12px}.avatar-playground__item .item-artwork{width:45px;height:45px}.avatar-playground__item small{color:var(--ok-ink);font-size:10px;font-weight:800}.avatar-playground__item--on{border-color:var(--ok);background:var(--ok-soft)}.avatar-playground__item:disabled{cursor:default;filter:grayscale(.7);opacity:.45}.avatar-playground__footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;color:var(--text-muted);font-size:12px}.avatar-playground__footer a{color:var(--brand-ink);font-weight:800}@media (max-width: 500px){.avatar-playground{padding:8px}.avatar-playground__panel{padding:16px 16px calc(16px + env(safe-area-inset-bottom));border-radius:24px}.avatar-playground__header{top:-16px;margin:-16px -16px 0;padding:16px 16px 8px}.avatar-playground__stage{min-height:228px}.avatar-playground__stage .mascot{--mascot-size: 196px !important}.avatar-playground__items{grid-template-columns:repeat(4,minmax(64px,1fr))}.avatar-playground__footer{align-items:start;flex-direction:column}}@media (prefers-reduced-motion: reduce){.avatar-playground__stage .mascot,.avatar-playground__stage--bounce .mascot{animation:none}}.wardrobe{display:grid;grid-template-columns:minmax(280px,.88fr) minmax(0,1.3fr);gap:24px;align-items:start}.wardrobe-preview{position:sticky;top:98px;display:flex;flex-direction:column;align-items:stretch;gap:0;min-width:0;padding:24px 20px 20px;border-radius:26px;border:1px solid #e2dce9;background:#f0eaf4;text-align:center;overflow:hidden}.wardrobe-preview__heading{display:flex;align-items:start;justify-content:space-between;gap:8px;text-align:left}.wardrobe-eyebrow{font-size:10px;font-weight:750;letter-spacing:.14em;color:#70617e}.wardrobe-preview h2{font-size:19px;letter-spacing:-.04em;margin:5px 0 0}.wardrobe-preview__count{white-space:nowrap;font-size:11px;color:#70617e;padding-top:4px}.wardrobe-view{display:inline-flex;align-self:center;padding:3px;margin:22px 0 0;border:1px solid #dfd6e6;border-radius:999px}.wardrobe-view button{min-height:36px;padding:0 22px;border:0;border-radius:999px;background:transparent;color:#70617e;cursor:pointer;font-size:12px;font-weight:650}.wardrobe-view button[aria-pressed=true]{background:#fff;color:var(--brand-ink);box-shadow:0 2px 5px #5b43610a}.wardrobe-stage{position:relative;display:grid;place-items:center;min-height:318px;isolation:isolate}.wardrobe-stage .mascot{width:min(var(--mascot-size),100%);height:auto;aspect-ratio:1}.wardrobe-stage__halo{pointer-events:none;position:absolute;width:90%;aspect-ratio:1;background:radial-gradient(ellipse,#fffafced,#f7f2f800 70%);z-index:-1}.wardrobe-stage__plinth{pointer-events:none;position:absolute;bottom:0;width:78%;height:28px;border-radius:50%;background:#e1d6e9;box-shadow:0 7px #d8cbe2,0 17px 18px -8px #96819c35;z-index:-1}.wardrobe-stage--portrait .wardrobe-stage__plinth{pointer-events:none;display:none}.wardrobe-stage--portrait .mascot{--mascot-size: 220px !important}.wardrobe-preview__caption{display:grid;gap:4px;margin:24px 0 10px}.wardrobe-preview__caption strong{font-size:22px}.wardrobe-preview__caption span{font-size:12px;color:#756781}.wardrobe-save{min-height:22px;margin:6px 0 0;color:#6d5b79;font-size:12px}.wardrobe-tryon{background:#ffffffa6;padding:12px;margin-top:6px;border-radius:14px;font-size:12px}.wardrobe-tryon p{margin:0 0 8px}.wardrobe-tryon div{display:flex;gap:18px;justify-content:center;align-items:center}.wardrobe-tryon a,.wardrobe-tryon button{padding:6px 0;color:var(--brand-ink);font-size:12px;font-weight:700}.wardrobe-tryon button{background:none;border:0;cursor:pointer}.wardrobe-closet{min-width:0;padding:6px 0}.wardrobe-closet__heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.wardrobe-closet__heading h2{margin:0;font-size:22px}.wardrobe-closet__heading>span{font-size:12px;color:var(--text-muted)}.wardrobe-closet__intro{font-size:13px;color:var(--text-muted);margin:8px 0 22px}.wardrobe-slots{display:flex;gap:4px;max-width:100%;padding:0 0 14px;overflow-x:auto;scrollbar-width:thin}.wardrobe-slots button{flex:0 0 auto;min-height:44px;padding:7px 12px;border:1px solid transparent;background:transparent;border-radius:12px;color:var(--text-muted);font-size:13px;font-weight:650;cursor:pointer}.wardrobe-slots button[aria-pressed=true]{color:var(--brand-ink);border-color:#d9cde7;background:#ece5f4}.wardrobe-section-heading{display:flex;align-items:center;justify-content:space-between;margin:3px 0 14px;gap:12px}.wardrobe-section-heading h3{margin:0;font-size:15px}.wardrobe-section-heading span{color:var(--text-muted);font-size:11px}.wardrobe-items{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:0;margin:0;list-style:none}.wardrobe-item{position:relative;width:100%;display:flex;flex-direction:column;align-items:center;min-height:190px;padding:12px 6px;border:1px solid var(--border);border-radius:18px;background:var(--surface);color:var(--text);cursor:pointer;transition:border-color var(--motion-duration-in) var(--motion-ease-soft),background var(--motion-duration-in) var(--motion-ease-soft),transform var(--motion-duration-in) var(--motion-ease-standard)}.wardrobe-item--on{border-color:#9478b5;background:#f3eef9;box-shadow:inset 0 0 0 1px #9478b5}.wardrobe-item--just-on:after{content:"✓";position:absolute;top:8px;right:8px;display:grid;width:24px;height:24px;place-items:center;border-radius:50%;background:var(--ok);color:#fff;font-weight:900;animation:m-pop .5s var(--spring-bouncy) both}.wardrobe-item--preview{border-color:#ac99bf;border-style:dashed;background:#f9f6fc}.wardrobe-item__state{align-self:flex-end;min-height:16px;font-size:10px;color:#77678a;padding-right:3px}.wardrobe-item--on .wardrobe-item__state{color:var(--brand-ink);font-weight:750}.wardrobe-item__art{display:grid;grid-template:minmax(0,1fr) / minmax(0,1fr);place-items:center;width:86px;height:86px;max-width:100%;margin:3px 0 8px}.wardrobe-item--locked .wardrobe-item__art{opacity:.8}.wardrobe-item__name{font-size:13px;font-weight:750}.wardrobe-item__english{color:var(--text-muted);font-size:10px;margin-top:2px}.wardrobe-item__rarity{font-size:10px;color:#79717f;margin-top:8px}.wardrobe-item__rarity--rare{color:#356c7d}.wardrobe-item__rarity--legendary{color:#986b30}.wardrobe-item:disabled{cursor:wait}.wardrobe-stage--hop .wardrobe-preview__mascot{animation:m-hop var(--dur-reward) var(--spring-bouncy) both}@media (prefers-reduced-motion: reduce){.wardrobe-item--just-on:after,.wardrobe-stage--hop .wardrobe-preview__mascot{animation:none}}.wardrobe-current{border-top:1px solid var(--border);margin-top:24px;padding-top:18px}.wardrobe-current h3{font-size:14px;margin:0 0 10px}.wardrobe-current p{font-size:12px;color:var(--text-muted);margin:8px 0 0}.wardrobe-current__items{display:flex;flex-wrap:wrap;gap:8px}.wardrobe-current__items button{display:flex;align-items:center;gap:7px;padding:6px 10px 6px 6px;min-height:44px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);font-size:11px;cursor:pointer}.wardrobe-current__items .item-artwork{width:30px;height:30px}.item-cell .item-artwork{width:66px;height:66px}.item-cell--locked .item-artwork{filter:grayscale(1);opacity:.3}.chest-item>.item-artwork{width:108px;height:108px}@media (hover: hover){.wardrobe-item:hover{border-color:#ae99c4;transform:translateY(-2px)}}@media (max-width: 767px){.wardrobe{grid-template-columns:minmax(0,1fr);gap:22px}.wardrobe-preview{position:sticky;top:calc(env(safe-area-inset-top) + 72px);z-index:5;padding:14px 16px 10px;box-shadow:0 8px 18px #6252710b}.wardrobe-preview h2{font-size:16px}.wardrobe-eyebrow{display:none}.wardrobe-stage{min-height:196px}.wardrobe-stage .mascot{--mascot-size: 196px !important}.wardrobe-stage--portrait .mascot{--mascot-size: 166px !important}.wardrobe-stage__plinth{pointer-events:none;width:62%;height:22px}.wardrobe-view{margin-top:14px}.wardrobe-preview__caption{margin:12px 0 0}.wardrobe-preview__caption strong{font-size:15px}.wardrobe-preview__caption span{display:none}.wardrobe-closet__intro{margin-bottom:14px}.wardrobe-item{min-height:174px;padding:10px 5px}.wardrobe-item__art{width:72px;height:72px}}@media (prefers-reduced-motion: reduce){.wardrobe-item{transition:none}.wardrobe-item:hover{transform:none}}.wardrobe-slots--mobile{display:none}@media (max-width: 767px){.wardrobe-slots--mobile{display:flex;margin-top:10px;padding:8px 0 0;border-top:1px solid #ded4e6}.wardrobe-slots--mobile button{min-height:44px;padding-inline:10px;font-size:12px}.wardrobe-closet>.wardrobe-slots{display:none}.wardrobe-item{scroll-margin-top:510px}}@media (max-width: 767px) and (max-height: 700px){.wardrobe-preview{position:static}.wardrobe-item{scroll-margin-top:90px}}.rewards-page .wardrobe{grid-template-columns:minmax(0,1fr);gap:16px}.rewards-page .wardrobe-preview,.rewards-page .wardrobe-closet{position:static;padding:18px 16px;border:0;border-radius:var(--r-lg);background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.rewards-page .wardrobe-preview{background:var(--reward-spotlight)}.rewards-page .wardrobe-view,.rewards-page .wardrobe-slots button{border-radius:999px}.rewards-page .wardrobe-view button[aria-pressed=true],.rewards-page .wardrobe-slots button[aria-pressed=true]{border-color:transparent;background:var(--brand);color:var(--surface);box-shadow:0 3px 0 var(--brand-deep)}.rewards-page .wardrobe-item{border-color:var(--edge);border-radius:18px;background:var(--surface);box-shadow:0 3px 0 var(--edge)}.rewards-page .wardrobe-item--on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 4px 0 var(--brand-deep)}.rewards-page .wardrobe-item--locked{background:var(--surface-muted)}.rewards-page .wardrobe-item--locked .item-artwork{filter:none;opacity:.65}.rewards-page .wardrobe-item--locked .wardrobe-item__state:before{content:"🔒 "}.rewards-page .wardrobe-item__rarity{border-radius:999px;padding:2px 9px;background:var(--brand-soft);color:var(--brand-ink)}.rewards-page .wardrobe-view button,.rewards-page .wardrobe-slots button,.rewards-page .wardrobe-current__items button,.rewards-page .wardrobe-tryon button,.rewards-page .wardrobe-tryon a{min-height:48px}.rewards-page .wardrobe-tryon a{display:inline-flex;align-items:center}.rewards-page .wardrobe-item--preview{border-color:var(--sky);box-shadow:0 3px 0 var(--sky)}.rewards-page .item-cell .item-artwork{max-width:100%}@media (min-width: 768px) and (max-width: 1023px){.rewards-page .wardrobe{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}}.page--words{max-width:720px;margin:0 auto}.words-header{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.words-header__count{margin:2px 0 0;color:var(--text-muted);font-size:14px;font-weight:700}.words-actions{display:grid;gap:10px}.words-actions__main{min-height:62px;font-size:20px}.words-tabs{display:flex;flex-wrap:wrap;gap:8px}.words-tabs__tab{padding:8px 14px;border:0;border-radius:999px;background:var(--surface);color:var(--text-muted);font-size:14px;font-weight:900;box-shadow:0 2px 0 var(--edge);cursor:pointer}.words-tabs__tab--on{background:var(--brand);color:#fff;box-shadow:0 2px 0 var(--brand-deep)}.words-legend{display:flex;flex-wrap:wrap;gap:12px;color:var(--text-muted);font-size:12px;font-weight:800}.words-legend span{display:inline-flex;align-items:center;gap:4px}.words-unit{display:grid;gap:8px}.words-unit__title{margin:4px 2px 0;font-size:18px;font-weight:900}.words-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.word-tile{display:grid;gap:2px;min-width:0;padding:6px 6px 9px;border:0;border-radius:16px;background:var(--surface);box-shadow:0 3px 0 var(--edge);text-align:center;cursor:pointer}.word-tile:active{transform:translateY(2px);box-shadow:0 1px 0 var(--edge)}.word-tile b{overflow:hidden;color:var(--text);font-size:15px;font-weight:900;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.word-tile small{overflow:hidden;color:var(--text-muted);font-size:11px;font-weight:700;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.word-tile--locked{background:color-mix(in srgb,var(--text-muted) 8%,var(--surface));box-shadow:none}.word-tile--locked b,.word-tile--locked small{color:color-mix(in srgb,var(--text-muted) 55%,var(--surface))}.word-tile--locked .word-pic{filter:grayscale(1);opacity:.55}.word-level{display:flex;justify-content:center;gap:3px;margin-top:3px}.word-level__dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--practice-dot-rest)}.word-level__dot--on{background:var(--ok)}.word-level__dot--sun{background:var(--sun)}.word-level--1 .word-level__dot:nth-child(1){background:var(--ok)}.word-level--2 .word-level__dot:nth-child(1),.word-level--2 .word-level__dot:nth-child(2){background:var(--ok)}.word-level--3 .word-level__dot{background:var(--ok)}.page--words-session{max-width:560px;margin:0 auto;min-height:100%;--word-mark: rgba(255, 201, 60, .45);padding:calc(12px + env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom))}.app-shell.sp-immersive:has(.page--words-session) .app-header{display:none}.words-session-top{display:flex;align-items:center;gap:12px}.words-session-exit{display:grid;flex:none;place-items:center;width:40px;height:40px;border:0;border-radius:14px;background:var(--surface);color:var(--text-muted);font-size:18px;font-weight:900;box-shadow:0 3px 0 var(--edge);cursor:pointer}.words-dots{display:flex;flex:1;gap:6px;min-width:0}.words-dots__seg{flex:1;height:10px;border-radius:999px;background:var(--practice-dot-rest);transition:background var(--dur-page) var(--ease-out)}.words-dots__seg--done{background:var(--ok)}.words-dots__seg--current{background:var(--brand)}.words-step-tag{flex:none;padding:5px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink);font-size:13px;font-weight:900;white-space:nowrap}.today-step__new{margin-left:4px;padding:2px 6px;border-radius:999px;background:var(--sun);color:#5a4200;font-size:10px;font-style:normal;font-weight:900;vertical-align:2px}.word-card{--glass-fill: linear-gradient(165deg, rgba(240, 247, 255, .66) 0%, rgba(232, 224, 255, .5) 55%, rgba(222, 242, 255, .6) 100%);--glass-sheen: linear-gradient(115deg, rgba(255, 255, 255, .78) 0%, rgba(255, 255, 255, .3) 30%, rgba(255, 255, 255, 0) 30.4%), linear-gradient(115deg, transparent 63%, rgba(255, 255, 255, .45) 63% 66%, transparent 66.4%), radial-gradient(130% 70% at 50% -10%, rgba(255, 255, 255, .55), transparent 60%);--glass-sheen-back: linear-gradient(245deg, rgba(255, 255, 255, .78) 0%, rgba(255, 255, 255, .3) 30%, rgba(255, 255, 255, 0) 30.4%), linear-gradient(245deg, transparent 63%, rgba(255, 255, 255, .45) 63% 66%, transparent 66.4%), radial-gradient(130% 70% at 50% -10%, rgba(255, 255, 255, .55), transparent 60%);--glass-edge: inset 0 0 0 1.5px rgba(255, 255, 255, .95), inset 0 2px 1px #fff, inset 0 -4px 8px rgba(124, 92, 255, .12), inset 0 0 32px rgba(255, 255, 255, .45), 0 1px 0 #eef8fc, 0 2px 0 #e0f1f8, 0 3px 0 #d3eaf4, 0 4px 0 #c7e3ef, 0 5px 0 #bcdcea, 0 6px 0 #b2d5e5, 0 7px 0 #a9cfe1, 0 8px 0 #a1c9dc, 0 9px 0 rgba(255, 255, 255, .85), 0 10px 2px rgba(80, 120, 160, .18), 0 28px 44px -18px rgba(76, 60, 160, .38);display:flex;flex:1;flex-direction:column;gap:14px;min-height:0}.word-hue--0{--plate: var(--k-reading-soft);--plate-ink: var(--k-reading)}.word-hue--1{--plate: var(--k-vocab-soft);--plate-ink: var(--k-vocab)}.word-hue--2{--plate: var(--k-grammar-soft);--plate-ink: var(--k-grammar)}.word-hue--3{--plate: var(--k-listening-soft);--plate-ink: var(--k-listening)}.word-hue--4{--plate: var(--k-writing-soft);--plate-ink: var(--k-writing)}.word-hue--5{--plate: var(--k-speaking-soft);--plate-ink: var(--k-speaking)}.word-flip{position:relative;isolation:isolate;flex:1;--word-card-h: clamp(460px, calc(100dvh - 230px) , 640px);min-height:var(--word-card-h);perspective:1200px;cursor:pointer;animation:word-card-in .45s var(--ease-out) both}@keyframes word-card-in{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:none}}.word-flip__inner{position:relative;width:100%;height:100%;min-height:var(--word-card-h);transition:transform .6s var(--spring-snappy);transform-style:preserve-3d;animation:word-card-lift-a .6s var(--spring-snappy)}.word-flip--on .word-flip__inner{transform:rotateY(180deg);animation-name:word-card-lift-b}@keyframes word-card-lift-a{0%,to{translate:0 0 0}50%{translate:0 0 40px}}@keyframes word-card-lift-b{0%,to{translate:0 0 0}50%{translate:0 0 40px}}.word-flip:active .word-flip__inner{transform:scale(.985)}.word-flip--on:active .word-flip__inner{transform:rotateY(180deg) scale(.985)}.word-flip__face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;gap:6px;padding:22px 20px;border-radius:32px;background:var(--glass-sheen),var(--glass-fill);box-shadow:var(--glass-edge);backface-visibility:hidden;overflow:hidden;transition:visibility 0s linear .3s}.word-flip--on .word-flip__face--front{visibility:hidden}.word-flip:not(.word-flip--on) .word-flip__face--back{visibility:hidden}.word-flip__face--back{transform:rotateY(180deg);justify-content:flex-start;overflow-y:auto;background:var(--glass-sheen-back),var(--glass-fill)}.word-face__left,.word-face__right{display:contents}.word-chips{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%}.word-chip{padding:5px 10px;border-radius:999px;font-size:12px;font-weight:900}.word-chip--unit{background:var(--plate, var(--k-reading-soft));color:var(--plate-ink, var(--k-reading));box-shadow:inset 0 1px #fffc,0 1px color-mix(in srgb,var(--plate-ink, var(--k-reading)) 25%,transparent)}.word-chip--hot{margin-left:auto;background:var(--oops-soft);color:var(--oops-ink)}.word-chip--pos{margin-top:2px;background:var(--k-vocab-soft);color:var(--k-vocab);font-size:14px;font-style:italic;padding:4px 12px}.word-pic{--pic-pad: 11px;--pic-r: 26px;position:relative;display:grid;flex:none;place-items:center;padding:var(--pic-pad);overflow:hidden;background:linear-gradient(145deg,color-mix(in srgb,var(--plate-ink, var(--k-vocab)) 22%,#fff),color-mix(in srgb,var(--plate-ink, var(--k-vocab)) 10%,#fff) 45%,color-mix(in srgb,var(--plate-ink, var(--k-vocab)) 38%,#fff));box-shadow:inset 0 2px 1px #fff,inset 0 -4px 8px color-mix(in srgb,var(--plate-ink, var(--k-vocab)) 35%,transparent),0 5px color-mix(in srgb,var(--plate-ink, var(--k-vocab)) 45%,#fff),0 6px #2b235014,0 22px 30px -14px #2b235073}.word-pic:before{content:"";position:absolute;inset:var(--pic-pad);border-radius:var(--pic-r);background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.7),transparent 55%),var(--plate, var(--k-vocab-soft));pointer-events:none}.word-pic:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;border-radius:inherit;background:radial-gradient(140% 70% at 50% -22%,#fff9,#fff0 52%),linear-gradient(118deg,transparent 0 16%,rgba(255,255,255,.42) 16% 27%,rgba(255,255,255,.12) 27% 34%,transparent 34%),radial-gradient(120% 60% at 100% 100%,rgba(255,255,255,.22),transparent 60%);box-shadow:inset 0 0 0 1px #ffffffbf,inset 0 1.5px #fff;pointer-events:none}.word-pic--big{width:220px;height:220px;margin:12px 0 10px;border-radius:36px}.word-pic--mini{--pic-pad: 4px;--pic-r: 16px;width:64px;height:64px;border-radius:20px;box-shadow:inset 0 1px 1px #fffffff2,inset 0 -2px 4px color-mix(in srgb,var(--plate-ink, var(--k-vocab)) 25%,transparent),0 2px color-mix(in srgb,var(--plate-ink, var(--k-vocab)) 30%,rgba(255,255,255,.6)),0 8px 14px -8px #2b235059}.word-pic--tile{--pic-pad: 6px;--pic-r: 10px;width:100%;aspect-ratio:1;margin-bottom:4px;border-radius:16px;box-shadow:inset 0 1px 1px #fffffff2,inset 0 -2px 4px color-mix(in srgb,var(--plate-ink, var(--k-vocab)) 25%,transparent),0 2px color-mix(in srgb,var(--plate-ink, var(--k-vocab)) 30%,rgba(255,255,255,.6)),0 8px 14px -8px #2b235059}.word-pic__img{position:absolute;inset:var(--pic-pad);z-index:1;width:calc(100% - var(--pic-pad) * 2);height:calc(100% - var(--pic-pad) * 2);object-fit:cover;border-radius:var(--pic-r);box-shadow:0 0 0 1px #ffffffb3,0 2px 6px #2b235033}.word-pic__emoji{position:relative;z-index:1;font-size:124px;line-height:1;transform:rotate(-4deg);filter:drop-shadow(0 8px 10px rgba(0,0,0,.15))}.word-pic__letter{position:relative;z-index:1;color:var(--plate-ink, var(--k-vocab));font-size:110px;font-weight:900;line-height:1}.word-pic--mini .word-pic__emoji{font-size:38px;filter:none}.word-pic--mini .word-pic__letter{font-size:36px}.word-pic--tile .word-pic__emoji{font-size:46px;filter:none}.word-pic--tile .word-pic__letter{font-size:40px}.word-flip__face--back .word-pic--big{display:none}.word-term{margin:0;color:var(--text);font-size:58px;font-weight:900;letter-spacing:-.02em;line-height:1.1;overflow-wrap:anywhere;text-align:center}.word-speak{position:relative;display:grid;place-items:center;width:74px;height:74px;margin-top:18px;border:0;border-radius:50%;background:linear-gradient(180deg,#9a80ff 0%,var(--brand) 55%,#6c4cf0 100%);color:#fff;font-size:32px;box-shadow:inset 0 1px #ffffff8c,inset 0 -2px #0000001f,0 5px 0 var(--brand-deep),0 10px 18px -8px #5a3fd199;cursor:pointer}.word-speak--pill{display:inline-flex;gap:10px;width:auto;height:52px;padding:0 22px 0 8px;border-radius:999px;font-size:18px}.word-speak__icon{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#ffffff38;font-size:18px;line-height:1}.word-speak__text{font-weight:900}.word-speak--round{flex:none;width:46px;height:46px;margin-top:0;box-shadow:inset 0 1px #ffffff8c,inset 0 -2px #0000001f,0 4px 0 var(--brand-deep),0 8px 14px -8px #5a3fd199}.word-speak--round .word-speak__icon{width:auto;height:auto;background:none;font-size:20px}.word-speak--playing:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border:3px solid var(--brand);border-radius:inherit;opacity:.25;animation:word-ring 1.2s ease-out;pointer-events:none}.word-speak:active{transform:translateY(3px);box-shadow:inset 0 1px #ffffff8c,inset 0 -2px #0000001f,0 2px 0 var(--brand-deep),0 5px 10px -6px #5a3fd199}@keyframes word-ring{0%{transform:scale(.92);opacity:.45}to{transform:scale(1.18);opacity:0}}.word-tap{margin:auto 0 0;padding-top:8px;color:var(--text-muted);font-size:14px;font-weight:800;text-align:center}.word-back-head{display:flex;align-items:center;gap:10px;width:100%;padding:10px;border-radius:24px;background:#ffffffbf;border:1px solid rgba(43,35,80,.06);box-shadow:0 1px #ffffffe6 inset,0 2px 6px -2px #2b23501f}.word-back-head__text{display:grid;flex:1;gap:2px;min-width:0}.word-back-head__term{overflow:hidden;font-size:28px;font-weight:900;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.word-back-head__text small{color:var(--text-muted);font-size:13px;font-style:italic;font-weight:800}.word-meaning{margin:18px 0 0;font-size:46px;font-weight:900;line-height:1.15;text-align:center;overflow-wrap:anywhere}.word-eyebrow{margin:14px 0 0;align-self:flex-start;color:var(--text-muted);font-size:12px;font-weight:900;letter-spacing:.14em}.word-example{position:relative;width:100%;margin-top:6px;padding:16px;background:#fff;border:1px solid rgba(43,35,80,.08);border-radius:22px;box-shadow:0 2px #2b23500d,0 8px 16px -10px #2b235040}.word-example__en{margin:0;padding-right:44px;font-size:19px;font-weight:800;line-height:1.4;overflow-wrap:anywhere}.word-example__en u{background:linear-gradient(transparent 58%,var(--word-mark) 58%);font-weight:900;text-decoration:none}.word-example__speak{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--surface-muted);font-size:18px;box-shadow:0 3px 0 var(--edge);cursor:pointer}.word-say{display:flex;align-items:center;gap:10px;width:100%;margin-top:12px;padding:6px 14px 6px 8px;border:1px solid rgba(255,255,255,.85);border-radius:20px;background:linear-gradient(180deg,#fff9,#ffffff4d);box-shadow:inset 0 1px #fff,0 3px 10px -6px #4c3ca04d}@media (prefers-color-scheme: dark){.page--words-session .word-say{border-color:#ffffff24;background:linear-gradient(180deg,#ffffff14,#ffffff08);box-shadow:inset 0 1px #ffffff1f,0 3px 10px -6px #00000080}}.word-say__text{margin:0;color:var(--text-muted);font-size:14px;font-weight:800}.word-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.word-actions--three{grid-template-columns:repeat(3,minmax(0,1fr))}.word-action{min-height:56px;padding:10px 12px;border:0;border-radius:20px;font-size:18px;font-weight:900;cursor:pointer}.word-action:disabled{opacity:.5;cursor:default}.word-action--soft{background:var(--oops-soft);color:var(--oops-ink);box-shadow:0 5px color-mix(in srgb,var(--oops-ink) 35%,var(--oops-soft))}.word-action--ok{background:var(--ok);color:#fff;box-shadow:0 5px 0 var(--ok-deep)}.word-action--sun{background:var(--sun-soft);color:var(--sun-ink);box-shadow:0 5px 0 var(--sun-edge)}.word-action:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--edge)}.word-hint{margin:0;color:var(--text-muted);font-size:13px;font-weight:700;text-align:center}.word-game{display:grid;gap:6px}.word-game__title{margin:10px 0 0;font-size:22px;font-weight:900;text-align:center}.word-game__sub{margin:0 0 12px;color:var(--text-muted);font-size:14px;font-weight:700;text-align:center}.word-match{display:grid;grid-template-columns:1fr 1fr;gap:12px}.word-match__col{display:grid;gap:10px;align-content:start}.word-match__chip{display:flex;align-items:center;justify-content:center;gap:6px;min-height:62px;padding:8px;border:3px solid transparent;border-radius:20px;background:var(--surface);color:var(--text);font-size:18px;font-weight:900;box-shadow:0 4px 0 var(--edge);cursor:pointer;overflow-wrap:anywhere;text-align:center}.word-match__chip--selected{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink)}.word-match__chip--ok{background:var(--ok-soft);color:var(--ok-ink);box-shadow:0 4px color-mix(in srgb,var(--ok-ink) 35%,var(--ok-soft));opacity:.8}.word-match__chip--oops{background:var(--oops-soft);color:var(--oops-ink);animation:word-shake .4s}@keyframes word-shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}.word-bobo{display:flex;align-items:flex-end;gap:8px;margin-top:18px}.word-bobo__bubble{position:relative;flex:1;min-width:0;margin:0;padding:10px 14px;border-radius:20px;background:var(--surface);font-size:14px;font-weight:800;box-shadow:0 4px 0 var(--edge)}.word-listen{display:grid;justify-items:center;gap:6px}.word-speak--big{margin-top:24px}.word-listen__hint{margin:10px 0 18px;color:var(--text-muted);font-size:13px;font-weight:700}.word-listen__options{display:grid;gap:10px;width:100%}.word-listen__option{min-height:58px;padding:8px 14px;border:3px solid transparent;border-radius:20px;background:var(--surface);color:var(--text);font-size:20px;font-weight:900;box-shadow:0 4px 0 var(--edge);cursor:pointer}.word-listen__option--ok{background:var(--ok-soft);color:var(--ok-ink);box-shadow:0 4px color-mix(in srgb,var(--ok-ink) 35%,var(--ok-soft))}.word-listen__option--oops{background:var(--oops-soft);color:var(--oops-ink);animation:word-shake .4s}.words-done{display:grid;justify-items:center;gap:4px;padding:18px;border-radius:28px;background:var(--first-day-done-gradient);box-shadow:0 5px 0 var(--first-day-done-edge);text-align:center}.words-done__title{margin:4px 0 0;font-size:24px;font-weight:900}.words-done__next{margin:4px 0 0;color:var(--ok-ink);font-size:14px;font-weight:800}.words-done__stars{margin-top:8px;padding:6px 12px;border-radius:999px;background:var(--surface);color:var(--sun-ink);font-size:15px;font-weight:900}.learn-feature-card--words{grid-column:1 / -1;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;min-height:84px;background:linear-gradient(135deg,var(--k-vocab),var(--brand-deep));box-shadow:0 4px 0 var(--brand-deep)}.learn-feature-card--words .learn-feature-card__icon{margin-bottom:0;font-size:32px}.learn-feature-card--words strong{display:block;font-size:17px}.learn-feature-card--words small{display:block;font-size:12.5px}.learn-feature-card__count{padding:6px 10px;border-radius:16px;background:#ffffff38;font-size:20px;font-weight:900;line-height:1.1;text-align:center;white-space:nowrap}.learn-feature-card__count small{display:block;font-size:10px;font-weight:700}@keyframes word-card-fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.word-flip__inner,.words-dots__seg,.word-flip__face{transition:none}.word-flip__inner,.word-flip--on .word-flip__inner{animation:none}.word-speak--playing:after{animation:none}.word-flip{animation-name:word-card-fade}.word-match__chip--oops,.word-listen__option--oops{animation:none}}@media (max-height: 700px){.word-pic--big{width:150px;height:150px;margin:8px 0 6px;border-radius:30px;--pic-r: 22px}.word-pic--big .word-pic__emoji{font-size:84px}.word-pic--big .word-pic__letter{font-size:76px}.word-term{font-size:42px}.word-meaning{font-size:36px;margin-top:12px}.word-speak--pill{height:48px;margin-top:10px}.word-flip{--word-card-h: max(400px, calc(100dvh - 220px) )}}@media (min-width: 768px){.page--words-session{max-width:620px}.word-flip{--word-card-h: clamp(520px, calc(100dvh - 240px) , 720px)}.word-pic--big{width:300px;height:300px}.word-pic--big .word-pic__emoji{font-size:168px}.word-pic--big .word-pic__letter{font-size:150px}.word-term{font-size:68px}.words-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 900px) and (orientation: landscape){.page--words-session{max-width:1040px;min-height:100dvh}.word-card{display:grid;grid-template-columns:minmax(0,1fr) 220px;grid-template-rows:1fr auto;gap:14px 20px}.word-card .word-flip{grid-column:1;grid-row:1 / -1}.word-card .word-actions{grid-column:2;grid-row:2;grid-template-columns:1fr;align-self:end}.word-card .word-hint{grid-column:2;grid-row:1;align-self:end}.word-flip{--word-card-h: min(560px, calc(100dvh - 120px) )}.word-flip__face{display:grid;grid-template-columns:300px minmax(0,1fr);align-items:stretch;gap:0 28px;padding:26px 32px}.word-face__left,.word-face__right{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-width:0}.word-face__left .word-chips{align-self:flex-start}.word-pic--big{width:280px;height:280px;margin:12px 0 0}.word-pic--big .word-pic__emoji{font-size:156px}.word-pic--big .word-pic__letter{font-size:140px}.word-flip__face--back .word-pic--big{display:grid}.word-back-head .word-pic--mini{display:none}.word-back-head__term{font-size:34px}.word-tap{margin-top:8px}.word-flip__face--back .word-face__right{justify-content:center}}@media (prefers-color-scheme: dark){.page--words-session{--bg: #17142b;--surface: #231e3f;--surface-muted: #2c2650;--text: #f3efff;--text-muted: #b4abd6;--border: rgba(255, 255, 255, .1);--edge: #3a3266;--brand: #9d85ff;--brand-deep: #6a52d6;--brand-ink: #c3b5ff;--brand-soft: #352d63;--sun-soft: #3d3420;--sun-ink: #ffd76a;--sun-edge: #5a4a22;--ok-soft: #173d33;--ok-ink: #6fe3b6;--oops-soft: #43291e;--oops-ink: #ffb48a;--shadow: 0 6px 18px rgba(0, 0, 0, .35);--k-reading-soft: #173447;--k-vocab-soft: #2f2860;--k-grammar-soft: #173d33;--k-listening-soft: #43301a;--k-writing-soft: #45213a;--k-speaking-soft: #143c40;--word-mark: rgba(255, 201, 60, .32);color-scheme:dark;color:var(--text);background:radial-gradient(ellipse 80% 50% at 50% 0%,rgba(157,133,255,.16),transparent 70%),var(--bg)}body:has(.page--words-session),.app-shell:has(.page--words-session){background:#17142b}.page--words-session .word-hue--0{--plate-ink: #7fd4ff}.page--words-session .word-hue--1{--plate-ink: #b3a0ff}.page--words-session .word-hue--2{--plate-ink: #5fe0b0}.page--words-session .word-hue--3{--plate-ink: #ffb870}.page--words-session .word-hue--4{--plate-ink: #ff9cc3}.page--words-session .word-hue--5{--plate-ink: #5fd8e8}.page--words-session .word-chip--pos{background:var(--brand-soft);color:var(--brand-ink)}.page--words-session .word-pic{background:linear-gradient(145deg,color-mix(in srgb,var(--plate-ink) 38%,#2a2449),color-mix(in srgb,var(--plate-ink) 20%,#2a2449) 45%,color-mix(in srgb,var(--plate-ink) 48%,#2a2449));box-shadow:inset 0 2px 1px #fff6,inset 0 -4px 8px #0000004d,0 5px color-mix(in srgb,var(--plate-ink) 40%,#120f24),0 6px #00000040,0 22px 30px -14px #000000b3}.page--words-session .word-pic--mini,.page--words-session .word-pic--tile{box-shadow:inset 0 1px 1px #ffffff59,inset 0 -2px 4px color-mix(in srgb,var(--plate-ink) 25%,transparent),0 2px color-mix(in srgb,var(--plate-ink) 30%,rgba(0,0,0,.4)),0 8px 14px -8px #0009}.page--words-session .word-pic:before{background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.14),transparent 55%),var(--plate)}.page--words-session .word-pic:after{background:radial-gradient(140% 70% at 50% -22%,#ffffff4d,#fff0 52%),linear-gradient(118deg,transparent 0 16%,rgba(255,255,255,.22) 16% 27%,rgba(255,255,255,.06) 27% 34%,transparent 34%),radial-gradient(120% 60% at 100% 100%,rgba(255,255,255,.1),transparent 60%);box-shadow:inset 0 0 0 1px #ffffff40,inset 0 1.5px #ffffff80}.page--words-session .word-pic__img{filter:brightness(.92)}.page--words-session .word-card{--glass-fill: linear-gradient(165deg, rgba(255, 255, 255, .11) 0%, rgba(157, 133, 255, .09) 55%, rgba(111, 211, 255, .09) 100%);--glass-sheen: linear-gradient(115deg, rgba(255, 255, 255, .2) 0%, rgba(255, 255, 255, .06) 30%, rgba(255, 255, 255, 0) 30.4%), linear-gradient(115deg, transparent 63%, rgba(255, 255, 255, .1) 63% 66%, transparent 66.4%), radial-gradient(130% 70% at 50% -10%, rgba(255, 255, 255, .14), transparent 60%);--glass-sheen-back: linear-gradient(245deg, rgba(255, 255, 255, .2) 0%, rgba(255, 255, 255, .06) 30%, rgba(255, 255, 255, 0) 30.4%), linear-gradient(245deg, transparent 63%, rgba(255, 255, 255, .1) 63% 66%, transparent 66.4%), radial-gradient(130% 70% at 50% -10%, rgba(255, 255, 255, .14), transparent 60%);--glass-edge: inset 0 0 0 1.5px rgba(255, 255, 255, .28), inset 0 2px 1px rgba(255, 255, 255, .45), inset 0 -4px 8px rgba(0, 0, 0, .25), inset 0 0 32px rgba(157, 133, 255, .12), 0 1px 0 #3d3874, 0 2px 0 #37336a, 0 3px 0 #322e61, 0 4px 0 #2d2a58, 0 5px 0 #29264f, 0 6px 0 #252347, 0 7px 0 #221f40, 0 8px 0 #1f1c3a, 0 9px 0 rgba(255, 255, 255, .2), 0 10px 2px rgba(0, 0, 0, .35), 0 28px 44px -18px rgba(0, 0, 0, .7)}.page--words-session .word-back-head{background:#ffffff0f;border-color:#ffffff14;box-shadow:0 1px #ffffff0f inset,0 2px 6px -2px #0006}.page--words-session .word-example{background:#2c2650;border-color:#ffffff0f;box-shadow:0 2px #0003,0 8px 16px -10px #00000080}.page--words-session .word-chip--unit{box-shadow:inset 0 1px #ffffff1f,0 1px color-mix(in srgb,var(--plate-ink) 25%,transparent)}}.word-choice{position:relative;display:grid;grid-template-areas:"prompt" "pictures" "tools";grid-template-columns:minmax(0,1fr);gap:12px;padding:0}.word-choice__chop{position:absolute;top:10px;right:14px;min-height:48px;border:0;background:transparent;color:var(--text-muted);font-weight:900}.word-choice__prompt{grid-area:prompt;text-align:center;padding:0 54px}.word-choice__prompt .word-term{margin:0}.word-choice__tools{grid-area:tools;display:flex;justify-content:center;gap:10px}.word-choice__tools .word-action{min-height:48px;padding:10px 14px}.word-choice__hint{margin:8px auto}.word-choice__grid{grid-area:pictures;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%;max-width:520px;justify-self:center}.word-choice__option{position:relative;display:grid;place-items:center;min-width:0;aspect-ratio:1;padding:6px;border:2px solid var(--border);border-radius:18px;background:var(--surface);color:var(--text);box-shadow:0 4px 0 var(--edge)}.word-choice__option .word-pic{margin:0;border-radius:12px}.word-choice__picture{width:100%;min-height:0;aspect-ratio:1}.word-choice__option small{position:absolute;z-index:3;bottom:4px;left:4px;right:4px;background:var(--surface);border-radius:8px;color:var(--text)}.word-choice__hint .word-example__en{padding-right:0;font-size:16px}.word-choice__prompt .word-speak{display:flex;margin:8px auto 0}.word-choice__option--ok{outline:3px solid var(--ok);border-color:var(--ok);background:var(--ok-soft)}.word-choice__option--oops{outline:3px solid var(--oops);border-color:var(--oops);background:var(--oops-soft);animation:word-choice-shake .35s ease-in-out}.word-choice__option small{padding:5px 2px 2px;font-weight:800}.word-choice__option--text{font-size:20px;font-weight:900}.word-choice__option b{position:absolute;z-index:3;top:6px;right:10px;color:var(--ok-ink);font-size:24px}.word-detail{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:8px;padding:16px}.word-detail .word-pic--big{margin:2px auto}.word-detail__visual,.word-detail__content{display:flex;flex-direction:column;align-items:center;width:100%;gap:6px}.word-detail__next{min-height:52px;width:100%;margin-top:auto}.word-detail{border-radius:32px;background:var(--surface);box-shadow:0 6px 0 var(--edge),var(--shadow)}.word-detail .word-term{margin:0;font-size:38px}.word-detail .word-meaning{margin:4px 0;font-size:32px}.word-detail .word-speak{margin-top:4px;min-height:48px}.word-detail .word-example{margin:0;padding:12px}.word-detail .word-example__en{font-size:17px}.word-detail .word-example__speak{width:48px;height:48px;top:4px;right:4px}.word-detail .word-eyebrow{margin:4px 0 0}.word-detail .word-say{margin-top:4px}@keyframes word-choice-shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}@media (min-width: 768px) and (orientation: landscape){.page--words-session:has(.word-choice),.page--words-session:has(.word-detail){max-width:1080px}.word-choice{grid-template-areas:"prompt pictures" "tools pictures";grid-template-columns:minmax(220px,.8fr) minmax(0,520px);grid-template-rows:1fr auto;align-items:center;justify-content:center;gap:24px}.word-choice__prompt{padding:12px}.word-choice__option .word-pic{width:100%}.word-detail{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);align-items:center;gap:24px;max-width:900px;margin-inline:auto}.word-detail__visual,.word-detail__content{display:flex}.word-detail__visual{grid-column:1;grid-row:1}.word-detail__content{grid-column:2;grid-row:1;align-items:flex-start}.word-detail__content .word-example{width:100%}.word-detail__next{margin-top:8px}}@media (max-height: 820px) and (max-width: 767px){.word-choice{gap:8px;padding:0}.word-choice .word-term{font-size:38px}.word-choice__option{padding:4px}.word-choice__option .word-pic--tile{margin:0}.word-choice__tools{margin-top:4px}.word-detail .word-pic--big{width:140px;height:140px}}@media (prefers-reduced-motion: reduce){.word-choice__option--oops{animation:none}}@media (prefers-color-scheme: dark){.page--words-session .word-choice__option{background:var(--surface);color:var(--text);border-color:var(--edge)}.page--words-session .word-choice__option--ok{background:var(--ok-soft);border-color:var(--ok-ink)}.page--words-session .word-choice__option--oops{background:var(--oops-soft);border-color:var(--oops-ink)}}.complete__gate{width:100%}.gate-result{display:grid;gap:10px;width:100%;padding:16px 14px;border-radius:20px;background:var(--surface);box-shadow:0 3px 0 var(--edge);color:var(--text);text-align:center}.gate-result__dots{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.gate-result__dot{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--practice-dot-rest);color:var(--text-muted);font-size:16px;font-weight:900;line-height:1}.gate-result__dot--ok{background:var(--ok);color:#fff}.gate-result__dot--miss{background:var(--oops-soft);color:var(--oops-ink)}.gate-result__meter{position:relative;height:14px;margin:4px 6px 0;border-radius:999px;background:var(--unit-ring-track)}.gate-result__fill{position:absolute;inset:0 auto 0 0;border-radius:inherit;background:var(--oops);transition:width var(--dur-enter, .4s) var(--ease-out, ease-out)}.gate-result__fill--passed{background:var(--ok)}.gate-result__tick{position:absolute;top:-5px;bottom:-5px;width:4px;margin-left:-2px;border-radius:2px;background:var(--brand-deep)}.gate-result__count{margin:0;color:var(--text-muted);font-size:16px;font-weight:700}.gate-result__count strong{color:var(--text);font-size:20px;font-weight:900}.gate-result__bubble{display:flex;align-items:center;gap:10px;margin:0;padding:10px 14px;border:2px solid var(--sun-edge);border-radius:var(--r-md, 16px);background:var(--sun-soft);color:var(--sun-ink);font-size:16px;font-weight:700;line-height:1.5;text-align:left}.gate-result--passed-first .gate-result__bubble,.gate-result--passed-retry .gate-result__bubble{border-color:var(--ok);background:var(--ok-soft);color:var(--ok-ink)}.gate-actions{display:grid;gap:10px;width:100%}.gate-actions button{min-height:56px;border-radius:20px}.gate-key-card{display:flex;align-items:flex-start;gap:12px;min-width:0;margin-top:8px;padding:12px 14px;border:2px solid var(--sun-edge);border-radius:20px;background:var(--sun-soft);color:var(--sun-ink)}.gate-key-card__icon{flex:none;font-size:28px;line-height:1.2}.gate-key-card__copy{min-width:0}.gate-key-card__copy strong{display:block;font-size:16px;font-weight:900}.gate-key-card__copy p{margin:2px 0 0;font-size:15px;font-weight:700;line-height:1.5}.book-unit--locked,.book-review-row--locked{opacity:.78}.gate-lock-panel{display:grid;gap:8px;margin:8px 0 4px;padding:14px;border:2px solid var(--sun-edge);border-radius:20px;background:var(--sun-soft);color:var(--sun-ink)}.gate-lock-panel p{margin:0}.gate-lock-panel__title{font-size:17px;font-weight:900}.gate-lock-panel__reason{font-size:15px;font-weight:700;line-height:1.5}.gate-lock-panel button{min-height:48px;justify-self:stretch}@media (min-width: 640px){.gate-lock-panel button{justify-self:start}}.gate-lock-panel__parent{display:grid;gap:8px}.gate-review{max-width:760px;margin:0 auto;padding:calc(12px + env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.app-shell.sp-immersive:has(.gate-review) .app-header{display:none}.gate-review .practice-actions--full{flex-direction:column;align-items:stretch;gap:8px}.lesson-page{max-width:1080px;margin:0 auto;padding:12px 16px 32px;display:flex;flex-direction:column;gap:14px}.lesson-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.lesson-close{width:44px;height:44px;border:0;border-radius:50%;background:var(--surface);color:var(--text-muted);font-size:26px;line-height:1;box-shadow:var(--shadow);cursor:pointer}.lesson-head__title h1{margin:0;font-size:22px;color:var(--text)}.lesson-head__unit{margin:0;font-size:13px;font-weight:700;color:var(--text-muted)}.lesson-steps{display:flex;gap:6px;margin:0 0 0 auto;padding:0;list-style:none}.lesson-steps__item{min-width:44px;padding:6px 12px;border-radius:999px;background:var(--surface-muted);color:var(--text-muted);font-size:14px;font-weight:800;text-align:center}.lesson-steps__item--done{background:var(--ok-soft);color:var(--ok-ink)}.lesson-steps__item--now{background:var(--brand);color:#fff}.lesson-steps__item--skipped{background:transparent;text-decoration:line-through}.lesson-split{display:grid;gap:16px}.lesson-tree{padding:10px;border:2px solid var(--edge);border-radius:var(--r-lg);background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.family-tree{display:block;width:100%;height:auto;max-height:46vh}@media (min-width: 900px){.lesson-split{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start}.lesson-split--single{grid-template-columns:minmax(0,640px);justify-content:center}.family-tree{max-height:calc(100dvh - 170px)}}.family-tree__lines path{stroke:var(--hero-edge);stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.family-tree__frame{fill:var(--bg);stroke:var(--edge);stroke-width:3;transition:stroke var(--motion-duration-fast) var(--motion-ease-standard)}.family-tree__name{fill:var(--text);font-size:30px;font-weight:800}.family-tree__me{fill:var(--sun-deep);font-size:30px}.family-tree__check{fill:var(--ok);font-size:30px;font-weight:900}.family-tree__tag rect{fill:var(--ok)}.family-tree__tag text{fill:#fff;font-size:26px;font-weight:800}.family-tree__person--live{cursor:pointer}.family-tree__person--live:focus,.family-tree__person--live:focus-visible{outline:none}.family-tree__person--live:focus-visible .family-tree__frame,.family-tree__person--focus .family-tree__frame{stroke:var(--brand);stroke-width:7}.family-tree__person--seen .family-tree__frame{stroke:var(--ok)}.family-tree__person--correct .family-tree__frame{stroke:var(--ok);stroke-width:7}.family-tree__person--wrong .family-tree__frame{stroke:var(--oops);stroke-width:7}.lesson-panel{display:flex;flex-direction:column;gap:14px}.lesson-prompt{margin:0;padding:18px 20px;border-radius:var(--r-lg);background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow);color:var(--text);font-size:26px;font-weight:800;line-height:1.35}.lesson-prompt--small{font-size:18px}.lesson-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.lesson-option{min-height:60px;padding:10px 14px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:20px;font-weight:800;box-shadow:0 4px 0 var(--edge);cursor:pointer}.lesson-option:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--edge)}.lesson-option--right,.lesson-option--reveal{border-color:var(--ok);background:var(--ok-soft);color:var(--ok-ink);box-shadow:0 4px 0 var(--ok)}.lesson-option--wrong{border-color:var(--oops);background:var(--oops-soft);color:var(--oops-ink);box-shadow:none}.lesson-option--dim{opacity:.45}.lesson-chips{display:flex;flex-wrap:wrap;gap:8px}.lesson-chip{min-height:48px;padding:8px 18px;border:2px solid var(--edge);border-radius:999px;background:var(--surface);color:var(--brand-ink);font-size:18px;font-weight:800;box-shadow:0 3px 0 var(--edge);cursor:pointer}.lesson-chip--on{border-color:var(--brand);background:var(--brand);color:#fff;box-shadow:0 3px 0 var(--brand-deep)}.lesson-chip--used{border-color:var(--ok);background:var(--ok-soft);color:var(--ok-ink);box-shadow:none}.lesson-bobo{display:flex;align-items:flex-start;gap:10px}.lesson-bobo__bubble{flex:1;margin:0;padding:12px 16px;border-radius:4px var(--r-md) var(--r-md) var(--r-md);background:var(--brand-soft);color:var(--text);font-size:17px;font-weight:700;line-height:1.5}.lesson-bobo--cheer .lesson-bobo__bubble{background:var(--ok-soft);color:var(--ok-ink)}.lesson-bobo--think .lesson-bobo__bubble{background:var(--sun-soft);color:var(--sun-ink)}.lesson-listen{align-self:flex-start;min-height:48px;padding:8px 18px;border:0;border-radius:999px;background:var(--sky);color:#fff;font-size:17px;font-weight:800;cursor:pointer}.lesson-next{align-self:stretch}.lesson-count{margin:0;color:var(--text-muted);font-size:15px;font-weight:700}.lesson-word{display:flex;flex-direction:column;gap:6px;padding:18px 20px;border-radius:var(--r-lg);background:var(--surface);box-shadow:0 4px 0 var(--edge),var(--shadow)}.lesson-word p{margin:0}.lesson-word__en{color:var(--brand-ink);font-size:40px;font-weight:900}.lesson-word__zh{color:var(--text-muted);font-size:18px;font-weight:700}.lesson-word__sentence{color:var(--text);font-size:22px;font-weight:800}.lesson-rule{padding:18px 20px;border:2px solid var(--sun-edge);border-radius:var(--r-lg);background:var(--sun-soft)}.lesson-rule h2{margin:0 0 8px;color:var(--sun-ink);font-size:22px}.lesson-rule p{margin:0;color:var(--text);font-size:18px;line-height:1.6}.lesson-clues{margin:0;padding:14px 18px 14px 40px;border-radius:var(--r-lg);background:var(--surface);box-shadow:0 4px 0 var(--edge);color:var(--text);font-size:20px;font-weight:700;line-height:1.7}.lesson-name{display:flex;flex-direction:column;gap:6px;color:var(--text-muted);font-size:15px;font-weight:700}.lesson-name input{min-height:52px;padding:8px 14px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:20px}.lesson-sentence{margin:0;color:var(--text);font-size:28px;font-weight:900}.lesson-done{display:flex;flex-direction:column;gap:16px;max-width:560px;margin:24px auto 0}.lesson-done__stats{display:grid;gap:8px;margin:0;padding:0;list-style:none;font-size:18px}.lesson-done__stats strong{display:inline-block;min-width:36px;color:var(--brand-ink);font-size:24px}.lesson-done__actions{display:flex;gap:12px}.lesson-done__actions button{flex:1}@media (max-width: 599px){.lesson-steps{width:100%;margin-left:0;justify-content:space-between}.lesson-prompt{font-size:22px}.lesson-word__en{font-size:34px}}.lesson-panel--wide{max-width:760px;width:100%;margin:0 auto}.lesson-art-box{display:flex;justify-content:center}.lesson-art{display:block;object-fit:contain;border-radius:var(--r-md);background:var(--surface)}.lesson-art--md{width:min(220px,50vw);height:min(220px,50vw)}.lesson-art--sm{width:100%;max-width:140px;aspect-ratio:1}.lesson-art--emoji{display:grid;place-items:center;color:var(--brand-ink);font-size:56px;font-weight:900;background:var(--brand-soft)}.lesson-art--emoji.lesson-art--md{font-size:88px}.lesson-passage{margin:0;padding:14px 18px;border-left:6px solid var(--sky);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:19px;line-height:1.6;white-space:pre-line}.lesson-prompt__tag{display:block;margin-bottom:4px;color:var(--text-muted);font-size:15px}.lesson-options--pictures .lesson-option{display:flex;flex-direction:column;align-items:center;gap:6px;min-height:150px}.lesson-tokens,.lesson-built{display:flex;flex-wrap:wrap;gap:8px;margin:0}.lesson-built{min-height:64px;padding:10px 12px;border:2px dashed var(--edge);border-radius:var(--r-md);background:var(--surface);align-items:center;color:var(--text);font-size:22px;font-weight:800}.lesson-built__empty{color:var(--text-muted);font-size:15px;font-weight:700}.lesson-token{min-height:48px;padding:8px 16px;border:2px solid var(--edge);border-radius:var(--r-sm);background:var(--surface);color:var(--text);font-size:20px;font-weight:800;box-shadow:0 3px 0 var(--edge);cursor:pointer}.lesson-token:disabled{opacity:.35;cursor:default}.lesson-token--right,.lesson-token--reveal{border-color:var(--ok);background:var(--ok-soft);color:var(--ok-ink);opacity:1!important}.lesson-token--wrong{border-color:var(--oops);background:var(--oops-soft);color:var(--oops-ink)}.lesson-spell{display:flex;gap:10px}.lesson-spell input{flex:1;min-width:0;min-height:58px;padding:8px 16px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:24px;font-weight:800}.lesson-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.lesson-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);box-shadow:0 3px 0 var(--edge);cursor:pointer}.lesson-card--seen{border-color:var(--ok)}.lesson-card--now{border-color:var(--brand);box-shadow:0 3px 0 var(--brand-deep)}.lesson-card__word{color:var(--text);font-size:17px;font-weight:800}.lesson-examples{display:grid;gap:8px;margin:0;padding:0;list-style:none}.lesson-example{display:flex;align-items:baseline;gap:10px;width:100%;padding:12px 16px;border:0;border-radius:var(--r-md);background:var(--surface);box-shadow:0 3px 0 var(--edge);color:var(--text);font-size:20px;font-weight:700;text-align:left;cursor:pointer}.lesson-example mark,.lesson-prompt mark{padding:0 3px;border-radius:4px;background:var(--sun-soft);color:var(--sun-ink);font-weight:900}.lesson-dialogue__title{margin:0;color:var(--text);font-size:20px}.lesson-dialogue{display:grid;gap:10px;margin:0;padding:0;list-style:none}.lesson-line{display:flex}.lesson-line--kid{justify-content:flex-end}.lesson-line__bubble{display:flex;flex-direction:column;gap:2px;max-width:85%;padding:10px 14px;border:0;border-radius:var(--r-md);background:var(--surface);box-shadow:0 3px 0 var(--edge);color:var(--text);text-align:left;cursor:pointer}.lesson-line--kid .lesson-line__bubble{background:var(--brand-soft)}.lesson-line__bubble strong{color:var(--brand-ink);font-size:14px}.lesson-line__bubble span{font-size:20px;font-weight:700}.lesson-line__bubble small{color:var(--text-muted);font-size:14px}.lesson-frames{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.lesson-frames li{padding:8px 14px;border-radius:999px;background:var(--sun-soft);color:var(--sun-ink);font-size:18px;font-weight:800}.lesson-use-input{min-height:110px;padding:12px 16px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);font:inherit;font-size:22px;resize:vertical}.lesson-link{align-self:flex-start;min-height:44px;padding:0;border:0;background:none;color:var(--brand-ink);font-size:16px;font-weight:800;text-decoration:underline;cursor:pointer}.lessons-map{max-width:860px;margin:0 auto;padding:16px;display:flex;flex-direction:column;gap:16px}.lessons-map__head h1{margin:0;color:var(--text)}.lessons-unit h2{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin:0;color:var(--text);font-size:20px}.lessons-unit h2 span{color:var(--text-muted);font-size:15px}.lessons-unit__story{margin:6px 0 12px;color:var(--text-muted);font-size:15px;line-height:1.6}.lessons-unit__list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.lessons-item{display:flex;align-items:center;gap:12px;min-height:56px;padding:10px 14px;border:2px solid var(--edge);border-radius:var(--r-md);background:var(--surface);color:var(--text);text-decoration:none}.lessons-item--done{border-color:var(--ok);background:var(--ok-soft)}.lessons-item--next{border-color:var(--brand);box-shadow:0 3px 0 var(--brand-deep)}.lessons-item__kind{padding:3px 10px;border-radius:999px;font-size:13px;font-weight:800}.lessons-item__kind--vocab{background:var(--k-vocab-soft);color:var(--k-vocab)}.lessons-item__kind--grammar{background:var(--k-grammar-soft);color:var(--ok-ink)}.lessons-item__kind--talk{background:var(--k-speaking-soft);color:var(--k-speaking)}.lessons-item__title{flex:1;font-size:18px;font-weight:800}.lessons-item__state{color:var(--brand-ink);font-weight:900}.lessons-item--done .lessons-item__state{color:var(--ok-ink)}
