:root{--bg:#0d130f;--bg-surface:#141c16;--bg-elevated:#1a241d;--text:#e8e3d4;--text-2:#9a958a;--text-3:#6b6760;--amber:#d8a24a;--amber-bright:#e8b85a;--emerald:#5caa8a;--emerald-bright:#6dc49e;--coral:#e0937b;--red:#e0584b;--border:rgba(216,162,74,.12);--border-h:rgba(216,162,74,.32);--serif:"Fraunces",Georgia,serif;--body:"Spectral",Georgia,serif;--mono:"JetBrains Mono",ui-monospace,monospace}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--body);font-size:17px;line-height:1.7;overflow-x:hidden;position:relative}body:before{background:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(92,170,138,.1),transparent 60%),radial-gradient(ellipse 60% 40% at 80% 10%,rgba(216,162,74,.06),transparent 55%),radial-gradient(ellipse 50% 35% at 15% 5%,hsla(14,62%,68%,.04),transparent 50%);z-index:0}body:after,body:before{content:"";position:fixed;inset:0;pointer-events:none}body:after{z-index:9999;opacity:.035;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:grain 8s steps(6) infinite}@keyframes grain{0%,to{transform:translate(0)}20%{transform:translate(-4px,3px)}40%{transform:translate(3px,-2px)}60%{transform:translate(-2px,-3px)}80%{transform:translate(2px,4px)}}.garden-deco{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}.firefly{position:absolute;border-radius:50%;filter:blur(20px);mix-blend-mode:screen}@keyframes glow-a{0%,to{opacity:.18;transform:scale(1)}50%{opacity:.4;transform:scale(1.12)}}@keyframes glow-b{0%,to{opacity:.14;transform:scale(.9)}50%{opacity:.34;transform:scale(1.18)}}@keyframes glow-c{0%,to{opacity:.12;transform:scale(1.1)}50%{opacity:.3;transform:scale(.95)}}.ff-1{width:200px;height:200px;top:6%;left:8%;background:radial-gradient(circle,#d8a24a,transparent 65%);animation:glow-a 4s ease-in-out infinite}.ff-2{width:160px;height:160px;top:20%;right:10%;background:radial-gradient(circle,#5caa8a,transparent 65%);animation:glow-b 5s ease-in-out 1s infinite}.ff-3{width:120px;height:120px;top:40%;left:15%;background:radial-gradient(circle,#e0937b,transparent 60%);animation:glow-c 3.5s ease-in-out 2s infinite}.ff-4{width:180px;height:180px;top:55%;right:6%;background:radial-gradient(circle,#d8a24a,transparent 65%);animation:glow-a 5s ease-in-out .5s infinite}.ff-5{width:130px;height:130px;top:72%;left:20%;background:radial-gradient(circle,#5caa8a,transparent 60%);animation:glow-b 4.5s ease-in-out 1.5s infinite}.ff-6{width:100px;height:100px;top:85%;right:20%;background:radial-gradient(circle,#e0937b,transparent 60%);animation:glow-c 3s ease-in-out 2.5s infinite}.ff-7{width:70px;height:70px;top:32%;left:45%;background:radial-gradient(circle,#d8a24a,transparent 60%);animation:glow-c 5.5s ease-in-out 3s infinite}.spark-layer{position:fixed;inset:0;pointer-events:none;z-index:50;overflow:hidden;mix-blend-mode:screen}.spark-track{position:absolute;will-change:transform}.spark{border-radius:50%;filter:blur(4px)}@keyframes spark-pulse{0%,to{opacity:.5;transform:scale(.85)}50%{opacity:1;transform:scale(1.25)}}.music-player{position:fixed;bottom:28px;right:28px;z-index:200;display:flex;align-items:center;gap:12px;background:#0d130f;border:1px solid rgba(216,162,74,.35);border-radius:100px;padding:6px 8px 6px 16px;box-shadow:0 4px 24px rgba(0,0,0,.5),inset 0 1px 0 hsla(0,0%,100%,.04);opacity:0;transform:translateY(20px);animation:mp-in .8s ease 1.5s forwards}@keyframes mp-in{to{opacity:1;transform:translateY(0)}}.music-label{font-family:var(--mono);font-size:12px;color:var(--text-2);letter-spacing:.05em;max-width:140px;overflow:hidden;white-space:nowrap;transition:color .3s;display:flex;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10px,#000 calc(100% - 10px),transparent);mask-image:linear-gradient(90deg,transparent,#000 10px,#000 calc(100% - 10px),transparent)}.ml-text{display:inline-block;padding-right:20px;flex-shrink:0;will-change:transform}.music-player.playing:hover .ml-text{animation:ml-marquee 9s linear infinite}@keyframes ml-marquee{0%{transform:translateX(0)}to{transform:translateX(calc(-100% - 20px))}}.music-player:hover .music-label{color:var(--text)}.music-bars{display:flex;gap:3px;align-items:center;height:22px}.music-bars span{width:2.5px;height:4px;background:var(--amber);border-radius:2px;opacity:.25;transition:opacity .4s}.music-bars.playing span{opacity:.85}.music-bars.playing span:first-child{animation:mbar .9s ease-in-out infinite}.music-bars.playing span:nth-child(2){animation:mbar .7s ease-in-out .15s infinite}.music-bars.playing span:nth-child(3){animation:mbar .8s ease-in-out .3s infinite}.music-bars.playing span:nth-child(4){animation:mbar .6s ease-in-out .1s infinite}@keyframes mbar{0%,to{height:4px}50%{height:18px}}.music-toggle{width:44px;height:44px;border-radius:50%;border:1.5px solid rgba(216,162,74,.45);background:rgba(216,162,74,.06);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s;position:relative;flex-shrink:0;padding:0}.music-toggle:hover{border-color:var(--amber);background:rgba(216,162,74,.15);box-shadow:0 0 20px rgba(216,162,74,.3)}.music-toggle svg{width:22px;height:22px;transition:transform .4s}.music-toggle.playing{border-color:var(--amber);background:rgba(216,162,74,.12)}.music-toggle.playing svg{animation:m-rotate 12s linear infinite}@keyframes m-rotate{to{transform:rotate(1turn)}}.music-toggle.playing:before{content:"";position:absolute;inset:-3px;border-radius:50%;border:1px solid var(--amber);opacity:.4;animation:m-ring 3s ease-out infinite}@keyframes m-ring{0%{transform:scale(1);opacity:.4}to{transform:scale(1.4);opacity:0}}.music-toggle.waiting{animation:m-hint 2.5s ease-in-out infinite}@keyframes m-hint{0%,to{box-shadow:0 0 0 0 rgba(216,162,74,0)}50%{box-shadow:0 0 18px 3px rgba(216,162,74,.25)}}.progress-bar{position:fixed;top:0;left:0;height:2px;background:linear-gradient(90deg,var(--emerald),var(--amber));z-index:300;width:0;transition:width .1s ease-out;box-shadow:0 0 8px rgba(216,162,74,.5);display:none}.wrap{max-width:1080px;margin:0 auto;padding:0 32px;position:relative;z-index:1}nav{position:-webkit-sticky;position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:rgba(13,19,15,.72);border-bottom:1px solid var(--border)}.nav-inner{justify-content:space-between;height:64px}.brand,.nav-inner{display:flex;align-items:center}.brand{font-family:var(--serif);font-size:17px;font-weight:500;letter-spacing:.01em;gap:10px;text-decoration:none;color:var(--text);transition:color .3s;cursor:pointer}.brand:hover{color:var(--amber)}.brand-mark{width:20px;height:20px;flex-shrink:0}.nav-links{display:flex;gap:28px;list-style:none}.nav-links a{color:var(--text-2);text-decoration:none;font-size:14px;font-family:var(--mono);transition:color .3s;cursor:pointer}.nav-links a.active,.nav-links a:hover{color:var(--amber)}.hero{padding:120px 0 80px;position:relative}.vine{position:absolute;pointer-events:none;opacity:.5}.vine-l{top:60px;left:-20px;width:180px}.vine-r{top:40px;right:-30px;width:200px;transform:scaleX(-1)}.hero h1{font-family:var(--serif);font-size:clamp(48px,8vw,92px);font-weight:400;line-height:1.02;letter-spacing:-.02em;margin-bottom:28px;font-variation-settings:"opsz" 144,"SOFT" 50}.hero h1 .word{display:inline-block;overflow:hidden;vertical-align:top}.hero h1 .word span{display:inline-block;transform:translateY(110%);opacity:0;animation:rise .9s cubic-bezier(.2,.7,.2,1) forwards}.hero h1 .word:first-child span{animation-delay:.15s}.hero h1 .word:nth-child(2) span{animation-delay:.32s}.hero h1 .h-accent{color:var(--amber);font-weight:400}@keyframes rise{to{transform:translateY(0);opacity:1}}.hero-sub{font-size:20px;color:var(--text-2);max-width:560px;line-height:1.6;opacity:0;animation:fade 1s ease .7s forwards}@keyframes fade{to{opacity:1}}.hero-meta{margin-top:40px;display:flex;gap:32px;flex-wrap:wrap;opacity:0;animation:fade 1s ease .9s forwards}.hero-meta div{font-family:var(--mono);font-size:12px;color:var(--text-3)}.hero-meta div b{color:var(--text);font-weight:500;display:block;font-size:14px;margin-bottom:2px}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:100px 0 40px;padding-bottom:16px;border-bottom:1px solid var(--border)}.section-head h2{font-family:var(--serif);font-size:26px;font-weight:400;letter-spacing:-.01em}.section-head .count{font-family:var(--mono);font-size:12px;color:var(--text-3)}.articles{list-style:none}.article{display:grid;grid-template-columns:80px 1fr auto;grid-gap:28px;gap:28px;align-items:start;padding:32px 0;border-bottom:1px solid var(--border);position:relative;transition:padding .4s}.article:before{content:"";position:absolute;left:-16px;top:32px;bottom:32px;width:2px;background:linear-gradient(var(--emerald),var(--amber));transform:scaleY(0);transform-origin:top;transition:transform .5s cubic-bezier(.2,.7,.2,1)}.article:hover:before{transform:scaleY(1)}.article:hover{padding-left:8px}.art-num{font-family:var(--serif);font-style:italic;font-size:42px;font-weight:300;color:var(--text-3);line-height:1;transition:color .4s}.article:hover .art-num{color:var(--amber)}.art-body{min-width:0}.art-cat{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;color:var(--text-2);margin-bottom:10px;letter-spacing:.04em}.art-cat svg{width:11px;height:11px}.art-title{font-family:var(--serif);font-size:24px;font-weight:400;line-height:1.3;color:var(--text);text-decoration:none;display:block;margin-bottom:10px;transition:color .3s;cursor:pointer}.art-title:hover{color:var(--amber-bright)}.art-excerpt{color:var(--text-2);font-size:15px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.art-date{font-family:var(--mono);font-size:12px;color:var(--text-3);white-space:nowrap;padding-top:6px}.load-more{text-align:center;padding:48px 0}.load-more button{font-family:var(--mono);font-size:13px;color:var(--text-2);background:none;border:1px solid var(--border);padding:12px 32px;border-radius:8px;cursor:pointer;transition:all .3s}.load-more button:hover{border-color:var(--border-h);color:var(--amber)}.projects{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:20px;gap:20px}.project{background:var(--bg-surface);border:1px solid var(--border);border-radius:14px;padding:28px;text-decoration:none;color:inherit;transition:all .35s;position:relative;overflow:hidden;display:flex;flex-direction:column}.project:after{content:"";position:absolute;top:0;right:0;width:60px;height:60px;background:radial-gradient(circle at top right,rgba(216,162,74,.12),transparent 70%);opacity:0;transition:opacity .35s}.project:hover{border-color:var(--border-h);transform:translateY(-3px)}.project:hover:after{opacity:1}.proj-icon{width:32px;height:32px;margin-bottom:16px}.proj-name{font-family:var(--serif);font-size:19px;font-weight:500;margin-bottom:8px;color:var(--text)}.proj-desc{font-size:14px;color:var(--text-2);line-height:1.5;flex:1 1}.proj-link{display:inline-flex;align-items:center;gap:6px;margin-top:16px;font-family:var(--mono);font-size:12px;color:var(--emerald)}.proj-link svg{width:12px;height:12px;transition:transform .3s}.project:hover .proj-link svg{transform:translate(2px,-2px)}.proj-all{display:inline-flex;align-items:center;gap:8px;margin-top:28px;font-family:var(--mono);font-size:13px;color:var(--amber);text-decoration:none;transition:gap .3s,color .3s;cursor:pointer}.proj-all svg{width:16px;height:16px;transition:transform .3s}.proj-all:hover{gap:12px;color:var(--amber-bright)}.proj-all:hover svg{transform:translateX(4px)}.art-breadcrumb{font-family:var(--mono);font-size:12px;color:var(--text-3);margin-bottom:32px;display:flex;align-items:center;gap:8px}.art-breadcrumb a{color:var(--text-3);text-decoration:none;transition:color .3s;cursor:pointer}.art-breadcrumb a:hover{color:var(--amber)}.art-breadcrumb span{color:var(--text-3)}.art-cat-tag{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;color:var(--amber);margin-bottom:20px;padding:4px 12px;border:1px solid rgba(216,162,74,.25);border-radius:100px;letter-spacing:.05em}.art-cat-tag svg{width:11px;height:11px}.article-hero{padding:80px 0 40px;max-width:760px;margin:0 auto}.article-hero h1{font-family:var(--serif);font-size:clamp(32px,5vw,52px);font-weight:400;line-height:1.15;letter-spacing:-.015em;margin-bottom:24px;font-variation-settings:"opsz" 144,"SOFT" 50}.article-hero h1 .h-accent{color:var(--amber)}.art-meta{gap:28px;flex-wrap:nowrap;padding-bottom:32px;border-bottom:1px solid var(--border)}.art-meta,.art-meta-item{display:flex;align-items:center}.art-meta-item{gap:8px;font-family:var(--mono);font-size:12px;color:var(--text-3);white-space:nowrap}.art-meta-item svg{width:14px;height:14px;opacity:.6}.art-meta-item b{color:var(--text-2);font-weight:500}.article-body{max-width:680px;margin:0 auto;padding:48px 0;font-size:17px;line-height:1.85;color:var(--text)}.article-body p{margin-bottom:1.5em}.article-body p:first-of-type{font-size:19px;color:var(--text);line-height:1.75}.article-body p:first-of-type:first-letter{font-family:var(--serif);font-size:3.2em;float:left;line-height:.8;margin:.05em .1em 0 0;color:var(--amber);font-weight:400}.article-body h2{font-family:var(--serif);font-size:28px;font-weight:400;letter-spacing:-.01em;margin:2.5em 0 .8em;color:var(--text);position:relative;padding-left:16px}.article-body h2:before{content:"";position:absolute;left:0;top:.2em;bottom:.2em;width:3px;background:linear-gradient(var(--amber),var(--emerald));border-radius:2px}.article-body h3{font-family:var(--serif);font-size:21px;font-weight:500;margin:2em 0 .6em;color:var(--text)}.article-body strong{color:var(--amber-bright);font-weight:500}.article-body em{color:var(--emerald-bright);font-style:italic}.article-body a{color:var(--amber);text-decoration:none;border-bottom:1px solid rgba(216,162,74,.3);transition:border-color .3s}.article-body a:hover{border-color:var(--amber)}.article-body blockquote{margin:2em 0;padding:20px 28px;border-left:3px solid var(--amber);background:rgba(216,162,74,.04);border-radius:0 8px 8px 0;font-style:italic;color:var(--text-2)}.article-body blockquote p{margin-bottom:0}.article-body ol,.article-body ul{margin:1.5em 0;padding-left:1.5em}.article-body li{margin-bottom:.6em}.article-body ul li::marker{color:var(--emerald)}.article-body ol li::marker{color:var(--amber);font-family:var(--mono);font-size:.9em}.article-body code{font-family:var(--mono);font-size:.88em;background:var(--bg-elevated);color:var(--coral);padding:2px 6px;border-radius:4px}.article-body pre{margin:1.8em 0;background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;position:relative}.article-body pre:before{content:attr(data-lang);position:absolute;top:0;right:0;font-family:var(--mono);font-size:10px;color:var(--text-3);padding:6px 12px;background:var(--bg-elevated);border-left:1px solid var(--border);border-bottom:1px solid var(--border);border-radius:0 12px 0 8px}.article-body pre code{display:block;padding:20px 24px;background:none;color:var(--text);font-size:14px;line-height:1.6;overflow-x:auto}.article-body pre code .kw{color:var(--amber)}.article-body pre code .str{color:var(--emerald)}.article-body pre code .com{color:var(--text-3);font-style:italic}.article-body pre code .fn{color:var(--coral)}.article-body hr{border:none;height:1px;background:linear-gradient(90deg,transparent,var(--border),transparent);margin:3em 0}.article-body table{width:100%;border-collapse:collapse;margin:1.8em 0;font-size:14px}.article-body th{text-align:left;font-family:var(--serif);font-weight:500;padding:12px 16px;border-bottom:2px solid var(--border-h);color:var(--text)}.article-body td{padding:10px 16px;border-bottom:1px solid var(--border);color:var(--text-2)}.article-body tr:hover td{color:var(--text)}.article-foot{max-width:680px;margin:0 auto;padding:48px 0;border-top:1px solid var(--border)}.art-tags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:40px}.art-tag{font-family:var(--mono);font-size:11px;color:var(--text-2);padding:4px 12px;border:1px solid var(--border);border-radius:100px;transition:all .3s}.art-tag:hover{border-color:var(--amber);color:var(--amber)}.art-nav{display:grid;grid-template-columns:1fr 1fr;grid-gap:20px;gap:20px}.art-nav-card{display:block;text-decoration:none;padding:24px;border:1px solid var(--border);border-radius:14px;transition:all .35s;position:relative;overflow:hidden;cursor:pointer;min-width:0}.art-nav-card:hover{border-color:var(--border-h);transform:translateY(-2px)}.art-nav-card:after{content:"";position:absolute;top:0;right:0;width:50px;height:50px;background:radial-gradient(circle at top right,rgba(216,162,74,.08),transparent 70%);opacity:0;transition:opacity .35s}.art-nav-card:hover:after{opacity:1}.art-nav-label{font-family:var(--mono);font-size:11px;color:var(--text-3);margin-bottom:8px;display:flex;align-items:center;gap:6px;white-space:nowrap}.art-nav-label svg{width:12px;height:12px}.art-nav-card.next .art-nav-label{justify-content:flex-end}.art-nav-title{font-family:var(--serif);font-size:17px;font-weight:400;color:var(--text);line-height:1.4;transition:color .3s}.art-nav-card:hover .art-nav-title{color:var(--amber)}.art-nav-card.prev .art-nav-title{text-align:left}.art-nav-card.next .art-nav-title{text-align:right}.art-back{text-align:center;margin-top:32px}.art-back a{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:13px;color:var(--text-2);text-decoration:none;padding:10px 28px;border:1px solid var(--border);border-radius:100px;transition:all .3s;cursor:pointer;min-width:160px;white-space:nowrap;height:auto}.art-back a:hover{color:var(--amber);border-color:var(--amber);background:rgba(216,162,74,.06)}.art-back a svg{width:14px;height:14px}.page-hero{padding:100px 0 50px}.page-hero h1{font-family:var(--serif);font-size:clamp(40px,6vw,64px);font-weight:400;line-height:1.05;letter-spacing:-.02em;margin-bottom:16px;font-variation-settings:"opsz" 144,"SOFT" 50}.page-hero .page-sub{font-size:17px;color:var(--text-2);max-width:480px;line-height:1.6}.page-hero .page-meta{margin-top:24px;display:flex;gap:24px;font-family:var(--mono);font-size:12px;color:var(--text-3)}.page-hero .page-meta b{color:var(--amber);font-weight:500;font-size:14px;display:block;margin-bottom:2px}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:20px;gap:20px;padding:20px 0 60px}.projects-grid .project{display:flex;flex-direction:column}.projects-grid .proj-desc{flex:1 1}.proj-date{font-size:11px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.load-end,.proj-date{font-family:var(--mono);color:var(--text-3)}.load-end{text-align:center;padding:48px 0;font-size:12px}.back-home{text-align:center;padding:40px 0}.back-home a{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:13px;color:var(--text-2);text-decoration:none;padding:10px 20px;border:1px solid var(--border);border-radius:100px;transition:all .3s;cursor:pointer;white-space:nowrap;height:auto}.back-home a:hover{color:var(--amber);border-color:var(--amber);background:rgba(216,162,74,.06)}.back-home a svg{width:14px;height:14px}footer{border-top:1px solid var(--border);padding:72px 0 40px;margin-top:40px;scroll-margin-top:72px}.foot-inner{display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px}.foot-brand{font-family:var(--serif);font-size:26px}.foot-desc{font-family:var(--body);font-size:15px;line-height:1.85;color:var(--text-2);max-width:520px;text-align:left}.foot-desc .em-amber{color:var(--amber)}.foot-desc .em-emerald{color:var(--emerald)}.foot-contact{display:flex;gap:16px}.contact-pill{display:inline-flex;align-items:center;gap:8px;color:var(--text-2);text-decoration:none;font-size:14px;font-family:var(--body);padding:10px 24px;border:1px solid var(--border);border-radius:100px;transition:all .3s;cursor:pointer;background:transparent}.contact-pill:hover{color:#fff;border-color:#fff;background:hsla(0,0%,100%,.06)}.contact-pill svg{width:18px;height:18px;flex-shrink:0;opacity:.7;transition:opacity .3s}.contact-pill:hover svg{opacity:1}.foot-bottom{margin-top:48px;padding-top:24px;border-top:1px solid var(--border);display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:var(--text-3)}.foot-bottom a{color:var(--text-3);text-decoration:none;cursor:pointer;transition:color .3s}.foot-bottom a:hover{color:var(--amber)}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}.modal-overlay.active{opacity:1;visibility:visible}.modal-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:20px;padding:36px 40px;text-align:center;position:relative;transform:translateY(16px);transition:transform .3s;max-width:340px;width:90%}.modal-overlay.active .modal-card{transform:translateY(0)}.modal-close{position:absolute;top:14px;right:18px;background:none;border:none;color:var(--text-3);font-size:22px;cursor:pointer;transition:color .3s;line-height:1}.modal-card h3,.modal-close:hover{color:var(--text)}.modal-card h3{font-family:var(--serif);font-size:20px;font-weight:400;margin-bottom:20px}.qr-box{width:200px;height:200px;margin:0 auto 16px;border-radius:12px;overflow:hidden;background:var(--bg);border:1px solid var(--border)}.modal-card p{font-family:var(--mono);font-size:12px;color:var(--text-3)}.email-tip{position:fixed;background:var(--bg-surface);border:1px solid var(--amber);border-radius:10px;padding:12px 20px;display:flex;align-items:center;gap:12px;z-index:1000;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;box-shadow:0 8px 32px rgba(0,0,0,.3)}.email-tip.active{opacity:1;visibility:visible}.email-tip .email-addr{font-family:var(--mono);font-size:14px;color:var(--amber)}.email-tip .copy-btn{font-family:var(--mono);font-size:12px;color:var(--text-3);background:none;border:1px solid var(--border);border-radius:6px;padding:4px 10px;cursor:pointer;transition:all .3s}.email-tip .copy-btn:hover{color:var(--amber);border-color:var(--amber)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.login-page:before{content:"";inset:0;background:radial-gradient(ellipse 70% 50% at 50% 30%,rgba(92,170,138,.08),transparent 60%),radial-gradient(ellipse 50% 40% at 50% 80%,rgba(216,162,74,.06),transparent 55%)}.login-firefly,.login-page:before{position:absolute;pointer-events:none}.login-firefly{border-radius:50%;filter:blur(20px);mix-blend-mode:screen}@keyframes lf-glow{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.3;transform:scale(1.15)}}.lf-1{width:180px;height:180px;top:15%;left:12%;background:radial-gradient(circle,#d8a24a,transparent 65%);animation:lf-glow 5s ease-in-out infinite}.lf-2{width:140px;height:140px;bottom:20%;right:15%;background:radial-gradient(circle,#5caa8a,transparent 65%);animation:lf-glow 4s ease-in-out 1.5s infinite}.lf-3{width:100px;height:100px;top:60%;left:20%;background:radial-gradient(circle,#e0937b,transparent 60%);animation:lf-glow 6s ease-in-out 3s infinite}.login-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:20px;padding:48px 40px;width:380px;max-width:90%;position:relative;z-index:1;box-shadow:0 20px 60px rgba(0,0,0,.4)}.login-logo{display:flex;align-items:center;gap:12px;margin-bottom:8px;justify-content:center}.login-logo svg{width:28px;height:28px}.login-logo span{font-family:var(--serif);font-size:24px;font-weight:500;color:var(--text)}.login-sub{text-align:center;font-family:var(--mono);font-size:12px;color:var(--text-3);margin-bottom:36px;letter-spacing:.05em}.login-field{margin-bottom:20px}.login-field label{display:block;font-family:var(--mono);font-size:11px;color:var(--text-2);margin-bottom:8px;letter-spacing:.05em}.login-field input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px 16px;color:var(--text);font-family:var(--body);font-size:15px;transition:border-color .3s;outline:none}.login-field input:focus{border-color:var(--amber)}.login-field input::placeholder{color:var(--text-3)}.login-btn{width:100%;background:var(--amber);color:var(--bg);border:none;border-radius:10px;padding:14px;font-family:var(--serif);font-size:16px;font-weight:500;cursor:pointer;transition:all .3s;margin-top:8px}.login-btn:hover{background:var(--amber-bright);transform:translateY(-1px);box-shadow:0 8px 24px rgba(216,162,74,.3)}.login-error{color:var(--red);font-size:13px;text-align:center;margin-top:16px;display:none}.login-error.show{display:block}.login-hint{text-align:center;font-family:var(--mono);font-size:11px;color:var(--text-3);margin-top:24px;padding-top:20px;border-top:1px solid var(--border)}.login-hint a{color:var(--text-2);text-decoration:none;transition:color .3s;cursor:pointer}.login-hint a:hover{color:var(--amber)}.admin-topbar{position:-webkit-sticky;position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:rgba(13,19,15,.85);border-bottom:1px solid var(--border);justify-content:space-between;height:60px;padding:0 32px}.admin-brand,.admin-topbar{display:flex;align-items:center}.admin-brand{gap:10px;cursor:default}.admin-brand svg{width:20px;height:20px}.admin-brand span{font-family:var(--serif);font-size:16px;font-weight:500;color:var(--text)}.admin-brand .admin-label{font-family:var(--mono);font-size:11px;color:var(--text-3);margin-left:8px;padding-left:12px;border-left:1px solid var(--border)}.admin-topbar-right{display:flex;align-items:center;gap:16px}.admin-user{color:var(--text-2)}.admin-logout,.admin-user{font-family:var(--mono);font-size:12px}.admin-logout{color:var(--text-3);text-decoration:none;padding:6px 16px;border:1px solid var(--border);border-radius:100px;transition:all .3s;cursor:pointer;background:none}.admin-logout:hover{color:var(--red);border-color:var(--red)}.admin-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);padding:0 32px}.admin-tab{font-family:var(--mono);font-size:13px;color:var(--text-2);padding:16px 24px;cursor:pointer;border:none;background:none;transition:color .3s;position:relative}.admin-tab:hover{color:var(--text)}.admin-tab.active{color:var(--amber)}.admin-tab.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--amber)}.admin-tab .tab-count{font-size:11px;color:var(--text-3);margin-left:6px}.admin-content{padding:32px;max-width:1200px;margin:0 auto}.filter-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}.filter-left{display:flex;gap:8px}.filter-btn{font-family:var(--mono);font-size:12px;color:var(--text-2);padding:6px 16px;border:1px solid var(--border);border-radius:100px;cursor:pointer;transition:all .3s;background:none}.filter-btn:hover{border-color:var(--border-h);color:var(--text)}.filter-btn.active{background:rgba(216,162,74,.1);border-color:var(--amber);color:var(--amber)}.filter-right{gap:12px}.filter-right,.filter-search{display:flex;align-items:center}.filter-search{gap:8px;background:var(--bg-surface);border:1px solid var(--border);border-radius:10px;padding:8px 14px;transition:border-color .3s}.filter-search:focus-within{border-color:var(--amber)}.filter-search input{background:none;border:none;outline:none;color:var(--text);font-family:var(--body);font-size:13px;width:200px}.filter-search input::placeholder{color:var(--text-3)}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;font-family:var(--mono);font-size:11px;color:var(--text-3);letter-spacing:.05em;padding:12px 16px;border-bottom:1px solid var(--border);font-weight:400;text-transform:uppercase}.data-table th:last-child{text-align:right}.data-table td{padding:16px;border-bottom:1px solid var(--border);vertical-align:middle}.data-table td:last-child{text-align:right}.data-table tr{transition:background .2s}.data-table tr:hover{background:rgba(216,162,74,.03)}.art-title-cell{font-family:var(--serif);font-size:15px;color:var(--text);font-weight:400}.art-title-cell:hover{color:var(--amber);cursor:pointer}.status-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;padding:3px 10px;border-radius:100px;letter-spacing:.03em}.status-badge:before{content:"";width:6px;height:6px;border-radius:50%}.status-draft{color:var(--text-2);background:hsla(41,7%,57%,.1);border:1px solid hsla(41,7%,57%,.2)}.status-draft:before{background:var(--text-2)}.status-published{color:var(--emerald);background:rgba(92,170,138,.1);border:1px solid rgba(92,170,138,.2)}.status-published:before{background:var(--emerald);animation:status-pulse 2s ease-in-out infinite}@keyframes status-pulse{0%,to{opacity:1}50%{opacity:.4}}.status-archived{color:var(--text-3);background:hsla(38,5%,40%,.1);border:1px solid hsla(38,5%,40%,.15)}.status-archived:before{background:var(--text-3)}.cat-select{font-family:var(--mono);font-size:12px;color:var(--text-2);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:4px 10px;cursor:pointer;outline:none;transition:border-color .3s}.cat-select:hover{border-color:var(--border-h)}.cat-select option{background:var(--bg-surface);color:var(--text)}.action-group{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}.action-btn{font-family:var(--mono);font-size:11px;padding:5px 12px;border-radius:6px;cursor:pointer;transition:all .3s;border:1px solid var(--border);background:none;color:var(--text-2)}.action-btn:hover{border-color:var(--border-h);color:var(--text)}.action-btn.act-publish{color:var(--emerald);border-color:rgba(92,170,138,.2)}.action-btn.act-publish:hover{background:rgba(92,170,138,.1);border-color:var(--emerald)}.action-btn.act-unpublish{color:var(--amber);border-color:rgba(216,162,74,.2)}.action-btn.act-unpublish:hover{background:rgba(216,162,74,.1);border-color:var(--amber)}.action-btn.act-archive{color:var(--text-3);border-color:hsla(38,5%,40%,.15)}.action-btn.act-archive:hover{background:hsla(38,5%,40%,.08);border-color:var(--text-3)}.action-btn.act-delete{color:var(--red);border-color:rgba(224,88,75,.2)}.action-btn.act-delete:hover{background:rgba(224,88,75,.1);border-color:var(--red)}.action-btn.act-edit{color:var(--amber);border-color:rgba(216,162,74,.2)}.action-btn.act-edit:hover{background:rgba(216,162,74,.1);border-color:var(--amber)}.action-btn.act-preview{color:var(--text-2);border-color:var(--border)}.action-btn.act-preview:hover{background:var(--bg-elevated);border-color:var(--border-h);color:var(--text)}.date-cell{font-family:var(--mono);font-size:12px;color:var(--text-3);white-space:nowrap}.dialogue-hint{display:flex;align-items:center;gap:12px;background:rgba(92,170,138,.06);border:1px solid rgba(92,170,138,.15);border-radius:12px;padding:16px 20px;margin-bottom:24px}.dialogue-hint-text{font-size:13px;color:var(--text-2);line-height:1.5}.dialogue-hint-text b{color:var(--emerald);font-weight:500}.confirm-overlay,.edit-overlay,.preview-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1100;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}.confirm-overlay.active,.edit-overlay.active,.preview-overlay.active{opacity:1;visibility:visible}.confirm-card,.edit-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:16px;padding:32px;width:400px;max-width:90%;transform:translateY(16px);transition:transform .3s}.confirm-overlay.active .confirm-card,.edit-overlay.active .edit-card{transform:translateY(0)}.confirm-card h3,.edit-card h3{font-family:var(--serif);font-size:20px;font-weight:400;margin-bottom:12px;color:var(--text)}.confirm-card p{font-size:14px;color:var(--text-2);line-height:1.6;margin-bottom:24px}.confirm-card p b{color:var(--amber);font-weight:500}.confirm-actions,.edit-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.confirm-cancel{font-family:var(--mono);font-size:13px;color:var(--text-2);padding:10px 24px;border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .3s;background:none}.confirm-cancel:hover{border-color:var(--border-h);color:var(--text)}.confirm-ok{font-family:var(--mono);font-size:13px;padding:10px 24px;border-radius:8px;cursor:pointer;transition:all .3s;border:none}.confirm-ok.danger{background:var(--red);color:#fff}.confirm-ok.danger:hover{background:#c94a3f;transform:translateY(-1px)}.confirm-ok.warning{background:var(--amber);color:var(--bg)}.confirm-ok.warning:hover{background:var(--amber-bright);transform:translateY(-1px)}.edit-field{margin-bottom:18px}.edit-field label{display:block;font-family:var(--mono);font-size:11px;color:var(--text-2);margin-bottom:6px;letter-spacing:.05em}.edit-field input,.edit-field textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px 14px;color:var(--text);font-family:var(--body);font-size:14px;transition:border-color .3s;outline:none}.edit-field input:focus,.edit-field textarea:focus{border-color:var(--amber)}.edit-field textarea{resize:vertical;min-height:60px}.icon-picker{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:8px;gap:8px;max-height:210px;overflow-y:auto;padding:4px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.icon-picker-item{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 2px;border:1px solid transparent;border-radius:8px;background:none;cursor:pointer;transition:all .2s}.icon-picker-item:hover{background:var(--bg-elevated);border-color:var(--border)}.icon-picker-item.active{background:rgba(216,162,74,.12);border-color:var(--amber)}.icon-picker-svg{width:26px;height:26px}.icon-picker-label{font-family:var(--mono);font-size:9px;color:var(--text-3);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.icon-picker-item.active .icon-picker-label{color:var(--amber)}.preview-modal{background:var(--bg-surface);border:1px solid var(--border);border-radius:16px;width:760px;max-width:92%;max-height:85vh;display:flex;flex-direction:column;transform:translateY(16px) scale(.98);transition:transform .3s}.preview-overlay.active .preview-modal{transform:translateY(0) scale(1)}.preview-header{display:flex;align-items:flex-start;justify-content:space-between;padding:24px 28px 20px;border-bottom:1px solid var(--border);gap:16px}.preview-cat{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;padding:3px 10px;border-radius:100px;letter-spacing:.05em;margin-bottom:10px}.preview-title{font-family:var(--serif);font-size:22px;font-weight:400;color:var(--text);line-height:1.4}.preview-meta{font-family:var(--mono);font-size:12px;color:var(--text-3);margin-top:6px}.preview-close{width:36px;height:36px;border-radius:8px;border:1px solid var(--border);background:none;color:var(--text-2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s;flex-shrink:0}.preview-close:hover{border-color:var(--border-h);color:var(--text);background:var(--bg-elevated)}.preview-scroll{overflow-y:auto;padding:28px 32px;flex:1 1}.preview-scroll .article-body{max-width:none;padding:0;font-size:15px;line-height:1.8}.preview-readonly-hint{font-family:var(--mono);font-size:11px;color:var(--text-3);text-align:center;padding:16px 0 4px;border-top:1px solid var(--border);letter-spacing:.05em}.panel{display:none}.panel.active{display:block}.toast{position:fixed;bottom:32px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--bg-elevated);border:1px solid var(--emerald);border-radius:10px;padding:14px 24px;display:flex;align-items:center;gap:10px;z-index:2100;opacity:0;visibility:hidden;transition:all .3s}.toast.show{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}.toast span{font-family:var(--mono);font-size:13px;color:var(--text)}@media(max-width:960px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.wrap{padding:0 20px}.nav-links{display:none}.hero{padding:80px 0 60px}.vine{display:none}.article{grid-template-columns:48px 1fr;gap:16px}.art-date{grid-column:2;padding-top:0;margin-top:4px}.art-num{font-size:32px}.art-title{font-size:20px}.foot-contact{flex-wrap:wrap;justify-content:center}.ff-3,.ff-5,.ff-6,.ff-7,.music-bars,.music-label,.spark-layer{display:none}.music-player{bottom:20px;right:20px;padding:6px}.article-hero{padding:60px 0 30px}.article-hero h1{font-size:28px}.art-meta{gap:16px}.article-body{font-size:16px;line-height:1.8}.article-body h2{font-size:22px}.article-body h3{font-size:18px}.art-nav{grid-template-columns:1fr;gap:12px}.article-body p:first-of-type:first-letter{font-size:2.6em}.article-body pre code{font-size:12px}.page-hero{padding:60px 0 30px}.projects-grid{grid-template-columns:1fr}.admin-tabs,.admin-topbar{padding:0 16px}.admin-content{padding:16px}.filter-bar{flex-direction:column;align-items:stretch}.filter-search input{width:100%}.data-table{font-size:13px}.data-table td:nth-child(3),.data-table th:nth-child(3){display:none}.action-group{flex-wrap:wrap}.login-card{padding:32px 24px}}@media(prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}.hero h1 .word span{transform:none;opacity:1}.firefly,.music-bars.playing span,.music-toggle.playing svg,.music-toggle.playing:before,.spark,.spark-track{animation:none!important}}