*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--color-canvas-default:#0d1117;--color-canvas-subtle:#161b22;--color-canvas-inset:#010409;--color-canvas-overlay:#1c2128;--color-border-default:#30363d;--color-border-muted:#21262d;--color-border-subtle:rgba(240,246,252,.1);--color-fg-default:#e6edf3;--color-fg-muted:#8b949e;--color-fg-subtle:#6e7681;--color-fg-on-emphasis:#fff;--color-accent-fg:#58a6ff;--color-accent-emphasis:#1f6feb;--color-accent-subtle:rgba(56,139,253,.15);--color-success-fg:#3fb950;--color-success-emphasis:#238636;--color-success-subtle:rgba(46,160,67,.15);--color-danger-fg:#f85149;--color-danger-emphasis:#da3633;--color-danger-subtle:rgba(248,81,73,.15);--color-attention-fg:#d29922;--color-attention-subtle:rgba(187,128,9,.15);--color-neutral-emphasis:#6e7681;--color-neutral-muted:hsla(215,8%,47%,.4);--font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;--font-size-sm:12px;--font-size-base:14px;--font-size-md:16px;--font-size-lg:20px;--font-size-xl:24px;--font-size-2xl:32px;--line-height:1.5;--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:40px;--space-8:64px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--shadow-sm:0 1px 0 rgba(27,31,36,.04);--shadow-md:0 3px 6px rgba(0,0,0,.3);--shadow-lg:0 8px 24px rgba(0,0,0,.4);--shadow-inset:inset 0 1px 0 rgba(208,215,222,.05)}body{background:var(--color-canvas-default);color:var(--color-fg-default);display:flex;flex-direction:column;font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height);min-height:100vh;-webkit-font-smoothing:antialiased}a{color:var(--color-accent-fg);text-decoration:none}a:hover{text-decoration:underline}.container{margin:0 auto;max-width:1012px;padding:0 var(--space-3);width:100%}.container--narrow{max-width:768px}main{flex:1;padding:var(--space-5) 0}.header{backdrop-filter:blur(12px);background:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-default);padding:var(--space-3) 0;position:sticky;top:0;z-index:100}.header .container{align-items:center;display:flex;justify-content:space-between}.header nav,.logo a{align-items:center;display:flex;gap:var(--space-2)}.logo a{font-size:var(--font-size-lg);font-weight:600}.logo a,.logo a:hover{color:var(--color-fg-default);text-decoration:none}.logo a:hover{opacity:.8}.footer{background:var(--color-canvas-subtle);border-top:1px solid var(--color-border-default);color:var(--color-fg-subtle);font-size:var(--font-size-sm);padding:var(--space-5) 0;text-align:center}.footer a{color:var(--color-fg-muted)}.footer a:hover{color:var(--color-accent-fg)}.text-secondary{color:var(--color-fg-muted)}.text-subtle{color:var(--color-fg-subtle)}.text-mono{font-family:var(--font-mono);font-size:var(--font-size-sm)}.text-nowrap{white-space:nowrap}.text-center{text-align:center}.text-sm{font-size:var(--font-size-sm)}.text-bold{font-weight:600}.empty,.loading{color:var(--color-fg-muted);padding:var(--space-6);text-align:center}.empty a{color:var(--color-accent-fg)}.blankslate{padding:var(--space-8) var(--space-5);text-align:center}.blankslate h3{font-size:var(--font-size-xl);margin-bottom:var(--space-2)}.blankslate p{color:var(--color-fg-muted);font-size:var(--font-size-md);margin-bottom:var(--space-4)}@media (max-width:768px){.container{padding:0 var(--space-3)}.header .container{flex-direction:row}}@media (max-width:480px){.header nav .btn{font-size:var(--font-size-sm);padding:3px 10px}}.btn{align-items:center;appearance:none;border:1px solid;border-radius:var(--radius-md);cursor:pointer;display:inline-flex;font-family:inherit;font-size:var(--font-size-base);font-weight:500;gap:var(--space-2);line-height:20px;padding:5px 16px;transition:.2s cubic-bezier(.3,0,.5,1);vertical-align:middle;white-space:nowrap}.btn,.btn:hover{text-decoration:none}.btn-primary{background:var(--color-accent-emphasis);border-color:rgba(240,246,252,.1);box-shadow:var(--shadow-sm);color:var(--color-fg-on-emphasis)}.btn-primary:hover{background:#388bfd}.btn-primary:disabled{cursor:not-allowed;opacity:.5}.btn-secondary{background:var(--color-canvas-subtle);color:var(--color-fg-default)}.btn-secondary,.btn-secondary:hover{border-color:var(--color-border-default)}.btn-secondary:hover{background:var(--color-border-muted)}.btn-outline{background:transparent;border-color:var(--color-border-default);color:var(--color-accent-fg)}.btn-outline:hover{background:var(--color-accent-subtle);border-color:var(--color-accent-fg)}.btn-danger{background:var(--color-danger-emphasis);border-color:rgba(240,246,252,.1);color:var(--color-fg-on-emphasis)}.btn-danger:hover{background:#b62324}.btn-sm{font-size:var(--font-size-sm);line-height:20px;padding:3px 12px}.btn-invisible{background:transparent;border:none;color:var(--color-accent-fg);padding:var(--space-1) var(--space-2)}.btn-invisible:hover{background:var(--color-accent-subtle)}.label{align-items:center;border:1px solid transparent;border-radius:2em;display:inline-flex;font-size:var(--font-size-sm);font-weight:500;line-height:18px;padding:0 7px}.label-accent{background:var(--color-accent-subtle);color:var(--color-accent-fg)}.label-success{background:var(--color-success-subtle);color:var(--color-success-fg)}.label-danger{background:var(--color-danger-subtle);color:var(--color-danger-fg)}.label-attention{background:var(--color-attention-subtle);color:var(--color-attention-fg)}.counter{background:var(--color-neutral-muted);border-radius:2em;color:var(--color-fg-default);display:inline-block;font-size:var(--font-size-sm);font-weight:500;line-height:18px;min-width:20px;padding:0 6px;text-align:center}.box{background:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-radius:var(--radius-md)}.box-header{align-items:center;border-bottom:1px solid var(--color-border-default);display:flex;justify-content:space-between}.box-body,.box-header,.box-row{padding:var(--space-3)}.box-row{border-bottom:1px solid var(--color-border-muted)}.box-row:last-child{border-bottom:none}.box-row:hover{background:var(--color-canvas-default)}.flash{border:1px solid;border-radius:var(--radius-md);font-size:var(--font-size-base);margin-top:var(--space-3);padding:var(--space-3)}.flash-success{background:var(--color-success-subtle);border-color:var(--color-success-emphasis);color:var(--color-success-fg)}.flash-success a{color:var(--color-success-fg);font-weight:600}.flash-error{background:var(--color-danger-subtle);border-color:var(--color-danger-emphasis);color:var(--color-danger-fg)}.message{border-radius:var(--radius-md);margin-top:var(--space-3);padding:var(--space-3)}.message.success{background:var(--color-success-subtle);border:1px solid var(--color-success-emphasis);color:var(--color-success-fg)}.message.success a{color:var(--color-success-fg);font-weight:600}.message.error{background:var(--color-danger-subtle);border:1px solid var(--color-danger-emphasis)}.error,.message.error{color:var(--color-danger-fg)}.theme-toggle{align-items:center;background:none;border:none;border-radius:var(--radius-md);color:var(--color-fg-muted);cursor:pointer;display:flex;font-size:var(--font-size-md);padding:var(--space-1)}.theme-toggle:hover{background:var(--color-neutral-muted);color:var(--color-fg-default)}.divider{color:var(--color-fg-subtle);font-size:var(--font-size-sm);margin:var(--space-4) 0;position:relative;text-align:center}.divider:after,.divider:before{background:var(--color-border-muted);content:"";height:1px;position:absolute;top:50%;width:40%}.divider:before{left:0}.divider:after{right:0}.posts-section h2{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--space-3)}.posts-tabs{border-bottom:1px solid var(--color-border-default);display:flex;gap:var(--space-1);margin-bottom:var(--space-3);padding-bottom:0}.posts-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--color-fg-muted);cursor:pointer;font-family:inherit;font-size:var(--font-size-base);font-weight:500;margin-bottom:-1px;padding:var(--space-2) var(--space-3);transition:color .15s,border-color .15s}.posts-tab--active,.posts-tab:hover{color:var(--color-fg-default)}.posts-tab--active{border-bottom-color:var(--color-accent-emphasis)}.posts-grid{display:grid;gap:var(--space-3)}.post-card{background:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-radius:var(--radius-md);transition:border-color .2s,transform .15s}.post-card:hover{background:var(--color-canvas-overlay);border-color:var(--color-border-subtle)}.post-card a{color:inherit;display:block;padding:var(--space-3)}.post-card a,.post-card a:hover{text-decoration:none}.post-card h3{color:var(--color-accent-fg);font-size:var(--font-size-md);font-weight:600;margin-bottom:var(--space-1)}.post-description{color:var(--color-fg-muted);font-size:var(--font-size-base);line-height:1.5;margin-bottom:var(--space-2)}.post-date{color:var(--color-fg-subtle);font-size:var(--font-size-sm)}.post-card-cover{border-bottom:1px solid var(--color-border-default);border-radius:var(--radius-md) var(--radius-md) 0 0;display:block;overflow:hidden;width:100%}.post-card-cover img{display:block;height:180px;object-fit:cover;width:100%}.post-card a:has(.post-card-cover){padding:0}.post-card a:has(.post-card-cover) .post-card-body{padding:var(--space-3)}.post-content{max-width:840px}.post-title{font-size:var(--font-size-2xl);font-weight:600;line-height:1.25;margin-bottom:var(--space-2)}#post-header{border-bottom:1px solid var(--color-border-muted);margin-bottom:var(--space-5);padding-bottom:var(--space-3)}#post-header .post-date,#post-header .post-meta{font-size:var(--font-size-base)}#post-header .post-meta{margin-top:var(--space-2)}#post-header .post-tags{margin-top:var(--space-3)}.post-meta{align-items:center;color:var(--color-fg-muted);display:flex;flex-wrap:wrap;font-size:var(--font-size-sm);gap:var(--space-2)}.post-meta-sep{color:var(--color-fg-subtle)}.post-author,.post-reading-time{color:var(--color-fg-muted)}.post-tags{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-2)}.post-series{margin-bottom:var(--space-2)}.post-cover{margin-bottom:var(--space-4)}.post-cover img{border:1px solid var(--color-border-default);border-radius:var(--radius-lg);height:auto;width:100%}.post-cover-credit{color:var(--color-fg-subtle);font-size:var(--font-size-sm);margin-top:var(--space-1);text-align:center}@media (max-width:768px){.post-title{font-size:var(--font-size-xl)}}@media (max-width:480px){.post-card a{padding:var(--space-3)}}.markdown-body{color:var(--color-fg-default);font-size:var(--font-size-md);line-height:1.6}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{font-weight:600;line-height:1.25;margin-bottom:var(--space-3);margin-top:var(--space-4)}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{border-bottom:1px solid var(--color-border-muted);padding-bottom:.3em}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body p{margin-bottom:var(--space-3)}.markdown-body ol,.markdown-body ul{margin-bottom:var(--space-3);padding-left:2em}.markdown-body li{margin-bottom:var(--space-1)}.markdown-body pre{background:var(--color-canvas-subtle);border:1px solid var(--color-border-default);border-radius:var(--radius-md);line-height:1.45;margin-bottom:var(--space-3);overflow-x:auto;padding:var(--space-3)}.markdown-body code{background:var(--color-neutral-muted);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:85%;padding:.2em .4em}.markdown-body pre code{background:none;border-radius:0;font-size:85%;line-height:inherit;padding:0}.markdown-body table{border-collapse:collapse;display:block;margin:var(--space-3) 0;overflow-x:auto;width:100%}.markdown-body td,.markdown-body th{border:1px solid var(--color-border-default);padding:var(--space-2) var(--space-3);text-align:left}.markdown-body th{font-weight:600}.markdown-body th,.markdown-body tr:nth-child(2n){background:var(--color-canvas-subtle)}.markdown-body img{border:1px solid var(--color-border-default);border-radius:var(--radius-md);height:auto;max-width:100%}.markdown-body blockquote{background:var(--color-canvas-subtle);border-left:3px solid var(--color-accent-emphasis);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--color-fg-muted);margin:var(--space-3) 0;padding:var(--space-2) var(--space-3)}.markdown-body hr{background:var(--color-border-muted);border:none;height:1px;margin:var(--space-4) 0}.markdown-body a{color:var(--color-accent-fg)}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{color:var(--color-fg-default);font-weight:600}.markdown-body del{color:var(--color-fg-muted)}.markdown-body input[type=checkbox]{accent-color:var(--color-accent-emphasis);margin-right:var(--space-1)}.form-group{margin-bottom:var(--space-3)}.form-group label{display:block;font-weight:500;margin-bottom:var(--space-2)}.form-group label,.input,.textarea{color:var(--color-fg-default);font-size:var(--font-size-base)}.input,.textarea{background:var(--color-canvas-default);border:1px solid var(--color-border-default);border-radius:var(--radius-md);font-family:inherit;line-height:20px;padding:5px 12px;transition:border-color .15s,box-shadow .15s;vertical-align:middle;width:100%}.input:focus,.textarea:focus{border-color:var(--color-accent-fg);box-shadow:0 0 0 3px var(--color-accent-subtle);outline:none}.textarea{font-family:var(--font-mono);line-height:1.5;min-height:200px;padding:var(--space-2) var(--space-3);resize:vertical}.form-actions{display:flex;gap:var(--space-2);margin-top:var(--space-4)}.auth-form{max-width:400px}.auth-form p{color:var(--color-fg-muted);margin-bottom:var(--space-3)}.auth-form .form-group{display:flex;gap:var(--space-2)}.auth-form .input{flex:1}.upload-area,.upload-section h2{margin-bottom:var(--space-4)}.upload-area{border:2px dashed var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-6);text-align:center;transition:border-color .2s,background .2s}.upload-area.dragover{background:var(--color-accent-subtle);border-color:var(--color-accent-fg)}.upload-area p{color:var(--color-fg-muted);margin-bottom:var(--space-2)}.preview-section{border-top:1px solid var(--color-border-muted);margin-top:var(--space-5);padding-top:var(--space-5)}.preview-section h3{margin-bottom:var(--space-3)}.preview-section .markdown-body{border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-4)}.admin-section h2{margin-bottom:var(--space-4)}.admin-toolbar{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--space-3)}.admin-table{border:1px solid var(--color-border-default);border-collapse:separate;border-radius:var(--radius-md);border-spacing:0;overflow:hidden;width:100%}.admin-table td,.admin-table th{border-bottom:1px solid var(--color-border-muted);padding:var(--space-2) var(--space-3);text-align:left}.admin-table th{background:var(--color-canvas-subtle);color:var(--color-fg-muted);font-size:var(--font-size-sm);font-weight:600}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:var(--color-canvas-subtle)}.post-link{color:var(--color-accent-fg);font-weight:500;text-decoration:none}.post-link:hover{text-decoration:underline}.action-buttons{display:flex;gap:var(--space-2)}@media (max-width:768px){.upload-area{padding:var(--space-4)}.form-actions{flex-direction:column}.admin-table{font-size:var(--font-size-sm)}.admin-table td:nth-child(2),.admin-table td:nth-child(4),.admin-table th:nth-child(2),.admin-table th:nth-child(4){display:none}}