:root{--color-bg:#fffdfa;--color-bg-secondary:#fff7ed;--color-bg-hover:#fef3e2;--color-border:#eadfd0;--color-border-light:#f5ede3;--color-text:#1f2937;--color-text-muted:#6b7280;--color-text-faint:#9ca3af;--color-primary:#f59e0b;--color-primary-hover:#d97706;--color-primary-light:#fff2cc;--color-primary-strong:#c2410c;--color-primary-glow:#f59e0b47;--color-primary-rgb:245, 158, 11;--color-accent:#ef4444;--color-accent-light:#ffe4e6;--color-bg-alt:#fff3e6;--color-bg-rgb:255, 253, 250;--color-weekend:#10b981;--color-week1:#f59e0b;--color-week2:#f97316;--color-week3:#0ea5e9;--color-week4:#8b5cf6;--sidebar-width:270px;--toc-width:220px;--header-height:64px;--radius-sm:10px;--radius-md:16px;--radius-lg:24px;--radius-xl:36px;--shadow-sm:0 2px 6px #0f172a0d, 0 1px 2px #0f172a08;--shadow-md:0 18px 36px #0f172a14, 0 8px 18px #0f172a0d;--shadow-lg:0 28px 64px #0f172a1f, 0 10px 24px #0f172a14;--font-sans:"Inter", "Noto Sans KR", system-ui, -apple-system, sans-serif;--font-heading:"Outfit", "Noto Sans KR", system-ui, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "Cascadia Code", monospace}html[data-theme=dark]{--color-bg:#111827;--color-bg-secondary:#1f2937;--color-bg-hover:#2d3748;--color-border:#334155;--color-border-light:#1f2937;--color-text:#f8fafc;--color-text-muted:#cbd5e1;--color-text-faint:#94a3b8;--color-primary:#fbbf24;--color-primary-hover:#f59e0b;--color-primary-light:#3b2f14;--color-primary-strong:#fdba74;--color-primary-glow:#fbbf2438;--color-primary-rgb:251, 191, 36;--color-accent:#fb7185;--color-accent-light:#4c1d27;--color-bg-alt:#162131;--color-bg-rgb:17, 24, 39;--color-week1:#fbbf24;--color-week2:#fb923c;--color-week3:#38bdf8;--color-week4:#c084fc;--shadow-sm:0 4px 10px #00000059;--shadow-md:0 16px 32px #0000006b;--shadow-lg:0 28px 56px #00000080}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);scroll-behavior:smooth;font-size:16px;line-height:1.6;transition:background-color .2s,color .2s}body{background:radial-gradient(circle at top,#f59e0b14,#0000 26%),linear-gradient(#fff7ed99,#fff0);min-height:100vh}html[data-theme=dark] body{background:radial-gradient(circle at top,#fbbf2414,#0000 22%),linear-gradient(#111827f5,#111827)}a{color:var(--color-primary-strong);text-decoration:none}a:hover{text-decoration:underline}button,input,textarea,select{font:inherit}button{color:inherit}img{max-width:100%}::selection{background:var(--color-primary-light);color:var(--color-text)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-faint)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:-.03em}.lesson-content h2{border-bottom:2px solid var(--color-border);color:var(--color-text);scroll-margin-top:calc(var(--header-height) + 24px);margin:3.5rem 0 1.25rem;padding-bottom:.75rem;font-size:1.7rem;font-weight:800}.lesson-content h3{color:var(--color-text);margin:2.25rem 0 1rem;font-size:1.2rem;font-weight:700}.lesson-content p{color:var(--color-text);margin-bottom:1.1rem;line-height:1.85}.lesson-content ul,.lesson-content ol{color:var(--color-text);margin:.75rem 0 1.1rem 1.5rem}.lesson-content li{margin-bottom:.5rem;line-height:1.75}.lesson-content code{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-secondary);color:var(--color-primary-strong);font-family:var(--font-mono);padding:.15em .45em;font-size:.855em}html[data-theme=dark] .lesson-content code{color:#fcd34d}.lesson-content pre{border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#111827;border:1px solid #334155;margin:1.25rem 0;padding:1.35rem 1.5rem;overflow-x:auto}html[data-theme=dark] .lesson-content pre{background:#0b1220;border-color:#1f2937}.lesson-content pre code{color:#e5e7eb;background:0 0;border:none;padding:0;font-size:.9rem}.lesson-content blockquote{border-left:4px solid var(--color-primary);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--color-primary-light);color:var(--color-text-muted);margin:1.25rem 0;padding:1.05rem 1.2rem;font-style:italic}.placeholder-section{border:2px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);color:var(--color-text-faint);text-align:center;margin:1.5rem 0;padding:2.5rem 2rem}.placeholder-section p{margin-bottom:.5rem;color:var(--color-text-faint)!important}.badge{background:var(--color-bg-secondary);min-height:26px;color:var(--color-text-muted);border-radius:999px;align-items:center;padding:0 .7rem;font-size:.76rem;font-weight:700;display:inline-flex}
.auth-loading{justify-content:center;align-items:center;width:34px;height:34px;display:flex}.auth-spinner{border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:14px;height:14px;animation:.7s linear infinite auth-spin}@keyframes auth-spin{to{transform:rotate(360deg)}}.auth-login-btn{background:linear-gradient(135deg, var(--color-primary), var(--color-accent));color:#fff;height:34px;font-size:.85rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;white-space:nowrap;box-shadow:0 2px 8px var(--color-primary-glow);border:none;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;padding:0 1.25rem;line-height:1;transition:transform .15s,box-shadow .15s,filter .15s;display:inline-flex}.auth-login-btn:hover:not(:disabled){box-shadow:0 4px 12px var(--color-primary-glow);filter:brightness(1.1);transform:translateY(-1px)}html[data-theme=dark] .auth-login-btn{box-shadow:0 2px 8px var(--color-primary-glow)}html[data-theme=dark] .auth-login-btn:hover:not(:disabled){box-shadow:0 4px 12px var(--color-primary-glow)}.auth-login-btn:disabled{opacity:.7;cursor:not-allowed}.auth-login-text{display:inline}.auth-error{color:#b91c1c;border-radius:var(--radius-md);white-space:nowrap;box-shadow:var(--shadow-md);cursor:pointer;z-index:100;background:#fef2f2;border:1px solid #fecaca;padding:.5rem .75rem;font-size:.78rem;font-weight:500;animation:.15s auth-menu-in;position:absolute;top:calc(100% + 8px);right:0}html[data-theme=dark] .auth-error{color:#fca5a5;background:#450a0a;border-color:#7f1d1d}.auth-user{position:relative}.auth-avatar-btn{border:1.5px solid var(--color-border);cursor:pointer;width:34px;height:34px;font-family:var(--font-sans);background:0 0;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:border-color .15s,box-shadow .15s;display:inline-flex}.auth-avatar-btn:hover{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-glow)}.auth-avatar-img{object-fit:cover;border-radius:50%;width:30px;height:30px}.auth-avatar-placeholder{background:linear-gradient(135deg, var(--color-primary), #818cf8);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:.72rem;font-weight:700;display:flex}.auth-name{display:none}.auth-menu-backdrop{z-index:98;position:fixed;inset:0}.auth-menu{z-index:99;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:210px;animation:.18s auth-menu-in;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}@keyframes auth-menu-in{0%{opacity:0;transform:translateY(-6px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.auth-menu-info{align-items:center;gap:.75rem;padding:1rem;display:flex}.auth-menu-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:36px;height:36px}.auth-menu-avatar-placeholder{background:linear-gradient(135deg, var(--color-primary), #818cf8);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.85rem;font-weight:700;display:flex}.auth-menu-text{min-width:0}.auth-menu-name{color:var(--color-text);font-size:.875rem;font-weight:700}.auth-menu-email{color:var(--color-text-muted);margin-top:.2rem;font-size:.72rem}.auth-menu-divider{border:none;border-top:1px solid var(--color-border);margin:0}.auth-menu-item{width:100%;font-size:.85rem;font-family:var(--font-sans);cursor:pointer;color:var(--color-text);text-align:left;background:0 0;border:none;align-items:center;gap:.5rem;padding:.625rem 1rem;transition:background .15s;display:flex}.auth-logout{color:#ef4444}.auth-menu-item:hover{background:var(--color-bg-hover)}.auth-modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000073;justify-content:center;align-items:center;padding:1rem;animation:.2s overlay-in;display:flex;position:fixed;inset:0}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.auth-modal{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:420px;padding:2.25rem 2rem 2rem;animation:.25s cubic-bezier(.34,1.56,.64,1) modal-in;position:relative;box-shadow:0 24px 60px #0003}@keyframes modal-in{0%{opacity:0;transform:scale(.92)translateY(12px)}to{opacity:1;transform:scale(1)translateY(0)}}.auth-modal h2{color:var(--color-text);text-align:center;margin:0 0 1.25rem;font-size:1.5rem;font-weight:800}.auth-modal-close{background:var(--color-bg-hover);width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;line-height:1;transition:background .15s,color .15s;display:flex;position:absolute;top:1rem;right:1rem}.auth-modal-close:hover{background:var(--color-border);color:var(--color-text)}.auth-modal-tabs{border-radius:var(--radius-md);background:var(--color-bg-secondary);gap:2px;margin-bottom:1.5rem;padding:3px;display:flex}.auth-modal-tab{border-radius:calc(var(--radius-md) - 3px);color:var(--color-text-muted);font-size:.85rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:1;padding:.5rem .75rem;transition:background .15s,color .15s}.auth-modal-tab.active{background:var(--color-bg);color:var(--color-text);box-shadow:0 1px 4px #00000014}.auth-modal-form{flex-direction:column;gap:.75rem;margin-bottom:1.25rem;display:flex}.auth-modal-form input{border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;color:var(--color-text);font-size:.9rem;font-family:var(--font-sans);box-sizing:border-box;outline:none;padding:.7rem 1rem;transition:border-color .15s,box-shadow .15s}.auth-modal-form input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-glow)}.auth-form-error{color:#b91c1c;border-radius:var(--radius-sm);white-space:normal;box-shadow:none;background:#fef2f2;border:1px solid #fecaca;padding:.5rem .75rem;font-size:.8rem;animation:none;position:static}html[data-theme=dark] .auth-form-error{color:#fca5a5;background:#450a0a;border-color:#7f1d1d}.auth-submit-btn{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--color-primary), var(--color-accent));color:#fff;width:100%;font-size:.95rem;font-weight:700;font-family:var(--font-sans);cursor:pointer;box-shadow:0 4px 14px var(--color-primary-glow);border:none;margin-top:.25rem;padding:.75rem;transition:filter .15s,transform .15s,box-shadow .15s}.auth-submit-btn:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 6px 18px var(--color-primary-glow);transform:translateY(-1px)}.auth-submit-btn:disabled{opacity:.65;cursor:not-allowed}.auth-divider{color:var(--color-text-faint);align-items:center;gap:.75rem;margin:1.25rem 0;font-size:.8rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";border-top:1px solid var(--color-border);flex:1}.auth-google-btn{border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;color:var(--color-text);font-size:.9rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;justify-content:center;align-items:center;gap:.6rem;padding:.7rem 1rem;transition:background .15s,border-color .15s,box-shadow .15s;display:flex}.auth-google-btn:hover{background:var(--color-bg-secondary);border-color:var(--color-primary);box-shadow:0 2px 8px var(--color-primary-glow)}@media (max-width:768px){.auth-login-btn{padding:0 .9rem;font-size:.8rem}.auth-modal-overlay{align-items:flex-end;padding:0}.auth-modal{max-width:100%;padding:1.5rem 1rem calc(1rem + env(safe-area-inset-bottom,0px));border-radius:20px 20px 0 0;animation:none}.auth-modal h2{margin-bottom:1rem;font-size:1.25rem}.auth-modal-tabs{margin-bottom:1rem}.auth-modal-tab{padding:.55rem .5rem;font-size:.8rem}}@media (max-width:480px){.auth-login-btn{padding:0 .75rem;font-size:.76rem}.auth-modal{padding-left:.875rem;padding-right:.875rem}.auth-google-btn,.auth-submit-btn{font-size:.86rem}}
