.blog-page{background:var(--color-bg);padding-top:140px;--blog-gutter:clamp(1.4rem,7vw,7rem)}.blog-header{margin:0 auto clamp(3rem,6vw,6rem);max-width:1200px;padding:0 1.4rem;text-align:center}.blog-header h1{font-size:clamp(3.5rem,8vw,7.5rem);font-weight:900;letter-spacing:-.06em;margin:1.2rem 0 1.5rem}.blog-introduction{color:var(--color-muted);font-family:var(--font-display);font-size:clamp(1rem,1.4vw,1.25rem);margin-inline:auto;max-width:60ch}.blog-article-cover,.blog-grid,.blog-related{margin-inline:auto;max-width:1680px;padding-inline:var(--blog-gutter)}.blog-grid{display:grid;gap:clamp(3rem,6vw,6rem) clamp(1.5rem,4vw,4rem);grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:clamp(4rem,8vw,8rem)}.blog-card{min-width:0}.blog-card-link{display:block}.blog-card-image{aspect-ratio:4/5}.blog-picture{display:block}.blog-card-image .blog-picture{height:100%}.blog-picture img{width:100%;height:auto}.blog-card-image img{height:100%;object-fit:cover}.blog-card:hover .project-card-image:after,.blog-card:hover .project-card-image>span{opacity:1}.blog-card:hover .project-card-image img{transform:scale(1.04)}.blog-article-meta,.blog-card-meta{color:var(--color-muted);display:flex;flex-wrap:wrap;gap:.65rem 1.4rem;font-size:.65rem;font-weight:500;letter-spacing:.12em;line-height:1.6;text-transform:uppercase}.blog-card-meta{justify-content:space-between;margin:1.35rem 0 .85rem}.blog-card h2{font-size:clamp(1.6rem,2.6vw,2.8rem);line-height:1.16;max-width:24ch;text-wrap:balance}.blog-card p{color:var(--color-muted);margin-top:1rem;max-width:55ch}.blog-read-link{display:inline-block;margin-top:1.3rem}.blog-empty{text-align:center;padding:2rem 1.4rem 6rem}.blog-empty p+p{color:var(--color-muted);margin-top:.5rem}.blog-contact{background:var(--color-surface);border-top:1px solid var(--color-border);padding:clamp(4rem,7vw,7rem) var(--blog-gutter);text-align:center}.blog-contact h2{font-size:clamp(2rem,4.5vw,4.5rem);line-height:1.13;margin:1.4rem auto 2.5rem;max-width:25ch}.blog-contact .outline-button{display:inline-flex;align-items:center;gap:.75rem}.blog-article-header{max-width:1200px;margin:0 auto;padding:0 var(--blog-gutter) clamp(2.5rem,5vw,5rem)}.blog-back{color:var(--color-muted);display:inline-block;font-size:.72rem;margin-bottom:2.8rem}.blog-back:hover{color:var(--color-accent)}.blog-article-header h1{font-size:clamp(2.65rem,5.2vw,5.5rem);line-height:1.08;letter-spacing:-.055em;margin:1.25rem 0 1.5rem;overflow-wrap:anywhere;text-wrap:balance}.blog-article-deck{color:var(--color-muted);font-family:var(--font-display);font-size:clamp(1.1rem,1.7vw,1.5rem);line-height:1.6;max-width:55ch}.blog-article-meta{margin-top:1.8rem}.blog-article-cover{margin-block:0}.blog-article-cover .blog-picture{background:var(--color-surface);max-height:820px;overflow:hidden}.blog-article-cover img{max-height:820px;object-fit:cover}.blog-article-cover figcaption,.blog-prose figcaption{color:var(--color-muted);font-size:.75rem;line-height:1.6;margin-top:.85rem}.blog-reading-layout{display:grid;gap:clamp(2.5rem,5vw,5rem);grid-template-columns:14rem minmax(0,65ch);margin-inline:auto;max-width:1200px;padding:clamp(3rem,6vw,6rem) 1.4rem clamp(4rem,7vw,7rem);justify-content:center}.blog-toc{align-self:start;position:sticky;top:105px;border-top:1px solid var(--color-border);padding-top:1.3rem}.blog-toc .section-label{font-size:.63rem}.blog-toc ol{list-style:none;padding:0;margin:1.3rem 0 0}.blog-toc li{font-size:.8rem;line-height:1.6;margin-top:.8rem}.blog-toc a{color:var(--color-muted)}.blog-toc a:hover{color:var(--color-text)}.blog-prose{min-width:0;max-width:65ch}.blog-prose li,.blog-prose p{font-size:clamp(1rem,1.1vw,1.12rem);line-height:1.85}.blog-prose p+p{margin-top:1.3rem}.blog-prose h2{font-size:clamp(1.65rem,2.6vw,2.5rem);line-height:1.18;margin:3rem 0 1.2rem;scroll-margin-top:100px}.blog-prose>h2:first-child{margin-top:0}.blog-prose h3{font-size:clamp(1.25rem,1.8vw,1.65rem);line-height:1.25;margin:2rem 0 1rem}.blog-prose strong{font-weight:600}.blog-prose ol,.blog-prose ul{margin:1.4rem 0;padding-left:1.3rem}.blog-prose li+li{margin-top:.65rem}.blog-prose a{color:var(--color-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;overflow-wrap:anywhere}.blog-prose figure{margin:2.5rem 0}.blog-prose blockquote{border-left:1px solid var(--color-accent);margin:2.5rem 0;padding-left:1.5rem;color:var(--color-accent);font-style:italic}.blog-prose hr{border:0;border-top:1px solid var(--color-border);margin:2.5rem 0}.blog-table-block{margin:2rem 0;min-width:0}.blog-prose .blog-table-hint{display:none;font-size:.75rem;line-height:1.5;color:var(--color-muted);margin-bottom:.75rem}.blog-table-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;border-block:1px solid var(--color-border)}.blog-table-scroll:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}.blog-prose table{width:100%;min-width:560px;border-collapse:collapse;font-size:.9rem;line-height:1.65}.blog-prose td,.blog-prose th{padding:1rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--color-border)}.blog-prose th{background:var(--color-surface);font-weight:600}.blog-prose tr:last-child td{border-bottom:0}.blog-prose>p:first-child{margin-bottom:1.6rem}.blog-related{border-top:1px solid var(--color-border);padding-block:clamp(3rem,5vw,5rem)}.blog-section-heading h2{font-size:clamp(2rem,3.5vw,3.5rem);margin:1rem 0 2.5rem}.blog-project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1.5rem,4vw,4rem)}.blog-grid-related{padding:0}.blog-project-grid .project-card-image{aspect-ratio:4/3}.blog-page a:focus-visible{outline:2px solid var(--color-accent);outline-offset:5px}@media (max-width:1000px){.blog-reading-layout{grid-template-columns:minmax(0,65ch)}.blog-toc{position:static}.blog-toc ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.5rem}}@media (max-width:700px){.blog-prose .blog-table-hint{display:block}.blog-page{padding-top:115px}.blog-grid,.blog-project-grid{grid-template-columns:1fr}.blog-header h1{font-size:clamp(3.5rem,15vw,5.5rem)}.blog-card-image{aspect-ratio:4/3}.blog-card h2{font-size:1.8rem}.blog-article-header{padding-inline:1.4rem}.blog-article-header h1{font-size:clamp(2.3rem,9vw,3.5rem)}.blog-back{margin-bottom:2rem}.blog-toc ol{grid-template-columns:1fr}.blog-contact .section-label{line-height:1.6}}@media (prefers-reduced-motion:reduce){.blog-card-image img,.blog-card-image span,.blog-card-image:after{transition:none}.blog-card:hover .project-card-image img{transform:none}}