*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0b132b;--bg2:#112044;--bg3:#1a2f5a;--text:#f0f4ff;--text2:#94a3c8;--accent:#3b82f6;--accent2:#60a5fa;--border:#1e3a6e;--card:#0f1e3d;--radius:12px;--font:"Poppins",sans-serif;--font-body:"Inter",sans-serif}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-body);line-height:1.7;min-height:100vh}a{color:inherit;text-decoration:none}img{max-width:100%}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--bg3);border-radius:3px}.container{max-width:1100px}.container,.container-narrow{margin:0 auto;padding:0 1.5rem}.container-narrow{max-width:780px}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.65rem 1.4rem;border-radius:8px;font-weight:600;font-size:.95rem;cursor:pointer;border:none;transition:all .2s;font-family:var(--font)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent2);transform:translateY(-1px)}.btn-outline{background:transparent;color:var(--text);border:1.5px solid var(--border)}.btn-outline:hover{border-color:var(--accent);color:var(--accent)}.btn-ghost{background:transparent;color:var(--text2)}.btn-ghost:hover{color:var(--text)}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover{background:#dc2626}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:transform .2s,box-shadow .2s}.card:hover{transform:translateY(-3px);box-shadow:0 8px 30px rgba(59,130,246,.15)}.badge{display:inline-block;padding:.2rem .7rem;border-radius:999px;font-size:.75rem;font-weight:600;font-family:var(--font)}.badge-blue{background:rgba(59,130,246,.15);color:var(--accent2)}.badge-green{background:rgba(34,197,94,.15);color:#4ade80}.badge-yellow{background:rgba(234,179,8,.15);color:#facc15}input,select,textarea{width:100%;padding:.7rem 1rem;background:var(--bg2);border:1.5px solid var(--border);border-radius:8px;color:var(--text);font-family:var(--font-body);font-size:.95rem;transition:border-color .2s;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent)}input::placeholder,textarea::placeholder{color:var(--text2)}label{font-size:.9rem;font-weight:500;color:var(--text2);margin-bottom:.4rem;display:block}.article-content h1,.article-content h2,.article-content h3{color:var(--text);font-family:var(--font);margin:1.5rem 0 .75rem}.article-content p{margin-bottom:1rem;color:var(--text2)}.article-content a{color:var(--accent2);text-decoration:underline}.article-content ol,.article-content ul{padding-left:1.5rem;margin-bottom:1rem}.article-content li{margin-bottom:.4rem;color:var(--text2)}.article-content blockquote{border-left:3px solid var(--accent);padding-left:1rem;color:var(--text2);font-style:italic;margin:1.5rem 0}.article-content code{background:var(--bg2);padding:.2rem .4rem;border-radius:4px;font-family:monospace;font-size:.9em}.article-content pre{background:var(--bg2);padding:1rem;border-radius:8px;overflow-x:auto;margin-bottom:1rem}.article-content img{border-radius:8px;margin:1rem 0}.tiptap-editor{min-height:400px;padding:1rem;background:var(--bg2);border:1.5px solid var(--border);border-radius:8px;color:var(--text);font-family:var(--font-body);outline:none}.tiptap-editor:focus{border-color:var(--accent)}.tiptap-editor p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--text2);float:left;pointer-events:none}@keyframes spin{to{transform:rotate(1turn)}}.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.skeleton{background:var(--bg2);border-radius:8px;animation:pulse 1.5s ease-in-out infinite}