:root{--primary:#304529;--primary-dark:#243620;--primary-light:#5f8a50;--btn-green:#4a6d3f;--btn-green-dark:#3d5c34;--bs-primary:#304529;--bs-primary-rgb:48, 69, 41;--bs-primary-text-emphasis:#131c10;--bs-primary-bg-subtle:#d7ddd5;--bs-primary-border-subtle:#aeb8ab;--bs-link-color:#304529;--bs-link-color-rgb:48, 69, 41;--bs-link-hover-color:#243620;--bs-link-hover-color-rgb:36, 54, 32}.btn-primary{--bs-btn-bg:#304529;--bs-btn-border-color:#304529;--bs-btn-hover-bg:#243620;--bs-btn-hover-border-color:#1e2f1b;--bs-btn-active-bg:#1e2f1b;--bs-btn-active-border-color:#192816;--bs-btn-focus-shadow-rgb:85, 122, 73}.text-primary{--bs-text-opacity:1;color:#304529!important}.bg-primary{--bs-bg-opacity:1;background-color:#304529!important}.border-primary{--bs-border-opacity:1;border-color:#304529!important}.grecaptcha-badge{visibility:hidden!important}@view-transition{navigation:auto}body{scroll-behavior:smooth;margin:0;padding:0}.skip-link{z-index:2000;background:var(--primary);color:#fff;border-radius:0 0 .5rem .5rem;padding:.75rem 1.25rem;font-weight:500;text-decoration:none;transition:top .3s;position:fixed;top:-100px;left:1rem;box-shadow:0 4px 6px #0000001a}.skip-link:focus{outline-offset:-2px;outline:3px solid #fff;top:0}.btn-light:where(:not(:hover)){color:var(--primary)}.btn-light:hover{color:#fff;background-color:#0000}.btn-outline-light:hover{color:var(--primary)}.material-icons-base,.material-icons-outlined,.material-icons{vertical-align:middle;line-height:1px}a .material-icons-outlined,a .material-icons{font-size:40px}.contact-icon{font-size:30px}.navbar-toggler{color:#0000}.navbar-toggler .material-icons-outlined,.navbar-toggler .material-icons{color:#fff;font-size:30px}.about{font-size:40px}.about .material-icons-outlined,.about .material-icons{font-size:50px}nav{opacity:.95}.nav-link{background-color:#0000;background-image:linear-gradient(90deg,#304529,#304529),linear-gradient(90deg,#ffffffb3,#ffffffb3);background-position:100% 100%,0 100%;background-repeat:no-repeat;background-size:100% 3px,0 3px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;transition:background-size .4s}.nav-link:hover,.nav-link.active{background-size:0 3px,100% 3px}.header{color:#fff;background:linear-gradient(135deg,#304529 0%,#3f5a36 50%,#304529 100%);position:relative}.header:before{content:"";pointer-events:none;background-image:radial-gradient(circle at 25% 25%,#ffffff1a 0%,#0000 50%),radial-gradient(circle at 75% 75%,#ffffff0d 0%,#0000 50%);position:absolute;inset:0}.hover-float{transition:all .15s}.hover-float:hover{transform:translateY(-3px);box-shadow:0 8px 25px #00000026}.min-vh-50{min-height:60vh}.about-icon{vertical-align:middle;width:58px;height:58px;transition:all .15s;box-shadow:0 4px 15px #3045294d}.about-icon-container{transition:transform .15s}.about-icon-container:hover{transform:translateY(-5px)}.about-icon-container:hover .about-icon{box-shadow:0 8px 25px #30452966}.about-section{background:linear-gradient(135deg,#f8f9fa 0%,#fff 50%,#f8f9fa 100%);position:relative}.about-section:before{content:"";pointer-events:none;background-image:radial-gradient(circle at 20%,#30452905 0%,#0000 50%),radial-gradient(circle at 80% 20%,#30452905 0%,#0000 50%);position:absolute;inset:0}.about-item{transition:transform .15s;animation:1s ease-out both fadeInUp}.about-item:hover{transform:translateY(-5px)}.card img{height:250px}.project-not-found{height:250px}.modern-card{background:linear-gradient(145deg,#fff 0%,#f8f9fa 100%);border-radius:1rem;transition:all .15s cubic-bezier(.25,.46,.45,.94);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.modern-card:hover{transform:translateY(-5px);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.card-gradient-overlay{background:linear-gradient(90deg, var(--primary) 0%, #5f8a50 50%, var(--primary) 100%);background-size:200% 100%;height:4px;animation:3s infinite gradient-shift;position:absolute;top:0;left:0;right:0}.modern-card:hover .github-icon{transform:rotate(15deg)scale(1.1)}.modern-badge{background-color:var(--primary);color:#fff;border:none;border-radius:.5rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;transition:all .2s}.modern-badge:hover{background-color:var(--primary-dark);transform:scale(1.05);box-shadow:0 4px 8px #00000026}.modern-btn{background-color:var(--btn-green);color:#fff;border:none;border-radius:.75rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:500;transition:all .15s;display:inline-flex}.modern-btn:hover{background-color:var(--btn-green-dark);color:#fff;box-shadow:0 4px 14px #30452959}.modern-btn-light{color:var(--primary);background-color:#fff;border:none;border-radius:.75rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:500;transition:all .15s;display:inline-flex}.modern-btn-light:hover{color:var(--primary);background-color:#ffffffe6;box-shadow:0 4px 14px #0003}.modern-btn-outline{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;background-color:#ffffff0d;border:1.5px solid #fff6;border-radius:.75rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.modern-btn-outline:hover{color:#fff;background-color:#ffffff26;border-color:#fffc;box-shadow:0 4px 14px #0003}.project-arrow{transition:transform .2s}.modern-btn:hover .project-arrow{transform:translate(3px)}.blog-hero{padding:4rem 0;position:relative}.blog-hero .blog-hero-content{z-index:2;position:relative}.blog-hero .blog-hero-title{text-shadow:0 2px 4px #0000004d;animation:.8s ease-out slideInUp}.blog-hero .blog-hero-description{opacity:.95;max-width:800px;margin:0 auto;font-size:1.25rem;line-height:1.6;animation:.8s ease-out .2s both slideInUp}.blog-hero .blog-hero-underline{background:linear-gradient(90deg,#fffc 0%,#fff6 100%);border-radius:2px;width:80px;height:4px;margin:2rem auto 0;animation:.8s ease-out .4s both slideInUp}.blog-posts-section{background:linear-gradient(135deg,#f8f9fa 0%,#fff 100%);min-height:60vh;position:relative}.blog-posts-section:before{content:"";pointer-events:none;background-image:radial-gradient(circle at 20% 20%,#30452905 0%,#0000 50%),radial-gradient(circle at 80% 80%,#30452905 0%,#0000 50%);position:absolute;inset:0}.blog-posts-grid{flex-direction:column;gap:2rem;display:flex}.blog-post-card{background:linear-gradient(145deg,#fff 0%,#f8f9fa 100%);border-radius:1rem;transition:all .15s cubic-bezier(.25,.46,.45,.94);animation:.6s ease-out both slideInUp;position:relative;overflow:hidden;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.blog-post-card:before{content:"";background:linear-gradient(90deg, var(--primary) 0%, #5f8a50 50%, var(--primary) 100%);background-size:200% 100%;height:4px;animation:3s infinite gradient-shift;position:absolute;top:0;left:0;right:0}.blog-post-card:hover{transform:translateY(-5px);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.blog-post-content{padding:2rem}.blog-post-header{margin-bottom:1.5rem}.blog-post-title{margin:0 0 .5rem;font-size:1.5rem;font-weight:700;line-height:1.3}.blog-post-link{color:#1a1a1a;text-decoration:none;transition:color .2s}.blog-post-link:hover{color:var(--primary)}.blog-post-date{color:#6b7280;font-size:.875rem;font-weight:500}.blog-post-excerpt{color:#4b5563;margin-bottom:1.5rem;font-size:1rem;line-height:1.7}.blog-post-footer{justify-content:space-between;align-items:center;display:flex}.services-section{background:linear-gradient(135deg,#fff 0%,#f8f9fa 100%)}.modern-card{overflow:hidden}.services-grid .modern-card{min-height:220px}.hero-subtitle.opacity-85{opacity:.9}@media (max-width:768px){.services-grid .modern-card{min-height:auto}.modern-card .card-body{padding:1rem}}.blog-read-more-btn{background:var(--primary);color:#fff;border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.blog-read-more-btn .blog-arrow-icon{transition:transform .2s}.blog-read-more-btn:hover{background:var(--primary-dark);color:#fff;box-shadow:0 4px 14px #30452959}.blog-read-more-btn:hover .blog-arrow-icon{transform:translate(3px)}.blog-pagination{margin-top:3rem}.blog-pagination-btn{background:var(--primary);color:#fff;border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.blog-pagination-btn:hover{background:var(--primary-dark);color:#fff;box-shadow:0 4px 14px #30452959}.blog-pagination-info{color:#4b5563;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffc;border:1px solid #fff3;border-radius:.75rem;padding:.75rem 1rem}.blog-empty-state{padding:3rem 2rem}.blog-empty-state svg{opacity:.6}.blog-empty-state h3{margin-bottom:1rem;font-size:1.5rem}.blog-empty-state p{opacity:.8;font-size:1.1rem}@media (max-width:768px){.blog-hero{padding:2rem 0}.blog-hero .blog-hero-title{font-size:2rem}.blog-hero .blog-hero-description{font-size:1.1rem}.blog-post-content{padding:1.5rem}.blog-post-title{font-size:1.25rem}.blog-pagination .d-flex{flex-direction:column;gap:1rem}}.custom-gradient{color:#fff;background:linear-gradient(60deg,#304529 0%,#3f5a36 100%);position:relative}pre,code{font-family:Fira Code,Consolas,monospace}pre{word-wrap:break-word;white-space:pre-wrap;width:98%;max-width:320px;margin:0 auto;overflow-x:auto}code{white-space:pre-wrap}.waves{width:100%;height:15vh;min-height:100px;max-height:150px;margin-bottom:-7px;position:relative}.post{width:100%}.post__cover,.post__cover--none{object-fit:contain;width:100%;height:auto;max-height:400px}.post__cover--none{display:none}@keyframes move-forever{0%{transform:translate(-90px)}to{transform:translate(85px)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes gradient-shift{0%,to{background-position:0%}50%{background-position:100%}}@keyframes slideInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes color-scroll{0%{background-position:100% 0}to{background-position:-200% 0}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.parallax use{animation:25s cubic-bezier(.55,.5,.45,.5) infinite move-forever}.parallax use:first-child{animation-duration:7s;animation-delay:-2s}.parallax use:nth-child(2){animation-duration:10s;animation-delay:-3s}.parallax use:nth-child(3){animation-duration:13s;animation-delay:-4s}.parallax use:nth-child(4){animation-duration:16s;animation-delay:-5s}@media (max-width:480px){.waves{height:25px;min-height:25px}.content{height:45vh}.hero-image{height:30%}}@media (min-width:481px) and (max-width:767px){.waves{height:35px;min-height:35px}.content{height:35vh}.hero-image{height:32%}}@media (min-width:768px) and (max-width:1023px){.waves{height:40px;min-height:40px}.content{height:30vh}.hero-image{height:35%}}@media (min-width:1024px) and (max-width:1199px){.waves{height:45px;min-height:45px}.content{height:25vh}.hero-image{height:40%}}@media (min-width:1200px){.waves{height:50px;min-height:50px}.content{height:20vh}.hero-image{height:60%}}@media (min-width:412px){pre{max-width:400px}}@media (min-width:576px){pre{max-width:520px}}@media (min-width:768px){pre{max-width:700px}}@media (min-width:992px){pre{max-width:900px}}@media (min-width:1200px){pre{max-width:1000px}}@media (min-width:1400px){pre{width:100%;max-width:1200px}}.fade-in{opacity:0;animation:1s ease-in-out forwards fadeIn}.hover-scale{transition:transform .15s}.hover-scale:hover{transform:scale(1.025)}.slide-in-left{animation:.5s ease-in-out forwards slideInLeft;transform:translate(-100%)}.animate-spin{animation:1s linear infinite spin}.resume-content{background:linear-gradient(135deg,#f8f9fa 0%,#fff 50%,#f8f9fa 100%);min-height:80vh}.resume-section{animation:.8s ease-out both fadeInUp}.resume-section:nth-child(2){animation-delay:.2s}.resume-section:nth-child(3){animation-delay:.4s}.resume-divider{background:linear-gradient(90deg, transparent 0%, var(--primary) 50%, transparent 100%);opacity:.3;border:none;height:2px;margin:2.5rem 0}.sidebar-content{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffc;border:1px solid #3045291a;border-radius:1rem;padding:1.5rem;box-shadow:0 4px 6px -1px #0000001a}.resume-hero-content{animation:1s ease-out slideInLeft}.resume-title{animation:1s ease-out .2s both fadeInUp}.resume-description{animation:1s ease-out .4s both fadeInUp}.resume-cta{animation:1s ease-out .6s both fadeInUp}.social-icon{width:24px;height:24px;transition:all .15s}.social-link{transition:all .15s}.social-link:hover{transform:translateY(-2px);color:var(--bs-dark)!important}.social-link:hover .social-icon{transform:scale(1.1)}footer .input-group-sm .form-control{border-radius:.375rem 0 0 .375rem}footer .btn{white-space:nowrap;border-radius:0 .375rem .375rem 0}footer .alert{font-size:.875rem}.hover-lift:hover{transform:translateY(-5px)!important}.card{transition:all .15s ease-in-out}.card:hover{box-shadow:0 .5rem 1rem #0000004d!important}.spinning{animation:1.5s linear infinite spin}.map-page-root{--map-bg:#0b1410;--map-bg-elev:#111d18;--map-accent:#7ed957;--map-accent-dim:#7ed95766;--map-text:#e6efe6;--map-text-dim:#9aa89a;--map-text-faint:#6b7a6b;--map-surface:#0d1812d1;--map-surface-2:#14241bb3;--map-shadow:0 1px 0 #ffffff0a inset, 0 12px 32px #00000080, 0 2px 6px #00000040;--map-shadow-subtle:0 1px 0 #ffffff0a inset, 0 6px 18px #00000059;--map-top:68px;--map-bottom:26px;--map-edge:.6rem;--map-border:#ffffff0f;--map-border-strong:#ffffff1a;--map-border-accent:#7ed95759;--map-glow:0 0 0 1px var(--map-border-accent), 0 4px 14px #7ed9572e;font-family:var(--font-geist-sans,"Inter", system-ui, sans-serif);color:var(--map-text);background:var(--map-bg)}.map-page-root .maplibregl-canvas{outline:none}.map-page-root .maplibregl-ctrl-attrib,.map-page-root .maplibregl-ctrl-bottom-right{font-size:.68rem;font-family:var(--font-geist-sans,system-ui, sans-serif);border-radius:.35rem 0 0;padding:3px 8px;color:var(--map-text-dim)!important;background:#0b1410c7!important}.map-page-root .maplibregl-ctrl-attrib a{color:var(--map-accent)!important}.map-page-root .maplibregl-ctrl-attrib-button{display:none}.map-page-root .maplibregl-ctrl-group{-webkit-backdrop-filter:blur(16px)saturate(170%);overflow:hidden;border:1px solid var(--map-border-strong)!important;box-shadow:var(--map-shadow)!important;background:linear-gradient(#14241bc7 0%,#0d1812d9 100%)!important;border-radius:.5rem!important}.map-page-root .maplibregl-ctrl-group button{background-color:#0000!important;width:32px!important;height:32px!important}.map-page-root .maplibregl-ctrl-group button+button{border-top:1px solid var(--map-border)!important}.map-page-root .maplibregl-ctrl-group button:hover{background:#ffffff0d!important}.map-page-root .maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon,.map-page-root .maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon,.map-page-root .maplibregl-ctrl-compass .maplibregl-ctrl-icon{filter:invert()brightness(1.6)!important}.map-page-root .maplibregl-ctrl-scale{display:none!important}.map-page-root .maplibregl-ctrl-bottom-left{left:8px!important;bottom:calc(var(--map-bottom) + 6px)!important}.map-page-root .maplibregl-ctrl-bottom-right{right:8px!important;bottom:calc(var(--map-bottom) + 6px)!important}.map-page-root .maplibregl-ctrl-top-right{display:none!important}.map-page-root .maplibregl-popup-content{font-family:var(--font-geist-sans,system-ui, sans-serif);background:var(--map-surface)!important;color:var(--map-text)!important;border:1px solid var(--map-border-strong)!important;border-radius:.5rem!important}.glass{border:1px solid var(--map-border-strong);box-shadow:var(--map-shadow);color:var(--map-text);-webkit-backdrop-filter:blur(16px)saturate(170%);background:linear-gradient(#14241bc7 0%,#0d1812d9 100%);border-radius:.5rem}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.map-loading-skeleton{color:var(--map-accent);background:var(--map-bg);z-index:1;flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex;position:absolute;inset:0}.map-loading-spinner{border:2px solid #7ed95726;border-top-color:var(--map-accent);border-radius:50%;width:36px;height:36px;animation:.9s linear infinite spin}.map-loading-text{letter-spacing:.06em;text-transform:uppercase;color:var(--map-text-dim);font-size:.85rem}.map-view-wrapper{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.map-contents{top:calc(var(--map-top) + var(--map-edge));left:var(--map-edge);bottom:calc(var(--map-bottom) + var(--map-edge));z-index:5;flex-direction:column;width:300px;max-width:calc(100vw - 1.5rem);animation:.3s slideInLeft;display:flex;position:absolute;overflow:hidden}.map-contents-reopen{top:calc(var(--map-top) + var(--map-edge));left:var(--map-edge);z-index:5;color:var(--map-text);background:var(--map-surface);border:1px solid var(--map-border-strong);cursor:pointer;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:.4rem;align-items:center;gap:.4rem;padding:.45rem .8rem;font-family:inherit;font-size:.78rem;font-weight:600;display:inline-flex;position:absolute}.map-contents-reopen:hover{color:var(--map-accent)}.map-contents-header{border-bottom:1px solid var(--map-border);flex-shrink:0;align-items:center;gap:.5rem;padding:.6rem .75rem .5rem;display:flex;position:relative}.map-contents-header:after{content:"";background:linear-gradient(90deg, var(--map-accent) 0%, transparent 40%);opacity:.4;height:1px;position:absolute;bottom:-1px;left:.75rem;right:.75rem}.map-contents-header-icon{color:var(--map-accent);flex-shrink:0}.map-contents-title{color:var(--map-text);letter-spacing:.02em;text-transform:uppercase;flex:1;margin:0;font-size:.85rem;font-weight:600}.map-contents-action,.map-contents-collapse{border:1px solid var(--map-border-strong);color:var(--map-text-dim);cursor:pointer;background:0 0;border-radius:.3rem;padding:3px 8px;font-family:inherit;font-size:.7rem;transition:color .15s,border-color .15s}.map-contents-action:hover{color:var(--map-accent);border-color:var(--map-accent-dim)}.map-contents-collapse{justify-content:center;align-items:center;width:22px;height:22px;padding:0;font-size:1.1rem;line-height:1;display:inline-flex}.map-contents-collapse:hover{color:#ff8585;border-color:#ff646466}.map-contents-body{scrollbar-width:thin;scrollbar-color:var(--map-border-strong) transparent;flex:1;padding:.4rem .5rem .6rem;overflow-y:auto}.map-contents-body::-webkit-scrollbar{width:6px}.map-contents-body::-webkit-scrollbar-thumb{background:var(--map-border-strong);border-radius:3px}.map-contents-basemaps{flex-wrap:wrap;gap:4px;padding:.3rem .4rem .5rem;display:flex}.map-contents-basemaps .map-basemap-pill{border:1px solid var(--map-border);color:var(--map-text-dim);cursor:pointer;background:#ffffff08;border-radius:.3rem;align-items:center;gap:.3rem;padding:4px 10px;font-family:inherit;font-size:.76rem;font-weight:500;transition:background .18s,color .18s,border-color .18s;display:inline-flex}.map-contents-basemaps .map-basemap-pill:hover{color:var(--map-text);border-color:var(--map-border-strong);background:#ffffff0f}.map-contents-basemaps .map-basemap-pill.is-active{background:var(--map-accent);color:#0b1410;border-color:var(--map-accent);font-weight:600;box-shadow:0 2px 6px #7ed95740}.map-basemap-icon{flex-shrink:0}.map-contents-reset-view{border:1px solid var(--map-border);color:var(--map-text-dim);cursor:pointer;background:0 0;border-radius:.3rem;align-items:center;gap:.3rem;padding:4px 10px;font-family:inherit;font-size:.76rem;font-weight:500;transition:color .15s,border-color .15s;display:inline-flex}.map-contents-reset-view:hover{color:var(--map-text);border-color:var(--map-accent-dim)}.map-contents-group{margin-bottom:.25rem}.map-contents-group-toggle{color:var(--map-text-faint);text-transform:uppercase;letter-spacing:.09em;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.35rem;width:100%;padding:.5rem .4rem .3rem;font-family:inherit;font-size:.68rem;font-weight:600;transition:color .15s;display:flex}.map-contents-group-toggle:hover{color:var(--map-text)}.map-contents-group-toggle-chevron{opacity:.6;transition:transform .2s}.map-contents-group-toggle.is-open .map-contents-group-toggle-chevron{transform:rotate(90deg)}.map-contents-list{flex-direction:column;gap:3px;margin:0 0 .5rem;padding:0;list-style:none;display:flex}.map-contents-item{border:1px solid #0000;border-radius:.4rem;padding:.4rem .5rem;transition:background .15s,border-color .15s;position:relative}.map-contents-item:hover{border-color:var(--map-border);background:#ffffff09}.map-contents-item.is-on{border-color:var(--map-border);background:#7ed9570a}.map-contents-item.is-on:before{content:"";background:var(--map-accent);opacity:.6;border-radius:1px;width:2px;position:absolute;top:.4rem;bottom:.4rem;left:0}.map-contents-item.is-off{opacity:.5}.map-contents-item-row{align-items:center;gap:.45rem;min-height:26px;display:flex}.map-contents-visibility{color:var(--map-accent);cursor:pointer;background:0 0;border:none;border-radius:.3rem;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;display:inline-flex}.map-contents-item.is-off .map-contents-visibility{color:var(--map-text-faint)}.map-contents-visibility:hover{background:#ffffff0f}.map-contents-item-name{color:var(--map-text);text-align:left;cursor:pointer;background:0 0;border:none;flex:1;padding:0;font-family:inherit;font-size:.82rem}.map-contents-item.is-off .map-contents-item-name{color:var(--map-text-dim)}.map-contents-opacity-readout{color:var(--map-text-faint);font-variant-numeric:tabular-nums;text-align:right;flex-shrink:0;width:36px;font-size:.7rem}.map-contents-item-details{background:#0000002e;border-radius:.3rem;flex-direction:column;gap:.45rem;margin-top:.4rem;padding:.4rem .45rem .45rem;display:flex}.map-contents-item-desc{color:var(--map-text-dim);margin:0;font-size:.72rem;line-height:1.45}.map-contents-item-desc-soft{margin-top:.3rem;font-style:italic}.map-contents-opacity{width:100%;display:block}.map-contents-opacity input[type=range]{width:100%;accent-color:var(--map-accent);cursor:pointer;height:4px}.map-page-root input[type=range]{appearance:none;background:#ffffff14;border-radius:999px;outline:none;height:4px}.map-page-root input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--map-accent);cursor:pointer;border:2px solid #0b1410;border-radius:50%;width:14px;height:14px;transition:transform .12s;box-shadow:0 1px 3px #0006}.map-page-root input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}.map-page-root input[type=range]::-moz-range-thumb{background:var(--map-accent);cursor:pointer;border:2px solid #0b1410;border-radius:50%;width:14px;height:14px;box-shadow:0 1px 3px #0006}.map-contents-footer{border-top:1px solid var(--map-border);padding:.55rem .85rem .7rem}.map-contents-intro-cta{background:var(--map-accent);color:#0b1410;cursor:pointer;border:none;border-radius:.3rem;width:100%;padding:7px 10px;font-family:inherit;font-size:.78rem;font-weight:600;transition:background .15s}.map-contents-intro-cta:hover{background:#94e567}.map-desktop-layout{display:contents}.map-right-stack{top:calc(var(--map-top) + var(--map-edge));right:var(--map-edge);bottom:calc(var(--map-bottom) + var(--map-edge));z-index:5;pointer-events:none;flex-direction:column;gap:.5rem;width:300px;max-width:calc(100vw - 1.5rem);display:flex;position:absolute}.map-right-stack>*{pointer-events:auto}.map-tools{z-index:5;flex-direction:column;flex-shrink:0;width:100%;animation:.3s slideInRight;display:flex;position:relative;overflow:hidden}.map-tools-reopen{z-index:5;width:100%;color:var(--map-text);background:var(--map-surface);border:1px solid var(--map-border-strong);cursor:pointer;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:.4rem;align-items:center;gap:.4rem;padding:.45rem .8rem;font-family:inherit;font-size:.78rem;font-weight:600;display:inline-flex;position:relative}.map-tools-reopen:hover{color:var(--map-accent)}.map-tools-header{border-bottom:1px solid var(--map-border);flex-shrink:0;align-items:center;gap:.5rem;min-height:38px;padding:.6rem .75rem .5rem;display:flex;position:relative}.map-tools-header:after{content:"";background:linear-gradient(90deg, var(--map-accent) 0%, transparent 40%);opacity:.4;height:1px;position:absolute;bottom:-1px;left:.75rem;right:.75rem}.map-tools-header-icon{color:var(--map-accent);flex-shrink:0}.map-tools-title{color:var(--map-text);letter-spacing:.02em;text-transform:uppercase;flex:1;margin:0;font-size:.85rem;font-weight:600;line-height:1}.map-tools-shortcut-hint{color:var(--map-text-faint);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--map-border);white-space:nowrap;text-overflow:ellipsis;border-radius:.25rem;max-width:110px;padding:2px 5px;font-family:ui-monospace,monospace;font-size:.6rem;overflow:hidden}.map-tools-collapse{border:1px solid var(--map-border-strong);width:22px;height:22px;color:var(--map-text-dim);cursor:pointer;background:0 0;border-radius:.3rem;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:1.1rem;line-height:1;display:inline-flex}.map-tools-collapse:hover{color:#ff8585;border-color:#ff646466}.map-tools-grid{flex-shrink:0;grid-template-columns:1fr 1fr;gap:.4rem;margin:0;padding:.5rem;list-style:none;display:grid}.map-tool-tile{border:1px solid var(--map-border);width:100%;min-height:52px;color:var(--map-text);cursor:pointer;text-align:left;background:#ffffff06;border-radius:.4rem;align-items:flex-start;gap:.5rem;padding:.5rem .55rem;font-family:inherit;transition:background .18s,border-color .18s,transform .18s,box-shadow .18s;display:flex}.map-tool-tile:hover{border-color:var(--map-border-accent);box-shadow:var(--map-shadow-subtle);background:#7ed95712;transform:translateY(-1px)}.map-tool-tile.is-active{background:var(--map-accent);color:#0b1410;border-color:var(--map-accent);box-shadow:var(--map-glow);transform:translateY(0)}.map-tool-tile.is-active .map-tool-tile-sub kbd{color:#0b1410;background:#0000002e;border-color:#0003}.map-tool-tile-icon{width:26px;height:26px;color:var(--map-accent);background:#ffffff0d;border-radius:.3rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.map-tool-tile.is-active .map-tool-tile-icon{color:#0b1410;background:#00000026}.map-tool-tile-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.map-tool-tile-name{letter-spacing:.01em;font-size:.78rem;font-weight:600;line-height:1.1}.map-tool-tile-sub{color:var(--map-text-faint);align-items:center;gap:.25rem;font-size:.62rem;display:inline-flex}.map-tool-tile-sub kbd{border:1px solid var(--map-border-strong);color:var(--map-text-dim);background:#ffffff14;border-radius:.2rem;padding:0 4px;font-family:ui-monospace,monospace;font-size:.62rem;line-height:1.4}.map-tool-tile-badge{text-transform:uppercase;letter-spacing:.06em;color:var(--map-accent);font-weight:600}.map-tool-tile.is-active .map-tool-tile-badge{color:#0b1410}.map-tool-drawer{z-index:4;flex-direction:column;flex:auto;width:100%;min-height:0;animation:.3s slideInRight;display:flex;position:relative;overflow:hidden}.map-tool-drawer-header{border-bottom:1px solid var(--map-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:.55rem .75rem .45rem;display:flex}.map-tool-drawer-title{color:var(--map-accent);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:600}.map-tool-drawer-close{border:1px solid var(--map-border-strong);color:var(--map-text-dim);cursor:pointer;background:0 0;border-radius:.3rem;justify-content:center;align-items:center;width:22px;height:22px;font-family:inherit;font-size:1.05rem;line-height:1;display:inline-flex}.map-tool-drawer-close:hover{color:#ff8585;border-color:#ff646466}.map-tool-drawer-body{scrollbar-width:thin;scrollbar-color:var(--map-border-strong) transparent;flex:1;padding:.7rem .8rem .85rem;overflow-y:auto}.map-tool-drawer-body::-webkit-scrollbar{width:6px}.map-tool-drawer-body::-webkit-scrollbar-thumb{background:var(--map-border-strong);border-radius:3px}.tool-card{flex-direction:column;gap:.75rem;display:flex}.tool-help{color:var(--map-text-dim);border-left:2px solid var(--map-accent-dim);background:#0003;border-radius:.35rem;margin:0;padding:.5rem .65rem;font-size:.78rem;line-height:1.55}.tool-help-warn{color:#ffb066;border-left-color:#ffb066}.tool-readout{grid-template-columns:repeat(3,1fr);gap:.45rem;margin:0;display:grid}.tool-readout>div{border:1px solid var(--map-border);background:linear-gradient(#ffffff0d 0%,#ffffff05 100%);border-radius:.4rem;padding:.5rem .6rem;transition:border-color .15s}.tool-readout>div:hover{border-color:var(--map-border-strong)}.tool-readout dt{color:var(--map-text-faint);text-transform:uppercase;letter-spacing:.07em;font-size:.64rem;font-weight:600}.tool-readout dd{font-variant-numeric:tabular-nums;color:var(--map-text);margin:.2rem 0 0;font-size:.95rem;font-weight:500}.tool-readout-3{grid-template-columns:repeat(3,1fr)}.tool-input-row{align-items:stretch;gap:.45rem;display:flex}.tool-input{flex-direction:column;flex:1;gap:.3rem;display:flex}.tool-input input[type=number]{border:1px solid var(--map-border-strong);color:var(--map-text);background:#0000004d;border-radius:.35rem;padding:6px 8px;font-family:inherit;font-size:.85rem;transition:border-color .15s,box-shadow .15s}.tool-input input[type=number]:focus{border-color:var(--map-accent);outline:none;box-shadow:0 0 0 2px #7ed9572e}.tool-input input[type=range]{padding:0}.tool-input-label{text-transform:uppercase;letter-spacing:.06em;color:var(--map-text-faint);justify-content:space-between;align-items:center;font-size:.7rem;font-weight:600;display:flex}.tool-input-value{color:var(--map-accent);font-family:ui-monospace,monospace;font-size:.8rem;font-weight:600}.tool-segmented{border:1px solid var(--map-border-strong);background:#0000004d;border-radius:.35rem;align-self:end;gap:2px;padding:2px;display:inline-flex}.tool-segmented-btn{color:var(--map-text-dim);cursor:pointer;text-transform:uppercase;letter-spacing:.04em;background:0 0;border:none;border-radius:.25rem;padding:5px 9px;font-family:inherit;font-size:.75rem;font-weight:600}.tool-segmented-btn.is-active{background:var(--map-accent);color:#0b1410}.tool-actions{flex-wrap:wrap;gap:.45rem;display:flex}.tool-btn-primary,.tool-btn-secondary{cursor:pointer;border-radius:.4rem;align-items:center;gap:.35rem;padding:7px 14px;font-family:inherit;font-size:.8rem;font-weight:600;transition:background .18s,border-color .18s,color .18s,transform .12s,box-shadow .18s;display:inline-flex}.tool-btn-primary{background:var(--map-accent);color:#0b1410;border:1px solid var(--map-accent);box-shadow:0 2px 6px #7ed95738}.tool-btn-primary:hover:not(:disabled){background:#94e567;transform:translateY(-1px);box-shadow:0 4px 10px #7ed9574d}.tool-btn-primary:active:not(:disabled){transform:translateY(0)}.tool-btn-primary:disabled{opacity:.4;cursor:not-allowed}.tool-btn-secondary{color:var(--map-text-dim);border:1px solid var(--map-border-strong);background:#ffffff08}.tool-btn-secondary:hover:not(:disabled){color:var(--map-text);border-color:var(--map-border-accent);background:#ffffff0d}.tool-btn-secondary:disabled{opacity:.4;cursor:not-allowed}.inspect-result{border:1px solid var(--map-border);background:#0003;border-radius:.4rem;padding:.6rem .7rem}.inspect-result-title{color:var(--map-text);margin:0;font-size:.92rem;font-weight:600}.inspect-result-layer{color:var(--map-accent);text-transform:uppercase;letter-spacing:.08em;margin:.15rem 0 .5rem;font-size:.65rem;font-weight:600}.inspect-result-props{color:var(--map-text);flex-direction:column;gap:.15rem;margin:0 0 .5rem;font-size:.76rem;display:flex}.inspect-row{border-bottom:1px dashed var(--map-border);grid-template-columns:minmax(80px,38%) 1fr;gap:.4rem;padding:.2rem 0;display:grid}.inspect-row:last-child{border-bottom:none}.inspect-row dt{color:var(--map-text-faint);text-overflow:ellipsis;font-family:ui-monospace,monospace;font-size:.72rem;overflow:hidden}.inspect-row dd{word-break:break-word;margin:0;font-size:.78rem}.inspect-result-source{color:var(--map-accent);align-items:center;gap:.25rem;margin-top:.4rem;font-size:.74rem;font-weight:500;text-decoration:none;display:inline-flex}.inspect-result-source:hover{text-decoration:underline}.profile-chart-wrap{border:1px solid var(--map-border);background:#0003;border-radius:.4rem;padding:.5rem .6rem .3rem}.profile-chart{width:100%;height:90px;display:block}.profile-axis{color:var(--map-text-faint);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:.25rem;font-size:.7rem;display:flex}.map-legend{z-index:4;flex-direction:column;flex:auto;width:100%;min-height:0;animation:.3s slideInRight;display:flex;position:relative;overflow:hidden}.map-legend-reopen{z-index:4;width:100%;color:var(--map-text);background:var(--map-surface);border:1px solid var(--map-border-strong);cursor:pointer;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:.4rem;padding:.45rem .85rem;font-family:inherit;font-size:.78rem;font-weight:600;position:relative}.map-legend-header{border-bottom:1px solid var(--map-border);flex-shrink:0;align-items:center;gap:.5rem;padding:.55rem .75rem .45rem;display:flex}.map-legend-title{color:var(--map-accent);letter-spacing:.04em;text-transform:uppercase;flex:1;margin:0;font-size:.78rem;font-weight:600}.map-legend-collapse{border:1px solid var(--map-border-strong);color:var(--map-text-dim);cursor:pointer;background:0 0;border-radius:.3rem;justify-content:center;align-items:center;width:22px;height:22px;display:inline-flex}.map-legend-collapse:hover{color:#ff8585;border-color:#ff646466}.map-legend-empty{color:var(--map-text-faint);text-align:center;margin:0;padding:1.25rem .85rem;font-size:.78rem;font-style:italic}.map-legend-list{scrollbar-width:thin;scrollbar-color:var(--map-border-strong) transparent;flex-direction:column;gap:.45rem;margin:0;padding:.55rem .55rem .7rem;list-style:none;display:flex;overflow-y:auto}.map-legend-item{border:1px solid var(--map-border);background:#0000002e;border-radius:.4rem;padding:.55rem .7rem;transition:border-color .15s}.map-legend-item:hover{border-color:var(--map-border-strong)}.map-legend-item-title{text-transform:uppercase;letter-spacing:.07em;color:var(--map-text-dim);margin:0 0 .5rem;font-size:.7rem;font-weight:600}.map-legend-stops{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.map-legend-stop{color:var(--map-text);align-items:center;gap:.5rem;font-size:.76rem;display:flex}.map-legend-swatch{border:1px solid var(--map-border-strong);border-radius:.2rem;flex-shrink:0;width:20px;height:12px;box-shadow:0 1px 2px #0000004d}.map-status-bar{z-index:6;-webkit-backdrop-filter:blur(14px)saturate(160%);border-top:1px solid var(--map-border-strong);height:26px;color:var(--map-text);font-feature-settings:"tnum" 1;background:linear-gradient(#0b1410e0 0%,#0b1410f2 100%);justify-content:space-between;align-items:center;gap:.5rem;padding:0 .6rem;font-size:.7rem;display:flex;position:absolute;bottom:0;left:0;right:0;box-shadow:inset 0 -1px #ffffff08}.map-status-group{align-items:center;gap:0;display:flex}.map-status-cell{border-right:1px solid var(--map-border);align-items:center;gap:.35rem;height:16px;padding:0 .5rem;display:inline-flex}.map-status-cell:last-child{border-right:none}.map-status-key{text-transform:uppercase;letter-spacing:.06em;color:var(--map-text-faint);font-size:.62rem;font-weight:600}.map-status-val{color:var(--map-text);font-family:ui-monospace,monospace;font-size:.72rem}.map-status-val-strong{color:var(--map-accent);font-weight:600}.map-status-cell-credit{color:var(--map-text-faint);font-size:.66rem}.map-intro{z-index:7;-webkit-backdrop-filter:blur(20px)saturate(170%);background:linear-gradient(#14241bd9 0%,#0d1812eb 100%);border-radius:.65rem;align-items:flex-start;gap:.6rem;width:calc(100% - 3rem);max-width:480px;padding:1.6rem 1.75rem 1.7rem;transition:opacity .25s,transform .25s;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 1px #ffffff0d,0 30px 60px #0009,0 8px 20px #00000059}.map-intro.is-hiding{opacity:0;transform:translate(-50%,-54%)}.map-intro-body{flex:1}.map-intro-eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--map-accent);background:#7ed9571f;border:1px solid #7ed9574d;border-radius:.25rem;margin-bottom:.45rem;padding:2px 8px;font-size:.65rem;font-weight:700;display:inline-block}.map-intro-heading{color:var(--map-text);letter-spacing:-.01em;margin:0 0 .5rem;font-size:1.4rem;font-weight:600;line-height:1.2}.map-intro-text{color:var(--map-text-dim);margin:0 0 1.1rem;font-size:.88rem;line-height:1.55}.map-intro-actions{gap:.5rem;display:flex}.map-intro-cta{background:var(--map-accent);color:#0b1410;cursor:pointer;border:none;border-radius:.35rem;padding:8px 18px;font-family:inherit;font-size:.85rem;font-weight:600;transition:background .15s,transform .15s}.map-intro-cta:hover{background:#94e567;transform:translateY(-1px)}.map-intro-close{border:1px solid var(--map-border-strong);color:var(--map-text-dim);cursor:pointer;background:0 0;border-radius:.35rem;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;display:inline-flex}.map-intro-close:hover{color:#ff8585;border-color:#ff646466}@media (max-width:900px){.map-contents,.map-right-stack{width:270px}}@media (max-width:720px){.map-desktop-layout{display:none}.map-mobile-handle,.map-mobile-sheet{display:flex}.map-mobile-body .map-contents,.map-mobile-body .map-tools,.map-mobile-body .map-tool-drawer,.map-mobile-body .map-legend{flex:auto;min-height:0;width:100%!important;max-width:none!important;max-height:none!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:0 0!important;border:none!important;animation:none!important;position:relative!important;inset:auto!important}.map-mobile-body .map-contents-header,.map-mobile-body .map-tools-header,.map-mobile-body .map-tool-drawer-header,.map-mobile-body .map-legend-header,.map-mobile-body .map-contents-collapse,.map-mobile-body .map-tools-collapse,.map-mobile-body .map-tool-drawer-close,.map-mobile-body .map-legend-collapse,.map-mobile-body .map-contents-action,.map-mobile-body .map-tools-shortcut-hint{display:none}.map-mobile-body .map-contents-body,.map-mobile-body .map-tools-grid,.map-mobile-body .map-tool-drawer-body,.map-mobile-body .map-legend-list{padding:.5rem .25rem}.map-status-bar{height:24px;font-size:.62rem}.map-page-root{--map-bottom:24px}.map-status-cell.map-status-cell-credit,.map-status-cell:nth-child(4){display:none}.map-status-cell{padding:0 .35rem}.map-intro{top:calc(var(--map-top) + 8px);width:auto;max-width:none;padding:.85rem 1rem .95rem;left:8px;right:8px;transform:none}.map-intro.is-hiding{transform:translateY(-8px)}.map-intro-heading{font-size:1rem}.map-intro-text{margin-bottom:.6rem;font-size:.78rem}.map-intro-cta{padding:6px 12px;font-size:.78rem}.map-page-root .maplibregl-ctrl-bottom-left{bottom:calc(var(--map-bottom) + 4px)!important;left:8px!important}.map-page-root .maplibregl-ctrl-bottom-right{display:none!important}}.map-mobile-handle,.map-mobile-sheet{display:none}@media (max-width:720px){.map-mobile-handle{bottom:var(--map-bottom);z-index:7;cursor:pointer;color:var(--map-text);background:var(--map-surface);-webkit-backdrop-filter:blur(14px)saturate(160%);border-top:1px solid var(--map-border-strong);border-radius:.75rem .75rem 0 0;flex-direction:column;align-items:center;gap:.3rem;padding:.45rem 1rem .55rem;transition:transform .2s;display:flex;position:absolute;left:0;right:0;box-shadow:0 -6px 20px #00000040}.map-mobile-handle.is-open{opacity:0;pointer-events:none;transform:translateY(-100%)}.map-mobile-grip{background:var(--map-border-strong);border-radius:999px;width:36px;height:4px}.map-mobile-label{text-transform:uppercase;letter-spacing:.06em;color:var(--map-accent);font-size:.7rem;font-weight:600}.map-mobile-sheet{left:0;right:0;bottom:var(--map-bottom);z-index:8;background:var(--map-surface);-webkit-backdrop-filter:blur(14px)saturate(160%);border-top:1px solid var(--map-border-strong);border-radius:.75rem .75rem 0 0;flex-direction:column;max-height:62vh;transition:transform .28s cubic-bezier(.2,.7,.2,1);display:flex;position:absolute;overflow:hidden;transform:translateY(110%);box-shadow:0 -10px 30px #0006}.map-mobile-sheet.is-open{transform:translateY(0)}.map-mobile-sheet-header{flex-shrink:0;justify-content:space-between;align-items:center;padding:.4rem .5rem .3rem;display:flex}.map-mobile-grip-large{background:var(--map-border-strong);border-radius:999px;width:36px;height:4px;margin:0 auto}.map-mobile-close{border:1px solid var(--map-border-strong);color:var(--map-text-dim);cursor:pointer;background:0 0;border-radius:.35rem;justify-content:center;align-items:center;width:26px;height:26px;display:inline-flex}.map-mobile-close:hover{color:#ff8585;border-color:#ff646466}.map-mobile-tabs{border-bottom:1px solid var(--map-border);flex-shrink:0;gap:.25rem;padding:.4rem .5rem 0;display:flex}.map-mobile-tab{color:var(--map-text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:.35rem .35rem 0 0;flex:1;justify-content:center;align-items:center;gap:.35rem;padding:.55rem .4rem;font-family:inherit;font-size:.78rem;font-weight:500;display:inline-flex}.map-mobile-tab.is-active{color:var(--map-accent);border-bottom-color:var(--map-accent)}.map-mobile-body{scrollbar-width:thin;scrollbar-color:var(--map-border-strong) transparent;flex:1;min-height:200px;max-height:56vh;overflow-y:auto}}@media (prefers-reduced-motion:reduce){.map-contents,.map-tools,.map-tool-drawer,.map-legend,.map-intro,.map-mobile-sheet,.map-mobile-handle{transition:none!important;animation:none!important}.no-anim{animation:none}}@keyframes slideInRight{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}
@font-face{font-family:GeistSans;src:url(../media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:GeistSans Fallback;src:local(Arial);ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.0%;size-adjust:106.28%}.geistsans_d5a4f12f-module__VUaFUW__className{font-family:GeistSans,GeistSans Fallback}.geistsans_d5a4f12f-module__VUaFUW__variable{--font-geist-sans:"GeistSans", "GeistSans Fallback"}