.sk-book{color:var(--pt-ink);font-family:var(--pt-text);flex-direction:column;gap:36px;display:flex}.sk-head{border-bottom:1px solid var(--pt-hair);grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:32px;padding-bottom:26px;display:grid}.sk-head h1{font-family:var(--pt-display);letter-spacing:-.025em;text-wrap:balance;font-feature-settings:"cv11", "ss01";margin:0;font-size:44px;font-weight:500;line-height:1.04}.sk-head p{color:var(--pt-ink-2);max-width:62ch;margin:14px 0 0;font-size:15.5px;line-height:1.5}.sk-meta{color:var(--pt-titanium);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:13px;line-height:1.5}.sk-meta span{display:block}.sk-toc{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 28px;display:grid}.sk-toc a{border-bottom:1px solid var(--pt-hair-soft);color:inherit;font-family:var(--pt-display);font-feature-settings:"cv11", "ss01";letter-spacing:-.01em;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:10px;padding:9px 0;font-size:14px;font-weight:500;text-decoration:none;display:grid}.sk-toc a span{min-width:0;line-height:1.3}.sk-toc a:hover span{text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px}.sk-toc a:focus-visible{outline:1px solid var(--pt-ink);outline-offset:2px}.sk-toc small{font-family:var(--pt-text);color:var(--pt-titanium);font-variant-numeric:tabular-nums;font-size:12px}.sk-cat{flex-direction:column;display:flex}.sk-sec{border-top:1px solid var(--pt-hair);grid-template-columns:128px minmax(0,1fr);align-items:end;gap:28px;margin-top:12px;padding:30px 0 18px;display:grid}.sk-sec small{color:var(--pt-titanium);font-variant-numeric:tabular-nums;font-size:12.5px;line-height:1.5}.sk-sec small span{display:block}.sk-sec h2{font-family:var(--pt-display);letter-spacing:-.025em;text-wrap:balance;font-feature-settings:"cv11", "ss01";margin:0;font-size:32px;font-weight:500;line-height:1.05}.sk-row{border-bottom:1px solid var(--pt-hair-soft);grid-template-columns:128px minmax(0,1fr);align-items:start;gap:28px;padding:14px 0;scroll-margin-top:20px;display:grid}.sk-cat .sk-row:last-child{border-bottom:0}.sk-n{padding-top:2px}.sk-n b{font-family:var(--pt-display);font-feature-settings:"cv11", "ss01";color:var(--pt-titanium);font-variant-numeric:tabular-nums;font-size:13px;font-weight:500;line-height:1.3;display:block}.sk-row.is-active .sk-n b{color:var(--pt-ink)}.sk-body{min-width:0}.sk-body h3{font-family:var(--pt-display);font-feature-settings:"cv11", "ss01";letter-spacing:-.01em;color:var(--pt-ink);overflow-wrap:anywhere;margin:0;font-size:14px;font-weight:500;line-height:1.3}.sk-body p{max-width:72ch;color:var(--pt-ink-2);margin:6px 0 0;font-size:15px;line-height:1.5}.pt-viewer[data-shell=skills] .pt-grid .pt-thumbs{grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:12px}.pt-viewer[data-shell=skills] .pt-grid .pt-thumbs>.pt-sec-label:not(:first-child){margin-top:14px}.pt-viewer[data-shell=skills] .pt-grid .pt-row{border:1px solid var(--pt-edge);background:var(--pt-paper);min-height:88px;color:var(--pt-ink-2);transition:border-color var(--pt-dur-fast) var(--pt-ease-out);grid-template-columns:minmax(0,1fr);align-content:start;gap:8px;margin:0;padding:12px 14px;display:grid;overflow:visible}.pt-viewer[data-shell=skills] .pt-grid .pt-row:before{content:none}.pt-viewer[data-shell=skills] .pt-grid .pt-row .n{text-align:left;font-size:12px;line-height:1.3}.pt-viewer[data-shell=skills] .pt-grid .pt-row .pt-row-title{font-family:var(--pt-display);font-feature-settings:"cv11", "ss01";letter-spacing:-.01em;-webkit-line-clamp:3;overflow-wrap:anywhere;font-size:14px;font-weight:500;line-height:1.3}.pt-viewer[data-shell=skills] .pt-grid .pt-row:hover,.pt-viewer[data-shell=skills] .pt-grid .pt-row:focus-visible{border-color:var(--pt-ink)}.pt-viewer[data-shell=skills] .pt-grid .pt-row:focus-visible{outline:1px solid var(--pt-ink);outline-offset:2px}.pt-viewer[data-shell=skills] .pt-grid .pt-row.is-active{border-color:var(--pt-ink);outline:1px solid var(--pt-ink);outline-offset:2px}@media (prefers-reduced-motion:reduce){.pt-viewer[data-shell=skills] .pt-grid .pt-row{transition:none}}@media (max-width:900px){.sk-book{gap:24px}.sk-head{grid-template-columns:1fr;gap:12px}.sk-head h1{font-size:32px}.sk-meta{text-align:left}.sk-toc{grid-template-columns:1fr}.sk-sec,.sk-row{grid-template-columns:1fr;gap:8px}.sk-sec h2{font-size:26px}.sk-n{padding-top:0}}.sk-row{color:inherit;text-decoration:none}.sk-row:hover .sk-body h3{text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px}.sk-row:focus-visible{outline:1px solid var(--pt-ink);outline-offset:2px}.sk-raw{text-decoration:none}.ptd-book .ptd-body.sk-doc h2{margin-top:44px}.ptd-book .ptd-body.sk-doc h3{margin-top:28px}.ptd-book .ptd-body.sk-doc>:first-child{margin-top:0}.sk-pager{border-top:1px solid var(--pt-hair);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;padding-top:22px;display:grid}.sk-pager-link{min-width:0;color:inherit;align-items:flex-start;gap:12px;text-decoration:none;display:flex}.sk-pager-link.is-next{text-align:right;justify-content:flex-end}.sk-pager-link svg{fill:currentColor;width:16px;height:16px;color:var(--pt-titanium);flex:none;margin-top:3px}.sk-pager-link span{min-width:0;display:block}.sk-pager-link small{color:var(--pt-titanium);font-size:12.5px;line-height:1.5;display:block}.sk-pager-link b{font-family:var(--pt-display);font-feature-settings:"cv11", "ss01";letter-spacing:-.01em;color:var(--pt-ink);overflow-wrap:anywhere;margin-top:2px;font-size:15px;font-weight:500;line-height:1.3;display:block}.sk-pager-link:hover b{text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px}.sk-pager-link:hover svg{color:var(--pt-ink)}.sk-pager-link:focus-visible{outline:1px solid var(--pt-ink);outline-offset:2px}@media (max-width:900px){.sk-pager{grid-template-columns:1fr;gap:16px}.sk-pager-link.is-next{text-align:left;justify-content:flex-start}.sk-pager-end{display:none}}
