.grSite{--paper:#f4f1ea;--paper-deep:#efe9dd;--paper-panel:#f7f4ee;--ink:#2b2b2b;--ink-soft:#4a4744;--ink-dim:#6b6660;--ink-faint:#948d83;--line:#2b2b2b24;--line-strong:#2b2b2b52;--accent:#c0392b;--accent-soft:#c0392b24;--rule-blue:#465a7829;--tape:#d6cab09e;--display:clamp(3rem, 9vw, 7.75rem);--display-sm:clamp(2.2rem, 5vw, 4rem);--heading:clamp(1.75rem, 3.2vw, 3rem);--body:clamp(1.0625rem, 1.05vw, 1.1875rem);--gutter:clamp(1.25rem, 4.5vw, 5.5rem);--section:clamp(4.5rem, 10vh, 8.5rem);--measure:34rem;--font-serif:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif;--font-sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;background-color:var(--paper);min-height:100vh;color:var(--ink);font-family:var(--font-sans);font-size:var(--body);isolation:isolate;line-height:1.65;position:relative;overflow-x:clip}.grSite:before{content:"";z-index:-1;pointer-events:none;opacity:.5;mix-blend-mode:multiply;background-image:radial-gradient(120% 90% at 12% 8%,#ffffff8c,#0000 55%),radial-gradient(120% 100% at 88% 100%,#d6cab066,#0000 60%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:cover,cover,180px 180px;position:fixed;inset:0}.grSite *,.grSite :before,.grSite :after{box-sizing:border-box}.grSite :where(a){color:inherit;text-decoration:none}.grSite :where(button,input,textarea,select){font:inherit;color:inherit}.grSite ::selection{background:var(--accent-soft);color:var(--ink)}.grSite :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}.grWrap{width:100%;max-width:78rem;padding-inline:var(--gutter);margin:0 auto}.grRule{background:var(--line);border:0;height:1px;margin:0}.grSection{padding-block:var(--section)}.grSectionTight{padding-top:0}.grLabel{font-family:var(--font-serif);letter-spacing:.02em;color:var(--accent);margin:0;font-size:.9375rem;font-style:italic}.grNote{font-family:var(--font-serif);color:var(--ink-dim);font-size:1rem;font-style:italic;line-height:1.4}.grHeading{font-family:var(--font-serif);font-size:var(--heading);letter-spacing:-.015em;text-wrap:balance;margin:0;font-weight:600;line-height:1.06}.grLede{max-width:var(--measure);color:var(--ink-soft);text-wrap:pretty;margin:0;font-size:clamp(1.125rem,1.5vw,1.4375rem);line-height:1.55}.grSectionHead{gap:.875rem;max-width:40rem;margin-bottom:clamp(2.25rem,5vw,3.5rem);display:grid}.grBtn{border:1.5px solid var(--line-strong);font-family:var(--font-serif);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:.5rem;padding:.8125rem 1.5rem;font-size:1.0625rem;transition:background-color .35s cubic-bezier(.22,1,.36,1),color .35s cubic-bezier(.22,1,.36,1),border-color .35s cubic-bezier(.22,1,.36,1),transform .35s cubic-bezier(.22,1,.36,1);display:inline-flex}.grBtn:hover{background:var(--ink);border-color:var(--ink);color:var(--paper);transform:translateY(-1px)}.grBtnSolid{background:var(--ink);border-color:var(--ink);color:var(--paper)}.grBtnSolid:hover{background:var(--accent);border-color:var(--accent);color:var(--paper)}.grBtn .grArrow{transition:transform .35s cubic-bezier(.22,1,.36,1)}.grBtn:hover .grArrow{transform:translate(2px,-2px)}.grHeader{z-index:20;background:color-mix(in oklab, var(--paper) 80%, transparent);-webkit-backdrop-filter:blur(8px)saturate(120%);backdrop-filter:blur(8px)saturate(120%);border-bottom:1px solid var(--line);position:sticky;top:0}.grHeaderRow{justify-content:space-between;align-items:center;gap:1.5rem;height:4.5rem;display:flex}.grBrand{gap:.05rem;line-height:1.1;display:grid}.grBrandName{font-family:var(--font-serif);letter-spacing:-.01em;font-size:1.375rem;font-weight:600}.grBrandRole{font-family:var(--font-serif);color:var(--ink-dim);font-size:.8125rem;font-style:italic}.grNav{align-items:center;gap:2rem;display:none}.grNavLink{font-family:var(--font-serif);color:var(--ink-soft);font-size:1.125rem;transition:color .25s;position:relative}.grNavLink:hover{color:var(--ink)}.grNavLink:after{content:"";background:var(--accent);transform-origin:0;border-radius:2px;height:2px;transition:transform .4s cubic-bezier(.22,1,.36,1);position:absolute;bottom:-.28rem;left:-.1rem;right:-.1rem;transform:scaleX(0)}.grNavLink:hover:after{transform:scaleX(1)}.grMenu{position:relative}.grMenuSummary{border:1.5px solid var(--line-strong);font-family:var(--font-serif);color:var(--ink-soft);cursor:pointer;border-radius:999px;align-items:center;gap:.5rem;padding:.5rem .875rem;font-size:.9375rem;font-style:italic;list-style:none;display:inline-flex}.grMenuSummary::-webkit-details-marker{display:none}.grMenu[open] .grMenuSummary{color:var(--ink);border-color:var(--ink)}.grMenuPanel{z-index:30;border:1px solid var(--line);background:var(--paper-panel);border-radius:.5rem;gap:.25rem;min-width:11rem;padding:.625rem;display:grid;position:absolute;top:calc(100% + .6rem);right:0;box-shadow:0 18px 40px -22px #2b2b2b80}.grMenuLink{font-family:var(--font-serif);color:var(--ink-soft);border-radius:.375rem;padding:.5rem .625rem;font-size:1.0625rem}.grMenuLink:hover{background:var(--accent-soft);color:var(--ink)}@media (min-width:52rem){.grNav{display:flex}.grHeaderRow{height:5.25rem}.grMenu{display:none}}.grHero{align-items:center;gap:clamp(2.5rem,6vw,4rem);padding-top:clamp(2.5rem,7vh,5rem);padding-bottom:clamp(2.5rem,6vh,4.5rem);display:grid}.grHeroText{align-content:center;gap:1.75rem;display:grid}.grKicker{font-family:var(--font-serif);color:var(--accent);font-size:clamp(1.0625rem,1.4vw,1.25rem);font-style:italic}.grDisplay{font-family:var(--font-serif);font-size:var(--display);letter-spacing:-.03em;margin:0;font-weight:600;line-height:.98}.grDisplayLine{display:block}.grMarkWord{white-space:nowrap;display:inline-block;position:relative}.grMarkWord>.grUnderline{width:104%;height:.34em;color:var(--accent);pointer-events:none;position:absolute;bottom:-.16em;left:-2%;overflow:visible}.grHeroActions{flex-wrap:wrap;align-items:center;gap:.875rem;margin-top:.5rem;display:flex}.grPortrait{justify-self:center;width:min(100%,24rem);margin:0}.grPortraitFrame{background:var(--paper-panel);border:1px solid var(--line);border-radius:2px;padding:.75rem .75rem 0;transition:transform .5s cubic-bezier(.22,1,.36,1);position:relative;transform:rotate(-2.2deg);box-shadow:inset 0 1px #fff9,0 26px 50px -26px #2b2b2b8c,0 6px 14px -10px #2b2b2b66}.grPortrait:hover .grPortraitFrame{transform:rotate(0)}.grPortraitImg{filter:grayscale(.12)contrast(1.03);mix-blend-mode:multiply;border-radius:1px;width:100%;height:auto;display:block}.grTape{background:var(--tape);border:1px solid #2b2b2b0f;width:4.5rem;height:1.5rem;position:absolute;top:-.7rem;box-shadow:0 2px 6px -3px #2b2b2b59}.grTape:after{content:"";background:linear-gradient(105deg,#ffffff59,#0000 45%);position:absolute;inset:0}.grTapeLeft{left:1.25rem;transform:rotate(-6deg)}.grTapeRight{right:1.25rem;transform:rotate(5deg)}.grPortraitCaption{font-family:var(--font-serif);color:var(--ink-dim);text-align:center;margin:.85rem .25rem .6rem;font-size:.9375rem;font-style:italic}@media (min-width:60rem){.grHero{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(3rem,6vw,6rem)}.grPortrait{justify-self:end;width:min(100%,27rem)}}.grAbout{gap:clamp(2rem,5vw,3.5rem);display:grid}.grAboutHead{align-content:start;gap:.875rem;display:grid}.grAboutBody{gap:1.375rem;max-width:60rem;display:grid}.grAboutBody p{color:var(--ink-soft);text-wrap:pretty;margin:0;font-size:clamp(1.0625rem,1.15vw,1.1875rem);line-height:1.72}.grAboutBody p:first-of-type:first-letter{float:left;font-family:var(--font-serif);color:var(--ink);margin:.06em .14em 0 0;font-size:3.6em;font-weight:600;line-height:.74}.grPull{border-left:2px solid var(--accent);font-family:var(--font-serif);color:var(--ink);text-wrap:balance;margin:.5rem 0;padding-left:1.25rem;font-size:clamp(1.375rem,2.4vw,1.9375rem);font-style:italic;line-height:1.28}.grAboutNote{color:var(--accent);align-items:flex-start;gap:.5rem;display:inline-flex;transform:rotate(-1.5deg)}.grAboutNote .grArrowNote{color:var(--accent);flex:none;margin-top:.15rem}.grAboutNote span{font-family:var(--font-serif);color:var(--ink-dim);font-size:1.0625rem;font-style:italic}@media (min-width:60rem){.grAbout{grid-template-columns:15rem minmax(0,1fr);align-items:start;gap:4rem}.grAboutHead{position:sticky;top:7rem}.grAboutBody{column-count:2;column-gap:3rem;max-width:none;display:block}.grAboutBody>*{break-inside:avoid}.grPull{column-span:all;margin-block:1.25rem}}.grSkills{border-top:1px solid var(--line);gap:0;display:grid}.grSkillGroup{border-bottom:1px solid var(--line);gap:1rem;padding-block:clamp(1.5rem,3.5vw,2.25rem);display:grid}.grSkillTitle{font-family:var(--font-serif);letter-spacing:-.01em;margin:0;font-size:1.375rem;font-weight:600}.grSkillList{gap:.625rem 1.5rem;margin:0;padding:0;list-style:none;display:grid}.grSkillItem{color:var(--ink-soft);grid-template-columns:1.1rem minmax(0,1fr);align-items:baseline;gap:.625rem;display:grid}.grSkillItem .grTick{color:var(--accent);transform:translateY(.1rem)}@media (min-width:44rem){.grSkillList{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:60rem){.grSkillGroup{grid-template-columns:13rem minmax(0,1fr);align-items:start;gap:2.5rem}}.grWorkGrid{gap:clamp(1.5rem,3vw,2.25rem);display:grid}.grCard{padding:clamp(1.5rem,3vw,2.25rem);background:linear-gradient(var(--paper-panel), var(--paper-panel)) padding-box, repeating-linear-gradient(var(--paper-panel), var(--paper-panel) 1.85rem, var(--rule-blue) 1.85rem, var(--rule-blue) calc(1.85rem + 1px));border:1px solid var(--line);border-radius:3px;gap:1rem;padding-left:clamp(2.25rem,4vw,3rem);transition:transform .45s cubic-bezier(.22,1,.36,1),box-shadow .45s cubic-bezier(.22,1,.36,1);display:grid;position:relative;overflow:hidden;box-shadow:0 20px 40px -30px #2b2b2b8c}.grCard:before{content:"";background:var(--accent);opacity:.55;width:1.5px;position:absolute;top:0;bottom:0;left:clamp(1.25rem,2.5vw,1.75rem)}.grCard:hover{transform:translateY(-4px)rotate(0);box-shadow:0 32px 55px -32px #2b2b2b99}.grCardHead{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.grCardIndex{font-family:var(--font-serif);color:var(--accent);font-size:1.0625rem;font-style:italic}.grCardMeta{font-family:var(--font-serif);color:var(--ink-dim);font-size:.9375rem;font-style:italic}.grCardTitle{font-family:var(--font-serif);letter-spacing:-.015em;margin:0;font-size:clamp(1.625rem,2.6vw,2.125rem);font-weight:600;line-height:1.05}.grCardBody{color:var(--ink-soft);text-wrap:pretty;margin:0}.grCardTags{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.grCardTag{border:1px solid var(--line-strong);color:var(--ink-dim);border-radius:999px;padding:.25rem .6875rem;font-size:.8125rem}.grCardLink{font-family:var(--font-serif);color:var(--ink);border-bottom:1.5px solid var(--accent);align-items:center;gap:.4rem;width:fit-content;margin-top:.25rem;padding-bottom:1px;font-size:1.0625rem;transition:gap .3s cubic-bezier(.22,1,.36,1);display:inline-flex}.grCardLink:hover{gap:.7rem}.grCardLink .grArrow{color:var(--accent)}@media (min-width:48rem){.grWorkGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.grCardOdd{transform:rotate(-1deg)}.grCardEven{transform:rotate(.9deg)}}.grContact{text-align:center;justify-items:center;gap:1.75rem;padding-block:clamp(1rem,3vw,2rem);display:grid}.grContactHeading{max-width:20ch;font-family:var(--font-serif);font-size:var(--display-sm);letter-spacing:-.02em;text-wrap:balance;margin:0;font-weight:600;line-height:1.05}.grCircleWord{color:var(--accent);padding-inline:.15em;display:inline-block;position:relative}.grCircleWord>.grCircle{width:124%;height:148%;color:var(--accent);pointer-events:none;position:absolute;top:-22%;left:-12%;overflow:visible}.grContactBody{max-width:38rem;color:var(--ink-soft);text-wrap:pretty}.grContactActions{flex-direction:column;align-items:center;gap:1.25rem;display:flex}.grSocials{flex-wrap:wrap;justify-content:center;gap:.75rem 1.75rem;margin:0;padding:0;list-style:none;display:flex}.grSocial{color:var(--ink-soft);align-items:center;gap:.5rem;transition:color .25s;display:inline-flex}.grSocial:hover{color:var(--accent)}.grSocial svg{flex:none}.grSocialHandle{font-family:var(--font-serif);font-size:1rem;font-style:italic}.grFooter{border-top:1px solid var(--line);padding-top:clamp(3rem,6vw,4.5rem);padding-bottom:clamp(2rem,4vw,3rem)}.grFooterTop{gap:2rem;padding-bottom:2.5rem;display:grid}.grFooterBlurb{max-width:30rem;color:var(--ink-dim);text-wrap:pretty;margin:0;font-size:.9375rem;line-height:1.6}.grFooterLinks{flex-wrap:wrap;align-items:start;gap:.75rem 1.75rem;display:flex}.grFooterLink{font-family:var(--font-serif);color:var(--ink-soft);font-size:1.0625rem;transition:color .25s}.grFooterLink:hover{color:var(--accent)}.grFooterBottom{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem 2rem;padding-top:1.75rem;display:flex}.grFooterCopy{color:var(--ink-faint);font-size:.875rem}.grFooterNote{font-family:var(--font-serif);color:var(--ink-dim);font-size:1rem;font-style:italic}.grFooterWord{font-family:var(--font-serif);letter-spacing:-.03em;color:#0000;-webkit-text-stroke:1px var(--line-strong);text-stroke:1px var(--line-strong);-webkit-user-select:none;user-select:none;margin:0;padding-top:clamp(1.5rem,5vw,3rem);font-size:clamp(3.5rem,15vw,12rem);font-weight:600;line-height:.82}@media (min-width:52rem){.grFooterTop{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:4rem}}.grStroke{fill:none;stroke:currentColor;stroke-width:2.25px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px}.grReveal .grStroke{transition:stroke-dashoffset .9s cubic-bezier(.65,0,.35,1);transition-delay:calc(var(--gr-delay,0s) + .12s)}.grReveal[data-shown=true] .grStroke{stroke-dashoffset:0}.grReveal{opacity:0;transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1);transition-delay:var(--gr-delay,0s);transform:translateY(1.5rem)}.grReveal[data-shown=true]{opacity:1;transform:translate(0,0)}@media (prefers-reduced-motion:reduce){.grReveal,.grReveal[data-shown=true]{opacity:1;transition:none;transform:none}.grStroke,.grReveal .grStroke,.grReveal[data-shown=true] .grStroke{stroke-dashoffset:0;transition:none}.grSite *,.grSite :before,.grSite :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
