.article-shell{max-width:1200px;margin:0 auto;padding:40px 24px 80px;display:grid;grid-template-columns:220px 1fr 220px;gap:48px;align-items:start}@media(max-width:1080px){.article-shell{grid-template-columns:200px 1fr}.toc{display:none}}@media(max-width:760px){.article-shell{grid-template-columns:1fr}.sidebar{display:none}}.sidebar{position:sticky;top:88px;font-size:.8125rem}.sidebar h5{font-family:var(--font-mono);font-size:.6875rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);margin:0 0 12px}.sidebar ul{list-style:none;padding:0;margin:0 0 24px;display:flex;flex-direction:column;gap:1px;border-left:2px solid var(--hairline)}.sidebar li a{display:block;padding:6px 12px;color:var(--walnut);border-left:2px solid transparent;margin-left:-2px;transition:.15s}.sidebar li a:hover{color:var(--ink);background:var(--sand)}.sidebar li a.active{color:var(--copper);border-left-color:var(--copper);font-weight:500;background:var(--copper-50)}article{font-family:var(--font-sans);color:var(--ink);max-width:720px}.meta-row{display:flex;align-items:center;gap:12px;font-family:var(--font-mono);font-size:.6875rem;color:var(--stone);letter-spacing:.1em;text-transform:uppercase;margin-bottom:12px}.meta-row .tag{padding:3px 8px;border-radius:4px;background:var(--copper-50);color:var(--copper);letter-spacing:.08em}article h1{font-family:var(--font-display);font-weight:800;font-size:clamp(2rem,3.5vw,2.75rem);letter-spacing:-.03em;line-height:1.15;margin:0 0 24px;color:var(--ink)}article .subtitle{font-size:1.125rem;color:var(--walnut);line-height:1.55;margin:0 0 32px;max-width:56ch}.author-row{display:flex;align-items:center;gap:12px;padding:16px 0;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);margin-bottom:40px;font-size:.8125rem;color:var(--stone)}.author-avatar{width:36px;height:36px;border-radius:50%;background:var(--copper);color:#fff;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:.8125rem}.author-name{color:var(--ink);font-weight:600;font-size:.875rem}.author-row .reading-time{margin-left:auto;display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:.75rem;letter-spacing:.04em;flex-shrink:0;white-space:nowrap}.author-row>div:nth-child(2){min-width:0;flex:1}article h2{font-family:var(--font-display);font-weight:700;font-size:1.75rem;letter-spacing:-.025em;line-height:1.2;margin:48px 0 16px;color:var(--ink);display:flex;align-items:baseline;gap:14px;scroll-margin-top:88px}article h2 .step{font-family:var(--font-display);font-size:1rem;font-weight:600;color:var(--copper);background:var(--copper-50);padding:4px 10px;border-radius:6px;letter-spacing:.02em;line-height:1}article h3{font-family:var(--font-display);font-weight:700;font-size:1.25rem;letter-spacing:-.02em;margin:32px 0 12px;color:var(--ink)}article p{color:var(--walnut);font-size:1rem;line-height:1.7;margin:0 0 16px}article p strong{color:var(--ink);font-weight:600}article code{font-family:var(--font-mono);font-size:.875rem;background:var(--sand);color:var(--ink);padding:2px 6px;border-radius:4px}article ul,article ol{color:var(--walnut);line-height:1.7;font-size:1rem;padding-left:20px;margin:0 0 20px}article ul li,article ol li{margin-bottom:6px}article ul li::marker{color:var(--copper)}.callout{padding:18px 22px;border-radius:12px;margin:24px 0;display:grid;grid-template-columns:22px 1fr;gap:14px;align-items:start}.callout.tip{background:var(--patina-50);border-left:3px solid var(--patina)}.callout.warn{background:var(--ochre-50);border-left:3px solid var(--ochre)}.callout.info{background:var(--blue-50);border-left:3px solid var(--blue)}.callout svg{width:20px;height:20px;margin-top:2px}.callout.tip svg{color:var(--patina)}.callout.warn svg{color:var(--ochre)}.callout.info svg{color:var(--blue)}.callout strong{display:block;color:var(--ink);font-weight:600;margin-bottom:4px;font-size:.9375rem}.callout p{margin:0;font-size:.9375rem;color:var(--walnut);line-height:1.55}.screenshot{margin:24px 0 32px;background:#fff;border-radius:12px;border:1px solid var(--hairline);box-shadow:var(--sh-md);overflow:hidden}.screenshot-head{background:var(--paper-2);border-bottom:1px solid var(--hairline);padding:10px 14px;display:flex;align-items:center;gap:10px}.screenshot-head .dots{display:flex;gap:5px}.screenshot-head .dots span{width:10px;height:10px;border-radius:50%;background:var(--sand)}.screenshot-head .dots span:first-child{background:#e5a29c}.screenshot-head .dots span:nth-child(2){background:#e5cb95}.screenshot-head .dots span:nth-child(3){background:#a5c9b0}.screenshot-head .url{margin-left:auto;font-family:var(--font-mono);font-size:.6875rem;color:var(--stone);background:#fff;padding:3px 10px;border-radius:999px;border:1px solid var(--hairline)}.screenshot-body{position:relative}.screenshot-caption{padding:12px 16px;background:var(--paper-2);border-top:1px solid var(--hairline);font-family:var(--font-mono);font-size:.6875rem;color:var(--stone);letter-spacing:.08em;text-transform:uppercase}.mock-form{padding:24px;display:grid;grid-template-columns:180px 1fr;gap:24px;min-height:280px}.mock-form-sidebar{display:flex;flex-direction:column;gap:4px;font-size:.8125rem}.mock-form-sidebar .sec{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--stone);padding:8px 10px 4px}.mock-form-sidebar a{padding:7px 10px;border-radius:6px;color:var(--walnut)}.mock-form-sidebar a.active{background:var(--copper-50);color:var(--copper);font-weight:500}.mock-form-sidebar a:hover:not(.active){background:var(--sand)}.mock-form-main{display:flex;flex-direction:column;gap:12px}.mf-title{font-family:var(--font-display);font-weight:700;font-size:1.125rem;color:var(--ink);letter-spacing:-.015em;margin:0}.mf-field{display:flex;flex-direction:column;gap:4px}.mf-field label{font-size:.6875rem;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--stone);font-weight:500}.mf-field input{padding:8px 10px;border:1px solid var(--hairline-strong);border-radius:6px;background:#fff;font-size:.8125rem;color:var(--ink);font-family:var(--font-sans)}.mf-field.focused input{border-color:var(--copper);box-shadow:0 0 0 3px #b8601f26}.mf-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mf-actions{display:flex;gap:8px;margin-top:6px}.mf-btn{padding:7px 14px;border-radius:6px;font-size:.75rem;font-weight:500}.mf-btn.p{background:var(--copper);color:#fff}.mf-btn.g{background:var(--sand);color:var(--ink)}.anno{position:absolute;font-family:var(--font-mono);font-size:.6875rem;font-weight:600;color:#fff;background:var(--copper);padding:3px 10px;border-radius:999px;letter-spacing:.04em;box-shadow:0 4px 12px #b8601f66;z-index:5}.anno:after{content:"";position:absolute;width:8px;height:8px;background:var(--copper);transform:rotate(45deg)}.anno.bl:after{bottom:-3px;left:16px}.anno.tl:after{top:-3px;left:16px}.anno.br:after{bottom:-3px;right:16px}.check-list{background:#fff;border:1px solid var(--hairline);border-radius:12px;padding:20px 24px;margin:24px 0}.check-list h4{margin:0 0 12px;font-family:var(--font-display);font-weight:700;font-size:1rem;color:var(--ink);letter-spacing:-.015em;display:flex;align-items:center;gap:8px}.check-list h4:before{content:"";width:18px;height:18px;background:var(--patina);mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>") center/80% no-repeat;-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>") center/80% no-repeat;border-radius:999px;box-shadow:0 0 0 3px var(--patina-50)}.check-list ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.check-list li{display:flex;align-items:start;gap:10px;font-size:.9375rem;color:var(--walnut);line-height:1.5}.check-list li:before{content:"";width:16px;height:16px;border:1.5px solid var(--hairline-strong);border-radius:4px;margin-top:3px;flex-shrink:0}.check-list li.done{color:var(--stone);text-decoration:line-through;text-decoration-color:var(--stone)}.check-list li.done:before{background:var(--patina);border-color:var(--patina);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>");background-size:80%;background-position:center;background-repeat:no-repeat}.toc{position:sticky;top:88px;font-size:.8125rem}.toc h5{font-family:var(--font-mono);font-size:.6875rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);margin:0 0 12px}.toc ol{list-style:none;padding:0;margin:0 0 24px;display:flex;flex-direction:column;gap:2px;counter-reset:toc}.toc li{counter-increment:toc}.toc li a{display:block;padding:6px 12px 6px 32px;color:var(--walnut);border-radius:6px;line-height:1.4;position:relative;transition:.15s}.toc li a:before{content:counter(toc,decimal-leading-zero);position:absolute;left:8px;font-family:var(--font-mono);font-size:.6875rem;color:var(--stone)}.toc li a:hover{background:var(--sand);color:var(--ink)}.toc .helpful{margin-top:16px;padding:16px;background:#fff;border:1px solid var(--hairline);border-radius:10px;text-align:center}.toc .helpful p{font-size:.8125rem;color:var(--walnut);margin:0 0 10px;line-height:1.4}.toc .helpful-btns{display:flex;gap:6px;justify-content:center}.toc .helpful-btns button{border:1px solid var(--hairline-strong);background:#fff;padding:6px 12px;border-radius:6px;cursor:pointer;font-family:var(--font-sans);font-size:.75rem;font-weight:500;color:var(--walnut)}.toc .helpful-btns button:hover{background:var(--sand)}.related{max-width:1200px;margin:0 auto;padding:0 24px 80px}.related h3{font-family:var(--font-display);font-weight:700;font-size:1.25rem;letter-spacing:-.02em;margin:0 0 20px;color:var(--ink)}.related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media(max-width:860px){.related-grid{grid-template-columns:1fr}}.rel-card{padding:20px;background:#fff;border:1px solid var(--hairline);border-radius:12px;display:flex;flex-direction:column;gap:8px;transition:.2s}.rel-card:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}.rel-card .kind{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--copper)}.rel-card h4{margin:0;font-family:var(--font-display);font-weight:700;font-size:1rem;letter-spacing:-.015em;color:var(--ink);line-height:1.3}.rel-card p{margin:0;font-size:.8125rem;color:var(--walnut);line-height:1.5}.rel-card .time{margin-top:auto;padding-top:12px;border-top:1px solid var(--hairline-soft);font-size:.75rem;color:var(--stone)}.footer{background:var(--ink);color:#ffffffb3;padding:64px 0 32px}.footer-inner{max-width:1200px;margin:0 auto;padding:0 24px 48px;display:grid;grid-template-columns:2fr 1fr 1fr;gap:48px;border-bottom:1px solid rgba(255,255,255,.08)}.footer-inner h5{font-family:var(--font-mono);font-size:.6875rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#ffffff80;margin:0 0 16px}.footer-inner ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px;font-size:.9375rem}.footer-inner a{color:#ffffffb3}.footer-inner a:hover,.footer-brand .brand-word{color:#fff}.footer-brand .brand-mark{background:var(--copper)}.footer-bottom{max-width:1200px;margin:0 auto;padding:24px;display:flex;justify-content:space-between;font-size:.8125rem;color:#ffffff80;flex-wrap:wrap;gap:16px}
