:root{color:#111722;background:#fbfbf7;font-family:Inter,Segoe UI,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-size:16px;--paper: #fbfbf7;--paper-warm: #fff8eb;--surface: #ffffff;--surface-blue: #eaf4ff;--ink: #111722;--ink-soft: #27344a;--muted: #647386;--line: #d5e0ec;--line-strong: #9fb0c2;--accent: #1f6fb8;--accent-strong: #123f75;--accent-soft: #deefff;--accent-warm: #d58a1f;--accent-warm-soft: #fff0d6;--radius: 12px;--radius-small: 8px;--shadow: 0 24px 80px rgb(18 63 117 / 13%);--serif: "Newsreader", Georgia, "Times New Roman", serif}:root[data-theme=night]{color:#f3f8ff;background:#06111f;--paper: #06111f;--paper-warm: #0b1b2e;--surface: #0e2238;--surface-blue: #12304d;--ink: #f4f8ff;--ink-soft: #d9e7f7;--muted: #b7c8da;--line: rgb(213 231 248 / 26%);--line-strong: rgb(226 238 250 / 48%);--accent: #8ec7ff;--accent-strong: #e3f1ff;--accent-soft: rgb(96 159 219 / 26%);--accent-warm: #ffd27a;--accent-warm-soft: rgb(255 210 122 / 16%);--shadow: 0 26px 86px rgb(0 0 0 / 42%)}html,body{margin:0;width:100%;min-height:100%}body{background:linear-gradient(180deg,#fff,#fbfbf7 38%,#f6f9fb);background-attachment:fixed;color:var(--ink);text-rendering:optimizeLegibility}:root[data-theme=night] body{background:radial-gradient(ellipse at 14% 10%,rgb(68 128 190 / 18%) 0 10rem,transparent 27rem),radial-gradient(ellipse at 82% 18%,rgb(84 114 168 / 12%) 0 8rem,transparent 24rem),radial-gradient(ellipse at 48% 0%,rgb(255 210 122 / 7%) 0 7rem,transparent 22rem),linear-gradient(180deg,#0f2b49,#081a2d 42%,#06111f);background-attachment:fixed}*{box-sizing:border-box}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}h1,h2,h3,p{margin-top:0}h1,h2,h3,.brand{color:var(--ink)}p,li{color:var(--muted);line-height:1.72}.sr-only{position:absolute;overflow:hidden;width:1px;height:1px;margin:-1px;clip:rect(0,0,0,0);white-space:nowrap}.site-header,.site-shell,.site-footer{width:min(1180px,calc(100% - 56px));margin:0 auto}.site-header{position:sticky;top:0;z-index:10;isolation:isolate;display:grid;grid-template-columns:minmax(220px,1fr) auto;align-items:center;gap:28px;padding:16px 0}.site-header:before{position:absolute;inset:0 calc(50% - 50vw);z-index:-2;border-top:1px solid #000000;border-bottom:1px solid #000000;background:var(--accent-strong);backdrop-filter:blur(18px);content:""}.site-header:after{position:absolute;inset:0 calc(50% - 50vw);z-index:-1;background:radial-gradient(circle at 8px 10px,rgb(255 255 255 / 62%) 0 1.2px,transparent 2.4px),radial-gradient(circle at 56px 26px,rgb(255 210 122 / 46%) 0 1px,transparent 2.2px),radial-gradient(circle at 102px 15px,rgb(255 255 255 / 46%) 0 1px,transparent 2px),linear-gradient(115deg,transparent 0 43%,rgb(255 255 255 / 16%) 43% 43.6%,transparent 43.6% 100%),linear-gradient(25deg,transparent 0 55%,rgb(255 210 122 / 12%) 55% 55.5%,transparent 55.5% 100%);background-position:0 0,18px 6px,30px 2px,0 0,42px 0;background-size:132px 42px,148px 46px,170px 44px,210px 72px,240px 84px;content:"";opacity:.52;pointer-events:none;animation:constellation-drift 28s linear infinite}.site-header:has(.brand:hover):before{background:linear-gradient(90deg,#d9efff,#f1f9ff 58%,#fff)}.site-header:has(.brand:hover):after{background:radial-gradient(circle at 8px 10px,rgb(82 61 140 / 34%) 0 1.2px,transparent 2.4px),radial-gradient(circle at 56px 26px,rgb(213 138 31 / 30%) 0 1px,transparent 2.2px),radial-gradient(circle at 102px 15px,rgb(126 91 194 / 26%) 0 1px,transparent 2px),linear-gradient(115deg,transparent 0 43%,rgb(82 61 140 / 10%) 43% 43.6%,transparent 43.6% 100%),linear-gradient(25deg,transparent 0 55%,rgb(126 91 194 / 10%) 55% 55.5%,transparent 55.5% 100%);opacity:.58}@keyframes constellation-drift{0%{background-position:0 0,18px 6px,30px 2px,0 0,42px 0}to{background-position:132px 0,166px 6px,200px 2px,210px 0,282px 0}}.site-header:has(.brand:hover) .brand,.site-header:has(.brand:hover) .nav-links,.site-header:has(.brand:hover) .nav-links a,.site-header:has(.brand:hover) .language-switch button,.site-header:has(.brand:hover) .theme-switch button{color:#000}.site-header:has(.brand:hover) .brand small{color:#6b7280}.site-header:has(.brand:hover) .brand-accent{color:#000}.site-header:has(.brand:hover) .brand>span{color:var(--accent-warm)}.site-header:has(.brand:hover) .language-switch,.site-header:has(.brand:hover) .theme-switch{border-left-color:#0000002e}.site-header:has(.brand:hover) .language-switch button,.site-header:has(.brand:hover) .theme-switch button{border-color:#00000024}.site-header:has(.brand:hover) .language-switch button.active,.site-header:has(.brand:hover) .language-switch button:hover,.site-header:has(.brand:hover) .theme-switch button:hover{color:#8f1d1d}.site-shell{padding-bottom:104px}.brand{display:inline-flex;align-items:center;gap:12px;width:fit-content;font-family:var(--serif);font-size:1.16rem;font-weight:700;letter-spacing:0;color:#f8fbff}.brand small{color:#ffffffb8;font-family:Inter,Segoe UI,ui-sans-serif,system-ui,sans-serif;font-size:.78rem;font-weight:500}.brand-accent{color:#fff}.brand>span{color:#ffd27a}.brand.is-swapped .brand-accent{color:#ffd27a}.brand.is-swapped>span{color:#fff}.nav-links{display:flex;align-items:center;gap:6px;color:#fff;font-size:.94rem;font-weight:700}.nav-item{position:relative}.nav-links a{border:1px solid transparent;border-radius:var(--radius-small);background:transparent;padding:9px 12px}.nav-links a:hover{border-color:#ffffff47;background:#ffffff17;color:#ffd27a}.nav-links a.active{color:#ffd27a}.language-switch,.theme-switch{display:inline-flex;align-items:center;gap:4px;margin-left:8px;border-left:1px solid rgb(255 255 255 / 24%);padding-left:10px}.theme-switch{margin-left:2px}.language-switch button,.theme-switch button{border:1px solid rgb(255 255 255 / 18%);border-radius:var(--radius-small);background:transparent;color:#fff;cursor:pointer;padding:7px 8px;font-size:.78rem;font-weight:800}.theme-switch button{display:grid;width:34px;height:34px;padding:0;place-items:center;background:transparent}.theme-icon{display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.9}.theme-icon-moon{fill:currentColor;stroke-width:0}.theme-icon-sun{display:none}:root[data-theme=night] .theme-icon-moon{display:none}:root[data-theme=night] .theme-icon-sun{display:block}.language-switch button:hover,.language-switch button.active,.theme-switch button:hover{border-color:#ffffff61;background:#ffffff1a;color:#ffd27a}.theme-switch button,.theme-switch button:hover{background:transparent}.submenu{position:absolute;top:calc(100% + 8px);left:50%;z-index:20;display:grid;min-width:190px;border:1px solid rgb(255 255 255 / 22%);border-radius:var(--radius);background:var(--accent-strong);box-shadow:0 18px 50px #1117222e;opacity:0;overflow:hidden;pointer-events:none;transform:translate(-50%,-4px);transition:opacity .16s ease,transform .16s ease}.submenu a{border-bottom:1px solid rgb(255 255 255 / 12%);padding:10px 12px;white-space:nowrap}.submenu a:last-child{border-bottom:0}.has-submenu:hover .submenu,.has-submenu:focus-within .submenu{opacity:1;pointer-events:auto;transform:translate(-50%)}.hero{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,.96fr) minmax(clamp(300px,32vw,430px),.46fr);gap:72px;align-items:center;min-height:calc(100vh - 76px);padding:46px 0 112px}.hero:before,.page-intro:before,.project-hero:before,.story-hero:before{position:absolute;inset:0 calc(50% - 50vw);z-index:-1;background:radial-gradient(ellipse at 14% 22%,rgb(255 255 255 / 78%) 0 5rem,transparent 11rem),radial-gradient(ellipse at 78% 18%,rgb(255 255 255 / 58%) 0 6rem,transparent 13rem),radial-gradient(ellipse at 58% 70%,rgb(255 255 255 / 42%) 0 4.5rem,transparent 10rem),linear-gradient(rgb(18 63 117 / 3.2%) 1px,transparent 1px),linear-gradient(90deg,rgb(18 63 117 / 3.2%) 1px,transparent 1px),linear-gradient(180deg,#eaf7ff,#f7fcff 42%,#fff);background-size:auto,auto,auto,52px 52px,52px 52px,auto;content:"";pointer-events:none}.hero-copy{max-width:980px}.hero-kicker{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:26px}.hero-kicker span,.eyebrow,.project-type,.contact-list span,.about-label{color:var(--accent-strong);font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.hero-kicker span{border:1px solid var(--line);border-radius:var(--radius-small);background:#fff;padding:8px 11px;box-shadow:0 10px 28px #123f750f}.hero-kicker span+span{padding-left:11px}.eyebrow,.project-type{margin:0 0 14px}.hero-identity{display:grid;grid-template-columns:max-content auto;align-items:center;gap:clamp(24px,2.4vw,38px);justify-content:start;margin-bottom:28px}.home-title{display:grid;max-width:890px;margin-bottom:0}.home-title img{display:block;width:min(300px,40vw);height:auto}.home-title .logo-night{display:none}:root[data-theme=night] .home-title .logo-day{display:none}:root[data-theme=night] .home-title .logo-night{display:block}.profile-photo{position:relative;align-self:end;display:grid;flex:0 0 clamp(72px,6.8vw,96px);width:clamp(72px,6.8vw,96px);margin-top:0;aspect-ratio:1;place-items:center;overflow:hidden;border:1px solid var(--line-strong);border-radius:50%;background:var(--surface);box-shadow:0 16px 44px #1118271a;transform:translateY(6px)}.profile-photo img{width:100%;height:100%;object-fit:cover;object-position:center center}.profile-photo:after{position:absolute;inset:0;background:radial-gradient(circle at 28% 16%,rgb(255 255 255 / 22%),transparent 36%),linear-gradient(135deg,rgb(23 105 170 / 16%),transparent 42%,rgb(200 138 26 / 10%));content:"";pointer-events:none}.hero-role{max-width:680px;margin-bottom:18px;color:var(--ink-soft);font-family:var(--serif);font-size:1.55rem;font-weight:600;line-height:1.24}.page-title,.project-title,.section-title,.card-title{font-family:var(--serif);font-weight:700;letter-spacing:0}.page-title{max-width:980px;margin-bottom:30px;font-size:3.15rem;line-height:1}.project-title{margin-bottom:30px;font-size:3.15rem;line-height:1}.section-title{margin-bottom:0;font-size:2.45rem;line-height:1.06}.card-title{margin-bottom:18px;font-size:2rem;line-height:1.08}.intro{max-width:650px;margin-bottom:0;color:#516171;font-size:clamp(1.08rem,1.55vw,1.28rem);line-height:1.72}.hero-actions,.contact-links,.project-actions{display:flex;flex-wrap:wrap;gap:12px}.hero-actions{margin-top:34px}.project-actions{margin-top:28px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;border:1px solid var(--ink);border-radius:var(--radius);padding:0 20px;font-size:.94rem;font-weight:800}.button.primary{border-color:var(--accent-strong);background:var(--accent-strong);color:#fff}.button.secondary{border-color:var(--line-strong);background:#fff;color:var(--accent-strong)}.button:hover,.text-link:hover,.contact-links a:hover{color:#ffd27a}.hero-visual{position:relative;overflow:hidden;width:100%;border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg,#fffffff0,#fafdfff5),#fff;box-shadow:0 18px 48px #123f7512}.hero-visual:before{position:absolute;inset:0;background:linear-gradient(to right,rgb(23 105 170 / 8%) 1px,transparent 1px) 0 0 / 52px 52px,linear-gradient(to bottom,rgb(23 105 170 / 8%) 1px,transparent 1px) 0 0 / 52px 52px;content:"";pointer-events:none}.visual-header,.visual-metrics,.visual-dashboard,.visual-tabs{position:relative}.visual-header{display:flex;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,var(--accent-soft),#ffffff 62%,var(--accent-warm-soft));padding:16px 18px;color:var(--accent-strong);font-size:.78rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.visual-metrics{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);background:#fff}.visual-metrics div{padding:26px 22px 24px}.visual-metrics div:first-child{border-right:1px solid var(--line)}.visual-metrics strong,.visual-metrics span{display:block}.visual-metrics strong{margin-bottom:6px;color:var(--accent-strong);font-family:var(--serif);font-size:2.45rem;line-height:1}.visual-metrics span{color:var(--muted);font-weight:700}.visual-tabs{display:flex;flex-wrap:wrap;gap:0;background:#fff;padding:18px 18px 0}.visual-tabs span,.visual-tabs a{border:1px solid var(--line);border-right:0;border-radius:var(--radius-small) var(--radius-small) 0 0;background:#fff;padding:8px 12px;color:var(--accent-strong);font-size:.78rem;font-weight:800}.visual-tabs span:last-child,.visual-tabs a:last-child{border-right:1px solid var(--line)}.visual-dashboard{display:grid;grid-template-columns:1fr 1fr;gap:clamp(8px,1.1vw,14px);background:#fff;padding:clamp(12px,1.6vw,22px)}.visual-panel{min-height:clamp(112px,13vw,154px);border:1px solid var(--line);border-radius:var(--radius-small);background:#fff;padding:clamp(10px,1.2vw,14px)}.primary-slot{grid-column:1 / -1}.project-preview-slot{position:relative;overflow:hidden;display:grid;min-height:clamp(116px,13vw,158px);place-items:center;border-radius:var(--radius-small);background:#fff}.primary-slot{min-height:clamp(176px,18vw,240px)}.project-preview-slot span{border:1px solid var(--line);border-radius:var(--radius-small);background:#ffffffe5;padding:8px 10px;color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.project-preview-slot img{width:100%;height:100%;object-fit:cover;object-position:left top}.project-preview-slot a{display:block;width:100%;height:100%}.page-intro{position:relative;isolation:isolate;max-width:1060px;padding:104px 0 84px}.page-intro p{max-width:730px;font-size:1.16rem}.status-note{display:grid;grid-template-columns:180px minmax(0,1fr);gap:clamp(24px,4vw,56px);max-width:960px;margin:0 0 70px;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--radius);background:#ffffffd1;box-shadow:0 12px 34px #123f750f;padding:18px 22px 20px}.status-note .eyebrow{margin:2px 0 0}.status-note p:last-child{max-width:680px;margin-bottom:0;color:var(--ink-soft);font-size:.98rem;line-height:1.7}.about-hero{display:grid;grid-template-columns:max-content max-content max-content;align-items:center;gap:clamp(24px,3vw,44px)}.about-profile-links{display:grid;grid-template-columns:repeat(3,44px);gap:10px;border-left:1px solid var(--line);padding-left:18px}.about-profile-link{position:relative;display:grid;width:44px;height:44px;place-items:center;border:0;background:transparent;color:var(--accent-strong);font-size:.72rem;font-weight:800;letter-spacing:.04em;line-height:1.2;text-align:center;text-transform:uppercase;transition:border-color .16s ease,opacity .16s ease,transform .16s ease}.about-profile-link img{display:block;max-width:24px;max-height:24px;object-fit:contain}.about-profile-link-large img{max-width:36px;max-height:36px}.about-profile-link[aria-label=Linktree]{order:3}.about-profile-link[aria-label=LinkedIn] img{max-width:30px;max-height:30px}.about-profile-link[aria-label=GitHub]{order:4}.about-profile-link[aria-label="Flourish Studio"]{order:5}.about-profile-link[aria-label="Curriculum Vitae"]{order:6}.about-profile-link-cv{grid-column:1 / -1;width:100%;height:36px;padding:0 12px}.about-profile-links a:hover{opacity:.78;transform:translateY(-2px)}.about-profile-links>span{color:var(--muted);opacity:.62}.about-photo{position:relative;display:grid;width:clamp(132px,14vw,188px);aspect-ratio:1;place-items:center;overflow:hidden;border:1px solid var(--line-strong);border-radius:50%;background:#fff;box-shadow:0 16px 44px #1118271a}.about-photo img{width:100%;height:100%;object-fit:cover;object-position:center center}.about-photo:after{display:none}.project-hero{position:relative;isolation:isolate;max-width:960px;padding:104px 0 58px}.project-hero p{max-width:760px;font-size:1.08rem}.focus-list{display:grid;border-top:2px solid var(--ink);border-right:1px solid var(--line);border-bottom:1px solid var(--line-strong);border-left:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 18px 54px #123f751a;overflow:hidden}.focus-list article{display:grid;grid-template-columns:300px minmax(0,1fr);gap:48px;padding:18px 28px;border-bottom:1px solid var(--line)}.focus-list article:last-child{border-bottom:0}.focus-list h2{font-family:var(--serif);font-size:clamp(1.45rem,2.2vw,2.05rem);line-height:1}.focus-list h2 a{color:inherit}.focus-list h2 a:hover{color:#ffd27a;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.focus-list p,.project-content p,.prose p{color:var(--muted);line-height:1.75}.section{position:relative;isolation:isolate;padding:112px 0;border-bottom:1px solid var(--line)}.section:before{position:absolute;inset:0 calc(50% - 50vw);z-index:-1;background:transparent;content:"";pointer-events:none}.section:nth-of-type(2n):before{background:linear-gradient(180deg,#ffffffb3,#eaf4ff5c)}.section:nth-of-type(odd):before{background:linear-gradient(180deg,#fbfbf761,#ffffffa3)}.site-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:18px;border-top:1px solid var(--line);padding:28px 0 34px;color:var(--muted);font-size:.86rem}.site-footer a{color:var(--accent-strong);font-weight:800}.site-footer a:hover{text-decoration:underline;text-underline-offset:4px}.privacy-content{display:grid;gap:34px;max-width:860px;padding-bottom:112px}.privacy-content article{border-top:1px solid var(--line);padding-top:22px}.privacy-content h2{margin-bottom:12px;font-family:var(--serif);font-size:clamp(1.45rem,2vw,1.95rem);line-height:1.08}.privacy-content p{margin-bottom:14px}.privacy-content a{color:var(--accent-strong);font-weight:800;text-decoration:underline;text-underline-offset:4px}.privacy-content code{border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:2px 6px;color:var(--ink-soft);font-size:.92em}.privacy-updated{color:var(--ink-soft);font-weight:700}.section-heading,.split{display:grid;grid-template-columns:220px minmax(0,1fr);gap:64px}.section-heading{position:relative;align-items:start;margin-bottom:54px;border-top:2px solid var(--ink);padding-top:18px}.section-heading:before,.section-heading:after,.story-section:before,.story-embed-section:before{position:absolute;top:-2px;width:1px;height:12px;background:var(--ink);content:""}.section-heading:before,.story-section:before,.story-embed-section:before{left:0}.section-heading:after{left:min(220px,32%)}.project-list{display:grid;gap:68px}.work-list{border-top:1px solid var(--line);padding-top:54px}.project-row{display:grid;grid-template-columns:minmax(390px,1fr) minmax(0,.92fr);gap:62px;align-items:center;border:1px solid var(--line);border-radius:var(--radius);background:radial-gradient(ellipse at 8% 0%,rgb(31 111 184 / 7%) 0 8rem,transparent 20rem),linear-gradient(180deg,#fff,#f8fbff);box-shadow:0 20px 62px #123f7517;padding:clamp(24px,3vw,34px)}.home-project-row{grid-template-columns:minmax(380px,.98fr) minmax(0,1fr);gap:54px;border-bottom:1px solid var(--line)}.project-media,.project-screenshot,.project-embed{position:relative;overflow:hidden;border:1px solid var(--line-strong);border-radius:var(--radius);background:linear-gradient(to right,rgb(18 63 117 / 4.5%) 1px,transparent 1px) 0 0 / 54px 54px,linear-gradient(to bottom,rgb(18 63 117 / 4.5%) 1px,transparent 1px) 0 0 / 54px 54px,#fff;color:var(--accent-strong);font-weight:800;box-shadow:0 18px 54px #123f751c}.project-media,.project-screenshot{display:flex;align-items:end}.project-media img{position:absolute;inset:0;z-index:1;width:100%;height:100%;border:0;object-fit:cover;object-position:left top;box-shadow:none}.project-media:has(img):after{display:none}.project-embed{min-height:760px;background:#fff}.project-embed iframe{position:relative;z-index:1;display:block;width:100%;min-height:760px;border:0;background:#fff}.project-media:after,.project-screenshot:after{position:absolute;right:24px;bottom:24px;width:min(48%,260px);height:44%;border-left:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);background:linear-gradient(90deg,var(--accent) 16%,transparent 16% 22%,var(--accent-warm) 22% 38%,transparent 38% 46%,#75b8e8 46% 66%,transparent 66% 72%,var(--accent-strong) 72% 88%,transparent 88%) bottom / 100% 68% no-repeat;content:"";opacity:.9}.project-media{min-height:430px;padding:30px}.home-project-row .project-media{min-height:380px}.project-screenshot{min-height:580px;padding:36px}.project-content{max-width:600px}.project-content .project-actions{margin-top:0}.text-link{display:inline-flex;align-items:center;gap:8px;color:var(--accent-strong);font-weight:800}.text-link:after{content:"->"}.tag-list,.tool-list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.tag-list{gap:10px}.stack-prose{margin-top:34px}.tag-list li,.tool-list li{border:1px solid var(--line);border-radius:var(--radius-small);background:#ffffffd1;color:#465565}.tag-list li{padding:10px 13px;font-size:.9rem;font-weight:800}.tool-list{margin:28px 0}.tool-list li{padding:7px 11px;font-size:.84rem;font-weight:700}.prose{max-width:700px}.full-width{grid-column:1 / -1}.contact-strip{display:flex;align-items:end;justify-content:space-between;gap:48px;border-bottom:0}.contact-links a{border-bottom:1px solid currentColor;color:var(--ink);font-weight:800}.about-copy{display:grid;grid-template-columns:240px minmax(0,720px);gap:72px;border-top:2px solid var(--ink);padding-top:42px}.about-copy p{grid-column:2;color:var(--muted);font-size:1.13rem;line-height:1.8}.contact-list{display:grid;border-top:2px solid var(--ink);border-radius:var(--radius);background:#fff;overflow:hidden}.contact-list a{display:grid;grid-template-columns:240px minmax(0,1fr);gap:72px;align-items:baseline;padding:24px;border-bottom:1px solid var(--line)}.contact-list strong{color:var(--ink);font-family:var(--serif);font-size:clamp(1.15rem,2vw,1.75rem);line-height:1.12}.project-details{display:grid;grid-template-columns:240px minmax(0,720px);gap:0 72px;padding-top:78px}.project-details article{display:contents}.project-details h2{color:var(--ink);font-size:1rem;line-height:1.2}.project-details h2,.project-details p,.project-details ul{padding:30px 0;border-top:1px solid var(--line)}.project-details ul:not(.tool-list){margin:0;padding-left:20px}.project-details .tool-list{margin:0}.story-page{padding:86px 0 112px}.story-hero{position:relative;isolation:isolate;max-width:980px;padding:34px 0 72px}.story-hero .project-title{max-width:920px;margin-bottom:24px}.story-deck{max-width:760px;color:var(--ink-soft);font-family:var(--serif);font-size:clamp(1.18rem,1.7vw,1.55rem);font-weight:600;line-height:1.28}.story-page .section-title{font-size:2.15rem;line-height:1.08}.story-section,.story-embed-section{position:relative;display:grid;grid-template-columns:280px minmax(0,1fr);gap:clamp(36px,6vw,86px);border-top:2px solid var(--ink);background:#fff;box-shadow:0 0 0 100vmax #fff;clip-path:inset(0 -100vmax)}.story-section:after,.story-embed-section:after{position:absolute;top:-2px;left:280px;width:1px;height:12px;background:var(--ink);content:""}.story-section{padding:38px 0 70px}.story-question{border-top-color:var(--accent-strong)}.story-copy{max-width:760px}.story-copy p{font-size:1.08rem}.story-copy p+p{margin-top:18px}.story-embed-note{margin-top:22px;max-width:760px}.story-embed-note p{font-size:1.02rem}.story-embed-section{align-items:start;padding:54px 0}.story-embed-copy{position:sticky;top:98px}.story-embed-copy .section-title{margin-bottom:26px}.story-embed-copy p:not(.eyebrow){margin-bottom:0}.tableau-embed{position:relative;overflow:hidden;width:100%;max-width:100%;aspect-ratio:860 / 650;height:auto;border:0;border-radius:var(--radius);background:transparent;box-shadow:none}.tableau-embed tableau-viz{position:absolute;inset:0;display:block;width:100%!important;height:100%!important;min-height:0}.tableau-embed-fluid{aspect-ratio:840 / 587}.tableau-embed-mobile{margin-inline:auto}.tableau-embed-mobile-regions{width:min(100%,340px);min-height:1087px;aspect-ratio:335 / 1087}.tableau-embed-mobile-long-view{width:min(100%,360px);min-height:1012px;aspect-ratio:360 / 1012}.tableau-embed-mobile-europe{width:min(100%,365px);min-height:797px;aspect-ratio:365 / 797}.tableau-embed-tall{aspect-ratio:780 / 972}.tableau-embed-portrait{width:min(100%,516px);aspect-ratio:516 / 891}.flourish-embed-shell{position:relative;overflow:hidden;width:100%;max-width:100%;aspect-ratio:16 / 9;min-height:0;border:0;border-radius:var(--radius);background:transparent;box-shadow:none}.flourish-embed-shell .flourish-embed{position:absolute;inset:0;width:100%!important;height:100%!important;min-height:0}.tableau-embed iframe,.flourish-embed-shell iframe{position:absolute;inset:0;width:100%!important;height:100%!important;border:0}.tableau-placeholder{display:grid;min-height:clamp(420px,52vw,680px);place-items:center;border:0;border-radius:var(--radius);background:transparent;box-shadow:none}.tableau-placeholder span{border:0;border-radius:var(--radius-small);background:transparent;padding:10px 13px;color:var(--muted);font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.story-list{margin:0;padding-left:20px}.story-list li+li{margin-top:10px}.story-source-link{color:var(--accent-strong);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}.story-source-link:hover{color:#ffd27a}:root[data-theme=night] .site-header:before{border-color:#eef6ff61;background:linear-gradient(180deg,#eaf7ff,#f7fcff 42%,#fff)}:root[data-theme=night] .site-header:after{background:radial-gradient(circle at 8px 10px,rgb(18 63 117 / 24%) 0 1.2px,transparent 2.4px),radial-gradient(circle at 56px 26px,rgb(117 184 232 / 34%) 0 1px,transparent 2.2px),radial-gradient(circle at 102px 15px,rgb(18 63 117 / 18%) 0 1px,transparent 2px),linear-gradient(115deg,transparent 0 43%,rgb(18 63 117 / 8%) 43% 43.6%,transparent 43.6% 100%),linear-gradient(25deg,transparent 0 55%,rgb(117 184 232 / 11%) 55% 55.5%,transparent 55.5% 100%)}:root[data-theme=night] .brand,:root[data-theme=night] .nav-links,:root[data-theme=night] .nav-links a,:root[data-theme=night] .language-switch button,:root[data-theme=night] .theme-switch button{color:#111722}:root[data-theme=night] .brand small{color:#647386}:root[data-theme=night] .brand-accent{color:#123f75}:root[data-theme=night] .brand>span,:root[data-theme=night] .brand.is-swapped .brand-accent{color:#111722}:root[data-theme=night] .brand.is-swapped>span,:root[data-theme=night] .nav-links a.active,:root[data-theme=night] .language-switch button.active{color:#123f75}:root[data-theme=night] .language-switch,:root[data-theme=night] .theme-switch{border-left-color:#1117222e}:root[data-theme=night] .language-switch button,:root[data-theme=night] .theme-switch button,:root[data-theme=night] .nav-links a{border-color:#1117221f}:root[data-theme=night] .nav-links a:hover,:root[data-theme=night] .language-switch button:hover,:root[data-theme=night] .theme-switch button:hover{background:#123f7514;color:#8f1d1d}:root[data-theme=night] .theme-switch button,:root[data-theme=night] .theme-switch button:hover{background:transparent}:root[data-theme=night] .site-header:has(.brand:hover):before{background:#123f75}:root[data-theme=night] .site-header:has(.brand:hover):after{background:radial-gradient(circle at 8px 10px,rgb(255 255 255 / 62%) 0 1.2px,transparent 2.4px),radial-gradient(circle at 56px 26px,rgb(255 210 122 / 46%) 0 1px,transparent 2.2px),radial-gradient(circle at 102px 15px,rgb(255 255 255 / 46%) 0 1px,transparent 2px),linear-gradient(115deg,transparent 0 43%,rgb(255 255 255 / 16%) 43% 43.6%,transparent 43.6% 100%),linear-gradient(25deg,transparent 0 55%,rgb(255 210 122 / 12%) 55% 55.5%,transparent 55.5% 100%)}:root[data-theme=night] .site-header:has(.brand:hover) .brand,:root[data-theme=night] .site-header:has(.brand:hover) .nav-links,:root[data-theme=night] .site-header:has(.brand:hover) .nav-links a,:root[data-theme=night] .site-header:has(.brand:hover) .language-switch button,:root[data-theme=night] .site-header:has(.brand:hover) .theme-switch button{color:#fff}:root[data-theme=night] .site-header:has(.brand:hover) .brand small{color:#ffffffb8}:root[data-theme=night] .site-header:has(.brand:hover) .brand-accent{color:#fff}:root[data-theme=night] .site-header:has(.brand:hover) .brand>span,:root[data-theme=night] .site-header:has(.brand:hover) .nav-links a.active,:root[data-theme=night] .site-header:has(.brand:hover) .language-switch button.active{color:#ffd27a}:root[data-theme=night] .site-header:has(.brand:hover) .language-switch,:root[data-theme=night] .site-header:has(.brand:hover) .theme-switch{border-left-color:#ffffff3d}:root[data-theme=night] .site-header:has(.brand:hover) .language-switch button,:root[data-theme=night] .site-header:has(.brand:hover) .theme-switch button,:root[data-theme=night] .site-header:has(.brand:hover) .nav-links a{border-color:#ffffff2e}:root[data-theme=night] .submenu{border-color:#11172224;background:#f3ecff;box-shadow:0 22px 60px #00000047}:root[data-theme=night] .submenu a{border-bottom-color:#1117221a}:root[data-theme=night] .site-header:has(.brand:hover) .submenu{border-color:#ffffff2e;background:#123f75}:root[data-theme=night] .hero:before,:root[data-theme=night] .page-intro:before,:root[data-theme=night] .project-hero:before,:root[data-theme=night] .story-hero:before{background:radial-gradient(ellipse at 16% 24%,rgb(101 166 225 / 24%) 0 5rem,transparent 16rem),radial-gradient(ellipse at 78% 18%,rgb(114 143 198 / 12%) 0 5rem,transparent 15rem),radial-gradient(ellipse at 54% 76%,rgb(255 255 255 / 7%) 0 4rem,transparent 13rem),linear-gradient(rgb(238 246 255 / 4.4%) 1px,transparent 1px),linear-gradient(90deg,rgb(238 246 255 / 4.4%) 1px,transparent 1px),linear-gradient(180deg,#12395f,#0a2139 42%,#06111f);background-size:auto,auto,auto,52px 52px,52px 52px,auto}:root[data-theme=night] .intro,:root[data-theme=night] .story-deck,:root[data-theme=night] .hero-role{color:var(--ink-soft)}:root[data-theme=night] .hero-kicker span,:root[data-theme=night] .button.secondary,:root[data-theme=night] .status-note,:root[data-theme=night] .focus-list,:root[data-theme=night] .contact-list,:root[data-theme=night] .visual-header,:root[data-theme=night] .visual-metrics,:root[data-theme=night] .visual-tabs,:root[data-theme=night] .visual-tabs span,:root[data-theme=night] .visual-tabs a,:root[data-theme=night] .visual-dashboard,:root[data-theme=night] .visual-panel,:root[data-theme=night] .project-preview-slot,:root[data-theme=night] .tag-list li,:root[data-theme=night] .tool-list li{border-color:#e2eefa4d;background:linear-gradient(180deg,#112d48eb,#0a1d32f0);color:var(--ink-soft);box-shadow:0 18px 58px #00000038}:root[data-theme=night] .visual-header{border-color:#e2eefa47;background:linear-gradient(90deg,#8ec7ff33,#112d48f5 62%,#ffd27a24)}:root[data-theme=night] .hero-visual,:root[data-theme=night] .project-media,:root[data-theme=night] .project-screenshot,:root[data-theme=night] .project-embed{border-color:#e2eefa57;background:linear-gradient(to right,rgb(238 246 255 / 6%) 1px,transparent 1px) 0 0 / 54px 54px,linear-gradient(to bottom,rgb(238 246 255 / 6%) 1px,transparent 1px) 0 0 / 54px 54px,linear-gradient(180deg,#133554f5,#091d31fa);color:var(--ink-soft);box-shadow:var(--shadow)}:root[data-theme=night] .project-row{border:1px solid rgb(226 238 250 / 36%);border-radius:var(--radius);background:radial-gradient(ellipse at 8% 0%,rgb(142 199 255 / 15%) 0 8rem,transparent 20rem),linear-gradient(180deg,#112d48f5,#0a1d32fa);box-shadow:inset 0 1px #ffffff1c,0 30px 92px #0000006b;padding:clamp(24px,3vw,34px)}:root[data-theme=night] .home-project-row{border-bottom:1px solid rgb(226 238 250 / 36%)}:root[data-theme=night] .project-content{color:var(--ink-soft)}:root[data-theme=night] .status-note p:last-child{color:var(--ink-soft)}:root[data-theme=night] .status-note{border-color:#e2eefa3d;border-left-color:var(--accent);background:linear-gradient(180deg,#112d48c7,#0a1d32d6);box-shadow:0 16px 46px #0000002e}:root[data-theme=night] .hero-visual:before{background:linear-gradient(to right,rgb(238 246 255 / 5%) 1px,transparent 1px) 0 0 / 52px 52px,linear-gradient(to bottom,rgb(238 246 255 / 5%) 1px,transparent 1px) 0 0 / 52px 52px}:root[data-theme=night] .visual-metrics strong,:root[data-theme=night] .contact-list strong{color:var(--ink)}:root[data-theme=night] .project-embed iframe,:root[data-theme=night] .about-photo{background:#fff}:root[data-theme=night] .profile-photo{border-color:#ffffff8f;background:#fff}:root[data-theme=night] .about-profile-link[aria-label=GitHub],:root[data-theme=night] .about-profile-link[aria-label="Flourish Studio"]{background:#fff;border-radius:var(--radius-small)}:root[data-theme=night] .section:nth-of-type(2n):before,:root[data-theme=night] .section:nth-of-type(odd):before{background:radial-gradient(ellipse at 76% 10%,rgb(142 199 255 / 6%) 0 10rem,transparent 24rem),linear-gradient(180deg,#06111f8a,#0a213947)}:root[data-theme=night] .story-section,:root[data-theme=night] .story-embed-section{background:#06111f;box-shadow:0 0 0 100vmax #06111f}:root[data-theme=night] .story-question{border-top-color:var(--accent)}:root[data-theme=night] .button.primary{border-color:#dcecff;background:#dcecff;color:#071827}:root[data-theme=night] .button.secondary,:root[data-theme=night] .contact-links a,:root[data-theme=night] .text-link,:root[data-theme=night] .story-source-link{color:var(--accent)}:root[data-theme=night] .button:hover,:root[data-theme=night] .text-link:hover,:root[data-theme=night] .contact-links a:hover,:root[data-theme=night] .focus-list h2 a:hover,:root[data-theme=night] .story-source-link:hover{color:#ffd27a}.reveal-on-scroll{opacity:0;transform:translate3d(0,26px,0) scale(.992);transition:opacity .62s ease,transform .72s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.reveal-on-scroll.is-visible{opacity:1;transform:translateZ(0) scale(1)}.reveal-on-scroll[data-reveal-delay="1"]{transition-delay:70ms}.reveal-on-scroll[data-reveal-delay="2"]{transition-delay:.13s}@media(prefers-reduced-motion:reduce){.site-header:after{animation:none}.reveal-on-scroll{opacity:1;transform:none;transition:none}}@media(max-width:980px){.site-header,.site-shell{width:min(100% - 28px,1180px)}.site-header{grid-template-columns:minmax(180px,1fr) auto;align-items:center;gap:18px;padding:22px 0}.site-shell{padding-bottom:64px}.nav-links{width:auto;justify-content:flex-end;gap:4px}.hero{grid-template-columns:1fr;gap:42px;min-height:auto;padding:42px 0 78px}.hero-role{font-size:1.35rem}.home-title{line-height:.94}.home-title img{width:min(280px,52vw)}.page-title,.project-title{font-size:2.65rem}.section-title{font-size:2.1rem}.card-title{font-size:1.75rem}.hero-visual{max-width:680px}.visual-metrics strong{font-size:2.25rem}.page-intro{padding:72px 0 54px}.about-hero{grid-template-columns:max-content max-content max-content;gap:20px}.about-profile-links{grid-template-columns:repeat(3,36px);padding-left:14px}.about-profile-link{width:36px;height:36px}.about-profile-link-cv{width:100%}.about-photo{width:clamp(118px,18vw,150px)}.project-hero{padding:72px 0 42px}.focus-list article,.section-heading,.split,.project-row,.about-copy,.contact-list a,.project-details{grid-template-columns:1fr;gap:24px}.section{padding:72px 0}.project-row{gap:30px}.project-media,.home-project-row .project-media{min-height:300px}.project-screenshot{min-height:340px}.project-embed,.project-embed iframe{min-height:680px}.contact-strip{align-items:flex-start;flex-direction:column}.about-copy p{grid-column:auto}.project-details{gap:0;padding-top:44px}.project-details article{display:block;padding:30px 0;border-top:1px solid var(--line)}.project-details h2,.project-details p,.project-details ul{padding:0;border-top:0}.story-page{padding:56px 0 78px}.story-hero{padding:22px 0 54px}.story-page .section-title{font-size:1.85rem}.story-section,.story-embed-section{grid-template-columns:1fr;gap:22px}.story-embed-copy{position:static}.tableau-placeholder{min-height:420px}}@media(max-width:720px){.site-header{grid-template-columns:1fr;justify-items:center}.brand{justify-content:center}.nav-links{width:100%;justify-content:center;flex-wrap:wrap}.submenu{left:0;transform:translateY(-4px)}.has-submenu:hover .submenu,.has-submenu:focus-within .submenu{transform:translate(0)}}@media(max-width:560px){.site-header{position:relative;grid-template-columns:1fr;align-items:start}.nav-links{width:100%;flex-wrap:wrap;justify-content:flex-start}.about-hero{grid-template-columns:1fr}.about-profile-links{grid-template-columns:repeat(3,36px);width:min(100%,280px);border-left:0;border-top:1px solid var(--line);padding:16px 0 0}.about-photo{width:clamp(132px,42vw,180px)}.status-note{grid-template-columns:1fr;gap:10px;margin:0 0 54px;padding:16px 18px 18px}.hero-identity{grid-template-columns:1fr;gap:24px}.home-title{line-height:.98}.home-title img{width:min(240px,74vw)}.page-title,.project-title{font-size:2.25rem}.section-title,.story-page .section-title{font-size:1.75rem}.hero-role{font-size:1.22rem}.profile-photo{align-self:start;width:clamp(72px,24vw,96px);margin-top:0;transform:none}.visual-dashboard{grid-template-columns:1fr}.primary-slot{grid-column:auto}.hero-actions,.hero-actions .button{width:100%}.visual-metrics{grid-template-columns:1fr}.visual-metrics strong{font-size:2.05rem}.visual-metrics div:first-child{border-right:0;border-bottom:1px solid var(--line)}}
