:root{--blue:#2463eb;--mint:#0d9488;--bg:#fff;--ink:#18243a;--muted:#68768b;--soft:#f5f8fd;--line:#e5eaf2;--card:#fff;--shadow:0 18px 60px rgba(28,61,112,.06)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:'DM Sans',-apple-system,BlinkMacSystemFont,'Microsoft Yahei','PingFang SC',sans-serif;background:var(--bg);color:var(--ink);line-height:1.65}body.dark{--bg:#0d1424;--ink:#e8eef9;--muted:#a5b2c5;--soft:#152037;--line:#2a3850;--card:#121e32;--shadow:0 18px 60px rgba(0,0,0,.13)}a{color:inherit;text-decoration:none}a:hover{color:var(--blue)}button,input,textarea,select{font:inherit}button{cursor:pointer}.container{width:min(1160px,calc(100% - 48px));margin:auto}.top{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}.nav{height:78px;display:flex;gap:24px;align-items:center}.logo{display:flex;align-items:center;gap:11px;font-weight:800;line-height:1.2;white-space:nowrap}.logo small{display:block;letter-spacing:2.6px;font-size:9px;color:var(--muted);margin-top:6px}.logo-mark{height:40px;width:40px;border-radius:13px;background:linear-gradient(135deg,#2867f0,#00b4b8);color:#fff;display:grid;place-items:center;font-size:24px;position:relative;box-shadow:0 6px 15px #2563eb29}.logo-mark span,.about-avatar span{position:absolute;font-size:9px;right:5px;top:3px}.nav nav{display:flex;align-items:center;gap:26px;margin-left:auto}.nav nav a{font-size:13px;color:var(--muted);font-weight:600;white-space:nowrap}.nav nav a:hover{color:var(--blue)}.nav-cta{font-size:12px;font-weight:700;color:var(--blue);white-space:nowrap}.theme{border:1px solid var(--line);background:var(--soft);color:var(--ink);border-radius:10px;width:32px;height:32px}.hero{min-height:560px;padding:96px 0 80px;display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center}.chip,.eyebrow{font-weight:800;font-size:11px;letter-spacing:1.8px;color:var(--blue)}.chip{border:1px solid #d9e6ff;padding:8px 12px;border-radius:50px;background:#f0f5ff;letter-spacing:1px;display:inline-flex;align-items:center;gap:8px}.pulse{width:7px;height:7px;background:var(--mint);border-radius:100%}.hero h1{font-weight:800;line-height:1.32;font-size:clamp(34px,4.1vw,55px);letter-spacing:-1.6px;margin:22px 0 23px}.hero h1 span{color:var(--blue)}.hero h1 em{font-style:normal;color:var(--mint)}.hero p,.section-heading p,.page-intro p{color:var(--muted);font-size:15px;max-width:560px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin:30px 0}.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 23px;border-radius:11px;border:1px solid var(--line);font-weight:700;font-size:13px;text-align:center;min-height:44px}.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:0 10px 25px #2563eb29}.btn-primary:hover{color:#fff;background:#164ac0}.btn-muted{background:var(--soft)}.btn-white{background:#fff;color:#174bbc}.hero-tags{display:flex;flex-wrap:wrap;gap:8px}.hero-tags span{font-size:11px;color:var(--muted);background:var(--soft);padding:6px 10px;border-radius:7px}.hero-art{min-height:370px;position:relative;display:grid;align-items:center}.art-glow{position:absolute;inset:0;background:radial-gradient(ellipse,#b5d5ff77,transparent 60%)}.art-window{position:relative;z-index:1;background:#172740;color:#e3effe;border:1px solid #486487;box-shadow:0 30px 70px #1d4d9938;border-radius:16px;transform:rotate(-4deg);overflow:hidden;max-width:470px;width:95%;margin:auto}.win-bar{border-bottom:1px solid #415473;padding:13px;display:flex;align-items:center;gap:5px;color:#a7bdd5;font-size:11px}.win-bar i{width:8px;height:8px;border-radius:50%;background:#fe7070}.win-bar i:nth-child(2){background:#ffd06c}.win-bar i:nth-child(3){background:#58cc9b}.win-bar span{margin-left:14px}.win-code{font-family:Consolas,monospace;font-size:12px;line-height:3;padding:22px 19px;white-space:nowrap}.win-code b{color:#627d9e;margin-right:13px}.win-code span{color:#7eabfc}.win-code strong{color:#88e7c2}.win-code em{color:#e4b9ff;font-style:normal}.win-chip{background:#233e55;color:#6ce4a9;font-size:10px;letter-spacing:1px;padding:12px 20px}.float-tile{z-index:2;position:absolute;background:var(--card);padding:12px 16px;border-radius:14px;box-shadow:var(--shadow);border:1px solid var(--line);font-size:20px;color:var(--blue);font-weight:800;display:flex;gap:10px;align-items:center}.float-tile span{font-size:11px;color:var(--ink)}.tile-one{top:0;right:0}.tile-two{bottom:16px;left:-8px}.section{padding:68px 0}.section-heading{display:flex;justify-content:space-between;gap:20px;align-items:end;margin-bottom:29px}.section-heading h2,.feature-band h2{font-size:clamp(24px,3vw,34px);margin:9px 0}.section-heading p{margin:6px 0}.text-link{color:var(--blue);font-size:13px;font-weight:800;white-space:nowrap}.projects-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.project-card{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--card);transition:transform .2s,box-shadow .2s}.project-card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}.cover{display:grid;place-items:center;background:linear-gradient(135deg,#e4eeff,#e9faf8);height:193px;overflow:hidden}.cover img{width:100%;height:100%;object-fit:cover}.cover-icon{font-weight:800;font-size:65px;color:#3f75e6}.project-card:nth-child(3n+2) .cover{background:linear-gradient(135deg,#dff7f2,#eef6ff)}.project-card:nth-child(3n+3) .cover{background:linear-gradient(135deg,#f0eaff,#e7efff)}.card-content{padding:22px}.card-content h3{margin:7px 0 5px;font-size:19px}.card-content p{color:var(--muted);font-size:13px;min-height:48px;margin:0 0 12px}.feature-band{border-radius:24px;padding:42px 46px;background:#142743;color:#fff;display:grid;grid-template-columns:1fr 1fr;gap:42px}.feature-band h2{line-height:1.4}.feature-band p{color:#aebfdb}.features{display:grid;gap:7px}.features div{padding:12px 16px;border:1px solid #466080;border-radius:12px;display:grid;grid-template-columns:35px 1fr;gap:1px 8px}.features span{grid-row:span 2;color:#66c8ed}.features small{color:#a9bbd4}.notes-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.note-card{padding:24px;border:1px solid var(--line);border-radius:15px;background:var(--card)}.note-card h3{font-size:17px}.note-card p{font-size:13px;color:var(--muted);min-height:60px}.note-card small{color:var(--blue)}.contact-banner{padding:40px 45px;background:linear-gradient(100deg,#245fe2,#13a4ba);border-radius:22px;color:#fff;display:flex;justify-content:space-between;align-items:center;gap:20px;margin:60px 0}.contact-banner h2{font-size:30px;margin:4px 0}.contact-banner p{opacity:.85;margin:4px 0}.contact-banner .eyebrow{color:#bde9ff}.footer{margin-top:70px;border-top:1px solid var(--line);padding:36px 0;color:var(--muted);font-size:12px}.foot-inner{display:flex;justify-content:space-between;gap:24px}.foot-inner strong{color:var(--ink)}.foot-inner p{margin:5px 0}.foot-inner>div:last-child{text-align:right}.page-intro{padding:70px 0 30px}.page-intro h1{font-size:clamp(33px,4vw,46px);margin:10px 0}.filters{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0 30px}.filters a{border:1px solid var(--line);border-radius:40px;padding:8px 16px;font-size:13px;color:var(--muted)}.filters a.active,.filters a:hover{background:var(--blue);color:#fff;border-color:var(--blue)}.detail,.post{padding:65px 0}.back{font-size:13px;color:var(--blue);font-weight:700;display:block;margin-bottom:32px}.detail-head h1,.post h1{font-size:clamp(32px,5vw,50px);margin:12px 0}.detail-head p,.post .lead{font-size:17px;color:var(--muted);max-width:760px}.detail-actions{display:flex;gap:12px;margin:25px 0;flex-wrap:wrap}.detail-image{width:100%;max-height:550px;object-fit:contain;border:1px solid var(--line);border-radius:18px;background:var(--soft);margin:24px 0}.detail-columns{display:grid;grid-template-columns:1fr 300px;gap:60px;margin:50px 0}.prose{font-size:15px;line-height:1.95;overflow-wrap:anywhere}.prose p{margin:14px 0;color:var(--muted)}.prose h2,.prose h3,.prose h4{line-height:1.4;margin:22px 0 13px}.prose code{background:var(--soft);padding:2px 5px;border-radius:5px}.meta{padding:25px;background:var(--soft);border-radius:16px;align-self:start}.meta h3{margin-top:0}.meta div{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line);font-size:13px;color:var(--muted);gap:15px}.meta strong{font-weight:600;color:var(--ink);text-align:right}.post{max-width:850px;margin:auto}.post .prose{margin-top:45px}.about-layout{display:grid;grid-template-columns:210px 1fr;gap:70px;margin:50px 0}.about-avatar{width:190px;height:190px;border-radius:45px;display:grid;place-items:center;background:linear-gradient(135deg,#2867f0,#04b9ac);color:white;font-size:100px;font-weight:800;position:relative}.about-avatar span{font-size:20px;top:22px;right:20px}.contact-list{max-width:730px;display:grid;gap:12px;margin:30px 0}.contact-list a{border:1px solid var(--line);border-radius:14px;padding:18px 22px;display:flex;justify-content:space-between;gap:12px}.contact-list a span{color:var(--muted)}.muted{color:var(--muted)}.empty{text-align:center;padding:60px;color:var(--muted)}.install{max-width:760px;padding:60px 24px;margin:auto}.install.narrow{max-width:470px}.install-head h1{font-size:36px;margin:8px 0}.install-head p{color:var(--muted)}.panel{background:var(--card);border:1px solid var(--line);padding:26px;border-radius:16px;margin:22px 0;box-shadow:var(--shadow)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-grid label{display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:700}.form-grid input:not([type=checkbox]),.form-grid textarea,.form-grid select{background:var(--bg);border:1px solid var(--line);border-radius:9px;width:100%;padding:11px;color:var(--ink);outline-color:var(--blue)}.form-grid textarea{resize:vertical}.form-grid .full{grid-column:1/-1}.form-grid .check{flex-direction:row;align-items:center}.form-grid button{justify-self:start}.notice{padding:13px 20px;border-radius:10px;margin:20px 0;font-size:14px}.notice.error{background:#ffecef;color:#9e2540}.notice.success{background:#dff9ed;color:#136a43}.admin-head{display:flex;justify-content:space-between;align-items:center;padding-top:36px}.admin-head h1{margin:3px 0}.admin-nav{display:flex;gap:8px;flex-wrap:wrap;margin:25px 0}.admin-nav a{background:var(--soft);padding:9px 13px;border-radius:8px;font-size:13px}.admin-list-head{display:flex;justify-content:space-between;align-items:center}.admin-list-head small{font-size:12px;color:var(--muted)}.table-wrap{overflow:auto}.admin-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.admin-table td,.admin-table th{padding:14px 12px;border-bottom:1px solid var(--line)}.admin-table th{color:var(--muted)}.admin-table small{color:var(--muted)}.admin-table td>a{color:var(--blue)}.inline-form{display:inline;margin-left:10px}.danger-link{border:0;background:none;color:#d94a56;font-size:13px;padding:0}@media(max-width:900px){.nav nav{gap:12px}.nav nav a{font-size:12px}.hero{grid-template-columns:1fr;padding-top:60px}.hero-art{min-height:310px;max-width:590px;width:100%;margin:auto}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.notes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-columns{grid-template-columns:1fr}.feature-band{grid-template-columns:1fr}}@media(max-width:650px){.container{width:min(100% - 32px,1160px)}.nav{height:auto;padding:14px 0;flex-wrap:wrap;gap:12px}.nav nav{width:100%;order:3;overflow-x:auto;padding-bottom:4px;margin:0}.nav-cta{margin-left:auto}.hero{padding:52px 0}.hero h1{letter-spacing:-1px}.hero-art{min-height:240px}.art-window{transform:rotate(-2deg)}.win-code{font-size:9px;padding:15px 7px}.float-tile{display:none}.section{padding:43px 0}.section-heading{align-items:start;flex-direction:column}.projects-grid,.notes-grid{grid-template-columns:1fr}.cover{height:180px}.feature-band{padding:27px 22px}.contact-banner{padding:28px 24px;flex-direction:column;align-items:start}.contact-banner h2{font-size:25px}.foot-inner{flex-direction:column}.foot-inner>div:last-child{text-align:left}.page-intro{padding:40px 0 20px}.about-layout{grid-template-columns:1fr;gap:25px}.detail,.post{padding:36px 0}.form-grid{grid-template-columns:1fr}.contact-list a{flex-direction:column}.install{padding-top:30px}}