.admin-login{display:flex;align-items:center;justify-content:center;min-height:70vh}.login-card{width:340px;padding:2.5rem;text-align:center}.login-card h1{margin:0 0 1.5rem;font-size:1.3rem}.login-card input{width:100%;padding:.75rem 1rem;border-radius:10px;border:1px solid var(--glass-border);background:#00000040;color:var(--color-text);margin-bottom:.8rem;outline:none}.login-card input:focus{border-color:var(--color-accent)}.login-err{color:#f87171;font-size:.85rem;min-height:1.2em;margin-bottom:.6rem}.login-btn{width:100%;border:none;cursor:pointer}.admin-shell{display:grid;grid-template-columns:220px 1fr;gap:1.5rem;min-height:70vh}.admin-side{display:flex;flex-direction:column;gap:.35rem;padding:1rem .8rem;border-radius:var(--radius);background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);align-self:start;position:sticky;top:80px}.admin-logo{font-weight:800;font-size:1.05rem;color:var(--color-text);padding:.3rem .6rem 1rem}.admin-tab{text-align:left;padding:.6rem .9rem;border:none;border-radius:10px;background:transparent;color:var(--color-text-muted);font-size:.95rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,color .15s}.admin-tab:hover{background:#ffffff14;color:var(--color-text)}.admin-tab.router-link-active{background:#8b5cf640;color:#c4b5fd}.admin-side-foot{margin-top:auto}.admin-main{min-width:0}.admin-toolbar{display:flex;align-items:center;gap:.6rem;margin-bottom:1.1rem}.admin-toolbar h2{margin:0;font-size:1.15rem}.admin-toolbar .spacer{flex:1}.admin-btn{padding:.5rem 1.2rem;border:none;border-radius:10px;background:var(--color-accent-strong, #8b5cf6);color:#fff;font-weight:600;font-size:.88rem;font-family:inherit;cursor:pointer;transition:transform .15s,background .15s}.admin-btn:hover{background:#7c3aed;transform:translateY(-1px)}.admin-btn.ghost{background:#ffffff1a}.admin-btn.danger{background:transparent;border:1px solid #f87171;color:#f87171}.admin-btn.sm{padding:.35rem .9rem;font-size:.8rem}.admin-work{display:grid;grid-template-columns:290px 1fr;gap:1.1rem;align-items:start}.admin-list{padding:.7rem;max-height:calc(100vh - 190px);overflow-y:auto}.admin-item{padding:.6rem .8rem;border-radius:10px;cursor:pointer;margin-bottom:.35rem;border:1px solid transparent;transition:background .15s}.admin-item:hover{background:#ffffff12}.admin-item.active{background:#8b5cf62e;border-color:#8b5cf666}.admin-item b{display:block;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-item small{color:var(--color-text-muted);font-size:.74rem}.admin-panel{padding:1.25rem 1.4rem}.admin-field{margin-bottom:.9rem}.admin-field label{display:block;font-size:.78rem;color:var(--color-text-muted);margin-bottom:.3rem}.admin-field input,.admin-field textarea{width:100%;padding:.55rem .8rem;border-radius:9px;border:1px solid var(--glass-border);background:#00000040;color:var(--color-text);font-family:inherit;outline:none;transition:border-color .15s}.admin-field input:focus,.admin-field textarea:focus{border-color:var(--color-accent)}.admin-field textarea{min-height:300px;resize:vertical;font-family:ui-monospace,Consolas,monospace;font-size:.88rem;line-height:1.6}.admin-row{display:flex;gap:.8rem}.admin-row .admin-field{flex:1}.cat-chips{display:flex;gap:.5rem;flex-wrap:wrap}.cat-chip-btn{padding:.32rem 1rem;border-radius:999px;border:1px solid var(--glass-border);background:#0003;color:var(--color-text-muted);font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s}.cat-chip-btn.on{background:var(--color-accent-strong, #8b5cf6);border-color:transparent;color:#fff}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem}.admin-preview{background:#0003;border:1px solid var(--glass-border);border-radius:9px;padding:.9rem 1.15rem;min-height:300px;overflow-y:auto;line-height:1.65;font-size:.95rem}.admin-preview pre{background:#070910;padding:.8rem;border-radius:8px;overflow-x:auto}.admin-preview code{font-family:ui-monospace,Consolas,monospace;font-size:.85em}.admin-preview img{max-width:100%}.hint{font-size:.8rem;color:var(--color-text-muted)}.img-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1rem}.img-cell{overflow:hidden;border-radius:14px;background:var(--glass-bg);border:1px solid var(--glass-border)}.img-cell img{width:100%;height:130px;object-fit:cover;display:block;background:#0000004d}.img-cell .meta{padding:.5rem .7rem;font-size:.72rem;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.img-cell .ops{display:flex;gap:.4rem;padding:0 .7rem .6rem}.img-cell .ops button{flex:1;padding:.3rem 0;border-radius:7px;border:1px solid var(--glass-border);background:#ffffff0f;color:var(--color-text);font-size:.75rem;font-family:inherit;cursor:pointer}.img-cell .ops button:hover{border-color:var(--color-accent);color:var(--color-accent)}.admin-toast{position:fixed;right:1.4rem;bottom:1.4rem;padding:.75rem 1.3rem;border-radius:12px;background:#16213a;border:1px solid var(--glass-border);box-shadow:0 10px 30px #00000080;font-size:.88rem;opacity:0;transform:translateY(8px);transition:all .25s;pointer-events:none;z-index:60}.admin-toast.show{opacity:1;transform:none}.admin-toast.ok{border-color:#4ade8080;color:#4ade80}.admin-toast.bad{border-color:#f8717180;color:#f87171}@media(max-width:900px){.admin-shell{grid-template-columns:1fr}.admin-side{position:static;flex-direction:row;flex-wrap:wrap}.admin-work,.editor-grid{grid-template-columns:1fr}}:root{--color-accent: #a78bfa;--color-accent-strong: #8b5cf6;--color-green: #4ade80;--color-text: #e7e9ee;--color-text-muted: #9aa3b5;--color-code-bg: rgba(255, 255, 255, .08);--glass-bg: rgba(20, 22, 42, .55);--glass-bg-strong: rgba(18, 20, 38, .78);--glass-border: rgba(255, 255, 255, .14);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .35);--overlay: rgba(10, 10, 22, .42);--radius: 22px;--wrap: 1080px}[data-theme=light]{--color-text: #1f2937;--color-text-muted: #64748b;--color-code-bg: #f1f5f9;--glass-bg: rgba(255, 255, 255, .55);--glass-bg-strong: rgba(255, 255, 255, .8);--glass-border: rgba(255, 255, 255, .65);--glass-shadow: 0 8px 32px rgba(31, 41, 55, .12);--overlay: rgba(238, 242, 247, .55)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.65;color:var(--color-text);background:#160d12;-webkit-font-smoothing:antialiased}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 1.25rem}a{color:var(--color-accent);text-decoration:none}.site{display:flex;flex-direction:column;min-height:100vh}.site-main{flex:1;width:100%;padding:1.75rem 1.25rem 3rem}.bg-fx{position:fixed;inset:0;z-index:-1;overflow:hidden}.bg-fx .bg-img{position:absolute;inset:-4%;width:108%;height:108%;object-fit:cover}.bg-fx .bg-img.base{animation:bg-drift 40s ease-in-out infinite alternate}.bg-fx .bg-img.slide{filter:blur(22px) brightness(.8);transform:scale(1.08);opacity:0;transition:opacity 1.4s ease}.bg-fx .bg-img.slide.active{opacity:1}@keyframes bg-drift{0%{transform:scale(1) translate(0)}to{transform:scale(1.06) translate(-1.5%,-1.5%)}}.bg-fx .bg-dim{position:absolute;inset:0;background:var(--overlay);transition:background .4s}.particle{position:absolute;border-radius:50%;background:radial-gradient(circle,#fff,#a78bfab3);box-shadow:0 0 10px #fffc;animation:float-particle ease-in-out infinite alternate;will-change:transform}@keyframes float-particle{0%{transform:translateY(0)}to{transform:translateY(-56px)}}.glass-card{background:var(--glass-bg);backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--glass-shadow);transition:background .4s,border-color .4s}.glass-bar{background:#10112299;backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);border-bottom:1px solid var(--glass-border)}[data-theme=light] .glass-bar{background:#fff9}@keyframes fade-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.site-header{position:sticky;top:0;z-index:100}.header-inner{display:flex;align-items:center;justify-content:space-between;height:62px}.brand{font-size:1.25rem;font-weight:800;color:var(--color-text)}.brand span{color:var(--color-accent)}.site-nav{display:flex;gap:1.75rem}.site-nav a{font-weight:600;font-size:1.02rem;color:var(--color-text-muted);transition:color .15s}.site-nav a:hover,.site-nav a.router-link-active{color:var(--color-accent)}.search-wrap{display:flex;justify-content:center;margin:1.25rem 0 1.75rem}.search-box{display:flex;align-items:center;gap:.6rem;width:min(680px,100%);padding:.8rem 1.4rem;background:var(--glass-bg-strong);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:999px;box-shadow:var(--glass-shadow)}.search-box .mag{opacity:.7}.search-box input{flex:1;border:none;outline:none;background:transparent;color:var(--color-text);font-family:inherit;font-size:1rem}.search-box input::placeholder{color:var(--color-text-muted)}.home-grid{display:grid;grid-template-columns:2fr 1fr;gap:1.25rem}@media(max-width:860px){.home-grid{grid-template-columns:1fr}}.profile-card{padding:1.75rem 1.75rem 1.5rem;display:flex;gap:1.5rem;align-items:flex-start;animation:fade-up .6s both}.avatar-ring{flex:none;width:96px;height:96px;padding:4px;border-radius:26px;background:conic-gradient(from 120deg,#8b5cf6,#0ea5e9,#4ade80,#8b5cf6);animation:ring-spin 9s linear infinite}@keyframes ring-spin{to{transform:rotate(360deg)}}.avatar{width:100%;height:100%;border-radius:22px;display:block;animation:ring-spin 9s linear infinite reverse}.profile-main{min-width:0;flex:1}.profile-name{margin:.1rem 0 .35rem;font-size:1.7rem;background:linear-gradient(90deg,#c4b5fd,#7dd3fc);-webkit-background-clip:text;background-clip:text;color:transparent}[data-theme=light] .profile-name{background:linear-gradient(90deg,#7c3aed,#0284c7);-webkit-background-clip:text;background-clip:text}.profile-bio{margin:0 0 1.1rem;font-size:.95rem;color:var(--color-text-muted)}.profile-stats{display:flex;align-items:center;gap:1.4rem;flex-wrap:wrap}.stat{text-align:center}.stat b{display:block;font-size:1.25rem;color:var(--color-accent)}.stat span{font-size:.78rem;color:var(--color-text-muted)}.stat-divider{width:1px;height:30px;background:var(--glass-border)}.profile-socials{display:flex;gap:.55rem;margin-left:auto}.social-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;background:#ffffff14;border:1px solid var(--glass-border);color:var(--color-text-muted);transition:transform .15s,background .15s,color .15s}.social-btn svg{display:block}[data-theme=light] .social-btn{background:#ffffff8c}.social-btn:hover{transform:translateY(-2px);background:#a78bfa40;color:var(--color-accent)}.music-card{padding:1.5rem;display:flex;flex-direction:column;gap:1rem;animation:fade-up .6s .1s both}.music-top{display:flex;gap:1.1rem;align-items:center}.disc{flex:none;width:84px;height:84px;border-radius:50%;background:radial-gradient(circle,#3a3f55 18%,#171a2c 60%);border:3px solid rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center}.disc.spinning{animation:ring-spin 4s linear infinite}.disc-hole{width:22px;height:22px;border-radius:50%;background:var(--glass-border);box-shadow:inset 0 0 4px #00000080}.track-meta{min-width:0}.music-badge{display:inline-block;padding:.1rem .55rem;border-radius:6px;background:#8b5cf64d;color:var(--color-accent);font-size:.68rem;font-weight:700;letter-spacing:.08em}.track-meta h3{margin:.35rem 0 .1rem;font-size:1.15rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-meta p{margin:0;font-size:.85rem;color:var(--color-text-muted)}.progress-row{display:flex;align-items:center;gap:.7rem;font-size:.78rem;color:var(--color-text-muted)}.progress-row input[type=range]{flex:1;accent-color:var(--color-accent-strong);height:4px}.controls{display:flex;justify-content:center}.play-btn{width:52px;height:52px;border:none;border-radius:50%;background:linear-gradient(135deg,#a78bfa,#8b5cf6);color:#fff;font-size:1.2rem;cursor:pointer;box-shadow:0 8px 20px #8b5cf666;transition:transform .15s,box-shadow .15s}.play-btn:hover{transform:scale(1.07);box-shadow:0 10px 26px #8b5cf68c}.ticker{margin:1.25rem 0;padding:.85rem 1.5rem;text-align:center;background:var(--glass-bg-strong);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow);font-size:.95rem;letter-spacing:.04em;color:var(--color-text)}.ticker-fade-enter-active,.ticker-fade-leave-active{transition:opacity .45s,transform .45s}.ticker-fade-enter-from{opacity:0;transform:translateY(8px)}.ticker-fade-leave-to{opacity:0;transform:translateY(-8px)}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:2rem 0 1.1rem}.section-head h2{margin:0;font-size:1.35rem}.more-link{font-weight:600;font-size:.9rem}.row-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.9rem}.row-item{animation:fade-up .55s both;transition:transform .18s,box-shadow .18s}.row-item:hover{transform:translateY(-3px);box-shadow:0 12px 30px #0000004d}.row-link{display:flex;align-items:center;gap:1.1rem;padding:1.05rem 1.4rem;color:var(--color-text)}.row-link:hover{color:var(--color-text)}.row-date{flex:none;font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-muted)}.row-title{flex:1;min-width:0;font-size:1.08rem;font-weight:700}.row-tags{flex:none;font-size:.85rem;color:var(--color-text-muted)}.row-button{width:100%;border:none;background:none;font-family:inherit;cursor:pointer;text-align:left}.theme-icon{flex:none;font-size:1.3rem;filter:drop-shadow(0 0 10px rgba(251,191,36,.6))}.page-title{margin:.5rem 0 1.4rem;font-size:1.75rem}.tag-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.6rem}.tag-chip{padding:.32rem .9rem;border:1px solid var(--glass-border);border-radius:999px;background:var(--glass-bg);font-family:inherit;font-size:.85rem;color:var(--color-text-muted);cursor:pointer;transition:color .15s,border-color .15s}.tag-chip.active,.tag-chip:hover{border-color:var(--color-accent);color:var(--color-accent)}.tag-chip.dim{opacity:.45}.post-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.post-item{animation:fade-up .55s both;transition:transform .18s,box-shadow .18s}.post-item:hover{transform:translateY(-4px)}.post-link{display:block;padding:1.2rem 1.5rem;color:var(--color-text)}.post-link:hover{color:var(--color-text)}.post-date{font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-muted)}.post-title{margin:.25rem 0 .4rem;font-size:1.2rem}.post-excerpt{margin:0 0 .55rem;font-size:.92rem;color:var(--color-text-muted)}.tag{margin-right:.6rem;font-size:.8rem;color:var(--color-green)}.post-shell{max-width:820px;margin:0 auto;padding:2.25rem 2.5rem;animation:fade-up .5s both}.back-link{font-weight:600}.post-heading{margin:.5rem 0 .25rem;font-size:2rem;line-height:1.25}.post-meta{margin:0 0 2rem;padding-bottom:1.25rem;border-bottom:1px solid var(--glass-border);font-size:.9rem;color:var(--color-text-muted)}.post-meta time{font-weight:600}.post-meta .updated{margin-left:.4rem}.post-meta .post-tags{margin-left:.75rem}.post-body h2{margin-top:2rem}.post-body img{max-width:100%;border-radius:12px}.post-body code{padding:.15em .4em;border-radius:5px;background:var(--color-code-bg);font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.88em}.post-body pre{padding:1rem 1.25rem;overflow-x:auto;background:#080a14d9;border:1px solid var(--glass-border);border-radius:12px}.post-body pre code{padding:0;background:none;color:#e5e7eb;font-size:.88rem}.post-body blockquote{margin:1.5rem 0;padding:.25rem 1.25rem;border-left:3px solid var(--color-accent);color:var(--color-text-muted)}.post-body table{border-collapse:collapse;width:100%}.post-body th,.post-body td{padding:.5rem .75rem;border:1px solid var(--glass-border);text-align:left}.not-found{text-align:center}.empty-state{padding:3.5rem 1rem;text-align:center;color:var(--color-text-muted)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem}.project-card{padding:1.5rem;display:flex;flex-direction:column;gap:.6rem;animation:fade-up .55s both;transition:transform .18s}.project-card:hover{transform:translateY(-4px)}.project-head{display:flex;align-items:center;gap:.75rem}.project-date{margin-left:auto;font-size:.78rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.project-emoji{font-size:1.6rem}.project-name{margin:0;font-size:1.2rem}.project-desc{margin:0;flex:1;font-size:.92rem;color:var(--color-text-muted)}.project-tech{display:flex;flex-wrap:wrap;gap:.4rem}.tech-chip{padding:.12rem .6rem;border-radius:6px;background:#ffffff14;border:1px solid var(--glass-border);font-size:.72rem;color:var(--color-text-muted)}.project-link{font-weight:600;font-size:.9rem}.status-bar{margin-top:2.5rem;padding:.9rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:var(--glass-bg-strong);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow);font-size:.85rem;color:var(--color-text-muted)}.status-clock{font-size:1.35rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-text);letter-spacing:.08em}.uptime .dot{color:var(--color-green)}.status-badges{display:flex;gap:.5rem;flex-wrap:wrap}.tech-badge{padding:.15rem .7rem;border-radius:999px;border:1px solid var(--glass-border);background:#ffffff0f;font-size:.75rem}.about{max-width:60ch}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
