:root{--bg:#f7f8f6;--paper:#fff;--ink:#18312d;--text:#344b45;--sub:#6d827b;--line:#e4ebe7;--accent:#167b64;--accent2:#bc5f35;--pale:#e8f4ef;--shadow:0 14px 45px rgba(19,57,45,.06);--radius:16px;--font:system-ui,-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font);margin:0;font-size:15px;line-height:1.78;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{color:#11644f}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}::selection{background:#bfe9da;color:#073b2e}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.topbar{height:70px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50;backdrop-filter:blur(14px)}.topbar-inner{height:100%;max-width:1670px;margin:auto;padding:0 30px;display:flex;align-items:center;gap:28px}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);white-space:nowrap}.brand-symbol{font-size:26px;font-weight:900;letter-spacing:-3px;display:flex;align-items:center}.brand-symbol>span{color:var(--accent2)}.brand-name{font-size:16px;font-weight:900;letter-spacing:1.5px}.brand-name b{font-weight:400;color:var(--accent)}.brand small{font-size:10px;letter-spacing:1px;color:var(--sub);margin-left:4px}.top-nav{display:flex;gap:26px;margin-left:48px}.top-nav a{color:#536f64;font-size:13px;font-weight:700}.top-nav a:hover{color:var(--accent)}.search-button{margin-left:auto;border:1px solid var(--line);background:#fafdfb;border-radius:9px;height:36px;padding:0 12px;display:flex;align-items:center;gap:10px;color:var(--sub);font-size:12px}.search-lens{font-size:25px;line-height:1}.search-button kbd{border:1px solid #dae6df;background:white;border-radius:5px;padding:0 5px;font-size:11px}.menu-toggle{display:none;border:0;background:transparent;font-size:24px;color:var(--ink)}
.site-layout{display:grid;grid-template-columns:245px minmax(0,1fr) 244px;max-width:1670px;margin:0 auto;min-height:calc(100vh - 70px)}.sidebar{background:#fff;border-right:1px solid var(--line);padding:28px 14px 36px 24px;position:sticky;top:70px;height:calc(100vh - 70px);overflow-y:auto;align-self:start;scrollbar-width:thin}.sidebar a{display:block;padding:8px 11px;border-radius:8px;color:#567166;font-weight:580;font-size:12.5px;line-height:1.45}.sidebar a:hover,.sidebar a.active,.sidebar a[aria-current="page"]{background:#e9f3ee;color:var(--accent)}.sidebar-cap{color:#9caca5;letter-spacing:1.4px;text-transform:uppercase;font-size:10px;font-weight:900;padding:0 10px 8px}.sidebar-cap.space-above{padding-top:22px}.phase-label{color:#8ea69a;font-size:10px;font-weight:850;padding:15px 10px 3px;letter-spacing:1px}.step-nav a{display:flex;gap:8px;align-items:baseline}.step-num{font-weight:900;color:#9fada5;font-size:10px;min-width:16px}.step-nav.is-complete .step-num{color:var(--accent)}.step-nav.is-complete a:after{content:'✓';margin-left:auto;color:var(--accent)}.nav-mini{font-size:10px;font-weight:400;color:#91a49b}
.main-content{padding:34px 48px 50px;min-width:0;max-width:1130px;width:100%;margin:0 auto}.breadcrumb{font-size:11px;color:#8ba196;margin-bottom:22px;display:flex;gap:9px;flex-wrap:wrap}.breadcrumb a{color:#719084}.doc-content{width:100%;max-width:890px}.doc-content>h1:first-child{margin-top:0}.doc-content h1{font-size:35px;letter-spacing:-1.1px;line-height:1.25;color:var(--ink);font-weight:850;margin:28px 0 26px}.doc-content h2{font-size:22px;letter-spacing:-.4px;line-height:1.4;color:var(--ink);margin:40px 0 13px;padding-top:3px}.doc-content h3{color:var(--ink);font-size:17px;margin:28px 0 10px}.doc-content h4{color:var(--ink);font-size:15px}.doc-content p{margin:12px 0}.doc-content ul,.doc-content ol{padding-left:24px}.doc-content li{margin:7px 0}.doc-content li::marker{color:#84a89a}.doc-content blockquote{border-left:3px solid var(--accent);padding:10px 17px;background:#edf6f1;border-radius:0 11px 11px 0;margin:20px 0;color:#395d4f}.doc-content blockquote p{margin:3px 0}.doc-content strong{color:#18382d}.doc-content code:not(pre code){background:#eaf0ed;padding:2px 5px;border-radius:4px;font-size:.89em;color:#854b34}.doc-content pre{background:#172c2b;color:#ddf4e8;border-radius:12px;padding:17px 20px;overflow:auto;font-size:12px;line-height:1.7}.doc-content pre code{font-family:'SFMono-Regular',Consolas,monospace}.doc-content hr{border:0;border-top:1px solid var(--line);margin:32px 0}.doc-content table{display:block;width:100%;overflow-x:auto;border-collapse:collapse;font-size:12.5px;margin:17px 0 24px;scrollbar-width:thin}.doc-content table th{background:#e9f2ed;color:#355f4e;text-align:left;font-weight:800;white-space:nowrap}.doc-content table td,.doc-content table th{border:1px solid #dfeae3;padding:9px 12px;min-width:90px;vertical-align:top}.doc-content table tr:nth-child(even) td{background:rgba(247,250,248,.7)}.doc-content .task-list-item{list-style:none;margin-left:-22px;display:flex;align-items:flex-start;gap:8px}.doc-content .task-list-item input{margin:7px 2px 0 0;accent-color:var(--accent);min-width:16px;min-height:16px}.doc-content .task-list-item.is-checked{color:#73877d}
.right-rail{padding:42px 24px 30px 10px;position:sticky;top:70px;height:calc(100vh - 70px);overflow-y:auto;align-self:start;scrollbar-width:thin}.right-title{font-size:10px;letter-spacing:1.3px;color:#a0b0a8;font-weight:900;margin-bottom:14px}.right-rail>a{display:block;font-size:12px;color:#6e847b;line-height:1.55;padding:7px 0;border-left:2px solid transparent;padding-left:13px}.right-rail>a:hover{border-left-color:var(--accent);color:var(--accent)}.project-meta-card{border:1px solid var(--line);border-radius:14px;background:white;padding:17px;margin-top:26px}.project-meta-top{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:10px;color:#8a9e93;margin-bottom:15px}.meta-detail{display:grid;gap:2px;margin:11px 0;font-size:11px}.meta-detail>span{color:#8d9e97}.meta-detail strong{color:var(--ink);font-weight:700;line-height:1.45}.meta-home{display:block;border-top:1px solid var(--line);padding-top:12px;margin-top:14px;font-size:11px}.right-tip{margin-top:24px;font-size:11px;color:#899d92;line-height:1.7}.status{white-space:nowrap;display:inline-flex;font-size:10px;font-weight:800;letter-spacing:.2px;padding:3px 9px;border-radius:99px;background:#edf2ee;color:#66776c}.status.preparing{background:#fdf0d9;color:#925d1f}.status.verified{background:#e5f5ea;color:#247444}.status.unwritten{background:#edf0ff;color:#586c9d}.status.planning{background:#edf2ee;color:#62776d}.status.building{background:#e7f5fd;color:#3c759e}.progress-box{margin-top:17px;padding-top:14px;border-top:1px solid var(--line)}.progress-head{display:flex;justify-content:space-between;font-size:10px;color:#739083}.progress-head strong{color:var(--accent)}.progress-track{height:6px;border-radius:20px;background:#edf3ef;overflow:hidden;margin:7px 0}.progress-fill{display:block;width:0;height:100%;background:var(--accent);transition:width .25s}.progress-box small{font-size:9px;color:#94a79c}
.chapter-stephead{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#87a092;margin-bottom:13px}.step-tag{background:#e8f3ec;border-radius:6px;padding:4px 10px;font-weight:800;color:var(--accent)}.complete-bar{background:#fff;border:1px solid #d6e8de;border-radius:15px;margin:36px 0 28px;padding:20px;display:flex;justify-content:space-between;align-items:center;gap:17px}.complete-bar strong{font-size:15px}.complete-bar p{margin:5px 0 0;font-size:11px;color:var(--sub)}.complete-toggle{border:0;background:var(--accent);color:#fff;font-weight:800;padding:10px 18px;border-radius:9px;white-space:nowrap;font-size:12px}.complete-toggle:disabled{background:#c4d4cb}.complete-toggle.is-done{background:#e3f2e9;color:var(--accent)}.chapter-nav{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:28px 0}.chapter-nav a{border:1px solid var(--line);border-radius:12px;padding:14px;background:white;display:flex;flex-direction:column;gap:3px;color:var(--ink)}.chapter-nav a.next{text-align:right}.chapter-nav small{font-size:10px;color:var(--sub)}.chapter-nav strong{font-size:12px}.start-banner{margin:44px 0 12px;padding:22px;background:#e9f4ee;border-radius:16px;display:flex;justify-content:space-between;align-items:center;gap:16px}.start-banner h2{margin:6px 0}.start-banner p{font-size:12px}.start-banner .primary-cta{flex-shrink:0}
.home-page .main-content{max-width:unset;padding-top:0}.home-page .doc-content{max-width:unset}.hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(230px,.9fr);min-height:470px;align-items:center;gap:10px;padding:35px 0 22px}.eyebrow{font-size:10px;font-weight:900;letter-spacing:2px;color:var(--accent)}.hero-copy h1{font-size:clamp(40px,4vw,62px);line-height:1.19;letter-spacing:-3px;color:var(--ink);margin:18px 0 21px}.hero-copy h1 span{color:var(--accent)}.hero-copy>p{max-width:450px;font-size:15px;color:#668075;line-height:1.9}.hero-actions{display:flex;align-items:center;gap:11px;margin:27px 0 34px;flex-wrap:wrap}.primary-cta,.secondary-cta{padding:11px 17px;border-radius:9px;font-size:12px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:17px}.primary-cta{color:white;background:var(--accent);box-shadow:0 7px 22px rgba(21,126,94,.13)}.primary-cta:hover{background:#106850;color:white}.secondary-cta{color:var(--accent);border:1px solid #bdd6c8;background:#fff}.hero-facts{display:flex;gap:24px;padding-top:12px;border-top:1px solid var(--line);flex-wrap:wrap}.hero-facts>span{font-size:20px;font-weight:900;color:var(--ink);display:flex;align-items:baseline;gap:6px}.hero-facts small{color:#8aa093;font-size:10px;font-weight:500}.hero-art{height:380px;position:relative;display:flex;align-items:center;justify-content:center;isolation:isolate}.hero-art:before{content:'';z-index:-2;position:absolute;width:325px;height:325px;background:radial-gradient(circle,#cae8d9 0,#e6f2ea 61%,transparent 73%);border-radius:50%}.device{width:255px;height:261px;background:#e4e7df;border:8px solid #fdfdf9;border-bottom-width:16px;border-radius:30px;box-shadow:10px 22px 40px rgba(34,83,62,.23),inset 0 0 0 2px #c6d3c9;transform:rotate(-7deg);padding:10px 12px;display:flex;flex-direction:column;z-index:2}.device-screen{height:166px;border-radius:16px;border:7px solid #1c302d;background:#133d39;position:relative;display:flex;align-items:center;flex-direction:column;justify-content:center;overflow:hidden}.device-screen:before{content:'';position:absolute;width:190px;height:120px;top:-26px;right:-45px;border-radius:50%;background:radial-gradient(circle,rgba(100,183,148,.31),transparent 60%)}.device-dot{height:4px;width:4px;background:#9bcca4;border-radius:50%;position:absolute;top:7px}.device-heart{position:absolute;top:20px;right:38px;color:#fc9d69;transform:rotate(15deg)}.device-face{position:relative;font-size:24px;font-weight:900;color:#dff4e3;display:flex;gap:30px;align-items:flex-start}.device-face b{font-size:23px;font-weight:700;position:absolute;top:23px;left:36px}.device-label{background:#e8f4eb;font:700 9px monospace;letter-spacing:1px;color:#417c67;padding:7px 10px;border-radius:5px;position:absolute;bottom:9px;width:85%;text-align:center}.device-controls{display:flex;align-items:center;justify-content:center;gap:13px;flex:1}.device-controls i{display:block;width:33px;height:28px;background:#fafaf3;border-radius:8px;box-shadow:1px 5px 0 #cdd5c9}.device-controls em{display:block;width:36px;height:36px;background:linear-gradient(145deg,#ef9e67,#c76c3a);border-radius:50%;box-shadow:2px 5px 0 #af5b3b}.device-shadow{position:absolute;bottom:37px;width:260px;height:27px;background:rgba(34,80,61,.1);filter:blur(16px);border-radius:50%}.orb{position:absolute;border:1px solid #97c1a8;border-radius:50%;opacity:.5}.orb1{width:17px;height:17px;top:59px;right:20px}.orb2{width:33px;height:33px;left:22px;bottom:82px}.art-caption{position:absolute;right:5px;bottom:4px;font-size:9px;letter-spacing:2px;color:#7a988a}.home-body{padding-top:6px;padding-bottom:18px;border-bottom:1px solid var(--line)}.home-body h2{font-size:20px}.home-body p{font-size:13px;max-width:690px}.catalog-section,.process-section{padding:36px 0}.section-intro h2,.process-section h2{font-size:29px;color:var(--ink);margin:7px 0}.section-intro p{margin:5px 0 25px;color:var(--sub);font-size:13px}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:18px}.project-card{border-radius:15px;border:1px solid #dfe9e4;background:#fff;min-height:203px;padding:22px;display:flex;flex-direction:column;transition:transform .18s,box-shadow .18s}.project-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.project-card.is-featured{background:#e9f5ef;border-color:#b4d6c3}.card-kicker{font-size:10px;letter-spacing:.4px;color:var(--accent);font-weight:800}.project-card h3{font-size:19px;margin:14px 0 8px;line-height:1.35;color:var(--ink)}.project-card p{font-size:12px;line-height:1.8;color:#6f887b;margin:0 0 15px;flex:1}.card-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:auto}.card-arrow{font-size:21px;color:var(--accent)}.process-section{border-top:1px solid var(--line)}.process-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:20px}.process-grid>div{border:1px solid var(--line);background:white;border-radius:12px;padding:15px}.process-grid span{font-weight:900;font-size:21px;color:#a3c5b5}.process-grid b{display:block;color:var(--ink);margin:3px 0}.process-grid p{font-size:11px;color:var(--sub);margin:0}.footer{color:#94a49d;border-top:1px solid var(--line);margin-top:60px;padding:22px 0 7px;font-size:10px;line-height:1.8}.footer a{color:#8aa394}
.search-modal[hidden],.mobile-overlay[hidden]{display:none!important}.search-modal{position:fixed;inset:0;z-index:80;background:rgba(12,32,28,.42);display:flex;align-items:flex-start;justify-content:center;padding:13vh 18px 20px}.search-panel{width:min(560px,100%);background:white;border-radius:15px;overflow:hidden;box-shadow:0 25px 70px rgba(0,0,0,.21)}.search-top{display:flex;border-bottom:1px solid var(--line);height:62px;padding:10px}.search-top input{padding:8px 15px;flex:1;min-width:0;border:none;outline:none;color:var(--ink);font-size:16px}.search-top button{border:0;background:#f2f7f4;color:var(--sub);border-radius:8px;min-width:40px}.search-results{max-height:55vh;overflow:auto;padding:13px}.search-results>p{font-size:12px;color:var(--sub);padding:15px}.search-results>a{display:block;padding:13px;border-radius:9px;margin-bottom:3px}.search-results>a:hover{background:#edf6f0}.search-results strong{display:block;font-size:14px;color:var(--ink);line-height:1.4}.search-results small{color:var(--sub);font-size:11px;display:block;margin-top:4px}.search-help{font-size:10px;color:#8fa397;border-top:1px solid var(--line);padding:12px 18px}.search-is-open{overflow:hidden}
@media(max-width:1330px){.site-layout{grid-template-columns:236px minmax(0,1fr)}.right-rail{display:none}.main-content{padding-left:40px;padding-right:40px;max-width:1110px}}
@media(max-width:840px){.topbar{height:62px}.topbar-inner{padding:0 16px;gap:12px}.menu-toggle{display:block}.brand small,.top-nav{display:none}.search-button{height:33px}.search-button span:not(.search-lens),.search-button kbd{display:none}.site-layout{display:block}.sidebar{position:fixed;left:0;top:62px;bottom:0;width:min(80vw,295px);height:calc(100vh - 62px);z-index:61;transform:translateX(-110%);transition:transform .2s;box-shadow:6px 6px 30px rgba(0,0,0,.05)}.sidebar.open{transform:translateX(0)}.mobile-overlay{position:fixed;inset:62px 0 0;background:rgba(5,36,25,.35);z-index:60}.menu-is-open{overflow:hidden}.main-content{padding:25px 23px 40px}.doc-content h1{font-size:29px}.doc-content h2{font-size:20px;margin-top:33px}.doc-content h3{font-size:16px}.home-page .main-content{padding-top:0}.hero{grid-template-columns:1fr;gap:4px;padding-top:42px}.hero-copy h1{font-size:44px}.hero-art{height:280px}.device{transform:rotate(-6deg) scale(.78)}.device-shadow{bottom:19px}.art-caption{right:20px}.project-grid{grid-template-columns:1fr}.process-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.chapter-nav{gap:8px}.chapter-nav a{padding:10px}.complete-bar{flex-direction:column;align-items:flex-start}.complete-toggle{width:100%}}
@media(max-width:430px){.brand-name{font-size:14px}.topbar-inner{gap:8px}.hero-copy h1{font-size:40px}.hero-facts{gap:11px}.hero-facts>span{font-size:17px}.hero-facts small{font-size:9px}.process-grid{grid-template-columns:1fr 1fr}.process-grid>div{padding:11px}.project-card h3{font-size:17px}.main-content{padding:20px 17px 32px}}
.video-grid{display:grid;gap:18px;margin-top:22px}.video-card{display:grid;grid-template-columns:180px 1fr;gap:18px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px}.video-cover{min-height:140px;background:linear-gradient(145deg,#194a3f,#3d8e72);border-radius:11px;display:flex;justify-content:center;align-items:center;position:relative;color:#fff}.video-cover>span{font-size:35px}.video-cover small{position:absolute;bottom:11px;left:12px;color:#def9e7;font-size:10px}.video-details>small{font-size:10px;color:var(--sub)}.video-details h3{margin:5px 0 6px;color:var(--ink);font-size:18px}.video-details p{font-size:12px;color:var(--sub);line-height:1.6}.video-watch,.video-pending{display:inline-block;font-size:11px;padding:6px 9px;border-radius:7px;background:var(--pale);color:var(--accent);font-weight:750}.video-pending{background:#f5f2eb;color:#9b7b5e}.video-project{font-size:11px;margin-left:11px}.video-embed{grid-column:1/-1;aspect-ratio:16/9;max-width:650px;background:#172a26;border-radius:10px;display:flex;align-items:center;justify-content:center}.video-embed>button{background:#e9f3ee;color:#245b4b;border:0;border-radius:7px;padding:9px 13px}.video-embed>iframe{width:100%;height:100%;border:0;border-radius:10px}
@media(max-width:590px){.video-card{grid-template-columns:1fr}.video-cover{min-height:160px}.video-project{display:block;margin:10px 0 0}}

/* Tutorial videos backed by licensed project-owned screenshots. */
.video-cover{overflow:hidden}.video-cover>img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;border-radius:11px}.video-cover>small{z-index:2;background:rgba(18,36,35,.82);padding:4px 7px;border-radius:4px}.video-embed-html5{max-width:100%;aspect-ratio:16/9;overflow:hidden;display:block}.video-embed-html5>video{width:100%;height:100%;object-fit:contain;border-radius:10px}.video-disclosure{border-left:3px solid #c78d4c;padding:4px 8px;background:#fff8ed;color:#775228!important}.video-captions{font-size:11px;margin-left:9px}
