/* ===== TechEquity Ai design tokens ===== */
:root{
--te-dark:#262528;--te-ink:var(--te-dark);--te-ink-3:var(--te-cool-400);--te-ink-4:var(--te-cool-400);--te-ink-5:var(--te-cool-300);--te-ink-hover:var(--te-cool-500);--te-line:var(--te-cool-200);--te-line-subtle:var(--te-cool-200);--te-white:#ffffff;--te-gray:#F7F7F7;--te-cool-100:#F7F7F7;--te-cool-200:#D9D9D9;--te-cool-300:#b0b0b0;--te-cool-400:#707070;--te-cool-500:#525252;--te-warm-100:#f8f4eb;--te-warm-200:#ebe6dc;--te-warm-300:#c7c0b5;--te-warm-400:#a7a095;--te-warm-500:#7f7974;
--te-purple-100:#F4F1FA;--te-purple-200:#EDE6F9;--te-purple-300:#DACEF2;--te-purple:#C8B5EC;--te-purple-400:#8C75B8;--te-purple-500:#573094;
--te-coral-100:#FFEDEB;--te-coral-200:#FFE1DE;--te-coral-300:#FFC4BC;--te-coral:#FFA69B;--te-coral-400:#D1716E;--te-coral-500:#89241A;
--te-yellow-100:#FDF8EA;--te-yellow-200:#FEF3D5;--te-yellow-300:#FDE7AC;--te-yellow:#FCDB82;--te-yellow-400:#D6A955;--te-yellow-500:#7E581A;
--te-teal-100:#EAF8F9;--te-teal-200:#DCF4F6;--te-teal-300:#B8E9EC;--te-teal:#95DEE3;--te-teal-400:#45A3AA;--te-teal-500:#0E3F46;
--te-blue-100:#EBF5FD;--te-blue-200:#DDEEFC;--te-blue-300:#BCDCF8;--te-blue:#9ACBF5;--te-blue-400:#5C93C1;--te-blue-500:#234C8E;
--te-font-serif:'Lora',Georgia,serif;--te-font-sans:'IBM Plex Sans',system-ui,sans-serif;
--te-fs-display:clamp(64px, 11vw, 168px);--te-fs-h1:clamp(45px, 6.4vw, 88px);--te-fs-h2:clamp(32px, 3.8vw, 52px);
--te-fs-title-l:clamp(22px, 1.9vw, 26px);--te-fs-title:clamp(20px, 1.6vw, 22px);--te-fs-large:clamp(18px, 1.4vw, 20px);--te-fs-body:16px;--te-fs-small:14px;
--te-radius-card:20px;--te-radius-btn:10px;--te-radius-tag:10px;--te-radius-pill:999px;
--te-gutter:clamp(16px, 5vw, 80px);--te-section-y:clamp(48px, 6vw, 64px);--te-max:1680px;
}
/* type scale (the only styles in use): Lora for display + headings, IBM Plex Sans for everything else */
.te-display{font-family:var(--te-font-serif);font-weight:400;font-size:var(--te-fs-display);line-height:.95;letter-spacing:-.045em}
.te-h1{font-family:var(--te-font-serif);font-weight:400;font-size:var(--te-fs-h1);line-height:1.2;letter-spacing:-.03em}
.te-h2{font-family:var(--te-font-serif);font-weight:400;font-size:var(--te-fs-h2);line-height:1.15;letter-spacing:-.02em}
.te-title-l{font-family:var(--te-font-sans);font-weight:700;font-size:var(--te-fs-title-l);line-height:1.25;letter-spacing:-.015em}
.te-title{font-family:var(--te-font-sans);font-weight:700;font-size:var(--te-fs-title);line-height:1.3;letter-spacing:-.01em}
.te-lead{font-family:var(--te-font-sans);font-weight:400;font-size:var(--te-fs-large);line-height:1.5;letter-spacing:0;color:var(--te-cool-400)}
.te-body{font-family:var(--te-font-sans);font-weight:400;font-size:var(--te-fs-body);line-height:24px;letter-spacing:0}
.te-label{font-family:var(--te-font-sans);font-weight:700;font-size:var(--te-fs-body);line-height:24px;letter-spacing:0}
.te-small{font-family:var(--te-font-sans);font-weight:400;font-size:var(--te-fs-small);line-height:20px;letter-spacing:.25px;color:var(--te-cool-400)}
.te-small-strong{font-family:var(--te-font-sans);font-weight:700;font-size:var(--te-fs-small);line-height:20px;letter-spacing:.25px}
.te-eyebrow{font-family:var(--te-font-sans);font-weight:700;font-size:var(--te-fs-small);line-height:20px;letter-spacing:.08em;text-transform:uppercase;color:var(--te-cool-400)}

body{margin:0;background:var(--te-gray)}
*{box-sizing:border-box}
p,h1,h2,h3,h4,h5{margin:0}
img{max-width:100%}
a{color:var(--te-dark);text-decoration:none}
a:hover{color:var(--te-cool-400)}

/* ===== Page shell + header base (moved from inline styles; later rules in this file override with !important) ===== */
.te-page{display:flex;flex-direction:column;width:100%;color:var(--te-dark);background:var(--te-white)}
.te-site-header{position:sticky;top:0;z-index:50;padding:0 var(--te-gutter)}
.admin-bar .te-site-header{top:32px}
@media (max-width: 782px){.admin-bar .te-site-header{top:46px}}
@media (max-width: 600px){.admin-bar .te-site-header{top:0}}
.te-header-inner{max-width:var(--te-max);margin:0 auto;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:center;padding:8px 8px 8px 24px;background:rgba(255,255,255,0.72);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);border:1px solid rgba(38,37,40,0.08);border-top:0;box-shadow:0 8px 32px rgba(38,37,40,0.12),inset 0 1px 0 rgba(255,255,255,0.6);border-radius:0 0 20px 20px}
.te-logo{display:inline-flex}
.te-logo img{width:140px;height:48px;object-fit:contain}
.te-header-right{display:flex;flex-wrap:wrap;gap:16px;justify-content:flex-end;align-items:center}
.te-nav{display:flex;flex-wrap:wrap;gap:0}
.te-nav>a{display:inline-flex;align-items:center;min-height:48px;padding:0 12px}
.te-dd{position:relative;display:flex}
.te-dd-trigger{display:inline-flex;align-items:center;gap:4px;min-height:48px;padding:0 12px;border-radius:10px;color:inherit}
.te-dd-panel{position:absolute;top:100%;left:-4px;z-index:60;padding-top:8px}
.te-dd-menu{list-style:none;margin:0;min-width:232px;padding:8px;background:rgba(255,255,255,0.72);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);border:1px solid rgba(38,37,40,0.08);box-shadow:0 8px 32px rgba(38,37,40,0.12),inset 0 1px 0 rgba(255,255,255,0.6);border-radius:20px}
.te-dd-menu a{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:48px;padding:0 12px;border-radius:10px;white-space:nowrap}
.te-dd-arrow{color:var(--te-cool-400)}
.te-btn,.te-btn-outline{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;white-space:nowrap;border:1px solid var(--te-dark);border-radius:10px}
.te-btn{background:var(--te-dark);color:var(--te-white)}
.te-btn-outline{background:transparent;color:var(--te-dark)}
.te-burger{display:none;flex:none;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:0;border-radius:10px;background:transparent;color:var(--te-dark);cursor:pointer}
/* generic page/post templates */
.te-section{padding:var(--te-section-y) var(--te-gutter)}
.te-container{max-width:var(--te-max);margin:0 auto}
.te-content>*+*{margin-top:1em}
/* ===== Liquid glass buttons: solid (.te-btn) and outline (.te-btn-outline) ===== */
.te-btn,.te-btn-outline{position:relative;isolation:isolate;overflow:hidden;border-radius:10px !important;-webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);transition:background .2s ease,box-shadow .25s ease,transform .2s cubic-bezier(.2,.7,.2,1),color .15s}
/* specular rim: bright top-left and bottom-right edge light */
.te-btn::before,.te-btn-outline::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;background:linear-gradient(140deg,rgba(255,255,255,.75),rgba(255,255,255,0) 38%,rgba(255,255,255,0) 62%,rgba(255,255,255,.45));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box exclude,linear-gradient(#fff 0 0)}
/* glossy top sheen, sits behind the label */
.te-btn::after,.te-btn-outline::after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.28) 0%,rgba(255,255,255,.06) 48%,rgba(255,255,255,0) 52%,rgba(255,255,255,.08) 100%);transition:opacity .2s}
/* solid */
.te-btn{background:var(--te-dark) !important;border-color:var(--te-dark) !important;color:var(--te-white) !important;box-shadow:none !important}
.te-btn::after{opacity:0}
.te-btn::before{opacity:.3}
.te-btn:hover{background:rgba(38,37,40,.9) !important;border-color:transparent !important;color:var(--te-white) !important;box-shadow:none !important}
.te-btn:hover::after{opacity:.22}
.te-btn:hover::before{opacity:.45}
.te-btn:active{background:rgba(38,37,40,.82) !important;border-color:transparent !important;color:var(--te-white) !important;transform:scale(.97);box-shadow:none !important}
/* outline */
.te-btn-outline{background:rgba(255,255,255,.45) !important;border-color:rgba(38,37,40,.32) !important;color:var(--te-dark) !important;box-shadow:none !important}
.te-btn-outline:hover{background:rgba(38,37,40,.08) !important;border-color:rgba(38,37,40,.32) !important;color:var(--te-dark) !important;box-shadow:none !important}
.te-btn-outline:active{background:rgba(38,37,40,.18) !important;border-color:rgba(38,37,40,.32) !important;color:var(--te-dark) !important;transform:scale(.97);box-shadow:none !important}
@media (prefers-reduced-motion: reduce){.te-btn,.te-btn-outline{transition:background .15s,color .15s}.te-btn:active,.te-btn-outline:active{transform:none}}

.te-nav a:hover{color:var(--te-dark);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px;text-decoration-color:var(--te-dark)}
.te-nav a:active{text-decoration-color:var(--te-dark)}
.te-dd-trigger:active{color:var(--te-dark)}
.te-dd-panel{opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .15s,transform .15s,visibility .15s}
.te-dd:hover .te-dd-panel,.te-dd:focus-within .te-dd-panel,.te-dd[data-open="true"] .te-dd-panel{opacity:1;visibility:visible;transform:none}
.te-dd-menu a:hover,.te-dd-menu a:focus-visible{background:transparent;color:var(--te-dark) !important}
.te-nav .te-dd-menu a:hover{text-decoration:none}
.te-dd-menu a:hover .te-dd-lbl{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px;text-decoration-color:var(--te-dark)}
.te-dd-menu a:active .te-dd-lbl{text-decoration-color:var(--te-dark)}
.te-dd-trigger:hover{color:var(--te-dark);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px;text-decoration-color:var(--te-dark)}
.te-dd-caret{transition:transform .15s}
.te-dd:hover .te-dd-caret,.te-dd:focus-within .te-dd-caret,.te-dd[data-open="true"] .te-dd-caret{transform:rotate(180deg)}
.te-nav a:focus-visible,.te-dd-trigger:focus-visible,.te-dd-menu a:focus-visible,.te-btn:focus-visible,.te-btn-outline:focus-visible{outline:2px solid var(--te-cool-400);outline-offset:2px}
.te-sk-pill{transition:background .4s,padding .5s}
.te-sk-text{max-width:0;opacity:0;margin-left:0;transition:max-width .5s,opacity .15s,margin-left .5s}
.te-sk[data-open="true"] .te-sk-pill{padding:6px 18px 6px 6px !important}
.te-sk[data-open="true"] .te-sk-text{max-width:240px;opacity:1;margin-left:12px;transition:max-width .5s,opacity .4s .15s,margin-left .5s}
@media (max-width: 767px){.te-sk{right:16px !important;bottom:16px !important}.te-sk[data-open="true"] .te-sk-text{max-width:200px}}
@media (prefers-reduced-motion: reduce){.te-sk-pill,.te-sk-text{transition:none !important}}
.te-header-inner{box-shadow:none !important;transition:box-shadow .25s ease}
.te-header-inner[data-scrolled="true"]{box-shadow:0 8px 32px rgba(38,37,40,0.12), inset 0 1px 0 rgba(255,255,255,0.6) !important}
.te-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.te-card-link img{transition:transform .35s ease}
.te-card-link:hover img{transform:scale(1.03)}
.te-card-arrow{transition:transform .25s cubic-bezier(.2,.7,.2,1)}
.te-card-arrow{display:inline-block;transform-origin:50% 50%;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.te-card-link:hover .te-card-arrow{transform:rotate(45deg)}
.te-card-link:hover .te-card-title{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px;text-decoration-color:var(--te-dark)}
.te-card-link:hover{color:var(--te-dark) !important}
.te-logo-tile{transition:border-color .15s}
.te-logo-tile:hover{border-color:var(--te-cool-300) !important}
.te-person a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px;text-decoration-color:var(--te-dark)}
@keyframes te-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.te-marquee-track{animation:te-marquee 70s linear infinite}
.te-marquee:hover .te-marquee-track{animation-play-state:paused}
@media (prefers-reduced-motion: reduce){.te-marquee-track{animation:none}}
@media (pointer: coarse){.te-btn-s{min-height:48px}}
@media (max-width: 767px){
.te-btn-row{flex-direction:row;flex-wrap:wrap;align-items:center !important;gap:12px !important}
.te-btn-s{height:48px !important}
.te-cta{height:40px !important}
.te-header-inner{padding:8px 16px !important;gap:8px !important}
.te-header-inner .te-logo img{width:128px !important;height:40px !important}
.te-header-right{display:contents !important}
.te-cta{order:2}
.te-nav{order:3;width:100%;flex-wrap:nowrap !important;overflow-x:auto;gap:0 !important;margin:0 -8px}
.te-nav a{padding:0 8px !important;white-space:nowrap;font-size:14px}
.te-dd{display:contents !important}
.te-dd-trigger{display:none !important}
.te-dd-panel{display:contents !important;visibility:visible !important;opacity:1 !important;transform:none !important}
.te-dd-menu{display:contents !important}
.te-dd-menu li{display:flex}
.te-dd-menu a{padding:0 8px !important;font-size:14px !important;font-weight: 700 !important;gap:4px !important}
.te-embed{height:540px !important}
.te-day-head{max-width:none !important}
.te-card{padding:24px !important}
.te-form-slot{min-height:480px !important}
}

/* glass on a pseudo-layer so the header isn't a backdrop root and the dropdown can blur the page behind it */
.te-header-inner{position:relative;background:transparent !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
.te-header-inner::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:rgba(255,255,255,0.72);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);pointer-events:none}
.te-dd-menu{background:rgba(255,255,255,0.78) !important}
/* summit section: background colour blobs drift slowly around their own spots */
@keyframes te-wiggle-1{0%,100%{transform:translate(0,0)}20%{transform:translate(12%,8%)}40%{transform:translate(10%,-8%)}60%{transform:translate(-4%,-4%)}80%{transform:translate(-2%,10%)}}
@keyframes te-wiggle-2{0%,100%{transform:translate(0,0)}20%{transform:translate(8%,8%)}40%{transform:translate(6%,-10%)}60%{transform:translate(-8%,-4%)}80%{transform:translate(-6%,6%)}}
@keyframes te-wiggle-3{0%,100%{transform:translate(0,0)}20%{transform:translate(12%,8%)}40%{transform:translate(10%,-8%)}60%{transform:translate(-4%,-4%)}80%{transform:translate(-2%,10%)}}
.te-blob{will-change:transform}
.te-blob-1{animation:te-wiggle-1 16s ease-in-out infinite}
.te-blob-2{animation:te-wiggle-2 20s ease-in-out infinite}
.te-blob-3{animation:te-wiggle-3 18s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){.te-blob{animation:none !important}}
@media (max-width: 767px){.te-supporters{height:auto !important}}
/* widget: one dot -> three "thinking" dots -> one dot -> eases into a play button, holds, eases back to the dot; loops */
@keyframes te-dl{0%,3.08%,5.54%,9.23%,11.69%{transform:translate(-9px,0);opacity:1}4.31%,8%{transform:translate(-9px,-3.5px)}13.85%{transform:translate(0,0);opacity:1}14.15%,28.31%{transform:translate(0,0);opacity:0}28.62%{transform:translate(0,0);opacity:1}30.77%,100%{transform:translate(-9px,0);opacity:1}}
@keyframes te-dr{0%,3.08%,4.92%,7.38%,11.08%,11.69%{transform:translate(9px,0);opacity:1}6.15%,9.85%{transform:translate(9px,-3.5px)}13.85%{transform:translate(0,0);opacity:1}14.15%,28.31%{transform:translate(0,0);opacity:0}28.62%{transform:translate(0,0);opacity:1}30.77%,100%{transform:translate(9px,0);opacity:1}}
@keyframes te-dc{0%,4%,6.46%,10.15%,14.15%{transform:translate(0,0) scale(1);opacity:1}5.23%,8.92%{transform:translate(0,-3.5px) scale(1)}15.08%{transform:scale(1.4);opacity:1}16.62%,25.85%{transform:scale(.4);opacity:0}27.69%{transform:scale(1.2);opacity:1}28.62%,30.77%,100%{transform:scale(1);opacity:1}}
@keyframes te-pl{0%,14.77%{opacity:0;transform:scale(.3) rotate(-90deg)}17.54%{opacity:1;transform:scale(1.06) rotate(0)}18.77%,25.23%{opacity:1;transform:scale(1) rotate(0)}27.38%,30.77%,100%{opacity:0;transform:scale(.3) rotate(90deg)}}
@keyframes te-ai-ring{0%,16.92%{box-shadow:inset 0 0 0 0 rgba(255,255,255,0)}17.69%{box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.34)}23.46%,100%{box-shadow:inset 0 0 6px 7px rgba(255,255,255,0)}}
.te-dc,.te-pl{transform-box:fill-box;transform-origin:center}
.te-dl{animation:te-dl 26s cubic-bezier(.45,0,.25,1) infinite}
.te-dr{animation:te-dr 26s cubic-bezier(.45,0,.25,1) infinite}
.te-dc{animation:te-dc 26s cubic-bezier(.45,0,.25,1) infinite}
.te-pl{animation:te-pl 26s cubic-bezier(.45,0,.25,1) infinite}
/* widget icon: one 8s cycle (dots → play → dots), then 18s rest; the pulse stays inside the circle */
.te-ai{position:relative}.te-ai::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;animation:te-ai-ring 26s ease-out infinite}
@media (prefers-reduced-motion: reduce){.te-bl i,.te-header-inner .te-nav{transition:none !important}.te-dl,.te-dr,.te-dc,.te-pl,.te-ai,.te-ai::after{animation:none !important}.te-dl,.te-dr,.te-dc{opacity:0}}
/* images: gentle zoom inside their rounded frame on hover (same as the program cards) */
.te-zoom{display:block;overflow:hidden;border-radius:20px}
/* hero video: Vimeo background embed (no controls, muted, autoplay, loop) over its own thumbnail */
.te-zoom>iframe{transition:transform .45s cubic-bezier(.2,.7,.2,1),opacity .6s ease}
/* keep the Vimeo thumbnail showing until the player reports it is actually playing (hides Vimeo's error screen if embedding is blocked) */
.te-vid>iframe{opacity:0}
.te-vid>iframe.te-vid-on{opacity:1}
@media (hover: hover){.te-zoom:hover>iframe{transform:scale(1.03)}}
.te-zoom>img,.te-zoom>video{transition:transform .45s cubic-bezier(.2,.7,.2,1)}
@media (hover: hover){.te-zoom:hover>img,.te-zoom:hover>video{transform:scale(1.03)}}
/* portraits: same zoom, a touch stronger at small sizes, also when hovering the name */
@media (hover: hover){.te-person:hover .te-zoom>img,.te-person .te-zoom:hover>img{transform:scale(1.08)}}
/* UX polish */
.te-nav a[aria-current="page"]{color:var(--te-dark);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px;text-decoration-color:var(--te-dark)}
a:focus-visible,.te-logo-tile:focus-visible{outline:2px solid var(--te-cool-400);outline-offset:3px;border-radius:6px}
@media (max-width: 767px){.te-nav{-webkit-mask-image:linear-gradient(90deg,var(--te-dark) 82%,transparent);mask-image:linear-gradient(90deg,var(--te-dark) 82%,transparent);padding-right:24px !important}}
/* 12-column grid (desktop): 24px gutters inside the 1680px container */
@media (min-width: 1024px){
.te-12-2,.te-12-3,.te-12-4,.te-12-split,.te-12-48,.te-12-hero{display:grid !important;grid-template-columns:repeat(12,minmax(0,1fr)) !important;column-gap:24px !important}
.te-12-2>*{grid-column:span 6;max-width:none !important}
.te-12-3>*{grid-column:span 4}
.te-12-4>*{grid-column:span 3}
.te-12-split>:first-child{grid-column:span 3;max-width:none !important}
.te-12-split>:nth-child(2){grid-column:span 9}
.te-12-48>:first-child{grid-column:span 4}
.te-12-48>:nth-child(2){grid-column:span 8}
.te-12-hero>:first-child{grid-column:span 7;max-width:none !important}
.te-12-hero>:nth-child(2){grid-column:9 / span 4;justify-self:end}
.te-g6{grid-template-columns:repeat(6,minmax(0,1fr)) !important;column-gap:24px !important}
.te-g3{grid-template-columns:repeat(3,minmax(0,1fr)) !important;column-gap:24px !important}
}
/* menu bar: no outline while at the top; outline + shadow once scrolled */
.te-header-inner{transition:box-shadow .25s ease,border-color .25s ease;border-color:transparent !important}
.te-header-inner[data-scrolled="true"]{border-color:rgba(38,37,40,0.08) !important}
.te-social{transition:color .15s}
.te-social:hover{color:var(--te-dark) !important}
.te-sk{transition:bottom .35s cubic-bezier(.2,.7,.2,1)}
.te-sk{transition:opacity .25s ease,transform .35s cubic-bezier(.2,.7,.2,1)}
.te-sk[data-lift="true"]{opacity:0;transform:translateY(24px);pointer-events:none}
/* responsive menu: collapses to a burger when the items no longer fit on one line; Join Summit stays visible */
.te-burger{transition:color .15s}
.te-burger:hover{background:transparent !important;color:var(--te-dark) !important}
.te-burger:active{color:var(--te-dark) !important}
.te-bl{position:relative;display:block;width:20px;height:10px}
.te-bl i{position:absolute;left:0;width:20px;height:2.5px;border-radius:2px;background:var(--te-dark);transition:transform .35s cubic-bezier(.2,.7,.2,1),top .35s cubic-bezier(.2,.7,.2,1)}
.te-bl i:nth-child(1){top:0}
.te-bl i:nth-child(2){top:8px}
.te-header-inner[data-nav="true"] .te-bl i:nth-child(1),.te-header-inner[data-nav="true"] .te-burger:hover .te-bl i:nth-child(1){top:4px;transform:rotate(45deg)}
.te-header-inner[data-nav="true"] .te-bl i:nth-child(2),.te-header-inner[data-nav="true"] .te-burger:hover .te-bl i:nth-child(2){top:4px;transform:rotate(-45deg)}
.te-header-inner[data-nav="true"] .te-bl i{height:2px}
.te-burger:focus-visible{outline:2px solid var(--te-cool-400);outline-offset:2px}
@media (max-width: 1023px){
.te-header-inner{flex-wrap:nowrap !important;padding:8px 8px 8px 20px !important;gap:12px !important}
.te-header-right{display:flex !important;flex-wrap:nowrap !important;gap:8px !important;align-items:center}
.te-burger{display:inline-flex !important;order:3}
.te-cta{order:2;height:40px !important}
.te-nav{-webkit-mask-image:none !important;mask-image:none !important}
.te-header-inner .te-nav{display:flex !important;position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:70;flex-direction:column !important;flex-wrap:nowrap !important;align-items:stretch;gap:0 !important;margin:0 !important;padding:8px !important;width:auto !important;overflow:visible !important;background:rgba(255,255,255,0.92);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);border:1px solid rgba(38,37,40,0.08);border-radius:20px;box-shadow:0 8px 32px rgba(38,37,40,0.12)}
.te-nav>a,.te-nav .te-dd-trigger{display:flex !important;align-items:center;min-height:48px;padding:0 16px !important;font-size:16px !important;border-radius:10px;white-space:normal !important}
.te-nav>a:hover,.te-nav .te-dd-trigger:hover{background:transparent}
.te-dd{display:block !important;position:static !important}
.te-header-inner .te-nav{opacity:0;visibility:hidden;transform:translateY(-8px) scale(.985);transform-origin:top center;pointer-events:none;transition:opacity .2s ease,transform .25s cubic-bezier(.2,.7,.2,1),visibility 0s linear .25s}
.te-header-inner[data-nav="true"] .te-nav{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:opacity .25s ease,transform .35s cubic-bezier(.2,.7,.2,1),visibility 0s}
.te-dd-caret{display:none}
.te-dd-panel{display:block !important;position:static !important;opacity:1 !important;visibility:visible !important;transform:none !important;padding:0 !important}
.te-dd-menu{display:block !important;min-width:0 !important;padding:0 0 4px 16px !important;background:none !important;border:0 !important;box-shadow:none !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;border-radius:0 !important}
.te-dd-menu li{display:block !important}
.te-nav .te-dd-menu a{min-height:44px !important;padding:0 16px !important;font-size:16px !important;line-height:24px !important;font-weight:400 !important;color:var(--te-dark) !important}
}
@media (max-width: 420px){.te-cta{padding:0 12px !important;font-size:14px !important}.te-header-inner .te-logo img{width:128px !important;height:40px !important}}
@media (max-width: 359px){.te-header-inner .te-logo img{width:116px !important;height:40px !important}}
.te-foot-links a{color:var(--te-cool-400)}
.te-foot-links a:hover{color:var(--te-dark);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px;text-decoration-color:var(--te-dark)}
.te-foot-links a:active{text-decoration-color:var(--te-dark)}
.te-skip{position:absolute;left:16px;top:-64px;z-index:200;padding:10px 16px;border-radius:10px;background:var(--te-dark);color:var(--te-white) !important;font-size:14px;font-weight:700;line-height:20px;letter-spacing:.25px;transition:top .15s}
.te-skip:focus{top:16px}
/* header: no white bar while at the very top; glass appears once scrolled */
.te-header-inner::before{transition:opacity .25s ease}
.te-header-inner[data-scrolled="false"]:not([data-nav="true"])::before{opacity:0}
/* ===== Liquid glass menu: header bar, dropdown, mobile menu panel ===== */
.te-header-inner::before{background:linear-gradient(180deg,rgba(255,255,255,.64),rgba(255,255,255,.44)) !important;-webkit-backdrop-filter:blur(22px) saturate(200%) !important;backdrop-filter:blur(22px) saturate(200%) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 -1px 0 rgba(255,255,255,.4)}
.te-header-inner::after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;padding:1px;pointer-events:none;background:linear-gradient(140deg,rgba(255,255,255,.95),rgba(255,255,255,0) 35%,rgba(255,255,255,0) 65%,rgba(255,255,255,.65));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box exclude,linear-gradient(#fff 0 0);transition:opacity .25s}
.te-header-inner[data-scrolled="false"]:not([data-nav="true"])::after{opacity:0}
@media (min-width: 1024px){.te-dd-menu{background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,255,255,.5)) !important;-webkit-backdrop-filter:blur(22px) saturate(200%) !important;backdrop-filter:blur(22px) saturate(200%) !important;border-color:rgba(255,255,255,.6) !important;box-shadow:0 12px 40px rgba(38,37,40,.14),inset 0 1px 0 rgba(255,255,255,.95),inset 0 -1px 0 rgba(255,255,255,.4),inset 1px 0 0 rgba(255,255,255,.5) !important}}
@media (max-width: 1023px){.te-header-inner .te-nav{background:linear-gradient(180deg,rgba(255,255,255,.78),rgba(255,255,255,.62)) !important;-webkit-backdrop-filter:blur(24px) saturate(200%) !important;backdrop-filter:blur(24px) saturate(200%) !important;border-color:rgba(255,255,255,.6) !important;box-shadow:0 12px 40px rgba(38,37,40,.14),inset 0 1px 0 rgba(255,255,255,.95),inset 0 -1px 0 rgba(255,255,255,.4) !important}}
/* liquid glass v2: clearer glass, light rim, inner glow; bar floats once scrolled */
.te-header-inner{transition:margin .35s cubic-bezier(.2,.7,.2,1),padding .35s cubic-bezier(.2,.7,.2,1),border-radius .35s cubic-bezier(.2,.7,.2,1),border-color .25s ease !important}
.te-header-inner{border-radius:20px !important}
.te-header-inner[data-nav="true"]{margin-top:8px !important}
.te-header-inner[data-scrolled="true"]{margin-top:8px !important;border-radius:20px !important;border-top:1px solid rgba(38,37,40,0.08) !important;box-shadow:0 8px 28px rgba(38,37,40,.10) !important}
.te-header-inner::before{background:linear-gradient(180deg,rgba(255,255,255,.58) 0%,rgba(255,255,255,.34) 100%) !important;-webkit-backdrop-filter:blur(18px) saturate(220%) brightness(1.04) !important;backdrop-filter:blur(18px) saturate(220%) brightness(1.04) !important;box-shadow:inset 0 1px 1px rgba(255,255,255,.95),inset 0 -1px 1px rgba(255,255,255,.5),inset 0 0 14px rgba(255,255,255,.45) !important}
/* widget: same liquid glass as the menu */
.te-sk-pill{position:relative;isolation:isolate;background:linear-gradient(180deg,rgba(255,255,255,.58),rgba(255,255,255,.34)) !important;-webkit-backdrop-filter:blur(18px) saturate(220%) brightness(1.04) !important;backdrop-filter:blur(18px) saturate(220%) brightness(1.04) !important;border:1px solid rgba(38,37,40,.08) !important;box-shadow:0 8px 28px rgba(38,37,40,.10),inset 0 1px 1px rgba(255,255,255,.95),inset 0 -1px 1px rgba(255,255,255,.5),inset 0 0 14px rgba(255,255,255,.45) !important}
.te-sk-pill::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;background:linear-gradient(140deg,rgba(255,255,255,.95),rgba(255,255,255,0) 35%,rgba(255,255,255,0) 65%,rgba(255,255,255,.65));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box exclude,linear-gradient(#fff 0 0)}
@media (prefers-reduced-motion: reduce){.te-header-inner{transition:none !important}}
/* participate & build: draggable bubble clusters */
.te-pb{position:absolute;left:0;top:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;user-select:none;-webkit-user-select:none;cursor:grab;touch-action:none;will-change:transform;opacity:0;transition:opacity .4s ease,box-shadow .2s ease}
.te-play[data-ready="true"] .te-pb{opacity:1}
.te-pb-tag{height:44px;padding:0 20px;border-radius:var(--te-radius-tag);font-size:14px;font-weight:700;line-height:20px;letter-spacing:.08em;text-transform:uppercase}
.te-pb-hub{flex-direction:column;width:132px;height:132px;border-radius:50%;font-size:16px;font-weight:700;line-height:24px;text-align:center;padding:12px;white-space:normal}
.te-pb.is-drag{cursor:grabbing;z-index:5;box-shadow:0 10px 24px rgba(38,37,40,.18)}
@media (max-width: 640px){.te-pb-hub{width:104px;height:104px;font-size:14px;line-height:20px}.te-pb-tag{height:38px;padding:0 14px}}
/* blobs: tint 300, softened with blur */
.te-orb{filter:blur(48px)}
.te-blob{filter:blur(40px)}
/* keep the bottom footer row clear of the floating widget */
.te-foot-row{padding-right:max(0px, calc(100px - var(--te-gutter))) !important}
/* arrow icon (replaces the ↗ glyph, which IBM Plex Sans does not include) */
.te-arr{display:inline-block;width:.85em;height:.85em;vertical-align:-.08em;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}

/* tertiary: outline button with a lighter line + arrow, for "view more" / external links */
.te-btn-outline.te-btn-arrow{border-color:rgba(38,37,40,.16) !important;background:rgba(255,255,255,.45) !important}
.te-btn-outline.te-btn-arrow:hover{border-color:rgba(38,37,40,.16) !important;background:rgba(38,37,40,.06) !important}
.te-btn-outline.te-btn-arrow:active{border-color:rgba(38,37,40,.16) !important;background:rgba(38,37,40,.12) !important}

/* static (top of page): logo + CTA sit on the page margin; once scrolled the glass bar gets its inner padding back */
.te-header-inner[data-scrolled="false"]:not([data-nav="true"]){padding-left:0 !important;padding-right:0 !important}

/* touch screens: icon links get a 44px target */
@media (pointer: coarse){.te-social{width:44px !important;height:44px !important}}

/* mobile: two speakers per row */
@media (max-width: 600px){.te-g6{grid-template-columns:repeat(2,minmax(0,1fr)) !important;column-gap:16px !important}}

/* audit: phone footer links get 44px tap targets */
@media (max-width: 639px){.te-foot-links{gap:0 24px !important}.te-foot-links a{display:inline-block;padding:12px 0}}

/* program cards: a stronger zoom on hover */
@media (hover: hover){.te-card-link:hover .te-zoom>img,.te-card-link .te-zoom:hover>img{transform:scale(1.08)}}

/* underlines draw in from left to right */
.te-nav a:not(.te-dd-menu a),.te-dd-trigger,.te-dd-menu .te-dd-lbl,.te-foot-links a,.te-person a,.te-text-link,.te-card-link>.te-title{background-image:linear-gradient(var(--te-dark),var(--te-dark));background-repeat:no-repeat;background-origin:content-box;background-size:0 1px;background-position:0 100%;transition:background-size .35s cubic-bezier(.4,0,.2,1),color .2s ease}
.te-nav a:not(.te-dd-menu a),.te-dd-trigger{background-position:0 calc(50% + 17px)}
.te-dd-menu .te-dd-lbl,.te-text-link{width:fit-content}
.te-person a{-webkit-box-decoration-break:clone;box-decoration-break:clone}
.te-nav a:not(.te-dd-menu a):hover,.te-nav a:not(.te-dd-menu a)[aria-current="page"],.te-dd-menu a:hover .te-dd-lbl,.te-foot-links a:hover,.te-person a:hover,.te-text-link:hover,.te-card-link:hover>.te-title{background-size:100% 1px}
.te-dd-trigger:hover{background-size:calc(100% - 22px) 1px}
.te-nav a:not(.te-dd-menu a),.te-dd-trigger,.te-dd-lbl,.te-foot-links a,.te-person a,.te-text-link,.te-card-title{text-decoration:none !important}
@media (prefers-reduced-motion: reduce){.te-nav a:not(.te-dd-menu a),.te-dd-trigger,.te-dd-menu .te-dd-lbl,.te-foot-links a,.te-person a,.te-text-link,.te-card-link>.te-title{transition:none}}

/* menu items: same interaction as the program cards - underline runs under the label to the arrow, and the arrow turns to point right */
.te-dd-menu a{background-image:linear-gradient(var(--te-dark),var(--te-dark));background-repeat:no-repeat;background-origin:content-box;background-size:0 1px;background-position:0 calc(50% + 17px);transition:background-size .35s cubic-bezier(.4,0,.2,1),color .2s ease}
.te-dd-menu a:hover,.te-dd-menu a:focus-visible{background-image:linear-gradient(var(--te-dark),var(--te-dark));background-repeat:no-repeat;background-origin:content-box;background-position:0 calc(50% + 17px);background-size:100% 1px}
.te-dd-menu a .te-dd-lbl{background:none !important}
.te-dd-menu a>span[aria-hidden]{display:inline-flex;transform-origin:50% 50%;transition:transform .3s cubic-bezier(.2,.7,.2,1),color .2s ease}
.te-dd-menu a:hover>span[aria-hidden],.te-dd-menu a:focus-visible>span[aria-hidden]{transform:rotate(45deg);color:var(--te-dark) !important}
@media (prefers-reduced-motion: reduce){.te-dd-menu a,.te-dd-menu a>span[aria-hidden]{transition:none}}

/* only clickable images zoom on hover; the rest just drift with the scroll */
@media (hover: hover){.te-zoom:not(a .te-zoom)>img,.te-zoom:not(a .te-zoom)>video,.te-zoom:not(a .te-zoom)>iframe{transform:none !important}}

/* column groups share one continuous divider across the row; on smaller screens, where the columns stack, each column gets its own */
.te-rule{border-top:1px solid var(--te-line);padding-top:var(--rp,24px)}
@media (max-width: 1023px){.te-rule:not(.te-rule-all){border-top:0;padding-top:0}.te-rule:not(.te-rule-all)>.te-rule-c{border-top:1px solid var(--te-line);padding-top:var(--rp,24px)}}

/* stacked columns (tablet and phone): the row divider still runs straight across the gap */
@media (max-width: 1023px){.te-rule:not(.te-rule-all){overflow-x:clip}.te-rule:not(.te-rule-all)>.te-rule-c{border-top:0 !important;position:relative}.te-rule:not(.te-rule-all)>.te-rule-c::before{content:"";position:absolute;top:0;left:0;right:calc(-1 * var(--cg, 32px));height:1px;background:var(--te-line)}}



/* ===================== GLASS SYSTEM =====================
   One recipe for every translucent surface on the site. Change the tokens in :root and every pane follows.
   Modelled on iOS Liquid Glass (read from Apple's Figma file): a light frost; a specular rim lit from above
   (bright 1px line on the top edge, softer on the bottom); thin colour fringes that live ONLY in the thickness
   of the edge (2px ring, blue/teal on the right, purple/yellow on the left, a trace of coral); and a
   luminosity-style white tint strong enough that #262528 text stays AA on any backdrop.
   Rules that keep it working in Safari: the blur sits on the surface itself or on a ::before whose ancestors
   have no isolation / opacity / filter / mask; nothing fades the blurred layer in from opacity 0;
   nested panes (menu inside header) never sit inside another blurred element. */
:root{
  --glass-blur:40px;                        /* frost: high enough to turn photos and text behind into soft colour */
  --glass-sat:180%;                         /* colour lift behind the pane (iOS-style vibrancy) */
  --glass-lift:1.10;                        /* brightness lift behind a light pane */
  --glass-tint:rgba(255,255,255,0);        /* light pane: no white at all; frost, lift, rim and edge make it glass */
  --glass-tint-dark:rgba(38,37,40,.10);     /* the same pane in dark tone, used over dark content (text turns white) */
  --glass-sheen:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,0) 60%); /* top-lit sheen, static */
  --glass-edge:1px;                         /* thickness of the glass edge: colour fringes live only here */
  --glass-fringe:conic-gradient(from 0deg,rgba(252,219,130,0) 0deg,rgba(154,203,245,.11) 55deg,rgba(149,222,227,.12) 95deg,rgba(154,203,245,.09) 135deg,rgba(200,181,236,0) 180deg,rgba(200,181,236,.10) 225deg,rgba(255,166,155,.06) 262deg,rgba(252,219,130,.10) 300deg,rgba(252,219,130,0) 360deg);
  --glass-rim:inset 0 1px 0 rgba(255,255,255,.48),inset 0 -1px 0 rgba(255,255,255,.28),inset 0 3px 4px -3px rgba(255,255,255,.38),inset 0 -3px 4px -3px rgba(255,255,255,.20),inset 1px 0 0 rgba(255,255,255,.18),inset -1px 0 0 rgba(255,255,255,.18);
  --glass-line:rgba(38,37,40,.02);          /* hairline so the pane reads on white, kept faint */
  --glass-shadow:0 6px 16px rgba(38,37,40,.045),0 1px 2px rgba(38,37,40,.03);
  --glass-d-tint:rgba(38,37,40,.80);        /* dark pane (primary button hover) */
  --glass-d-tint-strong:rgba(38,37,40,.92); /* dark pane over light, busy content */
  --glass-d-rim:inset 0 1px 0 rgba(255,255,255,.26),inset 0 -1px 0 rgba(255,255,255,.08),inset 0 3px 4px -3px rgba(255,255,255,.18);
  --glass-d-line:rgba(255,255,255,.14);
  --glass-ease:.3s cubic-bezier(.4,0,.2,1);
}
/* light pane */
.te-glass,.te-sk-pill,.te-header-inner[data-scrolled="true"]::before,.te-header-inner[data-nav="true"]::before{background-color:var(--glass-tint) !important;background-image:var(--glass-sheen) !important;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;box-shadow:var(--glass-rim),0 0 0 1px var(--glass-line),var(--glass-shadow) !important;border-color:transparent !important;color:var(--te-dark)}
/* dark pane */
.te-glass-dark{background-color:var(--glass-d-tint) !important;background-image:var(--glass-sheen) !important;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;box-shadow:var(--glass-d-rim),0 0 0 1px var(--glass-d-line),var(--glass-shadow) !important;border-color:transparent !important;color:var(--te-white) !important}
/* edge fringe: a ring exactly --glass-edge wide, masked so nothing reaches the centre */
.te-glass::after,.te-glass-dark::after,.te-sk-pill::after,.te-header-inner::after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;padding:var(--glass-edge);pointer-events:none;background:var(--glass-fringe) !important;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box exclude,linear-gradient(#fff 0 0);filter:blur(.4px);opacity:0 !important;transition:opacity var(--glass-ease)}
.te-glass::after,.te-glass-dark::after,.te-sk-pill::after,.te-header-inner[data-scrolled="true"]::after,.te-header-inner[data-nav="true"]::after{opacity:1 !important}
.te-glass,.te-glass-dark{position:relative;border-radius:20px}
.te-btn::after,.te-btn-outline::after{display:none !important}
/* header: the pane is the ::before (a sibling of the menu, never its ancestor); it is always present and only turns on when scrolled */
.te-header-inner{isolation:auto !important;background:transparent !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;transform:none !important}
.te-header-inner::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;opacity:1 !important;transform:none !important;background-color:rgba(255,255,255,0) !important;background-image:none !important;-webkit-backdrop-filter:blur(0px) saturate(100%);backdrop-filter:blur(0px) saturate(100%);box-shadow:none;transition:background-color var(--glass-ease),box-shadow var(--glass-ease),-webkit-backdrop-filter var(--glass-ease),backdrop-filter var(--glass-ease)}
.te-header-inner::after{z-index:-1}
.te-header-inner[data-scrolled="true"],.te-header-inner[data-nav="true"]{border-color:var(--glass-line) !important;box-shadow:var(--glass-shadow) !important}
.te-header-inner[data-scrolled="true"]::before,.te-header-inner[data-nav="true"]::before{box-shadow:var(--glass-rim) !important}
/* desktop dropdown: the panel no longer fades (a fading ancestor breaks the blur in Safari); the pane itself fades */
@media (min-width: 1024px){
.te-dd-panel{opacity:1 !important;transition:transform .15s,visibility .15s}
.te-dd-menu{position:relative;opacity:0;transition:opacity .15s ease,transform .15s,background-color var(--glass-ease);background-color:var(--glass-tint) !important;background-image:var(--glass-sheen) !important;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;box-shadow:var(--glass-rim),0 0 0 1px var(--glass-line),var(--glass-shadow) !important;border-color:transparent !important}
.te-dd:hover .te-dd-menu,.te-dd:focus-within .te-dd-menu,.te-dd[data-open="true"] .te-dd-menu{opacity:1}
.te-dd-menu::after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;padding:var(--glass-edge);pointer-events:none;background:var(--glass-fringe);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box exclude,linear-gradient(#fff 0 0);filter:blur(.4px)}
}
/* phone menu */
@media (max-width: 1023px){
.te-header-inner .te-nav{background-color:var(--glass-tint) !important;background-image:var(--glass-sheen) !important;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;box-shadow:var(--glass-rim),0 0 0 1px var(--glass-line),var(--glass-shadow) !important;border-color:transparent !important}
.te-header-inner .te-nav::after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;padding:var(--glass-edge);pointer-events:none;background:var(--glass-fringe);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box exclude,linear-gradient(#fff 0 0);filter:blur(.4px)}
}
/* ===== BUTTONS: clean, with small details. No glass rings or gradients.
   Shared: 10px corners, 1px border, 160ms ease, a press that settles 1px, a 2px focus ring offset by 2px.
   Primary   solid ink, a hairline highlight on the top edge and a soft contact shadow; hover lifts to #3A393D.
   Secondary 10% white with a light frost (invisible on white, legible over imagery), 1px border at 18% ink; hover deepens the border.
   Tertiary  exactly the secondary, plus an arrow that turns to point right on hover. */
:root{
  --btn-ease:160ms cubic-bezier(.2,.7,.2,1);
  --btn-ink-hover:#3A393D;
  --btn-line:rgba(38,37,40,.18);
  --btn-line-hover:rgba(38,37,40,.36);
  --btn-focus:0 0 0 2px var(--te-white),0 0 0 4px var(--te-cool-400);
}
.te-btn::before,.te-btn::after,.te-btn-outline::before,.te-btn-outline::after{display:none !important}
.te-btn,.te-btn-outline,.te-btn-outline.te-btn-arrow{border:1px solid transparent !important;background-image:none !important;outline:none;transition:background-color var(--btn-ease),border-color var(--btn-ease),box-shadow var(--btn-ease),color var(--btn-ease),transform 90ms ease !important}
.te-btn{background-color:var(--te-dark) !important;border-color:var(--te-dark) !important;color:var(--te-white) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 1px 2px rgba(38,37,40,.08) !important}
.te-btn:hover,.te-btn.is-hover{background-color:var(--btn-ink-hover) !important;border-color:var(--btn-ink-hover) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 2px 6px rgba(38,37,40,.10) !important}
.te-btn-outline{background-color:var(--glass-tint) !important;border-color:var(--btn-line) !important;color:var(--te-dark) !important;-webkit-backdrop-filter:blur(8px) saturate(160%) !important;backdrop-filter:blur(8px) saturate(160%) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.7) !important}
.te-btn-outline:hover,.te-btn-outline.is-hover{border-color:var(--btn-line-hover) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 2px 6px rgba(38,37,40,.04) !important}
.te-btn-outline.te-btn-arrow{border-color:var(--btn-line) !important;background-color:var(--glass-tint) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.7) !important}
.te-btn-outline.te-btn-arrow:is(:hover,.is-hover){border-color:var(--btn-line-hover) !important;background-color:var(--glass-tint) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 2px 6px rgba(38,37,40,.04) !important}
.te-btn-outline.te-btn-arrow:is(:active,.is-press){border-color:var(--btn-line-hover) !important;background-color:rgba(38,37,40,.06) !important;box-shadow:inset 0 1px 2px rgba(38,37,40,.08) !important}
.te-btn-outline.te-btn-arrow{height:32px !important;min-height:32px !important;padding:0 12px !important;gap:6px !important;border-radius:8px !important;color:var(--te-cool-400) !important}
.te-btn-outline.te-btn-arrow:is(:hover,.is-hover,:active,.is-press){color:var(--te-dark) !important}
@media (max-width: 767px){.te-btn-outline.te-btn-arrow{height:40px !important;min-height:40px !important}}
.te-btn-arrow .te-btn-label{color:inherit}
.te-btn-arrow>span[aria-hidden]{color:inherit !important;display:inline-flex;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.te-btn-arrow:hover>span[aria-hidden],.te-btn-arrow:focus-visible>span[aria-hidden],.te-btn-arrow.is-hover>span[aria-hidden],.te-btn-arrow.is-press>span[aria-hidden]{transform:rotate(45deg)}
.te-btn:active,.te-btn-outline:active,.te-btn.is-press,.te-btn-outline.is-press{transform:translateY(1px)}
.te-btn:active,.te-btn.is-press{background-color:#1C1B1E !important;border-color:#1C1B1E !important;box-shadow:inset 0 1px 2px rgba(0,0,0,.35) !important}
.te-btn-outline:active,.te-btn-outline.is-press{background-color:rgba(38,37,40,.06) !important;border-color:var(--btn-line-hover) !important;box-shadow:inset 0 1px 2px rgba(38,37,40,.08) !important}
.te-btn:focus-visible,.te-btn-outline:focus-visible,.te-btn.is-focus,.te-btn-outline.is-focus{outline:none !important;box-shadow:var(--btn-focus) !important}
.te-btn-outline.te-btn-arrow:focus-visible,.te-btn-outline.te-btn-arrow.is-focus{box-shadow:0 0 0 2px var(--te-white),0 0 0 4px var(--te-cool-400) !important}
iframe:focus,iframe:focus-visible,iframe[data-focus]{outline:2px solid var(--te-cool-400);outline-offset:2px}
/* adaptive tone (light / dark), like iOS. A small script measures the luminance behind every label on a pane (logo, menu
   items, Join Summit, widget text), reading photo pixels too. Each label switches on its own: over content darker than 22%
   it turns white, otherwise it stays ink, so mixed backdrops (a dark photo next to a light one) still read. The pane tint
   follows the majority: clear, or --glass-tint-dark 10% ink. With 10% white over anything brighter than 18%, ink text
   stays at AA (4.5:1); with 10% ink over anything darker, white text does. */
html[data-tone-head="dark"] .te-header-inner{--glass-tint:var(--glass-tint-dark);--glass-lift:.94}
html[data-tone-head="dark"] .te-header-inner:is([data-scrolled="true"],[data-nav="true"])::before{box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -1px 0 rgba(255,255,255,.09) !important}
html[data-tone-sk="dark"] .te-sk-pill{--glass-tint:var(--glass-tint-dark);--glass-lift:.94}
:is(.te-header-inner[data-scrolled="true"],.te-header-inner[data-nav="true"],.te-sk) [data-tone="dark"]:not(.te-btn):not(img){color:#fff !important}
:is(.te-header-inner[data-scrolled="true"],.te-header-inner[data-nav="true"]) [data-tone="dark"]:not(.te-btn) span{color:inherit !important}
:is(.te-header-inner[data-scrolled="true"],.te-header-inner[data-nav="true"]) :is(.te-nav a,.te-dd-trigger,.te-dd-menu a)[data-tone="dark"]{background-image:linear-gradient(#fff,#fff) !important}
:is(.te-header-inner[data-scrolled="true"],.te-header-inner[data-nav="true"]) .te-logo img[data-tone="dark"]{filter:invert(1) brightness(1.15) drop-shadow(0 0 6px rgba(0,0,0,.45)) !important}
:is(.te-header-inner[data-scrolled="true"],.te-header-inner[data-nav="true"]) .te-btn[data-tone="dark"]{background-color:#fff !important;border-color:#fff !important;color:var(--te-dark) !important}
:is(.te-header-inner[data-scrolled="true"],.te-header-inner[data-nav="true"]) .te-burger[data-tone="dark"] .te-bl i{background:#fff !important}
.te-logo img,.te-nav a,.te-dd-trigger,.te-dd-menu a,.te-bl i,.te-sk-text span{transition:color var(--glass-ease),filter var(--glass-ease),background-color var(--glass-ease),text-shadow var(--glass-ease),background-size .35s cubic-bezier(.4,0,.2,1)}
/* vibrancy halo: a soft glow behind each label on a pane (white behind ink text, ink behind white text) keeps labels
   legible at their edges where the backdrop changes, without adding tint to the pane */
.te-header-inner:is([data-scrolled="true"],[data-nav="true"]) :is(.te-nav a,.te-dd-trigger),.te-dd-menu a,.te-sk-text span{text-shadow:0 0 1px rgba(255,255,255,.9),0 0 8px rgba(255,255,255,.85),0 0 16px rgba(255,255,255,.55)}
.te-header-inner:is([data-scrolled="true"],[data-nav="true"]) .te-logo img{filter:drop-shadow(0 0 6px rgba(255,255,255,.85))}
:is(.te-header-inner[data-scrolled="true"],.te-header-inner[data-nav="true"],.te-sk) [data-tone="dark"]:not(.te-btn):not(img){text-shadow:0 0 1px rgba(0,0,0,.5),0 0 8px rgba(0,0,0,.55),0 0 16px rgba(0,0,0,.35) !important}
.te-header-inner .te-btn{text-shadow:none !important}
/* accessibility: people who ask for less transparency or more contrast get solid panes and plain outlines */
@media (prefers-reduced-transparency: reduce),(prefers-contrast: more){
.te-glass,.te-sk-pill,.te-header-inner[data-scrolled="true"]::before,.te-header-inner[data-nav="true"]::before{background:#fff !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;box-shadow:0 0 0 1px rgba(38,37,40,.24) !important}
.te-glass-dark{background:var(--te-dark) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;box-shadow:0 0 0 1px rgba(255,255,255,.4) !important}
.te-dd-menu,.te-header-inner .te-nav{background:#fff !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;box-shadow:0 0 0 1px rgba(38,37,40,.24) !important}
.te-glass::after,.te-glass-dark::after,.te-sk-pill::after,.te-header-inner::after,.te-dd-menu::after,.te-header-inner .te-nav::after{display:none !important}
.te-btn-outline,.te-btn-outline.te-btn-arrow,.te-btn-outline:hover{background:#fff !important;border:1px solid var(--te-dark) !important;color:var(--te-dark) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;box-shadow:none !important}
.te-btn,.te-btn:hover{background:var(--te-dark) !important;border:1px solid var(--te-dark) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;box-shadow:none !important}
}
/* header at rest: fully clear (no tint, blur, brightness, rim or shadow); the glass appears only on hover or keyboard focus, extended past the content so nothing shifts */
.te-header-inner[data-scrolled="false"]:not([data-nav="true"])::before{background-color:rgba(255,255,255,0) !important;background-image:none !important;-webkit-backdrop-filter:blur(0px) saturate(100%) brightness(1) !important;backdrop-filter:blur(0px) saturate(100%) brightness(1) !important;box-shadow:none !important;inset:0 -8px 0 -20px}
.te-header-inner[data-scrolled="false"]:not([data-nav="true"])::after{opacity:0 !important;inset:0 -8px 0 -20px;transition:opacity var(--glass-ease)}
@media (hover: hover) and (min-width: 1024px){
.te-header-inner[data-scrolled="false"]:not([data-nav="true"]):is(:hover,:has(:focus-visible))::before{background-color:var(--glass-tint) !important;background-image:var(--glass-sheen) !important;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-lift)) !important;box-shadow:var(--glass-rim),0 0 0 1px var(--glass-line),var(--glass-shadow) !important}
.te-header-inner[data-scrolled="false"]:not([data-nav="true"]):is(:hover,:has(:focus-visible))::after{opacity:1 !important}
}
@media (prefers-reduced-transparency: reduce),(prefers-contrast: more){.te-header-inner[data-scrolled="false"]:not([data-nav="true"]):is(:hover,:has(:focus-visible))::before{background:#fff !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;box-shadow:0 0 0 1px rgba(38,37,40,.24) !important}.te-header-inner[data-scrolled="false"]:not([data-nav="true"]):is(:hover,:has(:focus-visible))::after{display:none !important}}
/* ===== BUTTON STATES (Material 3 state layers) =====
   One overlay (--sl) on top of each button's own fill: hover 8%, focus 10%, pressed 10%.
   White overlay on the dark primary, ink overlay on secondary/tertiary. Borders stay put.
   Hover only exists on devices that can hover, so taps never leave a "stuck" hover. */
@property --sl{syntax:'<color>';inherits:false;initial-value:transparent}
:root{--btn-focus:0 0 0 2px var(--te-white),0 0 0 5px var(--te-cool-400);--btn-rest-p:inset 0 1px 0 rgba(255,255,255,.14),0 1px 2px rgba(38,37,40,.08);--btn-rest-s:inset 0 1px 0 rgba(255,255,255,.7)}
.te-btn,.te-btn-outline,.te-btn-outline.te-btn-arrow{--sl:transparent;background-image:linear-gradient(var(--sl),var(--sl)) !important;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:background-color var(--btn-ease),border-color var(--btn-ease),box-shadow var(--btn-ease),color var(--btn-ease),--sl var(--btn-ease) !important}
.te-btn:hover{background-color:var(--te-dark) !important;border-color:var(--te-dark) !important;box-shadow:var(--btn-rest-p) !important}
.te-btn-outline:hover,.te-btn-outline.te-btn-arrow:hover{background-color:var(--glass-tint) !important;border-color:var(--btn-line) !important;box-shadow:var(--btn-rest-s) !important}
.te-btn-outline.te-btn-arrow:hover{color:var(--te-cool-400) !important}
.te-btn-arrow:hover>span[aria-hidden]{transform:none}
@media (hover: hover){
.te-btn:hover{--sl:rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 2px 6px rgba(38,37,40,.10) !important}
.te-btn-outline:hover,.te-btn-outline.te-btn-arrow:hover{--sl:rgba(38,37,40,.08)}
.te-btn-outline.te-btn-arrow:hover{color:var(--te-dark) !important}
.te-btn-arrow:hover>span[aria-hidden]{transform:rotate(45deg)}
}
.te-btn.is-hover{--sl:rgba(255,255,255,.08);background-color:var(--te-dark) !important;border-color:var(--te-dark) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 2px 6px rgba(38,37,40,.10) !important}
.te-btn-outline.is-hover,.te-btn-outline.te-btn-arrow.is-hover{--sl:rgba(38,37,40,.08);background-color:var(--glass-tint) !important;border-color:var(--btn-line) !important;box-shadow:var(--btn-rest-s) !important}
.te-btn:focus-visible,.te-btn.is-focus{--sl:rgba(255,255,255,.10)}
.te-btn-outline:focus-visible,.te-btn-outline.is-focus{--sl:rgba(38,37,40,.10)}
.te-btn:focus-visible,.te-btn-outline:focus-visible,.te-btn.is-focus,.te-btn-outline.is-focus{outline:none !important;box-shadow:var(--btn-focus) !important}
.te-btn-outline.te-btn-arrow:focus-visible,.te-btn-outline.te-btn-arrow.is-focus{box-shadow:0 0 0 2px var(--te-white),0 0 0 5px var(--te-cool-400) !important}
.te-btn:active,.te-btn.is-press{--sl:rgba(255,255,255,.10);background-color:var(--te-dark) !important;border-color:var(--te-dark) !important;box-shadow:none !important;transform:none !important}
.te-btn-outline:active,.te-btn-outline.is-press,.te-btn-outline.te-btn-arrow:is(:active,.is-press){--sl:rgba(38,37,40,.10);background-color:var(--glass-tint) !important;border-color:var(--btn-line) !important;box-shadow:none !important;transform:none !important}
.te-btn-outline.te-btn-arrow:is(:active,.is-press){color:var(--te-dark) !important}
.te-btn-arrow:active>span[aria-hidden]{transform:rotate(45deg)}
[role="button"][aria-disabled="true"],:is(.te-btn,.te-btn-outline)[aria-disabled="true"]{--sl:transparent !important;background-color:rgba(38,37,40,.12) !important;background-image:none !important;border-color:transparent !important;color:rgba(38,37,40,.38) !important;box-shadow:none !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;cursor:not-allowed;transform:none !important}
/* ===== TOUCH TARGETS: at least 48 x 48 on touch screens and phones =====
   Small things keep their look; an invisible hit area grows them to 48px. */
@media (pointer: coarse), (max-width: 767px){
.te-burger{width:48px !important;height:48px !important;margin:-4px -4px -4px 0 !important}
.te-logo,.te-header-inner .te-btn,.te-btn-outline.te-btn-arrow,.te-person a,.te-text-link{position:relative;overflow:visible !important}
.te-logo::after,.te-header-inner .te-btn::after,.te-btn-outline.te-btn-arrow::after,.te-person a::after,.te-text-link::after{content:"" !important;display:block !important;position:absolute !important;left:50% !important;top:50% !important;right:auto !important;bottom:auto !important;width:max(100%,48px) !important;height:max(100%,48px) !important;transform:translate(-50%,-50%) !important;background:none !important;border:0 !important;box-shadow:none !important;opacity:1 !important;z-index:1 !important;padding:0 !important;-webkit-mask:none !important;mask:none !important;pointer-events:auto !important}
.te-social{width:48px !important;height:48px !important}
nav[aria-label="Social"] ul{gap:8px !important}
.te-foot-links a{padding:14px 0 !important}
.te-header-inner .te-nav .te-dd-menu a,.te-header-inner .te-nav a{min-height:48px !important}
.te-pie-key{min-height:48px}
.te-skip{min-height:48px;padding:14px 16px}
}
/* phones: buttons one size smaller with tighter padding (Material small / extra small) */
@media (max-width: 767px){
.te-btn,.te-btn-outline{height:40px !important;min-height:40px !important;padding:0 12px !important}
.te-btn-outline.te-btn-arrow{height:32px !important;min-height:32px !important;padding:0 10px !important;gap:4px !important}
}
/* every button keeps a 48px touch area on touch screens and phones */
@media (pointer: coarse), (max-width: 767px){
.te-btn,.te-btn-outline{position:relative;overflow:visible !important}
:is(.te-btn,.te-btn-outline)::after{content:"" !important;display:block !important;position:absolute !important;left:50% !important;top:50% !important;right:auto !important;bottom:auto !important;width:max(100%,48px) !important;height:max(100%,48px) !important;transform:translate(-50%,-50%) !important;background:none !important;border:0 !important;box-shadow:none !important;opacity:1 !important;z-index:1 !important;padding:0 !important;-webkit-mask:none !important;mask:none !important;pointer-events:auto !important}
}
/* tertiary text stays Cool Gray 400 in every state; every focus ring is Cool Gray 400 */
.te-btn-outline.te-btn-arrow:is(:hover,.is-hover,:active,.is-press,:focus-visible,.is-focus){color:var(--te-cool-400) !important}
/* hover, press and focus fill: keep the state layer even where older shorthand button rules reset background-image */
.te-btn:is(:hover,:active,:focus-visible,.is-hover,.is-press,.is-focus),.te-btn-outline:is(:hover,:active,:focus-visible,.is-hover,.is-press,.is-focus),.te-btn-outline.te-btn-arrow:is(:hover,:active,:focus-visible,.is-hover,.is-press,.is-focus){background-image:linear-gradient(var(--sl),var(--sl)) !important}
.te-btn:is(:active,.is-press){--sl:rgba(255,255,255,.10) !important}.te-btn-outline:is(:active,.is-press){--sl:rgba(38,37,40,.10) !important}
/* phones and tablets: logo left, then the menu button, then Join Summit on the far right */
@media (max-width: 1023px){.te-burger{order:2 !important;margin:-4px 0 !important}.te-header-inner .te-cta{order:3 !important}}
/* phones: Luma calendar 20px taller */
@media (max-width: 767px){.te-cal{height:560px !important}.te-cal iframe,.te-cal .te-embed{height:560px !important}}
