.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{--term-bg: #0b0f0c;--term-panel: #0e1510;--term-panel-strong: #101a12;--term-border: #1f3a26;--term-border-bright: #2f5c3a;--term-text: #c8e6c9;--term-muted: #6b8f71;--term-green: #3fd665;--term-green-dim: #2a8a44;--term-cyan: #4fd8e0;--term-amber: #e5c07b;--term-red: #e06c75;--term-shadow: 5px 5px 0 #050a06;--term-code-bg: rgba(63, 214, 101, .08);--radius: 6px;--wrap: 1080px;--font-mono: "Cascadia Code", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}[data-theme=light]{--term-bg: #ece8da;--term-panel: #f5f2e8;--term-panel-strong: #faf7ec;--term-border: #c9c2a8;--term-border-bright: #a8a586;--term-text: #23331f;--term-muted: #6f7d5f;--term-green: #1d7a38;--term-green-dim: #3a6b45;--term-cyan: #0e7a86;--term-amber: #8a6d1d;--term-shadow: 5px 5px 0 #d6d0ba;--term-code-bg: rgba(29, 122, 56, .1)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-mono);font-size:15px;line-height:1.7;color:var(--term-text);background:var(--term-bg);-webkit-font-smoothing:antialiased}::selection{background:var(--term-green);color:#06110a}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 1.25rem}a{color:var(--term-cyan);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}.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;background:var(--term-bg)}.bg-fx .crt-grid{position:absolute;inset:0;background-image:linear-gradient(var(--term-border) 1px,transparent 1px),linear-gradient(90deg,var(--term-border) 1px,transparent 1px);background-size:44px 44px;opacity:.35;mask-image:radial-gradient(ellipse at 50% 0%,black 30%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse at 50% 0%,black 30%,transparent 75%)}.bg-fx .crt-scanlines{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.18) 2px 4px);pointer-events:none}[data-theme=light] .bg-fx .crt-scanlines{background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(120,110,70,.06) 2px 4px)}.bg-fx .crt-glow{position:absolute;inset:0;background:radial-gradient(ellipse at 50% -10%,rgba(63,214,101,.12),transparent 55%)}.glass-card{background:var(--term-panel);border:1px solid var(--term-border);border-radius:var(--radius);box-shadow:var(--term-shadow);transition:border-color .15s,transform .15s}.glass-bar{background:var(--term-panel-strong);border-bottom:1px solid var(--term-border)}@keyframes fade-up{0%{opacity:0;transform:translateY(12px)}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:56px}.brand{font-size:1.02rem;font-weight:700;color:var(--term-text);letter-spacing:-.02em}.brand:hover{text-decoration:none}.brand:before{content:"λ ";color:var(--term-green)}.brand span{color:var(--term-green)}.site-nav{display:flex;gap:1.5rem}.site-nav a{font-weight:500;font-size:.92rem;color:var(--term-muted);transition:color .15s}.site-nav a:before{content:"./";color:var(--term-green-dim)}.site-nav a:hover,.site-nav a.router-link-active{color:var(--term-green);text-decoration:none}.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:.7rem 1.1rem;background:var(--term-panel-strong);border:1px solid var(--term-border);border-radius:var(--radius);box-shadow:var(--term-shadow)}.search-box:focus-within{border-color:var(--term-border-bright)}.search-box .mag{color:var(--term-green);font-weight:700;white-space:nowrap}.search-box input{flex:1;border:none;outline:none;background:transparent;color:var(--term-text);font-family:inherit;font-size:.95rem;caret-color:var(--term-green)}.search-box input::placeholder{color:var(--term-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.6rem 1.6rem 1.4rem;display:flex;gap:1.5rem;align-items:flex-start;animation:fade-up .5s both}.avatar-ring{flex:none;width:96px;height:96px;padding:0;border-radius:4px;border:1px solid var(--term-border-bright);background:none}.avatar{width:100%;height:100%;border-radius:3px;display:block;filter:saturate(.85) contrast(1.05)}.profile-main{min-width:0;flex:1}.profile-name{margin:.1rem 0 .35rem;font-size:1.5rem;color:var(--term-green)}.profile-name:before{content:"~/whoami # ";color:var(--term-muted);font-size:.85rem;font-weight:400}.profile-bio{margin:0 0 1.1rem;font-size:.9rem;color:var(--term-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.2rem;color:var(--term-green)}.stat b:after{content:""}.stat span{font-size:.72rem;color:var(--term-muted);text-transform:uppercase;letter-spacing:.08em}.stat-divider{width:1px;height:30px;background:var(--term-border)}.profile-socials{display:flex;gap:.55rem;margin-left:auto}.social-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius);background:transparent;border:1px solid var(--term-border);color:var(--term-muted);transition:border-color .15s,color .15s}.social-btn svg{display:block}.social-btn:hover{border-color:var(--term-green);color:var(--term-green)}.music-card{padding:1.5rem;display:flex;flex-direction:column;gap:1rem;animation:fade-up .5s .08s both}.music-top{display:flex;gap:1.1rem;align-items:center}.disc{flex:none;width:84px;height:84px;border-radius:4px;background:var(--term-panel-strong);border:1px solid var(--term-border-bright);display:flex;align-items:center;justify-content:center}.disc-hole{width:22px;height:22px;border-radius:3px;background:var(--term-border)}.track-meta{min-width:0}.music-badge{display:inline-block;padding:.1rem .55rem;border-radius:3px;background:#3fd6651f;border:1px solid var(--term-border-bright);color:var(--term-green);font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.track-meta h3{margin:.35rem 0 .1rem;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-meta p{margin:0;font-size:.82rem;color:var(--term-muted)}.progress-row{display:flex;align-items:center;gap:.7rem;font-size:.78rem;color:var(--term-muted)}.progress-row input[type=range]{flex:1;accent-color:var(--term-green);height:4px}.controls{display:flex;justify-content:center}.play-btn{width:48px;height:48px;border:1px solid var(--term-border-bright);border-radius:var(--radius);background:transparent;color:var(--term-green);font-size:1.1rem;cursor:pointer;transition:background .15s,color .15s}.play-btn:hover{background:var(--term-green);color:#06110a}.ticker{margin:1.25rem 0;padding:.75rem 1.2rem;background:var(--term-panel-strong);border:1px solid var(--term-border);border-left:3px solid var(--term-green-dim);border-radius:3px;box-shadow:var(--term-shadow);font-size:.88rem;color:var(--term-muted)}.ticker:before{content:'$ echo "';color:var(--term-green-dim)}.ticker:after{content:'"';color:var(--term-green-dim)}.ticker span{color:var(--term-text)}.ticker-fade-enter-active,.ticker-fade-leave-active{transition:opacity .3s}.ticker-fade-enter-from,.ticker-fade-leave-to{opacity:0}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:2rem 0 1.1rem;border-bottom:1px dashed var(--term-border);padding-bottom:.5rem}.section-head h2{margin:0;font-size:1.15rem}.section-head h2:before{content:"## ";color:var(--term-green-dim)}.more-link{font-weight:500;font-size:.85rem}.row-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.8rem}.row-item{animation:fade-up .5s both;transition:border-color .15s,transform .15s}.row-item:hover{border-color:var(--term-border-bright);transform:translate(2px,-2px)}.row-link{display:flex;align-items:center;gap:1.1rem;padding:.95rem 1.3rem;color:var(--term-text)}.row-link:hover{color:var(--term-text);text-decoration:none}.row-date{flex:none;font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--term-amber);font-variant-numeric:tabular-nums}.row-title{flex:1;min-width:0;font-size:1rem;font-weight:600}.row-tags{flex:none;font-size:.82rem}.row-button{width:100%;border:none;background:none;font-family:inherit;cursor:pointer;text-align:left}.theme-icon{flex:none;font-size:1.15rem}.page-title{margin:.5rem 0 1.4rem;font-size:1.5rem}.page-title:before{content:"# ";color:var(--term-green-dim)}.tag-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.6rem}.tag-chip{padding:.28rem .85rem;border:1px solid var(--term-border);border-radius:3px;background:var(--term-panel);font-family:inherit;font-size:.82rem;color:var(--term-muted);cursor:pointer;transition:color .15s,border-color .15s}.tag-chip.active,.tag-chip:hover{border-color:var(--term-green);color:var(--term-green)}.tag-chip.dim{opacity:.45}.post-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.9rem}.post-item{animation:fade-up .5s both;transition:border-color .15s,transform .15s}.post-item:hover{border-color:var(--term-border-bright);transform:translate(2px,-2px)}.post-link{display:block;padding:1.1rem 1.4rem;color:var(--term-text)}.post-link:hover{color:var(--term-text);text-decoration:none}.post-date{font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--term-amber);font-variant-numeric:tabular-nums}.post-title{margin:.25rem 0 .4rem;font-size:1.1rem}.post-excerpt{margin:0 0 .55rem;font-size:.88rem;color:var(--term-muted)}.tag{margin-right:.6rem;font-size:.78rem;color:var(--term-green)}.post-shell{max-width:820px;margin:0 auto;padding:2rem 2.25rem;animation:fade-up .45s both}.back-link{font-weight:500}.back-link:before{content:"cd ..  # ";color:var(--term-green-dim)}.post-heading{margin:.5rem 0 .25rem;font-size:1.7rem;line-height:1.3}.post-meta{margin:0 0 2rem;padding-bottom:1.1rem;border-bottom:1px dashed var(--term-border);font-size:.85rem;color:var(--term-muted)}.post-meta time{font-weight:600;color:var(--term-amber)}.post-meta .updated{margin-left:.4rem}.post-meta .post-tags{margin-left:.75rem}.post-body h2{margin-top:2rem}.post-body h2:before{content:"## ";color:var(--term-green-dim)}.post-body h3:before{content:"### ";color:var(--term-green-dim)}.post-body img{max-width:100%;border-radius:3px;border:1px solid var(--term-border)}.post-body code{padding:.12em .4em;border-radius:3px;background:var(--term-code-bg);color:var(--term-green);font-size:.88em}.post-body pre{padding:1rem 1.2rem;overflow-x:auto;background:#070b08;border:1px solid var(--term-border);border-radius:var(--radius)}[data-theme=light] .post-body pre{background:#2b2f26}.post-body pre code{padding:0;background:none;color:#d5e8d5;font-size:.86rem}.post-body blockquote{margin:1.5rem 0;padding:.25rem 1.2rem;border-left:3px solid var(--term-green-dim);color:var(--term-muted)}.post-body table{border-collapse:collapse;width:100%}.post-body th,.post-body td{padding:.5rem .75rem;border:1px solid var(--term-border);text-align:left}.post-body th{background:var(--term-panel-strong);color:var(--term-green)}.not-found{text-align:center}.empty-state{padding:3.5rem 1rem;text-align:center;color:var(--term-muted)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.1rem}.project-card{padding:1.35rem;display:flex;flex-direction:column;gap:.6rem;animation:fade-up .5s both;transition:border-color .15s,transform .15s}.project-card:hover{border-color:var(--term-border-bright);transform:translate(2px,-2px)}.project-head{display:flex;align-items:center;gap:.75rem}.project-date{margin-left:auto;font-size:.75rem;color:var(--term-amber);font-variant-numeric:tabular-nums}.project-emoji{font-size:1.4rem}.project-name{margin:0;font-size:1.1rem;color:var(--term-green)}.project-desc{margin:0;flex:1;font-size:.87rem;color:var(--term-muted)}.project-tech{display:flex;flex-wrap:wrap;gap:.4rem}.tech-chip{padding:.1rem .55rem;border-radius:3px;background:transparent;border:1px solid var(--term-border);font-size:.7rem;color:var(--term-muted)}.project-link{font-weight:600;font-size:.88rem}.status-bar{margin-top:2.5rem;padding:.65rem 1.2rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:var(--term-panel-strong);border:1px solid var(--term-border);border-radius:3px;font-size:.8rem;color:var(--term-muted)}.status-clock{font-size:1.05rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--term-green);letter-spacing:.06em}.status-clock:before{content:"[";color:var(--term-muted)}.status-clock:after{content:"]";color:var(--term-muted)}.uptime .dot{color:var(--term-green)}.status-badges{display:flex;gap:.5rem;flex-wrap:wrap}.tech-badge{padding:.12rem .6rem;border-radius:3px;border:1px solid var(--term-border);background:transparent;font-size:.72rem}.about{max-width:66ch}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
