/* Ideas take shape: static content first, enhanced scroll only when enabled. */
#scroll-bridge{position:relative;background:#fafdfe}.bridge-stage{position:relative}.bridge-copy{text-align:center;padding:64px 24px 0;color:#273850}.bridge-copy h2{font-size:clamp(32px,5vw,62px);font-weight:450;letter-spacing:-.035em;line-height:1.15;margin:0}.idea-art{width:min(1000px,92%);margin:24px auto;pointer-events:none}.idea-art svg{display:block;width:100%;height:auto}.idea-prose{width:min(560px,calc(100% - 48px));margin:40px auto 0;text-align:center;font-size:14px;font-weight:400;line-height:2.2;letter-spacing:.04em;color:#536679}.idea-prose p{margin:0;text-wrap:pretty}.idea-prose p+p{margin-top:6px}#bridge-canvas,.bridge-log-fragments{display:none}
html.bridge-enhanced #scroll-bridge{height:180svh}html.bridge-enhanced .bridge-stage{position:sticky;top:0;height:100svh;overflow:hidden;background:#080d16}html.bridge-enhanced .bridge-stage .hero-wrap{position:absolute;inset:0;height:100%;padding:0;background:var(--bg-color,#fafdfe);overflow:hidden;--bridge-rise:0px}html.bridge-enhanced .bridge-stage .hero{height:calc(100% - var(--divider-bleed,72px));min-height:0}html.bridge-enhanced .bridge-stage #hero-canvas{height:100%!important}html.bridge-enhanced .bridge-stage #hero-canvas,html.bridge-enhanced .bridge-stage .hero::after{clip-path:polygon(0 0,100% 0,100% calc(100% - var(--divider-drop) - var(--bridge-rise)),0 calc(100% - var(--bridge-rise)))}html.bridge-enhanced .bridge-stage .divider-lines{display:block;transform:translateY(calc(-1 * var(--bridge-rise)));z-index:4}html.bridge-enhanced .bridge-stage .divider-status-beacon{display:grid;bottom:calc(var(--divider-bleed,72px) + 18px)}html.bridge-enhanced .bridge-log-source{pointer-events:none}html.bridge-enhanced .bridge-log-source>.divider-status-line:not(a){clip-path:inset(50%)}html.bridge-enhanced .bridge-log-source .divider-status-textmode{pointer-events:auto;color:transparent;text-shadow:none}html.bridge-enhanced .bridge-log-source .divider-status-textmode:focus-visible{color:#536679;outline:2px solid #427c8e;outline-offset:4px}html.bridge-enhanced .bridge-log-fragments{pointer-events:none}.bridge-log-fragments .log-char{display:inline-block;white-space:pre}html.bridge-enhanced .bridge-stage .hero-content{position:relative;z-index:2}html.bridge-enhanced #bridge-canvas{display:block;position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}html.bridge-enhanced .bridge-copy{position:absolute;z-index:5;top:14svh;left:0;width:100%;padding:0 24px;opacity:0}html.bridge-enhanced .idea-art{position:absolute;z-index:5;top:28svh;left:50%;transform:translateX(-50%);height:38svh;margin:0;opacity:0}html.bridge-enhanced .idea-art svg{width:100%;height:100%}html.bridge-enhanced .idea-art:not(.is-drawn) .ink{animation:none;stroke-dashoffset:1}html.bridge-enhanced .idea-art:not(.is-drawn) .paper{animation:none;opacity:0}html.bridge-enhanced .idea-prose{position:absolute;z-index:5;top:69svh;left:50%;transform:translateX(-50%);margin:0;opacity:0}
html.bridge-enhanced .pastel-home .header .header-plate,html.bridge-enhanced .pastel-home .header::before,html.bridge-enhanced .pastel-home .header::after{display:none}html.bridge-enhanced .pastel-home:not(.bridge-light) .header{background:#080d16e6;border-color:#89aabb26}html.bridge-enhanced .pastel-home:not(.bridge-light) .header .nav a,html.bridge-enhanced .pastel-home:not(.bridge-light) .header .logo{color:#edf6fa}html.bridge-enhanced .pastel-home:not(.bridge-light) .header .bar{background:#edf6fa}html.bridge-enhanced .pastel-home.bridge-light .header{background:#fafdfee6}html.bridge-enhanced .pastel-home.bridge-light .header .logo,html.bridge-enhanced .pastel-home.bridge-light .header .nav a,html.bridge-enhanced .pastel-home .header .nav.active a{color:#273850}html.bridge-enhanced .pastel-home.bridge-light .header .bar,html.bridge-enhanced .pastel-home .header .hamburger.active .bar{background:#273850}
@media(max-width:700px){.idea-prose{font-size:13px;line-height:2.1;width:min(340px,calc(100% - 48px))}.idea-prose p+p{margin-top:12px}html.bridge-enhanced .idea-art{top:28svh;width:96%;height:32svh}html.bridge-enhanced .idea-prose{top:64svh}html.bridge-enhanced .bridge-copy{top:20svh}}
@media(max-width:600px){.hero-wrap{--divider-bleed:0px}html.bridge-enhanced .bridge-stage .divider-status-beacon{display:none}}
@media(prefers-reduced-motion:reduce){.idea-art .ink{animation:none;stroke-dashoffset:0}.idea-art .paper{animation:none;opacity:1}}
.pastel-home .home-section{padding-top:80px;padding-bottom:24px}.pastel-home .home-section h2:not(.banner-heading){font-size:clamp(28px,3.2vw,40px);font-weight:450;letter-spacing:-.025em}.pastel-home .skill-column{border-color:#d9e1e7;padding:24px 0 0}.pastel-home .skill-column h3{font-size:20px;letter-spacing:-.02em;margin-bottom:20px}.pastel-home .skill-column ul{font-size:15px;line-height:1.7}.pastel-home .skill-column li{display:block;padding:5px 0}.pastel-home .skill-column li:not(:last-child)::after{content:none}.pastel-home .heading-banner{border-radius:6px;overflow:hidden}.pastel-home #latest-notes-grid.pastel-notes{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.pastel-home #latest-notes-grid .pastel-note:first-child{grid-row:auto;grid-column:auto}.pastel-home #latest-notes-grid .pastel-note{display:flex;flex-direction:column;border:0;background:transparent;box-shadow:none;border-radius:0}.pastel-home #latest-notes-grid .pastel-note-art{width:100%;height:auto;flex:none;aspect-ratio:8/5;border-radius:6px;overflow:hidden}.pastel-home #latest-notes-grid .pastel-note-art svg{object-fit:cover}.pastel-home .pastel-note-copy{padding:18px 0}.pastel-home #latest-notes-grid .pastel-note h3,.pastel-home #latest-notes-grid .pastel-note:first-child h3{font-size:20px;line-height:1.45;letter-spacing:-.015em}.pastel-home #latest-notes-grid .note-date{font-size:12px}.pastel-home #latest-notes-grid .note-excerpt{display:none}.pastel-home .home-text-link,.pastel-home .filter-chip,.pastel-home #timeline-expand{min-height:40px;border-radius:6px}.pastel-home .filter-chip{padding:8px 12px}.pastel-home .home-profile .bio p{font-size:16px;line-height:1.9}.pastel-home .profile-social{gap:16px 28px}.pastel-home .profile-social a{min-height:44px}.pastel-home .timeline-entry{line-height:1.65}.pastel-home .timeline-entry span{font-size:14px}

@media(max-width:700px){.pastel-home .home-section{padding-top:56px}.pastel-home #latest-notes-grid.pastel-notes{grid-template-columns:1fr}.pastel-home #latest-notes-grid .pastel-note-art{aspect-ratio:8/3}.pastel-home .skills-columns{gap:24px}.pastel-home .home-profile .bio p{font-size:15px}}

/* Keep the white divider free of a separately composited vignette. */
html.bridge-enhanced .bridge-stage .hero::after{display:none}

/* Pass decorative hero text through to the interactive canvas. */
.hero-wrap .hero-content,.hero-wrap .hero-content *{-webkit-user-select:none;user-select:none;pointer-events:none}
.header .logo{position:relative}
.header .logo::after{content:"";position:absolute;inset:-6px -10px}

/* Show the return action only after leaving the top of the page. */
.has-scroll-controls .back-to-top{opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity 160ms ease,transform 160ms ease,visibility 160ms}
.has-scroll-controls .back-to-top.is-visible,.has-scroll-controls .back-to-top:focus-visible{opacity:1;visibility:visible;transform:none}
.pastel-home .back-to-top{border-radius:6px}
@media(prefers-reduced-motion:reduce){.has-scroll-controls .back-to-top{transition:none;transform:none}}

/* Keep the live WebGL scene behind the full reveal area, including the bottom bleed. */
html.bridge-enhanced .bridge-stage #hero-canvas{height:calc(100% + var(--divider-bleed,72px))!important;clip-path:polygon(0 0,100% 0,100% calc(100% - var(--divider-bleed,72px) - var(--divider-drop) - var(--bridge-rise)),0 calc(100% - var(--divider-bleed,72px) - var(--bridge-rise)))}
html.bridge-enhanced .bridge-stage .hero{overflow:visible}

/* Status text appears once its white surface is established. */
.divider-intro-running .divider-status-beacon{opacity:0!important}

/* Move both the visible fragments and the link hit area with the white divider. */
html.bridge-enhanced .bridge-stage .hero-wrap > .divider-status-beacon{transform:translateY(calc(-1 * var(--bridge-rise,0px)))}

/* Remove the unused tail below Ideas without changing its scroll hold. */
html.bridge-enhanced #scroll-bridge{margin-bottom:calc(-1 * var(--ideas-tail-space,0px))}
.pastel-home #skills{padding-top:clamp(40px,5vw,64px)}
.pastel-home #scroll-bridge + .content-wrapper{padding-top:0}
