.project-content{color:var(--text-muted)}.project-content .leaflet-container{border:1px solid var(--border);border-radius:.75rem}.html-cols{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:stretch;margin:1.75rem 0}.html-cols>*{min-width:0}.html-cols .dynamic-chart{margin:0;height:100%;display:flex;flex-direction:column}.html-cols .dynamic-chart-figure{margin:0;flex:1;display:flex;flex-direction:column}.html-cols .dynamic-chart-canvas{flex:1;display:flex;align-items:center;justify-content:center}@media (max-width: 640px){.html-cols{grid-template-columns:1fr!important}}.project-content>:first-child{margin-top:0}.project-content p,.project-content li,.project-content figcaption,.project-content blockquote,.project-content td{color:var(--text-muted)}.project-content h1,.project-content h2,.project-content h3,.project-content h4,.project-content h5,.project-content h6,.project-content th,.project-content strong{color:var(--text)}.project-content a{color:var(--primary)}.project-content img,.project-content video,.project-content iframe{border-radius:1rem}.project-content ul{list-style:disc;list-style-position:outside;padding-left:1.5rem;margin:1rem 0}.project-content ol{counter-reset:project-section;list-style:none!important;padding-left:2.25rem;margin:1rem 0}.project-content ol>li{counter-increment:project-section;position:relative;margin-bottom:.75rem}.project-content ol>li:before{content:counter(project-section) ".";position:absolute;left:-1.75rem;color:var(--text-muted);font-weight:600}.project-content li{margin-bottom:.5rem}.project-content ol ol,.project-content ol ul,.project-content ul ul,.project-content ul ol{margin:.75rem 0 .75rem 1.25rem}.project-content code:not(pre code){background:color-mix(in srgb,var(--primary) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--primary) 18%,var(--border));color:var(--text);border-radius:.5rem;padding:.15rem .45rem}.project-content .text-gray-400,.project-content .text-gray-500,.project-content .text-gray-600{color:var(--text-muted)!important}.project-content .text-gray-700,.project-content .text-gray-800,.project-content .text-gray-900,.project-content .text-red-800{color:var(--text)!important}.project-content .text-blue-600{color:var(--primary)!important}.project-content .bg-gray-50,.project-content .bg-gray-100,.project-content .bg-\[\#f8f8f8\]{background:var(--tag-bg)!important}.project-content .bg-white{background:var(--surface)!important}.project-content .border-gray-100,.project-content .border-gray-200,.project-content .border-gray-300,.project-content .divide-gray-100,.project-content .divide-gray-200{border-color:var(--border)!important}.project-content .hover\:bg-gray-50:hover{background:color-mix(in srgb,var(--primary) 8%,var(--surface))!important}.project-content .hover\:border-gray-400:hover,.project-content .hover\:border-gray-600:hover{border-color:color-mix(in srgb,var(--primary) 30%,var(--border))!important}.project-content .hover\:text-gray-700:hover,.project-content .hover\:text-gray-800:hover,.project-content .hover\:text-gray-900:hover,.project-content .group:hover .group-hover\:text-gray-700,.project-content .group:hover .group-hover\:text-gray-500{color:var(--primary)!important}.project-content .shadow-sm,.project-content .shadow-md{box-shadow:0 18px 45px #0f172a0f}.dark .project-content .shadow-sm,.dark .project-content .shadow-md{box-shadow:0 20px 48px #00000047}@media (max-width: 767px){.project-content table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}}.project-content{min-width:0;max-width:100%}.dark .project-content table thead{background:var(--tag-bg)!important}.dark .project-content table tbody{background:var(--surface)!important}.dark .project-content table tbody tr:hover{background:color-mix(in srgb,var(--primary) 5%,var(--surface))!important}.dark .project-content .divide-y>:not([hidden])~:not([hidden]){border-top-color:var(--border)!important}.project-content .btn-download{display:inline-flex;align-items:center;gap:.5rem;padding:.625rem 1.25rem;border-radius:30px;font-size:.875rem;font-weight:600;border:1px solid color-mix(in srgb,var(--primary) 18%,var(--border));background:color-mix(in srgb,var(--primary) 8%,var(--surface));color:var(--text);text-decoration:none!important;transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease;cursor:pointer}.project-content .btn-download:hover{background:color-mix(in srgb,var(--primary) 14%,var(--surface));border-color:color-mix(in srgb,var(--primary) 30%,var(--border));color:var(--primary)}.project-content .btn-download-primary{background:linear-gradient(135deg,var(--primary),var(--primary-hover));color:#fff!important;border-color:transparent;box-shadow:0 8px 20px color-mix(in srgb,var(--primary) 24%,transparent)}.project-content .btn-download-primary:hover{transform:translateY(-1px);box-shadow:0 12px 26px color-mix(in srgb,var(--primary) 32%,transparent);color:#fff!important}.dashboard-carousel{position:relative;margin:1.25rem 0;outline:none}@media (min-width: 640px){.dashboard-carousel{margin:1.5rem 0}}.carousel-viewport{position:relative;overflow:hidden;border-radius:.75rem;border:1px solid var(--border);background:var(--surface);cursor:grab}.carousel-viewport:active{cursor:grabbing}.carousel-dots-overlay{position:absolute;bottom:.75rem;left:0;right:0;display:flex;justify-content:center;gap:.375rem;pointer-events:none;z-index:10}.carousel-dots-overlay .carousel-dot{pointer-events:auto;background:#ffffff73;border:1px solid rgba(15,23,42,.28);box-shadow:0 0 0 1px #ffffffb8,0 4px 10px #0f172a2e}.carousel-dots-overlay .carousel-dot.active{background:#fffffff2;border-color:#0f172a6b;box-shadow:0 0 0 1px #ffffffeb,0 6px 14px #0f172a3d;transform:scale(1.4)}.carousel-track{display:flex;align-items:flex-start;transition:transform .25s cubic-bezier(.4,0,.2,1);will-change:transform}.carousel-track>*{flex:0 0 100%;width:100%;max-width:100%;min-width:0;margin:0;overflow:hidden}.carousel-track img{width:100%;height:auto;display:block;border-radius:0!important;border:none!important;box-shadow:none!important;outline:none!important;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.carousel-nav{display:flex;align-items:center;justify-content:center;gap:.625rem;margin-top:.75rem}.carousel-btn{width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s ease,border-color .15s ease,color .15s ease;padding:0}.carousel-btn:hover{background:color-mix(in srgb,var(--primary) 10%,var(--surface));border-color:var(--primary);color:var(--primary)}.carousel-dots{display:flex;gap:.375rem;align-items:center}.carousel-dot{width:7px;height:7px;border-radius:50%;border:none;background:var(--border);cursor:pointer;padding:0;transition:background .15s ease,transform .15s ease}.carousel-dot.active{background:var(--primary);transform:scale(1.4)}.carousel-counter{font-size:11px;font-weight:600;color:var(--text-muted);min-width:32px;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.carousel-caption{margin-top:.75rem;padding:0 .25rem;text-align:left}@media (min-width: 640px){.carousel-caption{margin-top:1rem}}.carousel-caption-title{font-size:.875rem;font-weight:600;color:var(--primary);margin:0 0 .3rem;line-height:1.3}.carousel-caption-desc{font-size:.8125rem;color:color-mix(in srgb,var(--text-muted) 80%,var(--text));margin:0;line-height:1.5}@media (prefers-reduced-motion: reduce){.carousel-track{transition:none!important}}.dynamic-chart{min-height:360px;margin:1.5rem 0}.dynamic-chart-figure{margin:1.5rem 0;padding:.875rem .75rem .625rem;border:1px solid var(--border);border-radius:.875rem;background:var(--surface)}@media (min-width: 640px){.dynamic-chart{margin:1.75rem 0}.dynamic-chart-figure{margin:1.75rem 0;padding:1.25rem 1.25rem 1rem}}@media (max-width: 639px){.dynamic-chart{min-height:280px}.dynamic-chart-figure{overflow-x:auto;-webkit-overflow-scrolling:touch}.dynamic-chart-canvas{min-width:460px;min-height:240px!important}.dynamic-chart-title{font-size:.9375rem!important}.dynamic-chart-subtitle{font-size:.75rem!important}}.dynamic-chart-header{margin-bottom:.875rem}.dynamic-chart-title{font-size:1rem;font-weight:700;color:var(--text)!important;margin:0 0 .25rem;line-height:1.35}.dynamic-chart-subtitle{font-size:.8125rem;color:var(--text-muted)!important;margin:0;line-height:1.45;font-style:normal!important;text-align:left!important}.dynamic-chart-canvas{width:100%;min-height:320px;display:flex;justify-content:center}.dynamic-chart-source{margin:.875rem 0 0;padding-top:.75rem;border-top:1px dashed var(--border);font-size:.7rem;color:var(--text-muted)!important;line-height:1.45;font-style:normal!important;text-align:left!important;letter-spacing:.01em}.dynamic-chart-source-label{font-weight:700;color:var(--primary);margin-right:.25rem}.dynamic-chart-canvas .apexcharts-tooltip,.dynamic-chart-canvas .apexcharts-text{font-family:inherit!important}.dynamic-chart-canvas .apexcharts-canvas,.dynamic-chart-canvas .apexcharts-svg{overflow:visible!important}.dynamic-chart-canvas .apexcharts-legend{overflow-x:auto!important;flex-wrap:nowrap!important;padding-bottom:4px!important;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.dynamic-chart-canvas .apexcharts-legend-series,.dynamic-chart-canvas .apexcharts-legend-text{white-space:nowrap!important;flex-shrink:0}.dynamic-chart-canvas .apexcharts-legend::-webkit-scrollbar{height:3px}.dynamic-chart-canvas .apexcharts-legend::-webkit-scrollbar-track{background:transparent}.dynamic-chart-canvas .apexcharts-legend::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.dynamic-chart-canvas .apexcharts-legend::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.dynamic-chart-canvas .apexcharts-yaxis-label tspan:nth-child(n+2),.dynamic-chart-canvas .apexcharts-xaxis-label tspan:nth-child(n+2){fill:var(--text-muted)!important;font-size:10px!important;font-weight:400!important}.dynamic-chart-canvas .apexcharts-tooltip{border:1px solid var(--border)!important;background:var(--surface)!important;color:var(--text)!important;box-shadow:0 8px 24px #0000001f!important}.dynamic-chart-canvas .apexcharts-tooltip .apexcharts-tooltip-text,.dynamic-chart-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label,.dynamic-chart-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value,.dynamic-chart-canvas .apexcharts-tooltip .apexcharts-tooltip-text-z-label,.dynamic-chart-canvas .apexcharts-tooltip .apexcharts-tooltip-text-z-value{color:var(--text)!important}.dynamic-chart-canvas .apexcharts-tooltip-title{background:color-mix(in srgb,var(--primary) 8%,var(--surface))!important;border-bottom:1px solid var(--border)!important;color:var(--text)!important;font-weight:600!important}.carousel-zoom-btn{position:absolute;top:.625rem;right:.625rem;z-index:15;width:36px;height:36px;border:none;border-radius:50%;background:#0000008c;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.875rem;opacity:0;transition:opacity .18s ease,background-color .18s ease,transform .18s ease}.carousel-viewport:hover .carousel-zoom-btn,.carousel-zoom-btn:focus-visible{opacity:1}.carousel-zoom-btn:hover{background:#000000c7;transform:scale(1.05)}@media (max-width: 768px){.carousel-zoom-btn{opacity:1}}.carousel-dots-below{display:none}@media (max-width: 639px){.carousel-dots-overlay{display:none!important}.carousel-dots-below{display:flex;justify-content:center;align-items:center;gap:.3rem;margin-top:.875rem;pointer-events:none}.carousel-dots-below .carousel-dot{width:5px;height:5px;pointer-events:none;cursor:default}.carousel-dots-below .carousel-dot.active{width:14px;border-radius:3px;transform:none}}.lightbox{position:fixed;inset:0;z-index:9999;display:flex;align-items:stretch;justify-content:stretch}.lightbox[hidden]{display:none!important}.lightbox-backdrop{position:absolute;inset:0;background:#000000f0;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);cursor:zoom-out}.lightbox-frame{position:relative;width:100%;height:100%;display:flex;flex-direction:column;z-index:1;pointer-events:none}.lightbox-frame>*{pointer-events:auto}.lightbox-close,.lightbox-prev,.lightbox-next{position:absolute;width:44px;height:44px;border:none;border-radius:50%;background:#ffffff24;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:background .18s ease,transform .18s ease;z-index:20}.lightbox-close:hover,.lightbox-prev:hover,.lightbox-next:hover{background:#ffffff47;transform:scale(1.05)}.lightbox-close{top:max(.875rem,env(safe-area-inset-top,0px));right:max(.875rem,env(safe-area-inset-right,0px))}.lightbox-prev{left:.875rem;top:50%;transform:translateY(-50%)}.lightbox-prev:hover{transform:translateY(-50%) scale(1.05)}.lightbox-next{right:.875rem;top:50%;transform:translateY(-50%)}.lightbox-next:hover{transform:translateY(-50%) scale(1.05)}@media (max-width: 480px){.lightbox-prev,.lightbox-next{width:40px;height:40px}.lightbox-prev{left:.5rem}.lightbox-next{right:.5rem}}.lightbox-stage{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:4rem 1rem 1rem;cursor:zoom-in;touch-action:none}.lightbox-stage.zoomed{cursor:grab}.lightbox-stage.is-panning{cursor:grabbing}.lightbox-img{max-width:100%;max-height:100%;display:block;border-radius:.5rem;box-shadow:0 24px 60px #00000080;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none;transform-origin:center center;will-change:transform;transition:transform .25s ease}.lightbox-img.zoomed{cursor:grab}.lightbox-info{padding:.75rem 1rem max(1rem,env(safe-area-inset-bottom,0px));text-align:center;color:#fff;background:linear-gradient(to top,rgba(0,0,0,.55),transparent)}.lightbox-counter{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.55;margin:0 0 .25rem}.lightbox-caption-title{font-size:.9375rem;font-weight:600;margin:0;line-height:1.35}.lightbox-caption-desc{font-size:.8125rem;opacity:.78;margin:.2rem 0 0;line-height:1.45}.lightbox-caption-title[hidden],.lightbox-caption-desc[hidden]{display:none}@media (prefers-reduced-motion: reduce){.lightbox-img,.lightbox-zoom-btn,.carousel-zoom-btn,.lightbox-close,.lightbox-prev,.lightbox-next{transition:none}}
