:root{--bg-canvas: #f8fafc;--bg-surface: #ffffff;--bg-subtle: #f4f4f5;--bg-muted: #e4e4e7;--bg-inverse: #09090b;--border-subtle: rgba(228, 228, 231, .6);--border-default: #e4e4e7;--border-strong: #d4d4d8;--border-focus: #09090b;--text-primary: #09090b;--text-secondary: #52525b;--text-muted: #71717a;--text-subtle: #a1a1aa;--text-inverse: #fafafa;--brand-primary: #0d9488;--brand-primary-hover: #0f766e;--brand-primary-subtle: #f0fdfa;--brand-primary-border: #ccfbf1;--brand-primary-text: #0f766e;--accent-zinc: #18181b;--accent-zinc-hover: #27272a;--success: #10b981;--success-subtle: #ecfdf5;--success-border: #a7f3d0;--warning: #f59e0b;--warning-subtle: #fffbeb;--warning-border: #fde68a;--error: #f43f5e;--error-subtle: #fff1f2;--error-border: #fecdd3;--info: #0ea5e9;--info-subtle: #f0f9ff;--info-border: #bae6fd;--font-sans: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-serif: "Newsreader", Georgia, serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .04);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .02);--shadow-md: 0 4px 12px -2px rgba(0, 0, 0, .05), 0 2px 6px -1px rgba(0, 0, 0, .03);--shadow-lg: 0 12px 28px -6px rgba(0, 0, 0, .06), 0 4px 10px -2px rgba(0, 0, 0, .03);--shadow-bezel: inset 0 1px 0 rgba(255, 255, 255, .8), 0 1px 3px rgba(0, 0, 0, .04);--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-in-out: cubic-bezier(.77, 0, .175, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1);--transition-fast: .14s cubic-bezier(.23, 1, .32, 1);--transition-base: .2s cubic-bezier(.23, 1, .32, 1);--transition-slow: .3s cubic-bezier(.23, 1, .32, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}button{font-family:inherit;background:transparent;border:none;cursor:pointer;outline:none}html{font-family:var(--font-sans);font-size:15px;line-height:1.5;color:var(--text-primary);background-color:var(--bg-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{min-height:100vh;display:flex;flex-direction:column;background-color:var(--bg-canvas)}#root{display:flex;flex-direction:column;min-height:100vh}h1,h2,h3,h4{font-family:var(--font-sans);font-weight:650;color:var(--text-primary);letter-spacing:-.025em;line-height:1.25}.font-serif{font-family:var(--font-serif);font-weight:500;letter-spacing:-.015em}h1{font-size:1.85rem}h2{font-size:1.4rem}h3{font-size:1.15rem}h4{font-size:.95rem}p{color:var(--text-secondary);font-size:.92rem;line-height:1.6}a{color:var(--text-primary);text-decoration:none;transition:color var(--transition-fast)}.card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:transform var(--transition-fast),box-shadow var(--transition-fast),border-color var(--transition-fast)}.card-hover:hover{border-color:#18181b2e;box-shadow:var(--shadow-md);transform:translateY(-1px)}.double-bezel{background:#f4f4f5bf;border:1px solid rgba(228,228,231,.8);border-radius:var(--radius-xl);padding:4px;box-shadow:var(--shadow-xs)}.double-bezel-inner{background:#fff;border-radius:calc(var(--radius-xl) - 4px);box-shadow:var(--shadow-bezel);border:1px solid rgba(228,228,231,.5)}.nav-item{display:flex;align-items:center;gap:.75rem;padding:.55rem .85rem;border-radius:var(--radius-md);font-size:.88rem;font-weight:500;color:var(--text-secondary);background:transparent;border:1px solid transparent;cursor:pointer;width:100%;text-align:left;transition:background-color .15s ease-out,color .15s ease-out,border-color .15s ease-out}.nav-item:hover{background-color:var(--bg-subtle);color:var(--text-primary)}.nav-item:active{transform:scale(.98)}.nav-item.active{background-color:var(--bg-subtle);color:var(--text-primary);font-weight:600;border-color:var(--border-default);box-shadow:var(--shadow-xs)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;font-size:.88rem;font-weight:550;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:transform .16s cubic-bezier(.16,1,.3,1),background-color .16s ease-out,box-shadow .16s ease-out;white-space:nowrap;font-family:inherit}.btn:active{transform:scale(.97)}.btn-primary{background-color:var(--accent-zinc);color:#fff;border-color:#ffffff14;box-shadow:inset 0 1px #fff3,0 1px 3px #0000001a}.btn-primary:hover{background-color:var(--accent-zinc-hover);box-shadow:inset 0 1px #ffffff40,0 3px 8px #00000024}.btn-secondary{background-color:var(--bg-surface);color:var(--text-primary);border-color:var(--border-default);box-shadow:var(--shadow-xs)}.btn-secondary:hover{background-color:var(--bg-subtle);border-color:var(--border-strong)}.btn-ghost{background-color:transparent;color:var(--text-secondary)}.btn-ghost:hover{background-color:var(--bg-subtle);color:var(--text-primary)}.btn-subtle{background-color:transparent;color:var(--text-secondary);border:1px solid var(--border-default)}.btn-subtle:hover{background-color:var(--bg-subtle);color:var(--text-primary);border-color:var(--border-strong)}.btn-sm{padding:.35rem .7rem;font-size:.8rem;border-radius:var(--radius-sm)}.btn-lg{padding:.75rem 1.4rem;font-size:.95rem;border-radius:var(--radius-lg)}.input,.textarea,.select{width:100%;padding:.55rem .85rem;font-size:.9rem;font-family:inherit;color:var(--text-primary);background-color:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:inset 0 1px 2px #00000005;transition:all var(--transition-fast)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 2px #18181b14}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;font-size:.72rem;font-weight:600;border-radius:var(--radius-full);letter-spacing:.02em;border:1px solid transparent}.badge-brand{background-color:var(--brand-primary-subtle);color:var(--brand-primary-text);border-color:var(--brand-primary-border)}.badge-zinc,.badge-neutral{background-color:var(--bg-subtle);color:var(--text-secondary);border-color:var(--border-default)}.badge-success{background-color:var(--success-subtle);color:var(--success);border-color:var(--success-border)}.badge-warning{background-color:var(--warning-subtle);color:var(--warning);border-color:var(--warning-border)}.avatar-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--brand-primary),#0f766e);color:#fff;font-weight:700;font-size:.8rem;letter-spacing:-.02em;box-shadow:0 1px 3px #0000001f;flex-shrink:0;position:relative;text-transform:uppercase;-webkit-user-select:none;user-select:none}.alert{padding:.85rem 1rem;border-radius:var(--radius-lg);border:1px solid;font-size:.88rem;display:flex;gap:.75rem;align-items:flex-start}.alert-warning{background-color:#fffbeb;border-color:#fde68a;color:#92400e}.alert-info{background-color:#f0f9ff;border-color:#bae6fd;color:#0369a1}.alert-success{background-color:#ecfdf5;border-color:#a7f3d0;color:#065f46}.fade-in{animation:springFadeIn .28s var(--ease-spring) forwards}@keyframes springFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes modalEntrance{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-enter{animation:modalEntrance .22s cubic-bezier(.16,1,.3,1) forwards}.flashcard-perspective{perspective:1200px;width:100%}.flashcard-flipper{position:relative;width:100%;height:400px;transform-style:preserve-3d;transition:transform .46s cubic-bezier(.23,1,.32,1);border-radius:var(--radius-xl)}.flashcard-flipper.flipped{transform:rotateY(180deg)}.flashcard-face{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:var(--radius-xl);box-sizing:border-box;overflow:hidden;display:flex;flex-direction:column}.flashcard-front{transform:rotateY(0);z-index:2}.flashcard-back{transform:rotateY(180deg);z-index:1}@media (min-width: 769px){.mobile-only{display:none!important}}@media (max-width: 768px){.desktop-only,.desktop-sidebar{display:none!important}}.card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:0 1px 2px #00000008}.double-bezel{background:#f4f4f5cc;border:1px solid rgba(228,228,231,.95);border-radius:var(--radius-xl);padding:5px;box-shadow:0 1px 3px #00000005}.double-bezel-inner{background:#fff;border-radius:calc(var(--radius-xl) - 5px);border:1px solid rgba(228,228,231,.7);box-shadow:inset 0 1px #ffffffe6,0 1px 2px #00000008}@keyframes fadeScaleIn{0%{opacity:0;transform:translateY(-50%) scale(.95)}to{opacity:1;transform:translateY(-50%) scale(1)}}@keyframes pulseDot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.35);opacity:.45}}@keyframes timerMorph{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.rail-toggle-wrapper{position:relative;display:inline-flex}.rail-toggle-btn{width:38px;height:38px;border-radius:var(--radius-md);background-color:#09090b;color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-xs);cursor:pointer;border:1px solid transparent;transition:background-color .16s var(--ease-out),color .16s var(--ease-out),border-color .16s var(--ease-out)}.rail-toggle-btn:hover{background-color:var(--bg-subtle);color:#09090b;border-color:var(--border-default)}.rail-toggle-btn:active{transform:scale(.96)}.rail-toggle-btn .icon-panel{display:none}.rail-toggle-btn .icon-cap,.rail-toggle-btn:hover .icon-panel{display:block}.rail-toggle-btn:hover .icon-cap{display:none}.rail-tooltip{position:absolute;left:calc(100% + 12px);top:50%;transform:translateY(-50%) scale(.95);background-color:#09090b;color:#fff;padding:6px 10px;border-radius:var(--radius-sm);font-size:.76rem;font-weight:600;white-space:nowrap;box-shadow:0 4px 16px #00000038;pointer-events:none;z-index:9999;opacity:0;visibility:hidden;transition:opacity .12s cubic-bezier(.23,1,.32,1),transform .12s cubic-bezier(.23,1,.32,1)}.rail-toggle-wrapper:hover .rail-tooltip{opacity:1;visibility:visible;transform:translateY(-50%) scale(1)}.rail-toggle-wrapper:active .rail-tooltip,.rail-toggle-btn:active+.rail-tooltip{opacity:0!important;visibility:hidden!important}
