:root{--accent: #6366f1;--accent-strong: #4f46e5;--accent-soft: #eef0ff;--background: #fbfbfd;--card: #ffffff;--line: rgba(15, 23, 42, .075);--line-strong: rgba(15, 23, 42, .14);--ink: #0f172a;--ink-2: #475569;--ink-3: #8b98aa;--learning: #f59e0b;--learning-bg: #fef6e7;--learning-ink: #a95208;--review: #f43f5e;--review-bg: #fef2f4;--review-ink: #be123c;--mastered: #10b981;--mastered-bg: #ecfdf5;--mastered-ink: #047857;--danger: #b91c1c;--radius: 18px;--radius-small: 12px;--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 10px 28px -16px rgba(15, 23, 42, .2);--shadow-large: 0 2px 5px rgba(15, 23, 42, .04), 0 28px 54px -26px rgba(15, 23, 42, .3);--sidebar-width: 246px;--page-width: 940px}::selection{color:var(--accent-strong);background:#dfe1ff}:focus-visible{outline:3px solid rgba(99,102,241,.5);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.muted{color:var(--ink-2)}.eyebrow{display:block;color:var(--ink-3);font-size:.72rem;font-weight:750;letter-spacing:.09em;line-height:1.35;text-transform:uppercase}.button{display:inline-flex;min-height:44px;align-items:center;justify-content:center;gap:.5rem;padding:.65rem 1.15rem;border:1px solid transparent;border-radius:12px;background:transparent;color:var(--ink);cursor:pointer;font-weight:680;line-height:1.2;transition:transform .12s ease,background-color .16s ease,border-color .16s ease,box-shadow .16s ease}.button:active:not(:disabled){transform:translateY(1px)}.button:disabled{cursor:not-allowed;opacity:.58}.button-primary{color:#fff;background:var(--accent);box-shadow:0 2px 4px #4f46e533,0 12px 24px -14px #4f46e5e6}.button-primary:hover:not(:disabled){background:var(--accent-strong)}.button-ghost{border-color:var(--line-strong);background:#fff;color:var(--ink-2)}.button-ghost:hover:not(:disabled){border-color:#b9c1cd;background:#f8f9fc;color:var(--ink)}.button-quiet{color:var(--ink-2)}.button-quiet:hover:not(:disabled){background:#f2f3f7;color:var(--ink)}.button-saved{border-color:#a7f3d0;background:var(--mastered-bg);color:var(--mastered-ink)}.button-large{min-height:52px;padding:.82rem 1.35rem;font-size:1rem}.button-small{min-height:35px;padding:.45rem .8rem;border-radius:9px;font-size:.8rem}.button-block{width:100%}.text-button{padding:0;background:transparent;color:var(--accent-strong);cursor:pointer;font-weight:680}.text-button:hover{text-decoration:underline}.icon-button{display:grid;width:40px;height:40px;place-items:center;border-radius:10px;background:transparent;cursor:pointer}.card{padding:1.5rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow)}.app-shell{display:flex;min-height:100vh;background:var(--background)}.desktop-sidebar{position:sticky;top:0;display:flex;width:var(--sidebar-width);height:100vh;flex:0 0 var(--sidebar-width);flex-direction:column;padding:1.65rem 1rem;border-right:1px solid var(--line);background:#fff;z-index:30}.brand{display:inline-flex;align-items:center;gap:.62rem;padding:0 .6rem}.brand-mark{display:grid;width:31px;height:31px;flex:0 0 31px;place-items:center;border-radius:9px;background:linear-gradient(135deg,var(--accent),#8b5cf6);color:#fff;box-shadow:0 6px 14px -6px #6366f1cc}.brand-name{font-size:1.03rem;font-weight:760;letter-spacing:-.025em}.brand-tag{padding:.05rem .34rem;border-radius:5px;background:var(--accent-soft);color:var(--accent-strong);font-size:.63rem;font-weight:800;letter-spacing:.07em}.brand-compact{display:none;padding:0}.primary-nav{display:flex;flex-direction:column;gap:.15rem;margin-top:1.55rem}.nav-link{display:flex;min-height:42px;align-items:center;gap:.7rem;padding:.55rem .7rem;border-radius:10px;color:var(--ink-2);font-size:.9rem;font-weight:560;transition:background-color .16s ease,color .16s ease}.nav-link:hover{background:#f6f7fb;color:var(--ink)}.nav-link.is-active{background:var(--accent-soft);color:var(--accent-strong);font-weight:680}.nav-count{min-width:20px;margin-left:auto;padding:0 .38rem;border-radius:999px;background:var(--accent);color:#fff;font-size:.7rem;font-variant-numeric:tabular-nums;line-height:20px;text-align:center}.sidebar-footer{display:flex;flex-direction:column;gap:.8rem;margin-top:auto;padding:0 .55rem}.sidebar-footer>p{color:var(--ink-3);font-size:.69rem;line-height:1.55}.account-chip{display:flex;min-width:0;align-items:center;gap:.6rem;padding:.48rem;border-radius:10px}.account-chip:hover{background:#f6f7fb}.account-chip>span:last-child{display:flex;min-width:0;flex-direction:column}.account-chip strong,.account-chip small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-chip strong{font-size:.78rem}.account-chip small{color:var(--ink-3);font-size:.67rem}.avatar{display:grid;width:34px;height:34px;flex:0 0 34px;place-items:center;border:1px solid #d9dcff;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong);font-size:.8rem;font-weight:800}.app-main{min-width:0;flex:1}.topbar{position:sticky;top:0;z-index:25;padding:.76rem 1.75rem;border-bottom:1px solid var(--line);background:#fbfbfddb;-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px)}.topbar-inner{display:flex;max-width:var(--page-width);align-items:center;gap:.8rem;margin:0 auto}.topbar-search{min-width:0;flex:1}.topbar-account{border-radius:50%}.topbar-signin{min-height:40px;white-space:nowrap}.app-canvas{padding:1.9rem 1.75rem 6rem}.page-wrap{width:100%;max-width:var(--page-width);margin:0 auto;animation:page-in .24s cubic-bezier(.22,.8,.3,1) both}.narrow-page,.detail-page{max-width:780px}@keyframes page-in{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}.mobile-nav{display:none}.offline-banner,.global-error{display:flex;max-width:var(--page-width);align-items:center;gap:.55rem;margin:.8rem auto 0;padding:.65rem .85rem;border-radius:10px;font-size:.82rem}.offline-banner{border:1px solid #fde68a;background:#fffbeb;color:#92400e}.global-error{justify-content:space-between;border:1px solid #fecaca;background:#fff7f7;color:var(--danger)}.global-error button{padding:.25rem;background:transparent;color:inherit;cursor:pointer}.search-form{position:relative;display:flex;align-items:center;gap:.65rem;border:1px solid var(--line-strong);background:#fff;color:var(--ink-3);transition:border-color .18s ease,box-shadow .18s ease}.search-form:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px #6366f11f}.search-form-compact{min-height:42px;padding:.38rem .45rem .38rem .85rem;border-radius:999px}.search-form-hero{min-height:68px;padding:.65rem .72rem .65rem 1.05rem;border-radius:17px;box-shadow:var(--shadow)}.search-form input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:var(--ink)}.search-form-hero input{font-size:1.08rem}.search-form input::placeholder{color:#99a4b4}.search-submit{display:grid;width:38px;height:38px;flex:0 0 38px;place-items:center;border-radius:11px;background:var(--accent);color:#fff;cursor:pointer}.search-form-compact .search-submit{width:32px;height:32px;flex-basis:32px;border-radius:50%}.search-submit:disabled{cursor:default;opacity:.45}.search-error{position:absolute;top:calc(100% + .45rem);left:.6rem;z-index:10;max-width:calc(100% - 1.2rem);padding:.42rem .65rem;border:1px solid #fecaca;border-radius:8px;background:#fff;color:var(--danger);box-shadow:var(--shadow);font-size:.75rem}.turnstile-slot{position:absolute;top:calc(100% + .45rem);right:0;z-index:50;width:min(300px,calc(100vw - 2rem))}.turnstile-slot:empty{display:none}.button-spinner,.sample-loading{width:17px;height:17px;border:2px solid rgba(255,255,255,.42);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.hero{padding:1.4rem 0 2.9rem;text-align:center}.hero-pill{display:inline-flex;align-items:center;gap:.45rem;padding:.28rem .76rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-size:.76rem;font-weight:680}.hero h1{margin-top:1.05rem;font-size:clamp(2.15rem,5vw,3.3rem);font-weight:780;letter-spacing:-.047em;line-height:1.08}.hero>p{max-width:585px;margin:.9rem auto 0;color:var(--ink-2);font-size:1.03rem;line-height:1.65}.hero-search{max-width:670px;margin:1.8rem auto 0;text-align:left}.hero .search-hint{margin-top:.65rem;color:var(--ink-3);font-size:.77rem}.search-hint span{color:var(--ink-2);font-weight:650}.sample-section{position:relative;padding:.2rem 0 2.8rem}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:.85rem}.section-heading h2{margin-top:.12rem;font-size:1.05rem;font-weight:720;letter-spacing:-.02em}.section-heading>a{color:var(--accent-strong);font-size:.82rem;font-weight:650}.centered-heading{justify-content:center;text-align:center}.sample-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.85rem}.sample-card{position:relative;overflow:hidden;padding:0;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:var(--shadow);cursor:pointer;text-align:left;transition:transform .15s ease,box-shadow .18s ease,border-color .18s ease}.sample-card:hover:not(:disabled){transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow-large)}.sample-card:disabled{cursor:wait}.sample-visual{width:100%;aspect-ratio:4 / 3;border-radius:0}.sample-copy{display:flex;flex-direction:column;padding:.78rem .9rem .9rem}.sample-copy strong{font-size:1.02rem;letter-spacing:-.02em}.sample-copy small{overflow:hidden;color:var(--ink-3);font-size:.75rem;text-overflow:ellipsis;white-space:nowrap}.sample-loading{position:absolute;top:.75rem;right:.75rem}.returning-intro{display:grid;grid-template-columns:minmax(230px,.78fr) minmax(340px,1.22fr);align-items:center;gap:2rem;margin-bottom:1.4rem}.returning-intro h1,.page-heading h1{margin-top:.15rem;font-size:clamp(1.7rem,3.6vw,2.2rem);font-weight:770;letter-spacing:-.038em;line-height:1.14}.dashboard-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.85rem;margin-bottom:1.65rem}.weekly-card,.review-card{display:flex;min-height:245px;flex-direction:column}.weekly-card h2{margin:.35rem 0 1.15rem;font-size:1.45rem;font-weight:690;letter-spacing:-.03em}.weekly-card h2 strong{font-size:2rem}.progress-track,.review-progress{overflow:hidden;height:8px;border-radius:999px;background:#eceef4}.progress-track>span,.review-progress>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#8b5cf6);transition:width .7s cubic-bezier(.22,.8,.3,1)}.goal-caption{display:flex;justify-content:space-between;margin-top:.55rem;color:var(--ink-2);font-size:.78rem}.weekly-card>p,.review-card>p{margin-top:auto;color:var(--ink-3);font-size:.82rem;line-height:1.55}.review-card{border-color:#6366f138;background:linear-gradient(150deg,#f7f7ff,#fff)}.review-heading{display:flex;align-items:flex-start;gap:.85rem}.review-heading h2{margin-top:.2rem;font-size:1.2rem;letter-spacing:-.025em}.review-icon{display:grid;width:47px;height:47px;flex:0 0 47px;place-items:center;border:1px solid rgba(99,102,241,.24);border-radius:13px;background:#fff;color:var(--accent-strong)}.review-card .button{margin-top:1rem}.section-block{margin-bottom:1.7rem}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem}.stat-card{display:flex;flex-direction:column;padding:.95rem 1rem;border:1px solid var(--line);border-radius:var(--radius-small);background:#fff}.stat-card strong{font-size:1.55rem;font-variant-numeric:tabular-nums;letter-spacing:-.035em;line-height:1.2}.stat-card span{margin-top:.1rem;color:var(--ink-3);font-size:.73rem}.stat-learning strong{color:var(--learning-ink)}.stat-review strong{color:var(--review-ink)}.stat-mastered strong{color:var(--mastered-ink)}.history-list{display:flex;flex-direction:column;gap:.48rem}.history-row{display:flex;min-width:0;align-items:center;gap:.7rem;padding:.55rem .7rem;border:1px solid var(--line);border-radius:var(--radius-small);background:#fff}.history-open{display:flex;min-width:0;flex:1;align-items:center;gap:.75rem;border-radius:8px}.history-open:hover strong{color:var(--accent-strong)}.visual-thumb{width:54px;height:54px;flex:0 0 54px;border-radius:10px}.history-copy{display:flex;min-width:0;flex:1;flex-direction:column}.history-copy strong{font-size:.94rem;letter-spacing:-.015em}.history-copy small{overflow:hidden;color:var(--ink-3);font-size:.75rem;text-overflow:ellipsis;white-space:nowrap}.history-open time{color:var(--ink-3);font-size:.7rem;white-space:nowrap}.add-button,.saved-tag{display:inline-flex;min-height:34px;align-items:center;gap:.25rem;padding:.35rem .7rem;border-radius:9px;font-size:.78rem;font-weight:700;white-space:nowrap}.add-button{border:1px solid var(--accent);background:#fff;color:var(--accent-strong);cursor:pointer}.add-button:hover:not(:disabled){background:var(--accent);color:#fff}.saved-tag{background:var(--mastered-bg);color:var(--mastered-ink)}.explanation-note{display:flex;align-items:flex-start;gap:.65rem;margin-top:.75rem;padding:.75rem .9rem;border-radius:11px;background:#f4f5f9;color:var(--ink-2);font-size:.76rem;line-height:1.55}.explanation-note svg{flex:0 0 auto;margin-top:.1rem}.word-visual,.visual-placeholder{display:block;object-fit:cover;border:1px solid var(--line);background:#f1f2f7}.visual-placeholder{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.4rem;color:var(--ink-3);font-size:.74rem}.page-state,.empty-state{display:flex;max-width:520px;min-height:360px;align-items:center;justify-content:center;flex-direction:column;margin:3rem auto;padding:2rem;text-align:center}.page-state h2,.empty-state h2{margin-top:.9rem;font-size:1.2rem;letter-spacing:-.025em}.page-state p,.empty-state p{max-width:430px;margin:.45rem 0 1.1rem;color:var(--ink-3);font-size:.86rem;line-height:1.6}.pulse-mark,.empty-state-mark{display:grid;width:61px;height:61px;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong)}.pulse-mark{animation:gentle-pulse 1.6s ease-in-out infinite}@keyframes gentle-pulse{50%{transform:scale(1.05);box-shadow:0 0 0 14px #6366f100}}.skeleton-lines{display:flex;width:260px;flex-direction:column;gap:.55rem;margin-top:1.2rem}.skeleton-lines span{height:7px;border-radius:999px;background:linear-gradient(90deg,#eceef4 25%,#f7f7fa,#eceef4 75%);background-size:200% 100%;animation:shimmer 1.25s linear infinite}.skeleton-lines span:last-child{width:70%;margin:auto}@keyframes shimmer{to{background-position:-200% 0}}.back-link{display:inline-flex;align-items:center;gap:.3rem;margin-bottom:.8rem;padding:.3rem 0;color:var(--ink-2);font-size:.82rem;font-weight:630}.back-link:hover{color:var(--accent-strong)}.detail-card{display:flex;flex-direction:column;gap:1.55rem;padding:1.8rem}.word-header h1{font-size:clamp(2rem,5vw,3rem);font-weight:780;letter-spacing:-.045em;line-height:1.05}.word-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.55rem;margin-top:.6rem}.phonetic{color:var(--ink-3);font-size:.93rem}.part-of-speech{padding:.04rem .48rem;border:1px solid var(--line-strong);border-radius:6px;color:var(--ink-2);font-size:.72rem;font-style:italic}.detail-visual{width:100%;max-height:390px;aspect-ratio:16 / 10;border-radius:14px}.visual-caption{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;color:var(--ink-3);font-size:.7rem}.visual-caption>span{display:inline-flex;align-items:center;gap:.28rem;padding:.12rem .45rem;border-radius:6px;background:#f1f2f6;font-weight:680}.definition-en{font-size:1.18rem;font-weight:590;letter-spacing:-.015em;line-height:1.5}.definition-ja{margin-top:.22rem;color:var(--ink-2);font-size:.98rem}.example-block{display:flex;flex-direction:column;gap:.45rem}.example-en{padding:.12rem 0 .12rem .95rem;border-left:3px solid var(--accent);font-size:.98rem;line-height:1.65}.example-en strong{color:var(--accent-strong)}.example-ja{padding-left:1.15rem;color:var(--ink-3);font-size:.82rem}.feedback-block{padding-top:1.05rem;border-top:1px solid var(--line)}.feedback-block>p:first-child{font-size:.84rem;font-weight:650}.feedback-actions{display:flex;gap:.55rem;margin-top:.65rem}.feedback-button{display:inline-flex;min-height:38px;align-items:center;gap:.4rem;padding:.45rem .8rem;border:1px solid var(--line-strong);border-radius:10px;background:#fff;color:var(--ink-2);cursor:pointer;font-size:.8rem;font-weight:600}.feedback-button:hover,.feedback-button.is-selected{border-color:#6366f166;background:var(--accent-soft);color:var(--accent-strong)}.feedback-thanks{margin-top:.5rem;color:var(--mastered-ink);font-size:.75rem}.detail-cta,.known-word-actions{display:flex;flex-direction:column;gap:.55rem;margin-top:1rem;text-align:center}.detail-cta>p{color:var(--ink-3);font-size:.8rem}.detail-cta>small{color:var(--ink-3);font-size:.7rem}.saved-panel{display:flex;flex-direction:column;gap:1.1rem;margin-top:1rem;padding:1.3rem;border:1px solid #a7f3d0;border-radius:var(--radius);background:linear-gradient(155deg,#f2fcf7,#fff 72%);animation:page-in .3s ease both}.saved-panel-heading{display:flex;align-items:flex-start;gap:.75rem}.saved-panel-heading h2{font-size:1rem;letter-spacing:-.015em}.saved-panel-heading p{margin-top:.18rem;color:var(--ink-2);font-size:.8rem}.saved-check{display:grid;width:36px;height:36px;flex:0 0 36px;place-items:center;border-radius:50%;background:var(--mastered-bg);color:var(--mastered-ink)}.learning-journey{display:flex;align-items:center;flex-wrap:wrap;gap:.45rem;color:var(--ink-3);font-size:.74rem;font-weight:650}.learning-journey>span{display:inline-flex;align-items:center;gap:.2rem}.learning-journey .is-done{color:var(--mastered-ink)}.learning-journey .is-current{padding:.2rem .55rem;border-radius:999px;background:var(--learning-bg);color:var(--learning-ink)}.learning-journey i{opacity:.55;font-style:normal}.saved-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.status-badge{display:inline-flex;width:max-content;align-items:center;gap:.35rem;padding:.18rem .58rem;border-radius:999px;font-size:.69rem;font-weight:700;white-space:nowrap}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.status-learning{background:var(--learning-bg);color:var(--learning-ink)}.status-review_soon{background:var(--review-bg);color:var(--review-ink)}.status-mastered{background:var(--mastered-bg);color:var(--mastered-ink)}.page-heading{margin-bottom:1.25rem}.page-heading>p{max-width:570px;margin-top:.35rem;color:var(--ink-3);font-size:.86rem}.vocabulary-stats{margin-bottom:1.05rem}.filter-row{display:flex;flex-wrap:wrap;gap:.42rem;margin-bottom:.85rem}.filter-button{min-height:34px;padding:.35rem .8rem;border:1px solid var(--line-strong);border-radius:999px;background:#fff;color:var(--ink-2);cursor:pointer;font-size:.77rem;font-weight:620}.filter-button:hover{background:#f6f7fb}.filter-button.is-active{border-color:var(--ink);background:var(--ink);color:#fff}.vocabulary-list{display:flex;flex-direction:column;gap:.65rem}.vocabulary-card{display:flex;align-items:center;gap:.9rem;padding:.85rem;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow);transition:transform .15s ease,border-color .16s ease,box-shadow .18s ease}.vocabulary-card:hover{transform:translateY(-2px);border-color:var(--line-strong);box-shadow:var(--shadow-large)}.vocabulary-visual{width:104px;height:78px;flex:0 0 104px;border-radius:11px}.vocabulary-card-body{display:flex;min-width:0;flex:1;flex-direction:column;gap:.42rem}.vocabulary-card-top{display:flex;align-items:center;flex-wrap:wrap;gap:.55rem}.vocabulary-card-top>strong{font-size:1.1rem;letter-spacing:-.025em}.vocabulary-meaning{overflow:hidden;color:var(--ink-2);font-size:.81rem;text-overflow:ellipsis;white-space:nowrap}.vocabulary-meta{display:flex;flex-wrap:wrap;gap:1.2rem;color:var(--ink-3);font-size:.7rem}.vocabulary-meta b{color:var(--ink-2)}.inline-empty{padding:3rem 1rem;border:1px dashed var(--line-strong);border-radius:var(--radius);text-align:center}.inline-empty h2{font-size:1rem}.inline-empty p{margin-top:.35rem;color:var(--ink-3);font-size:.8rem}.review-intro-page{max-width:650px}.review-intro-card{display:flex;align-items:center;flex-direction:column;gap:.75rem;padding:2rem;text-align:center}.review-intro-card h2{max-width:480px;font-size:1.28rem;letter-spacing:-.025em}.review-intro-card p{max-width:470px;color:var(--ink-2);font-size:.86rem;line-height:1.6}.review-intro-card .button-primary{margin-top:.35rem}.review-focus-wrap{width:100%;max-width:650px;margin:0 auto;padding-top:.15rem;animation:page-in .22s ease both}.review-progress-row{display:grid;grid-template-columns:38px 1fr 44px;align-items:center;gap:.75rem;margin-bottom:1.25rem}.review-progress-row>span{color:var(--ink-3);font-size:.73rem;font-variant-numeric:tabular-nums;text-align:right}.review-progress{height:5px}.close-button{display:grid;width:36px;height:36px;place-items:center;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--ink-2)}.review-question-heading{margin-bottom:.8rem}.review-question-heading h1{font-size:1.17rem;letter-spacing:-.02em}.review-question-heading p{margin-top:.15rem;color:var(--ink-3);font-size:.78rem}.question-card{display:flex;flex-direction:column;gap:1rem}.question-card h2{font-size:1.05rem;letter-spacing:-.015em}.question-visual{width:100%;max-height:320px;aspect-ratio:4 / 3;border:1px solid var(--line);border-radius:13px;background:#f1f2f7;object-fit:cover}.question-word{padding:2.2rem 1rem;color:var(--accent-strong);font-size:clamp(2rem,6vw,3rem);font-weight:780;letter-spacing:-.04em;text-align:center}.choice-list{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;margin-top:.8rem}.choice-button{display:flex;min-height:58px;align-items:center;gap:.7rem;padding:.65rem .8rem;border:1px solid var(--line-strong);border-radius:12px;background:#fff;cursor:pointer;text-align:left;transition:border-color .15s ease,background-color .15s ease,transform .12s ease}.choice-button:hover:not(:disabled){transform:translateY(-1px);border-color:var(--accent);background:#fafaff}.choice-button:disabled{cursor:wait;opacity:.62}.choice-button>span{display:grid;width:28px;height:28px;flex:0 0 28px;place-items:center;border-radius:8px;background:#f1f2f6;color:var(--ink-2);font-size:.75rem;font-weight:750}.choice-button strong{font-size:.88rem;font-weight:620}.keyboard-hint{margin-top:.7rem;color:var(--ink-3);font-size:.7rem;text-align:center}.inline-error{margin:.7rem 0;padding:.6rem .75rem;border:1px solid #fecaca;border-radius:9px;background:#fff7f7;color:var(--danger);font-size:.78rem}.answer-card{display:flex;flex-direction:column;align-items:flex-start;gap:.85rem;padding:1.8rem}.answer-card.is-correct{border-color:#a7f3d0}.answer-card.is-incorrect{border-color:#fecdd3}.answer-mark{display:grid;width:48px;height:48px;place-items:center;border-radius:50%;background:var(--mastered-bg);color:var(--mastered-ink)}.answer-card.is-incorrect .answer-mark{background:var(--review-bg);color:var(--review-ink)}.answer-card h1{font-size:1.35rem;letter-spacing:-.03em}.answer-visual{width:100%;max-height:220px;aspect-ratio:16 / 9;border-radius:12px}.answer-explanation strong{font-size:1.5rem;letter-spacing:-.03em}.answer-explanation p{margin-top:.25rem;color:var(--ink-2);line-height:1.55}.answer-explanation small{display:block;margin-top:.3rem;color:var(--ink-3)}.review-next{margin-top:.8rem}.review-result-page{display:flex;flex-direction:column;gap:.75rem}.celebration-card{display:flex;align-items:center;flex-direction:column;padding:2rem;text-align:center;background:linear-gradient(155deg,#f7f7ff,#fff)}.celebration-mark{display:grid;width:58px;height:58px;place-items:center;margin-bottom:.8rem;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong);font-size:1.8rem}.celebration-card h1{margin-top:.22rem;font-size:1.55rem;letter-spacing:-.035em}.celebration-card p{margin-top:.3rem;color:var(--ink-3);font-size:.82rem}.result-list-card,.growth-card{display:flex;flex-direction:column;gap:.8rem}.result-list{display:flex;flex-direction:column}.result-row{display:grid;grid-template-columns:1fr 1fr auto;align-items:center;gap:.7rem;padding:.65rem 0;border-top:1px solid var(--line)}.result-row:first-child{border-top:0}.result-row>span:not(.status-badge){color:var(--ink-3);font-size:.75rem}.growth-line{display:flex;align-items:baseline;justify-content:space-between;color:var(--ink-2);font-size:.83rem}.growth-line strong{color:var(--accent-strong);font-size:1.5rem}.growth-line strong small{color:var(--ink-3);font-size:.8rem}.growth-total{padding-top:.75rem;border-top:1px solid var(--line)}.growth-total strong{color:var(--mastered-ink)}.review-result-actions{display:flex;flex-direction:column;gap:.3rem;margin-top:.2rem}.pay-intent-card{display:flex;flex-direction:column;gap:.65rem}.pay-intent-card h2{font-size:1.05rem;line-height:1.45}.pay-intent-card p{color:var(--ink-3);font-size:.76rem}.pay-intent-actions{display:flex;flex-wrap:wrap;gap:.45rem}.account-page{max-width:720px}.account-page{display:flex;flex-direction:column;gap:.85rem}.account-page .page-heading{margin-bottom:.4rem}.account-guest-card{display:flex;align-items:center;flex-direction:column;gap:.7rem;padding:2rem;text-align:center}.account-illustration{display:grid;width:62px;height:62px;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong)}.account-guest-card h2{font-size:1.2rem;letter-spacing:-.025em}.account-guest-card p{max-width:500px;color:var(--ink-2);font-size:.85rem;line-height:1.6}.account-auth-actions{display:flex;gap:.6rem;margin-top:.35rem}.account-profile-card{display:flex;align-items:center;gap:.9rem}.avatar-large{width:52px;height:52px;flex-basis:52px;font-size:1rem}.account-profile-card h2{margin-top:.15rem;font-size:1rem}.account-profile-card p{margin-top:.12rem;color:var(--ink-3);font-size:.77rem}.account-section{display:flex;flex-direction:column;gap:1rem}.account-section-heading{display:flex;align-items:flex-start;gap:.75rem}.settings-icon{display:grid;width:40px;height:40px;flex:0 0 40px;place-items:center;border-radius:11px;background:#f3f4f8;color:var(--ink-2)}.account-section-heading h2{font-size:1rem}.account-section-heading p{margin-top:.15rem;color:var(--ink-3);font-size:.78rem}.privacy-note{display:flex;flex-direction:column;gap:.1rem;padding:.8rem;border-radius:10px;background:#f6f7fa}.privacy-note strong{font-size:.8rem}.privacy-note span{color:var(--ink-3);font-size:.74rem}.signout-button{align-self:flex-start}.push-optin{display:flex;align-items:center;gap:.7rem;padding:.8rem;border:1px solid var(--line);border-radius:12px;background:#fafaff}.push-icon{display:grid;width:38px;height:38px;flex:0 0 38px;place-items:center;border-radius:10px;background:var(--accent-soft);color:var(--accent-strong)}.push-copy,.push-optin>span:nth-child(2){display:flex;min-width:0;flex:1;flex-direction:column}.push-optin strong{font-size:.8rem}.push-optin small{color:var(--ink-3);font-size:.7rem;line-height:1.45}.push-optin.is-enabled{border-color:#a7f3d0;background:#f5fdf9}.push-optin.is-enabled .push-icon{background:var(--mastered-bg);color:var(--mastered-ink)}.push-optin.is-compact{border-top:1px solid #c9efdc;border-right:0;border-bottom:0;border-left:0;border-radius:0;background:transparent;padding:.8rem 0 0}.notice-text{font-size:.78rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:1rem;background:#0f172a7a;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);animation:fade-in .16s ease both}@keyframes fade-in{0%{opacity:0}}.auth-modal{position:relative;width:min(100%,440px);max-height:calc(100vh - 2rem);overflow-y:auto;padding:1.8rem;border:1px solid rgba(255,255,255,.7);border-radius:20px;background:#fff;box-shadow:0 30px 80px -30px #0f172a8c;animation:modal-in .2s cubic-bezier(.22,.8,.3,1) both}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.985)}}.modal-close{position:absolute;top:.75rem;right:.75rem;color:var(--ink-3);font-size:1.35rem}.auth-modal h2{margin-top:.25rem;padding-right:2rem;font-size:1.45rem;letter-spacing:-.035em}.auth-modal>p{margin-top:.4rem;font-size:.83rem;line-height:1.55}.auth-form{display:flex;flex-direction:column;margin-top:1.25rem}.auth-form label{margin:.65rem 0 .32rem;color:var(--ink-2);font-size:.76rem;font-weight:680}.auth-form input{width:100%;height:46px;padding:0 .8rem;border:1px solid var(--line-strong);border-radius:10px;outline:0;background:#fff}.auth-form input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #6366f11c}.auth-form .button{margin-top:1rem}.form-error{color:var(--danger)!important;font-size:.74rem!important}.auth-switch{text-align:center}@media (max-width: 920px){.desktop-sidebar{display:none}.brand-compact{display:inline-flex}.topbar-search{margin-left:.4rem}.app-canvas{padding-bottom:calc(6rem + env(safe-area-inset-bottom))}.mobile-nav{position:fixed;right:0;bottom:0;left:0;z-index:40;display:grid;grid-template-columns:repeat(4,1fr);padding:.4rem max(.35rem,env(safe-area-inset-right)) calc(.35rem + env(safe-area-inset-bottom)) max(.35rem,env(safe-area-inset-left));border-top:1px solid var(--line);background:#fffffff2;-webkit-backdrop-filter:saturate(180%) blur(16px);backdrop-filter:saturate(180%) blur(16px)}.mobile-nav-link{display:flex;min-height:48px;align-items:center;justify-content:center;flex-direction:column;gap:.12rem;border-radius:9px;color:var(--ink-3);font-size:.64rem;font-weight:630}.mobile-nav-link.is-active{color:var(--accent-strong)}.mobile-icon-wrap{position:relative}.mobile-count{position:absolute;top:-6px;right:-10px;display:grid;min-width:16px;height:16px;place-items:center;padding:0 .25rem;border:2px solid white;border-radius:999px;background:var(--accent);color:#fff;font-size:.55rem}}@media (max-width: 700px){.topbar{padding:.65rem 1rem}.topbar-search{display:none}.topbar-inner{justify-content:space-between}.app-canvas{padding:1.35rem 1rem calc(6rem + env(safe-area-inset-bottom))}.offline-banner,.global-error{margin-right:1rem;margin-left:1rem}.hero{padding-top:.8rem}.hero h1{font-size:clamp(2rem,10vw,2.75rem)}.hero>p{font-size:.92rem}.sample-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.sample-copy{padding:.6rem}.sample-copy strong{font-size:.85rem}.sample-copy small{font-size:.66rem}.returning-intro{grid-template-columns:1fr;gap:1rem}.dashboard-grid{grid-template-columns:1fr}.weekly-card,.review-card{min-height:220px}.stats-grid{grid-template-columns:repeat(2,1fr)}.history-open time{display:none}.detail-card{padding:1.15rem;gap:1.25rem}.detail-visual{aspect-ratio:4 / 3}.saved-actions,.choice-list{grid-template-columns:1fr}.vocabulary-visual{width:82px;height:72px;flex-basis:82px}.vocabulary-meta{gap:.6rem}.result-row{grid-template-columns:1fr auto}.result-row>span:not(.status-badge){grid-column:1;grid-row:2}.result-row .status-badge{grid-column:2;grid-row:1 / 3}}@media (max-width: 430px){.brand-name{font-size:.95rem}.topbar-signin{padding-right:.55rem;padding-left:.55rem;font-size:.8rem}.sample-grid{margin-right:-1rem;margin-left:-1rem;padding:0 1rem .5rem;overflow-x:auto;grid-template-columns:repeat(3,minmax(190px,72vw));scroll-snap-type:x mandatory}.sample-card{scroll-snap-align:center}.history-row{gap:.45rem;padding:.5rem}.visual-thumb{width:46px;height:46px;flex-basis:46px}.history-copy small{max-width:128px}.add-button,.saved-tag{padding:.33rem .52rem}.visual-caption{align-items:flex-start;flex-direction:column;gap:.2rem}.feedback-actions{display:grid;grid-template-columns:1fr 1fr}.feedback-button{justify-content:center}.vocabulary-card{align-items:flex-start}.vocabulary-visual{width:72px;height:72px;flex-basis:72px}.vocabulary-meta{flex-direction:column;gap:.12rem}.account-auth-actions{width:100%;flex-direction:column}.push-optin:not(.is-compact){align-items:flex-start;flex-wrap:wrap}.push-optin:not(.is-compact) .button{width:100%}.pay-intent-actions .button{flex:1}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans JP,Meiryo,sans-serif;color:#0f172a;background:#fbfbfd;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{min-width:320px;min-height:100%;background:#fbfbfd}body{min-width:320px;min-height:100vh;margin:0;background:#fbfbfd}body,button,input{font:inherit}button,input{color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{border:0}a{color:inherit;text-decoration:none}img,svg{display:block}h1,h2,h3,p{margin:0}#root{min-height:100vh}
