body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,hr,dl,dd,ol,ul,figure{margin:0;padding:0}body{font:400 17px/1.6 "Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:#202124;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-font-feature-settings:"kern" 1;-moz-font-feature-settings:"kern" 1;-o-font-feature-settings:"kern" 1;font-feature-settings:"kern" 1;font-kerning:normal;display:flex;min-height:100vh;flex-direction:column}h1,h2,h3,h4,h5,h6,p,blockquote,pre,ul,ol,dl,figure,.highlight{margin-bottom:16px}main{display:block}img{max-width:100%;vertical-align:middle}figure>img{display:block}figcaption{font-size:14.875px}ul,ol{margin-left:32px}li>ul,li>ol{margin-bottom:0}h1,h2,h3,h4,h5,h6{font-weight:400}a{color:#e63946;text-decoration:none}a:visited{color:#bb1824}a:hover{color:#202124;text-decoration:underline}.social-media-list a:hover{text-decoration:none}.social-media-list a:hover .username{text-decoration:underline}blockquote{color:#5f6368;border-left:4px solid #f1f3f4;padding-left:16px;font-size:19.125px;letter-spacing:-1px;font-style:italic}blockquote>:last-child{margin-bottom:0}pre,code{font-size:15.9375px;border:1px solid #f1f3f4;border-radius:3px;background-color:#eef}code{padding:1px 5px}pre{padding:8px 12px;overflow-x:auto}pre>code{border:0;padding-right:0;padding-left:0}.wrapper{max-width:-webkit-calc(720px - (32px * 2));max-width:calc(720px - (32px * 2));margin-right:auto;margin-left:auto;padding-right:32px;padding-left:32px}@media screen and (max-width: 800px){.wrapper{max-width:-webkit-calc(720px - (32px));max-width:calc(720px - (32px));padding-right:16px;padding-left:16px}}.wrapper:after,.footer-col-wrapper:after{content:"";display:table;clear:both}.svg-icon{width:16px;height:16px;display:inline-block;fill:#5f6368;padding-right:5px;vertical-align:text-top}.social-media-list li+li{padding-top:5px}table{margin-bottom:32px;width:100%;text-align:left;color:#4b4e55;border-collapse:collapse;border:1px solid #f1f3f4}table tr:nth-child(even){background-color:#fff}table th,table td{padding:10.6666666667px 16px}table th{background-color:#fafafb;border:1px solid #e6e9eb;border-bottom-color:#cfd6d9}table td{border:1px solid #f1f3f4}.site-header{border-top:5px solid #3c4043;border-bottom:1px solid #f1f3f4;min-height:59.68px;position:relative}.site-title{font-size:27.625px;font-weight:300;line-height:61.2px;letter-spacing:-1px;margin-bottom:0;float:left}.site-title,.site-title:visited{color:#3c4043}.site-nav{float:right;line-height:61.2px}.site-nav .nav-trigger{display:none}.site-nav .menu-icon{display:none}.site-nav .page-link{color:#202124;line-height:1.6}.site-nav .page-link:not(:last-child){margin-right:20px}@media screen and (max-width: 600px){.site-nav{position:absolute;top:9px;right:16px;background-color:#fff;border:1px solid #f1f3f4;border-radius:5px;text-align:right}.site-nav label[for="nav-trigger"]{display:block;float:right;width:36px;height:36px;z-index:2;cursor:pointer}.site-nav .menu-icon{display:block;float:right;width:36px;height:26px;line-height:0;padding-top:10px;text-align:center}.site-nav .menu-icon>svg{fill:#3c4043}.site-nav input ~ .trigger{clear:both;display:none}.site-nav input:checked ~ .trigger{display:block;padding-bottom:5px}.site-nav .page-link{display:block;padding:5px 10px;margin-left:20px}.site-nav .page-link:not(:last-child){margin-right:0}}.site-footer{border-top:1px solid #f1f3f4;padding:32px 0}.footer-heading{font-size:19.125px;margin-bottom:16px}.contact-list,.social-media-list{list-style:none;margin-left:0}.footer-col-wrapper{font-size:15.9375px;color:#5f6368;margin-left:-16px}.footer-col{float:left;margin-bottom:16px;padding-left:16px}.footer-col-1{width:-webkit-calc(35% - (32px / 2));width:calc(35% - (32px / 2))}.footer-col-2{width:-webkit-calc(20% - (32px / 2));width:calc(20% - (32px / 2))}.footer-col-3{width:-webkit-calc(45% - (32px / 2));width:calc(45% - (32px / 2))}@media screen and (max-width: 800px){.footer-col-1,.footer-col-2{width:-webkit-calc(50% - (32px / 2));width:calc(50% - (32px / 2))}.footer-col-3{width:-webkit-calc(100% - (32px / 2));width:calc(100% - (32px / 2))}}@media screen and (max-width: 600px){.footer-col{float:none;width:-webkit-calc(100% - (32px / 2));width:calc(100% - (32px / 2))}}.page-content{padding:32px 0;flex:1}.page-heading{font-size:34px}.post-list-heading{font-size:29.75px}.post-list{margin-left:0;list-style:none}.post-list>li{margin-bottom:32px}.post-meta{font-size:14.875px;color:#5f6368}.post-link{display:block;font-size:25.5px}.post-header{margin-bottom:32px}.post-title{font-size:44.625px;letter-spacing:-1px;line-height:1}@media screen and (max-width: 800px){.post-title{font-size:38.25px}}.post-content{margin-bottom:32px}.post-content h2{font-size:34px}@media screen and (max-width: 800px){.post-content h2{font-size:29.75px}}.post-content h3{font-size:27.625px}@media screen and (max-width: 800px){.post-content h3{font-size:23.375px}}.post-content h4{font-size:21.25px}@media screen and (max-width: 800px){.post-content h4{font-size:19.125px}}.highlight{background:#fff}.highlighter-rouge .highlight{background:#eef}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:bold}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:bold;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#458;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086B3}.highlight .nc{color:#458;font-weight:bold}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne{color:#900;font-weight:bold}.highlight .nf{color:#900;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}:root{color-scheme:light;--bg: #ffffff;--surface: #f8f9fa;--bg-card: #ffffff;--text: #202124;--text-soft: #5f6368;--border: #dadce0;--accent: #e63946;--accent-surface: rgba(230, 57, 70, 0.10);--shadow-1: 0 1px 2px 0 rgba(60, 64, 67, 0.30), 0 1px 3px 1px rgba(60, 64, 67, 0.15);--shadow-2: 0 1px 2px 0 rgba(60, 64, 67, 0.30), 0 2px 6px 2px rgba(60, 64, 67, 0.15)}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){color-scheme:dark;--bg: #16181c;--surface: #202329;--bg-card: #1c1f24;--text: #e8eaed;--text-soft: #9aa0a6;--border: #3c4043;--accent: #ff5a67;--accent-surface: rgba(255, 90, 103, 0.16);--shadow-1: 0 1px 2px 0 rgba(0, 0, 0, 0.5), 0 1px 3px 1px rgba(0, 0, 0, 0.3);--shadow-2: 0 1px 2px 0 rgba(0, 0, 0, 0.5), 0 2px 6px 2px rgba(0, 0, 0, 0.3)}}:root[data-theme="dark"]{color-scheme:dark;--bg: #16181c;--surface: #202329;--bg-card: #1c1f24;--text: #e8eaed;--text-soft: #9aa0a6;--border: #3c4043;--accent: #ff5a67;--accent-surface: rgba(255, 90, 103, 0.16);--shadow-1: 0 1px 2px 0 rgba(0, 0, 0, 0.5), 0 1px 3px 1px rgba(0, 0, 0, 0.3);--shadow-2: 0 1px 2px 0 rgba(0, 0, 0, 0.5), 0 2px 6px 2px rgba(0, 0, 0, 0.3)}html{-webkit-text-size-adjust:100%;overflow-x:hidden}body{color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}pre,code{background-color:var(--surface);border-color:var(--border)}.svg-icon{fill:var(--text-soft)}h1,h2,h3,h4,h5,h6{font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-weight:500;letter-spacing:0;line-height:1.25;color:var(--text)}a{color:var(--accent);text-decoration:none;transition:color 0.15s ease, background-color 0.15s ease}a:hover{text-decoration:underline}.site-header{border-top:none;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:10}.site-header .wrapper{display:flex;align-items:center;gap:0.75rem}.site-title{font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-weight:500;font-size:1.35rem;letter-spacing:0;color:var(--text) !important;margin-right:auto}.site-title:hover{text-decoration:none;color:var(--accent) !important}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:2.1rem;height:2.1rem;flex:none;padding:0;border:1px solid var(--border);border-radius:999px;background:var(--bg-card);color:var(--text-soft);cursor:pointer;transition:color 0.15s ease, border-color 0.15s ease}.icon-button:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle .theme-toggle-icon--sun{display:none}.theme-toggle .theme-toggle-icon--moon{display:block}:root[data-theme="dark"] .theme-toggle .theme-toggle-icon--sun{display:block}:root[data-theme="dark"] .theme-toggle .theme-toggle-icon--moon{display:none}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .theme-toggle .theme-toggle-icon--sun{display:block}:root:not([data-theme="light"]) .theme-toggle .theme-toggle-icon--moon{display:none}}.site-nav .nav-trigger{display:none}@media screen and (max-width: 600px){.site-nav{background-color:var(--bg);border-color:var(--border)}.site-nav .menu-icon>svg{fill:var(--text-soft)}}.site-nav .page-link{font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:0.875rem;font-weight:500;letter-spacing:0;color:var(--text-soft)}.site-nav .page-link:hover{color:var(--accent);text-decoration:none}body.search-open{overflow:hidden}.search-modal{position:fixed;inset:0;z-index:100;justify-content:center;padding:4vh 1.25rem}.search-modal[hidden]{display:none}.search-modal:not([hidden]){display:flex}.search-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.45)}.search-modal-panel{position:relative;width:100%;max-width:32rem;max-height:88vh;display:flex;flex-direction:column;background:var(--bg-card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-2);overflow:hidden}.search-modal-row{display:flex;align-items:center;gap:0.5rem;padding:0.9rem 1rem;border-bottom:1px solid var(--border)}.search-input{flex:1;min-width:0;border:none;background:transparent;color:var(--text);font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:1rem}.search-input:focus{outline:none}.search-close{flex:none;width:1.75rem;height:1.75rem;border:none;background:transparent;color:var(--text-soft);font-size:1.3rem;line-height:1;cursor:pointer}.search-close:hover{color:var(--accent)}.search-results{list-style:none;margin:0;padding:0.5rem;overflow-y:auto}.search-results a{display:block;padding:0.65rem 0.75rem;border-radius:10px;text-decoration:none}.search-results a:hover{background:var(--surface)}.search-result-type{display:inline-block;font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:var(--accent);margin-bottom:0.2rem}.search-result-title{display:block;font-weight:500;color:var(--text)}.search-result-excerpt{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;font-size:0.82rem;color:var(--text-soft);margin-top:0.15rem}.search-empty{padding:1.5rem;text-align:center;font-size:0.9rem;color:var(--text-soft)}.home>p:first-of-type{font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:1.15rem;font-weight:400;color:var(--text-soft);padding-bottom:19.2px;margin-bottom:19.2px}.page-heading{font-size:1.9rem;font-weight:500}.post-list-heading{font-size:0.8rem;text-transform:uppercase;letter-spacing:0.08em;color:var(--text-soft);font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-weight:500;margin-bottom:calc(32px / 2)}.section-tabs{display:inline-flex;gap:0.25rem;padding:0.25rem;background:var(--surface);border-radius:999px;margin-bottom:1.5rem}.section-tab{padding:0.4rem 1.1rem;border-radius:999px;font-size:0.875rem;font-weight:500;color:var(--text-soft);text-decoration:none}.section-tab:hover{color:var(--text);text-decoration:none}.section-tab.active{background:var(--bg-card);color:var(--accent);box-shadow:var(--shadow-1)}.subscribe-form .subscribe-label{display:block;font-size:0.85rem;font-weight:500;color:var(--text-soft);margin-bottom:0.5rem}.subscribe-form .subscribe-row{display:flex;gap:0.5rem}.subscribe-form input[type="email"]{flex:1;min-width:0;padding:0.55rem 0.85rem;border:1px solid var(--border);border-radius:8px;font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:0.9rem;background:var(--bg);color:var(--text)}.subscribe-form input[type="email"]:focus{outline:none;border-color:var(--accent)}.subscribe-form .subscribe-button{flex-shrink:0;padding:0.55rem 1.1rem;border:none;border-radius:8px;background:var(--accent);color:#fff;font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:0.9rem;font-weight:500;cursor:pointer;transition:background-color 0.15s ease}.subscribe-form .subscribe-button:hover{background:#e01c2b}.subscribe-form .subscribe-attribution{margin:0.5rem 0 0;font-size:0.72rem}.subscribe-form .subscribe-attribution a{color:var(--text-soft)}.subscribe-form--compact .subscribe-attribution{display:none}.subscribe-form--card{max-width:720px;margin:48px auto 0;padding-top:24px;border-top:1px solid var(--border)}.subscribe-form--card .subscribe-label{font-size:0.8rem;text-transform:uppercase;letter-spacing:0.08em;margin-bottom:1rem}.subscribe-form--card .subscribe-row{max-width:26rem}.subscribe-form--compact .subscribe-label{display:none}.subscribe-form--compact .subscribe-row{gap:0.4rem}.subscribe-form--compact input[type="email"]{padding:0.35rem 0.65rem;font-size:0.8rem;width:11rem}.subscribe-form--compact .subscribe-button{padding:0.35rem 0.8rem;font-size:0.8rem}.post-list{display:grid;gap:1rem;margin-left:0;list-style:none}.post-card{display:flex;gap:1.5rem;align-items:stretch;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1.25rem;box-shadow:none;transition:box-shadow 0.18s ease, border-color 0.18s ease;position:relative}.post-card[hidden]{display:none}.post-card:hover{box-shadow:var(--shadow-1);border-color:transparent}.draggable-item[draggable="true"]{cursor:grab}.draggable-item[draggable="true"]::before{content:"⠿";position:absolute;top:0.6rem;right:0.75rem;color:var(--text-soft);font-size:1rem;line-height:1;opacity:0.5}.draggable-item[draggable="true"]:active{cursor:grabbing}.draggable-item[draggable="true"].dragging{opacity:0.4}.reorder-status{min-height:1.2em;font-size:0.85rem;color:var(--text-soft)}.post-card-thumb{flex:0 0 176px;border-radius:8px;overflow:hidden;display:block}.post-card-thumb img{width:100%;height:100%;object-fit:cover;aspect-ratio:4 / 3;display:block}.post-list--projects .post-card-thumb{flex-basis:300px;align-self:flex-start;aspect-ratio:4 / 3;background:#ffffff}.post-list--projects .post-card-thumb img{object-fit:contain;aspect-ratio:auto}.post-card-photo-edit{position:absolute;top:0.6rem;left:0.6rem;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;border-radius:50%;border:none;background:rgba(0,0,0,0.55);color:#fff;cursor:pointer;opacity:0;transition:opacity 0.15s ease, background-color 0.15s ease}.post-card-photo-edit:hover{background:rgba(0,0,0,0.75)}.post-card:hover .post-card-photo-edit,.post-card-photo-edit:focus-visible{opacity:1}body.card-photo-open{overflow:hidden}.card-photo-modal{position:fixed;inset:0;z-index:110;justify-content:center;align-items:center;padding:4vh 1.25rem}.card-photo-modal[hidden]{display:none}.card-photo-modal:not([hidden]){display:flex}.card-photo-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.55)}.card-photo-modal-panel{position:relative;width:100%;max-width:26rem;display:flex;flex-direction:column;gap:0.9rem;padding:1.25rem;background:var(--bg-card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-2)}.card-photo-frame{position:relative;width:100%;aspect-ratio:4 / 3;overflow:hidden;border-radius:10px;border:3px solid #ffffff;box-shadow:0 0 0 1px var(--border);cursor:grab;background:#ffffff;touch-action:none}.card-photo-frame:active{cursor:grabbing}.card-photo-frame img{width:100%;height:100%;object-fit:cover;pointer-events:none;user-select:none;-webkit-user-drag:none}.card-photo-hint{margin:0;font-size:0.8rem;color:var(--text-soft);text-align:center}.card-photo-field input[type="range"]{accent-color:var(--accent);width:100%;padding:0;border:none;border-radius:0;background:none}.card-photo-field{display:flex;flex-direction:column;gap:0.35rem;font-size:0.82rem;font-weight:500;color:var(--text-soft)}.card-photo-field input{padding:0.5rem 0.7rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:0.88rem;font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}.card-photo-field input:focus{outline:2px solid var(--accent);outline-offset:1px}.card-photo-field input:disabled{opacity:0.6}.card-photo-field input[type="file"]{padding:0.4rem 0;border:none;background:none;font-size:0.82rem}.card-photo-actions{display:flex;align-items:center;gap:0.6rem}.card-photo-actions button{padding:0.45rem 1rem;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:0.85rem;font-weight:500;cursor:pointer}.card-photo-actions button:hover{border-color:var(--accent)}.card-photo-actions .card-photo-save{background:var(--accent);border-color:var(--accent);color:#fff}.card-photo-actions .card-photo-save:hover{opacity:0.9}.card-photo-status{flex:1;font-size:0.8rem;color:var(--text-soft)}body.lightbox-open{overflow:hidden}.lightbox{position:fixed;inset:0;z-index:120;justify-content:center;align-items:center;padding:4vh 1.25rem}.lightbox[hidden]{display:none}.lightbox:not([hidden]){display:flex}.lightbox-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.75);cursor:zoom-out}.lightbox-close{position:fixed;top:1.25rem;right:1.5rem;width:2.25rem;height:2.25rem;border:1px solid rgba(255,255,255,0.3);border-radius:50%;background:rgba(0,0,0,0.4);color:#fff;font-size:1.5rem;line-height:1;cursor:pointer}.lightbox-close:hover{background:rgba(0,0,0,0.6)}.lightbox-figure{position:relative;margin:0;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center;gap:0.75rem}.lightbox-figure img{max-width:90vw;max-height:80vh;width:auto;height:auto;object-fit:contain;border-radius:8px;box-shadow:var(--shadow-2);cursor:zoom-out}#lightbox-caption{margin:0;font-size:0.9rem;color:#eee;text-align:center}#lightbox-caption[hidden]{display:none}.post-card--no-image .post-card-body{padding-left:0.25rem}.post-card-body{display:flex;flex-direction:column;min-width:0;flex:1}.post-card-eyebrow{margin:0 0 0.4rem;font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:var(--accent)}.post-card-tags{list-style:none;display:flex;flex-wrap:wrap;gap:0.4rem;margin:0 0 0.6rem;padding:0}.post-card-tags li{background:var(--surface);color:var(--text-soft);font-size:0.72rem;font-weight:500;letter-spacing:0.02em;padding:0.2rem 0.65rem;border-radius:999px}.post-card h3{margin:0 0 0.2rem;font-size:1.2rem;font-weight:500;line-height:1.3}.post-card .post-link{color:var(--text);text-decoration:none}.post-card .post-link:hover{color:var(--accent);text-decoration:none}.post-card .post-meta{font-size:0.8rem;color:var(--text-soft) !important}.post-card-excerpt{margin:0.6rem 0 0.5rem;font-size:0.925rem;color:var(--text-soft);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.post-card-more{margin-top:auto;font-size:0.8rem;font-weight:500;color:var(--accent);text-decoration:none}.post-card-more:hover{text-decoration:underline}@media screen and (max-width: 600px){.post-card{flex-direction:column}.post-card-thumb{flex-basis:auto}.post-card-thumb img{aspect-ratio:16 / 9}.post-list--projects .post-card-thumb{aspect-ratio:16 / 9}}.pager .pagination{display:flex;justify-content:center;align-items:center;gap:0.5rem;list-style:none;padding:0;margin-top:32px}.pager .pagination li a,.pager .pagination li div{display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;height:2.25rem;border-radius:999px;font-size:0.85rem;font-weight:500}.pager .pagination .current-page{background:var(--accent-surface);color:var(--accent)}.pager .pagination a{text-decoration:none;color:var(--text-soft)}.pager .pagination a:hover{background:var(--surface);color:var(--accent)}.post-header{margin-bottom:24px}.post-title{font-size:2.1rem;font-weight:500;line-height:1.2;letter-spacing:0}.post-content{font-weight:400}.post-content h2{margin-top:2.2em;font-size:1.5rem;font-weight:500}.post-content h3{margin-top:1.8em;font-size:1.2rem;font-weight:500}.post-content>.lede{font-size:1.2rem;font-weight:400;line-height:1.6;color:var(--text-soft)}.post-content figure{margin:2rem 0;text-align:center}.post-content figure img{border-radius:8px;max-width:100%;cursor:zoom-in}.post-content figure figcaption{margin-top:0.6rem;font-size:0.85rem;color:var(--text-soft)}.post-content blockquote{border-left:3px solid var(--accent);color:var(--text-soft);font-style:normal}.post-content .results-table-wrap{overflow-x:auto;margin:1.5rem 0;border:1px solid var(--border);border-radius:12px}.post-content .results-table{width:100%;border-collapse:collapse;font-size:0.9rem;white-space:nowrap}.post-content .results-table th,.post-content .results-table td{padding:0.65rem 1rem;text-align:left;border-bottom:1px solid var(--border)}.post-content .results-table th{background:var(--surface);font-weight:500;color:var(--text-soft);font-size:0.78rem;text-transform:uppercase;letter-spacing:0.04em}.post-content .results-table tr:last-child td{border-bottom:none}.post-content figure.ontology-figure{text-align:left;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1.25rem 1.5rem;overflow-x:auto}.post-content figure.ontology-figure img{box-shadow:none}.post-content .tax-tree,.post-content .tax-tree ul{list-style:none;margin:0;padding-left:0}.post-content .tax-tree ul{padding-left:1.4rem;margin:0.3rem 0 0.3rem 0.55rem;border-left:1px dashed var(--border)}.post-content .tax-tree li{margin:0.35rem 0}.post-content .tax-node{display:inline-block;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:0.15rem 0.7rem;font-size:0.82rem;font-weight:500;color:var(--text)}.post-content .tax-node.tax-root{background:var(--accent-surface);border-color:var(--accent);color:var(--accent);font-weight:700}.post-content .tax-example{margin-left:0.5rem;font-size:0.82rem;font-style:italic;color:var(--text-soft)}.post-content code{font-family:"Roboto Mono","SFMono-Regular",Consolas,monospace;background:var(--surface);border-radius:4px;padding:0.1em 0.4em;font-size:0.9em}.post-content pre code{padding:0}.post-content #glossary{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--border)}.post-content .glossary-intro{color:var(--text-soft);font-size:0.95rem}.post-content .glossary-nav{margin:1.25rem 0 2.5rem}.post-content .glossary-nav ul{display:flex;flex-wrap:wrap;gap:0.6rem;list-style:none;margin:0;padding:0}.post-content .glossary-nav a{display:inline-block;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:0.4rem 0.9rem;font-size:0.85rem;font-weight:500;color:var(--text);transition:background 0.15s ease, border-color 0.15s ease}.post-content .glossary-nav a:hover{background:var(--accent-surface);border-color:var(--accent);color:var(--accent);text-decoration:none}.post-content #glossary h3{margin-top:2.4rem;padding-bottom:0.4rem;border-bottom:2px solid var(--accent-surface);font-size:1.05rem}.post-content .glossary-list{margin:1rem 0 0;column-width:22rem;column-gap:2rem}.post-content .glossary-entry{break-inside:avoid;margin:0 0 1.1rem;padding-bottom:0.9rem;border-bottom:1px dashed var(--border)}.post-content .glossary-entry dt{font-weight:700;color:var(--accent);font-size:0.95rem;margin-bottom:0.25rem}.post-content .glossary-entry dd{margin:0;color:var(--text-soft);font-size:0.88rem;line-height:1.5}.toc{display:none}.toc.has-items{display:block;max-width:720px;margin:0 auto 2rem}.toc-details{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:0.9rem 1.25rem}.toc-details summary{cursor:pointer;font-size:0.78rem;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-soft)}.toc-details summary::marker{color:var(--text-soft)}.toc-details[open] summary{margin-bottom:0.6rem}.toc-list{list-style:none;margin:0;padding:0;display:grid;gap:0.35rem}.toc-item a{color:var(--text-soft);font-size:0.9rem}.toc-item a:hover{color:var(--accent)}.toc-item a.active{color:var(--accent);font-weight:500}.toc-item--h3{margin-left:1rem}@media (min-width: 1300px){.toc.has-items{position:fixed;top:5.5rem;left:calc(50vw - 572px);width:220px;max-width:220px;max-height:calc(100vh - 7rem);overflow-y:auto;margin:0}.toc-details{border:none;background:transparent;padding:0}}.related-posts{max-width:720px;margin:48px auto 0;padding-top:24px;border-top:1px solid var(--border)}.related-posts-heading{font-size:0.8rem;text-transform:uppercase;letter-spacing:0.08em;font-weight:500;color:var(--text-soft);margin-bottom:1rem}.related-posts-list{list-style:none;margin:0;padding:0;display:grid;gap:0.6rem}.related-posts-list li{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.related-posts-list a{color:var(--text);font-weight:500}.related-posts-list a:hover{color:var(--accent)}.related-posts-list .post-meta{flex-shrink:0;font-size:0.78rem;color:var(--text-soft) !important}.comments{max-width:720px;margin:48px auto 0;padding-top:24px;border-top:1px solid var(--border)}.comments-heading{font-size:0.8rem;text-transform:uppercase;letter-spacing:0.08em;font-weight:500;color:var(--text-soft);margin-bottom:1rem}.series-summary-card{cursor:pointer;align-items:center;border-color:var(--accent)}.series-summary-card:hover{box-shadow:var(--shadow-1)}.series-summary-card .post-card-eyebrow{color:var(--accent)}.series-summary-name{margin:0 0 0.2rem;font-size:1.2rem;font-weight:500}.series-summary-arrow{display:inline-flex;align-items:center;justify-content:center;flex:none;width:3rem;height:3rem;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--accent);transition:transform 0.2s ease, background-color 0.15s ease}.series-summary-card:hover .series-summary-arrow{background:var(--accent-surface)}.series-summary-card--expanded .series-summary-arrow{transform:rotate(180deg)}.theme-block{scroll-margin-top:5.5rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1.5rem 1.75rem;margin-bottom:1.25rem;box-shadow:none}.theme-block h2{margin-top:0;font-size:1.15rem;font-weight:500}.theme-block ul{padding-left:1.1rem;margin-bottom:0}.theme-block li{margin-bottom:0.3rem}.theme-block span{color:var(--text-soft);font-size:0.85rem}.site-footer{border-top:1px solid var(--border);background:var(--bg);padding:1.5rem 0}.site-footer .wrapper{display:flex;flex-wrap:wrap;align-items:center;gap:1.25rem;font-size:0.85rem;color:#5f6368}.site-footer .footer-copy{margin-right:auto}.site-footer .footer-link{color:#5f6368;text-decoration:none}.site-footer .footer-link:hover{color:var(--accent);text-decoration:underline}.landing-body{min-height:100vh;display:flex;flex-direction:row;align-items:center;justify-content:center;padding:2.5rem 1.5rem;margin:0;background:var(--bg)}.landing{width:100%;max-width:22rem;text-align:center}.landing-avatar{width:72px;height:72px;margin:0 auto 1.25rem;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:1.75rem;font-weight:700}.landing-name{margin:0 0 0.5rem;font-size:1.5rem;font-weight:700}.landing-bio{margin:0 0 2rem;color:var(--text-soft);font-size:0.95rem;line-height:1.5}.landing-links{display:flex;flex-direction:column;gap:0.75rem}.landing-link{display:block;padding:0.85rem 1.25rem;border:1px solid var(--border);border-radius:12px;background:var(--bg-card);color:var(--text);font-weight:500;text-decoration:none;box-shadow:var(--shadow-1);transition:transform 0.15s ease, box-shadow 0.15s ease}.landing-link:hover{transform:translateY(-1px);box-shadow:var(--shadow-2);text-decoration:none}.landing-link.landing-link--primary{background:var(--accent);color:#fff;border-color:transparent}.landing-link.landing-link--primary:hover{background:#e01c2b}.post-content .grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:1.5rem;margin:2rem 0}@media (max-width: 600px){.post-content .grid{grid-template-columns:1fr}}.post-content .grid figure.card{margin:0}.post-content figure.figure-logo img{max-width:220px;display:block;margin:0 auto}.post-content .logo-row{display:flex;justify-content:center;align-items:center;gap:2.5rem;flex-wrap:wrap;margin:1.5rem 0}.post-content .logo-row figure.figure-logo{margin:0;text-align:center}.post-content .logo-row figure.figure-logo img{max-width:160px}.post-content .logo-row figure.figure-logo figcaption{font-size:0.8rem;color:var(--text-soft);margin-top:0.4rem}.post-content figure.card{text-align:center;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1rem;box-shadow:var(--shadow-1)}.post-content figure.card img{border-radius:8px;max-width:100%;display:block;margin:0 auto}.post-content figure.card figcaption{margin-top:0.6rem;font-size:0.85rem;color:var(--text-soft)}.password-lock{margin:2rem 0;padding:1.5rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px}.password-lock-label{display:block;font-weight:500;color:var(--text);margin-bottom:0.6rem}.password-lock-row{display:flex;gap:0.6rem;flex-wrap:wrap}.password-lock-input{flex:1 1 12rem;min-width:0;padding:0.6rem 0.9rem;border:1px solid var(--border);border-radius:8px;font-size:0.95rem;background:var(--bg);color:var(--text)}.password-lock-input:focus{outline:2px solid var(--accent);outline-offset:1px}.password-lock-row button{padding:0.6rem 1.2rem;border:none;border-radius:8px;background:var(--accent);color:#fff;font-weight:500;font-size:0.95rem;cursor:pointer;transition:opacity 0.15s ease}.password-lock-row button:hover{opacity:0.9}.password-lock-row button:disabled{opacity:0.6;cursor:default}.password-lock-note{margin:0.6rem 0 0;font-size:0.82rem;color:var(--text-soft)}.download-button{display:inline-block;padding:0.6rem 1.2rem;border-radius:8px;background:var(--accent);color:#fff !important;font-weight:500;font-size:0.95rem;text-decoration:none !important;transition:opacity 0.15s ease}.download-button:hover{opacity:0.9}.password-lock-status{margin:1rem 0 0;font-size:0.9rem;font-weight:500}.password-lock-status--pending{color:var(--text-soft)}.password-lock-status--success{color:#1a7f37}.password-lock-status--error{color:var(--accent)}.password-lock-viewer{margin-top:1rem}.password-lock-frame,.embedded-pdf-frame{width:100%;height:80vh;min-height:500px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.embedded-pdf{margin:1.5rem 0}.embedded-pdf-fallback{margin:0.6rem 0 0;font-size:0.85rem;color:var(--text-soft)}.interactive-widget{margin:2rem 0;padding:1.25rem 1.5rem 1.5rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-1)}.interactive-widget svg,.interactive-widget canvas{display:block;max-width:100%;height:auto;margin:0 auto;background:var(--bg);border:1px solid var(--border);border-radius:8px;touch-action:none}.interactive-widget .interactive-widget-controls{display:flex;flex-wrap:wrap;align-items:center;gap:0.75rem 1.5rem;margin-top:1rem;font-size:0.9rem;color:var(--text)}.interactive-widget .interactive-widget-controls label{display:flex;align-items:center;gap:0.5rem;white-space:nowrap}.interactive-widget .interactive-widget-controls input[type="range"]{accent-color:var(--accent)}.interactive-widget .interactive-widget-controls select,.interactive-widget .interactive-widget-controls input[type="number"],.interactive-widget .interactive-widget-controls input[type="text"]{padding:0.35rem 0.6rem;border:1px solid var(--border);border-radius:8px;font-size:0.9rem;background:var(--bg);color:var(--text)}.interactive-widget button{padding:0.5rem 1.1rem;border:none;border-radius:8px;background:var(--accent);color:#fff;font-weight:500;font-size:0.9rem;cursor:pointer;transition:opacity 0.15s ease}.interactive-widget button:hover{opacity:0.9}.interactive-widget button:disabled{opacity:0.5;cursor:default}.interactive-widget .interactive-widget-readout{font-variant-numeric:tabular-nums;color:var(--text-soft)}.interactive-widget figcaption,.interactive-widget .interactive-widget-caption{margin-top:0.75rem;font-size:0.85rem;color:var(--text-soft)}.interactive-widget .interactive-widget-title{font-size:0.8rem;font-weight:600;letter-spacing:0.02em;text-transform:uppercase;color:var(--text-soft);margin:0 0 0.75rem}.places-layout{display:flex;flex-direction:column;gap:1.25rem}.places-map{width:100%;height:480px;border-radius:12px;border:1px solid var(--border);background:var(--surface)}.places-map.places-map--adding{cursor:crosshair}@media (max-width: 640px){.places-map{height:340px}}.places-list{max-height:20rem;overflow-y:auto;margin:0;padding:0;list-style:none;border:1px solid var(--border);border-radius:12px;background:var(--bg-card)}.places-list-item{display:flex;flex-direction:column;gap:0.15rem;width:100%;padding:0.6rem 0.9rem;border:none;border-bottom:1px solid var(--border);background:none;color:var(--text);text-align:left;font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;cursor:pointer}.places-list-item:last-child{border-bottom:none}.places-list-item:hover{background:var(--surface)}.places-list-title{font-size:0.88rem;font-weight:500}.places-list-date{font-size:0.76rem;color:var(--text-soft)}.places-popup{min-width:12rem;max-width:16rem;font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}.places-popup-title{margin:0 0 0.2rem;font-size:1rem}.places-popup-date{margin:0 0 0.4rem;font-size:0.78rem;color:var(--text-soft)}.places-popup-note{margin:0 0 0.5rem;font-size:0.85rem}.places-popup-photos{display:grid;grid-template-columns:repeat(2, 1fr);gap:0.3rem;margin-bottom:0.5rem}.places-popup-photos img{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:6px;cursor:zoom-in}.places-popup-delete{padding:0.3rem 0.6rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--accent);font-size:0.78rem;cursor:pointer}.places-popup-delete:hover{background:var(--accent-surface)}body.places-lightbox-open{overflow:hidden}.places-lightbox{position:fixed;inset:0;z-index:10000;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem}.places-lightbox[hidden]{display:none}.places-lightbox-row{position:relative;z-index:1;width:100%;display:flex;align-items:center;justify-content:center}.places-lightbox-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.9)}.places-lightbox-close{position:absolute;top:1rem;right:1rem;z-index:1;width:2.25rem;height:2.25rem;display:flex;align-items:center;justify-content:center;border:none;border-radius:999px;background:rgba(255,255,255,0.12);color:#fff;cursor:pointer}.places-lightbox-close:hover{background:rgba(255,255,255,0.22)}.places-lightbox-nav{position:relative;z-index:1;flex:0 0 auto;width:2.75rem;height:2.75rem;display:flex;align-items:center;justify-content:center;border:none;border-radius:999px;background:rgba(255,255,255,0.12);color:#fff;cursor:pointer;margin:0 0.75rem}.places-lightbox-nav:hover{background:rgba(255,255,255,0.22)}.places-lightbox-nav[hidden]{visibility:hidden}.places-lightbox-stage{position:relative;flex:1 1 auto;min-width:0;max-width:62rem;height:100%;display:flex;align-items:center;justify-content:center}.places-lightbox-img{max-width:100%;max-height:calc(100vh - 12rem);object-fit:contain;border-radius:6px;user-select:none;-webkit-user-drag:none}.places-lightbox-counter{position:absolute;bottom:-1.75rem;left:50%;transform:translateX(-50%);margin:0;font-size:0.8rem;color:rgba(255,255,255,0.7)}.places-lightbox-counter[hidden]{display:none}.places-lightbox-caption{position:relative;z-index:1;width:100%;max-width:32rem;margin-top:2.5rem;text-align:center;color:#fff}.places-lightbox-caption h3{margin:0 0 0.2rem;font-size:1.05rem}.places-lightbox-caption p{margin:0 0 0.3rem;font-size:0.85rem;color:rgba(255,255,255,0.75)}.places-lightbox-caption p[hidden]{display:none}@media screen and (max-width: 600px){.places-lightbox{padding:1rem 0.25rem;flex-direction:column}.places-lightbox-nav{width:2.25rem;height:2.25rem;margin:0 0.35rem}.places-lightbox-img{max-height:calc(100vh - 14rem)}}.places-toolbar{display:flex;align-items:center;gap:0.6rem;padding:0.6rem 0.9rem;margin-bottom:0.75rem;border-radius:8px;background:#1f2328;color:#eee;font-family:-apple-system, sans-serif;font-size:0.78rem}.places-toolbar button{font-size:0.78rem;padding:0.3rem 0.6rem;border-radius:5px;border:none;cursor:pointer;background:#2f81f7;color:#fff}body.place-form-open{overflow:hidden}.place-form-modal{position:fixed;inset:0;z-index:10000;justify-content:center;align-items:center;padding:4vh 1.25rem}.place-form-modal[hidden]{display:none}.place-form-modal:not([hidden]){display:flex}.place-form-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.55)}.place-form-panel{position:relative;width:100%;max-width:24rem;display:flex;flex-direction:column;gap:0.8rem;padding:1.25rem;background:var(--bg-card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-2)}.place-form-heading{margin:0;font-size:1.05rem}.place-form-field{display:flex;flex-direction:column;gap:0.35rem;font-size:0.82rem;font-weight:500;color:var(--text-soft)}.place-form-field input,.place-form-field textarea{padding:0.5rem 0.7rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:0.88rem;font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;resize:vertical}.place-form-field input:focus,.place-form-field textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.place-form-field input[type="file"]{padding:0.4rem 0;border:none;background:none;font-size:0.82rem}.place-form-actions{display:flex;align-items:center;gap:0.6rem}.place-form-actions button{padding:0.45rem 1rem;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:0.85rem;cursor:pointer}.place-form-actions .place-form-status{flex:1;font-size:0.78rem;color:var(--text-soft)}.place-form-actions .place-form-save{background:var(--accent);border-color:var(--accent);color:#fff}.place-form-actions .place-form-save:disabled{opacity:0.6;cursor:default}.profile-photo{display:block;width:11rem;height:11rem;border-radius:999px;object-fit:cover;margin:0 0 1.5rem;border:1px solid var(--border);box-shadow:var(--shadow-1)}
