.tut-page{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:56px;padding:64px var(--gutter) 80px;max-width:1100px;margin:0 auto}.tut-index{max-width:760px;margin:0 auto;padding:80px var(--gutter)}.tut-prose h1{font-family:var(--font-serif);font-size:clamp(40px,5vw,56px);line-height:1.04;font-weight:700;letter-spacing:-.01em;margin:12px 0 24px}.tut-prose h2{font-family:var(--font-serif);font-size:24px;line-height:1.2;font-weight:700;margin:40px 0 12px}.tut-prose h3{font-family:var(--font-serif);font-size:19px;font-weight:700;margin:28px 0 10px}.tut-prose p{font-size:18px;line-height:1.7;margin:0 0 18px;max-width:65ch}.tut-prose p:first-of-type{font-size:21px;color:var(--muted);line-height:1.55}.tut-prose ul,.tut-prose ol{font-size:18px;line-height:1.7;margin:0 0 18px;padding-left:24px;max-width:65ch}.tut-prose li{margin-bottom:6px}.tut-prose code:not(pre code){font-family:var(--font-mono);font-size:.86em;background:var(--fern);padding:1px 6px;border-radius:3px}.tut-prose a:not(.tut-pn):not(.btn){color:var(--moss);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.tut-label{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--moss);font-weight:500;display:block}figure.tut-code{margin:18px 0;border-radius:4px;overflow:hidden;background:#0f130d}.tut-code-head{display:flex;align-items:center;gap:10px;padding:8px 14px;background:#ffffff0a;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:#f0ead6d9}.tut-code-lang{background:var(--moss-light);color:#0f130d;padding:1px 7px;border-radius:3px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:600}.tut-code-root{opacity:.5}.tut-code-file{opacity:.95}.tut-code-copy{margin-left:auto;background:transparent;border:0;color:inherit;opacity:.55;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;cursor:pointer;padding:4px 6px;min-height:28px}.tut-code-copy:hover,.tut-code-copy:focus-visible{opacity:1;color:var(--moss-light)}figure.tut-code pre{background:#1a1f18!important;color:#f0ead6;padding:14px 18px 16px;margin:0;font-family:var(--font-mono);font-size:13.5px;line-height:1.6;overflow-x:auto}figure.tut-code pre code{background:transparent;padding:0;border-radius:0;font-size:inherit}.tut-rail-inner{position:sticky;top:28px}.tut-rail .tut-label{margin-bottom:14px}.tut-rail ol{list-style:none;padding:0;margin:0}.tut-rail li{border-left:2px solid transparent;padding:3px 0 3px 12px;margin-left:-14px}.tut-rail li a{display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:baseline;font-size:13.5px;color:var(--muted);text-decoration:none;transition:color var(--transition-fast);min-height:44px;padding:3px 0}.tut-rail li a:hover{color:var(--ink)}.tut-rail li .num{font-family:var(--font-mono);font-size:11px;opacity:.7}.tut-rail li.is-current{border-left-color:var(--moss)}.tut-rail li.is-current a{color:var(--ink);font-weight:500}.tut-rail li.is-current .num{color:var(--moss);opacity:1}.tut-prevnext{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:24px}.tut-pn{display:flex;align-items:center;gap:14px;padding:16px 18px;border:1px solid var(--border);border-radius:6px;background:var(--parchment);text-decoration:none;color:var(--ink);transition:border-color var(--transition-fast),background var(--transition-fast);min-height:60px}.tut-pn:hover{border-color:var(--moss);background:var(--fern)}.tut-pn .meta{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);display:block;margin-bottom:2px}.tut-pn .title{font-family:var(--font-serif);font-size:17px;font-weight:500;line-height:1.25}.tut-pn .arrow{font-family:var(--font-mono);font-size:18px;color:var(--moss);flex-shrink:0}.tut-pn.next{justify-content:flex-end;text-align:right;grid-column:2}.tut-commit{margin:36px 0 0;padding:18px 22px;border:1px solid var(--moss);border-radius:6px;background:var(--fern);display:flex;align-items:center;gap:16px}.tut-commit .tut-label{flex-shrink:0}.tut-commit-cmd{font-family:var(--font-mono);font-size:14px;color:var(--ink);background:transparent;padding:0}.tut-index-hero{margin-bottom:56px}.tut-index-hero h1{font-family:var(--font-serif);font-size:clamp(40px,5vw,56px);line-height:1.04;font-weight:700;letter-spacing:-.01em;margin:12px 0 24px}.tut-index-hero .lede{font-size:20px;color:var(--muted);line-height:1.55;max-width:58ch;margin:0 0 32px}.tut-cta-row{display:flex;gap:16px;align-items:center}.tut-index-list{border-top:1px solid var(--border);padding-top:32px}.tut-index-list ol{list-style:none;padding:0;margin:0}.tut-index-list li{border-bottom:1px solid var(--border)}.tut-index-list li:last-child{border-bottom:0}.tut-index-list li a{display:grid;grid-template-columns:70px 1fr auto;gap:18px;align-items:baseline;padding:14px 4px;color:inherit;text-decoration:none;transition:background var(--transition-fast)}.tut-index-list li a:hover{background:#00000005}.tut-index-list li .num{font-family:var(--font-mono);font-size:12px;color:var(--muted);letter-spacing:.06em}.tut-index-list li .title{font-family:var(--font-serif);font-size:22px;line-height:1.2}.tut-index-list li .meta{font-family:var(--font-mono);font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.tut-sheet-scrim{position:fixed;inset:0;background:#1a1f1880;z-index:29}.tut-sheet-pill{position:fixed;right:20px;bottom:20px;z-index:30;display:flex;align-items:center;gap:8px;padding:10px 18px;background:var(--ink);color:var(--parchment);border:none;border-radius:100px;font-family:var(--font-sans);font-size:13px;cursor:pointer;min-height:44px;box-shadow:0 4px 16px #0000004d}.tut-sheet-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--moss-light);flex-shrink:0}.tut-sheet-pill .caret{font-size:10px;opacity:.7}.tut-sheet-panel{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--parchment);border-radius:12px 12px 0 0;box-shadow:0 -4px 32px #00000026;max-height:70vh;overflow-y:auto;padding:16px 24px 32px}.tut-sheet-grip{width:36px;height:4px;background:var(--border-strong);border-radius:2px;margin:0 auto 16px}.tut-sheet-panel .tut-label{margin-bottom:12px}.tut-sheet-panel ol{list-style:none;padding:0;margin:0}.tut-sheet-panel li{border-bottom:1px solid var(--border)}.tut-sheet-panel li:last-child{border-bottom:0}.tut-sheet-panel li a{display:flex;align-items:center;gap:14px;padding:12px 4px;text-decoration:none;color:var(--ink);min-height:44px}.tut-sheet-panel li .num{font-family:var(--font-mono);font-size:11px;color:var(--muted);flex-shrink:0;width:24px}.tut-sheet-panel li .title{font-size:15px}.tut-sheet-panel li.is-current a{color:var(--moss);font-weight:500}@media(max-width:1023px){.tut-page{grid-template-columns:minmax(0,1fr) 200px;gap:32px;padding:48px var(--gutter) 64px}}@media(max-width:767px){.tut-page{grid-template-columns:minmax(0,1fr);gap:0;padding:32px var(--gutter) 96px}.tut-rail{display:none}.tut-prevnext{grid-template-columns:1fr}.tut-pn.next{grid-column:1;justify-content:flex-start;text-align:left}.tut-commit{flex-direction:column;align-items:flex-start;gap:8px}}@media(prefers-reduced-motion:reduce){.tut-pn,.tut-rail li a{transition:none}}.tut-series-grid{display:grid;gap:16px;margin-top:40px}.tut-series-card{border:1px solid var(--fern);border-radius:6px;padding:28px 32px;display:flex;flex-direction:column;gap:6px}.tut-series-card .series-meta{font-size:13px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0}.tut-series-card h2{font-family:var(--font-serif);font-size:22px;font-weight:700;margin:0}.tut-series-card h2 a{color:inherit;text-decoration:none}.tut-series-card h2 a:hover{color:var(--moss)}.tut-series-card .series-subtitle{font-size:14px;color:var(--muted);margin:0}.tut-series-card .series-hook{font-size:16px;color:var(--ink);margin:4px 0 0;max-width:60ch}.tut-series-card .series-start{font-size:14px;color:var(--moss);text-decoration:none;margin-top:8px;display:inline-flex;align-items:center;gap:4px}.tut-series-card .series-start:hover{text-decoration:underline}.tut-rail-back{display:block;font-size:13px;color:var(--muted);text-decoration:none;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--fern)}.tut-rail-back:hover{color:var(--moss)}.tut-sheet-back{display:block;font-size:13px;color:var(--muted);text-decoration:none;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--fern)}.tut-sheet-back:hover{color:var(--moss)}
