.sfw-btn:focus-visible,.sfw-iconbtn:focus-visible,.sfw-pagination a.page-numbers:focus-visible,.sfw-pager__link:focus-visible,.sfw-searchform button:focus-visible,.auth-modal-close:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.sfw-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;border:1px solid #fff0;border-radius:var(--r-m);background:var(--canvas-2);color:var(--ink);font:600 var(--fs-small) / 1.2 var(--font-text,"Instrument Sans",Arial,sans-serif);text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:#fff0;transition:transform 150ms var(--ease-out),box-shadow 150ms var(--ease-out),background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.sfw-btn svg{width:20px;height:20px;flex:none}.sfw-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-1)}.sfw-btn:active{transform:none;box-shadow:none}.sfw-btn:disabled,.sfw-btn[aria-disabled="true"]{opacity:.5;pointer-events:none;transform:none;box-shadow:none}.sfw-btn.is-primary{background:var(--blue);border-color:var(--blue);color:#fff}.sfw-btn.is-primary:hover{background:var(--blue-text);border-color:var(--blue-text)}.sfw-btn.is-secondary{background:var(--paper);border-color:var(--line-strong);color:var(--ink)}.sfw-btn.is-secondary:hover{border-color:var(--ink-3)}.sfw-btn.is-ghost{background:#fff0;color:var(--ink)}.sfw-btn.is-ghost:hover{background:var(--canvas-2);box-shadow:none}.sfw-btn.is-terminal{background:var(--terminal);border-color:var(--terminal-line);color:var(--on-terminal)}.sfw-btn.is-terminal:hover{background:var(--terminal-2)}.sfw-btn.is-terminal:focus-visible{outline-color:var(--blue-bright)}.sfw-btn.is-pillar{background:var(--pillar,var(--blue));border-color:var(--pillar,var(--blue));color:var(--pillar-on,var(--ink))}.sfw-btn.is-sm{min-height:44px;padding:8px 14px;font-size:var(--fs-caption)}.sfw-btn.is-block{display:flex;width:100%}.sfw-iconbtn{display:inline-grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:var(--r-m);background:#fff0;color:var(--ink);cursor:pointer;-webkit-tap-highlight-color:#fff0;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.sfw-iconbtn svg{width:22px;height:22px}.sfw-iconbtn:hover{background:var(--canvas-2)}.sfw-chip,.sfw-level{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:3px 10px 3px 8px;border-radius:var(--r-pill);background:var(--pillar-soft,var(--canvas-2));color:var(--pillar-text,var(--ink-2));font:500 12px / 1 var(--font-mono,"JetBrains Mono",Consolas,monospace);letter-spacing:.08em;text-transform:uppercase;text-decoration:none;white-space:nowrap}.sfw-chip::before,.sfw-level::before{content:"";width:8px;height:8px;flex:none;border-radius:50%;background:var(--pillar,var(--ink-3))}.sfw-level[data-level]{background:color-mix(in oklab,var(--level,var(--ink-3)) 12%,var(--paper));color:var(--level-text,var(--ink))}.sfw-level[data-level]::before{background:var(--level,var(--ink-3))}a.sfw-chip:hover,a.sfw-level:hover{text-decoration:underline;text-underline-offset:3px}.sfw-dot{display:inline-block;width:8px;height:8px;flex:none;border-radius:50%;background:var(--pillar,var(--blue));vertical-align:middle}.sfw-card{position:relative;padding:var(--space-5);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--shadow-1);transition:transform 220ms var(--ease-out),box-shadow 220ms var(--ease-out)}.sfw-card>:first-child{margin-top:0}.sfw-card>:last-child{margin-bottom:0}.sfw-card.is-terminal{background:var(--terminal);border-color:var(--terminal-line);color:var(--on-terminal);box-shadow:var(--shadow-terminal)}.sfw-card.is-terminal h2,.sfw-card.is-terminal h3,.sfw-card.is-terminal h4{color:var(--on-terminal)}.sfw-card.is-terminal a{color:var(--blue-bright)}.sfw-grid-3,.sfw-grid-2,.sfw-bento{perspective:1200px}@media (hover:hover){.sfw-grid-3 .sfw-card:hover,.sfw-grid-2 .sfw-card:hover,.sfw-bento .sfw-card:hover{transform:translateY(-4px) rotateX(1.5deg) rotateY(-1.5deg);box-shadow:var(--shadow-2)}.sfw-grid-3 .sfw-card.is-terminal:hover,.sfw-grid-2 .sfw-card.is-terminal:hover,.sfw-bento .sfw-card.is-terminal:hover{box-shadow:var(--shadow-terminal)}}.sfw-instrument{background:var(--terminal);color:var(--on-terminal);border:1px solid var(--terminal-line);border-radius:var(--r-l);box-shadow:var(--shadow-terminal)}.sfw-instrument a{color:var(--blue-bright)}.sfw-instrument h2,.sfw-instrument h3,.sfw-instrument h4{color:var(--on-terminal)}.sfw-eyebrow,.sfw-toc h2,.sfw-pager__label{display:inline-flex;align-items:center;gap:8px;margin:0 0 var(--space-3);color:var(--ink-3);font:500 var(--fs-eyebrow) / 1.2 var(--font-mono,"JetBrains Mono",Consolas,monospace);letter-spacing:.1em;text-transform:uppercase}.sfw-eyebrow.has-dot::before{content:"";width:8px;height:8px;flex:none;border-radius:50%;background:var(--pillar,var(--blue))}.is-terminal .sfw-eyebrow,.sfw-instrument .sfw-eyebrow,.sfw-slab .sfw-eyebrow{color:var(--on-terminal-2)}.sfw-section{padding-block:var(--section)}.sfw-section__head{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto;gap:var(--space-2);margin-bottom:var(--space-6)}.sfw-section__head>.sfw-eyebrow{grid-column:1;grid-row:1;margin:0}.sfw-section__head>h2{grid-column:1;grid-row:2;margin:0}.sfw-section__head>.sfw-section__lede,.sfw-section__head>p:not(.sfw-eyebrow){grid-column:1;grid-row:3;margin:var(--space-1) 0 0;max-width:60ch;color:var(--ink-2);font-size:var(--fs-body)}.sfw-section__head>.sfw-section__action{grid-column:1;grid-row:4;margin-top:var(--space-3)}@media (min-width:768px){.sfw-section__head{grid-template-columns:minmax(0,1fr) auto;column-gap:var(--space-6)}.sfw-section__head>.sfw-section__action{grid-column:2;grid-row:1 / 4;align-self:end;margin-top:0}}.sfw-lesson-card{position:relative;display:flex;flex-direction:column;gap:var(--space-3)}.sfw-lesson-card__chips{display:flex;flex-wrap:wrap;gap:6px;margin:0}.sfw-lesson-card__title{margin:0;font:600 1.2rem / 1.3 var(--font-text,"Instrument Sans",Arial,sans-serif);letter-spacing:-.005em}.sfw-lesson-card__title a{color:var(--ink);text-decoration:none}.sfw-lesson-card__title a::after{content:"";position:absolute;inset:0;border-radius:inherit}.sfw-lesson-card__title a:hover{color:var(--pillar-text,var(--blue-text))}.sfw-lesson-card__title a:focus-visible{outline:none}.sfw-lesson-card:has(.sfw-lesson-card__title a:focus-visible){outline:2px solid var(--blue);outline-offset:2px}@supports not selector(:has(a)){.sfw-lesson-card:focus-within{outline:2px solid var(--blue);outline-offset:2px}}.sfw-lesson-card__excerpt{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;margin:0;color:var(--ink-2);font-size:var(--fs-small);line-height:1.5}.sfw-lesson-card__meta{margin:auto 0 0;color:var(--ink-3);font:500 var(--fs-caption) / 1.2 var(--font-mono,"JetBrains Mono",Consolas,monospace)}.sfw-pagination{margin-top:var(--space-7)}.sfw-pagination .screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.sfw-pagination .nav-links{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.sfw-pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--paper);color:var(--ink);font:500 var(--fs-small) / 1 var(--font-mono,"JetBrains Mono",Consolas,monospace);text-decoration:none;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.sfw-pagination a.page-numbers:hover{background:var(--canvas-2);border-color:var(--line-strong)}.sfw-pagination .page-numbers.current{background:var(--blue);border-color:var(--blue);color:#fff}.sfw-pagination .page-numbers.dots{border-color:#fff0;background:#fff0;color:var(--ink-3)}.sfw-pager{display:grid;gap:var(--space-4);margin-block:var(--space-7)}.sfw-pager__link{display:flex;flex-direction:column;gap:6px;padding:var(--space-4) var(--space-5);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--shadow-1);color:var(--ink);text-decoration:none;transition:transform 220ms var(--ease-out),box-shadow 220ms var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.sfw-pager__link:hover{transform:translateY(-2px);box-shadow:var(--shadow-2);border-color:var(--pillar,var(--blue))}.sfw-pager__label{gap:6px;margin:0}.sfw-pager__title{margin:0;font:600 var(--fs-h4) / 1.3 var(--font-text,"Instrument Sans",Arial,sans-serif)}.sfw-pager__link.is-next{text-align:right;align-items:flex-end}@media (min-width:640px){.sfw-pager{grid-template-columns:1fr 1fr}.sfw-pager__link.is-prev{grid-column:1}.sfw-pager__link.is-next{grid-column:2}}.sfw-toc{position:sticky;top:calc(var(--sticky-top, 108px) + var(--space-4))}.sfw-toc[hidden]{display:none}.sfw-toc h2{display:block}.sfw-toc ol{list-style:none;margin:0;padding:0;border-left:2px solid var(--line)}.sfw-toc li{margin:0}.sfw-toc a{display:block;margin-left:-2px;padding:6px 0 6px 14px;border-left:2px solid #fff0;color:var(--ink-2);font-size:var(--fs-small);line-height:1.4;text-decoration:none;transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.sfw-toc a:hover{color:var(--ink)}.sfw-toc a:focus-visible{outline:2px solid var(--blue);outline-offset:-2px;border-radius:4px}.sfw-toc .is-active>a,.sfw-toc a.is-active{color:var(--pillar-text,var(--blue-text));font-weight:600;border-left-color:var(--pillar,var(--blue))}.sfw-progress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:calc(var(--z-header, 100) + 1);pointer-events:none}.sfw-progress i{display:block;height:100%;background:var(--pillar,var(--blue));transform-origin:left;transform:scaleX(0)}.sfw-form label{display:block;margin-bottom:6px;color:var(--ink);font-size:var(--fs-small);font-weight:600}.sfw-form input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]),.sfw-form select,.sfw-form textarea{display:block;width:100%;min-height:48px;padding:10px 14px;border:1px solid var(--line-strong);border-radius:var(--r-s);background:var(--paper);color:var(--ink);font:400 var(--fs-body) / 1.4 var(--font-text,"Instrument Sans",Arial,sans-serif);transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.sfw-form textarea{min-height:120px;resize:vertical}.sfw-form input::placeholder,.sfw-form textarea::placeholder{color:var(--ink-3)}.sfw-form input:focus,.sfw-form select:focus,.sfw-form textarea:focus{border-color:var(--blue);box-shadow:var(--focus-ring)}.sfw-form input:focus-visible,.sfw-form select:focus-visible,.sfw-form textarea:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.sfw-form input[type="checkbox"],.sfw-form input[type="radio"]{width:18px;height:18px;margin:0 8px 0 0;flex:none;accent-color:var(--blue);vertical-align:middle}.auth-form-group{margin-bottom:var(--space-4)}.auth-form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.sfw-form .is-error{color:var(--coral-text)}.sfw-form .is-success{color:var(--mint-text)}.sfw-form input.is-error,.sfw-form textarea.is-error{border-color:var(--coral)}.sfw-form .sfw-btn{min-height:48px}.auth-form [type="submit"]{width:100%}@media (max-width:479.98px){.auth-form-row{grid-template-columns:1fr}}.sfw-searchform{display:flex;align-items:stretch;gap:8px}.sfw-searchform input[type="search"]{flex:1 1 auto;min-width:0;min-height:48px;padding:10px 14px;border:1px solid var(--line-strong);border-radius:var(--r-s);background:var(--paper);color:var(--ink);font:400 var(--fs-body) / 1.4 var(--font-text,"Instrument Sans",Arial,sans-serif);-webkit-appearance:none;appearance:none;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.sfw-searchform input[type="search"]::placeholder{color:var(--ink-3)}.sfw-searchform input[type="search"]:focus{border-color:var(--blue);box-shadow:var(--focus-ring)}.sfw-searchform input[type="search"]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.sfw-searchform button{display:grid;place-items:center;flex:none;width:48px;height:48px;padding:0;border:0;border-radius:var(--r-s);background:var(--blue);color:#fff;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}.sfw-searchform button svg{width:22px;height:22px}.sfw-searchform button:hover{background:var(--blue-text)}.auth-modal{position:fixed;inset:0;z-index:var(--z-modal,300);display:none;padding:var(--space-4)}.auth-modal[aria-hidden="true"]{display:none}.auth-modal.is-open,.auth-modal.active{display:grid;place-items:center}.auth-modal-overlay{position:absolute;inset:0;background:rgb(14 17 48 / .55)}.auth-modal-container{position:relative;width:100%;max-width:440px;max-height:calc(100vh - 2 * var(--space-4));overflow-y:auto;padding:var(--space-6) var(--space-5) var(--space-5);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--shadow-2);color:var(--ink)}.auth-modal-close{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:var(--r-m);background:#fff0;color:var(--ink-2);font-size:24px;line-height:1;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.auth-modal-close:hover{background:var(--canvas-2);color:var(--ink)}.auth-modal-header{margin:0 0 var(--space-5);padding-right:var(--space-6);text-align:center}.auth-modal-header h2,.auth-modal-title{margin:0 0 6px;color:var(--ink);font:720 1.5rem / 1.2 var(--font-display,"Bricolage Grotesque","Arial Narrow",Arial,sans-serif);font-stretch:92%;letter-spacing:-.01em}.auth-modal-header p:not(.auth-modal-title),.auth-modal-lede{margin:0;color:var(--ink-2);font-size:var(--fs-small)}.auth-form-help{margin:6px 0 0;color:var(--ink-3);font-size:var(--fs-caption)}.auth-form-options{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin-bottom:var(--space-4);font-size:var(--fs-small)}.auth-checkbox{display:inline-flex;align-items:center;gap:8px;margin:0;font-weight:400}.auth-forgot,.auth-switch{padding:0;border:0;background:none;color:var(--blue-text);font:inherit;font-weight:600;cursor:pointer}.auth-forgot:hover,.auth-switch:hover{text-decoration:underline;text-underline-offset:3px}.auth-form-message{display:none;margin:0 0 var(--space-4);padding:10px 14px;border-radius:var(--r-s);background:var(--canvas-2);color:var(--ink);font-size:var(--fs-small)}.auth-form-message.show{display:block}.auth-form-message.error,.auth-form-message.is-error{background:var(--coral-soft);color:var(--coral-text)}.auth-form-message.success,.auth-form-message.is-success{background:var(--mint-soft);color:var(--mint-text)}.auth-modal-footer{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--line);color:var(--ink-2);font-size:var(--fs-small);text-align:center}.auth-modal-footer p{margin:0}.auth-form.loading [type="submit"],.auth-form.is-loading [type="submit"]{opacity:.7;pointer-events:none}@media (max-width:479.98px){.auth-modal{padding:var(--space-2)}.auth-modal-container{max-height:calc(100vh - 2 * var(--space-2));padding:var(--space-6) var(--space-4) var(--space-4)}}.sfw-table{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.sfw-table>table{margin:0}@media (prefers-reduced-motion:reduce){.sfw-btn,.sfw-card,.sfw-pager__link{transition:none}.sfw-btn:hover,.sfw-pager__link:hover,.sfw-grid-3 .sfw-card:hover,.sfw-grid-2 .sfw-card:hover,.sfw-bento .sfw-card:hover{transform:none}}.sfw-breadcrumbs{margin:var(--space-4) 0 var(--space-3);font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-3)}.sfw-breadcrumbs ol{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-2);margin:0;padding:0;list-style:none}.sfw-breadcrumbs li{display:flex;align-items:center;gap:var(--space-2)}.sfw-breadcrumbs li+li::before{content:"/";color:var(--line-strong)}.sfw-breadcrumbs a{color:var(--ink-2);text-decoration:none}.sfw-breadcrumbs a:hover{color:var(--ink);text-decoration:underline}.sfw-breadcrumbs [aria-current="page"]{color:var(--ink-3)}.sfw-authorbox{margin:var(--space-7) 0 0;padding:var(--space-5);background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:var(--r-l);box-shadow:var(--shadow-1)}.sfw-authorbox__name{margin:var(--space-1) 0 var(--space-3);font-family:var(--font-display);font-size:var(--fs-h4);line-height:var(--lh-h4);color:var(--ink)}.sfw-authorbox__name a{color:inherit;text-decoration:none}.sfw-authorbox__name a:hover{text-decoration:underline}.sfw-authorbox__bio{max-width:var(--measure);color:var(--ink-2);font-size:var(--fs-body);line-height:var(--lh-body)}.sfw-authorbox__bio p{margin:0 0 var(--space-3)}.sfw-authorbox__bio p:last-child{margin-bottom:0}.sfw-authorbox__links{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-4) 0 0;font-size:var(--fs-small);color:var(--ink-3)}.sfw-authorbox__links a{color:var(--ink-2)}