*,*::before,*::after{box-sizing:border-box}html{font-size:17px;scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;font-family:Calibri,"Gill Sans","Gill Sans MT",Candara,Corbel,"Segoe UI",Arial,sans-serif;font-size:1rem;line-height:1.72;color:#1c2b1c;background-color:#effbef;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{color:#145214;line-height:1.22;font-weight:700;margin-top:0;margin-bottom:0.6em}h1{font-size:clamp(1.9rem, 4vw, 2.6rem)}h2{font-size:clamp(1.45rem, 3vw, 1.85rem)}h3{font-size:1.3rem}h4{font-size:1.1rem}h5{font-size:1rem}h6{font-size:.875rem;text-transform:uppercase;letter-spacing:0.06em}p{margin-top:0;margin-bottom:1.2rem}strong{font-weight:700}em{font-style:italic}a{color:#145214;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:color 0.15s}a:hover{color:#067306}a:focus-visible{outline:2px solid #08a508;outline-offset:2px;border-radius:2px}ul,ol{margin-top:0;margin-bottom:1.2rem;padding-left:1.5rem}ul li,ol li{margin-bottom:0.3rem}img{max-width:100%;height:auto;display:block}code{font-family:"Courier New",Courier,"Lucida Console",monospace;font-size:0.875em;background:rgba(20,82,20,0.07);color:#145214;padding:2px 6px;border-radius:4px}pre{font-family:"Courier New",Courier,"Lucida Console",monospace;font-size:0.875rem;background:#145214;color:#c8f0c8;padding:1.25rem 1.5rem;border-radius:6px;overflow-x:auto;margin:1.5rem 0}pre code{background:none;color:inherit;padding:0;font-size:inherit}.highlight{background:#145214;border-radius:6px;margin:1.5rem 0;overflow-x:auto}.highlight pre{margin:0;background:none}blockquote{margin:1.75rem 0;padding:0.9rem 1.5rem;border-left:4px solid #08a508;background:rgba(8,165,8,0.1);border-radius:0 6px 6px 0;color:#4e6550}blockquote p:last-child{margin-bottom:0}hr{border:none;border-top:1px solid rgba(20,82,20,0.12);margin:2.5rem 0}table{width:100%;border-collapse:collapse;font-size:.875rem;margin:1.5rem 0}table th{background:#145214;color:#fff;padding:0.6rem 0.9rem;text-align:left;font-weight:700}table td{padding:0.55rem 0.9rem;border-bottom:1px solid rgba(20,82,20,0.12)}table tr:nth-child(even) td{background:#dff4df}.skip-link{position:absolute;top:-100%;left:1rem;padding:0.5rem 1rem;background:#08a508;color:#fff;border-radius:6px;font-weight:700;text-decoration:none;z-index:9999}.skip-link:focus{top:1rem}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:0.01ms !important;transition-duration:0.01ms !important}html{scroll-behavior:auto}}.container{max-width:1100px;margin-left:auto;margin-right:auto;padding-left:1.5rem;padding-right:1.5rem}.container--narrow{max-width:720px;margin-left:auto;margin-right:auto;padding-left:1.5rem;padding-right:1.5rem}.site-header{background-color:#145214;position:sticky;top:0;z-index:200;box-shadow:0 2px 12px rgba(0,0,0,0.22)}.site-nav{display:flex;align-items:center;justify-content:space-between;height:64px}.site-logo{color:#fff;text-decoration:none;font-size:1.2rem;font-weight:700;letter-spacing:-0.01em;flex-shrink:0}.site-logo:hover{color:#0cee0c}.nav-links{display:flex;align-items:center;list-style:none;margin:0;padding:0;gap:0.2rem}.nav-links a{display:block;color:rgba(255,255,255,0.82);text-decoration:none;padding:0.38rem 0.9rem;border-radius:6px;font-size:0.95rem;transition:background 0.15s, color 0.15s}.nav-links a:hover{color:#fff;background:rgba(255,255,255,0.1)}.nav-links a.active{color:#fff;background:rgba(8,165,8,0.3);font-weight:700}.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;background:none;border:none;cursor:pointer;padding:6px;border-radius:6px;margin-left:1rem}.nav-toggle span{display:block;width:22px;height:2px;background:#fff;border-radius:2px;transition:transform 0.2s, opacity 0.2s}.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.site-main{min-height:calc(100vh - 64px - 180px)}.breadcrumb{margin-bottom:1rem}.breadcrumb a{font-size:.875rem;color:rgba(255,255,255,0.65);text-decoration:none}.breadcrumb a:hover{color:#fff}.site-footer{background-color:#145214;color:rgba(255,255,255,0.75);padding:2.5rem 0 1.25rem;margin-top:4rem}.site-footer a{color:#1ff41f;text-decoration:none}.site-footer a:hover{color:#fff}.footer-inner{display:flex;flex-wrap:wrap;gap:2.5rem;align-items:flex-start;margin-bottom:1.5rem}.footer-brand{flex:1;min-width:180px}.footer-brand p{margin:0.35rem 0 0;font-size:.875rem;opacity:0.7}.footer-logo{color:#fff !important;font-size:1.05rem;font-weight:700}.footer-nav,.footer-social{display:flex;flex-direction:column;gap:0.45rem;font-size:.875rem}.footer-copy{margin:0;font-size:.8rem;opacity:0.45;border-top:1px solid rgba(255,255,255,0.1);padding-top:1.1rem}@media (max-width: 768px){.nav-toggle{display:flex}.nav-links{display:none;position:absolute;top:64px;left:0;right:0;background:#145214;flex-direction:column;align-items:stretch;padding:0.75rem 1.5rem 1.25rem;gap:0.15rem;box-shadow:0 6px 16px rgba(0,0,0,0.25)}.nav-links.is-open{display:flex}.nav-links a{padding:0.6rem 0.9rem;font-size:1rem}.footer-inner{gap:1.5rem}}.btn{display:inline-flex;align-items:center;gap:0.35rem;padding:0.55rem 1.3rem;border-radius:6px;font-family:Calibri,"Gill Sans","Gill Sans MT",Candara,Corbel,"Segoe UI",Arial,sans-serif;font-size:0.92rem;font-weight:700;line-height:1.2;text-decoration:none;cursor:pointer;border:2px solid transparent;transition:background 0.15s, border-color 0.15s, color 0.15s, transform 0.1s;white-space:nowrap}.btn:focus-visible{outline:2px solid #08a508;outline-offset:3px}.btn:active{transform:scale(0.97)}.btn-primary{background:#08a508;color:#fff;border-color:#08a508}.btn-primary:hover{background:#067306;border-color:#067306;color:#fff}.btn-secondary{background:transparent;color:#145214;border-color:#145214}.btn-secondary:hover{background:#145214;color:#fff}.btn-ghost{background:transparent;color:#4e6550;border-color:rgba(20,82,20,0.22)}.btn-ghost:hover{background:#dff4df;color:#145214;border-color:rgba(20,82,20,0.22)}.btn-outline-light{background:transparent;color:rgba(255,255,255,0.85);border-color:rgba(255,255,255,0.45)}.btn-outline-light:hover{background:rgba(255,255,255,0.1);color:#fff;border-color:rgba(255,255,255,0.7)}.btn-lg{padding:0.7rem 1.75rem;font-size:1rem}.btn-sm{padding:0.38rem 0.9rem;font-size:.875rem}.tag{display:inline-block;background:rgba(8,165,8,0.1);color:#056b05;font-size:.8rem;font-weight:700;padding:3px 10px;border-radius:20px;border:1px solid rgba(8,165,8,0.2)}.tech-badge{display:inline-block;background:rgba(20,82,20,0.07);color:#145214;font-size:.8rem;font-weight:700;padding:4px 11px;border-radius:6px;border:1px solid rgba(20,82,20,0.12)}.hero{background-color:#effbef;border-bottom:3px solid #08a508;padding:5rem 0 4.5rem}.hero-eyebrow{font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:#067306;margin-bottom:0.75rem}.hero-title{font-size:clamp(2.1rem, 5vw, 3.5rem);color:#145214;line-height:1.1;margin-bottom:1rem;max-width:700px}.hero-subtitle{font-size:1.15rem;color:#4e6550;max-width:560px;line-height:1.65;margin-bottom:2.25rem}.hero-actions{display:flex;gap:0.75rem;flex-wrap:wrap}.section-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:1.5rem;border-bottom:2px solid rgba(20,82,20,0.12);padding-bottom:0.75rem;gap:1rem}.section-title{font-size:1.5rem;margin:0}.section-link{font-size:.875rem;font-weight:700;color:#067306;text-decoration:none;flex-shrink:0}.section-link:hover{color:#145214}.projects-section{padding:4rem 0}.project-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(290px, 1fr));gap:1.5rem}.project-card{background:#fff;border-radius:10px;border:1px solid rgba(20,82,20,0.12);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow 0.2s, transform 0.2s;border-top:3px solid #08a508}.project-card:hover{box-shadow:0 6px 24px rgba(20,82,20,0.13);transform:translateY(-3px)}.card-thumbnail{aspect-ratio:16 / 9;overflow:hidden;background:#dff4df}.card-thumbnail img{width:100%;height:100%;object-fit:cover;transition:transform 0.3s}.card-thumbnail--placeholder{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg, #dff4df 0%, #d0efd0 100%)}.project-card:hover .card-thumbnail img{transform:scale(1.03)}.card-body{padding:1.2rem 1.4rem 1.5rem;display:flex;flex-direction:column;flex:1}.card-title{font-size:1.05rem;margin-bottom:0.55rem;line-height:1.3}.card-title a{color:#145214;text-decoration:none}.card-title a:hover{color:#067306}.card-excerpt{font-size:.875rem;color:#4e6550;line-height:1.58;margin-bottom:1rem;flex:1}.card-tags{display:flex;flex-wrap:wrap;gap:0.35rem;margin-bottom:1.1rem}.card-links{display:flex;gap:0.6rem;flex-wrap:wrap;margin-top:auto}.projects-page{padding:4rem 0}.projects-page .page-intro{max-width:720px;margin-bottom:2.5rem}.projects-page .page-intro h1{margin-bottom:0.5rem}.projects-page .page-intro p{color:#4e6550;font-size:1.05rem}.content-page{padding:4rem 0}.content-page .page-header{margin-bottom:2.5rem;padding-bottom:1rem;border-bottom:2px solid rgba(20,82,20,0.12)}.content-page .page-header h1{margin-bottom:0.4rem}.content-page .page-header .page-subtitle{font-size:1.1rem;color:#4e6550;margin:0}@media (max-width: 576px){.hero{padding:3rem 0 3rem}.hero-actions{flex-direction:column}.project-grid{grid-template-columns:1fr}}.project-header{background-color:#145214;padding:3rem 0 2.75rem;color:#fff}.project-header h1,.project-header h2,.project-header h3{color:#fff}.project-title{font-size:clamp(1.8rem, 4vw, 2.8rem);color:#fff;line-height:1.15;max-width:720px;margin-bottom:0.75rem}.project-subtitle{font-size:1.1rem;color:rgba(255,255,255,0.72);max-width:600px;line-height:1.65;margin-bottom:1.4rem}.project-meta{display:flex;align-items:center;gap:1rem;margin-bottom:1.1rem;flex-wrap:wrap}.meta-item{font-size:.875rem;color:rgba(255,255,255,0.6)}.meta-item.meta-type{background:rgba(255,255,255,0.12);padding:2px 10px;border-radius:20px;font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:0.06em;color:rgba(255,255,255,0.8)}.tech-stack{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:1.75rem}.tech-stack .tech-badge{background:rgba(255,255,255,0.1);color:rgba(255,255,255,0.9);border-color:rgba(255,255,255,0.22)}.project-actions{display:flex;gap:0.75rem;flex-wrap:wrap}.project-hero-image{background:#145214;padding-bottom:0}.project-hero-image img{width:100%;max-height:460px;object-fit:cover;border-radius:10px 10px 0 0}.project-body{padding:3.5rem 0 2rem}.project-body>.container--narrow>h2:first-child{margin-top:0}.project-body h2{margin-top:2.75rem;padding-bottom:0.5rem;border-bottom:2px solid rgba(20,82,20,0.12);font-size:1.5rem}.project-body h3{margin-top:2rem;color:#145214}.project-body img{border-radius:6px;margin:2rem 0;box-shadow:0 2px 10px rgba(20,82,20,0.08);width:100%}.project-body .results-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(130px, 1fr));gap:1rem;margin:2rem 0}.project-body .result-card{background:rgba(8,165,8,0.07);border:1px solid rgba(8,165,8,0.18);border-radius:6px;padding:1rem;text-align:center}.project-body .result-card .result-value{font-size:1.9rem;font-weight:700;color:#145214;display:block;line-height:1.1}.project-body .result-card .result-label{font-size:.8rem;color:#4e6550;margin-top:0.3rem;display:block}.project-body .callout{background:rgba(8,165,8,0.08);border-left:4px solid #08a508;border-radius:0 6px 6px 0;padding:1rem 1.25rem;margin:1.75rem 0;font-size:.875rem}.project-body .callout strong{color:#145214}.project-body .callout p:last-child{margin-bottom:0}.project-footer-cta{padding:2.5rem 0 3rem;background:#dff4df;border-top:1px solid rgba(20,82,20,0.12);margin-top:2rem}.cta-block{background:#fff;border:1px solid rgba(20,82,20,0.12);border-top:3px solid #08a508;border-radius:10px;padding:2rem 2.25rem;margin-bottom:1.5rem}.cta-block h2{font-size:1.35rem;margin-bottom:0.5rem}.cta-block p{color:#4e6550;margin-bottom:1.25rem}.project-nav{margin-top:0.75rem}.app-header{background:#145214;padding:2rem 0;color:#fff}.app-header h1{color:#fff;font-size:1.8rem;margin:0.6rem 0 0.5rem}.app-description{color:rgba(255,255,255,0.72);font-size:1rem;margin:0 0 1.25rem}.app-embed-wrapper{background:#111;line-height:0}.app-embed-wrapper iframe{width:100%;height:72vh;min-height:520px;display:block;border:none}.app-placeholder{padding:4rem 0;text-align:center}.placeholder-inner{max-width:420px;margin:0 auto}.placeholder-icon{font-size:3rem;margin-bottom:1rem;line-height:1}.app-notes{padding:2.5rem 0 3rem;border-top:1px solid rgba(20,82,20,0.12)}@media (max-width: 768px){.project-header{padding:2rem 0 2rem}.project-actions{flex-direction:column}.project-body{padding:2.25rem 0 1.5rem}.cta-block{padding:1.5rem}.app-embed-wrapper iframe{height:60vh;min-height:400px}}
