@font-face{font-family:Manrope;src:url("assets/manrope-latin.woff2") format("woff2");font-style:normal;font-weight:200 800;font-display:swap}
:root{
  --ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--ease-drawer:cubic-bezier(.32,.72,0,1);
  --bg:#0b0e0c;--bg-soft:#0f1310;--sidebar:#0d110e;--surface:#121612;--surface-2:#171c18;--surface-3:#1d231e;
  --text:#f0f4ed;--text-soft:#c4ccc3;--muted:#8b968c;--faint:#667067;--line:rgba(235,244,232,.09);--line-strong:rgba(235,244,232,.16);
  --accent:#c8f56a;--accent-strong:#d8ff83;--accent-ink:#172009;--accent-dim:rgba(200,245,106,.11);
  --teal:#72d7bd;--teal-dim:rgba(114,215,189,.11);--amber:#f0b75e;--amber-dim:rgba(240,183,94,.12);--red:#ff8379;--red-dim:rgba(255,131,121,.11);
  --blue:#84aefd;--violet:#b8a1f7;--shadow:0 20px 60px rgba(0,0,0,.28);--radius:18px;--radius-sm:12px;
  --font:Manrope,"SF Pro Display","Segoe UI Variable","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
}
html[data-theme="light"]{
  --bg:#f2f4ed;--bg-soft:#ecefe6;--sidebar:#152019;--surface:#fbfcf8;--surface-2:#f4f6ef;--surface-3:#e9ede3;
  --text:#182019;--text-soft:#3f4a41;--muted:#69746b;--faint:#8a948b;--line:rgba(24,32,25,.10);--line-strong:rgba(24,32,25,.18);
  --accent:#a7d947;--accent-strong:#96c838;--accent-ink:#172009;--accent-dim:rgba(122,157,44,.13);
  --teal:#187e68;--teal-dim:rgba(24,126,104,.10);--amber:#9a6416;--amber-dim:rgba(154,100,22,.10);--red:#c84e45;--red-dim:rgba(200,78,69,.09);
  --blue:#3e68bc;--violet:#755bb0;--shadow:0 20px 55px rgba(31,43,33,.12);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{min-height:100%;background:var(--bg);-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;overscroll-behavior:none;scroll-behavior:smooth}
body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.55;transition:background-color 180ms ease,color 180ms ease}
button,input,textarea,select{font:inherit}button,a,[role="button"]{touch-action:manipulation}button,[role="button"],.nav-item,.language-tab{user-select:none;-webkit-user-select:none}
button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
button{border:0;background:none;cursor:pointer}a{color:inherit;text-decoration:none}svg{display:block}p,h1,h2,h3,h4{margin-top:0}::selection{background:var(--accent);color:var(--accent-ink)}
.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}svg:not(.svg-sprite):not([data-chart]){width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.app-shell{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh;min-height:100dvh}
.sidebar{position:sticky;top:0;height:100vh;height:100dvh;display:flex;flex-direction:column;padding:26px 18px 18px;background:var(--sidebar);border-right:1px solid var(--line);z-index:20;color:#f0f4ed}
.brand{display:flex;align-items:center;gap:11px;padding:0 8px;text-align:left;min-height:44px}
.brand-mark{position:relative;width:29px;height:29px;display:inline-flex;align-items:flex-end;gap:3px;transform:skewY(-8deg);flex:none}
.brand-mark span{display:block;width:7px;border-radius:2px;background:var(--accent)}
.brand-mark span:nth-child(1){height:15px}.brand-mark span:nth-child(2){height:25px}.brand-mark span:nth-child(3){height:20px}
.brand-word{font-size:20px;font-weight:750;letter-spacing:-.7px;line-height:1.05}.brand-word small{display:block;margin-top:5px;color:#849087;font-size:8px;font-weight:650;letter-spacing:2.1px}
.workspace-chip{display:flex;align-items:center;gap:8px;margin:24px 8px 17px;color:#96a199;font-size:11px}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px rgba(200,245,106,.08);flex:none}
.side-nav{display:grid;gap:5px}.nav-item{position:relative;display:flex;align-items:center;gap:12px;min-height:46px;padding:0 12px;border-radius:11px;color:#8f9a91;text-align:left;transition:background-color 160ms ease,color 160ms ease,transform 140ms var(--ease-out)}
.nav-item::before{content:"";position:absolute;left:-18px;top:12px;bottom:12px;width:3px;border-radius:0 4px 4px 0;background:var(--accent);transform:scaleY(0);transform-origin:center;transition:transform 180ms var(--ease-out)}
.nav-item svg{width:19px;height:19px}.nav-item span{font-size:13px;font-weight:550}.nav-item kbd{margin-left:auto;color:#5f6a61;font:10px var(--font);border:0}.nav-item.active{background:rgba(255,255,255,.065);color:#f4f7f1}.nav-item.active::before{transform:scaleY(1)}.nav-item.active svg{color:var(--accent)}
.nav-item:active{transform:scale(.98)}
.sidebar-bottom{margin-top:auto}.local-note{display:flex;align-items:flex-start;gap:9px;padding:15px 11px;margin-bottom:12px;border-top:1px solid var(--line);color:#707d73}.local-note svg{width:15px;height:15px;margin-top:3px}.local-note p{margin:0;font-size:10.5px;line-height:1.7}
.account-button{display:flex;align-items:center;gap:10px;width:100%;padding:10px 8px;border-radius:12px;text-align:left;transition:background-color 160ms ease,transform 140ms var(--ease-out)}.account-button:active{transform:scale(.98)}
.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--accent-dim);border:1px solid rgba(200,245,106,.18);color:var(--accent);font-size:10px;font-weight:750;letter-spacing:.3px;flex:none}.account-button b,.account-button small{display:block}.account-button b{font-size:11.5px;font-weight:600}.account-button small{color:#748077;font-size:9.5px;margin-top:2px}.account-button>svg{margin-left:auto;width:16px;color:#748077}
.main-shell{min-width:0}.topbar{position:sticky;top:0;z-index:15;height:76px;display:flex;align-items:center;gap:24px;padding:0 32px;background:color-mix(in srgb,var(--bg) 88%,transparent);border-bottom:1px solid var(--line);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.topbar-context{display:flex;flex-direction:column;min-width:150px}.topbar-context span{color:var(--faint);font-size:8.5px;font-weight:700;letter-spacing:1.8px}.topbar-context b{margin-top:2px;font-size:13px;font-weight:600}.mobile-brand{display:none}
.search-trigger{display:flex;align-items:center;gap:10px;width:min(360px,36vw);height:38px;margin-left:auto;padding:0 11px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--muted);text-align:left;transition:border-color 160ms ease,background-color 160ms ease,transform 140ms var(--ease-out)}.search-trigger:active{transform:scale(.985)}.search-trigger svg{width:16px}.search-trigger span{font-size:11.5px}.search-trigger kbd{margin-left:auto;padding:2px 6px;border:1px solid var(--line);border-radius:5px;color:var(--faint);font:9px var(--font)}
.topbar-actions{display:flex;align-items:center;gap:8px}.icon-button{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--muted);transition:color 150ms ease,border-color 150ms ease,transform 140ms var(--ease-out)}.icon-button svg{width:17px;height:17px}.icon-button:active{transform:scale(.94)}.top-avatar{width:36px;height:36px;border:0;cursor:pointer;transition:transform 140ms var(--ease-out)}.top-avatar:active{transform:scale(.94)}.mobile-search{display:none}
.language-strip{position:relative;z-index:10;display:flex;align-items:center;gap:20px;min-height:59px;padding:0 32px;border-bottom:1px solid var(--line);background:var(--bg)}.language-scroll{display:flex;align-items:center;gap:5px;min-width:0;overflow-x:auto;scrollbar-width:none;padding:8px 2px}.language-scroll::-webkit-scrollbar{display:none}.language-tab{position:relative;display:flex;align-items:center;gap:7px;min-height:34px;padding:0 12px;border-radius:8px;color:var(--muted);white-space:nowrap;font-size:11px;transition:background-color 160ms ease,color 160ms ease,transform 140ms var(--ease-out)}.language-tab:active{transform:scale(.96)}.language-tab .lang-code{color:var(--faint);font-size:8px;font-weight:750;letter-spacing:.8px}.language-tab.active{background:var(--surface-2);color:var(--text)}.language-tab.active::after{content:"";position:absolute;left:12px;right:12px;bottom:-9px;height:2px;border-radius:2px;background:var(--accent)}.language-tab.active .lang-code{color:var(--accent)}
.sync-state{display:flex;align-items:center;gap:7px;margin-left:auto;color:var(--faint);font-size:9.5px;white-space:nowrap}.sync-state .status-dot{width:5px;height:5px;box-shadow:none;background:var(--teal)}.sync-state.saving .status-dot{animation:pulse 700ms var(--ease-in-out) infinite alternate}
.app-main{width:100%;max-width:1540px;margin:0 auto;padding:30px 32px 56px;outline:none}.view{min-width:0}.view-enter{animation:view-enter 240ms var(--ease-out) both}
.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:25px}.page-heading .eyebrow,.eyebrow{margin-bottom:8px;color:var(--accent);font-size:9px;font-weight:750;letter-spacing:1.7px;text-transform:uppercase}.page-heading h1{margin:0;font-size:clamp(26px,3vw,36px);font-weight:600;letter-spacing:-1.35px;line-height:1.15}.page-heading p{margin:8px 0 0;color:var(--muted);font-size:12px}.page-actions{display:flex;align-items:center;gap:9px;flex:none}.date-chip{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px}.date-chip svg{width:15px;color:var(--faint)}
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 16px;border:1px solid transparent;border-radius:10px;font-size:11.5px;font-weight:650;transition:transform 140ms var(--ease-out),background-color 160ms ease,border-color 160ms ease,color 160ms ease,opacity 160ms ease}.button svg{width:16px;height:16px}.button:active{transform:scale(.97)}.button.primary{background:var(--accent);color:var(--accent-ink)}.button.secondary{border-color:var(--line);background:var(--surface);color:var(--text-soft)}.button.ghost{color:var(--muted)}.button.danger{border-color:color-mix(in srgb,var(--red) 35%,transparent);background:var(--red-dim);color:var(--red)}.button.small{min-height:34px;padding:0 11px;font-size:10px;border-radius:8px}.button[disabled]{cursor:not-allowed;opacity:.45}.text-button{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:10.5px;transition:color 150ms ease}.text-button svg{width:13px;height:13px}.text-button:hover{color:var(--text)}
.grid{display:grid;gap:18px}.today-grid{grid-template-columns:minmax(0,1.7fr) minmax(260px,.72fr)}.stack{display:grid;gap:18px}.card{position:relative;min-width:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.card-pad{padding:22px}.card-header{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:17px}.card-title{margin:0;font-size:12px;font-weight:650;letter-spacing:-.1px}.card-subtitle{margin:4px 0 0;color:var(--muted);font-size:10px}.section-label{color:var(--faint);font-size:9px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase}
.hero-card{overflow:hidden;min-height:280px;padding:28px;background:linear-gradient(125deg,var(--surface) 20%,var(--surface-2) 100%)}.hero-card::after{content:"";position:absolute;width:330px;height:330px;right:-100px;top:-135px;border:1px solid var(--line);border-radius:50%;box-shadow:0 0 0 48px color-mix(in srgb,var(--accent) 2.5%,transparent),0 0 0 96px color-mix(in srgb,var(--accent) 2%,transparent);pointer-events:none}.hero-content{position:relative;z-index:1;display:flex;flex-direction:column;height:100%}.hero-topline{display:flex;align-items:center;gap:10px}.status-badge{display:inline-flex;align-items:center;gap:6px;min-height:25px;padding:0 9px;border:1px solid var(--line);border-radius:20px;background:var(--surface-2);color:var(--muted);font-size:9px}.status-badge::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--teal)}.status-badge.attention::before{background:var(--amber)}.hero-language{margin-left:auto;color:var(--faint);font-size:10px;letter-spacing:.4px}.hero-main{display:grid;grid-template-columns:1fr auto;align-items:end;gap:20px;margin:auto 0;padding:28px 0 25px}.hero-copy small{display:block;color:var(--muted);font-size:11px;margin-bottom:8px}.hero-copy h2{margin:0 0 10px;font-size:clamp(31px,4.4vw,52px);font-weight:550;letter-spacing:-2px;line-height:1.06}.hero-copy p{max-width:510px;margin:0;color:var(--text-soft);font-size:12px;line-height:1.75}.hero-meta{display:flex;flex-wrap:wrap;gap:17px;color:var(--muted);font-size:10px}.hero-meta span{display:flex;align-items:center;gap:6px}.hero-meta svg{width:13px;height:13px}.hero-actions{display:flex;align-items:center;gap:12px}.hero-actions .button{min-height:46px;padding:0 20px}.hero-stat{text-align:right;padding-right:12px}.hero-stat strong{display:block;font-size:32px;font-weight:500;letter-spacing:-1.5px;line-height:1}.hero-stat span{display:block;margin-top:7px;color:var(--muted);font-size:9px}
.task-list{display:grid}.task-row{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:14px;min-height:73px;padding:12px 0;border-top:1px solid var(--line);cursor:pointer;transition:background-color 160ms ease,transform 160ms var(--ease-out),opacity 180ms ease}.task-row:first-child{border-top:0}.task-row:active{transform:scale(.992)}.task-check{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--line-strong);border-radius:9px;color:transparent;background:var(--surface-2);transition:background-color 180ms ease,border-color 180ms ease,color 180ms ease,transform 160ms var(--ease-out)}.task-check svg{width:15px;height:15px;stroke-width:2.2}.task-copy{min-width:0}.task-copy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:600}.task-copy p{margin:4px 0 0;color:var(--muted);font-size:9.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-type{display:inline-flex;align-items:center;min-height:23px;padding:0 8px;border-radius:6px;background:var(--surface-3);color:var(--muted);font-size:8.5px}.task-time{display:flex;align-items:center;gap:5px;color:var(--faint);font-size:9px;white-space:nowrap}.task-time svg{width:12px}.task-arrow{width:15px;color:var(--faint);transition:transform 180ms var(--ease-out),color 160ms ease}.task-row.done{opacity:.52}.task-row.done .task-check{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.task-row.done .task-copy b{text-decoration:line-through;text-decoration-color:var(--faint)}
.progress-ring{position:relative;display:grid;place-items:center;width:154px;height:154px;margin:6px auto 16px}.progress-ring svg{width:154px;height:154px;transform:rotate(-90deg)}.progress-ring circle{fill:none;stroke-width:8}.progress-ring .ring-track{stroke:var(--surface-3)}.progress-ring .ring-value{stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset 500ms var(--ease-out)}.ring-copy{position:absolute;text-align:center}.ring-copy strong{display:block;font-size:30px;font-weight:550;letter-spacing:-1.5px}.ring-copy span{color:var(--muted);font-size:9px}.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);padding-top:16px}.mini-stat{text-align:center;border-left:1px solid var(--line)}.mini-stat:first-child{border-left:0}.mini-stat strong{display:block;font-size:17px;font-weight:600}.mini-stat span{color:var(--muted);font-size:8.5px}
.insight-card{padding:20px;background:var(--accent-dim);border-color:color-mix(in srgb,var(--accent) 18%,transparent)}.insight-icon{display:grid;place-items:center;width:30px;height:30px;margin-bottom:15px;border-radius:9px;background:var(--accent);color:var(--accent-ink)}.insight-icon svg{width:16px}.insight-card h3{margin-bottom:7px;font-size:12px;font-weight:650}.insight-card p{margin:0;color:var(--text-soft);font-size:10px;line-height:1.75}.insight-card button{margin-top:14px;padding:0;color:var(--accent);font-size:10px}
.heatmap{display:grid;grid-template-columns:repeat(14,1fr);gap:4px}.heat-cell{aspect-ratio:1;border-radius:3px;background:var(--surface-3);transition:transform 130ms var(--ease-out),outline-color 130ms ease;outline:1px solid transparent}.heat-cell[data-level="1"]{background:color-mix(in srgb,var(--accent) 24%,var(--surface-3))}.heat-cell[data-level="2"]{background:color-mix(in srgb,var(--accent) 45%,var(--surface-3))}.heat-cell[data-level="3"]{background:color-mix(in srgb,var(--accent) 70%,var(--surface-3))}.heat-cell[data-level="4"]{background:var(--accent)}.heat-cell.today{outline-color:var(--text-soft);outline-offset:1px}.heat-legend{display:flex;align-items:center;justify-content:space-between;margin-top:12px;color:var(--faint);font-size:8.5px}.heat-legend span{display:flex;align-items:center;gap:5px}.heat-legend i{width:8px;height:8px;border-radius:2px;background:var(--surface-3)}
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:18px}.segmented{display:inline-flex;align-items:center;gap:3px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.segment{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:0 11px;border-radius:7px;color:var(--muted);font-size:9.5px;transition:background-color 150ms ease,color 150ms ease,transform 140ms var(--ease-out)}.segment:active{transform:scale(.96)}.segment.active{background:var(--surface-3);color:var(--text)}.toolbar-spacer{flex:1}.field{position:relative;display:flex;align-items:center}.field>svg{position:absolute;left:12px;width:15px;color:var(--faint);pointer-events:none}.input,.select,textarea{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--text);transition:border-color 160ms ease,background-color 160ms ease}.input{height:40px;padding:0 12px;font-size:12px}.field .input{padding-left:36px;min-width:220px}.input::placeholder,textarea::placeholder{color:var(--faint)}.select{height:38px;padding:0 32px 0 11px;font-size:11px}.input:focus,.select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-dim)}
.path-shell{overflow:hidden}.path-canvas{position:relative;min-height:520px;background-image:radial-gradient(var(--line-strong) .7px,transparent .7px);background-size:20px 20px;background-position:-4px -4px}.path-svg{width:100%;height:auto;min-height:520px;overflow:visible}.path-svg .stage-band{fill:var(--surface-2);stroke:var(--line)}.path-svg .stage-label{fill:var(--faint);font:700 10px var(--font);letter-spacing:1.2px}.path-svg .edge{fill:none;stroke:var(--line-strong);stroke-width:1.5}.path-svg .edge.unlocked{stroke:color-mix(in srgb,var(--accent) 45%,transparent)}.path-svg .node{cursor:pointer;outline:none}.path-svg .node rect{fill:var(--surface);stroke:var(--line-strong);stroke-width:1.2;transition:fill 160ms ease,stroke 160ms ease,transform 180ms var(--ease-out);transform-box:fill-box;transform-origin:center}.path-svg .node text{pointer-events:none}.path-svg .node .node-title{fill:var(--text);font:600 12px var(--font)}.path-svg .node .node-sub{fill:var(--muted);font:9px var(--font)}.path-svg .node .status-circle{stroke-width:2}.path-svg .node.mastered .status-circle{fill:var(--accent-dim);stroke:var(--accent)}.path-svg .node.learning .status-circle{fill:var(--teal-dim);stroke:var(--teal)}.path-svg .node.stuck .status-circle{fill:var(--amber-dim);stroke:var(--amber)}.path-svg .node.locked{cursor:not-allowed;opacity:.46}.path-svg .node.locked rect{fill:var(--surface-2)}.path-svg .node.current rect{stroke:var(--accent);stroke-width:1.7;filter:drop-shadow(0 0 10px color-mix(in srgb,var(--accent) 20%,transparent))}.path-svg .node:focus-visible rect{stroke:var(--accent);stroke-width:3}.path-legend{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:14px 20px;border-top:1px solid var(--line);color:var(--muted);font-size:9px}.legend-item{display:flex;align-items:center;gap:6px}.legend-dot{width:7px;height:7px;border-radius:50%;background:var(--faint)}.legend-dot.mastered{background:var(--accent)}.legend-dot.learning{background:var(--teal)}.legend-dot.stuck{background:var(--amber)}
.graph-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:18px}.graph-card{overflow:hidden}.graph-toolbar{position:absolute;top:15px;right:15px;z-index:2;display:flex;gap:5px}.graph-toolbar .icon-button{width:34px;height:34px;background:color-mix(in srgb,var(--surface) 90%,transparent)}.graph-stage{position:relative;min-height:540px;background:radial-gradient(ellipse at center,var(--accent-dim),transparent 68%)}.grammar-svg{width:100%;height:540px;touch-action:none;cursor:grab}.grammar-svg.dragging{cursor:grabbing}.grammar-viewport{transform-box:fill-box;transform-origin:center;transition:transform 240ms var(--ease-in-out)}.grammar-svg.dragging .grammar-viewport{transition:none}.grammar-link{fill:none;stroke:var(--line-strong);stroke-width:1.3;transition:stroke 180ms ease,opacity 180ms ease}.grammar-link.confuse{stroke:var(--amber);stroke-dasharray:5 5}.grammar-link.cross{stroke:var(--violet);stroke-dasharray:2 5}.grammar-link.active{stroke:var(--accent);stroke-width:2}.grammar-node{cursor:pointer;outline:none}.grammar-node rect{fill:var(--surface);stroke:var(--line-strong);transition:fill 160ms ease,stroke 160ms ease}.grammar-node text{fill:var(--text);font:600 12px var(--font);pointer-events:none}.grammar-node .node-kind{fill:var(--muted);font:8px var(--font);letter-spacing:.7px}.grammar-node.active rect{fill:color-mix(in srgb,var(--accent) 13%,var(--surface));stroke:var(--accent);stroke-width:1.6}.grammar-node:focus-visible rect{stroke:var(--accent);stroke-width:3}.graph-detail{padding:22px}.graph-detail .detail-glyph{display:grid;place-items:center;width:44px;height:44px;margin-bottom:18px;border:1px solid var(--line);border-radius:13px;background:var(--accent-dim);color:var(--accent)}.graph-detail h3{margin-bottom:5px;font-size:19px;font-weight:600;letter-spacing:-.5px}.graph-detail>p{color:var(--muted);font-size:10.5px;line-height:1.8}.detail-list{display:grid;gap:0;margin:18px 0}.detail-line{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-top:1px solid var(--line);font-size:10px}.detail-line span{color:var(--muted)}.detail-line b{text-align:right;font-weight:550}.example-box{padding:13px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);font-size:11px;line-height:1.8}.example-box small{display:block;margin-top:5px;color:var(--muted);font-size:9.5px}
.vocab-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.metric-card{padding:17px}.metric-card .metric-top{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:9px}.metric-card .metric-top svg{width:15px}.metric-card strong{display:block;margin-top:8px;font-size:24px;font-weight:550;letter-spacing:-.8px}.metric-card small{color:var(--faint);font-size:8.5px}.metric-card.accent{background:var(--accent-dim);border-color:color-mix(in srgb,var(--accent) 18%,transparent)}
.review-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px}.flashcard-wrap{perspective:1200px;min-height:400px}.flashcard{position:relative;width:100%;height:400px;cursor:pointer;transform-style:preserve-3d;transition:transform 300ms var(--ease-in-out)}.flashcard.flipped{transform:rotateY(180deg)}.flash-face{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);backface-visibility:hidden;-webkit-backface-visibility:hidden}.flash-back{transform:rotateY(180deg);background:var(--surface-2)}.flash-hint{position:absolute;top:20px;left:22px;color:var(--faint);font-size:9px;letter-spacing:.5px}.flash-lang{position:absolute;top:20px;right:22px;color:var(--faint);font-size:9px}.flash-word{max-width:100%;margin:0;text-align:center;font-size:clamp(34px,6vw,58px);font-weight:550;letter-spacing:-2px;line-height:1.15;overflow-wrap:anywhere}.flash-reading{margin-top:13px;color:var(--accent);font-size:13px}.flash-meaning{max-width:550px;margin:0;text-align:center;font-size:24px;font-weight:550}.flash-example{max-width:560px;margin-top:24px;color:var(--text-soft);text-align:center;font-size:13px;line-height:1.8}.flash-example small{display:block;margin-top:8px;color:var(--muted);font-size:10.5px}.flip-cta{position:absolute;bottom:22px;display:flex;align-items:center;gap:7px;color:var(--faint);font-size:9px}.flip-cta svg{width:13px}.review-controls{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:14px}.grade-button{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:54px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--text-soft);transition:transform 140ms var(--ease-out),background-color 160ms ease,border-color 160ms ease}.grade-button:active{transform:scale(.96)}.grade-button b{font-size:10.5px;font-weight:600}.grade-button small{color:var(--faint);font-size:8px}.grade-button.again{color:var(--red)}.grade-button.good{color:var(--accent)}.review-progress{height:3px;margin-bottom:14px;border-radius:3px;background:var(--surface-3);overflow:hidden}.review-progress i{display:block;width:100%;height:100%;border-radius:3px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform 280ms var(--ease-out)}
.vocab-list{overflow:hidden}.vocab-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(140px,1.4fr) 90px 100px;align-items:center;gap:14px;min-height:59px;padding:9px 18px;border-top:1px solid var(--line);font-size:10.5px}.vocab-row:first-child{border-top:0}.vocab-row.header{min-height:39px;background:var(--surface-2);color:var(--faint);font-size:8px;font-weight:650;letter-spacing:.7px}.vocab-word{font-size:12px;font-weight:600}.vocab-word small{display:block;margin-top:2px;color:var(--muted);font-size:8.5px;font-weight:400}.vocab-meaning{color:var(--text-soft)}.state-pill{display:inline-flex;align-items:center;justify-content:center;width:max-content;min-height:23px;padding:0 8px;border-radius:20px;background:var(--surface-3);color:var(--muted);font-size:8.5px}.state-pill.mastered{background:var(--accent-dim);color:var(--accent)}.state-pill.learning{background:var(--teal-dim);color:var(--teal)}.state-pill.due{background:var(--red-dim);color:var(--red)}.due-text{color:var(--muted);font-size:9px}
.overview-hero{display:grid;grid-template-columns:1.25fr .75fr;gap:18px;margin-bottom:18px}.overview-score{display:flex;align-items:center;gap:26px;padding:25px}.score-main{min-width:150px}.score-main strong{display:block;font-size:52px;font-weight:500;letter-spacing:-2.5px;line-height:1}.score-main span{display:block;margin-top:7px;color:var(--muted);font-size:10px}.score-copy{padding-left:25px;border-left:1px solid var(--line)}.score-copy h3{margin-bottom:7px;font-size:13px}.score-copy p{margin:0;color:var(--muted);font-size:10px;line-height:1.8}.weekly-chart{height:170px;width:100%}.chart-wrap{position:relative}.chart-empty{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:5px;text-align:center;pointer-events:none}.chart-empty b{color:var(--muted);font-size:10.5px;font-weight:550}.chart-empty span{color:var(--faint);font-size:9px}.weekly-chart .chart-grid{stroke:var(--line);stroke-width:1}.weekly-chart .chart-area{fill:url(#area-gradient);stroke:none}.weekly-chart .chart-line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.weekly-chart .chart-dot{fill:var(--surface);stroke:var(--accent);stroke-width:2}.chart-labels{display:flex;justify-content:space-between;color:var(--faint);font-size:8px}.language-progress-list{display:grid;gap:0}.language-progress{display:grid;grid-template-columns:minmax(120px,1fr) minmax(180px,2fr) 50px;align-items:center;gap:18px;padding:14px 0;border-top:1px solid var(--line);cursor:pointer;transition:opacity 160ms ease,transform 160ms var(--ease-out)}.language-progress:first-child{border-top:0}.language-progress:active{transform:scale(.995)}.language-name{display:flex;align-items:center;gap:10px}.language-code{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--line);border-radius:8px;color:var(--accent);font-size:8px;font-weight:750}.language-name b{display:block;font-size:11px}.language-name small{display:block;color:var(--muted);font-size:8.5px}.linear-progress{height:5px;border-radius:5px;background:var(--surface-3);overflow:hidden}.linear-progress i{display:block;width:100%;height:100%;border-radius:5px;background:var(--accent);transform-origin:left;transition:transform 450ms var(--ease-out)}.progress-value{text-align:right;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}.goal-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.goal-card{padding:17px}.goal-card .goal-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:14px}.goal-card h4{margin:0;font-size:11px}.goal-card .goal-head span{color:var(--muted);font-size:9px}.goal-card p{margin:10px 0 0;color:var(--muted);font-size:9px}.goal-card .linear-progress{height:4px}
.empty-state{display:grid;place-items:center;min-height:300px;padding:40px;text-align:center}.empty-state svg{width:34px;height:34px;margin-bottom:16px;color:var(--faint)}.empty-state h3{margin-bottom:8px;font-size:16px}.empty-state p{max-width:400px;color:var(--muted);font-size:11px}
.scrim{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.48);opacity:0;transition:opacity 220ms ease;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.scrim.open{opacity:1}.detail-drawer{position:fixed;z-index:90;top:0;right:0;width:min(430px,100%);height:100vh;height:100dvh;padding:25px calc(24px + env(safe-area-inset-right,0px)) calc(24px + env(safe-area-inset-bottom,0px)) 25px;overflow-y:auto;overscroll-behavior:contain;background:var(--surface);border-left:1px solid var(--line);box-shadow:var(--shadow);transform:translateX(102%);transition:transform 280ms var(--ease-drawer)}.detail-drawer.open{transform:translateX(0)}.drawer-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.drawer-header .section-label{margin:0}.drawer-close{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:10px;color:var(--muted);transition:transform 140ms var(--ease-out),background-color 150ms ease}.drawer-close:active{transform:scale(.94)}.drawer-close svg{width:16px}.drawer-hero{padding-bottom:22px;border-bottom:1px solid var(--line)}.drawer-hero h2{margin-bottom:8px;font-size:29px;font-weight:550;letter-spacing:-1px}.drawer-hero p{margin:0;color:var(--muted);font-size:11px;line-height:1.75}.drawer-section{padding:20px 0;border-bottom:1px solid var(--line)}.drawer-section h4{margin-bottom:11px;font-size:10px;font-weight:650}.drawer-section p{margin:0;color:var(--text-soft);font-size:11px;line-height:1.85}.drawer-actions{display:flex;gap:9px;margin-top:24px}.drawer-actions .button{flex:1}.relation-chip{display:inline-flex;align-items:center;gap:6px;margin:0 6px 6px 0;padding:6px 9px;border:1px solid var(--line);border-radius:8px;color:var(--text-soft);font-size:9px}.relation-chip svg{width:12px}
.modal-layer,.command-layer{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px}.modal-scrim{position:absolute;inset:0;background:rgba(0,0,0,.58);opacity:0;transition:opacity 200ms ease;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.modal-card{position:relative;width:min(620px,100%);max-height:min(820px,calc(100dvh - 40px));overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--line-strong);border-radius:20px;background:var(--surface);box-shadow:var(--shadow);opacity:0;transform:translateY(12px) scale(.97);transition:opacity 220ms var(--ease-out),transform 220ms var(--ease-out)}.modal-layer.open .modal-scrim,.command-layer.open .modal-scrim{opacity:1}.modal-layer.open .modal-card{opacity:1;transform:translateY(0) scale(1)}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:23px 24px 18px;border-bottom:1px solid var(--line)}.modal-header h2{margin:0;font-size:20px;font-weight:600;letter-spacing:-.5px}.modal-header p{margin:5px 0 0;color:var(--muted);font-size:10px}.modal-body{padding:23px 24px}.modal-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 24px;border-top:1px solid var(--line)}.modal-footer-right{display:flex;gap:8px;margin-left:auto}.session-timer{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.session-timer svg{width:15px}.session-progress{display:flex;gap:5px;margin-bottom:22px}.session-progress i{height:3px;flex:1;border-radius:3px;background:var(--surface-3);transition:background-color 180ms ease,transform 180ms var(--ease-out);transform-origin:left}.session-progress i.done{background:var(--accent)}.session-step-label{margin-bottom:9px;color:var(--accent);font-size:9px;font-weight:700;letter-spacing:1px}.session-content h3{margin-bottom:12px;font-size:22px;font-weight:550;letter-spacing:-.5px}.session-content p{color:var(--text-soft);font-size:12px;line-height:1.9}.session-quote{padding:20px;border-left:2px solid var(--accent);border-radius:0 12px 12px 0;background:var(--surface-2);font-size:16px;line-height:1.85}.session-quote small{display:block;margin-top:9px;color:var(--muted);font-size:10px}.session-textarea{min-height:150px;padding:13px;resize:vertical;font-size:16px;line-height:1.7}.field-help{margin:7px 0 0;color:var(--faint);font-size:9px}.settings-group{padding:18px 0;border-top:1px solid var(--line)}.settings-group:first-child{border-top:0;padding-top:0}.settings-group h3{margin-bottom:5px;font-size:12px}.settings-group>p{margin-bottom:14px;color:var(--muted);font-size:10px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:45px}.setting-row b{display:block;font-size:11px;font-weight:550}.setting-row small{display:block;margin-top:3px;color:var(--muted);font-size:9px}.switch{position:relative;width:40px;height:23px;border:1px solid var(--line-strong);border-radius:20px;background:var(--surface-3);transition:background-color 180ms ease,border-color 180ms ease}.switch::after{content:"";position:absolute;top:3px;left:3px;width:15px;height:15px;border-radius:50%;background:var(--muted);transition:transform 180ms var(--ease-out),background-color 180ms ease}.switch.on{background:var(--accent);border-color:var(--accent)}.switch.on::after{background:var(--accent-ink);transform:translateX(17px)}.settings-actions{display:flex;flex-wrap:wrap;gap:8px}.demo-disclaimer{display:flex;align-items:flex-start;gap:9px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);color:var(--muted);font-size:9.5px;line-height:1.7}.demo-disclaimer svg{width:15px;margin-top:2px}
.command-layer{align-items:start;padding-top:min(16vh,150px)}.command-palette{position:relative;width:min(620px,100%);overflow:hidden;border:1px solid var(--line-strong);border-radius:16px;background:var(--surface);box-shadow:var(--shadow);opacity:0;transform:translateY(-8px) scale(.98);transform-origin:top center;transition:opacity 180ms var(--ease-out),transform 180ms var(--ease-out)}.command-layer.open .command-palette{opacity:1;transform:translateY(0) scale(1)}.command-input{display:flex;align-items:center;gap:11px;padding:15px 16px;border-bottom:1px solid var(--line)}.command-input svg{width:18px;color:var(--muted)}.command-input input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text);font-size:16px}.command-input kbd,.command-footer kbd{padding:2px 5px;border:1px solid var(--line);border-radius:5px;color:var(--faint);font:8px var(--font)}.command-results{max-height:360px;overflow-y:auto;overscroll-behavior:contain;padding:7px}.command-empty{padding:35px;text-align:center;color:var(--muted);font-size:11px}.command-group-label{padding:8px 10px 5px;color:var(--faint);font-size:8px;font-weight:700;letter-spacing:1px}.command-result{display:flex;align-items:center;gap:11px;width:100%;min-height:48px;padding:8px 10px;border-radius:9px;text-align:left;transition:background-color 120ms ease,color 120ms ease}.command-result.active{background:var(--surface-3)}.command-result>svg{width:16px;color:var(--muted)}.command-result b{display:block;font-size:11px;font-weight:550}.command-result small{display:block;margin-top:2px;color:var(--muted);font-size:9px}.command-result .result-type{margin-left:auto;color:var(--faint);font-size:8px}.command-footer{display:flex;align-items:center;gap:16px;padding:10px 16px;border-top:1px solid var(--line);color:var(--faint);font-size:8px}.command-footer span:last-child{margin-left:auto}
.toast-region{position:fixed;z-index:150;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));display:grid;gap:8px;width:min(400px,calc(100% - 32px));transform:translateX(-50%);pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface-3);box-shadow:var(--shadow);color:var(--text);font-size:11px;opacity:0;transform:translateY(12px) scale(.97);transition:opacity 200ms var(--ease-out),transform 200ms var(--ease-out)}.toast.show{opacity:1;transform:translateY(0) scale(1)}.toast svg{width:16px;color:var(--accent)}.toast.error svg{color:var(--red)}
.completion-burst{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}.completion-burst span{position:absolute;width:70px;height:70px;border:1px solid var(--accent);border-radius:50%;animation:success-ring 550ms var(--ease-out) both}.completion-burst svg{width:36px;height:36px;color:var(--accent);animation:success-check 350ms var(--ease-out) both}
.bottom-nav{display:none}.noscript{position:fixed;inset:20px;display:grid;place-items:center;background:var(--surface);z-index:999}
@keyframes view-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes pulse{from{opacity:.35;transform:scale(.8)}to{opacity:1;transform:scale(1.15)}}
@keyframes success-ring{from{opacity:.8;transform:scale(.6)}to{opacity:0;transform:scale(1.5)}}
@keyframes success-check{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}
@media(hover:hover) and (pointer:fine){
  .nav-item:hover{background:rgba(255,255,255,.04);color:#d8dfd6}.account-button:hover{background:rgba(255,255,255,.04)}
  .search-trigger:hover{border-color:var(--line-strong);background:var(--surface-2)}.icon-button:hover{color:var(--text);border-color:var(--line-strong)}
  .language-tab:hover{color:var(--text);background:var(--surface-2)}.button.primary:hover{background:var(--accent-strong);transform:translateY(-1px)}.button.secondary:hover{border-color:var(--line-strong);background:var(--surface-2)}
  .task-row:hover{background:var(--surface-2)}.task-row:hover .task-arrow{transform:translateX(3px);color:var(--accent)}.heat-cell:hover{transform:scale(1.18)}
  .path-svg .node:not(.locked):hover rect{fill:var(--surface-3);transform:scale(1.025)}.grade-button:hover{background:var(--surface-2);border-color:var(--line-strong);transform:translateY(-2px)}
  .language-progress:hover{opacity:.72}.segment:hover{color:var(--text)}
}
@media(max-width:1180px){
  .app-shell{grid-template-columns:82px minmax(0,1fr)}.sidebar{padding:25px 12px 16px}.sidebar .brand{justify-content:center;padding:0}.sidebar .brand-word,.workspace-chip span:not(.status-dot),.nav-item span,.nav-item kbd,.local-note,.account-button>span:not(.avatar),.account-button>svg{display:none}.workspace-chip{justify-content:center;margin:24px 0 17px}.nav-item{justify-content:center;padding:0}.nav-item::before{left:-12px}.account-button{justify-content:center;padding:10px 0}.today-grid{grid-template-columns:minmax(0,1.45fr) minmax(245px,.7fr)}.graph-layout{grid-template-columns:minmax(0,1fr) 235px}.review-layout{grid-template-columns:minmax(0,1fr) 270px}
}
@media(max-width:920px){
  .today-grid,.overview-hero,.overview-middle{grid-template-columns:1fr!important}.today-side{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.today-side .card:last-child{grid-column:1/-1}.graph-layout{grid-template-columns:1fr}.graph-detail{display:grid;grid-template-columns:auto 1fr;gap:0 18px}.graph-detail .detail-glyph{grid-row:1/4}.graph-detail .detail-list,.graph-detail .example-box,.graph-detail .button{grid-column:1/-1}.review-layout{grid-template-columns:1fr}.vocab-summary{grid-template-columns:repeat(2,1fr)}.sync-state{display:none}.topbar{gap:14px;padding:0 22px}.language-strip{padding:0 22px}.app-main{padding:25px 22px 45px}.hero-stat{display:none}.hero-main{grid-template-columns:1fr}.search-trigger{width:min(310px,38vw)}
}
@media(max-width:680px){
  body{font-size:16px}.app-shell{display:block}.sidebar{display:none}.topbar{height:62px;padding:env(safe-area-inset-top,0px) 16px 0;gap:10px}.topbar-context,.search-trigger{display:none}.mobile-brand{display:flex;padding:0;min-height:40px}.mobile-brand .brand-mark{width:24px;height:25px}.mobile-brand .brand-mark span{width:6px}.mobile-brand .brand-mark span:nth-child(1){height:12px}.mobile-brand .brand-mark span:nth-child(2){height:22px}.mobile-brand .brand-mark span:nth-child(3){height:17px}.mobile-brand .brand-word{font-size:18px}.topbar-actions{margin-left:auto}.mobile-search{display:grid}.top-avatar{display:none}.icon-button{width:36px;height:36px;border:0;background:transparent}.language-strip{min-height:51px;padding:0 10px}.language-scroll{padding:7px 5px}.language-tab{min-height:34px;padding:0 10px;font-size:10px}.language-tab .lang-code{display:none}.language-tab.active::after{bottom:-8px}.app-main{padding:20px 15px calc(96px + env(safe-area-inset-bottom,0px))}.page-heading{align-items:flex-start;margin-bottom:20px}.page-heading h1{font-size:27px;letter-spacing:-1px}.page-heading p{max-width:290px;font-size:11px}.page-actions .date-chip{display:none}.page-actions .button.secondary span{display:none}.page-actions .button.secondary{width:40px;padding:0}.grid{gap:14px}.card-pad{padding:18px}.hero-card{min-height:340px;padding:21px}.hero-card::after{width:260px;height:260px;right:-130px;top:-100px}.hero-main{padding:28px 0 24px}.hero-copy h2{font-size:38px;letter-spacing:-1.5px}.hero-copy p{font-size:11px}.hero-meta{gap:12px}.hero-actions{justify-content:space-between}.hero-actions .button{flex:1}.today-side{display:grid;grid-template-columns:1fr;gap:14px}.today-side .card:last-child{grid-column:auto}.task-row{grid-template-columns:auto minmax(0,1fr) auto;gap:11px;min-height:74px}.task-type{display:none}.task-time{font-size:8px}.task-copy b{font-size:11px;white-space:normal}.task-copy p{white-space:normal;line-height:1.5}.task-arrow{display:none}.bottom-nav{position:fixed;z-index:50;left:10px;right:10px;bottom:calc(9px + env(safe-area-inset-bottom,0px));display:grid;grid-template-columns:repeat(5,1fr);height:64px;padding:5px;border:1px solid var(--line-strong);border-radius:18px;background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 12px 35px rgba(0,0,0,.25);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.bottom-indicator{position:absolute;top:5px;bottom:5px;left:5px;width:calc((100% - 10px)/5);border-radius:13px;background:var(--surface-3);transform:translateX(0);transition:transform 240ms var(--ease-out)}.bottom-item{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--faint);transition:color 160ms ease,transform 140ms var(--ease-out)}.bottom-item:active{transform:scale(.94)}.bottom-item svg{width:18px;height:18px}.bottom-item span{font-size:8px}.bottom-item.active{color:var(--text)}.bottom-item.active svg{color:var(--accent)}.path-canvas{overflow-x:auto;min-height:430px}.path-svg{width:880px;max-width:none;min-height:430px}.path-legend{gap:10px;padding:12px 15px}.graph-stage{min-height:440px}.grammar-svg{height:440px}.graph-detail{display:block}.graph-detail .detail-glyph{margin-bottom:14px}.toolbar{gap:8px}.toolbar .field,.field .input{width:100%;min-width:0}.toolbar-spacer{display:none}.segmented{max-width:100%;overflow-x:auto}.vocab-summary{gap:9px}.metric-card{padding:14px}.metric-card strong{font-size:21px}.flashcard-wrap{min-height:355px}.flashcard{height:355px}.flash-face{padding:25px}.flash-word{font-size:38px;letter-spacing:-1.5px}.flash-meaning{font-size:21px}.review-controls{gap:6px}.grade-button{min-height:52px}.vocab-row{grid-template-columns:minmax(100px,1fr) 85px;gap:10px;padding:10px 14px}.vocab-row>*:nth-child(2),.vocab-row>*:nth-child(4){display:none}.overview-score{flex-direction:column;align-items:flex-start;gap:18px}.score-copy{padding:18px 0 0;border-left:0;border-top:1px solid var(--line)}.language-progress{grid-template-columns:minmax(110px,1fr) 45px;gap:12px}.language-progress .linear-progress{grid-column:1/-1;grid-row:2}.goal-grid{grid-template-columns:1fr}.detail-drawer{top:auto;bottom:0;width:100%;height:auto;max-height:88dvh;padding:22px 20px calc(24px + env(safe-area-inset-bottom,0px));border-left:0;border-top:1px solid var(--line-strong);border-radius:20px 20px 0 0;transform:translateY(102%)}.detail-drawer.open{transform:translateY(0)}.drawer-header{margin-bottom:20px}.modal-layer{padding:0;align-items:end}.modal-card{width:100%;max-height:92dvh;border-radius:20px 20px 0 0;border-bottom:0;transform:translateY(30px) scale(.98)}.modal-header{padding:20px 19px 16px}.modal-body{padding:19px}.modal-footer{padding:15px 19px calc(15px + env(safe-area-inset-bottom,0px))}.session-content h3{font-size:20px}.command-layer{padding:70px 12px 12px;align-items:start}.command-palette{border-radius:14px}.command-footer span:last-child{display:none}.toast-region{bottom:calc(86px + env(safe-area-inset-bottom,0px))}.settings-actions .button{flex:1}.heatmap{gap:3px}.heat-cell{border-radius:2px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.view-enter{animation:none}.flashcard{transform-style:flat}.flashcard.flipped{transform:none}.flashcard.flipped .flash-front{opacity:0}.flash-back{transform:none;opacity:0}.flashcard.flipped .flash-back{opacity:1}.bottom-indicator{transition:none}.grammar-viewport{transition:none}
}
html[data-motion="reduced"] *,html[data-motion="reduced"] *::before,html[data-motion="reduced"] *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
html[data-motion="reduced"] .view-enter{animation:none}html[data-motion="reduced"] .flashcard{transform-style:flat}html[data-motion="reduced"] .flashcard.flipped{transform:none}html[data-motion="reduced"] .flashcard.flipped .flash-front{opacity:0}html[data-motion="reduced"] .flash-back{transform:none;opacity:0}html[data-motion="reduced"] .flashcard.flipped .flash-back{opacity:1}
