:root{--bg:#fbfbfa;--surface:#ffffff;--surface-2:#f4f4f2;--text:#1c1d1f;--text-2:#6d6f74;--text-3:#9b9da3;--line:rgba(23,24,28,0.1);--line-strong:rgba(23,24,28,0.22);--accent:#3d5a80;--accent-soft:rgba(61,90,128,0.08);--busy:rgba(61,90,128,0.14);--busy-text:#3d5a80;--shadow:0 1px 2px rgba(23,24,28,0.04),0 8px 32px rgba(23,24,28,0.06);--font-heading:"Helvetica Neue",Helvetica,Arial,sans-serif;--font-body:"Helvetica Neue",Helvetica,Arial,sans-serif;--ease:cubic-bezier(0.22,1,0.36,1);--radius:4px;--header-h:72px;color-scheme:light}[data-theme=dark]{--bg:#15161a;--surface:#1a1b20;--surface-2:#1f2026;--text:#eae9e4;--text-2:#a3a4a9;--text-3:#6f7076;--line:rgba(255,255,255,0.08);--line-strong:rgba(255,255,255,0.2);--accent:#93b3d4;--accent-soft:rgba(147,179,212,0.1);--busy:rgba(147,179,212,0.16);--busy-text:#93b3d4;--shadow:0 1px 2px rgba(0,0,0,0.2),0 8px 32px rgba(0,0,0,0.28);color-scheme:dark}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:1rem;line-height:1.65;-webkit-font-smoothing:antialiased;transition:background-color .35s var(--ease),color .35s var(--ease)}::selection{background:var(--accent);color:var(--bg)}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:500;line-height:1.12;letter-spacing:-.02em}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}input,textarea{font:inherit;color:var(--text)}.container{width:min(1120px,100% - 3rem);margin-inline:auto}.page{padding-top:calc(var(--header-h) + clamp(2.5rem, 8vh, 5.5rem));padding-bottom:clamp(4rem,10vh,7rem);min-height:100vh}.kicker{display:flex;align-items:center;gap:.75rem;font-size:.72rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--text-2);margin-bottom:1.5rem}.kicker:before{content:"";width:2rem;height:1px;background:var(--line-strong)}.page-title{font-size:clamp(2.2rem,5.5vw,3.6rem);margin-bottom:1rem}.page-intro{color:var(--text-2);max-width:56ch;margin-bottom:clamp(2.5rem,6vh,4.5rem)}.site-header{position:fixed;inset:0 0 auto 0;z-index:50;height:var(--header-h);background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line);transition:background-color .35s var(--ease)}.site-header .container{height:100%;display:flex;align-items:center;justify-content:space-between;gap:1rem}.logo{font-family:var(--font-heading);font-size:1rem;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.logo span{color:var(--accent)}.main-nav{display:flex;align-items:center;gap:clamp(1rem,3vw,2.2rem)}.nav-link{position:relative;font-size:.85rem;color:var(--text-2);padding:.35rem 0;transition:color .25s var(--ease)}.nav-link:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--text);transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease)}.nav-link:hover,.nav-link[aria-current=page]{color:var(--text)}.nav-link:hover:after,.nav-link[aria-current=page]:after{transform:scaleX(1);transform-origin:left}.theme-toggle{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;color:var(--text-2);transition:color .25s var(--ease),border-color .25s var(--ease),transform .25s var(--ease)}.theme-toggle:hover{color:var(--text);border-color:var(--line-strong);transform:rotate(15deg)}.nav-burger{display:none;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px}.nav-burger i{display:block;width:20px;height:1px;background:var(--text);margin-inline:auto;transition:transform .3s var(--ease),opacity .3s var(--ease)}.nav-burger[aria-expanded=true] i:first-child{transform:translateY(6px) rotate(45deg)}.nav-burger[aria-expanded=true] i:nth-child(2){opacity:0}.nav-burger[aria-expanded=true] i:nth-child(3){transform:translateY(-6px) rotate(-45deg)}@media (max-width:720px){.nav-burger{display:flex}.main-nav{position:fixed;top:var(--header-h);left:0;right:0;flex-direction:column;align-items:flex-start;gap:0;background:var(--bg);border-bottom:1px solid var(--line);padding:.5rem 1.5rem 1.25rem;transform:translateY(-8px);opacity:0;pointer-events:none;transition:transform .3s var(--ease),opacity .3s var(--ease)}.main-nav.open{transform:translateY(0);opacity:1;pointer-events:auto}.main-nav .nav-link{width:100%;padding:.8rem 0;font-size:1rem;border-bottom:1px solid var(--line)}.main-nav .nav-link:last-of-type{border-bottom:none}.main-nav .nav-link:after{display:none}}.btn{display:inline-flex;align-items:center;gap:.6rem;padding:.85rem 1.7rem;font-size:.85rem;font-weight:500;letter-spacing:.04em;border:1px solid var(--text);border-radius:999px;transition:background-color .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease)}.btn.primary,.btn:hover{background:var(--text);color:var(--bg)}.btn.primary:hover{background:var(--accent);border-color:var(--accent)}.btn.ghost{border-color:var(--line-strong);color:var(--text-2)}.btn.ghost:hover{border-color:var(--text);background:transparent;color:var(--text)}.btn:disabled{opacity:.45;pointer-events:none}.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding-top:var(--header-h);position:relative}.hero-role{font-size:.78rem;letter-spacing:.28em;text-transform:uppercase;color:var(--accent)}.hero-name,.hero-role{font-weight:500;margin-bottom:1.75rem}.hero-name{font-size:clamp(2.8rem,9vw,6.5rem);letter-spacing:-.035em}.hero-name em{font-style:normal;color:var(--text-3)}.hero-line{font-size:clamp(1rem,1.6vw,1.2rem);color:var(--text-2);max-width:46ch;margin-bottom:3rem}.hero-cta{display:flex;flex-wrap:wrap;gap:1rem}.hero-scroll{position:absolute;bottom:2.5rem;left:50%;width:1px;height:48px;background:var(--line-strong);overflow:hidden}.hero-scroll:after{content:"";position:absolute;inset:0;background:var(--accent);animation:scroll-hint 2.2s var(--ease) infinite}@keyframes scroll-hint{0%{transform:translateY(-100%)}55%,to{transform:translateY(100%)}}.home-strip{border-top:1px solid var(--line);padding-block:clamp(3.5rem,9vh,6rem)}.home-strip .strip-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);grid-gap:2rem 4rem;gap:2rem 4rem;align-items:start}.home-strip h2{font-size:clamp(1.5rem,3vw,2.1rem)}.home-strip p{color:var(--text-2);max-width:58ch}.strip-link{display:inline-flex;align-items:center;gap:.5rem;margin-top:1.5rem;font-size:.85rem;color:var(--text);border-bottom:1px solid var(--line-strong);padding-bottom:2px;transition:gap .3s var(--ease),border-color .3s var(--ease)}.strip-link:hover{gap:.9rem;border-color:var(--accent)}@media (max-width:720px){.home-strip .strip-grid{grid-template-columns:1fr}}.about-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-gap:3rem 5rem;gap:3rem 5rem;align-items:start}@media (max-width:860px){.about-grid{grid-template-columns:1fr}}.about-text p+p{margin-top:1.1rem}.about-text p{color:var(--text-2)}.about-text strong{color:var(--text);font-weight:600}.skill-block{border:1px solid var(--line);border-radius:var(--radius);padding:2rem;background:var(--surface);transition:border-color .3s var(--ease)}.skill-block:hover{border-color:var(--line-strong)}.skill-block+.skill-block{margin-top:1.25rem}.skill-block.primary{border-left:3px solid var(--accent)}.skill-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.6rem}.skill-head h3{font-size:1.35rem}.skill-block.primary .skill-head h3{font-size:1.7rem}.skill-tag{font-size:.68rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;padding:.3rem .7rem;border-radius:999px;white-space:nowrap}.skill-tag.main{background:var(--accent-soft);color:var(--busy-text)}.skill-tag.growing{border:1px solid var(--line-strong);color:var(--text-2)}.skill-block>p{color:var(--text-2);font-size:.95rem;margin-bottom:1.4rem}.console-list{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem}.console-list li{font-size:.8rem;padding:.45rem .9rem;border:1px solid var(--line);border-radius:999px;color:var(--text);background:var(--surface-2);transition:border-color .25s var(--ease),transform .25s var(--ease)}.console-list li:hover{border-color:var(--accent);transform:translateY(-1px)}.console-list li.learning{border-style:dashed;color:var(--text-2);background:transparent}.legend-note{margin-top:1rem;font-size:.78rem;color:var(--text-3)}.availability-note{margin-top:2.5rem;padding:1.4rem 1.6rem;border:1px solid var(--line);border-radius:var(--radius);font-size:.92rem;color:var(--text-2);background:var(--surface)}.availability-note strong{color:var(--text)}.masonry{columns:300px 3;column-gap:1.25rem}.event-card{page-break-inside:avoid;break-inside:avoid;margin-bottom:1.25rem;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface);cursor:zoom-in;transition:border-color .3s var(--ease),transform .3s var(--ease),box-shadow .3s var(--ease)}.event-card:hover{border-color:var(--line-strong);transform:translateY(-3px);box-shadow:var(--shadow)}.event-card figure{position:relative;overflow:hidden}.event-card img{width:100%;height:auto;transition:transform .6s var(--ease),opacity .6s var(--ease)}.event-card:hover img{transform:scale(1.025)}.event-meta{padding:1rem 1.15rem 1.15rem;border-top:1px solid var(--line)}.event-meta h3{font-size:1.02rem;margin-bottom:.3rem}.event-meta .event-sub{display:flex;flex-wrap:wrap;gap:.4rem .9rem;font-size:.78rem;color:var(--text-2)}.role-badge{font-size:.66rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--busy-text);background:var(--accent-soft);padding:.18rem .55rem;border-radius:999px}.filter-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2.5rem}.filter-btn{font-size:.8rem;padding:.5rem 1.1rem;border:1px solid var(--line);border-radius:999px;color:var(--text-2);transition:all .25s var(--ease)}.filter-btn:hover{border-color:var(--line-strong);color:var(--text)}.filter-btn.active{background:var(--text);border-color:var(--text);color:var(--bg)}.lightbox{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);padding:2rem;animation:fade-in .25s var(--ease)}.lightbox figure{max-width:min(1000px,100%);max-height:100%;display:flex;flex-direction:column}.lightbox img{max-height:78vh;width:auto;max-width:100%;margin-inline:auto;border:1px solid var(--line);border-radius:var(--radius)}.lightbox figcaption{padding-top:1rem;text-align:center;font-size:.88rem;color:var(--text-2)}.lightbox figcaption strong{display:block;font-family:var(--font-heading);font-size:1.05rem;color:var(--text);margin-bottom:.15rem}.lightbox-close{position:absolute;top:1.5rem;right:1.5rem;width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line-strong);border-radius:50%;font-size:1.1rem;transition:transform .25s var(--ease),border-color .25s var(--ease)}.lightbox-close:hover{transform:rotate(90deg);border-color:var(--text)}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line-strong);border-radius:50%;transition:border-color .25s var(--ease),background-color .25s var(--ease)}.lightbox-nav:hover{border-color:var(--text);background:var(--surface)}.lightbox-nav.prev{left:1.5rem}.lightbox-nav.next{right:1.5rem}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.calendar{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden}.calendar-head{display:flex;align-items:center;justify-content:space-between;padding:1.1rem 1.4rem;border-bottom:1px solid var(--line)}.calendar-head h2{font-size:1.1rem;font-weight:500;text-transform:capitalize}.calendar-head .cal-nav{display:flex;gap:.4rem}.cal-nav button{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;color:var(--text-2);transition:border-color .25s var(--ease),color .25s var(--ease)}.cal-nav button:hover{border-color:var(--line-strong);color:var(--text)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-dow{padding:.7rem .25rem;text-align:center;font-size:.66rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}.cal-day,.cal-dow{border-bottom:1px solid var(--line)}.cal-day{aspect-ratio:1/.82;display:flex;align-items:flex-start;justify-content:flex-end;padding:.5rem .6rem;font-size:.82rem;color:var(--text-2);border-right:1px solid var(--line);position:relative;transition:background-color .2s var(--ease)}.cal-day:nth-child(7n){border-right:none}.cal-day.out{color:var(--text-3);opacity:.4}.cal-day.busy{background:var(--busy);color:var(--busy-text);font-weight:600}.cal-day.today:after{content:"";position:absolute;left:.6rem;bottom:.55rem;width:5px;height:5px;border-radius:50%;background:var(--accent)}.cal-day.past{opacity:.45}.cal-legend{display:flex;flex-wrap:wrap;gap:1.5rem;margin-top:1.25rem;font-size:.8rem;color:var(--text-2)}.cal-legend span{display:inline-flex;align-items:center;gap:.5rem}.cal-legend i{width:14px;height:14px;border-radius:3px;border:1px solid var(--line-strong)}.cal-legend i.busy-swatch{background:var(--busy);border-color:transparent}.cal-status{margin-top:1rem;font-size:.82rem;color:var(--text-3)}.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:3rem 5rem;gap:3rem 5rem;align-items:start}@media (max-width:860px){.contact-grid{grid-template-columns:1fr}}.contact-list{list-style:none}.contact-list li{border-bottom:1px solid var(--line)}.contact-list a{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:1.3rem .25rem;transition:padding-left .3s var(--ease)}.contact-list a:hover{padding-left:.9rem}.contact-list .c-label{font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--text-3)}.contact-list .c-value{font-family:var(--font-heading);font-size:1.05rem}.contact-form{display:flex;flex-direction:column;gap:1.25rem}.field label{display:block;font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--text-3);margin-bottom:.5rem}.field input,.field textarea{width:100%;background:transparent;border:none;border-bottom:1px solid var(--line-strong);padding:.6rem .1rem;transition:border-color .3s var(--ease)}.field input:focus,.field textarea:focus{outline:none;border-bottom-color:var(--accent)}.field textarea{resize:vertical;min-height:110px}.admin-wrap{max-width:720px}.admin-login{max-width:380px;margin-top:2rem;display:flex;flex-direction:column;gap:1.25rem}.admin-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.admin-bar .who{font-size:.82rem;color:var(--text-2)}.admin-controls{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:1.5rem;padding:1.1rem 1.25rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.admin-controls input[type=text]{flex:1 1;min-width:160px;background:transparent;border:none;border-bottom:1px solid var(--line-strong);padding:.45rem .1rem}.admin-controls input[type=text]:focus{outline:none;border-bottom-color:var(--accent)}.admin-hint{font-size:.78rem;color:var(--text-3);margin-bottom:1.25rem}.cal-day.selectable{cursor:pointer}.cal-day.selectable:hover{background:var(--surface-2)}.cal-day.busy.selectable:hover{background:var(--busy);filter:brightness(.94)}.cal-day.range-start{outline:2px solid var(--accent);outline-offset:-2px}.booking-list{list-style:none;margin-top:2.5rem}.booking-list li{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem .25rem;border-bottom:1px solid var(--line);font-size:.9rem}.booking-list .b-dates{font-family:var(--font-heading);white-space:nowrap}.booking-list .b-note{color:var(--text-2);flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-delete{font-size:.75rem;color:var(--text-3);border-bottom:1px solid transparent;transition:color .25s var(--ease),border-color .25s var(--ease)}.b-delete:hover{color:#c0392b;border-color:#c0392b}.form-msg{font-size:.85rem;color:var(--text-2)}.form-msg.error{color:#c0392b}.form-msg.ok{color:var(--accent)}.site-footer{border-top:1px solid var(--line);padding-block:2.5rem}.site-footer .container{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;font-size:.78rem;color:var(--text-3)}.site-footer nav{display:flex;gap:1.5rem}.site-footer a{transition:color .25s var(--ease)}.site-footer a:hover{color:var(--text)}.lang-switcher{position:relative}.lang-btn{display:inline-flex;align-items:center;gap:.35rem;height:36px;padding:0 .8rem;border:1px solid var(--line);border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.1em;color:var(--text-2);transition:color .25s var(--ease),border-color .25s var(--ease)}.lang-btn:hover,.lang-btn[aria-expanded=true]{color:var(--text);border-color:var(--line-strong)}.lang-menu{position:absolute;top:calc(100% + .5rem);right:0;min-width:150px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.35rem;animation:fade-in .2s var(--ease);z-index:60}.lang-menu button{display:block;width:100%;text-align:left;padding:.55rem .8rem;font-size:.85rem;color:var(--text-2);border-radius:3px;transition:background-color .2s var(--ease),color .2s var(--ease)}.lang-menu button:hover{background:var(--surface-2);color:var(--text)}.lang-menu button.current{color:var(--text);font-weight:600}.lang-popup{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:1.5rem;background:color-mix(in srgb,var(--bg) 72%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:fade-in .3s var(--ease)}.lang-popup-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:2.25rem 2rem;text-align:center}.lang-popup-card .kicker{justify-content:center}.lang-popup-card .kicker:before{display:none}.lang-popup-card h2{font-size:1.4rem;margin-bottom:1.5rem}.lang-popup-options{display:grid;grid-template-columns:1fr 1fr;grid-gap:.6rem;gap:.6rem}.lang-popup-options .btn{justify-content:center}.lang-popup-note{margin-top:1.25rem;font-size:.78rem;color:var(--text-3)}@media (max-width:420px){.lang-popup-options{grid-template-columns:1fr}}.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}.reveal.visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}html{scroll-behavior:auto}}