/* The QF Code Handbook interactive edition */
.handbook-cover-art{position:relative;display:flex;min-height:100%;aspect-ratio:3/4;flex-direction:column;justify-content:space-between;overflow:hidden;padding:10%;background:#11151d;color:#fff;border:1px solid rgba(255,255,255,.1);box-shadow:0 22px 55px rgba(18,12,22,.24)}
.handbook-cover-art:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(249,115,22,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(249,115,22,.08) 1px,transparent 1px);background-size:34px 34px;mask-image:linear-gradient(135deg,#000,transparent 82%)}
.handbook-cover-art:after{content:"";position:absolute;width:70%;aspect-ratio:1;right:-28%;bottom:-18%;border-radius:50%;background:radial-gradient(circle,rgba(249,115,22,.8),rgba(140,74,112,.42) 46%,transparent 70%)}
.handbook-cover-art>*{position:relative;z-index:1}.handbook-cover-art .cover-kicker{font:700 clamp(.62rem,1vw,.82rem)/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#fb923c}.handbook-cover-art h3{margin:auto 0 18px;font:800 clamp(2rem,4vw,4rem)/.91 var(--serif);letter-spacing:-.055em}.handbook-cover-art p{margin:0;color:#ddd2dc;font-size:clamp(.78rem,1.25vw,1.02rem);line-height:1.45}.handbook-cover-art .cover-author{margin-top:28px;font:700 .74rem/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#fff}
.handbook-hero{position:relative;overflow:hidden;padding:84px 0 72px;background:#15101b;color:#fff}.handbook-hero:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to right,#000,transparent 84%)}.handbook-hero:after{content:"";position:absolute;width:600px;height:600px;right:-180px;top:-310px;border-radius:50%;background:radial-gradient(circle,rgba(249,115,22,.25),rgba(140,74,112,.2) 43%,transparent 70%)}.handbook-hero .wrap{position:relative;z-index:1}.handbook-hero-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:70px;align-items:center}.handbook-hero h1{max-width:12ch;margin:10px 0 18px;font:800 clamp(3.4rem,7vw,6.7rem)/.88 var(--serif);letter-spacing:-.065em}.handbook-hero .subtitle{max-width:30ch;margin:0 0 22px;color:#f0dfe9;font:600 clamp(1.1rem,2vw,1.4rem)/1.45 var(--sans)}.handbook-hero .lede{max-width:62ch;color:#cbbecb}.handbook-hero .button.secondary{color:#fff;border-color:rgba(255,255,255,.26)}.handbook-status{display:flex;flex-wrap:wrap;gap:9px;margin:24px 0}.handbook-status span{padding:.48rem .7rem;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.055);font:650 .68rem/1.25 var(--mono);letter-spacing:.04em;color:#e4d7e2}.handbook-free-note{margin-top:22px;color:#bfb1bf;font-size:.8rem}.handbook-free-note a{text-decoration:underline;text-underline-offset:3px;color:#fff}
.handbook-home-grid{display:grid;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);gap:38px;align-items:start}.handbook-home-panel{padding:30px;border:1px solid var(--line);background:#fffaf4;box-shadow:0 14px 40px rgba(31,20,36,.07)}.handbook-home-panel h2{margin-top:0}.handbook-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.handbook-feature{padding:24px;border-top:3px solid var(--berry);background:#fffaf4;border-left:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.handbook-feature:nth-child(2){border-top-color:#e66d24}.handbook-feature:nth-child(3){border-top-color:#51448b}.handbook-feature h3{margin:0 0 8px;font:700 1.25rem/1.12 var(--serif)}.handbook-feature p{margin:0;color:var(--muted);font-size:.9rem}.handbook-license-summary{display:grid;grid-template-columns:1fr auto;gap:28px;align-items:center;padding:28px 30px;border:1px solid rgba(140,74,112,.28);background:#f5e9ef}.handbook-license-summary h2{margin:0 0 7px}.handbook-license-summary p{margin:0;color:var(--muted)}
.handbook-progress-card{padding:22px;border:1px solid var(--line);background:#fffaf4}.handbook-progress-card h2{margin:0 0 6px;font:700 1.25rem/1.2 var(--serif)}.progress-track{height:9px;margin:15px 0 8px;overflow:hidden;border-radius:999px;background:#e3d8df}.progress-fill{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--berry),#e66d24);transition:width .2s}.progress-meta{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:.78rem}.progress-clear{border:0;background:transparent;color:var(--plum);padding:0;text-decoration:underline;cursor:pointer}
.handbook-reader{background:linear-gradient(180deg,#efe6dc,var(--paper) 260px)}.handbook-reader-bar{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line);background:rgba(246,240,231,.95);backdrop-filter:blur(10px)}.handbook-reader-bar .wrap{min-height:54px;display:flex;align-items:center;justify-content:space-between;gap:20px}.handbook-reader-bar a{font:700 .72rem/1.3 var(--mono);color:var(--plum)}.handbook-reader-bar nav{display:flex;gap:18px}.handbook-reader-layout{display:grid;grid-template-columns:300px minmax(0,780px);gap:42px;align-items:start;padding:42px 0 76px}.handbook-sidebar{position:sticky;top:78px;max-height:calc(100vh - 98px);overflow:auto;padding:22px;border:1px solid var(--line);background:#fffaf4}.handbook-sidebar-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 16px;padding-bottom:15px;border-bottom:1px solid var(--line);font:700 .78rem/1.3 var(--mono);letter-spacing:.04em}.handbook-toc{display:grid;gap:18px}.handbook-toc section h3{margin:0 0 7px;color:#8c4a70;font:700 .65rem/1.35 var(--mono);letter-spacing:.08em;text-transform:uppercase}.handbook-toc ol{list-style:none;margin:0;padding:0;display:grid;gap:2px}.handbook-toc a{display:flex;align-items:flex-start;gap:7px;padding:5px 7px;border-radius:4px;color:#554a55;font-size:.78rem;line-height:1.35}.handbook-toc a:hover,.handbook-toc a:focus-visible{background:#f0e4eb;color:var(--ink)}.handbook-toc a[aria-current=page]{background:#eadbe4;color:var(--plum);font-weight:750}.toc-check{display:inline-grid;width:14px;height:14px;flex:0 0 14px;margin-top:.08em;place-items:center;border:1px solid #cdbdc7;border-radius:50%;color:transparent;font-size:.55rem}.handbook-toc a.is-complete .toc-check{border-color:#7f5071;background:#7f5071;color:#fff}
.handbook-article{min-width:0;padding:46px clamp(28px,5vw,62px);border:1px solid var(--line);background:#fffdf8;box-shadow:0 18px 55px rgba(31,20,36,.09)}.handbook-article-header{padding-bottom:26px;margin-bottom:34px;border-bottom:1px solid var(--line)}.handbook-article-header .part{margin:0 0 8px;color:var(--berry);font:700 .68rem/1.3 var(--mono);letter-spacing:.09em;text-transform:uppercase}.handbook-article h1{margin:0;font:800 clamp(2.6rem,6vw,4.8rem)/.94 var(--serif);letter-spacing:-.055em}.handbook-article .article-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:17px}.handbook-article .article-meta span{padding:.42rem .62rem;background:#f0e6ec;color:#6e5367;font:650 .65rem/1.2 var(--mono)}.handbook-content{font-size:1.03rem;line-height:1.77}.handbook-content>p,.handbook-content>ul,.handbook-content>ol,.handbook-content>blockquote{max-width:68ch}.handbook-content h2{margin:2.25em 0 .6em;font:750 clamp(1.65rem,3vw,2.25rem)/1.08 var(--serif);letter-spacing:-.03em;scroll-margin-top:82px}.handbook-content h3{margin:1.8em 0 .55em;font:750 1.24rem/1.15 var(--serif);scroll-margin-top:82px}.handbook-content p{margin:0 0 1.2em}.handbook-content ul,.handbook-content ol{padding-left:1.4em;margin:0 0 1.4em}.handbook-content li+li{margin-top:.35em}.handbook-content a{color:var(--plum);text-decoration:underline;text-underline-offset:3px}.handbook-content code:not(pre code){padding:.12em .3em;border:1px solid #ddd0d8;border-radius:3px;background:#f1e8ed;font-family:var(--mono);font-size:.87em;font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0}.handbook-content blockquote{margin:1.6em 0;padding:1px 0 1px 22px;border-left:4px solid var(--rose);color:var(--muted)}
.handbook-code{margin:1.6em 0;border:1px solid #29313e;background:#0e1117;box-shadow:0 10px 26px rgba(12,15,20,.12)}.handbook-code figcaption{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:9px 12px;border-bottom:1px solid #29313e;background:#171c25;color:#9daac0;font:650 .66rem/1.3 var(--mono);letter-spacing:.035em}.code-actions{display:flex;align-items:center;gap:10px}.code-actions button,.code-actions a{border:0;background:transparent;color:#f39450;padding:2px;font:650 .65rem/1.2 var(--mono);text-decoration:none;cursor:pointer}.code-actions button:hover,.code-actions a:hover{text-decoration:underline}.handbook-code pre{margin:0;padding:18px 20px;overflow:auto;color:#e6edf3;font:400 .86rem/1.65 var(--mono);tab-size:4;font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0}.handbook-code code{font:inherit}.qf-keyword{color:#c792ea}.qf-builtin{color:#82aaff}.qf-string{color:#a7d46f}.qf-number{color:#f78c6c}.qf-literal{color:#ffcb6b}.qf-comment{color:#f97316}.output-code{border-color:#d8cbd3;background:#f5eee8}.output-code figcaption{border-color:#d8cbd3;background:#e8dde4;color:#645762}.output-code pre{color:#2f2930;background:#fffaf4}.output-code .code-actions button{color:var(--plum)}
.make-it-yours{max-width:none!important;margin:2em 0!important;padding:22px 24px;border:1px solid rgba(230,109,36,.34);border-left:5px solid #e66d24;background:#fff5eb}.make-it-yours strong{color:#a84613}.chapter-checkpoint{margin:2.3em 0 1.6em;padding:26px;border:1px solid rgba(81,68,139,.28);background:#f1eef9}.chapter-checkpoint h2{margin-top:0}.chapter-next-note{margin-top:2em!important;padding-top:1.2em;border-top:1px solid var(--line);font-weight:650;color:var(--plum)}.chapter-optional-note{max-width:none!important;padding:19px 22px;border:1px solid rgba(140,74,112,.3);background:#f5eaf0}.handbook-version-callout{max-width:none!important;margin:1.6em 0!important;padding:19px 22px;border:1px solid rgba(81,68,139,.3);border-left:5px solid var(--plum);background:#f1eef9}.handbook-version-callout strong{color:var(--plum)}.checkpoint-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:22px 0}.checkpoint-card{padding:18px;border:1px solid rgba(81,68,139,.25);background:#fff}.checkpoint-card h3{margin:0 0 7px;font:750 1.1rem/1.2 var(--serif)}.checkpoint-card p{margin:0 0 14px;color:var(--muted);font-size:.82rem}.checkpoint-card .actions{gap:8px}.checkpoint-card .button{padding:.6rem .76rem;font-size:.72rem}.handbook-local-toc{margin:0 0 30px;padding:20px 22px;border:1px solid var(--line);background:#faf4ee}.handbook-local-toc h2{margin:0 0 10px;font:700 .72rem/1.3 var(--mono);letter-spacing:.07em;text-transform:uppercase}.handbook-local-toc ol{columns:2;gap:25px;margin:0;padding-left:1.2em}.handbook-local-toc li{break-inside:avoid;font-size:.78rem;margin:0 0 5px}.handbook-local-toc a{color:var(--muted);text-decoration:none}.handbook-local-toc a:hover{text-decoration:underline;color:var(--plum)}
.handbook-page-nav{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:center;margin-top:44px;padding-top:26px;border-top:1px solid var(--line)}.handbook-page-nav>a{display:flex;flex-direction:column;gap:2px;color:var(--plum)}.handbook-page-nav>a:last-child{text-align:right}.handbook-page-nav small{color:var(--muted);font:650 .62rem/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase}.handbook-complete-button{border:1px solid var(--berry);border-radius:999px;background:#fff;color:var(--plum);padding:.63rem .85rem;font:700 .67rem/1.2 var(--mono);cursor:pointer}.handbook-complete-button[aria-pressed=true]{background:var(--plum);color:#fff}.handbook-use-notice{margin-top:28px;padding:17px;border:1px solid var(--line);background:#faf4ee;color:#6c606a;font-size:.73rem;line-height:1.55}.handbook-use-notice a{color:var(--plum);text-decoration:underline}
.handbook-download-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.handbook-download-card{padding:27px;border:1px solid var(--line);background:#fffaf4}.handbook-download-card h2{margin:0 0 8px}.handbook-download-card p{color:var(--muted)}.handbook-download-card.coming{opacity:.78}.license-prose h2{scroll-margin-top:90px}.license-prose .permission{padding:20px 22px;border-left:4px solid #4f7b62;background:#edf4ee}.license-prose .restriction{padding:20px 22px;border-left:4px solid #a84613;background:#fff2e8}
.handbook-edition-card{display:grid;grid-template-columns:180px minmax(0,1fr);gap:22px;align-items:start;max-width:none!important;margin:1.8em 0;padding:22px;border:1px solid var(--line);background:#faf4ee}.handbook-edition-card img{display:block;width:100%;height:auto;box-shadow:0 16px 34px rgba(28,17,31,.22)}.handbook-edition-card figcaption{display:grid;gap:10px}.handbook-edition-card h2{margin:0!important;font:750 clamp(1.55rem,2.5vw,2rem)/1.06 var(--serif)!important;letter-spacing:-.03em}.handbook-edition-card p{margin:0!important}.handbook-edition-card .actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
@media(max-width:980px){.handbook-hero-grid,.handbook-home-grid{grid-template-columns:1fr}.handbook-hero .handbook-cover-art{max-width:330px}.handbook-feature-grid{grid-template-columns:1fr}.handbook-reader-layout{grid-template-columns:240px minmax(0,1fr);gap:22px}.handbook-article{padding:38px 34px}}
@media(max-width:780px){.handbook-hero{padding:58px 0 50px}.handbook-hero h1{font-size:clamp(3rem,14vw,5rem)}.handbook-reader-bar{position:static}.handbook-reader-layout{display:block;padding-top:22px}.handbook-sidebar{position:static;max-height:none;margin-bottom:20px}.handbook-sidebar .handbook-toc{display:none}.handbook-sidebar.is-open .handbook-toc{display:grid}.handbook-sidebar-title{margin:0}.handbook-toc-toggle{display:inline-flex!important}.handbook-article{padding:32px 21px}.handbook-local-toc ol{columns:1}.checkpoint-actions,.handbook-download-grid,.handbook-edition-card{grid-template-columns:1fr}.handbook-page-nav{grid-template-columns:1fr}.handbook-page-nav>a:last-child{text-align:left}.handbook-complete-button{justify-self:start}.handbook-license-summary{grid-template-columns:1fr}.handbook-reader-bar nav{gap:10px;font-size:.7rem}}
@media(min-width:781px){.handbook-toc-toggle{display:none!important}}
@media(max-width:520px){.handbook-code figcaption{align-items:flex-start;flex-direction:column}.handbook-code pre{padding:15px 14px;font-size:.79rem}.handbook-status{display:grid}.handbook-article h1{font-size:2.5rem}.handbook-reader-bar .wrap{align-items:flex-start;flex-direction:column;padding-top:10px;padding-bottom:10px}.handbook-reader-bar nav{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.progress-fill{transition:none}}
@media print{.handbook-reader-bar,.handbook-sidebar,.code-actions,.handbook-page-nav,.handbook-complete-button,.handbook-use-notice{display:none!important}.handbook-reader-layout{display:block}.handbook-article{border:0;box-shadow:none;padding:0}.handbook-code{break-inside:avoid}.handbook-code pre{white-space:pre-wrap;color:#000;background:#eee}.handbook-code figcaption{color:#000;background:#ddd}}


/* Handbook checkpoint integration */
.checkpoint-actions-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:1.2rem 0 1.7rem}
.checkpoint-action-card{padding:19px;border:1px solid #d9cad3;background:#fffaf4}
.checkpoint-action-card h3{margin:0 0 6px!important;font:750 1.08rem/1.2 var(--serif)!important}
.checkpoint-action-card p{margin:0 0 13px;color:var(--muted);font-size:.84rem;line-height:1.45}
.checkpoint-button-row{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.checkpoint-button-row .button{padding:.62rem .75rem;font-size:.72rem}
.code-open-ide{display:inline-flex;align-items:center;min-height:30px;padding:0 9px;border:1px solid #475163;border-radius:3px;color:#ffd3b0;text-decoration:none;font:650 .66rem/1 var(--mono)}
.code-open-ide:hover,.code-open-ide:focus-visible{border-color:#f97316;color:#fff;background:#242a35}
.checkpoint-reader-callout{margin:1.3rem 0 1.8rem;padding:20px 22px;border-left:4px solid #e66d24;background:#fff6eb}
.checkpoint-reader-callout h3{margin:0 0 7px!important}
.checkpoint-reader-callout p{margin:0 0 13px}
@media(max-width:680px){.checkpoint-actions-grid{grid-template-columns:1fr}.checkpoint-button-row{display:grid}.checkpoint-button-row .button{justify-content:center;text-align:center}}
