/* Original background assets, explicitly named for reuse by CMS modules. */
:root{--portfolio-paper:var(--white-smoke);--portfolio-paper-texture:radial-gradient(ellipse at 50% 45%,rgba(255,255,255,.27),rgba(125,105,82,.06) 100%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='360' height='360'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='turbulence' baseFrequency='.38 .66' numOctaves='5' seed='41' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .22 0 0 0 0 .18 0 0 0 0 .14 0 0 0 .105 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--portfolio-paper-texture-size:auto,360px 360px;--portfolio-ink:var(--soft-black)}
body{background-color:var(--portfolio-paper);background-image:var(--portfolio-paper-texture);background-position:center;background-size:var(--portfolio-paper-texture-size);background-attachment:fixed;cursor:auto}
.module-section{background-color:#fff;background-image:none;background-attachment:scroll}
.module-section[data-module-role="hero"]{background-color:var(--portfolio-paper)}
.section.is-nav,.cs-hero-section{background-color:var(--portfolio-paper);background-image:var(--portfolio-paper-texture);background-position:center;background-size:var(--portfolio-paper-texture-size)}
.module-section.module-dark{background:var(--soft-black);color:var(--white-smoke)}
/* Images and film remain untouched. Grain belongs to surfaces, not media. */
.portfolio-cursor{position:fixed;inset:0 auto auto 0;z-index:1000000;pointer-events:none;width:0;height:0;opacity:0;transition:opacity .2s ease;will-change:transform;--cursor-ink:var(--soft-black)}
.portfolio-cursor span{display:block;width:15px;height:15px;border:1px solid transparent;border-radius:50%;background:var(--cursor-ink);transform:translate(-50%,-50%);transition:width .25s ease-in-out,height .25s ease-in-out,border-color .25s ease-in-out,background-color 0s}
.portfolio-cursor.is-visible{opacity:1}.portfolio-cursor.is-suppressed{opacity:0}.portfolio-cursor.is-link span{width:65px;height:65px;background:transparent;border-color:var(--cursor-ink)}.portfolio-cursor.is-light{--cursor-ink:#f8f4f7}
.portfolio-cursor.is-focus span{width:clamp(210px,22vw,370px);height:clamp(210px,22vw,370px);border-color:transparent;background:rgba(30,29,29,.055);box-shadow:0 0 45px 18px rgba(30,29,29,.035);filter:blur(7px)}
@media(hover:hover) and (pointer:fine){html.has-portfolio-cursor body,html.has-portfolio-cursor a,html.has-portfolio-cursor button,html.has-portfolio-cursor summary,html.has-portfolio-cursor [role=button]{cursor:none}html.has-portfolio-cursor input,html.has-portfolio-cursor textarea,html.has-portfolio-cursor [contenteditable=true]{cursor:text}html.has-portfolio-cursor body:has(dialog[open]),html.has-portfolio-cursor body:has(dialog[open]) *{cursor:auto}}
@media(hover:none),(pointer:coarse){.portfolio-cursor{display:none}body,a,button{cursor:auto}}
@media(prefers-reduced-motion:reduce){.portfolio-cursor,.portfolio-cursor span{transition:none}.module-section [data-module-key]{animation:none}}
/* Keep the generated grain finer and less conspicuous on narrow screens. */
@media(max-width:767px){:root{--portfolio-paper-texture-size:auto,240px 240px}body{background-attachment:scroll;background-repeat:repeat}}
