:root{color-scheme:light dark;--bg:light-dark(#faf9f6,#22221f);--surface-soft:light-dark(#f0eee9,#2d2d28);--ink:light-dark(#292823,#e5e3db);--ink-soft:light-dark(#56554f,#c3c0b7);--ink-muted:light-dark(#706e67,#aaa79e);--line:light-dark(#ddd9d1,#45443d);--accent:light-dark(#a83d30,#e2917e);--accent-soft:light-dark(#f4e7e2,#48302a);--footer-bg:#292823;--footer-ink:#faf9f6;--footer-ink-muted:#c3c0b7;--footer-line:#56554f;--code-bg:light-dark(#f0eee9,#2d2d28);--avatar-filter:grayscale(1);--avatar-blend:multiply;--avatar-opacity:1;--max-width:1040px;--reading-width:720px;--page-inset:40px;--header-height:80px;--layer-header:20;--layer-skip-link:30;--label-width:136px;--avatar-size:176px;--sans:"Helvetica Neue", "Hiragino Kaku Gothic ProN", "PingFang SC", "Microsoft YaHei", Arial, sans-serif;--display:"Iowan Old Style", "Yu Mincho", "Hiragino Mincho ProN", "Songti SC", "Noto Serif CJK SC", serif;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--text-small:.8125rem;--text-meta:.75rem;--icon-size:16px;--icon-stroke:1.5;--text-body:1rem;--text-lead:1.0625rem;--text-title:1.375rem;--text-section:1.1875rem;--text-display:clamp(2rem, 3.2vw, 2.75rem);--space-1:.5rem;--space-2:1rem;--space-3:1.5rem;--space-4:2rem;--space-5:3rem;--space-6:4rem;--space-7:6rem;--radius:2px;--transition:.18s ease;font-family:var(--sans);color:var(--ink);background:var(--bg);text-rendering:optimizelegibility}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + var(--space-4))}body{min-width:320px;font-size:var(--text-body);background:var(--bg);margin:0;line-height:1.9}a{color:var(--accent);transition:color var(--transition);text-decoration:none}a:hover{text-underline-offset:5px;text-decoration:underline 1px}a:active{opacity:.75}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:var(--accent-soft);color:var(--ink)}img{max-width:100%;height:auto;display:block}h1,h2,h3,p{overflow-wrap:break-word}h1,h2,h3{text-wrap:pretty}p{margin:0 0 var(--space-3)}.site-shell{min-height:100dvh;padding-top:var(--header-height);flex-direction:column;display:flex}main{flex:1;position:relative}.container,.header-inner,.footer-inner{width:min(calc(100% - var(--page-inset) * 2), var(--max-width));margin-inline:auto}.skip-link{top:var(--space-2);left:var(--space-2);padding:var(--space-1) var(--space-2);background:var(--bg);border:1px solid var(--accent);z-index:var(--layer-skip-link);position:fixed;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}site-navigation{display:block}.site-header{height:var(--header-height);z-index:var(--layer-header);background:var(--bg);border-bottom:1px solid var(--line);transform:translateY(calc(var(--header-collapse,0) * -100%));position:fixed;inset:0 0 auto}.site-header:focus-within{transform:translateY(0)}.header-inner{justify-content:space-between;align-items:center;gap:var(--space-3);height:100%;display:flex}.header-tools{align-items:center;gap:var(--space-1);flex-shrink:0;display:flex}.header-icon-button{--header-control-size:44px;width:var(--header-control-size);height:var(--header-control-size);border-radius:var(--radius);color:var(--ink-soft);cursor:pointer;transition:color var(--transition), background-color var(--transition);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.header-icon-button:hover,.header-icon-button:focus-visible{color:var(--accent);background:var(--surface-soft)}.brand{align-items:center;gap:var(--space-2);min-height:44px;color:var(--ink);display:inline-flex}.brand:hover{color:var(--ink);text-decoration:none}.brand-mark{background:var(--ink);width:30px;height:30px;color:var(--bg);border-radius:var(--radius);font:600 .65rem/1 var(--mono);place-items:center;display:grid}.brand-name{font-size:var(--text-small);letter-spacing:.06em}.site-nav{align-items:center;gap:var(--space-3);display:flex}.header-inner .site-nav{margin-left:auto}html:lang(en){--sans:"Helvetica Neue", Arial, sans-serif}html:lang(zh-Hant){--sans:"Helvetica Neue", "PingFang TC", "Microsoft JhengHei", sans-serif;--display:"Iowan Old Style", "Songti TC", "Noto Serif CJK TC", serif}html:lang(ja){--sans:"Helvetica Neue", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;--display:"Iowan Old Style", "Yu Mincho", "Hiragino Mincho ProN", serif}.nav-link{min-width:44px;min-height:44px;color:var(--ink-soft);font-size:var(--text-small);letter-spacing:.08em;justify-content:center;align-items:center;display:inline-flex;position:relative}.nav-link:after{background:var(--accent);content:"";height:1px;transition:transform var(--transition);position:absolute;bottom:4px;left:0;right:0;transform:scaleX(0)}.nav-link:hover,.nav-link[aria-current=page]{color:var(--accent);text-decoration:none}.nav-link:hover:after,.nav-link[aria-current=page]:after{transform:scaleX(1)}.more-link{align-items:center;gap:var(--space-1);min-height:44px;font-size:var(--text-small);letter-spacing:.025em;display:inline-flex}.ui-icon{width:var(--icon-size);height:var(--icon-size);stroke-width:var(--icon-stroke);flex-shrink:0;display:block}img[data-preview-image]{cursor:zoom-in}img[data-preview-image]:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.link-arrow{transition:transform var(--transition)}.more-link:hover .link-arrow,.more-link:focus-visible .link-arrow{transform:translate(3px)}.more-link-back:hover .link-arrow,.more-link-back:focus-visible .link-arrow{transform:translate(-3px)}.author-intro{grid-template-columns:minmax(0, 1fr) var(--avatar-size);gap:var(--space-6);padding-block:var(--space-7);align-items:center;display:grid}.author-intro h1{margin:0 0 var(--space-3);font:500 var(--text-display)/1.5 var(--display);letter-spacing:.025em}.author-intro p{max-width:36em;margin-bottom:var(--space-2);color:var(--ink-soft);font-size:var(--text-lead)}.intro-links{gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.profile-link{min-height:44px;padding:var(--space-1) var(--space-3);border-radius:var(--radius);color:var(--accent);font-size:var(--text-small);letter-spacing:.025em;transition:color var(--transition), background-color var(--transition), border-color var(--transition);background:0 0;border:1px solid;justify-content:center;align-items:center;display:inline-flex}.profile-link:hover,.profile-link:focus-visible{color:var(--bg);background:var(--accent);border-color:var(--accent);text-decoration:none}.profile-avatar{width:var(--avatar-size);height:var(--avatar-size);object-fit:cover;aspect-ratio:1;filter:var(--avatar-filter);mix-blend-mode:var(--avatar-blend);opacity:var(--avatar-opacity)}.editorial-section{grid-template-columns:var(--label-width) minmax(0, 1fr);gap:var(--space-5);padding-block:var(--space-5);border-top:1px solid var(--line);display:grid}.editorial-section:last-child{padding-bottom:var(--space-7)}.section-label h2{margin:0 0 var(--space-1);font-size:var(--text-body);letter-spacing:.1em;font-weight:500}.section-label .more-link{color:var(--ink-muted);font-size:var(--text-meta)}.about-content{min-width:0}.about-content p{color:var(--ink-soft)}.article-list{min-width:0}.article-card{gap:var(--space-3);padding-block:var(--space-4);color:var(--ink);grid-template-columns:minmax(0,1fr) 20px;display:grid}.article-card:first-child{padding-top:0}.article-card+.article-card{border-top:1px solid var(--line)}.article-card:last-child{padding-bottom:0}.article-card:hover{text-decoration:none}.article-card h2,.article-card h3{margin:0 0 var(--space-1);font-size:var(--text-title);letter-spacing:.025em;transition:color var(--transition);font-weight:500;line-height:1.65}.article-card:hover h2,.article-card:hover h3,.article-card:focus-visible h2,.article-card:focus-visible h3{color:var(--accent)}.article-card p{color:var(--ink-soft);font-size:var(--text-small);margin:0}.article-card-meta{gap:var(--space-1) var(--space-3);margin-top:var(--space-2);color:var(--ink-muted);font-size:var(--text-meta);flex-wrap:wrap;display:flex}.article-arrow{color:var(--ink-muted);transition:color var(--transition), transform var(--transition);padding-top:4px}.article-card:hover .article-arrow,.article-card:focus-visible .article-arrow{color:var(--accent);transform:translate(2px,-2px)}.empty-state{color:var(--ink-soft);padding-block:var(--space-4)}.page-hero{padding-block:var(--space-6);max-width:var(--reading-width)}.section-title{font:500 var(--text-display)/1.5 var(--display);letter-spacing:.06em;margin:0}.page-hero>p{margin:var(--space-3) 0 0;color:var(--ink-soft)}.page-hero>.more-link{margin-top:var(--space-2)}.listing-section{border-top:1px solid var(--line);padding-block:var(--space-5) var(--space-7)}.tag-row{gap:var(--space-1) var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.tag{color:var(--ink-muted);font-size:var(--text-meta)}.domain-tags{gap:var(--space-1) 0;margin-bottom:0;padding:0;list-style:none}.domain-tag{color:var(--ink-soft);font-size:var(--text-small);letter-spacing:.04em;white-space:nowrap;align-items:center;font-weight:500;line-height:1.6;display:inline-flex}.domain-tag+.domain-tag:before{content:"";width:1px;height:.75em;margin-inline:var(--space-2);background:var(--line)}.project-list-card{grid-template-columns:var(--label-width) minmax(0, 1fr) 20px;gap:var(--space-5);padding-block:var(--space-5)}.project-list-card:first-child{padding-top:0}.project-list-card:last-child{padding-bottom:0}.project-list-category{color:var(--ink-muted);font-size:var(--text-small);padding-top:5px}.project-list-card h2{margin-bottom:var(--space-2);font:500 var(--text-title)/1.5 var(--display);letter-spacing:.025em}.project-list-name,.project-list-purpose{display:block}.project-list-purpose{color:var(--ink-soft);font:400 var(--text-body)/1.7 var(--sans);letter-spacing:0;margin-top:3px}.project-list-card p{max-width:52em;line-height:1.85}.project-list-card .article-card-meta{margin-top:var(--space-2)}.project-audience{color:var(--ink-soft)}.project-shell{padding-block:var(--space-5) var(--space-7)}.project-header{padding-bottom:var(--space-5);border-bottom:1px solid var(--line)}.project-header h1{margin:0 0 var(--space-3);font:500 var(--text-display)/1.5 var(--display);letter-spacing:.025em}.project-header h1>span{margin-top:var(--space-1);font-size:var(--text-title);letter-spacing:.02em;line-height:1.7;display:block}.project-kicker{margin:0 0 var(--space-2);color:var(--accent);font-size:var(--text-small);letter-spacing:.08em}.project-flow{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--surface-soft)}.project-flow h2{margin:0 0 var(--space-2);font:500 var(--text-section)/1.6 var(--display);letter-spacing:.04em;color:var(--ink-muted);font:500 var(--text-small)/1.8 var(--sans)}.project-flow ol{gap:var(--space-1) var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.project-flow li{align-items:center;gap:var(--space-2);color:var(--ink);font-size:var(--text-body);display:inline-flex}.project-flow .ui-icon{color:var(--accent)}.recommendation-card{justify-content:space-between;align-items:center;gap:var(--space-3);min-width:0;padding:var(--space-2) var(--space-3);border-inline-start:2px solid var(--accent);color:var(--ink);background:var(--surface-soft);transition:color var(--transition), border-color var(--transition), background var(--transition), transform var(--transition);display:flex}.recommendation-card+.recommendation-card{margin-top:2px}.recommendation-card-copy{gap:var(--space-1);min-width:0;display:grid}.recommendation-card-label{color:var(--ink-muted);font:400 var(--text-meta)/1.5 var(--sans);letter-spacing:.06em}.recommendation-card-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:500 var(--text-body)/1.5 var(--display);display:block;overflow:hidden}.recommendation-card .ui-icon{color:var(--ink-muted);transition:color var(--transition), transform var(--transition);flex-shrink:0}.recommendation-card:hover,.recommendation-card:focus-visible{color:var(--accent);border-color:var(--accent);background:var(--accent-soft);text-decoration:none;transform:translate(2px)}.recommendation-card:hover .ui-icon,.recommendation-card:focus-visible .ui-icon{color:var(--accent);transform:translate(2px,-2px)}.content-end .content-end-grid>.related-content{border-top:0;margin-top:0;padding-top:0}.article-back{margin-bottom:var(--space-4)}.article-header{padding-bottom:var(--space-4);border-bottom:1px solid var(--line)}.article-header h1{margin:0 0 var(--space-3);font:500 clamp(1.75rem, 3vw, 2.375rem)/1.65 var(--display);letter-spacing:.03em}.article-description{color:var(--ink-soft);font-size:var(--text-body);margin:0}.article-meta{gap:var(--space-1) var(--space-3);margin-top:var(--space-3);color:var(--ink-muted);font-size:var(--text-meta);flex-wrap:wrap;display:flex}.article-body{padding-top:var(--space-4);overflow-wrap:anywhere;line-height:2}.article-body h2{margin:var(--space-5) 0 var(--space-3);font:600 var(--text-title)/1.65 var(--display);color:var(--ink);letter-spacing:.025em}.article-body h3{margin:var(--space-4) 0 var(--space-2);font-size:var(--text-section);font-weight:600}.article-body>:first-child{margin-top:0}.article-body p{margin-block:0 var(--space-3)}.article-body ul,.article-body ol{padding-left:var(--space-3);margin-block:var(--space-2) var(--space-3)}.article-body li{padding-left:var(--space-1);margin-bottom:var(--space-1)}.article-body strong{font-weight:600}.article-body a{text-underline-offset:4px;text-decoration:underline}.article-body blockquote{margin:var(--space-4) 0;padding:var(--space-1) var(--space-3);border-left:2px solid var(--accent);color:var(--ink-soft);background:var(--surface-soft)}.article-body blockquote p:last-child{margin-bottom:0}.article-body code{background:var(--code-bg);border-radius:var(--radius);font:.85em/1.7 var(--mono);padding:.15em .35em}.article-body pre{max-width:100%;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius);background:var(--code-bg);color:var(--ink);font-size:var(--text-small);overflow-wrap:normal;line-height:1.8;overflow-x:auto}.article-body pre code{color:inherit;background:0 0;padding:0}.article-body table{width:max-content;min-width:100%;max-width:100%;margin-block:var(--space-4);border-collapse:collapse;font-size:var(--text-small);display:block;overflow-x:auto}.article-body th,.article-body td{padding:var(--space-2);border-bottom:1px solid var(--line);vertical-align:top;text-align:left}.article-body th{background:var(--surface-soft);font-weight:600}.article-body hr{border:0;border-top:1px solid var(--line);margin-block:var(--space-5)}.project-body{padding-top:var(--space-5);color:var(--ink-soft)}.project-body h2{margin-top:var(--space-6);margin-bottom:var(--space-3);font-weight:500}.project-body>:first-child{color:var(--ink);margin-top:0}.project-body table{table-layout:fixed;width:100%;line-height:1.9;display:table}.project-body th,.project-body td{padding:var(--space-2) var(--space-3)}.project-body th{color:var(--ink-muted);font-size:var(--text-meta);font-weight:500}.project-body th:first-child,.project-body td:first-child{width:24%;color:var(--ink);padding-left:0}.project-body th:last-child,.project-body td:last-child{padding-right:0}.project-body th{background:0 0}.project-gallery{--gallery-image-height:380px;align-items:start;gap:var(--space-5);margin-block:var(--space-5) var(--space-6);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.project-gallery figure{width:100%;min-width:0;margin:0}.project-gallery--four{gap:var(--space-3);grid-template-columns:repeat(4,minmax(0,1fr))}.project-gallery img{width:100%;height:var(--gallery-image-height);object-fit:contain;background:0 0;border:0;border-radius:0;display:block}.project-gallery figcaption{margin-top:var(--space-2);color:var(--ink-soft);font-size:var(--text-small);text-align:center;line-height:1.8}@media (width<=767px){.project-gallery{--gallery-image-height:320px;align-items:start;gap:var(--space-3);scroll-snap-type:x mandatory;overscroll-behavior-x:contain;margin-block:var(--space-4);padding-bottom:var(--space-2);display:flex;overflow-x:auto}.project-gallery figure{scroll-snap-align:center;flex:0 0 min(68vw,224px)}}.site-footer{background:var(--footer-bg);color:var(--footer-ink);font-size:var(--text-small);position:relative}.header-retract-trigger{top:calc(-1 * var(--header-height));width:1px;height:calc(2 * var(--header-height));pointer-events:none;position:absolute}.site-footer p{margin:0}.footer-main{gap:var(--space-5);padding-block:var(--space-5);grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1.2fr);display:grid}.site-footer .footer-name{margin-bottom:var(--space-1);font:500 var(--text-title)/1.5 var(--display);letter-spacing:.015em}.footer-description{color:var(--footer-ink-muted);line-height:1.9}.footer-heading{margin:0 0 var(--space-2);font-size:var(--text-meta);color:var(--footer-ink-muted);letter-spacing:.06em;font-weight:500}.footer-nav-links{column-gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.footer-social-links{gap:var(--space-3);flex-wrap:wrap;display:flex}.site-footer a{align-items:center;gap:var(--space-1);width:fit-content;max-width:100%;min-height:44px;color:var(--footer-ink);text-underline-offset:5px;transition:text-decoration-color var(--transition);text-decoration:underline #0000;display:inline-flex}.site-footer a:hover,.site-footer a:focus-visible{text-decoration-color:currentColor}.site-footer a:focus-visible{outline-color:var(--footer-ink)}.site-footer .footer-email{color:var(--footer-ink-muted)}.footer-email span{overflow-wrap:anywhere}.footer-bottom{justify-content:space-between;align-items:center;gap:var(--space-3);padding-block:var(--space-2);border-top:1px solid var(--footer-line);display:flex}.footer-copyright{color:var(--footer-ink-muted);font-size:var(--text-meta)}.footer-copyright span{display:inline-block}.site-footer .footer-top-link{color:var(--footer-ink-muted);font-size:var(--text-meta);flex-shrink:0}@media screen{:root[data-theme=dark]{--avatar-filter:grayscale(1) invert(1);--avatar-blend:screen;--avatar-opacity:.85}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}@media screen and (prefers-color-scheme:dark){:root:not([data-theme]){--avatar-filter:grayscale(1) invert(1);--avatar-blend:screen;--avatar-opacity:.85}:root:not([data-theme]) .astro-code,:root:not([data-theme]) .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}@media (width<=1024px){:root{--label-width:112px;--avatar-size:144px}.author-intro{gap:var(--space-4)}}@media (width<=767px){:root{--page-inset:24px;--avatar-size:104px;--text-title:1.1875rem;--text-display:2rem}body{overflow-x:hidden}.container,.header-inner,.footer-inner{width:calc(100vw - var(--page-inset) * 2);min-width:0;max-width:none}.site-nav{flex:1;justify-content:flex-end;gap:0}.nav-link{min-width:40px;min-height:40px;font-size:var(--text-meta);letter-spacing:0;white-space:nowrap;padding-inline:2px}:root{--header-height:112px}.header-inner{gap:0 var(--space-2);grid-template-rows:60px 52px;grid-template-columns:minmax(0,1fr) auto;display:grid}.header-inner .brand{gap:var(--space-1);grid-area:1/1;width:fit-content}.header-inner .brand-name{font-size:var(--text-meta);display:inline}.header-inner .header-tools{grid-area:1/2}.header-inner .site-nav{grid-area:2/1/auto/-1;justify-content:space-between;align-self:start;width:100%;margin:0}.header-inner .nav-link{min-height:44px;padding-inline:var(--space-1)}.author-intro{grid-template-columns:minmax(0, 1fr) var(--avatar-size);padding-block:var(--space-5);gap:var(--space-3);align-items:start}.author-intro h1{font-size:1.75rem}.author-intro p{font-size:var(--text-body)}.editorial-section{gap:var(--space-3);grid-template-columns:1fr}.section-label{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.section-label h2{margin:0}.article-card{column-gap:var(--space-2);row-gap:var(--space-1);grid-template-columns:minmax(0,1fr) 20px}.page-hero{padding-block:var(--space-5)}.project-list-card{gap:var(--space-1) var(--space-2);grid-template-columns:minmax(0,1fr) 20px}.project-list-category{font-size:var(--text-meta);grid-column:1;padding:0}.project-list-card .article-card-content{grid-column:1}.project-list-card .article-arrow{grid-area:2/2}.project-header{padding-bottom:var(--space-4)}.project-header h1{font-size:var(--text-display)}.project-header h1>span{font-size:var(--text-section)}.project-flow{padding:var(--space-3)}.project-flow ol{gap:var(--space-1);flex-direction:column}.project-flow li{align-items:flex-start;gap:var(--space-1);flex-direction:column;line-height:1.8}.project-flow .ui-icon{transform:rotate(90deg)}.project-body h2{margin-top:var(--space-5)}.project-body th,.project-body td{padding:var(--space-2) var(--space-1)}.project-body th:first-child,.project-body td:first-child{width:30%}.article-header h1{font-size:1.75rem}.footer-main{gap:var(--space-3) var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr))}.footer-identity{grid-column:1/-1}}@media (width<=480px){:root{--page-inset:20px;--avatar-size:88px}.brand{gap:var(--space-1)}.site-nav{flex:1;justify-content:flex-end;gap:0}.nav-link{min-width:36px;min-height:40px;font-size:var(--text-meta);letter-spacing:0;white-space:nowrap;padding-inline:2px}.author-intro{gap:var(--space-3);grid-template-columns:1fr}.profile-avatar{grid-row:1}.author-intro h1{font-size:1.75rem}.footer-main{grid-template-columns:1fr}.footer-identity{grid-column:auto}.footer-nav-links{grid-template-columns:repeat(2,minmax(0,1fr))}.footer-bottom{gap:var(--space-1) var(--space-3);flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important}.site-header{transform:none}}@media print{:root,:root[data-theme]{color-scheme:light;--bg:#fff;--ink:#222;--ink-soft:#444;--ink-muted:#555;--line:#ccc;--accent:#333;--code-bg:#f4f4f4;--surface-soft:#f4f4f4}.site-header,.site-footer,.skip-link,.article-back{display:none}.site-shell{padding-top:0}.container{width:100%}}.language-picker[data-astro-cid-gtewornt]{--language-menu-width:172px;font-size:var(--text-small);flex-shrink:0;position:relative}summary[data-astro-cid-gtewornt]{list-style:none}summary[data-astro-cid-gtewornt]::-webkit-details-marker{display:none}.language-picker[data-astro-cid-gtewornt][open] summary[data-astro-cid-gtewornt]{color:var(--accent);background:var(--surface-soft)}.language-options[data-astro-cid-gtewornt]{right:0;top:calc(100% + var(--space-1));width:var(--language-menu-width);padding:var(--space-1);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px color-mix(in srgb, var(--ink) 8%, transparent);position:absolute}.language-options[data-astro-cid-gtewornt] a[data-astro-cid-gtewornt]{justify-content:space-between;align-items:center;gap:var(--space-1);min-height:44px;padding:var(--space-1);color:var(--ink-soft);display:flex}.language-options[data-astro-cid-gtewornt] a[data-astro-cid-gtewornt]:hover,.language-options[data-astro-cid-gtewornt] a[data-astro-cid-gtewornt][aria-current]{color:var(--accent);background:var(--surface-soft);text-decoration:none}@media print{.language-picker[data-astro-cid-gtewornt]{display:none}}.theme-toggle[data-astro-cid-l6lhmie6][hidden],.theme-toggle[data-astro-cid-l6lhmie6] .theme-sun[data-astro-cid-l6lhmie6]{display:none}:root[data-theme=dark] .theme-toggle[data-astro-cid-l6lhmie6] .theme-sun[data-astro-cid-l6lhmie6]{display:block}:root[data-theme=dark] .theme-toggle[data-astro-cid-l6lhmie6] .theme-moon[data-astro-cid-l6lhmie6]{display:none}@media print{.theme-toggle[data-astro-cid-l6lhmie6]{display:none}}.site-botanicals[data-astro-cid-b5m44mjj]{--botanical-stroke:1.2;--botanical-flower-width:132px;--botanical-dandelion-width:142px;--botanical-gutter:max(var(--space-3), calc((100vw - var(--max-width)) / 4));--flower-head-height:calc(var(--botanical-flower-width) * 278 / 160);top:calc(-1 * var(--header-height));pointer-events:none;user-select:none;color:var(--ink);display:none;position:absolute;bottom:0;left:0;right:0}.botanical-stage[data-astro-cid-b5m44mjj]{height:min(100dvh,100%);position:sticky;top:0}.botanical[data-astro-cid-b5m44mjj]{stroke:currentColor;height:auto;stroke-width:var(--botanical-stroke);stroke-linecap:round;stroke-linejoin:round;opacity:.65;display:block;position:absolute;bottom:0;overflow:visible}.botanical-flower[data-astro-cid-b5m44mjj]{width:var(--botanical-flower-width);left:calc(var(--botanical-gutter) - var(--botanical-flower-width) / 2)}.botanical-right-rail[data-astro-cid-b5m44mjj]{width:max(0px, calc((100% - var(--max-width)) / 2 - var(--space-3)));pointer-events:none;position:absolute;inset:0 0 0 auto;overflow:clip}.botanical-dandelion[data-astro-cid-b5m44mjj]{width:min(var(--botanical-dandelion-width), calc(100% - var(--space-2)));max-width:100%;left:auto;right:max(var(--space-2), calc(var(--botanical-gutter) - var(--botanical-dandelion-width) / 2))}.flower-sway[data-astro-cid-b5m44mjj]{transform-origin:80px 354px}.dandelion-sway[data-astro-cid-b5m44mjj]{transform-origin:85px 335px}.seed-leaves[data-astro-cid-b5m44mjj]{transform-origin:80px 338px}.flower-leaf-lower[data-astro-cid-b5m44mjj]{transform-origin:79px 285px}.flower-leaf-middle[data-astro-cid-b5m44mjj]{transform-origin:79px 225px}.flower-leaf-upper[data-astro-cid-b5m44mjj]{transform-origin:78px 166px}.dandelion-leaf-left[data-astro-cid-b5m44mjj],.dandelion-leaf-right[data-astro-cid-b5m44mjj]{transform-origin:85px 326px}.dandelion-crown[data-astro-cid-b5m44mjj],.dandelion-seed[data-astro-cid-b5m44mjj]{transform-origin:98px 88px}.dandelion-filament[data-astro-cid-b5m44mjj]{stroke-width:.8px;opacity:.65}.dandelion-tuft[data-astro-cid-b5m44mjj]{stroke-width:.85px}.dandelion-achene[data-astro-cid-b5m44mjj]{stroke-width:1.4px}.dandelion-core[data-astro-cid-b5m44mjj]{fill:var(--bg)}.seed-flight-first[data-astro-cid-b5m44mjj]{--seed-drift-x:37px;--seed-drift-y:-106px;--seed-tilt:24deg}.seed-flight-second[data-astro-cid-b5m44mjj]{--seed-drift-x:54px;--seed-drift-y:-74px;--seed-tilt:35deg}.seed-flight-third[data-astro-cid-b5m44mjj]{--seed-drift-x:-33px;--seed-drift-y:-138px;--seed-tilt:-22deg}.flower-bud[data-astro-cid-b5m44mjj],.flower-blossom[data-astro-cid-b5m44mjj]{transform-origin:80px 92px}.flower-bud[data-astro-cid-b5m44mjj]{opacity:0}.flower-center[data-astro-cid-b5m44mjj]{fill:var(--bg)}.leaf-vein[data-astro-cid-b5m44mjj],.petal-vein[data-astro-cid-b5m44mjj],.botanical-ground[data-astro-cid-b5m44mjj]{opacity:.5}.butterfly-arrival[data-astro-cid-b5m44mjj]{left:calc(var(--botanical-gutter) + var(--space-1));bottom:calc(var(--flower-head-height) + var(--space-1));opacity:.75;width:42px;height:32.6667px;position:absolute}.butterfly-flight[data-astro-cid-b5m44mjj]{width:100%;height:100%}.butterfly[data-astro-cid-b5m44mjj]{stroke:currentColor;stroke-width:1.1px;stroke-linecap:round;stroke-linejoin:round;width:100%;height:100%;display:block}.butterfly-wing[data-astro-cid-b5m44mjj]{transform-origin:27px 22px}@media (width>=1440px){.site-botanicals[data-astro-cid-b5m44mjj]{display:block}}@media (width>=1440px) and (prefers-reduced-motion:no-preference){@supports (animation-timeline:scroll()){.growth-stroke[data-astro-cid-b5m44mjj]{stroke-dasharray:1;animation:linear both stem-grow}.seed-leaves[data-astro-cid-b5m44mjj]{animation:linear both seed-unfurl}.plant-leaf[data-astro-cid-b5m44mjj]{animation:ease-out both leaf-unfurl}.flower-bud[data-astro-cid-b5m44mjj]{animation:linear both bud-form}.flower-blossom[data-astro-cid-b5m44mjj]{animation:ease-in-out both flower-open}.butterfly-arrival[data-astro-cid-b5m44mjj]{animation:ease-in-out both butterfly-approach}.dandelion-crown[data-astro-cid-b5m44mjj]{animation:ease-out both dandelion-open}.seed-flight-first[data-astro-cid-b5m44mjj],.seed-flight-second[data-astro-cid-b5m44mjj],.seed-flight-third[data-astro-cid-b5m44mjj]{animation:ease-in-out both seed-depart}.growth-stroke[data-astro-cid-b5m44mjj],.seed-leaves[data-astro-cid-b5m44mjj],.plant-leaf[data-astro-cid-b5m44mjj],.flower-bud[data-astro-cid-b5m44mjj],.flower-blossom[data-astro-cid-b5m44mjj],.butterfly-arrival[data-astro-cid-b5m44mjj],.dandelion-crown[data-astro-cid-b5m44mjj],.seed-flight-first[data-astro-cid-b5m44mjj],.seed-flight-second[data-astro-cid-b5m44mjj],.seed-flight-third[data-astro-cid-b5m44mjj]{animation-timeline:scroll(root)}.growing-stem[data-astro-cid-b5m44mjj]{animation-range:0% 56%}.dandelion-growing-stem[data-astro-cid-b5m44mjj]{animation-range:4% 52%}.seed-leaves[data-astro-cid-b5m44mjj]{animation-range:0% 16%}.flower-leaf-lower[data-astro-cid-b5m44mjj]{animation-range:12% 30%}.flower-leaf-middle[data-astro-cid-b5m44mjj]{animation-range:27% 45%}.flower-leaf-upper[data-astro-cid-b5m44mjj]{animation-range:40% 58%}.dandelion-leaf-left[data-astro-cid-b5m44mjj]{animation-range:6% 28%}.dandelion-leaf-right[data-astro-cid-b5m44mjj]{animation-range:14% 36%}.dandelion-crown[data-astro-cid-b5m44mjj]{animation-range:52% 72%}.seed-flight-first[data-astro-cid-b5m44mjj]{animation-range:78% 98%}.seed-flight-second[data-astro-cid-b5m44mjj]{animation-range:84% 100%}.seed-flight-third[data-astro-cid-b5m44mjj]{animation-range:88% 100%}.flower-bud[data-astro-cid-b5m44mjj]{animation-range:56% 70%}.flower-blossom[data-astro-cid-b5m44mjj]{animation-range:58% 76%}.butterfly-arrival[data-astro-cid-b5m44mjj]{animation-range:74% 88%}.flower-sway[data-astro-cid-b5m44mjj]{animation:12s ease-in-out -3s infinite botanical-sway}.dandelion-sway[data-astro-cid-b5m44mjj]{animation:14s ease-in-out -7s infinite reverse botanical-sway}.butterfly-flight[data-astro-cid-b5m44mjj]{animation:10s ease-in-out -2s infinite butterfly-orbit}.butterfly-wing[data-astro-cid-b5m44mjj]{animation:.48s ease-in-out infinite alternate butterfly-flutter}}}@keyframes stem-grow{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes seed-unfurl{0%{transform:scale(.65)}to{transform:scale(1)}}@keyframes leaf-unfurl{0%{opacity:0;transform:scale(.08)rotate(-18deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes dandelion-open{0%{opacity:0;transform:scale(.12)rotate(-8deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes seed-depart{0%{opacity:1;transform:translate(0)rotate(0)}40%{opacity:.9;transform:translate(calc(var(--seed-drift-x) * .35), calc(var(--seed-drift-y) * .45)) rotate(calc(var(--seed-tilt) * -.25))}75%{opacity:.7;transform:translate(calc(var(--seed-drift-x) * .85), calc(var(--seed-drift-y) * .8)) rotate(var(--seed-tilt))}to{opacity:0;transform:translate(var(--seed-drift-x), var(--seed-drift-y)) rotate(calc(var(--seed-tilt) * .6))}}@keyframes bud-form{0%{opacity:0;transform:scale(.1)}35%,65%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.7)}}@keyframes flower-open{0%{opacity:0;transform:scale(.12)rotate(-16deg)}25%{opacity:1;transform:scale(.3)rotate(-10deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes butterfly-approach{0%{opacity:0;transform:translate(-78px,44px)rotate(-18deg)}25%{opacity:.65;transform:translate(-48px,6px)rotate(-6deg)}65%{opacity:.75;transform:translate(-12px,-14px)rotate(10deg)}to{opacity:.75;transform:translate(0)rotate(0)}}@keyframes botanical-sway{0%,to{transform:rotate(-1deg)}50%{transform:rotate(1deg)}}@keyframes butterfly-orbit{0%,to{transform:translate(-20px,2px)rotate(-12deg)}25%{transform:translate(8px,-20px)rotate(9deg)}50%{transform:translate(22px,6px)rotate(14deg)}75%{transform:translate(-1px,26px)rotate(-7deg)}}@keyframes butterfly-flutter{0%{transform:scaleX(1)}to{transform:scaleX(.4)}}@media print{.site-botanicals[data-astro-cid-b5m44mjj]{display:none}}.image-preview[data-astro-cid-y2gawnkd]{--preview-inset:var(--space-2);--preview-control-size:44px;--preview-image-gutter:24px;width:calc(100% - var(--preview-inset) * 2);height:calc(100dvh - var(--preview-inset) * 2);border-radius:var(--radius);max-width:none;max-height:none;color:var(--ink);background:var(--bg);border:0;margin:auto;padding:0;position:fixed;inset:0;overflow:hidden}.image-preview[data-astro-cid-y2gawnkd][open]{grid-template-rows:auto minmax(0,1fr) auto;animation:.24s cubic-bezier(.2,.7,.2,1) both preview-enter;display:grid}.image-preview[data-astro-cid-y2gawnkd]::backdrop{background:color-mix(in srgb, var(--ink) 22%, transparent);backdrop-filter:blur(10px);animation:.24s both preview-backdrop-enter}.image-preview[data-astro-cid-y2gawnkd][data-closing=true]::backdrop{animation:.18s both preview-backdrop-exit}.preview-toolbar[data-astro-cid-y2gawnkd],.preview-footer[data-astro-cid-y2gawnkd]{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);display:flex}.preview-toolbar[data-astro-cid-y2gawnkd]{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}.preview-heading[data-astro-cid-y2gawnkd]{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}h2[data-astro-cid-y2gawnkd]{min-width:0;font:500 var(--text-small)/1.6 var(--sans);color:var(--ink-soft);margin:0}.preview-count[data-astro-cid-y2gawnkd],.preview-scale[data-astro-cid-y2gawnkd]{color:var(--ink-muted);font:400 var(--text-meta)/1 var(--mono);font-variant-numeric:tabular-nums}.preview-scale[data-astro-cid-y2gawnkd]{text-align:center;min-width:5ch}.preview-controls[data-astro-cid-y2gawnkd]{background:var(--surface-soft);border-radius:999px;flex-shrink:0;align-items:center;padding-inline:4px;display:flex}.preview-close[data-astro-cid-y2gawnkd]{justify-self:end}button[data-astro-cid-y2gawnkd]{width:var(--preview-control-size);height:var(--preview-control-size);color:var(--ink);cursor:pointer;transition:background var(--transition), color var(--transition), transform var(--transition);background:0 0;border:0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}button[data-astro-cid-y2gawnkd]:hover,button[data-astro-cid-y2gawnkd]:focus-visible{background:var(--surface-soft);color:var(--accent)}button[data-astro-cid-y2gawnkd]:active{transform:scale(.96)}button[data-astro-cid-y2gawnkd]:disabled{opacity:.3;cursor:default}button[data-astro-cid-y2gawnkd]:disabled:hover{color:var(--ink);background:0 0}.preview-viewport[data-astro-cid-y2gawnkd]{min-width:0;min-height:0;padding:var(--preview-image-gutter);overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent;display:flex;position:relative;overflow:auto}.preview-viewport[data-astro-cid-y2gawnkd][data-zoomed=false]{touch-action:pan-y pinch-zoom}.preview-canvas[data-astro-cid-y2gawnkd]{flex:none;margin:auto}.preview-canvas[data-astro-cid-y2gawnkd] img[data-astro-cid-y2gawnkd]{object-fit:contain;user-select:none;width:100%;max-width:none;height:100%;display:block}.preview-canvas[data-astro-cid-y2gawnkd] img[data-astro-cid-y2gawnkd][hidden]{display:none}.preview-status[data-astro-cid-y2gawnkd]{padding:var(--space-3);text-align:center;color:var(--ink-soft);place-items:center;margin:0;display:grid;position:absolute;inset:0}.preview-status[data-astro-cid-y2gawnkd][hidden]{display:none}.preview-viewport[data-astro-cid-y2gawnkd][data-zoomed=true]{cursor:grab}.preview-viewport[data-astro-cid-y2gawnkd][data-dragging=true]{cursor:grabbing}.preview-footer[data-astro-cid-y2gawnkd]{width:min(100%,800px);padding-bottom:var(--space-3);margin-inline:auto}.preview-footer[data-astro-cid-y2gawnkd] p[data-astro-cid-y2gawnkd]{color:var(--ink-soft);font-size:var(--text-small);text-align:center;text-wrap:balance;flex:1;margin:0;line-height:1.6}@keyframes preview-enter{0%{opacity:0;transform:translateY(12px)scale(.985)}to{opacity:1;transform:none}}@keyframes preview-backdrop-enter{0%{opacity:0}to{opacity:1}}@keyframes preview-backdrop-exit{0%{opacity:1}to{opacity:0}}@media (width<=767px){.image-preview[data-astro-cid-y2gawnkd]{--preview-inset:0px;--preview-image-gutter:12px;width:100%;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);border:0;border-radius:0}.preview-toolbar[data-astro-cid-y2gawnkd],.preview-footer[data-astro-cid-y2gawnkd]{padding-inline:var(--space-1);gap:var(--space-1)}.preview-heading[data-astro-cid-y2gawnkd]{display:block}.preview-count[data-astro-cid-y2gawnkd]{margin-top:var(--space-1);display:block}.preview-controls[data-astro-cid-y2gawnkd]{padding:0}h2[data-astro-cid-y2gawnkd]{font-size:var(--text-meta)}}@media (prefers-reduced-motion:reduce){.image-preview[data-astro-cid-y2gawnkd][open],.image-preview[data-astro-cid-y2gawnkd]::backdrop,.image-preview[data-astro-cid-y2gawnkd][data-closing=true]::backdrop{animation:none}button[data-astro-cid-y2gawnkd]{transition:none}}@media print{.image-preview[data-astro-cid-y2gawnkd]{display:none!important}}
