.books-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:16px}.book-card{padding:22px}.book-top{gap:16px;margin-bottom:14px}img.book-spine,.book-spine{width:56px;min-width:56px;height:80px}.book-title{margin-bottom:4px;font-size:16px;line-height:1.3}.book-author{margin-bottom:8px;font-size:12px}.book-cat-tag{font-size:10px}.book-summary{color:var(--text2);font-size:14px;line-height:1.65}.book-section-label{margin-top:14px;font-size:10px}.book-frameworks{flex-direction:column;gap:10px;display:flex}.book-fw-num{margin-top:3px;font-size:10px}.book-fw-text{font-size:13.5px;line-height:1.6}.book-lesson{margin-top:14px;padding:12px 14px;font-size:13.5px;line-height:1.6}button.book-toggle{width:100%;font:inherit;color:inherit;text-align:left;background:0 0;border:0;font-size:12px}.book-fw-btn{border-radius:var(--radius-sm);padding:9px 16px;font-size:11px;line-height:14px}.book-card--revised{border-color:color-mix(in srgb, var(--book-accent) 35%, var(--border))}.book-card--revised .book-fw-btn{color:var(--book-accent);border-color:color-mix(in srgb, var(--book-accent) 40%, transparent)}.book-card--revised .book-fw-num{color:var(--book-accent)}@media (width<=480px){.book-card{padding:18px}.book-summary{font-size:14.5px}}.fw-popup{background:#0e0e0e;max-width:820px}.fw-popup-title{font-size:18px}.fw-popup-author{font-size:12px}.fw-popup-tabs{padding:16px 24px 0}.fw-tab-btn{font-size:12.5px}.fw-popup-body{padding:0 24px 28px;container-type:inline-size}body:has(.fw-popup-overlay.visible) .bottom-nav{display:none}@media (width<=640px){.fw-popup-overlay{align-items:flex-end;padding:0}.fw-popup{border-radius:18px 18px 0 0;max-width:none;max-height:94dvh}.fw-popup-header{padding:18px 18px 0}.fw-popup-tabs{scrollbar-width:none;flex-wrap:nowrap;padding:14px 18px 2px;overflow-x:auto}.fw-popup-tabs::-webkit-scrollbar{display:none}.fw-tab-btn{flex-shrink:0}.fw-popup-svg{margin:14px 18px 0}.fw-popup-body{padding:0 18px 28px}}.fw-popup-svg{container-type:inline-size}.fw-popup-svg .d-narrow{display:none}@container (width<=520px){.fw-popup-svg.has-narrow .d-wide{display:none}.fw-popup-svg.has-narrow .d-narrow{display:block}}.fwp{--c:var(--accent);color:var(--text2);font-size:14.5px;line-height:1.7;animation:.18s both fadeIn}.fwp-meta{flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0 12px;display:flex}.fwp-chip{font-size:10.5px;font-family:var(--font-mono);color:var(--c);border:1px solid color-mix(in srgb, var(--c) 35%, transparent);background:color-mix(in srgb, var(--c) 9%, transparent);border-radius:20px;padding:4px 12px;font-weight:600;display:inline-flex}.fwp h3{font-family:var(--font-head);color:var(--text);letter-spacing:-.01em;margin:0 0 14px;font-size:21px;font-weight:800;line-height:1.25}.fwp-idea{border-left:3px solid var(--c);background:color-mix(in srgb, var(--c) 7%, transparent);color:var(--text);border-radius:0 10px 10px 0;margin:0 0 24px;padding:14px 18px;font-size:16.5px;font-weight:500;line-height:1.55}.fwp-section{margin-top:24px}.fwp-label{font-family:var(--font-mono);color:var(--c);text-transform:uppercase;letter-spacing:.12em;margin-bottom:10px;font-size:10.5px;font-weight:700}.fwp-parts{gap:2px;margin:0;display:grid}.fwp-part{border-top:1px solid var(--border);grid-template-columns:minmax(130px,34%) 1fr;gap:16px;padding:10px 0;display:grid}.fwp-part:first-child{border-top:0;padding-top:0}.fwp-part dt{color:var(--text);font-size:14px;font-weight:700;line-height:1.5}.fwp-part dd{margin:0}.fwp-example{background:var(--bg3);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:14px 16px}.fwp-mechanism{color:var(--text);opacity:.9;margin:0}.fwp-practice{border-left:2px solid color-mix(in srgb, var(--c) 45%, transparent);color:var(--text);margin-top:6px;padding-left:10px;font-size:13.5px;display:block}.fwp-practice b{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--c);opacity:.85;font-size:9.5px;font-weight:700;display:block}.fwp-case{background:var(--bg3);border:1px solid var(--border);color:var(--text);border-radius:10px;margin:0;padding:14px 16px 14px 44px;font-style:italic;position:relative}.fwp-case:before{content:"“";color:var(--c);font-family:Georgia,serif;font-size:38px;font-style:normal;line-height:1;position:absolute;top:4px;left:14px}.fwp-uses{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.fwp-use{background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:14px}.fwp-use:first-child{border-color:color-mix(in srgb, var(--c) 40%, transparent)}.fwp-use p{color:var(--text);margin:0;font-size:13.5px;line-height:1.6}.fwp-use-ctx{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--c);margin-bottom:6px;font-size:10px;font-weight:700}@container (width<=560px){.fwp-uses{grid-template-columns:1fr}}.fwp-steps{counter-reset:step;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.fwp-steps li{counter-increment:step;align-items:flex-start;gap:12px;display:flex}.fwp-steps li:before{content:counter(step);width:24px;height:24px;font-family:var(--font-mono);color:var(--c);background:color-mix(in srgb, var(--c) 12%, transparent);border:1px solid color-mix(in srgb, var(--c) 35%, transparent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;font-size:11px;font-weight:700;display:flex}.fwp-pitfall{color:var(--text);background:color-mix(in srgb, var(--red) 8%, transparent);border:1px solid color-mix(in srgb, var(--red) 30%, transparent);border-radius:10px;padding:14px 16px}.fwp-pitfall .fwp-label{color:var(--red)}.fwp-source{border-top:1px solid var(--border);color:var(--text3);margin-top:24px;padding-top:14px;font-size:12.5px}.fwp-source b{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--c);margin-right:8px;font-size:10px;font-weight:700}@media (width<=560px){.fwp{font-size:15px}.fwp h3{font-size:19px}.fwp-part{grid-template-columns:1fr;gap:2px}}
