:root{--bg: #f0f1f6;--panel: rgba(230,232,242,.65);--card: rgba(225,228,240,.55);--text: #1d1d1f;--muted: #86868b;--accent: #0071e3;--accent-hover: #0077ed;--accent-soft: rgba(0,113,227,.08);--border: rgba(100,110,140,.1);--border-strong: rgba(100,110,140,.16);--shadow-sm: 0 2px 8px rgba(0,0,0,.04);--shadow: 0 8px 30px rgba(60,70,100,.08);--shadow-lg: 0 20px 60px rgba(60,70,100,.12);--radius: 16px;--radius-lg: 22px;--radius-xl: 28px;--glass-bg: rgba(230,232,245,.6);--glass-border: rgba(200,205,225,.5);--glass-blur: saturate(180%) blur(20px);--transition: .3s cubic-bezier(.25, .46, .45, .94);--spring: .5s cubic-bezier(.34, 1.56, .64, 1)}*{box-sizing:border-box;margin:0;padding:0}html{height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,system-ui,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5}#root{height:100%}a{color:var(--accent);text-decoration:none;transition:opacity var(--transition)}a:hover{opacity:.8}.glass{background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--shadow);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}.nav{position:sticky;top:0;z-index:100;background:#ebedf5bf;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--border)}.nav-inner{max-width:1120px;margin:0 auto;padding:0 24px;height:52px;display:flex;align-items:center;gap:24px}.logo{font-size:20px;font-weight:700;color:var(--text);letter-spacing:-.3px;flex-shrink:0}.nav-menu{display:flex;gap:24px;align-items:center;flex:1}.nav-menu a{color:var(--text);text-decoration:none;font-size:14px;font-weight:500;opacity:.65;transition:opacity var(--transition)}.nav-menu a:hover{opacity:1}.nav-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.nav-user{font-size:13px;font-weight:600;color:var(--accent);background:var(--accent-soft);padding:5px 12px;border-radius:999px;white-space:nowrap}.search{display:flex;align-items:center;gap:8px;background:#0000000a;border:1px solid transparent;border-radius:10px;padding:7px 12px;transition:all var(--transition)}.search:focus-within{background:#f0f1f8e6;border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.search input{border:0;outline:0;width:120px;background:transparent;color:var(--text);font-size:13px}.search .icon{width:14px;height:14px;border-radius:4px;background:var(--muted);opacity:.35;display:inline-block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:980px;border:none;background:#0000000a;color:var(--text);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--transition);white-space:nowrap}.btn:hover{background:#00000014}.btn:active{transform:scale(.97)}.primary{background:var(--accent);color:#fff;border:none}.primary:hover{background:var(--accent-hover);color:#fff}.primary:disabled{opacity:.5;cursor:not-allowed}.container{padding:32px 24px 60px;max-width:1120px;margin:0 auto}.layout{display:grid;grid-template-columns:1fr 280px;gap:24px;align-items:start}.sidebar{border-radius:var(--radius-lg);padding:20px;position:sticky;top:76px}.sidebar h2{font-size:15px;font-weight:600;color:var(--muted);margin:0 0 12px;letter-spacing:-.2px}.sidebar .list{list-style:none;display:flex;flex-direction:column;gap:4px}.chapter-link{width:100%;padding:10px 14px;border-radius:12px;border:none;background:transparent;color:var(--text);text-align:left;cursor:pointer;font-size:14px;font-weight:500;line-height:1.4;transition:all var(--transition)}.chapter-link:hover{background:#0000000a}.chapter-link.active{background:var(--accent);color:#fff;box-shadow:0 4px 14px #0071e34d}.content h2{font-size:28px;font-weight:700;letter-spacing:-.5px;margin:0 0 4px}.subtitle{color:var(--muted);font-size:15px;margin-bottom:20px}.section-card{border-radius:var(--radius-lg);padding:24px;margin-bottom:16px;transition:transform var(--transition),box-shadow var(--transition)}.section-card:hover{transform:translateY(-1px)}.section-card summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px}.section-card summary::-webkit-details-marker{display:none}.section-card h3{margin:0;font-size:18px;font-weight:600;letter-spacing:-.3px}.section-card h4{margin:20px 0 8px;font-size:13px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.5px}.section-card ul,.section-card ol{margin:6px 0 0;padding-left:20px}.section-card li{margin-bottom:4px;font-size:14px;line-height:1.6;color:#424245}.arrow{width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .3s ease;flex-shrink:0}details[open] .arrow{transform:rotate(45deg)}.collapse{max-height:0;overflow:hidden;transition:max-height .5s ease}details[open] .collapse{max-height:4000px}.tip{border-radius:14px;padding:16px 18px;margin-top:16px;background:#0071e30f;border:1px solid rgba(0,113,227,.12);border-left:4px solid var(--accent)}.tip-title{font-weight:700;font-size:14px;margin-bottom:6px;color:var(--accent)}.tip ul{margin:6px 0 0;padding-left:18px}.tip li{font-size:14px;color:#424245}.video-wrap{margin-top:16px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);transition:transform var(--transition),box-shadow var(--transition)}.video-wrap:hover{transform:scale(1.005);box-shadow:var(--shadow-lg)}.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}.reveal.show{opacity:1;transform:none}.hero{position:relative;border-radius:var(--radius-xl);padding:56px 40px;overflow:hidden;margin-bottom:32px}.hero-blur{position:relative;overflow:hidden}.hero-blur:before{content:"";position:absolute;top:-30%;right:-30%;bottom:-30%;left:-30%;background:radial-gradient(800px 500px at 20% 20%,rgba(0,113,227,.15),transparent 60%),radial-gradient(600px 400px at 80% 10%,rgba(88,86,214,.12),transparent 60%),radial-gradient(500px 300px at 50% 90%,rgba(52,199,89,.08),transparent 50%);filter:blur(60px);z-index:0;animation:float 20s ease infinite}@keyframes float{0%,to{transform:translate(0) rotate(0)}33%{transform:translate(2%,-1%) rotate(.5deg)}66%{transform:translate(-1%,1%) rotate(-.5deg)}}.hero-blur .hero-content{position:relative;z-index:1}.hero-title{font-size:48px;font-weight:700;letter-spacing:-1.5px;margin:0 0 8px;line-height:1.1}.hero-subtitle{font-size:18px;color:var(--muted);font-weight:400}.gradient-text{background:linear-gradient(135deg,#1d1d1f,#424245,#1d1d1f);background-size:200% 200%;-webkit-background-clip:text;background-clip:text;color:transparent}.shiny-text{background:linear-gradient(120deg,var(--accent),#5856d6,#34c759,var(--accent));background-size:300% 300%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 8s ease infinite}@keyframes shimmer{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:32px}.hero-card{border-radius:var(--radius-lg);padding:28px;position:relative;overflow:hidden;transition:transform var(--spring),box-shadow var(--transition)}.hero-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.hero-card.dark{color:#fff;background:linear-gradient(135deg,#1d1d1f,#2c2c2e);border:1px solid rgba(255,255,255,.08)}.hero-card.dark:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(400px 300px at 10% 10%,rgba(0,113,227,.2),transparent 60%);pointer-events:none}.hero-card.light{background:#e1e4f58c;border:1px solid var(--glass-border);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}.hero-heading{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;opacity:.7;margin-bottom:4px}.hero-title-xl{font-size:24px;font-weight:700;letter-spacing:-.5px;margin:6px 0 8px;line-height:1.2}.hero-sub{font-size:14px;opacity:.75;line-height:1.5}.pill-row{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0 16px}.pill{display:inline-block;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:600;background:#ffffff1f;border:1px solid rgba(255,255,255,.15);color:inherit;letter-spacing:.3px}.hero-card.light .pill{background:var(--accent-soft);border-color:#0071e31a;color:var(--accent)}.cta{display:inline-flex;align-items:center;gap:6px;padding:10px 18px;border-radius:980px;font-size:14px;font-weight:600;border:none;cursor:pointer;transition:all var(--transition);text-decoration:none}.cta:hover{opacity:1;transform:translate(2px)}.cta.primary{background:var(--accent);color:#fff}.cta.light{background:#0000000f;color:var(--text)}.chev{display:inline-block;width:8px;height:8px;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg);transition:transform var(--transition)}.cta:hover .chev{transform:rotate(45deg) translate(2px)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);position:relative;overflow:hidden}.login-page:before{content:"";position:absolute;top:-30%;right:-30%;bottom:-30%;left:-30%;background:radial-gradient(600px 400px at 25% 30%,rgba(0,113,227,.12),transparent 60%),radial-gradient(500px 350px at 75% 70%,rgba(88,86,214,.1),transparent 60%),radial-gradient(400px 300px at 50% 10%,rgba(52,199,89,.06),transparent 50%);filter:blur(60px);z-index:0;animation:float 20s ease infinite}.login-page-inner{position:relative;z-index:1;width:100%;max-width:380px;padding:0 20px}.login-brand{text-align:center;margin-bottom:32px}.login-brand .logo{font-size:32px;font-weight:700;color:var(--text);letter-spacing:-.5px}.login-card{padding:36px;border-radius:var(--radius-xl)}.login-card h2{font-size:24px;font-weight:700;letter-spacing:-.3px;margin-bottom:24px}.login-field{margin-bottom:16px}.login-field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--muted)}.login-field input{width:100%;padding:12px 16px;border-radius:12px;border:1px solid var(--border-strong);background:#f0f1f8cc;color:var(--text);font-size:15px;outline:none;transition:all var(--transition)}.login-field input:focus{border-color:var(--accent);box-shadow:0 0 0 4px #0071e31a;background:#f5f6fcf2}.login-field input::placeholder{color:#c7c7cc}.login-error{color:#ff3b30;font-size:13px;font-weight:500;padding:8px 12px;background:#ff3b300f;border-radius:10px;margin-bottom:12px}.login-footer{text-align:center;margin-top:24px}.login-footer a{color:var(--muted);font-size:13px;font-weight:500;transition:color var(--transition)}.login-footer a:hover{color:var(--accent);opacity:1}.admin-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px}.admin-stat-card{border-radius:var(--radius-lg);padding:28px;text-align:center;transition:transform var(--spring)}.admin-stat-card:hover{transform:translateY(-2px)}.admin-stat-num{font-size:40px;font-weight:700;color:var(--accent);letter-spacing:-1px}.admin-stat-label{font-size:13px;color:var(--muted);margin-top:4px;font-weight:500}.admin-section{border-radius:var(--radius-lg);padding:24px;margin-top:16px}.admin-section h3{margin:0 0 14px;font-size:17px;font-weight:600;letter-spacing:-.2px}.admin-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.admin-row input{flex:1;min-width:140px;padding:10px 14px;border-radius:12px;border:1px solid var(--border-strong);background:#f0f1f8cc;color:var(--text);font-size:14px;outline:none;transition:all var(--transition)}.admin-row input:focus{border-color:var(--accent);box-shadow:0 0 0 4px #0071e31a;background:#f5f6fcf2}.admin-section textarea{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--border-strong);background:#f0f1f8cc;color:var(--text);font-size:14px;font-family:inherit;resize:vertical;outline:none;transition:all var(--transition)}.admin-section textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px #0071e31a;background:#f5f6fcf2}.admin-table{width:100%;border-collapse:collapse;margin-top:12px}.admin-table th,.admin-table td{padding:12px 14px;text-align:left}.admin-table th{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border-strong)}.admin-table td{border-bottom:1px solid var(--border);font-size:14px}.admin-table tbody tr{transition:background var(--transition)}.admin-table tbody tr:hover{background:#0071e308}.btn-sm{padding:5px 12px;border-radius:8px;border:1px solid var(--border-strong);background:#ebedf8b3;color:var(--text);cursor:pointer;font-size:12px;font-weight:500;margin-right:6px;transition:all var(--transition)}.btn-sm:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.btn-sm.danger{color:#ff3b30;border-color:#ff3b3033}.btn-sm.danger:hover{background:#ff3b300f;border-color:#ff3b30}.admin-msg{padding:12px 16px;border-radius:12px;background:#34c75914;color:#248a3d;border:1px solid rgba(52,199,89,.15);font-size:14px;font-weight:500;margin-bottom:16px}.admin-tab-active{color:var(--accent)!important;opacity:1!important}@media (max-width: 960px){.layout,.admin-stats,.hero-grid{grid-template-columns:1fr}.hero-title{font-size:36px}.nav-inner{gap:12px}.search{display:none}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow);transition:transform var(--spring),box-shadow var(--transition);cursor:pointer}.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.card-title{font-size:18px;font-weight:600;margin:0 0 4px;letter-spacing:-.2px}.card-desc{color:var(--muted);font-size:14px}.badge{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:600}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.checklist-block{margin:20px 0}.checklist-block h4{margin:0 0 12px;font-size:15px;font-weight:600;color:var(--text)}.checklist{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.checklist-item{border-radius:12px;transition:background var(--transition)}.checklist-item label{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;border-radius:12px;border:1px solid var(--border);background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:all var(--transition)}.checklist-item label:hover{border-color:var(--accent);background:var(--accent-soft)}.checklist-item.checked label{border-color:#34c7594d;background:#34c7590f}.checklist-item input[type=checkbox]{position:absolute;opacity:0;width:0;height:0}.check-mark{width:22px;height:22px;border-radius:7px;flex-shrink:0;border:2px solid var(--border-strong);background:var(--panel);display:flex;align-items:center;justify-content:center;transition:all .2s ease;position:relative}.check-mark:after{content:"";display:block;width:6px;height:10px;border:solid transparent;border-width:0 2.5px 2.5px 0;transform:rotate(45deg) scale(0);transition:transform .2s ease;margin-top:-2px}.checklist-item.checked .check-mark{background:#34c759;border-color:#34c759}.checklist-item.checked .check-mark:after{border-color:#fff;transform:rotate(45deg) scale(1)}.check-label{font-size:14px;color:var(--text);line-height:1.4;transition:color var(--transition)}.checklist-item.checked .check-label{color:var(--muted);text-decoration:line-through}.progress-bar-mini{display:block;height:4px;border-radius:2px;background:var(--border);overflow:hidden;width:100%}.progress-bar-lg{height:8px;border-radius:4px;background:var(--border);overflow:hidden;margin:12px 0 8px}.progress-bar-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#34c759,#30d158);transition:width .5s cubic-bezier(.4,0,.2,1);min-width:0}.chapter-link{display:flex;flex-direction:column;gap:6px}.chapter-name{text-align:left}.chapter-progress-info{display:flex;align-items:center;gap:8px;width:100%}.chapter-pct{font-size:11px;font-weight:600;color:var(--accent);min-width:32px;text-align:right}.progress-overview{border-radius:var(--radius-lg);padding:32px;margin-bottom:32px}.progress-overview-header{display:flex;align-items:center;justify-content:space-between}.progress-overview-header h3{margin:0;font-size:20px;font-weight:700;letter-spacing:-.3px}.progress-overview-pct{font-size:32px;font-weight:700;color:var(--accent);letter-spacing:-1px}.progress-overview-detail{font-size:13px;color:var(--muted);font-weight:500}.progress-chapter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:20px;margin-top:24px}.progress-chapter-item{display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;padding:16px 8px;border-radius:var(--radius-lg);transition:background var(--transition)}.progress-chapter-item:hover{background:var(--accent-soft)}.progress-chapter-ring{position:relative;width:64px;height:64px}.progress-chapter-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.progress-chapter-ring circle{transition:stroke-dasharray .5s ease}.ring-pct{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--text)}.progress-chapter-label{font-size:12px;font-weight:600;color:var(--text);text-align:center;line-height:1.3}.progress-chapter-sub{font-size:11px;color:var(--muted);font-weight:500}.comment-section{margin-top:40px;padding:28px;border-radius:var(--radius-lg)}.comment-title{margin:0 0 24px;font-size:18px;font-weight:700;letter-spacing:-.3px;display:flex;align-items:center;gap:8px}.comment-compose{display:flex;gap:14px;margin-bottom:28px;padding-bottom:24px;border-bottom:1px solid var(--border)}.comment-avatar{width:40px;height:40px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg,var(--accent),#5ac8fa);color:#fff;font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center;text-transform:uppercase}.comment-input-wrap{flex:1;display:flex;flex-direction:column;gap:10px}.comment-input{width:100%;padding:14px 16px;border-radius:14px;border:1px solid var(--border-strong);background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--text);font-size:14px;font-family:inherit;resize:vertical;outline:none;transition:all var(--transition);line-height:1.5;min-height:80px}.comment-input:focus{border-color:var(--accent);box-shadow:0 0 0 4px #0071e31a;background:#f5f6fcf2}.comment-input::placeholder{color:#c7c7cc}.comment-input-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px}.comment-char-count{font-size:12px;color:var(--muted);font-weight:500}.btn-comment-submit{padding:8px 20px!important;font-size:13px!important;border-radius:10px!important}.comment-loading,.comment-empty{text-align:center;padding:32px 0;color:var(--muted);font-size:14px;font-weight:500}.comment-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0}.comment-item{display:flex;gap:14px;padding:18px 0;border-bottom:1px solid var(--border);transition:background var(--transition)}.comment-item:last-child{border-bottom:none}.comment-item:hover{background:#0071e305;margin:0 -12px;padding-left:12px;padding-right:12px;border-radius:12px}.comment-body{flex:1;min-width:0}.comment-meta{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap}.comment-author{font-size:14px;font-weight:600;color:var(--text)}.comment-time{font-size:12px;color:var(--muted);font-weight:500}.comment-delete{background:none;border:none;color:var(--muted);font-size:12px;cursor:pointer;padding:2px 6px;border-radius:6px;transition:all var(--transition);font-weight:500;opacity:0}.comment-item:hover .comment-delete{opacity:1}.comment-delete:hover{color:#ff3b30;background:#ff3b300f}.comment-content{font-size:14px;color:var(--text);line-height:1.6;word-break:break-word;white-space:pre-wrap}
