/* Warm taupe surfaces; blue accents in light mode and complementary orange in dark mode. */
:root{color-scheme:light;--bg:#f1efeb;--tile:#faf9f6;--ink:#17181a;--muted:#62656a;--body-copy:#50535a;--accent:#1a53ff;--accent-hover:#1045e7;--accent-ink:#fff;--accent-rgb:26,83,255;--accent-text:#1a53ff;--link:#1946bc;--brand:#6d5cff;--soft-accent:#e7edff;--date-bg:#edf1fe;--rule:#c9cad0;--bar-bg:rgba(255,255,255,.56);--bar-border:rgba(255,255,255,.8);--pill-bg:rgba(255,255,255,.36);--hover-bg:#fff;--filter-ink:#3d3f44;--filter-hover:rgba(0,0,0,.045);--utility-label:#55585e;--linkedin:#1467c8;--leadership-bg:linear-gradient(145deg,#e8e7e2,#fbfaf6);--cross-bg:#d8e4ee;--cross-ink:#324b63;--side-bg:linear-gradient(145deg,#f1eadc,#fbfaf7);--writing-bg:#e4deee;--current-bg:radial-gradient(circle at 75% 20%,#59616b 0,transparent 45%),linear-gradient(145deg,#272d33,#0e1115);--current-muted:#adb3bc;--image-bg:#e8e6e0;--radius:30px;--gap:18px;--border:rgba(20,20,22,.09);--shadow:0 1px 0 rgba(255,255,255,.9) inset,0 2px 4px rgba(25,25,30,.025),0 16px 36px rgba(25,25,30,.035);--shadow-hover:0 1px 0 rgba(255,255,255,.9) inset,0 18px 45px rgba(25,25,30,.12)}
:root[data-theme="dark"]{color-scheme:dark;--bg:#2b2825;--tile:#36312e;--ink:#f3eee7;--muted:#bfb5aa;--body-copy:#d3c9be;--accent:#ff934f;--accent-hover:#ffa86f;--accent-ink:#2b211a;--accent-rgb:255,147,79;--accent-text:#ffad76;--link:#ffc096;--brand:#ff934f;--soft-accent:#4a382c;--date-bg:#503b2c;--rule:#655d55;--bar-bg:#37322e;--bar-border:#514940;--pill-bg:#37322e;--hover-bg:#484039;--filter-ink:#d8cfc4;--filter-hover:rgba(243,238,231,.07);--utility-label:#c8beb3;--linkedin:#79aeef;--leadership-bg:linear-gradient(145deg,#433b34,#38322d);--cross-bg:#354047;--cross-ink:#b6cbd5;--side-bg:linear-gradient(145deg,#4b4032,#3c342d);--writing-bg:#443b47;--current-bg:radial-gradient(circle at 75% 20%,#62584e 0,transparent 48%),linear-gradient(145deg,#403831,#302b27);--current-muted:#d1c2b2;--image-bg:#423a33;--border:rgba(231,212,190,.13);--shadow:0 1px 0 rgba(244,232,214,.035) inset,0 10px 30px rgba(24,20,17,.12);--shadow-hover:0 1px 0 rgba(244,232,214,.06) inset,0 18px 40px rgba(24,20,17,.22)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}a{text-decoration:none;color:inherit}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:3px solid var(--accent-text);outline-offset:5px}.wrap{width:min(1200px,calc(100% - 64px));margin-inline:auto}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-90px;left:20px;z-index:20;background:var(--tile);padding:14px;border-radius:12px}.skip-link:focus{top:15px}
.topbar{min-height:112px;display:grid;grid-template-columns:1fr auto 1fr;gap:24px;align-items:center}.brand{font-weight:800;font-size:34px;letter-spacing:-.08em;width:max-content}.brand span{color:var(--brand)}.filterbar{position:relative;isolation:isolate;display:flex;flex-wrap:wrap;gap:2px;padding:5px;border-radius:28px;background:var(--bar-bg);box-shadow:0 6px 22px rgba(20,22,28,.035);border:1px solid var(--bar-border)}.filter{position:relative;z-index:1;border:0;background:transparent;color:var(--filter-ink);min-height:44px;padding:12px 22px;border-radius:999px;cursor:pointer;font-size:.9375rem;white-space:nowrap;transition:color .18s,background .2s,box-shadow .2s}.filter:hover{background:var(--filter-hover)}.filter.active{color:var(--accent-ink);background:var(--accent);box-shadow:0 4px 16px rgba(var(--accent-rgb),.22)}.filter-indicator{display:none;position:absolute;left:0;top:0;pointer-events:none;border-radius:999px;background:var(--accent);box-shadow:0 4px 16px rgba(var(--accent-rgb),.22)}.has-indicator .filter-indicator{display:block}.has-indicator .filter.active{background:transparent;box-shadow:none}.filter:focus-visible{outline-color:var(--accent-text)}.contact-pill{justify-self:end;padding:13px 18px;border:1px solid var(--border);border-radius:999px;background:var(--pill-bg);font-size:.875rem;font-weight:500;white-space:nowrap}.contact-pill:hover{background:var(--hover-bg)}.contact-pill span{margin-left:8px}
.grid{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap);align-items:stretch}.tile{position:relative;min-width:0;min-height:300px;border-radius:var(--radius);overflow:hidden;background:var(--tile);border:1px solid var(--border);box-shadow:var(--shadow);isolation:isolate;display:flex;flex-direction:column;padding:26px;transition:box-shadow .25s}.tile:hover{box-shadow:var(--shadow-hover)}.span-2{grid-column:span 2}.tile-ghost{position:absolute!important;margin:0;min-height:0;pointer-events:none;z-index:5}.tile-meta{position:relative;z-index:3;display:flex;gap:12px;justify-content:space-between;align-items:flex-start;font-size:.75rem;font-weight:600;letter-spacing:.075em;text-transform:uppercase;line-height:1.5}.tile-meta span:last-child{text-align:right}.work-copy{position:relative;z-index:3;margin-top:auto;padding-top:24px;padding-right:18px}.work-copy h2{margin:0 0 12px;font-size:clamp(1.75rem,2.6vw,2.75rem);line-height:1.04;letter-spacing:-.055em;font-weight:600;text-wrap:balance}.work-copy p{margin:0;max-width:530px;font-size:1rem;line-height:1.45;color:var(--muted)}.go{position:absolute;right:22px;bottom:22px;z-index:4;width:36px;height:36px;border-radius:50%;border:1px solid currentColor;display:grid;place-items:center;font-size:18px;transition:transform .2s}.tile:has(.go) .work-copy{padding-right:32px}.tile:hover .go{transform:translate(2px,-2px)}
.intro{display:grid;grid-template-columns:138px 1fr;align-items:center;gap:26px;padding:30px}.intro-photo{width:138px;aspect-ratio:1;border-radius:50%;overflow:hidden;background:#111}.intro-photo img{width:100%;height:100%;object-fit:cover;object-position:center}.intro-copy{font-size:1.0625rem;line-height:1.5;letter-spacing:-.02em}.intro-copy p{margin:0}.intro-copy h2{font-size:1.25rem;font-weight:400;margin:0 0 8px}.intro-copy .hello{font-size:1rem;margin-bottom:8px}.micro{display:block;color:var(--muted);font-size:.8125rem;margin-top:18px;letter-spacing:0}.utility{align-items:center;justify-content:center;padding-bottom:60px}.utility-icon{font-size:95px;font-weight:700;letter-spacing:-.08em;opacity:.92}.utility-icon img{display:block;width:1em;height:1em;object-fit:contain}.linkedin .utility-icon{font-size:90px;color:var(--linkedin)}.utility-label{position:absolute;left:24px;right:24px;bottom:22px;margin:0;padding-top:14px;border-top:1px solid var(--border);display:flex;justify-content:space-between;font-size:.875rem;font-weight:500;color:var(--utility-label)}
.project{min-height:370px;color:#fff;background:#17181a}.art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .6s cubic-bezier(.2,.7,.2,1)}.project:hover .art{transform:scale(1.035)}.apex .art{object-position:center 25%}.scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,8,12,.52),rgba(5,8,12,.02) 30%,rgba(5,8,12,.24) 48%,rgba(5,8,12,.9) 100%)}.project .work-copy{padding-top:155px}.project .work-copy p,.current .work-copy p{color:rgba(255,255,255,.88)}.project .tile-meta{text-shadow:0 1px 10px rgba(0,0,0,.6)}
.article,.stat{min-height:350px}.text-symbol{font-size:88px;font-weight:400;line-height:1;margin:26px 0 12px;letter-spacing:-.06em}.leadership{background:var(--leadership-bg)}.leadership .text-symbol{text-align:center}.current{background:var(--current-bg);color:#fff}.current-statement{font-size:clamp(2.25rem,4vw,3.7rem);font-weight:700;line-height:1;letter-spacing:-.06em;max-width:500px;margin:38px 0 28px;color:var(--current-muted)}.current .work-copy h2{font-size:1.65rem}.cross-save{background:var(--cross-bg)}.cross-save .text-symbol{color:var(--cross-ink)}.side-card{background:var(--side-bg)}.note .work-copy h2{font-size:2rem}.note .text-symbol{font-size:60px;margin:20px 0}.writing{background:var(--writing-bg)}.writing .text-symbol{font-family:Georgia,serif;font-size:110px;line-height:.6;margin:45px 0 0}.bowling{background:#253e38;color:#f0f3dc}.bowling .tile-meta{flex-direction:column;gap:5px;letter-spacing:.05em}.bowling .tile-meta span:last-child{text-align:left;font-size:.75rem;color:#cfdbd5}.stat-block{display:flex;flex-direction:column;margin:24px 0 5px}.stat-number{font-size:clamp(4.5rem,7vw,6.5rem);font-weight:500;letter-spacing:-.075em;line-height:1}.stat-label{font-size:.875rem;margin-top:10px;color:#dae3d4}.bowling .work-copy h2{font-size:1.65rem}.bowling .work-copy p{color:#d1dfd6;font-size:.875rem}
.footer{min-height:120px;display:flex;gap:20px;align-items:center;justify-content:space-between;color:var(--muted);font-size:.8125rem;line-height:1.5}.no-script,.empty-state{padding:30px;background:var(--tile);border-radius:24px;color:var(--muted)}
@media(min-width:1051px) and (max-width:1240px){.intro{grid-template-columns:100px 1fr;padding:24px;gap:20px}.intro-photo{width:100px}.tile{padding:22px}.work-copy h2{font-size:1.9rem}.tile-meta{font-size:.75rem;letter-spacing:.03em}}
@media(max-width:1050px){.wrap{width:calc(100% - 32px)}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{grid-template-columns:1fr auto;gap:16px;padding:20px 0 24px}.filterbar{order:3;grid-column:1/-1;justify-self:center}.intro{grid-column:span 2}.project{min-height:370px}}
@media(max-width:620px){:root{--radius:24px;--gap:12px}.wrap{width:calc(100% - 24px)}.topbar{gap:18px;padding:18px 0 20px}.brand{font-size:30px}.contact-pill{font-size:.875rem;padding:10px 14px}.filterbar{width:100%;justify-content:space-between;padding:4px;gap:0}.filter{padding:10px 9px;font-size:.875rem}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tile{grid-column:1/-1;min-height:280px;padding:24px}.utility{grid-column:span 1;min-height:185px}.utility-icon{font-size:80px}.linkedin .utility-icon{font-size:75px}.intro{grid-template-columns:82px 1fr;gap:18px;padding:24px 20px;min-height:270px}.intro-photo{width:82px}.intro-copy{font-size:1rem}.intro-copy h2{font-size:1.125rem}.intro-copy .hello{font-size:.9375rem}.micro{font-size:.8125rem;line-height:1.5}.project{min-height:385px}.work-copy h2{font-size:2.25rem}.tile-meta{font-size:.75rem}.article,.stat{min-height:340px}.bowling .tile-meta{flex-direction:row}.stat-number{font-size:6rem}.current-statement{font-size:2.7rem}.footer{padding:28px 0;align-items:flex-start;min-height:100px}.footer span:last-child{max-width:180px;text-align:right}}
@media(max-width:360px){.filter{padding:10px 7px;font-size:.8125rem}.intro{grid-template-columns:1fr}.intro-photo{width:76px}.intro-copy{font-size:1rem}.bowling .tile-meta{flex-direction:column}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.resume-card{background:var(--soft-accent)}.resume-card .text-symbol{color:var(--accent-text);font-size:3rem;font-weight:600;letter-spacing:-.06em}.resume-card .tile-meta{color:var(--link)}

.header-actions{display:flex;align-items:center;justify-self:end;gap:10px}.theme-toggle{display:inline-grid;place-items:center;flex:0 0 44px;width:44px;height:44px;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--pill-bg);color:var(--ink);cursor:pointer;transition:background .2s,transform .2s}.theme-toggle:hover{background:var(--hover-bg)}.theme-toggle:active{transform:scale(.94)}.theme-sun{display:none}[data-theme="dark"] .theme-sun{display:block}[data-theme="dark"] .theme-moon{display:none}.story-nav{display:flex;align-items:center;justify-content:space-between;gap:16px}.story-deck{color:var(--body-copy)}
@media(max-width:620px){.header-actions{gap:8px}.theme-toggle{width:44px;height:44px;flex-basis:44px}.resume-nav{flex-wrap:wrap;padding-block:18px}.resume-nav .header-actions{margin-left:auto}}
@media print{.theme-toggle{display:none!important}}

/* Compact bowling highlights share the same source as the detail page. */
.bowling-tile-extras{display:flex;flex-wrap:wrap;gap:6px 20px;margin:16px 0 0;font-size:.75rem;color:#d1dfd6}.bowling-tile-extras b{font-size:1.125rem;font-weight:500;color:#f0f3dc;margin-right:3px}.bowling .stat-number{font-size:clamp(4.4rem,6vw,5.5rem)}.bowling .stat-label{font-size:.75rem}.bowling .work-copy{padding-top:22px}.bowling .work-copy h2{font-size:1.5rem}.bowling .work-copy p{font-size:.8125rem}
/* Content tags label context; they are not extra navigation controls. */
.content-tags{list-style:none;display:flex;flex-wrap:wrap;gap:7px;margin:0;padding:0;font-size:.875rem;font-weight:500;line-height:1.35;letter-spacing:0;text-transform:none;text-shadow:none}.content-tags[hidden]{display:none}.content-tags li{padding:6px 11px;border-radius:999px;background:var(--soft-accent);color:var(--link)}.tile-context{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-width:0}.tile-context>span{text-align:left!important}.tile-meta>span{flex-shrink:0}.project .content-tags li,.current .content-tags li{background:rgba(18,23,32,.66);color:#fff;backdrop-filter:blur(10px)}.story-page>.content-tags{margin-top:22px}
.collection-hint{display:block;margin-top:16px;font-size:.875rem;font-weight:500;line-height:1.4;color:var(--body-copy)}.project .collection-hint,.current .collection-hint{color:rgba(255,255,255,.8)}

/* Borderless work cards; elevation stays above adjacent cards without changing layout. */
:root{--shadow-raised:0 1px 0 rgba(255,255,255,.9) inset,0 28px 56px -12px rgba(25,25,30,.24),0 10px 20px -8px rgba(25,25,30,.12)}
:root[data-theme="dark"]{--shadow-raised:0 1px 0 rgba(244,232,214,.06) inset,0 28px 56px -12px rgba(24,20,17,.42),0 10px 20px -8px rgba(24,20,17,.26)}
.tile:is(.project,.article,.statement){border:0}
.tile.project{background:transparent}
:is(.grid,.collection-grid){isolation:isolate}
:is(.grid,.collection-grid)>.tile:not(.tile-ghost){z-index:0;transition:box-shadow .32s ease,opacity .42s cubic-bezier(.22,.61,.36,1),scale .32s cubic-bezier(.22,1,.36,1),translate .32s cubic-bezier(.22,1,.36,1)}
:is(.grid,.collection-grid)>.tile:not(.tile-ghost):focus-visible{z-index:7;box-shadow:var(--shadow-raised)}
@media(hover:hover) and (pointer:fine){
  /* Separate transform properties compose with the grid's existing reflow animation. */
  :is(.grid,.collection-grid)>.tile:not(.tile-ghost):hover{scale:1.02;translate:0 -4px;box-shadow:var(--shadow-raised)}
  :is(.grid,.collection-grid)>.tile:not(.tile-ghost):hover:not(:focus-visible){z-index:6}
  :is(.grid,.collection-grid):has(>.tile:not([hidden]):not(.tile-ghost):hover)>.tile:not([hidden]):not(.tile-ghost):not(:hover):not(:focus-visible){opacity:.95}
}
@media(prefers-reduced-motion:reduce){
  :is(.grid,.collection-grid)>.tile:not(.tile-ghost){scale:none!important;translate:none!important}
}
