@charset "UTF-8";:root{--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-primary-light: rgba(59, 130, 246, .2);--color-danger: #ef4444;--color-danger-hover: #dc2626;--color-danger-light: rgba(239, 68, 68, .15);--color-success: #22c55e;--color-success-hover: #16a34a;--color-success-light: rgba(34, 197, 94, .15);--color-warning: #f59e0b;--color-warning-hover: #d97706;--color-warning-light: rgba(245, 158, 11, .15);--color-info: #06b6d4;--color-info-hover: #0891b2;--color-info-light: rgba(6, 182, 212, .15);--color-text: #e6f0ff;--color-text-secondary: #b6c2d9;--color-text-muted: #8494b0;--color-border: rgba(255, 255, 255, .1);--color-border-light: rgba(255, 255, 255, .06);--color-background: #101624;--color-background-alt: #0a0e17;--color-background-overlay: rgba(4, 6, 12, .7);--glass-blur: 18px;--glass-bg: rgba(255, 255, 255, .05);--glass-border: rgba(255, 255, 255, .1);--glass-highlight: inset 0 1px 0 rgba(255, 255, 255, .08);--glass-shadow: 0 18px 40px -22px rgba(0, 0, 0, .65);--card-bg: var(--glass-bg);--border-color: var(--color-border);--text-primary: var(--color-text);--text-secondary: var(--color-text-secondary);--text-accent: var(--color-success);--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.75rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: 3px;--radius-md: 4px;--radius-lg: 8px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--transition-fast: .15s ease;--transition-base: .2s ease;--z-dropdown: 1000;--z-modal-overlay: 1000;--z-modal: 1001;--z-toast: 2000}*,*:before,*:after{box-sizing:border-box}:host{display:block;max-width:1000px;margin:0 auto;padding:var(--spacing-xl) var(--spacing-md);font-family:var(--font-family);color:var(--color-text);line-height:1.5}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg)}.page-header h1{margin:0;font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold)}.loading,.empty-state{text-align:center;padding:var(--spacing-xl);color:var(--color-text-secondary)}.error-state{text-align:center;padding:var(--spacing-xl);color:var(--color-danger)}.btn{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:8px;background:var(--card-bg);color:var(--color-text-secondary);cursor:pointer;font-size:var(--font-size-base);font-family:inherit;font-weight:var(--font-weight-medium, 500);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs);white-space:nowrap;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast);line-height:1.2;-webkit-appearance:none;appearance:none;text-align:center}.btn:hover{background:var(--color-background-alt);border-color:var(--color-primary);color:var(--color-primary)}.btn-secondary{background:var(--card-bg);color:var(--text-primary);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-background-alt);border-color:var(--color-primary);color:var(--color-primary)}.btn-outline{background:transparent;color:var(--text-primary);border-color:var(--color-border)}.btn-outline:hover:not(:disabled){background:var(--color-background-alt);border-color:var(--color-primary);color:var(--color-primary)}.btn-icon{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-xs);border-radius:8px}.btn-link{background:none;border:none;padding:0;color:var(--color-primary);font-size:inherit;font-weight:var(--font-weight-medium, 500);cursor:pointer;text-decoration:none}.btn-link:hover{color:var(--color-primary-hover);text-decoration:underline}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:#fff}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover);border-color:var(--color-danger-hover);color:#fff}.btn-sm{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm)}.btn-close{background:none;border:none;font-size:var(--font-size-2xl);cursor:pointer;line-height:1;padding:0;color:var(--color-text-secondary)}.btn-close:hover{color:var(--color-text)}label{color:var(--color-text);font-weight:var(--font-weight-medium)}input,textarea,select{background:var(--color-background-alt);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md)}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid var(--color-border-light)}.crud-table,.categories-table,.tags-table,.posts-table{width:100%;border-collapse:collapse;margin-top:var(--spacing-md)}.crud-table th,.crud-table td,.categories-table th,.categories-table td,.tags-table th,.tags-table td,.posts-table th,.posts-table td{padding:var(--spacing-sm) var(--spacing-md);text-align:left;border-bottom:1px solid var(--color-border-light)}.crud-table th,.categories-table th,.tags-table th,.posts-table th{font-weight:var(--font-weight-semibold);background:var(--color-background-alt);color:var(--color-text-secondary)}.crud-table code,.categories-table code,.tags-table code,.posts-table code{background:var(--color-background-alt);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-family:var(--font-family-mono);color:var(--color-warning)}.actions{display:flex;gap:var(--spacing-sm)}.modal-overlay{position:fixed;inset:0;background:var(--color-background-overlay);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-overlay)}.modal{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur)) saturate(150%);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);border:1px solid var(--glass-border);border-radius:16px;padding:var(--spacing-lg);width:100%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:var(--glass-highlight),var(--glass-shadow)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg)}.modal-header h2{margin:0;font-size:var(--font-size-xl)}.form-group{margin-bottom:var(--spacing-md)}.form-group label{display:block;margin-bottom:var(--spacing-xs);font-weight:var(--font-weight-medium)}.form-control{width:100%;padding:var(--spacing-sm);background:var(--color-background-alt);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:inherit;line-height:1.5;color:var(--color-text);transition:border-color var(--transition-fast)}.form-control:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.form-control.ng-invalid.ng-touched{border-color:var(--color-danger)}.form-hint{display:block;margin-top:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.form-actions{display:flex;justify-content:flex-end;gap:var(--spacing-sm);margin-top:var(--spacing-lg)}.required{color:var(--color-danger);margin-left:var(--spacing-xs)}.toast-container{position:fixed;top:var(--spacing-lg);right:var(--spacing-lg);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--spacing-sm);max-width:400px}.toast{padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-md);box-shadow:var(--shadow-md);display:flex;align-items:center;gap:var(--spacing-md);animation:slideIn var(--transition-base)}.toast-error{background:var(--color-danger-light);border-left:4px solid var(--color-danger);color:var(--color-danger)}.toast-success{background:var(--color-success-light);border-left:4px solid var(--color-success);color:var(--color-success)}.toast-info{background:var(--color-info-light);border-left:4px solid var(--color-info);color:var(--color-info)}.toast-warning{background:var(--color-warning-light);border-left:4px solid var(--color-warning);color:var(--color-warning)}.toast-close{background:none;border:none;cursor:pointer;font-size:var(--font-size-lg);color:inherit;opacity:.6;margin-left:auto}.toast-close:hover{opacity:1}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.badge{display:inline-block;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);background:var(--color-background-alt);color:var(--color-text-secondary)}.badge-primary{background:var(--color-primary-light);color:var(--color-primary)}.badge-danger{background:var(--color-danger-light);color:var(--color-danger)}@media(max-width:768px){:host{padding:var(--spacing-md) var(--spacing-sm)}.page-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.page-header h1{font-size:var(--font-size-xl)}.modal{max-width:calc(100% - var(--spacing-xl));margin:var(--spacing-md)}.actions{flex-direction:column}}.markdown-content{font-size:1.0625rem;line-height:1.85;color:#e2e8f0;padding:1.5rem 2rem}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{color:#f0f6fc;margin-top:2.5rem;margin-bottom:1rem;font-weight:700;line-height:1.25;letter-spacing:-.015em;position:relative}.markdown-content h1{font-size:2rem;padding-bottom:.75rem;border-bottom:2px solid #30363d;background:linear-gradient(135deg,#58a6ff,#3b82f6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-top:0}.markdown-content h2{font-size:1.625rem;padding-bottom:.5rem;border-bottom:1px solid #30363d;position:relative}.markdown-content h2:before{content:"";position:absolute;bottom:-1px;left:0;width:60px;height:1px;background:linear-gradient(90deg,#3b82f6,transparent)}.markdown-content h3{font-size:1.375rem;color:#79c0ff}.markdown-content h4{font-size:1.15rem;color:#a5d6ff}.markdown-content h5,.markdown-content h6{font-size:1rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em}.markdown-content p{margin-bottom:1.5rem;text-shadow:none}.markdown-content a{color:#58a6ff;text-decoration:none;border-bottom:1px solid transparent;transition:all .3s ease;font-weight:500}.markdown-content a:hover{color:#79c0ff;border-bottom-color:#58a6ff}.markdown-content ul,.markdown-content ol{margin-bottom:1.5rem;padding-left:0;margin-left:20px;position:relative;list-style:none}.markdown-content ul ul,.markdown-content ul ol,.markdown-content ol ul,.markdown-content ol ol{margin-top:.5rem;padding-left:1.5rem;margin-left:0}.markdown-content li{margin-bottom:.6rem;padding-left:0;position:relative;line-height:1.6}.markdown-content li::marker{color:#58a6ff}.markdown-content ul li{padding-left:1.25rem}.markdown-content ul li:before{content:"";display:inline-block;width:8px;height:8px;background:#58a6ff;border-radius:50%;position:absolute;left:0;top:.35em}.markdown-content blockquote{border-left:4px solid #3b82f6;padding:1.25rem 1.5rem;margin:2rem 0;background:linear-gradient(135deg,#3b82f614,#3b82f605);border-radius:0 8px 8px 0;font-style:italic;color:#94a3b8;position:relative}.markdown-content blockquote:before{content:'"';position:absolute;top:-.5rem;left:.5rem;font-size:3rem;color:#3b82f6;opacity:.3;font-family:Georgia,serif;line-height:1}.markdown-content blockquote p{margin-bottom:.5rem}.markdown-content blockquote p:last-child{margin-bottom:0}.markdown-content code{background:linear-gradient(135deg,#1c2333,#1a1f2e);padding:.25em .5em;border-radius:5px;font-size:.88em;color:#f472b6;border:1px solid rgba(244,114,182,.15);font-family:JetBrains Mono,Fira Code,Consolas,monospace;box-shadow:0 1px 3px #0003}.markdown-content pre{background:linear-gradient(180deg,#0d1117,#161b22);color:#e6edf3;padding:1.5rem 1.75rem;border-radius:8px;overflow-x:auto;margin:2rem 0;border:1px solid #30363d;box-shadow:0 4px 12px #0000004d,inset 0 1px #ffffff08;position:relative}.markdown-content pre:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#f472b6,#58a6ff,#3fb950);border-radius:8px 8px 0 0}.markdown-content pre code{background:none;padding:0;color:inherit;font-size:.9rem;border:none;box-shadow:none}.markdown-content img{max-width:100%;height:auto;border-radius:12px;margin:2rem 0;box-shadow:0 4px 16px #0006;border:1px solid #30363d}.markdown-content img:after{content:"";display:block;width:100%;height:3px;background:linear-gradient(90deg,transparent,rgba(59,130,246,.3),transparent);margin-top:.5rem}.markdown-content table{width:100%;border-collapse:separate;border-spacing:0;margin:2rem 0;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0003;border:1px solid #30363d}.markdown-content table th,.markdown-content table td{border:1px solid #30363d;padding:.875rem 1rem;text-align:left}.markdown-content table th{background:linear-gradient(180deg,#1c2333,#161b22);font-weight:600;color:#79c0ff;text-transform:uppercase;font-size:.85rem;letter-spacing:.04em}.markdown-content table td{background:#0d111780}.markdown-content table tr:hover td{background:#3b82f60d}.markdown-content hr{border:none;height:2px;background:linear-gradient(90deg,transparent,#30363d,transparent);margin:2.5rem 0;position:relative}.markdown-content hr:after{content:"\2022  \2022  \2022";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#161b22;padding:0 1rem;color:#64748b;letter-spacing:1rem}.markdown-content .task-list-item{list-style:none;margin-left:-1.5rem;padding:.25rem 0}.markdown-content .task-list-item input[type=checkbox]{margin-right:.75rem;accent-color:#3b82f6;width:16px;height:16px}.markdown-content strong{color:#f0f6fc;font-weight:700}.markdown-content em{color:#94a3b8}.markdown-content .heading-anchor{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:.5rem;padding:0;font-size:1.1rem;font-weight:400;line-height:1;text-align:center;text-decoration:none;border:1px solid transparent;border-radius:4px;opacity:0;transition:all .2s ease;vertical-align:middle;cursor:pointer;color:#64748b!important}.markdown-content .heading-anchor:hover{color:#58a6ff!important;border-color:#30363d;background:#3b82f61a}.markdown-content h1:hover .heading-anchor,.markdown-content h2:hover .heading-anchor,.markdown-content h3:hover .heading-anchor,.markdown-content h4:hover .heading-anchor,.markdown-content h5:hover .heading-anchor,.markdown-content h6:hover .heading-anchor{opacity:1}.markdown-content .code-block{background:#0d1117;border-radius:8px;margin:1.5rem 0;border:1px solid #30363d;box-shadow:0 4px 12px #0000004d,inset 0 1px #ffffff08;overflow:hidden;position:relative}.markdown-content .code-block:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#f472b6,#58a6ff,#3fb950);border-radius:8px 8px 0 0;z-index:1}.markdown-content .code-block .code-block-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:#161b22;border-bottom:1px solid #30363d;position:relative;z-index:1}.markdown-content .code-block .code-language{font-size:.75rem;font-weight:500;color:#8b949e;text-transform:uppercase;letter-spacing:.05em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.markdown-content .code-block .code-copy-btn{display:flex;align-items:center;gap:.35rem;padding:.3rem .6rem;background:transparent;border:1px solid #30363d;border-radius:4px;color:#8b949e;font-size:.75rem;font-family:inherit;cursor:pointer;transition:all .2s ease;opacity:0}.markdown-content .code-block .code-copy-btn .copy-icon{display:block}.markdown-content .code-block .code-copy-btn .check-icon{display:none}.markdown-content .code-block .code-copy-btn:hover{background:#3b82f61a;border-color:#3b82f6;color:#58a6ff}.markdown-content .code-block .code-copy-btn.copied{background:#2386361a;border-color:#238636;color:#3fb950}.markdown-content .code-block .code-copy-btn.copied .copy-icon{display:none}.markdown-content .code-block .code-copy-btn.copied .check-icon{display:block}.markdown-content .code-block:hover .code-copy-btn{opacity:1}.markdown-content .code-block .code-block-content{margin:0;padding:1.25rem;overflow-x:auto;background:transparent}.markdown-content .code-block .code-block-content code.highlighted{background:none;padding:0;color:#e6edf3;font-size:.875rem;line-height:1.6;font-family:SF Mono,Fira Code,Consolas,monospace;border:none;box-shadow:none;white-space:pre;word-wrap:normal}.markdown-content .code-block .hljs{color:#e6edf3;background:none}.markdown-content .code-block .hljs-comment,.markdown-content .code-block .hljs-quote{color:#8b949e}.markdown-content .code-block .hljs-keyword,.markdown-content .code-block .hljs-selector-tag{color:#ff7b72}.markdown-content .code-block .hljs-string,.markdown-content .code-block .hljs-template-tag,.markdown-content .code-block .hljs-template-variable{color:#a5d6ff}.markdown-content .code-block .hljs-type,.markdown-content .code-block .hljs-variable{color:#ffa657}.markdown-content .code-block .hljs-title,.markdown-content .code-block .hljs-built_in,.markdown-content .code-block .hljs-literal{color:#d2a8ff}.markdown-content .code-block .hljs-number{color:#79c0ff}.markdown-content .code-block .hljs-operator,.markdown-content .code-block .hljs-punctuation{color:#c9d1d9}.markdown-content .code-block .hljs-regexp,.markdown-content .code-block .hljs-attribute,.markdown-content .code-block .hljs-section,.markdown-content .code-block .hljs-tag{color:#7ee787}.markdown-content .code-block .hljs-deletion{color:#f85149}.markdown-content .code-block .hljs-addition{color:#56d364}.markdown-content .code-block .hljs-link,.markdown-content .code-block .hljs-decorator{color:#79c0ff;text-decoration:underline}.markdown-content .code-block .hljs-symbol,.markdown-content .code-block .hljs-bullet{color:#e6edf3}.markdown-content .code-block .hljs-meta{color:#8b949e}.markdown-content .code-block .hljs-attr,.markdown-content .code-block .hljs-property{color:#79c0ff}.markdown-content .code-block .hljs-doctag{color:#7ee787}.markdown-content .code-block .hljs-selector-id{color:#d2a8ff}.markdown-content .code-block .hljs-selector-class{color:#7ee787}.markdown-content .code-block .hljs-selector-attr,.markdown-content .code-block .hljs-selector-pseudo{color:#ffa657}.markdown-content .code-block .hljs-function{color:#d2a8ff}.markdown-content .code-block .hljs-params{color:#ffa657}.markdown-content .code-block .hljs-meta-keyword{color:#ff7b72}.markdown-content .code-block .hljs-meta-string{color:#a5d6ff}.markdown-content .code-block .hljs-title.class,.markdown-content .code-block .hljs-title.class_.inherited{color:#ffa657}.markdown-content .code-block .hljs-title.function{color:#d2a8ff}.markdown-content .code-block .hljs-name{color:#ff7b72}.code-block .hljs{color:#e6edf3;background:none}.code-block .hljs-comment,.code-block .hljs-quote{color:#8b949e}.code-block .hljs-keyword,.code-block .hljs-selector-tag{color:#ff7b72}.code-block .hljs-string,.code-block .hljs-template-tag,.code-block .hljs-template-variable{color:#a5d6ff}.code-block .hljs-type,.code-block .hljs-variable{color:#ffa657}.code-block .hljs-title,.code-block .hljs-built_in,.code-block .hljs-literal{color:#d2a8ff}.code-block .hljs-number{color:#79c0ff}.code-block .hljs-operator,.code-block .hljs-punctuation{color:#c9d1d9}.code-block .hljs-regexp,.code-block .hljs-attribute,.code-block .hljs-section,.code-block .hljs-tag{color:#7ee787}.code-block .hljs-deletion{color:#f85149}.code-block .hljs-addition{color:#56d364}.code-block .hljs-link,.code-block .hljs-decorator{color:#79c0ff;text-decoration:underline}.code-block .hljs-symbol,.code-block .hljs-bullet{color:#e6edf3}.code-block .hljs-meta{color:#8b949e}.code-block .hljs-attr,.code-block .hljs-property{color:#79c0ff}.code-block .hljs-doctag{color:#7ee787}.code-block .hljs-selector-id{color:#d2a8ff}.code-block .hljs-selector-class{color:#7ee787}.code-block .hljs-selector-attr,.code-block .hljs-selector-pseudo{color:#ffa657}.code-block .hljs-function{color:#d2a8ff}.code-block .hljs-params{color:#ffa657}.code-block .hljs-meta-keyword{color:#ff7b72}.code-block .hljs-meta-string{color:#a5d6ff}.code-block .hljs-title.class,.code-block .hljs-title.class_.inherited{color:#ffa657}.code-block .hljs-title.function{color:#d2a8ff}.code-block .hljs-name{color:#ff7b72}:root{--bg-color: #080b12;--card-bg: rgba(255, 255, 255, .05);--card-bg-solid: #121826;--border-color: rgba(255, 255, 255, .1);--text-primary: #7dd3fc;--text-secondary: #b6c2d9;--text-accent: #5eead4;--glass-blur: 18px;--glass-highlight: inset 0 1px 0 rgba(255, 255, 255, .08);--glass-shadow: 0 18px 40px -22px rgba(0, 0, 0, .65);--font-primary: "Source Sans 3", sans-serif}*{margin:0;padding:0;box-sizing:border-box}body{min-height:100vh;color:var(--text-secondary);font-family:var(--font-primary);line-height:1.6;background:radial-gradient(1200px 800px at 15% -10%,rgba(76,201,240,.18),transparent 55%),radial-gradient(1000px 700px at 100% 0%,rgba(139,92,246,.16),transparent 50%),radial-gradient(900px 600px at 50% 120%,rgba(94,234,212,.1),transparent 55%),linear-gradient(180deg,#0b101c,#080b12);background-attachment:fixed}.card,.post-card,.grid-card,.modal,.stat-card,.dropdown-panel,.toast,.setup-checklist,.credential-card,.method-card,.qr-block{background:var(--card-bg);backdrop-filter:blur(var(--glass-blur)) saturate(150%);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);border:1px solid var(--border-color);box-shadow:var(--glass-highlight),var(--glass-shadow)}.container{max-width:1100px;margin:0 auto;padding:2rem}.home-layout{display:flex;gap:2rem}.main-content{flex:1}.sidebar{width:260px}.sidebar h3{color:var(--text-accent);margin-bottom:.5rem;border-bottom:1px solid var(--border-color);padding-bottom:.5rem}.sidebar ul{list-style:none}.sidebar li a{color:var(--text-secondary);text-decoration:none;display:block;padding:.3rem 0}.sidebar li a:hover{color:var(--text-accent)}.post-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:6px;padding:1.5rem;margin-bottom:1rem;transition:border-color .2s}.post-card:hover{border-color:var(--text-accent)}.post-card h2 a{color:var(--text-primary);text-decoration:none;font-size:1.25rem}.post-card h2 a:hover{color:var(--text-accent)}.post-excerpt{color:var(--text-secondary);margin:.5rem 0}.post-meta{font-size:.85rem;color:var(--text-secondary);margin-top:.75rem}.post-detail h1{color:var(--text-primary);font-size:2rem;margin-bottom:1rem}.post-content{margin-top:1.5rem;line-height:1.8}.post-content h1,.post-content h2,.post-content h3{color:var(--text-primary);margin-top:1.5rem}.post-content p{margin-bottom:1rem}.post-content code{background:#1f2937;padding:2px 6px;border-radius:3px}.post-content pre{background:#1f2937;border:1px solid var(--border-color);padding:1rem;overflow-x:auto;margin-bottom:1rem}.code-block{background:#0d1117;border-radius:8px;margin:2rem 0;border:1px solid #30363d;box-shadow:0 4px 12px #0000004d,inset 0 1px #ffffff08;overflow:hidden;position:relative}.code-block:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#f472b6,#58a6ff,#3fb950);border-radius:8px 8px 0 0;z-index:1}.code-block .code-block-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:#161b22;border-bottom:1px solid #30363d;position:relative;z-index:1}.code-block .code-language{font-size:.75rem;font-weight:500;color:#8b949e;text-transform:uppercase;letter-spacing:.05em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.code-block .code-copy-btn{display:flex;align-items:center;gap:.35rem;padding:.3rem .6rem;background:transparent;border:1px solid #30363d;border-radius:4px;color:#8b949e;font-size:.75rem;font-family:inherit;cursor:pointer;transition:all .2s ease;opacity:0}.code-block .code-copy-btn .copy-icon{display:block}.code-block .code-copy-btn .check-icon{display:none}.code-block .code-copy-btn:hover{background:#3b82f61a;border-color:#3b82f6;color:#58a6ff}.code-block .code-copy-btn.copied{background:#2386361a;border-color:#238636;color:#3fb950}.code-block .code-copy-btn.copied .copy-icon{display:none}.code-block .code-copy-btn.copied .check-icon{display:block}.code-block:hover .code-copy-btn{opacity:1}.code-block .code-block-content{margin:0;padding:1.25rem;overflow-x:auto;background:transparent}.code-block .code-block-content code.highlighted{background:none;padding:0;color:#e6edf3;font-size:.875rem;line-height:1.6;font-family:SF Mono,Fira Code,Consolas,monospace;border:none;box-shadow:none;white-space:pre;word-wrap:normal}.back-link{color:var(--text-accent);text-decoration:none;display:inline-block;margin-bottom:1.5rem}.grid-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem}.grid-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:6px;padding:1.25rem}.grid-card h3 a{color:var(--text-primary);text-decoration:none}.grid-card h3 a:hover{color:var(--text-accent)}.loading{text-align:center;padding:2rem;color:var(--text-accent)}.page-title{color:var(--text-accent);font-size:1.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border-color);padding-bottom:.5rem}@media(max-width:768px){.home-layout{flex-direction:column}.sidebar{width:100%}}.skip-link{position:absolute;left:-9999px;top:8px;z-index:2000;padding:10px 14px;background:var(--color-accent-primary, #3fb950);color:var(--color-bg-primary, #000);text-decoration:none;font-weight:600;border-radius:4px}.skip-link:focus-visible{left:8px}:focus-visible{outline:2px solid var(--color-accent-primary, #3fb950);outline-offset:2px}button,[role=button]{min-height:32px}input,select,textarea{min-height:44px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.post-content,.content-wrapper{font-size:1.0625rem;line-height:1.85;color:#e2e8f0}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6,.content-wrapper h1,.content-wrapper h2,.content-wrapper h3,.content-wrapper h4,.content-wrapper h5,.content-wrapper h6{color:#f0f6fc;margin-top:2.5rem;margin-bottom:1rem;font-weight:700;line-height:1.25;letter-spacing:-.015em;position:relative}.post-content h1,.content-wrapper h1{font-size:2rem;padding-bottom:.75rem;border-bottom:2px solid #30363d;background:linear-gradient(135deg,#58a6ff,#3b82f6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-top:0}.post-content h2,.content-wrapper h2{font-size:1.625rem;padding-bottom:.5rem;border-bottom:1px solid #30363d;position:relative}.post-content h2:before,.content-wrapper h2:before{content:"";position:absolute;bottom:-1px;left:0;width:60px;height:1px;background:linear-gradient(90deg,#3b82f6,transparent)}.post-content h3,.content-wrapper h3{font-size:1.375rem;color:#79c0ff}.post-content h4,.content-wrapper h4{font-size:1.15rem;color:#a5d6ff}.post-content h5,.post-content h6,.content-wrapper h5,.content-wrapper h6{font-size:1rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em}.post-content p,.content-wrapper p{margin-bottom:1.5rem;text-shadow:none}.post-content a,.content-wrapper a{color:#58a6ff;text-decoration:none;border-bottom:1px solid transparent;transition:all .3s ease;font-weight:500}.post-content a:hover,.content-wrapper a:hover{color:#79c0ff;border-bottom-color:#58a6ff}.post-content ul,.post-content ol,.content-wrapper ul,.content-wrapper ol{margin-bottom:1.5rem;padding-left:0;margin-left:0;position:relative;list-style:none}.post-content ul ul,.post-content ul ol,.post-content ol ul,.post-content ol ol,.content-wrapper ul ul,.content-wrapper ul ol,.content-wrapper ol ul,.content-wrapper ol ol{margin-top:.5rem;padding-left:1.5rem;margin-left:0}.post-content li,.content-wrapper li{margin-bottom:.6rem;padding-left:0;position:relative;line-height:1.6}.post-content li::marker,.content-wrapper li::marker{color:#58a6ff}.post-content ul li,.content-wrapper ul li{padding-left:1.25rem}.post-content ul li:before,.content-wrapper ul li:before{content:"";display:inline-block;width:8px;height:8px;background:#58a6ff;border-radius:50%;position:absolute;left:0;top:.35em}.post-content blockquote,.content-wrapper blockquote{border-left:4px solid #3b82f6;padding:1.25rem 1.5rem;margin:2rem 0;background:linear-gradient(135deg,#3b82f614,#3b82f605);border-radius:0 8px 8px 0;font-style:italic;color:#94a3b8;position:relative}.post-content blockquote:before,.content-wrapper blockquote:before{content:'"';position:absolute;top:-.5rem;left:.5rem;font-size:3rem;color:#3b82f6;opacity:.3;font-family:Georgia,serif;line-height:1}.post-content blockquote p,.content-wrapper blockquote p{margin-bottom:.5rem}.post-content blockquote p:last-child,.content-wrapper blockquote p:last-child{margin-bottom:0}.post-content code,.content-wrapper code{background:linear-gradient(135deg,#1c2333,#1a1f2e);padding:.25em .5em;border-radius:5px;font-size:.88em;color:#f472b6;border:1px solid rgba(244,114,182,.15);font-family:JetBrains Mono,Fira Code,Consolas,monospace;box-shadow:0 1px 3px #0003}.post-content pre,.content-wrapper pre{background:linear-gradient(180deg,#0d1117,#161b22);color:#e6edf3;padding:1.5rem 1.75rem;border-radius:8px;overflow-x:auto;margin:2rem 0;border:1px solid #30363d;box-shadow:0 4px 12px #0000004d,inset 0 1px #ffffff08;position:relative}.post-content pre:before,.content-wrapper pre:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#f472b6,#58a6ff,#3fb950);border-radius:8px 8px 0 0}.post-content pre code,.content-wrapper pre code{background:none;padding:0;color:inherit;font-size:.9rem;border:none;box-shadow:none}.post-content img,.content-wrapper img{max-width:100%;height:auto;border-radius:12px;margin:2rem 0;box-shadow:0 4px 16px #0006;border:1px solid #30363d}.post-content img:after,.content-wrapper img:after{content:"";display:block;width:100%;height:3px;background:linear-gradient(90deg,transparent,rgba(59,130,246,.3),transparent);margin-top:.5rem}.post-content table,.content-wrapper table{width:100%;border-collapse:separate;border-spacing:0;margin:2rem 0;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0003;border:1px solid #30363d}.post-content table th,.post-content table td,.content-wrapper table th,.content-wrapper table td{border:1px solid #30363d;padding:.875rem 1rem;text-align:left}.post-content table th,.content-wrapper table th{background:linear-gradient(180deg,#1c2333,#161b22);font-weight:600;color:#79c0ff;text-transform:uppercase;font-size:.85rem;letter-spacing:.04em}.post-content table td,.content-wrapper table td{background:#0d111780}.post-content table tr:hover td,.content-wrapper table tr:hover td{background:#3b82f60d}.post-content hr,.content-wrapper hr{border:none;height:2px;background:linear-gradient(90deg,transparent,#30363d,transparent);margin:2.5rem 0;position:relative}.post-content hr:after,.content-wrapper hr:after{content:"\2022  \2022  \2022";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#161b22;padding:0 1rem;color:#64748b;letter-spacing:1rem}.post-content .task-list-item,.content-wrapper .task-list-item{list-style:none;margin-left:-1.5rem;padding:.25rem 0}.post-content .task-list-item input[type=checkbox],.content-wrapper .task-list-item input[type=checkbox]{margin-right:.75rem;accent-color:#3b82f6;width:16px;height:16px}.post-content strong,.content-wrapper strong{color:#f0f6fc;font-weight:700}.post-content em,.content-wrapper em{color:#94a3b8}.post-content .heading-anchor,.content-wrapper .heading-anchor{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:.5rem;padding:0;font-size:1rem;font-weight:400;line-height:1;text-align:center;text-decoration:none;border:1px solid transparent;border-radius:3px;opacity:0;transition:all .3s ease;vertical-align:middle;cursor:pointer;color:#f0f6fc!important}.post-content .heading-anchor:hover,.content-wrapper .heading-anchor:hover{color:#3b82f6!important;border-color:#30363d;background:#3b82f61a}.post-content h1:hover .heading-anchor,.post-content h2:hover .heading-anchor,.post-content h3:hover .heading-anchor,.post-content h4:hover .heading-anchor,.post-content h5:hover .heading-anchor,.post-content h6:hover .heading-anchor,.content-wrapper h1:hover .heading-anchor,.content-wrapper h2:hover .heading-anchor,.content-wrapper h3:hover .heading-anchor,.content-wrapper h4:hover .heading-anchor,.content-wrapper h5:hover .heading-anchor,.content-wrapper h6:hover .heading-anchor{opacity:1}.post-content .code-block,.content-wrapper .code-block{background:#0d1117;border-radius:8px;margin:1.5rem 0;border:1px solid #30363d;box-shadow:0 4px 12px #0000004d,inset 0 1px #ffffff08;overflow:hidden;position:relative}.post-content .code-block:before,.content-wrapper .code-block:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#f472b6,#58a6ff,#3fb950);border-radius:8px 8px 0 0;z-index:1}.post-content .code-block .code-block-header,.content-wrapper .code-block .code-block-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:#161b22;border-bottom:1px solid #30363d;position:relative;z-index:1}.post-content .code-block .code-language,.content-wrapper .code-block .code-language{font-size:.75rem;font-weight:500;color:#8b949e;text-transform:uppercase;letter-spacing:.05em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.post-content .code-block .code-copy-btn,.content-wrapper .code-block .code-copy-btn{display:flex;align-items:center;gap:.35rem;padding:.3rem .6rem;background:transparent;border:1px solid #30363d;border-radius:4px;color:#8b949e;font-size:.75rem;font-family:inherit;cursor:pointer;transition:all .2s ease;opacity:0}.post-content .code-block .code-copy-btn .copy-icon,.content-wrapper .code-block .code-copy-btn .copy-icon{display:block}.post-content .code-block .code-copy-btn .check-icon,.content-wrapper .code-block .code-copy-btn .check-icon{display:none}.post-content .code-block .code-copy-btn:hover,.content-wrapper .code-block .code-copy-btn:hover{background:#3b82f61a;border-color:#3b82f6;color:#58a6ff}.post-content .code-block .code-copy-btn.copied,.content-wrapper .code-block .code-copy-btn.copied{background:#2386361a;border-color:#238636;color:#3fb950}.post-content .code-block .code-copy-btn.copied .copy-icon,.content-wrapper .code-block .code-copy-btn.copied .copy-icon{display:none}.post-content .code-block .code-copy-btn.copied .check-icon,.content-wrapper .code-block .code-copy-btn.copied .check-icon{display:block}.post-content .code-block:hover .code-copy-btn,.content-wrapper .code-block:hover .code-copy-btn{opacity:1}.post-content .code-block .code-block-content,.content-wrapper .code-block .code-block-content{margin:0;padding:1.25rem;overflow-x:auto;background:transparent}.post-content .code-block .code-block-content code.highlighted,.content-wrapper .code-block .code-block-content code.highlighted{background:none;padding:0;color:#e6edf3;font-size:.875rem;line-height:1.6;font-family:SF Mono,Fira Code,Consolas,monospace;border:none;box-shadow:none;white-space:pre;word-wrap:normal}.post-content .code-block .hljs,.content-wrapper .code-block .hljs{color:#e6edf3;background:none}.post-content .code-block .hljs-comment,.post-content .code-block .hljs-quote,.content-wrapper .code-block .hljs-comment,.content-wrapper .code-block .hljs-quote{color:#8b949e}.post-content .code-block .hljs-keyword,.post-content .code-block .hljs-selector-tag,.content-wrapper .code-block .hljs-keyword,.content-wrapper .code-block .hljs-selector-tag{color:#ff7b72}.post-content .code-block .hljs-string,.post-content .code-block .hljs-template-tag,.post-content .code-block .hljs-template-variable,.content-wrapper .code-block .hljs-string,.content-wrapper .code-block .hljs-template-tag,.content-wrapper .code-block .hljs-template-variable{color:#a5d6ff}.post-content .code-block .hljs-type,.post-content .code-block .hljs-variable,.content-wrapper .code-block .hljs-type,.content-wrapper .code-block .hljs-variable{color:#ffa657}.post-content .code-block .hljs-title,.post-content .code-block .hljs-built_in,.post-content .code-block .hljs-literal,.content-wrapper .code-block .hljs-title,.content-wrapper .code-block .hljs-built_in,.content-wrapper .code-block .hljs-literal{color:#d2a8ff}.post-content .code-block .hljs-number,.content-wrapper .code-block .hljs-number{color:#79c0ff}.post-content .code-block .hljs-operator,.post-content .code-block .hljs-punctuation,.content-wrapper .code-block .hljs-operator,.content-wrapper .code-block .hljs-punctuation{color:#c9d1d9}.post-content .code-block .hljs-regexp,.post-content .code-block .hljs-attribute,.content-wrapper .code-block .hljs-regexp,.content-wrapper .code-block .hljs-attribute,.post-content .code-block .hljs-section,.post-content .code-block .hljs-tag,.content-wrapper .code-block .hljs-section,.content-wrapper .code-block .hljs-tag{color:#7ee787}.post-content .code-block .hljs-deletion,.content-wrapper .code-block .hljs-deletion{color:#f85149}.post-content .code-block .hljs-addition,.content-wrapper .code-block .hljs-addition{color:#56d364}.post-content .code-block .hljs-link,.post-content .code-block .hljs-decorator,.content-wrapper .code-block .hljs-link,.content-wrapper .code-block .hljs-decorator{color:#79c0ff;text-decoration:underline}.post-content .code-block .hljs-symbol,.post-content .code-block .hljs-bullet,.content-wrapper .code-block .hljs-symbol,.content-wrapper .code-block .hljs-bullet{color:#e6edf3}.post-content .code-block .hljs-meta,.content-wrapper .code-block .hljs-meta{color:#8b949e}.post-content .code-block .hljs-attr,.post-content .code-block .hljs-property,.content-wrapper .code-block .hljs-attr,.content-wrapper .code-block .hljs-property{color:#79c0ff}.post-content .code-block .hljs-doctag,.content-wrapper .code-block .hljs-doctag{color:#7ee787}.post-content .code-block .hljs-selector-id,.content-wrapper .code-block .hljs-selector-id{color:#d2a8ff}.post-content .code-block .hljs-selector-class,.content-wrapper .code-block .hljs-selector-class{color:#7ee787}.post-content .code-block .hljs-selector-attr,.post-content .code-block .hljs-selector-pseudo,.content-wrapper .code-block .hljs-selector-attr,.content-wrapper .code-block .hljs-selector-pseudo{color:#ffa657}.post-content .code-block .hljs-function,.content-wrapper .code-block .hljs-function{color:#d2a8ff}.post-content .code-block .hljs-params,.content-wrapper .code-block .hljs-params{color:#ffa657}.post-content .code-block .hljs-meta-keyword,.content-wrapper .code-block .hljs-meta-keyword{color:#ff7b72}.post-content .code-block .hljs-meta-string,.content-wrapper .code-block .hljs-meta-string{color:#a5d6ff}.post-content .code-block .hljs-title.class,.post-content .code-block .hljs-title.class_.inherited,.content-wrapper .code-block .hljs-title.class,.content-wrapper .code-block .hljs-title.class_.inherited{color:#ffa657}.post-content .code-block .hljs-title.function,.content-wrapper .code-block .hljs-title.function{color:#d2a8ff}.post-content .code-block .hljs-name,.content-wrapper .code-block .hljs-name{color:#ff7b72}
