@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--font-sans: "DM Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--color-bg: #0a0a0b;--color-surface: #111113;--color-surface-elevated: #18181b;--color-border: #27272a;--color-text: #fafafa;--color-text-muted: #71717a;--color-accent: #a78bfa;--color-accent-hover: #c4b5fd;--color-accent-muted: rgba(167, 139, 250, .12);--radius: 10px;--radius-sm: 6px;--ease: cubic-bezier(.25, .46, .45, .94);--duration: .25s}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}a{color:var(--color-accent);text-decoration:none;transition:color var(--duration) var(--ease)}a:hover{color:var(--color-accent-hover)}button{font-family:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::selection{background:var(--color-accent-muted);color:var(--color-accent)}.reveal{opacity:0;transform:translateY(12px);transition:opacity .6s var(--ease),transform .6s var(--ease)}.reveal.in-view{opacity:1;transform:translateY(0)}.reveal.stagger-1{transition-delay:.05s}.reveal.stagger-2{transition-delay:.1s}.reveal.stagger-3{transition-delay:.15s}.section-title{margin:0 0 1.5rem;font-size:1.5rem;font-weight:600;letter-spacing:-.02em;color:var(--color-text)}.auth-modal-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:1rem;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.auth-modal{position:relative;width:100%;max-width:360px;padding:1.5rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.auth-modal-close{position:absolute;top:.75rem;right:.75rem;padding:.25rem;font-size:1.5rem;line-height:1;color:var(--color-text-muted);background:none;border:none;cursor:pointer;transition:color var(--duration) var(--ease)}.auth-modal-close:hover{color:var(--color-text)}.auth-modal-title{margin:0 0 1.25rem;font-size:1.25rem;font-weight:600}.auth-modal-form{display:flex;flex-direction:column;gap:.75rem}.auth-modal-input{padding:.6rem .75rem;font-family:inherit;font-size:.95rem;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--duration) var(--ease)}.auth-modal-input::placeholder{color:var(--color-text-muted)}.auth-modal-input:focus{outline:none;border-color:var(--color-accent)}.auth-modal-error{margin:0;font-size:.85rem;color:#f87171}.auth-modal-submit{padding:.6rem 1rem;font-size:.95rem;font-weight:500;color:var(--color-bg);background:var(--color-accent);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration) var(--ease),opacity var(--duration) var(--ease)}.auth-modal-submit:hover:not(:disabled){background:var(--color-accent-hover)}.auth-modal-submit:disabled{opacity:.7;cursor:not-allowed}.auth-modal-switch{margin:1rem 0 0;font-size:.9rem;color:var(--color-text-muted);text-align:center}.auth-modal-switch-btn{padding:0;font-size:inherit;font-weight:500;color:var(--color-accent);background:none;border:none;cursor:pointer;text-decoration:underline}.auth-modal-switch-btn:hover{color:var(--color-accent-hover)}.nav{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.5rem;background:var(--color-nav-bg, rgba(10, 10, 11, .8));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:background var(--duration) var(--ease)}.nav-logo{font-weight:600;font-size:1.1rem;letter-spacing:-.02em;color:var(--color-text);transition:color var(--duration) var(--ease),opacity var(--duration) var(--ease)}.nav-logo:hover{color:var(--color-accent);opacity:.9}.nav-toggle{display:flex;flex-direction:column;gap:5px;padding:.5rem;background:none;border:none;color:var(--color-text);border-radius:var(--radius-sm);transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.nav-toggle:hover{background:var(--color-surface-elevated)}.nav-toggle span{display:block;width:20px;height:1.5px;background:currentColor;border-radius:1px;transition:transform .25s var(--ease),opacity .2s var(--ease)}.nav-toggle span:nth-child(1).open{transform:translateY(6.5px) rotate(45deg)}.nav-toggle span:nth-child(2).open{opacity:0}.nav-toggle span:nth-child(3).open{transform:translateY(-6.5px) rotate(-45deg)}.nav-links{display:flex;align-items:center;gap:.25rem}.nav-links a{padding:.5rem .75rem;border-radius:var(--radius-sm);color:var(--color-text-muted);font-weight:500;font-size:.9rem;transition:color var(--duration) var(--ease),background var(--duration) var(--ease)}.nav-admin{color:var(--color-text-muted)}.nav-admin:hover,.nav-admin.active,.nav-links a:hover,.nav-links a.active{color:var(--color-text);background:var(--color-surface-elevated)}.nav-write{margin-left:.25rem;padding:.5rem .875rem!important;background:var(--color-accent)!important;color:var(--color-bg)!important;border-radius:var(--radius-sm);transition:background var(--duration) var(--ease),transform .15s var(--ease)}.nav-write:hover{background:var(--color-accent-hover)!important;color:var(--color-bg)!important;transform:translateY(-1px)}.nav-user-avatar{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:2px solid var(--color-border);border-radius:50%;overflow:hidden;background:var(--color-surface-elevated);flex-shrink:0;transition:border-color var(--duration) var(--ease),transform .15s var(--ease)}.nav-user-avatar:hover{border-color:var(--color-accent);transform:scale(1.05)}.nav-user-avatar-img{width:100%;height:100%;object-fit:cover}.nav-user-initials{font-size:.75rem;font-weight:600;color:var(--color-accent);letter-spacing:.02em}.nav-login,.nav-logout{padding:.5rem .75rem;font-size:.9rem;font-weight:500;color:var(--color-text-muted);background:none;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:color var(--duration) var(--ease),background var(--duration) var(--ease)}.nav-login:hover,.nav-logout:hover{color:var(--color-text);background:var(--color-surface-elevated)}@media(max-width:639px){.nav-links{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;padding:.75rem 1rem;background:var(--color-surface-elevated);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:translateY(-8px);opacity:0;visibility:hidden;pointer-events:none;transition:transform .25s var(--ease),opacity .25s var(--ease),visibility .25s}.nav-links.open{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto}.nav-write{margin-left:0;text-align:center}}@media(min-width:640px){.nav-toggle{display:none}}.layout{min-height:100vh;display:flex;flex-direction:column}.layout-main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:0 1.5rem 4rem}@media(min-width:768px){.layout-main{padding-left:2rem;padding-right:2rem}}.hero{padding:5rem 0 6rem;text-align:center}.hero-badge{display:inline-block;margin-bottom:1.25rem;font-size:.75rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);opacity:.9;transition:color var(--duration) var(--ease)}.hero-title{margin:0 0 .75rem;font-size:clamp(2rem,5vw,3.25rem);font-weight:600;line-height:1.15;letter-spacing:-.03em}.hero-name{color:var(--color-accent);background:linear-gradient(135deg,var(--color-accent),var(--color-accent-hover));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-subtitle{max-width:480px;margin:0 auto 2rem;font-size:1rem;font-weight:400;color:var(--color-text-muted);line-height:1.7}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.hero-cta{display:inline-flex;align-items:center;padding:.625rem 1.25rem;font-weight:500;font-size:.9rem;border-radius:var(--radius-sm);transition:background var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease),transform .2s var(--ease)}.hero-cta:hover{transform:translateY(-2px)}.hero-cta:active{transform:translateY(0)}.hero-cta-primary{background:var(--color-accent);color:var(--color-bg)}.hero-cta-primary:hover{background:var(--color-accent-hover);color:var(--color-bg)}.hero-cta-secondary{background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border)}.hero-cta-secondary:hover{color:var(--color-text);border-color:var(--color-text-muted)}.about{padding:4rem 0}.about-content{display:grid;gap:2rem}@media(min-width:768px){.about-content{grid-template-columns:1fr auto;align-items:start}}.about-text{max-width:52ch}.about-text p{margin:0 0 .875rem;color:var(--color-text-muted);font-size:.95rem;line-height:1.75;transition:color var(--duration) var(--ease)}.about-text p:last-child{margin-bottom:0}.about-meta{display:flex;flex-direction:column;gap:.875rem;padding:1rem 1.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);transition:border-color var(--duration) var(--ease)}.about-meta:hover{border-color:var(--color-text-muted)}.about-meta-item{display:flex;flex-direction:column;gap:.2rem}.about-meta-item .label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted)}.about-meta-item .value{font-size:.9rem;color:var(--color-text)}.projects{padding:4rem 0}.projects-grid{display:grid;gap:1.25rem}@media(min-width:640px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:960px){.projects-grid{grid-template-columns:repeat(3,1fr)}}.project-card{display:flex;flex-direction:column;padding:1.25rem 1.5rem;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius);transition:border-color var(--duration) var(--ease),background var(--duration) var(--ease),transform .2s var(--ease);color:inherit}.project-card:hover{border-color:var(--color-text-muted);background:var(--color-surface);transform:translateY(-2px);color:inherit}.project-title{margin:0 0 .35rem;font-size:1.05rem;font-weight:600;color:var(--color-text);transition:color var(--duration) var(--ease)}.project-card:hover .project-title{color:var(--color-accent)}.project-desc{flex:1;margin:0 0 .75rem;font-size:.875rem;color:var(--color-text-muted);line-height:1.6}.project-tags{display:flex;flex-wrap:wrap;gap:.4rem}.project-tag{padding:.2rem .5rem;font-size:.7rem;font-weight:500;color:var(--color-text-muted);background:var(--color-surface-elevated);border-radius:4px;transition:color var(--duration) var(--ease),background var(--duration) var(--ease)}.project-card:hover .project-tag{color:var(--color-accent);background:var(--color-accent-muted)}.skills{padding:4rem 0}.skills-grid{display:grid;gap:1.25rem}@media(min-width:640px){.skills-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:768px){.skills-grid{grid-template-columns:repeat(4,1fr)}}.skill-group{padding:1rem 1.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);transition:border-color var(--duration) var(--ease),background var(--duration) var(--ease)}.skill-group:hover{border-color:var(--color-text-muted);background:var(--color-surface-elevated)}.skill-category{margin:0 0 .6rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-accent)}.skill-list{margin:0;padding:0;list-style:none}.skill-list li{padding:.3rem 0;font-size:.9rem;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);transition:color var(--duration) var(--ease)}.skill-group:hover .skill-list li{color:var(--color-text)}.skill-list li:last-child{border-bottom:none}.contact{padding:4rem 0 5rem}.contact-text{margin:0 0 1.5rem;max-width:38ch;font-size:.95rem;color:var(--color-text-muted);line-height:1.7}.contact-links{display:flex;flex-wrap:wrap;gap:.75rem}.contact-link{display:inline-flex;align-items:center;padding:.5rem .875rem;font-size:.9rem;font-weight:500;color:var(--color-text-muted);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:color var(--duration) var(--ease),border-color var(--duration) var(--ease),background var(--duration) var(--ease),transform .15s var(--ease)}.contact-link:hover{color:var(--color-accent);border-color:var(--color-accent);background:var(--color-accent-muted);transform:translateY(-1px)}.blog-preview{padding:4rem 0 5rem}.blog-preview-intro{margin:0 0 1.5rem;font-size:.95rem;color:var(--color-text-muted)}.blog-preview-intro a{color:var(--color-accent);font-weight:500}.blog-preview-loading,.blog-preview-empty{margin:0;font-size:.95rem;color:var(--color-text-muted)}.blog-preview-grid{display:grid;gap:1.25rem}@media(min-width:640px){.blog-preview-grid{grid-template-columns:repeat(3,1fr)}}.blog-preview-card{display:flex;flex-direction:column;padding:1rem 0;border-bottom:1px solid var(--color-border);transition:opacity var(--duration) var(--ease);color:inherit}.blog-preview-card:hover{opacity:.85;color:inherit}.blog-preview-image-wrap{margin-bottom:.75rem;border-radius:var(--radius-sm);overflow:hidden;aspect-ratio:16/9;background:var(--color-surface)}.blog-preview-image{width:100%;height:100%;object-fit:cover;transition:transform .4s var(--ease)}.blog-preview-card:hover .blog-preview-image{transform:scale(1.03)}.blog-preview-title{margin:0 0 .35rem;font-size:1rem;font-weight:600;color:var(--color-text);line-height:1.35}.blog-preview-card:hover .blog-preview-title{color:var(--color-accent)}.blog-preview-excerpt{flex:1;margin:0 0 .5rem;font-size:.85rem;color:var(--color-text-muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.blog-preview-date{font-size:.8rem;color:var(--color-text-muted)}.blog-page{padding:2rem 0 4rem}.blog-header{margin-bottom:2rem}.blog-header h1{margin:0 0 .35rem;font-size:1.75rem;font-weight:600;letter-spacing:-.02em}.blog-intro{margin:0;font-size:.95rem;color:var(--color-text-muted)}.blog-loading,.blog-error,.blog-empty{color:var(--color-text-muted);text-align:center;padding:3rem;font-size:.95rem}.blog-list{display:flex;flex-direction:column;gap:1.5rem}.blog-card{display:block;padding:1.25rem 0;border-bottom:1px solid var(--color-border);border-radius:0;transition:opacity var(--duration) var(--ease);color:inherit}.blog-card:last-child{border-bottom:none}.blog-card:hover{opacity:.85;color:inherit}.blog-card-image-wrap{display:block;margin-bottom:1rem;border-radius:var(--radius-sm);overflow:hidden}.blog-card-image{width:100%;height:180px;object-fit:cover;transition:transform .4s var(--ease)}.blog-card:hover .blog-card-image{transform:scale(1.02)}.blog-card-body{display:flex;flex-direction:column;gap:.35rem}.blog-card-meta{display:flex;gap:.75rem;font-size:.8rem;color:var(--color-text-muted)}.blog-card-title{font-size:1.2rem;font-weight:600;color:var(--color-text);line-height:1.35;transition:color var(--duration) var(--ease)}.blog-card:hover .blog-card-title{color:var(--color-accent)}.blog-card-excerpt{margin:0;font-size:.9rem;color:var(--color-text-muted);line-height:1.6}.blog-card-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.blog-card-tag{padding:.15rem .45rem;font-size:.7rem;font-weight:500;color:var(--color-text-muted);background:var(--color-surface);border-radius:4px;transition:color var(--duration) var(--ease),background var(--duration) var(--ease)}.blog-card:hover .blog-card-tag{color:var(--color-accent);background:var(--color-accent-muted)}.post-page{padding:2rem 0 4rem;max-width:720px;margin:0 auto}.post-loading,.post-error{color:var(--color-text-muted);text-align:center;padding:3rem}.post-back{display:inline-block;margin-bottom:1.5rem;font-size:.9rem;color:var(--color-text-muted);transition:color var(--duration) var(--ease)}.post-back:hover{color:var(--color-accent)}.post-header{margin-bottom:2.5rem}.post-title{margin:0 0 1rem;font-size:clamp(1.6rem,4vw,2.25rem);font-weight:600;line-height:1.25;letter-spacing:-.02em}.post-meta{display:flex;flex-wrap:wrap;gap:1rem;font-size:.9rem;color:var(--color-text-muted)}.post-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.post-tag{padding:.25rem .6rem;font-size:.8rem;color:var(--color-accent);background:var(--color-accent-muted);border-radius:6px}.post-actions{margin-top:1rem}.post-like-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .75rem;font-size:.9rem;font-weight:500;color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:color var(--duration) var(--ease),border-color var(--duration) var(--ease),background var(--duration) var(--ease)}.post-like-btn:hover:not(:disabled){color:var(--color-accent);border-color:var(--color-accent);background:var(--color-accent-muted)}.post-like-btn.liked{color:var(--color-accent);border-color:var(--color-accent);background:var(--color-accent-muted)}.post-like-btn:disabled{opacity:.7;cursor:not-allowed}.post-comments{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--color-border)}.post-comments-title{margin:0 0 1rem;font-size:1.15rem;font-weight:600}.post-comment-form{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.post-comment-input{width:100%;padding:.75rem 1rem;font-family:inherit;font-size:.95rem;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical;transition:border-color var(--duration) var(--ease)}.post-comment-input::placeholder{color:var(--color-text-muted)}.post-comment-input:focus{outline:none;border-color:var(--color-accent)}.post-comment-input:read-only{cursor:not-allowed;opacity:.8}.post-comment-submit{align-self:flex-start;padding:.5rem 1rem;font-size:.9rem;font-weight:500;color:var(--color-bg);background:var(--color-accent);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration) var(--ease)}.post-comment-submit:hover:not(:disabled){background:var(--color-accent-hover)}.post-comment-submit:disabled{opacity:.5;cursor:not-allowed}.post-comment-list{margin:0;padding:0;list-style:none}.post-comment{padding:1rem 0;border-bottom:1px solid var(--color-border)}.post-comment:last-child{border-bottom:none}.post-comment-author{font-weight:600;font-size:.9rem;color:var(--color-text)}.post-comment-date{margin-left:.5rem;font-size:.85rem;color:var(--color-text-muted)}.post-comment-content{margin:.35rem 0 0;font-size:.95rem;color:var(--color-text-muted);line-height:1.5}.prose{font-size:1.05rem;line-height:1.75}.prose :first-child{margin-top:0}.prose p{margin:1rem 0;color:var(--color-text)}.prose h1,.prose h2,.prose h3{margin:2rem 0 .75rem;font-weight:600;color:var(--color-text);line-height:1.3}.prose h1{font-size:1.75rem}.prose h2{font-size:1.4rem}.prose h3{font-size:1.2rem}.prose ul,.prose ol{margin:1rem 0;padding-left:1.5rem}.prose li{margin:.35rem 0;color:var(--color-text)}.prose blockquote{margin:1.5rem 0;padding-left:1.25rem;border-left:4px solid var(--color-accent);color:var(--color-text-muted);font-style:italic}.prose pre{margin:1.5rem 0;padding:1.25rem;background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow-x:auto;font-family:var(--font-mono);font-size:.9rem;line-height:1.5}.prose code{font-family:var(--font-mono);font-size:.9em;padding:.2em .4em;background:var(--color-surface-elevated);border-radius:4px}.prose pre code{padding:0;background:none}.prose a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.prose img{max-width:100%;height:auto;border-radius:var(--radius-sm)}.prose hr{margin:2rem 0;border:none;border-top:1px solid var(--color-border)}.rich-editor{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);overflow:hidden}.rich-editor-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.15rem;padding:.5rem .75rem;border-bottom:1px solid var(--color-border);background:var(--color-surface-elevated)}.rich-editor-toolbar button{padding:.4rem .6rem;font-size:.8rem;font-weight:500;color:var(--color-text-muted);background:transparent;border:none;border-radius:var(--radius-sm);transition:color var(--duration) var(--ease),background var(--duration) var(--ease)}.rich-editor-toolbar button:hover{color:var(--color-text);background:var(--color-border)}.rich-editor-toolbar button.active{color:var(--color-accent);background:var(--color-accent-muted)}.rich-editor-sep{width:1px;height:1.25rem;margin:0 .25rem;background:var(--color-border)}.rich-editor .ProseMirror{min-height:320px;padding:1rem 1.25rem;outline:none;font-size:1rem;line-height:1.7}.rich-editor .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--color-text-muted);float:left;height:0;pointer-events:none}.rich-editor .ProseMirror h1{font-size:1.75rem;margin:1.25rem 0 .5rem}.rich-editor .ProseMirror h2{font-size:1.4rem;margin:1rem 0 .4rem}.rich-editor .ProseMirror h3{font-size:1.2rem;margin:.75rem 0 .35rem}.rich-editor .ProseMirror ul,.rich-editor .ProseMirror ol{padding-left:1.5rem;margin:.5rem 0}.rich-editor .ProseMirror blockquote{border-left:3px solid var(--color-accent);padding-left:1rem;margin:.75rem 0;color:var(--color-text-muted)}.rich-editor .ProseMirror pre{background:var(--color-surface-elevated);padding:1rem;border-radius:var(--radius-sm);overflow-x:auto;margin:.75rem 0;font-family:var(--font-mono);font-size:.9rem}.rich-editor .ProseMirror code{font-family:var(--font-mono);font-size:.9em}.rich-editor .ProseMirror img{max-width:100%;height:auto;border-radius:var(--radius-sm)}.rich-editor .ProseMirror a{color:var(--color-accent);text-decoration:underline}.blog-editor-page{padding:2rem 0 4rem;max-width:720px;margin:0 auto}.blog-editor-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.blog-editor-header h1{margin:0;font-size:1.5rem;font-weight:600;letter-spacing:-.02em}.blog-editor-auth-prompt{margin:.5rem 0 0;font-size:.95rem;color:var(--color-text-muted)}.blog-editor-auth-btn{padding:0;font-size:inherit;font-weight:500;color:var(--color-accent);background:none;border:none;cursor:pointer;text-decoration:underline}.blog-editor-auth-btn:hover{color:var(--color-accent-hover)}.blog-editor-error{margin:0;font-size:.9rem;color:#f87171}.blog-editor-save{padding:.5rem 1rem;font-size:.9rem;font-weight:500;color:var(--color-bg);background:var(--color-accent);border:none;border-radius:var(--radius-sm);transition:background var(--duration) var(--ease),transform .15s var(--ease)}.blog-editor-save:hover{background:var(--color-accent-hover);transform:translateY(-1px)}.blog-editor-form{display:flex;flex-direction:column;gap:1rem}.blog-editor-title-input,.blog-editor-excerpt-input{width:100%;padding:.75rem 1rem;font-family:inherit;font-size:1.25rem;font-weight:600;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--duration) var(--ease)}.blog-editor-title-input::placeholder,.blog-editor-excerpt-input::placeholder{color:var(--color-text-muted)}.blog-editor-title-input:focus,.blog-editor-excerpt-input:focus{outline:none;border-color:var(--color-accent)}.blog-editor-excerpt-input{font-size:.95rem;font-weight:400}.admin-wrap{max-width:640px;margin:0 auto;padding:2rem 1.5rem}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.admin-header h1{margin:0;font-size:1.75rem;font-weight:600}.admin-back{color:var(--color-text-muted);font-size:.9rem}.admin-back:hover{color:var(--color-accent)}.admin-section{margin-bottom:2rem}.admin-section h2{margin:0 0 1rem;font-size:1.1rem;font-weight:600;color:var(--color-text-muted)}.admin-loading{color:var(--color-text-muted)}.admin-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1rem}.admin-stat{padding:1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;color:var(--color-text-muted)}.admin-stat-value{display:block;font-size:1.5rem;font-weight:600;color:var(--color-text)}.admin-theme{display:flex;flex-direction:column;gap:1.25rem}.admin-theme-row{display:flex;align-items:center;gap:1rem}.admin-theme-row span,.admin-theme-row label{min-width:80px;font-size:.9rem;color:var(--color-text-muted)}.admin-theme-modes{display:flex;gap:.5rem}.admin-theme-modes button{padding:.5rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);font-size:.9rem}.admin-theme-modes button:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.admin-theme-modes button.active{background:var(--color-accent-muted);border-color:var(--color-accent);color:var(--color-accent)}.admin-theme-modes button:disabled{opacity:.7;cursor:not-allowed}.admin-theme-accent{display:flex;align-items:center;gap:.75rem}.admin-theme-accent input[type=color]{width:40px;height:36px;padding:2px;border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;background:var(--color-surface)}.admin-theme-accent input[type=text]{width:100px;padding:.5rem .75rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);font-family:var(--font-mono);font-size:.85rem}.admin-message{margin-top:1rem;font-size:.9rem;color:var(--color-text-muted)}
