:root{--ink:#141414;--paper:#f5f1e8;--orange:#ff5d2e;--blue:#7ca8ff;--line:#d8d2c4;--muted:#66645f}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;line-height:1.75}a{color:inherit;text-decoration:none}.wrap{width:min(1180px,calc(100% - 40px));margin:auto}.top{position:sticky;top:0;z-index:20;background:rgba(245,241,232,.92);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.nav{height:72px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:10px;font-size:20px}.radar{width:31px;height:31px;border:2px solid;border-radius:50%;position:relative;background:repeating-radial-gradient(circle,transparent 0 5px,currentColor 6px 7px,transparent 8px 10px)}.radar i{position:absolute;width:14px;height:2px;background:var(--orange);left:14px;top:14px;transform-origin:left;transform:rotate(-35deg)}nav{display:flex;gap:32px;font-size:14px;font-weight:700}nav a:hover{color:var(--orange)}.menu{display:none;border:0;background:none;font-size:24px}.hero{overflow:hidden;padding:84px 0 72px}.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;align-items:center;min-height:520px}.eyebrow,.page-hero span,.kicker{font:700 12px/1.2 ui-monospace,monospace;letter-spacing:.16em;color:var(--orange)}h1,h2,h3,p{margin-top:0}.hero h1{font-size:clamp(56px,7vw,96px);line-height:.98;letter-spacing:-.065em;margin:26px 0}.hero>div>div>p{max-width:650px;font-size:18px;color:var(--muted)}.actions{display:flex;gap:12px;margin:34px 0}.btn{display:inline-flex;padding:13px 22px;border:1px solid;border-radius:999px;font-weight:800}.primary{background:var(--ink);color:white}.ghost:hover{background:white}.trust{display:flex;gap:25px;font-size:13px;color:var(--muted)}.hero-art{height:500px;position:relative;border-radius:50%;background:#dbe5f8;border:1px solid #b6c4dd;display:grid;place-items:center}.orb{width:230px;height:230px;border-radius:50%;background:var(--orange);display:grid;place-content:center;text-align:center;box-shadow:0 25px 60px #ee603b55;z-index:2}.orb span{font:900 92px/1 ui-monospace,monospace}.orb small{font-weight:900}.signal{position:absolute;border:1px solid #7c93bd;border-radius:50%}.s1{inset:70px}.s2{inset:25px}.scan{position:absolute;width:48%;height:48%;left:50%;top:2%;transform-origin:0 100%;background:linear-gradient(35deg,transparent 45%,#ff5d2e33);animation:scan 8s linear infinite}@keyframes scan{to{transform:rotate(360deg)}}.float{position:absolute;background:white;border:1px solid var(--ink);padding:8px 14px;border-radius:999px;font-size:12px;font-weight:800;box-shadow:4px 4px 0 var(--ink);z-index:3}.f1{top:17%;left:-3%}.f2{right:-3%;top:35%}.f3{bottom:12%;left:12%}.ticker{border-block:1px solid var(--ink);padding:12px 0;overflow:hidden;white-space:nowrap;font:800 13px ui-monospace,monospace;letter-spacing:.12em}.ticker div{text-align:center}.ticker i{color:var(--orange);padding:0 22px}.section{padding:90px 0}.section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:32px}.section-head span{font:700 12px ui-monospace,monospace;color:var(--orange);letter-spacing:.12em}.section-head h2,.dark h2,.newsletter h2{font-size:clamp(34px,4vw,58px);line-height:1.05;letter-spacing:-.045em;margin:8px 0 0}.section-head>a{font-weight:800}.featured,.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card{background:#fff;border:1px solid var(--line);transition:.25s}.card:hover{transform:translateY(-5px);box-shadow:8px 8px 0 var(--ink)}.card-top{height:145px;padding:18px;display:flex;justify-content:space-between;align-items:start;overflow:hidden}.card-top span,.pill{background:var(--ink);color:#fff;border-radius:99px;padding:5px 11px;font-size:12px;font-weight:800}.card-top strong{font:900 64px/1 ui-monospace,monospace;opacity:.2}.c-guide{background:#ffc5a9}.c-shadowrocket{background:#a9c9ff}.c-client{background:#a9e4d4}.c-security{background:#d1b8f5}.c-test{background:#ffb0ae}.card-body{padding:22px}.meta{font:12px ui-monospace,monospace;color:var(--muted)}.card h3{font-size:21px;line-height:1.35;margin:12px 0}.card p{font-size:14px;color:var(--muted);line-height:1.7}.read{font-size:13px;font-weight:900}.read span{color:var(--orange)}.dark{background:var(--ink);color:#fff;padding:90px 0}.principles{display:grid;grid-template-columns:.8fr 1.2fr;gap:90px}.principle-list>div{border-top:1px solid #444;padding:26px 0;display:grid;grid-template-columns:55px 160px 1fr;gap:15px;align-items:start}.principle-list b{color:var(--orange);font:14px ui-monospace}.principle-list h3{font-size:20px}.principle-list p{color:#aaa}.newsletter{background:var(--orange);padding:72px 0}.newsletter .wrap{display:flex;align-items:end;justify-content:space-between}.newsletter span{font:700 12px ui-monospace;letter-spacing:.15em}.newsletter p{margin:12px 0 0}.lightbtn{background:white}.page-hero{padding:100px 0 70px;border-bottom:1px solid var(--line)}.page-hero h1{font-size:clamp(54px,8vw,100px);line-height:1;letter-spacing:-.06em;margin:18px 0}.page-hero p{font-size:20px;color:var(--muted)}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:30px}.filters button{border:1px solid var(--ink);border-radius:99px;background:transparent;padding:8px 16px;font-weight:800;cursor:pointer}.filters button.active{background:var(--ink);color:#fff}.article-shell{display:grid;grid-template-columns:minmax(0,760px) 260px;gap:80px;padding:55px 0 90px}.crumb{font-size:12px;color:var(--muted);margin-bottom:35px}.article header h1{font-size:clamp(40px,5vw,68px);line-height:1.08;letter-spacing:-.045em;margin:18px 0}.lead{font-size:20px;color:var(--muted);line-height:1.7}.byline{display:flex;align-items:center;gap:12px;margin:26px 0 45px}.avatar{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--orange);font-weight:900}.byline span:last-child{display:flex;flex-direction:column}.byline small{color:var(--muted)}.takeaway{border:1px solid var(--ink);border-left:7px solid var(--orange);padding:24px;margin:35px 0;background:#fff}.takeaway p{margin:5px 0 0}.article section{scroll-margin-top:100px;margin:55px 0}.article section h2{font-size:30px;line-height:1.25;letter-spacing:-.025em}.article section p{font-family:"Noto Serif SC","Songti SC",serif;font-size:18px;line-height:2}.notice{background:#e8e1d4;padding:25px;border-radius:4px}.notice p{margin:5px 0 0}.toc{position:sticky;top:105px;align-self:start;border-top:3px solid var(--ink);padding-top:15px}.toc>b{display:block;margin-bottom:10px}.toc>a{display:block;font-size:13px;color:var(--muted);padding:6px 0}.toc>a:hover{color:var(--orange)}.aside-box{margin-top:25px;padding:18px;background:#dbe5f8;font-size:13px;font-weight:800}.aside-box a{display:block;color:#315baa}.related{padding-bottom:90px}.related>h2{font-size:38px}.faq{padding:60px 0 100px;max-width:900px}.faq details{border-top:1px solid var(--ink)}.faq details:last-child{border-bottom:1px solid}.faq summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:50px 1fr 30px;align-items:center;padding:24px 0;font-size:19px;font-weight:800}.faq summary::-webkit-details-marker{display:none}.faq summary span{font:12px ui-monospace;color:var(--orange)}.faq summary i{font-style:normal;font-size:24px}.faq details[open] summary i{transform:rotate(45deg)}.faq details p{padding:0 50px 24px;color:var(--muted);font-size:17px}.prose{max-width:820px;padding:70px 0 100px}.prose h2{font-size:36px;margin-top:50px}.prose p{font-family:"Noto Serif SC","Songti SC",serif;font-size:19px;line-height:2}footer{background:var(--ink);color:#eee;padding:65px 0 25px}.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:60px}.brand.light{color:#fff}.footer-grid>div{display:flex;flex-direction:column;align-items:start;gap:9px}.footer-grid p,.footer-grid a{color:#aaa;font-size:13px}.legal{border-top:1px solid #333;margin-top:45px;padding-top:20px;color:#777;font-size:12px}@media(max-width:850px){.nav nav{display:none;position:absolute;top:72px;left:0;right:0;background:var(--paper);padding:25px;flex-direction:column;border-bottom:1px solid}.nav nav.open{display:flex}.menu{display:block}.hero{padding-top:50px}.hero-grid,.principles,.article-shell{grid-template-columns:1fr}.hero-art{height:380px;margin-top:50px}.featured,.grid{grid-template-columns:1fr 1fr}.principle-list>div{grid-template-columns:45px 120px 1fr}.toc{display:none}.footer-grid{grid-template-columns:1fr 1fr}.footer-grid>div:first-child{grid-column:1/-1}}@media(max-width:560px){.wrap{width:min(100% - 28px,1180px)}.hero h1{font-size:51px}.hero-art{height:320px}.orb{width:170px;height:170px}.orb span{font-size:70px}.trust{gap:10px;flex-wrap:wrap}.featured,.grid{grid-template-columns:1fr}.section{padding:65px 0}.section-head{align-items:start}.section-head>a{display:none}.principle-list>div{grid-template-columns:35px 1fr}.principle-list p{grid-column:2}.newsletter .wrap{align-items:start;flex-direction:column;gap:25px}.footer-grid{grid-template-columns:1fr}.article header h1{font-size:40px}.article section p{font-size:17px}.faq summary{grid-template-columns:35px 1fr 25px}.faq details p{padding-left:35px}}

/* expanded navigation */
.top .nav>nav{gap:17px;font-size:13px;white-space:nowrap}.top .nav>nav a{position:relative;padding:24px 0}.top .nav>nav a:after{content:"";position:absolute;left:0;right:0;bottom:17px;height:2px;background:var(--orange);transform:scaleX(0);transition:transform .2s}.top .nav>nav a:hover:after{transform:scaleX(1)}.recommend-hero{background:#ffd8c8}.recommend-intro{background:var(--ink);color:#fff;padding:70px 0}.recommend-intro>.wrap{display:grid;grid-template-columns:1fr 1fr;gap:80px}.recommend-intro h2{font-size:clamp(32px,4vw,54px);line-height:1.1;margin:10px 0}.recommend-intro b{color:var(--orange);font:700 12px ui-monospace,monospace;letter-spacing:.14em}.recommend-points p{border-top:1px solid #444;padding:18px 0;margin:0}.recommend-points strong{color:var(--orange);margin-right:18px;font-family:ui-monospace,monospace}@media(max-width:1050px){.top .nav>nav{gap:11px;font-size:12px}.brand{font-size:18px}}@media(max-width:850px){.top .nav>nav{white-space:normal;gap:0}.top .nav>nav a{padding:10px 0;font-size:15px}.top .nav>nav a:after{display:none}.recommend-intro>.wrap{grid-template-columns:1fr;gap:30px}}
