.portfolio{--color-forest:#1b5e20;--color-forest-strong:#14481a;--color-forest-soft:#e7efe8;--color-page-bg:#f5f5f5;--color-surface:#fff;--color-surface-alt:#ebebeb;--color-border:#d4d4d4;--color-text:#1a1a1a;--color-text-muted:#4d4d4d;--color-text-on-forest:#fff;--color-focus-ring:#1b5e20;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:5rem;--section-pad-y:clamp(3.5rem, 8vw, 6rem);--section-pad-x:clamp(1.25rem, 5vw, 2.5rem);--section-header-gap:clamp(2rem, 4vw, 3rem);--radius-sm:8px;--radius-md:14px;--radius-lg:22px;--shadow-resting:0 1px 3px #141e1614, 0 1px 2px #141e160f;--shadow-raised:0 12px 28px #1428182e, 0 4px 10px #1428181a;--font-sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--line-tight:1.15;--line-body:1.6;--content-max:1080px;--transition-fast:.14s ease;--transition-med:.22s ease;color:var(--color-text);background-color:var(--color-page-bg);font-family:var(--font-sans);line-height:var(--line-body);min-height:100%}@media (prefers-color-scheme:dark){.portfolio:not([data-theme=light]){--color-forest:#7cc98a;--color-forest-strong:#a3e0ad;--color-forest-soft:#1c261e;--color-page-bg:#121212;--color-surface:#1c1c1c;--color-surface-alt:#242424;--color-border:#383838;--color-text:#f0f0f0;--color-text-muted:#b0b0b0;--color-text-on-forest:#121212;--color-focus-ring:#7cc98a;--shadow-resting:0 1px 3px #00000080, 0 1px 2px #0006;--shadow-raised:0 14px 32px #0009, 0 6px 14px #00000073}}.portfolio[data-theme=dark]{--color-forest:#7cc98a;--color-forest-strong:#a3e0ad;--color-forest-soft:#1c261e;--color-page-bg:#121212;--color-surface:#1c1c1c;--color-surface-alt:#242424;--color-border:#383838;--color-text:#f0f0f0;--color-text-muted:#b0b0b0;--color-text-on-forest:#121212;--color-focus-ring:#7cc98a;--shadow-resting:0 1px 3px #00000080, 0 1px 2px #0006;--shadow-raised:0 14px 32px #0009, 0 6px 14px #00000073}.portfolio *,.portfolio :before,.portfolio :after{box-sizing:border-box}.portfolio p,.portfolio h1,.portfolio h2,.portfolio h3,.portfolio ul{margin:0}.portfolio :focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}@media (prefers-reduced-motion:reduce){.portfolio *,.portfolio :before,.portfolio :after{transition-duration:.001ms!important;animation-duration:.001ms!important}}.skip-link{z-index:100;background:var(--color-forest);color:var(--color-text-on-forest);padding:var(--space-sm) var(--space-md);border-radius:0 0 var(--radius-sm) 0;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.section{width:100%;padding:var(--section-pad-y) var(--section-pad-x)}.section--alt{background-color:var(--color-surface-alt)}.section__inner{max-width:var(--content-max);margin:0 auto}.section__eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--color-forest);margin-bottom:var(--space-sm);padding-bottom:var(--space-sm);font-size:.8rem;display:inline-block}.section__title{font-size:clamp(1.6rem,4vw,2.2rem);line-height:var(--line-tight);color:var(--color-text);margin-bottom:var(--space-2xl);padding-bottom:var(--space-xl)}.section__lead{color:var(--color-text-muted);max-width:62ch;line-height:var(--line-body)}.site-header{z-index:20;background-color:color-mix(in srgb, var(--color-page-bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border);padding:0 var(--section-pad-x);position:sticky;top:0}.site-header__inner{max-width:var(--content-max);justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;margin:0 auto;display:flex}.brand{align-items:center;gap:var(--space-xs);color:var(--color-text);font-weight:700;text-decoration:none;display:flex}.brand__mark{border-radius:var(--radius-sm);object-fit:contain;background:0 0;width:32px;height:32px;padding-top:2px;padding-bottom:2px;padding-left:4px;display:block}.header-actions{align-items:center;gap:var(--space-lg);display:flex}.nav{gap:var(--space-lg);display:flex}.nav a{color:var(--color-text-muted);padding:var(--space-xs) 0;transition:color var(--transition-fast), border-color var(--transition-fast);border-bottom:2px solid #0000;text-decoration:none}.nav a:hover{color:var(--color-forest);border-bottom-color:var(--color-forest)}@media (width<=640px){.nav{display:none}}.theme-toggle{border:1px solid var(--color-border);background:var(--color-surface);width:40px;height:40px;color:var(--color-text-muted);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast), background-color var(--transition-fast), transform var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle:hover{color:var(--color-forest);border-color:var(--color-forest)}.theme-toggle:active{transform:scale(.94)}.theme-toggle__glyph{transition:transform var(--transition-med);display:block}.theme-toggle:hover .theme-toggle__glyph{transform:rotate(-12deg)}.intro__grid{grid-template-columns:1.3fr 1fr;align-items:center;gap:clamp(2rem,6vw,4.5rem);display:grid}.intro__name{font-size:clamp(2.2rem,6vw,3.4rem);line-height:var(--line-tight);margin-bottom:var(--space-sm)}.intro__name em{color:var(--color-forest);font-style:normal}.intro__role{color:var(--color-forest);margin-bottom:var(--space-lg);padding-bottom:var(--space-lg);font-size:1.05rem;font-weight:600}.intro__blurb{color:var(--color-text-muted);max-width:52ch;margin-bottom:var(--space-2xl);padding-bottom:var(--space-xl)}.intro__actions{gap:var(--space-md);flex-wrap:wrap;display:flex}.intro__image{aspect-ratio:4/5;border-radius:var(--radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-resting);overflow:hidden}.intro__image-photo{object-fit:cover;width:100%;height:100%;display:block}@media (width<=780px){.intro__grid{grid-template-columns:1fr}.intro__image{max-width:320px}.intro__blurb{max-width:none}}.btn{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-sm);font:inherit;cursor:pointer;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);border:2px solid #0000;font-weight:600;text-decoration:none;display:inline-flex}.btn:active{transform:translateY(1px)}.btn--primary{background:var(--color-forest);color:var(--color-text-on-forest)}.btn--primary:hover{background:var(--color-forest-strong)}.btn--outline{color:var(--color-forest);border-color:var(--color-forest);background:0 0}.btn--outline:hover{background:var(--color-forest-soft)}.btn--icon{object-fit:contain;flex-shrink:0;width:20px;height:20px}.about__body{gap:var(--space-md);color:var(--color-text-muted);display:grid}.about__facts{gap:var(--space-md);margin-top:var(--space-lg);flex-wrap:wrap;padding:0;list-style:none;display:flex}.about__facts li{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);color:var(--color-text)}.about__facts strong{color:var(--color-forest)}.skills__grid{gap:var(--space-md);margin-top:var(--section-header-gap);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}@media (width>=760px){.skills__grid{grid-template-columns:repeat(3,1fr)}}.skill-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);box-shadow:var(--shadow-resting);gap:var(--space-sm);flex-direction:column;display:flex}.skill-card__head{align-items:center;gap:var(--space-sm);display:flex}.skill-card__icon{border-radius:var(--radius-sm);background:var(--color-forest-soft);width:32px;height:32px;color:var(--color-forest);flex:none;place-items:center;font-size:1rem;display:grid}.skill-card__title{color:var(--color-text);flex:1;min-width:0;font-size:.95rem}.skill-card__level{text-transform:uppercase;letter-spacing:.04em;color:var(--color-forest);background:var(--color-forest-soft);padding:2px var(--space-sm);border-radius:999px;flex:none;font-size:.7rem;font-weight:600}.skill-card__meter{background:var(--color-surface-alt);border-radius:999px;height:5px;overflow:hidden}.skill-card__meter-fill{background:var(--color-forest);border-radius:999px;height:100%}.cases__grid{gap:var(--space-lg);margin-top:var(--section-header-gap);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));display:grid}.case-card{text-align:left;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;font:inherit;color:inherit;box-shadow:var(--shadow-resting);transition:transform var(--transition-med), box-shadow var(--transition-med), border-color var(--transition-med);flex-direction:column;padding:0;display:flex;position:relative;overflow:hidden}.case-card:hover,.case-card:focus-visible{box-shadow:var(--shadow-raised);border-color:var(--color-forest);transform:translateY(-6px)}.case-card__banner{background:linear-gradient(135deg, var(--color-forest), var(--color-forest-strong));height:132px;padding:var(--space-md);align-items:flex-end;display:flex}.case-card__tag{background:color-mix(in srgb, var(--color-text-on-forest), transparent 80%);color:#fff;padding:2px var(--space-sm);border-radius:999px;font-size:.75rem;font-weight:600}.case-card__body{padding:var(--space-xl);gap:var(--space-sm);flex-direction:column;flex:1;display:flex}.case-card__title{color:var(--color-text);font-size:1.15rem;line-height:var(--line-tight);min-height:calc(2 * 1.15rem * var(--line-tight))}.case-card__summary{color:var(--color-text-muted);font-size:.95rem}.case-card__footer{gap:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border);flex-direction:column;margin-top:auto;display:flex}.case-card__metrics{gap:var(--space-lg);margin:0;padding-left:0;list-style:none;display:flex}.case-card__metric-value{color:var(--color-forest);font-size:1.3rem;font-weight:700;line-height:1.1;display:block}.case-card__metric-label{color:var(--color-text-muted);font-size:.75rem}.case-card__cue{color:var(--color-forest);align-items:center;gap:4px;font-size:.9rem;font-weight:600;display:inline-flex}.modal-overlay{z-index:50;padding:var(--space-lg);background:#0a120c8c;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-lg);width:100%;max-width:720px;margin:var(--space-2xl) 0;box-shadow:var(--shadow-raised);border:1px solid var(--color-border);animation:modal-in var(--transition-med)}@keyframes modal-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.modal__banner{border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:linear-gradient(135deg, var(--color-forest), var(--color-forest-strong));height:160px;position:relative}.modal__close{top:var(--space-md);right:var(--space-md);width:40px;height:40px;color:var(--color-forest-strong);cursor:pointer;background:#ffffffe6;border:none;border-radius:50%;place-items:center;font-size:1.2rem;display:grid;position:absolute}.modal__body{padding:clamp(1.5rem,4vw,2.75rem)}.modal__title{font-size:clamp(1.4rem,4vw,2rem);line-height:var(--line-tight);margin-bottom:var(--space-xs)}.modal__meta{letter-spacing:.08em;text-transform:uppercase;color:var(--color-forest);margin-bottom:var(--space-md);font-size:.8rem;font-weight:600;display:inline-block}.modal__section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--color-forest);margin:var(--space-xl) 0 var(--space-md);padding-bottom:var(--space-xs);font-size:1rem}.modal__text{color:var(--color-text-muted);line-height:var(--line-body);padding-bottom:var(--space-lg)}.modal__metrics{gap:var(--space-md);margin:var(--space-xl) 0;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));padding:0;list-style:none;display:grid}.modal__metrics li{background:var(--color-surface-alt);border-radius:var(--radius-md);padding:var(--space-sm)}.modal__list{color:var(--color-text-muted);line-height:var(--line-body);padding-left:1.4rem;padding-bottom:var(--space-lg);margin-top:0;margin-bottom:0;list-style:outside}.modal__list li{line-height:var(--line-body)}.modal__list li:not(:last-child){margin-bottom:var(--space-md)}.modal__list li::marker{color:var(--color-forest)}.carousel{margin:var(--space-xl) 0}.carousel__viewport{border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-alt);position:relative;overflow:hidden}.carousel__track{transition:transform var(--transition-med);display:flex}.carousel__slide{aspect-ratio:16/10;flex:0 0 100%}.carousel__image{object-fit:contain;width:100%;height:100%;display:block}.carousel__arrow{width:40px;height:40px;color:var(--color-forest-strong);cursor:pointer;transition:background-color var(--transition-fast), transform var(--transition-fast);background:#ffffffe6;border:none;border-radius:50%;place-items:center;font-size:1.6rem;line-height:1;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.carousel__arrow:hover{background:#fff}.carousel__arrow:active{transform:translateY(-50%)scale(.94)}.carousel__arrow--prev{left:var(--space-sm)}.carousel__arrow--next{right:var(--space-sm)}.carousel__status{margin:var(--space-sm) 0 0;text-align:center;color:var(--color-text-muted);font-size:.8rem}.carousel__dots{justify-content:center;gap:var(--space-xs);margin-top:var(--space-xs);display:flex}.carousel__dot{background:var(--color-border);cursor:pointer;width:9px;height:9px;transition:background-color var(--transition-fast), transform var(--transition-fast);border:none;border-radius:50%;padding:0}.carousel__dot--active{background:var(--color-forest);transform:scale(1.2)}.contact__card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-resting);text-align:center;padding:clamp(2rem,5vw,3.5rem)}p.contact__lead{margin-left:auto;margin-right:auto}.contact__actions{gap:var(--space-md);margin-top:var(--space-xl);flex-wrap:wrap;justify-content:center;display:flex}.site-footer{border-top:1px solid var(--color-border);padding:var(--space-xl) var(--space-lg);text-align:center;color:var(--color-text-muted);font-size:.9rem}
