:root{color-scheme:light;--app-font-scale:1;--app-viewport-width:100vw;--app-viewport-height:100dvh;--app-visible-viewport-height:100dvh;--bg-0:#f7f8fb;--bg-1:#f2f4f8;--bg-2:#edf1f6;--mobile-chrome-bg:#f2f4f8;--spotlight:rgba(148,163,184,0.18);--surface-0:rgba(255,255,255,0.76);--surface-1:rgba(255,255,255,0.9);--surface-2:rgba(244,249,255,0.95);--surface-strong:#ffffff;--text-0:#0f172a;--text-1:#334155;--text-2:#64748b;--accent-0:#2563eb;--accent-1:#3b82f6;--accent-2:#dbeafe;--danger-0:#b42318;--danger-1:#fee4e2;--border-0:rgba(148,163,184,0.32);--border-1:rgba(148,163,184,0.22);--radius-sm:0.65rem;--radius-md:0.95rem;--radius-lg:1.25rem;--radius-pill:999px;--shadow-sm:0 6px 16px rgba(15,23,42,0.06);--shadow-md:0 16px 36px rgba(15,23,42,0.08);--shadow-lg:0 20px 48px rgba(15,23,42,0.12);--space-1:0.375rem;--space-2:0.625rem;--space-3:0.875rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--duration-fast:140ms;--duration-base:220ms}*{box-sizing:border-box}body,html{margin:0;padding:0;width:100%;height:100%}html{font-size:calc(17px * var(--app-font-scale));max-height:100%}body,html{background-color:var(--bg-1);width:var(--app-viewport-width);height:var(--app-viewport-height);max-width:100%;overflow:hidden;overscroll-behavior:none;background:radial-gradient(900px 420px at 10% -8%,var(--spotlight),transparent 60%),linear-gradient(150deg,var(--bg-0),var(--bg-1) 40%,var(--bg-2))}body{position:fixed;inset:0;min-width:0;min-height:var(--app-viewport-height);max-height:var(--app-viewport-height);overflow-x:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;color:var(--text-0);font-family:Sora,Avenir Next,Segoe UI,sans-serif;font-size:1rem;line-height:1.5}input{-webkit-user-select:text;-moz-user-select:text;user-select:text;-webkit-touch-callout:default}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.3;background-image:radial-gradient(rgba(15,23,42,.08) .6px,transparent 0);background-size:7px 7px}a{color:inherit}a,a:hover{text-decoration:none}h1,h2,h3{margin:0;letter-spacing:-.02em}h1{font-size:clamp(1.7rem,3vw,2.2rem);font-weight:700}h2{font-size:clamp(1.25rem,2.2vw,1.5rem);font-weight:650}h3{font-size:1.06rem;font-weight:620}p{margin:0}button,input,select,textarea{font:inherit}.shell{width:min(1200px,calc(var(--app-viewport-width) - 2rem));margin:0 auto;height:100%;max-height:100%;min-height:0;display:flex;flex-direction:column;gap:1rem;overflow:hidden;padding:1rem 0}.shell-auth{width:min(1180px,calc(var(--app-viewport-width) - 1.5rem));padding:.75rem 0;overflow-y:auto;overflow-x:hidden}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:60;flex-shrink:0}.topbar-shell{display:flex;align-items:center;min-height:2.35rem;padding:.2rem 0;position:relative;isolation:isolate}.brand{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:700}.brand-dot{width:.9rem;height:.9rem;border-radius:50%;background:linear-gradient(135deg,var(--accent-0),var(--accent-1));box-shadow:0 0 0 4px rgba(37,99,235,.14)}.topbar-context{display:flex;align-items:center;gap:.65rem;flex:1 1 100%;min-width:0;pointer-events:none}.topbar-context>*{pointer-events:auto}.topbar-view-title{font-size:1.02rem;font-weight:650;color:var(--text-1)}.topbar-review-counter{font-size:.92rem;font-weight:650;color:var(--text-1);background:transparent;border:0;border-radius:0;padding:0;flex:0 0 auto;text-align:center}.topbar-deck-field{margin-left:0;min-width:0;flex:0 1 220px;max-width:220px}.topbar-review-left{gap:.5rem}.topbar-review-controls,.topbar-review-left{display:flex;align-items:center;min-width:0;flex:1 1}.topbar-review-controls{gap:.45rem}.topbar-review-controls,.topbar-review-right{justify-content:flex-end}.topbar-review-kbd-hint{white-space:nowrap}.topbar-review-control-icon{width:1.08rem;height:1.08rem;display:block;flex:0 0 auto;min-width:1rem;min-height:1rem;overflow:visible;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;fill:none}.topbar-review-control-btn:focus-visible .topbar-review-control-icon,.topbar-review-control-btn:hover .topbar-review-control-icon{color:var(--text-0)}@media (max-width:1120px){.topbar-review-kbd-hint{display:none}}@media (max-width:980px){.topbar-review-control-btn-optional{display:none}}.menu-trigger{border:1px solid var(--border-0);background:var(--surface-strong);border-radius:var(--radius-sm);width:2.35rem;height:2.35rem;align-items:center;font-size:1.1rem;line-height:1;flex:0 0 auto;position:relative;z-index:10;touch-action:manipulation;pointer-events:auto}.menu-trigger,.menu-trigger-icon{display:inline-flex;justify-content:center}.menu-trigger-icon{flex-direction:column;gap:.22rem;transform:translateZ(0);-webkit-transform:translateZ(0)}.menu-trigger-icon>span{display:block;width:1rem;height:2.5px;min-height:2px;border-radius:999px;background:var(--text-1);flex:0 0 auto}.menu-overlay{position:fixed;inset:0;border:0;background:rgba(15,23,42,.22);z-index:90}.menu-drawer{position:fixed;left:0;top:0;bottom:0;width:min(360px,88vw);background:var(--surface-strong);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-right:1px solid var(--border-0);box-shadow:var(--shadow-lg);z-index:100;padding:calc(.5rem + env(safe-area-inset-top)) 1rem 1rem;display:grid;align-content:start;grid-gap:.95rem;gap:.95rem;animation:drawer-in var(--duration-base) ease}.menu-nav{display:grid;grid-gap:.18rem;gap:.18rem}.menu-link{display:block;padding:.72rem .65rem;border-radius:var(--radius-sm);color:var(--text-1);font-weight:500}.menu-link:hover{background:var(--surface-2);color:var(--text-0)}.menu-link.is-active{background:var(--accent-2);color:#1d4ed8;font-weight:600}.menu-footer{margin-top:auto;padding-top:.35rem}.menu-setting{display:flex;align-items:center;gap:.55rem;flex-wrap:nowrap}.menu-setting>span{flex:1 1}.menu-setting input[type=checkbox]{margin:0;flex:0 0 auto}.text-size-control{display:flex;align-items:center;justify-content:space-between;gap:.55rem}.text-size-actions{gap:.45rem}.text-size-actions,.text-size-btn{display:inline-flex;align-items:center}.text-size-btn{width:1.9rem;height:1.9rem;padding:0;justify-content:center;border-radius:.58rem;line-height:1}.text-size-symbol{display:block;line-height:1;font-size:1.1rem;font-weight:700}.text-size-symbol-minus{transform:translateY(-.06rem)}.text-size-value{min-width:2.9rem;text-align:center;color:var(--text-1);font-size:.84rem;font-weight:600}.menu-overlay:focus-visible,.menu-overlay:hover{transform:none;box-shadow:none}.settings-layout{display:grid;grid-gap:1rem;gap:1rem}.settings-hero{gap:.45rem}.settings-panel{gap:.9rem}.settings-access-header{align-items:flex-start}.settings-access-header,.settings-row{display:flex;justify-content:space-between;gap:1rem}.settings-row{align-items:center}.settings-access-form{gap:.75rem}.settings-access-list{display:grid;grid-gap:.6rem;gap:.6rem}.settings-access-item{display:flex;align-items:center;justify-content:space-between;gap:.9rem;padding:.8rem .9rem;border:1px solid var(--border-0);border-radius:var(--radius-sm);background:var(--surface-2)}.settings-section-title{font-size:1rem}.settings-toggle{padding:.2rem 0}.page{flex:1 1;min-height:0;max-height:100%;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border:0;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;padding:.5rem 0;box-shadow:none;animation:fade-in var(--duration-base) ease}.page,.page-auth{overflow-y:auto;overflow-x:hidden}.page-auth{padding:0;flex:1 1 auto;display:grid;min-height:calc(var(--app-visible-viewport-height) - 1.5rem)}.grid,.page-stack{display:grid;grid-gap:var(--space-5);gap:var(--space-5)}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar{display:flex;gap:var(--space-3);align-items:center;justify-content:space-between;flex-wrap:wrap}.hero{padding:1.15rem;border:1px solid var(--border-0);border-radius:var(--radius-md);background:linear-gradient(170deg,rgba(255,255,255,.93),rgba(246,249,255,.88));box-shadow:var(--shadow-sm)}.hero p{color:var(--text-1);margin-top:.45rem}.auth-shell{min-height:calc(var(--app-visible-viewport-height) - 1.5rem);display:grid;place-items:center;padding:clamp(.5rem,2vw,1.25rem) 0}.auth-stage{position:relative;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(330px,.92fr);grid-gap:clamp(1rem,2.4vw,1.5rem);gap:clamp(1rem,2.4vw,1.5rem);align-items:stretch}.auth-stage:before{content:"";position:absolute;inset:7% 12% auto;height:14rem;border-radius:999px;background:radial-gradient(circle,rgba(37,99,235,.16),transparent 70%);filter:blur(26px);pointer-events:none}.auth-stage-minimal{grid-template-columns:minmax(0,720px);justify-content:center}.auth-stage-minimal:before{inset:50% auto auto 50%;width:min(52rem,92vw);height:min(32rem,68vh);transform:translate(-50%,-52%);background:radial-gradient(circle,rgba(59,130,246,.2),rgba(255,255,255,0) 68%);filter:blur(42px)}.auth-hero,.auth-panel{position:relative;overflow:hidden;border:1px solid var(--border-0);box-shadow:var(--shadow-md)}.auth-hero{display:grid;grid-gap:1rem;gap:1rem;padding:clamp(1.4rem,3vw,2rem);border-radius:1.7rem;background:radial-gradient(circle at top right,rgba(59,130,246,.2),transparent 38%),linear-gradient(160deg,rgba(255,255,255,.92),rgba(244,249,255,.88) 56%,rgba(232,241,255,.84))}.auth-brand{display:inline-flex;align-items:center;gap:.7rem;width:-moz-fit-content;width:fit-content;padding:.45rem .8rem;border-radius:var(--radius-pill);border:1px solid rgba(148,163,184,.24);background:rgba(255,255,255,.72);font-weight:700;letter-spacing:-.02em}.auth-copy-block{display:grid;grid-gap:.7rem;gap:.7rem}.auth-eyebrow,.auth-feature-label,.auth-kicker{font-size:.74rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.auth-eyebrow,.auth-kicker{color:var(--accent-0)}.auth-title{max-width:12ch;font-size:clamp(2.35rem,5.5vw,4.25rem);line-height:.96;letter-spacing:-.05em}.auth-copy,.auth-feature-card p,.auth-panel-copy,.auth-status{color:var(--text-1)}.auth-copy{max-width:24rem;font-size:.98rem;line-height:1.55}.auth-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:.9rem;gap:.9rem}.auth-feature-card{display:grid;grid-gap:.5rem;gap:.5rem;padding:1rem;border-radius:1.2rem;border:1px solid rgba(148,163,184,.2);background:rgba(255,255,255,.74);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.auth-feature-label{color:var(--text-2)}.auth-feature-card p{font-size:.92rem;line-height:1.55}.auth-panel{display:grid;align-content:start;grid-gap:.9rem;gap:.9rem;padding:clamp(1.25rem,3vw,1.85rem);border-radius:1.5rem;background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(246,250,255,.92)),var(--surface-strong)}.auth-panel-header{display:grid;grid-gap:.35rem;gap:.35rem}.auth-panel h2{font-size:clamp(1.55rem,3.5vw,2rem)}.auth-provider-form{display:grid}.auth-provider-button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.95rem 1rem .95rem 1.1rem;border-radius:1.15rem;border:1px solid rgba(148,163,184,.26);background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(245,248,253,.94))}.auth-provider-button:focus-visible,.auth-provider-button:hover{transform:translateY(-2px);box-shadow:0 18px 34px rgba(15,23,42,.1)}.auth-provider-copy{display:grid;text-align:left}.auth-provider-title{font-size:1.02rem;font-weight:700;letter-spacing:-.02em}.auth-provider-mark{width:1.75rem;height:1.75rem;flex-shrink:0}.auth-status{padding:.85rem .95rem;border-radius:1rem;border:1px solid transparent;font-size:.92rem;line-height:1.55}.auth-status-error{background:rgba(180,35,24,.08);border-color:rgba(180,35,24,.16);color:var(--danger-0)}.auth-status-warning{background:rgba(217,119,6,.08);border-color:rgba(217,119,6,.16)}.auth-minimal{position:relative;justify-items:center;grid-gap:clamp(3.15rem,6vw,4.5rem);gap:clamp(3.15rem,6vw,4.5rem);width:min(100%,42rem);padding:clamp(2rem,7vh,4.5rem) 0}.auth-minimal,.auth-title-minimal{display:grid;margin:0 auto;text-align:center}.auth-title-minimal{grid-gap:.15em;gap:.15em;width:-moz-fit-content;width:fit-content;max-width:100%;font-size:clamp(3.2rem,8vw,5.4rem);line-height:.92;letter-spacing:-.06em}.auth-title-minimal>span{display:block}.auth-provider-form-minimal{width:min(100%,18.75rem)}.auth-provider-button-centered{position:relative;justify-content:center;min-height:3.65rem;padding:1rem 3.5rem 1rem 1.45rem;border-radius:999px;border-color:rgba(148,163,184,.18);background:linear-gradient(180deg,rgba(255,255,255,1),rgba(247,250,255,.96));box-shadow:0 18px 36px rgba(37,99,235,.08),inset 0 1px 0 rgba(255,255,255,.9)}.auth-provider-button-centered .auth-provider-copy{width:100%;justify-items:center;text-align:center}.auth-provider-button-centered .auth-provider-mark{position:absolute;right:1.2rem}.auth-status-neutral{background:rgba(255,255,255,.72);border-color:rgba(148,163,184,.18)}.actions-row,.row{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.card,.panel{border:1px solid var(--border-0);border-radius:var(--radius-md);background:var(--surface-strong);box-shadow:var(--shadow-sm);padding:1rem}.panel-glass{background:var(--surface-0);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.stat-grid{display:grid;grid-gap:var(--space-3);gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr))}.stat-card{border:1px solid var(--border-0);border-radius:var(--radius-md);padding:.85rem;background:var(--surface-2)}.stat-label{color:var(--text-2);font-size:.76rem;text-transform:uppercase;letter-spacing:.08em}.stat-value{margin-top:.3rem;font-size:1.5rem;font-weight:700}.btn,button{border:1px solid var(--border-0);border-radius:var(--radius-pill);background:var(--surface-strong);color:var(--text-0);padding:.52rem .9rem;cursor:pointer;transition:transform var(--duration-fast) ease,box-shadow var(--duration-fast) ease,background var(--duration-fast) ease}.btn:hover,button:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}button.menu-overlay{position:fixed;inset:0;z-index:90;margin:0;padding:0;border:0;border-radius:0;width:auto;height:auto;background:rgba(15,23,42,.22);box-shadow:none;transform:none}button.menu-overlay:focus-visible,button.menu-overlay:hover{transform:none;box-shadow:none;outline:none}.btn:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid rgba(37,99,235,.65);outline-offset:2px}.btn-primary,button.primary{border-color:transparent;background:linear-gradient(135deg,var(--accent-0),var(--accent-1));color:#fff}.btn-ghost{background:transparent}.btn-danger,button.danger{color:var(--danger-0);background:var(--danger-1);border-color:rgba(180,35,24,.2)}.btn:disabled,button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.topbar-review-control-btn{width:2rem;height:2rem;min-width:2rem;padding:0;border-radius:.6rem;border:0;background:transparent;box-shadow:none;font-size:1rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;color:#334155}.topbar-review-control-btn:focus-visible,.topbar-review-control-btn:hover{transform:none;box-shadow:none;background:transparent}.field{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.field>span,.label{color:var(--text-1);font-size:.86rem;font-weight:540}input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;border:1px solid var(--border-0);border-radius:var(--radius-sm);background:var(--surface-strong);color:var(--text-0);padding:.6rem .72rem}input[type=checkbox],input[type=radio]{width:auto;padding:0;accent-color:var(--accent-0)}textarea.monospace{font-family:IBM Plex Mono,SFMono-Regular,ui-monospace,monospace;min-height:270px;line-height:1.38}.segmented-control{display:inline-flex;border:1px solid var(--border-0);border-radius:var(--radius-pill);background:var(--surface-2);padding:.2rem;gap:.2rem}.segmented-control button{border:0;background:transparent;border-radius:var(--radius-pill);padding:.45rem .8rem}.segmented-control button.is-active{background:var(--surface-strong);box-shadow:var(--shadow-sm)}.dropzone{border:2px dashed var(--border-0);border-radius:var(--radius-md);background:var(--surface-2);padding:1.1rem;text-align:center;transition:all var(--duration-fast) ease}.dropzone.is-active{border-color:var(--accent-1);background:#eaf2ff}.dropzone-icon{font-size:1.5rem;margin-bottom:.35rem}.badge,.chip,.pill{display:inline-flex;align-items:center;gap:.3rem;border-radius:var(--radius-pill);border:1px solid var(--border-0);padding:.22rem .55rem;font-size:.76rem;color:var(--text-1);background:var(--surface-2)}.badge-accent{color:#1e3a8a;background:var(--accent-2);border-color:rgba(37,99,235,.3)}.badge-danger{color:var(--danger-0);background:var(--danger-1);border-color:rgba(180,35,24,.25)}.table,.table-modern{width:100%;border-collapse:collapse;font-size:.95rem}.table td,.table th,.table-modern td,.table-modern th{text-align:left;padding:.68rem;border-bottom:1px solid var(--border-1)}.table thead th,.table-modern thead th{color:var(--text-2);font-weight:590;font-size:.76rem;text-transform:uppercase;letter-spacing:.08em}.table-modern tbody tr{transition:background var(--duration-fast) ease}.table-modern tbody tr:nth-child(2n){background:rgba(240,248,255,.55)}.table-modern tbody tr:hover{background:rgba(221,240,255,.45)}.dashboard-actions{justify-content:flex-end}.dashboard-actions .btn{white-space:nowrap}.dashboard-histogram-scroll{overflow-x:auto;overflow-y:hidden;padding-bottom:.2rem;-webkit-overflow-scrolling:touch}.dashboard-histogram{display:flex;align-items:flex-end;gap:.2rem;min-width:max-content;padding:.5rem .25rem .15rem}.dashboard-histogram-column{width:.34rem;display:grid;grid-template-rows:7.75rem .9rem;align-items:end;justify-items:center;position:relative}.dashboard-histogram-column.is-month-start:before{content:"";position:absolute;top:0;bottom:1rem;left:calc(50% - .5px);width:1px;background:rgba(37,99,235,.14)}.dashboard-histogram-bar-rail{width:100%;height:100%;display:flex;align-items:flex-end;position:relative}.dashboard-histogram-bar{width:100%;min-height:2px;border-radius:999px;background:rgba(59,130,246,.65);box-shadow:inset 0 0 0 1px rgba(37,99,235,.05)}.dashboard-histogram-bar.is-zero{background:rgba(148,163,184,.2);box-shadow:none}.dashboard-histogram-bar.is-today{background:linear-gradient(180deg,#1d4ed8,#3b82f6);box-shadow:inset 0 0 0 1px rgba(29,78,216,.18)}.dashboard-histogram-label{width:0;overflow:visible;font-size:.64rem;color:var(--text-2);white-space:nowrap;transform:translateX(-.1rem);pointer-events:none}.empty-state{border:1px dashed var(--border-0);border-radius:var(--radius-md);padding:1.2rem;text-align:center;background:var(--surface-2);position:relative;overflow:hidden}.review-confetti{position:fixed;inset:0;pointer-events:none;z-index:40}.review-confetti-piece{position:absolute;left:var(--confetti-left,50%);top:-12%;width:.5rem;height:.82rem;opacity:0;border-radius:.12rem;animation:review-confetti-fall var(--confetti-duration,2.4s) ease-out forwards;animation-delay:var(--confetti-delay,0s)}.review-confetti-piece:nth-child(8n+1){background:#f43f5e}.review-confetti-piece:nth-child(8n+2){background:#f59e0b}.review-confetti-piece:nth-child(8n+3){background:#22c55e}.review-confetti-piece:nth-child(8n+4){background:#06b6d4}.review-confetti-piece:nth-child(8n+5){background:#3b82f6}.review-confetti-piece:nth-child(8n+6){background:#a855f7}.review-confetti-piece:nth-child(8n+7){background:#ec4899}.review-confetti-piece:nth-child(8n+8){background:#f97316}@keyframes review-confetti-fall{0%{transform:translate3d(0,-15%,0) rotate(0deg) scale(.8);opacity:0}10%{opacity:1}68%{opacity:1}to{transform:translate3d(var(--confetti-drift,0),330px,0) rotate(var(--confetti-rotate,700deg)) scale(1.06);opacity:0}}.review-page{gap:1rem;align-content:start;padding-top:0;transition:padding-top .18s ease}.review-screen{min-height:0}.review-content-stack{align-content:start}.review-empty-screen{position:fixed;inset:0;display:grid;place-items:center;text-align:center;z-index:20}.review-empty-message{font-size:clamp(1.3rem,2.1vw,1.8rem);font-weight:650}.review-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem}.review-deck-field{min-width:280px}.review-card-grid{display:grid;grid-gap:1rem;gap:1rem}.review-card-panel{min-height:130px;display:flex;flex-direction:column}.review-question-panel{position:relative}.review-question-content-row{display:flex;gap:.5rem;align-items:flex-start;min-width:0}.review-question-content-row .review-markdown-full{min-height:3.2rem}.review-question-content-row>.review-markdown-full{flex:1 1;min-width:0}.card-history-overlay,.review-editor-overlay,.review-error-overlay{position:fixed;inset:0;background:rgba(15,23,42,.32);z-index:140;display:grid;align-items:center;justify-items:center;padding:1rem}.review-editor-overlay{overflow:hidden}.review-editor-modal{width:min(840px,calc(100vw - 2rem));max-height:calc(var(--app-visible-viewport-height) - 2rem);display:grid;grid-gap:.85rem;gap:.85rem;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.review-error-dialog{width:min(440px,calc(100vw - 2rem));display:grid;grid-gap:.9rem;gap:.9rem}.review-error-message{margin:0}.review-edit-answer-hidden{min-height:220px;border:1px solid var(--border-0);border-radius:var(--radius-sm);background:var(--surface-2);display:grid;place-items:center}.card-history-modal{width:min(680px,calc(100vw - 2rem));max-width:calc(100vw - 2rem);display:grid;grid-gap:.7rem;gap:.7rem;max-height:min(78vh,680px);overflow:auto;margin:0 auto}.review-markdown-full{flex:1 1;display:block}.review-editor-modal textarea,.review-markdown-full,.review-markdown-full .markdown,.review-markdown-full .markdown *{-webkit-user-select:text;-moz-user-select:text;user-select:text;-webkit-touch-callout:default}.review-markdown-full .markdown{max-width:none;width:100%;font-size:1.2rem;line-height:1.7}.review-markdown-full .markdown>:first-child{margin-top:0}.review-markdown-full .markdown>:last-child{margin-bottom:0}.reveal-center{display:flex;justify-content:center}.reveal-btn{width:min(320px,100%);min-width:220px}.review-hint{text-align:center}.card-history-empty,.card-history-subtitle{margin:0}.card-history-subtitle{white-space:pre-wrap;word-break:break-word}.card-history-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:.4rem;gap:.4rem}.card-history-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border:1px solid var(--border-0);border-radius:var(--radius-sm);padding:.45rem .6rem;background:var(--surface-2)}.card-history-time{color:var(--text-1);font-size:.9rem}.card-history-interval{flex:0 0 auto}.card-history-open-btn{padding:.34rem .72rem;border-radius:.65rem;font-size:.86rem}.dashboard-card-actions{white-space:nowrap;width:1%;display:flex;gap:.45rem}.review-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:.6rem;gap:.6rem;width:min(900px,100%);margin:0 auto}@media (min-width:1180px){.review-actions{grid-template-columns:repeat(4,minmax(0,1fr))}}.review-rate-btn{display:flex;align-items:center;justify-content:center;gap:.62rem;min-height:3rem;font-weight:600;width:100%}.review-interval-label,.review-rate-label{display:inline-flex;align-items:center;line-height:1}.review-interval-label{gap:.35rem;font-size:1rem;letter-spacing:.01em;white-space:nowrap}.review-interval-long{display:none}.review-rate-emoji{font-size:1.05em;line-height:1}.review-key-badge{width:1.72rem;height:1.72rem;min-width:1.72rem;justify-content:center;padding:0;line-height:1;font-size:.82rem}.btn-rating-again,.btn-rating-easy,.btn-rating-good,.btn-rating-hard{background:#e8eef9;border-color:#b5c4df;color:#29486d}.error{color:var(--danger-0);font-weight:560}.muted{color:var(--text-2)}.markdown{max-width:72ch;color:var(--text-0);line-height:1.55}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{margin-top:.9rem;margin-bottom:.4rem}.markdown ol,.markdown p,.markdown ul{margin:.45rem 0}.markdown li,.markdown p{white-space:pre-wrap;overflow-wrap:anywhere}.markdown blockquote,.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{overflow-wrap:anywhere}.markdown code{font-family:IBM Plex Mono,SFMono-Regular,ui-monospace,monospace;font-size:.86em;padding:.12rem .34rem;border-radius:.35rem;background:rgba(37,99,235,.12)}.markdown pre{border-radius:var(--radius-sm);padding:.7rem;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;background:#0f172a;color:#e2e8f0}.markdown pre code{display:block;white-space:inherit;overflow-wrap:inherit;word-break:inherit;background:transparent;padding:0;border-radius:0;font-size:inherit}.markdown img{display:block;width:100%;max-width:100%;height:auto;border-radius:var(--radius-sm)}.markdown blockquote{margin:.6rem 0;padding-left:.7rem;border-left:3px solid rgba(37,99,235,.55);color:var(--text-1)}.fade-in{animation:fade-in var(--duration-base) ease}.slide-up-soft{animation:slide-up-soft var(--duration-base) ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up-soft{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes drawer-in{0%{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:translateX(0)}}@media (max-width:860px){body,html{background:var(--mobile-chrome-bg)}body:before{inset:calc(env(safe-area-inset-top) + 4.4rem) 0 0}.grid-2,.stat-grid{grid-template-columns:1fr}.shell{width:var(--app-viewport-width);gap:.2rem;padding-top:0}.page{padding:max(.7rem,env(safe-area-inset-top) + .55rem) .9rem max(1rem,env(safe-area-inset-bottom) + 1rem)}.page-auth{padding:0}.settings-row{align-items:flex-start;flex-direction:column}.topbar{position:fixed;top:0;left:0;width:var(--app-viewport-width);transform:none;z-index:80;pointer-events:none}.topbar,.topbar-shell{background:transparent}.topbar-shell{padding:0;min-height:0;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.review-toolbar{align-items:stretch}.card-history-item,.review-question-content-row,.review-toolbar{flex-direction:column}.card-history-item{align-items:flex-start}.topbar-context{display:flex;align-items:center;flex-wrap:nowrap;position:absolute;top:calc(env(safe-area-inset-top) + .55rem);left:.65rem;right:.65rem;min-height:3rem;gap:.38rem;padding:.42rem .46rem;border:1px solid rgba(255,255,255,.62);border-radius:1rem;background:rgba(255,255,255,.84);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);box-shadow:none;background-clip:padding-box;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;opacity:0;visibility:hidden;transform:translateY(-.35rem) scale(.985);pointer-events:none;z-index:30;isolation:isolate;transition:opacity .18s ease,transform .18s ease,box-shadow .18s ease}.topbar-context:before{content:none}.topbar-context.is-review{display:flex;justify-content:flex-start;gap:.32rem}.topbar-review-left{flex:1 1 auto;width:auto;min-width:0;gap:.26rem;padding:0;border:0;background:transparent}.topbar-review-counter{flex:0 0 auto;min-width:0;padding:.2rem .48rem;border-radius:.62rem;border:1px solid rgba(203,213,225,.6);background:rgba(241,245,249,.9);box-shadow:none;color:#334155}.topbar-review-right{flex:0 0 auto;margin-left:auto;min-width:0;padding:0;border:0;background:transparent}.topbar-context::-webkit-scrollbar{display:none}.topbar-context.is-visible{opacity:1;visibility:visible;transform:translateY(0) scale(1);pointer-events:auto;box-shadow:0 12px 32px rgba(15,23,42,.12),0 2px 10px rgba(148,163,184,.18)}.topbar-deck-field{margin-left:0;min-width:0;flex:0 1 min(6.2rem,27vw);max-width:min(6.2rem,27vw);overflow:hidden}.topbar-review-controls{margin-left:0;justify-content:flex-end;gap:.18rem;flex:0 0 auto}.topbar-review-kbd-hint{flex:0 0 auto;max-width:min(7.1rem,28vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.16rem .44rem;border-radius:.52rem;border:0;background:transparent;color:#475569}.topbar-view-title{white-space:nowrap;flex:0 0 auto;font-size:.92rem;font-weight:630;color:#334155;padding:.28rem .55rem;border-radius:.62rem;background:rgba(241,245,249,.9);border:1px solid rgba(203,213,225,.6)}.topbar-context .menu-trigger{width:1.92rem;height:1.92rem;border-radius:.5rem;border:1px solid rgba(203,213,225,.56);background:rgba(248,250,252,.92);box-shadow:none}.topbar-context .menu-trigger:focus-visible,.topbar-context .menu-trigger:hover{transform:none;box-shadow:none}.topbar-context .topbar-review-control-btn{width:1.86rem;height:1.86rem;min-width:1.86rem;border-radius:.5rem;border:1px solid rgba(203,213,225,.56);background:rgba(248,250,252,.92);box-shadow:none}.topbar-context.is-mobile.is-visible .topbar-review-control-btn-optional{display:inline-flex}.topbar-review-left .topbar-deck-field select{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:1.92rem;padding:.3rem .5rem;border-radius:.5rem;border:1px solid rgba(203,213,225,.68);background:rgba(248,250,252,.96);box-shadow:none}.review-page{padding-top:.55rem;padding-bottom:max(1rem,env(safe-area-inset-bottom) + 1rem)}body[data-review-topbar-visible=true] .review-page{padding-top:4.25rem}.review-deck-field{min-width:100%}.reveal-btn{width:100%;max-width:360px}.review-interval-short{display:none}.review-interval-long{display:inline}.card-history-overlay,.review-editor-overlay{padding:.6rem}.review-editor-overlay{align-items:flex-start;overflow-y:auto}.card-history-modal,.review-editor-modal{width:calc(var(--app-viewport-width) - 1.2rem);max-width:calc(var(--app-viewport-width) - 1.2rem);max-height:calc(var(--app-visible-viewport-height) - 1.2rem);margin:0 auto}.menu-drawer{width:min(360px,92vw)}.dashboard-table thead{display:none}.dashboard-table,.dashboard-table tbody,.dashboard-table td,.dashboard-table tr{display:block;width:100%}.dashboard-table tbody tr{border:1px solid var(--border-0);border-radius:var(--radius-md);padding:.7rem;margin-bottom:.7rem;background:var(--surface-strong)}.dashboard-table td{border:0;padding:.38rem 0;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.dashboard-table td:before{content:attr(data-label);color:var(--text-2);font-size:.74rem;text-transform:uppercase;letter-spacing:.08em}.dashboard-table td[data-label=Actions]{display:block;padding-top:.6rem}.dashboard-table td[data-label=Actions]:before{display:none}.dashboard-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:.45rem;gap:.45rem}.dashboard-actions .btn{width:100%;text-align:center;padding:.45rem .55rem;border-radius:.8rem}.auth-stage{grid-template-columns:minmax(0,1fr)}.auth-stage:before{inset:0 auto auto 0;width:100%;height:10rem}.auth-title{max-width:10ch}.auth-provider-button{align-items:center}.auth-shell{min-height:calc(var(--app-visible-viewport-height) - 1rem);place-items:center;padding:.5rem 0 .75rem}.auth-stage-minimal{justify-content:stretch}.auth-stage-minimal:before{width:100%;height:16rem;transform:translate(-50%,-44%)}.auth-hero,.auth-panel{padding:1.2rem;border-radius:1.25rem}.auth-copy{max-width:20rem}.auth-minimal{width:100%;gap:2.4rem;padding:max(.75rem,env(safe-area-inset-top) + .25rem) 0 max(.75rem,env(safe-area-inset-bottom) + .25rem)}.auth-provider-button-centered{padding-right:3.2rem;padding-left:1.35rem}.auth-provider-form-minimal{width:100%}}@media (max-width:560px){.auth-title-minimal{gap:.18em;font-size:clamp(2.45rem,12vw,3.4rem);line-height:.95}.auth-stage-minimal:before{height:12rem;filter:blur(28px)}.shell-auth{width:min(100%,calc(var(--app-viewport-width) - 1rem));padding:.5rem 0}.auth-stage{gap:.85rem}.auth-shell{padding-bottom:max(1rem,env(safe-area-inset-bottom))}.auth-stage:before{height:7rem;filter:blur(18px)}.auth-title{max-width:none;font-size:clamp(2rem,12vw,3rem)}.auth-panel h2{font-size:1.7rem}.auth-minimal{width:100%;gap:2.4rem;padding:max(.9rem,env(safe-area-inset-top) + .25rem) 0 max(1rem,env(safe-area-inset-bottom) + .25rem)}.auth-provider-button-centered{min-height:3.5rem;padding:.95rem 3.1rem .95rem 1.2rem}.auth-provider-form-minimal{width:min(100%,17rem)}}@media (min-width:561px){.auth-title-minimal>span{white-space:nowrap}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:1ms!important;transition-duration:1ms!important;scroll-behavior:auto!important}}@media (max-width:380px){.review-interval-short{display:inline}.review-interval-long{display:none}}.markdown .math-inline{display:inline-flex;align-items:baseline;gap:.04em;font-family:Times New Roman,Cambria Math,serif;font-size:1.06em}.markdown .math-inline sub,.markdown .math-inline sup{font-size:.75em;line-height:0}.markdown .math-frac{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;margin:0 .08em;line-height:1.1}.markdown .math-frac-top{border-bottom:1px solid;padding:0 .18em .08em}.markdown .math-frac-bottom{padding:.08em .18em 0}.markdown .math-overline{display:inline-block;-webkit-text-decoration-line:overline;text-decoration-line:overline;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-decoration-thickness:from-font}