@font-face{font-family:Atelier;src:url('/assets/fonts/cormorant.woff2') format('woff2');font-weight:300 700;font-style:normal;font-display:swap}@font-face{font-family:Manrope;src:url('/assets/fonts/manrope.woff2') format('woff2');font-weight:200 800;font-style:normal;font-display:swap}
:root{color-scheme:light;--bg:#fff7fb;--surface:#fff;--soft:#f7e7f0;--ink:#342238;--muted:#6f586f;--accent:#9c356e;--on-accent:#fff;--line:#e7cbdc;--focus:#733bab;--error:#a21e3f;--label-bg:rgba(255,255,255,.76);--header:rgba(255,247,251,.90);--shadow:0 18px 60px #4e204414}
:root[data-theme=dark]{color-scheme:dark;--bg:#171021;--surface:#23182f;--soft:#30203e;--ink:#f7eef9;--muted:#c3adc9;--accent:#eaaad4;--on-accent:#281532;--line:#493553;--focus:#dabaff;--error:#ffadc1;--label-bg:rgba(35,24,47,.76);--header:rgba(23,16,33,.90);--shadow:0 18px 60px #0003}
*{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:110px}body{margin:0;background:var(--bg);color:var(--ink);font-family:Manrope,Arial,sans-serif;font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}img{display:block;max-width:100%;height:auto}button:disabled{cursor:wait;opacity:.6}:focus-visible{outline:3px solid var(--focus);outline-offset:5px}::selection{background:var(--accent);color:var(--on-accent)}[hidden]{display:none!important}.wrap{width:min(1240px,calc(100% - 96px));margin-inline:auto}.skip{position:fixed;left:12px;top:-100px;background:var(--accent);color:var(--on-accent);padding:14px;z-index:100}.skip:focus{top:10px}.site-header{position:sticky;top:0;z-index:20;background:var(--header);border-bottom:1px solid var(--line)}.header-inner{height:88px;display:flex;align-items:center;gap:30px}.brand{display:flex;align-items:center;gap:11px;font-family:Atelier,Georgia,serif;font-size:26px;font-weight:600;white-space:nowrap}.spark{color:var(--accent);font-family:Georgia,serif}.brand .spark{font-size:28px}.desktop-nav{display:flex;gap:29px;margin:auto;font-size:14px}.desktop-nav a{position:relative;padding:12px 0}.desktop-nav a:hover{color:var(--accent)}.header-actions{display:flex;align-items:center;gap:16px}.language{display:inline-flex;align-items:center;justify-content:center;gap:8px;flex-shrink:0;min-height:44px;padding:0 13px;border:1px solid var(--line);border-radius:100px;background:var(--surface);color:var(--ink);font-size:13px;font-weight:650;letter-spacing:.04em;transition:background .15s,border-color .15s,color .15s}.language:hover{background:var(--soft);border-color:var(--accent);color:var(--accent)}.language:active{background:var(--soft)}.language .icon{width:18px;height:18px}.theme{position:relative}.theme summary{list-style:none;cursor:pointer;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line)}.theme summary::-webkit-details-marker{display:none}.theme-panel{position:absolute;right:0;top:54px;width:190px;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:var(--shadow)}.theme-panel button{display:block;width:100%;padding:10px 12px;border:0;border-radius:7px;background:none;color:var(--ink);text-align:left;font-size:14px}.theme-panel button:hover,.theme-panel button[aria-pressed=true]{background:var(--soft)}.menu-button{display:none}.hero{display:grid;grid-template-columns:.95fr 1.05fr;gap:50px;min-height:650px;align-items:center;padding-block:60px 66px}.eyebrow{font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:650;color:var(--accent);display:flex;align-items:center;gap:12px}.eyebrow:before{content:'';width:30px;height:1px;background:var(--accent)}h1,h2,h3,p{margin-top:0}h1,h2,.display{font-family:Atelier,Georgia,serif;font-weight:500;line-height:1.03}h1{font-size:clamp(54px,5.8vw,82px);letter-spacing:-.035em;margin-block:23px 22px;max-width:600px}.hero .intro{font-size:17px;color:var(--muted);max-width:390px;line-height:1.9;margin-bottom:30px}.hero-actions{display:flex;flex-wrap:wrap;gap:14px}.button{display:inline-flex;align-items:center;justify-content:center;gap:15px;border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);border-radius:100px;min-height:50px;padding:12px 25px;font-size:14px;font-weight:600;transition:transform .15s,background .15s}.button:hover{transform:translateY(-2px)}.button.secondary{color:var(--ink);background:transparent;border-color:var(--line)}.button.secondary:hover{border-color:var(--accent)}.hero-note{display:flex;gap:10px;align-items:center;font-size:12px;letter-spacing:.04em;color:var(--muted);margin-top:30px}.hero-art{--art-height:440px;position:relative;justify-self:center;width:min(100%,520px,calc(var(--art-height) * var(--art-ratio,1) + 30px));min-width:0;margin:0;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}.hero-art-main{display:block;position:relative;background:var(--soft);border-radius:12px;overflow:hidden}.hero-art-main picture,.about-picture picture{display:block}.hero-art-main img,.about-picture img{width:100%;height:auto;object-fit:contain}.hero-art figcaption{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;padding:12px 2px 0;font-size:12px;color:var(--muted);overflow-wrap:anywhere}.hero-art figcaption span:last-child{color:var(--ink)}.art-star{position:absolute;right:-15px;top:-18px;font-size:42px;line-height:1;pointer-events:none}.hero-art .small-star{position:absolute;left:-12px;bottom:38px;font-size:26px;line-height:1;pointer-events:none}.section-rule{display:flex;align-items:center;gap:24px;color:var(--accent)}.section-rule:before,.section-rule:after{content:'';height:1px;background:var(--line);flex:1}.section{padding-block:70px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:32px}.section-heading h2,h2{font-size:clamp(42px,4.2vw,58px);margin:12px 0 0;letter-spacing:-.025em}.section-count{font-size:13px;color:var(--muted)}.filters{display:flex;gap:10px;flex-wrap:wrap;margin:28px 0 32px}.filter{border:1px solid var(--line);border-radius:100px;padding:10px 23px;font-size:14px;min-height:44px;background:transparent}.filter[aria-current=true],.filter.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.filter:hover{border-color:var(--accent)}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 24px}/* Artwork cards: full-bleed preview with labels inside the top corners. */
.work-card{min-width:0}
.work-link{display:block;border-radius:12px}
.work-image{position:relative;isolation:isolate;border-radius:12px;overflow:hidden;background:var(--soft);aspect-ratio:1;border:1px solid var(--line)}
.work-image picture{position:absolute;inset:0;display:block;width:100%;height:100%;min-height:0}
.work-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .18s}
.work-card:hover .work-image img{transform:scale(1.018)}
.work-open{position:absolute;z-index:1;right:14px;bottom:14px;width:40px;height:40px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);border-radius:50%;opacity:0;transition:opacity .15s}
.work-card:hover .work-open,.work-card:focus-within .work-open{opacity:1}
.work-caption{position:absolute;z-index:1;inset:0 0 auto;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px;pointer-events:none}
.work-caption .work-label{min-width:0;margin:0;padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:var(--label-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--ink);font-family:Manrope,Arial,sans-serif;font-size:14px;font-weight:600;line-height:1.5;overflow-wrap:anywhere;box-shadow:0 2px 10px rgba(16,8,25,.06)}
.work-category{flex-shrink:0;max-width:44%}
.gallery-bottom{text-align:center;margin-top:35px}.about{display:grid;grid-template-columns:.85fr 1.15fr;gap:95px;align-items:center}.about-picture{--art-height:340px;width:min(100%,380px,calc(var(--art-height) * var(--art-ratio,1) + 30px));min-width:0;margin-inline:auto;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}.about-picture picture{overflow:hidden;border-radius:12px;background:var(--soft)}.about-copy p{color:var(--muted);line-height:1.9;white-space:pre-line}.about-copy h2{margin-bottom:25px}.tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}.tag{padding:7px 16px;border-radius:30px;background:var(--soft);font-size:13px}.empty-text{color:var(--muted);font-size:16px}.price-list{border-top:1px solid var(--line);margin-top:30px}.price-row{padding:27px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto auto;gap:35px;align-items:center}.price-row h3{font-family:Atelier,Georgia,serif;font-size:30px;font-weight:500;margin:0 0 4px}.price-row p{margin:0;color:var(--muted);font-size:14px;max-width:550px}.price{font-size:18px;font-weight:600}.price-empty{padding:35px 0;display:flex;justify-content:space-between;align-items:center;gap:20px}.price-empty p{max-width:550px;color:var(--muted);margin:0}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:55px}.step-no{font-family:Atelier,Georgia,serif;font-size:35px;color:var(--accent);display:block}.steps h3{font-size:16px;font-weight:600;margin:7px 0 8px}.steps p{font-size:14px;color:var(--muted);line-height:1.8}.contact{position:relative;text-align:center;background:var(--soft);border:1px solid var(--line);border-radius:18px;padding:55px 30px;margin-block:30px 65px}.contact h2{margin:14px auto 22px;font-size:clamp(42px,4.7vw,66px)}.contact p{max-width:500px;margin:0 auto 25px;color:var(--muted)}.contact .eyebrow{justify-content:center}.contact .eyebrow:before{display:none}.contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:25px;margin-top:24px;font-size:14px}.contact-links a{border-bottom:1px solid var(--accent)}.contact-state{padding:12px 22px;display:inline-flex;background:var(--surface);border:1px solid var(--line);border-radius:100px;font-size:14px;color:var(--muted)}.preview-note{text-align:center;font-size:12px;color:var(--muted);padding:11px 20px;border-top:1px solid var(--line)}.detail{padding-block:40px 70px}.back-link{display:inline-flex;align-items:center;min-height:44px;color:var(--muted);font-size:14px}.detail-grid{display:grid;grid-template-columns:1.4fr .6fr;gap:50px;margin-top:25px;align-items:start}.detail-art{--art-height:80vh;--art-height:80dvh;--art-padding:10px;justify-self:center;min-width:0;width:min(100%,calc(var(--art-height) * var(--art-ratio,1) + 2 * var(--art-padding)));background:var(--soft);border-radius:12px;padding:var(--art-padding)}.detail-art picture{display:block;border-radius:inherit}.detail-art img{width:100%;height:auto;object-fit:contain;border-radius:inherit}.detail-copy{padding-top:25px}.detail-copy h1{font-size:48px}.detail-copy p{color:var(--muted);white-space:pre-line}.pagination{display:flex;justify-content:center;gap:12px;margin-top:36px}.pagination a,.pagination span{min-width:44px;min-height:44px;display:grid;place-items:center;border:1px solid var(--line);border-radius:8px}.pagination [aria-current]{background:var(--accent);color:var(--on-accent)}/* Explicit viewport-bounded rows keep the artwork clear of every control. */
dialog.viewer{padding:0;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:16px;width:min(1120px,calc(100vw - 32px));height:min(900px,calc(100vh - 32px));height:min(900px,calc(100dvh - 32px));max-width:none;max-height:none;margin:auto;overflow:hidden}
dialog.viewer[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
dialog::backdrop{background:rgba(16,8,25,.86)}
.viewer-top{display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg)}
.viewer-top p{min-width:0;margin:0;font-size:.9375rem;line-height:1.4;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.icon-button{height:44px;width:44px;min-width:44px;flex-shrink:0;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:50%;display:inline-grid;place-items:center;font-size:20px}
.viewer-image{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;padding:0 16px;overflow:hidden}
.viewer-image img{display:block;min-width:0;min-height:0;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain}
.viewer-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px 20px;min-width:0;padding:12px 16px;border-top:1px solid var(--line);background:var(--bg);font-size:.875rem}
.viewer-navigation{display:flex;align-items:center;justify-content:space-between;gap:12px}
.viewer-counter{min-width:52px;text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}
.viewer-permalink{max-width:100%;min-width:0;text-align:center}
.viewer-permalink svg{flex-shrink:0}
.viewer-error{text-align:center;max-width:100%;max-height:100%;overflow:auto}
.viewer-error p{margin-bottom:12px}
.viewer-loading{position:absolute;background:var(--surface);padding:8px 14px;border-radius:10px;pointer-events:none}
.error-page{min-height:60vh;display:grid;place-content:center;text-align:center}.error-page h1{margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}svg.icon{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:1100px){.wrap{width:calc(100% - 56px)}.header-inner{gap:20px}.desktop-nav{gap:18px}.brand{font-size:23px}.hero{gap:30px;min-height:580px}.hero-art{--art-height:390px}.about{gap:50px}.price-row{gap:20px}}
@media(max-width:800px){.desktop-nav{display:none}.header-inner{height:74px}.header-actions{margin-left:auto;gap:10px}.menu-button{display:grid}.site-header.menu-open .desktop-nav{display:flex;position:absolute;top:74px;left:0;right:0;flex-direction:column;background:var(--bg);padding:18px 28px;border-bottom:1px solid var(--line);gap:4px}.hero{grid-template-columns:1fr 1fr;gap:20px;min-height:auto;padding-block:40px}.hero-art{--art-height:340px}h1{font-size:52px}.hero .intro{font-size:16px}.hero-actions{gap:10px}.button{padding:11px 18px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.section{padding-block:50px}.about{gap:30px}.about-picture{--art-height:300px}.price-row{grid-template-columns:1fr auto}.price-row .button{grid-column:1/-1;justify-self:start}.steps{gap:23px}.detail-grid{grid-template-columns:1fr}.detail-copy{padding-top:0}.detail-copy h1{margin-top:0}}
@media(max-width:600px){.wrap{width:calc(100% - 36px)}.brand{font-size:20px;gap:6px}.brand .spark{font-size:23px}.header-inner{gap:8px}.header-actions{gap:5px}.language{gap:6px;padding-inline:10px}.theme summary{width:38px;height:44px;border:0}.menu-button{border:0;min-width:38px}.hero{grid-template-columns:1fr;padding-block:36px 38px;gap:30px}.hero-copy{text-align:center}.eyebrow{justify-content:center}.eyebrow:before{width:20px}h1{font-size:60px;max-width:340px;margin:15px auto 18px}.hero .intro{max-width:320px;margin-inline:auto;margin-bottom:22px}.hero-actions{justify-content:center}.hero-note{justify-content:center;margin-top:19px}.hero-art{--art-height:380px;max-width:370px;margin-inline:auto}.art-star{font-size:34px;right:-10px;top:-13px}.hero-art .small-star{left:-9px}.section-heading{gap:12px;align-items:center}.section-heading .eyebrow{justify-content:start}.section-heading h2{font-size:43px}.section-count{font-size:12px}.filters{gap:7px;margin:23px 0}.filter{padding:9px 15px;font-size:13px}.gallery{gap:22px 12px}.work-open{display:none}.about{grid-template-columns:1fr;gap:32px}.about-picture{--art-height:290px;max-width:290px}.about-copy h2{font-size:45px}.about-copy .eyebrow{justify-content:start}.about-copy p{font-size:16px}.price-empty{align-items:start;flex-direction:column}.price-row{grid-template-columns:1fr;gap:15px}.price-row .button{grid-column:auto}.steps{grid-template-columns:1fr;gap:20px;margin-top:35px}.step{display:grid;grid-template-columns:45px 1fr;gap:15px}.step-no{grid-row:1/3}.steps h3{margin:3px 0}.steps p{grid-column:2;margin:0}.contact{padding:38px 20px;margin-block:18px 40px}.contact h2{font-size:47px}.contact p{font-size:15px}.detail-copy h1{font-size:44px}}
.mobile-menu{display:none}.mobile-menu summary{list-style:none;cursor:pointer}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu nav{position:absolute;left:0;right:0;top:100%;padding:18px 28px;background:var(--bg);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:5px}.mobile-menu nav a{padding:10px 0;min-height:44px}.service-example{display:block;width:150px;margin-top:15px}.service-example img{max-height:130px;object-fit:contain}
@media(max-width:800px){.mobile-menu{display:block}}
@media(prefers-reduced-motion:no-preference){html.smooth-scroll{scroll-behavior:smooth}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

.section-heading h1{font-size:clamp(42px,4.2vw,58px);margin:12px 0 0;letter-spacing:-.025em;max-width:none}.header-inner>.brand{max-width:260px;white-space:normal;line-height:1.1;min-width:0;overflow-wrap:anywhere}.about:not(:has(.about-picture)){grid-template-columns:1fr}.about:not(:has(.about-picture)) .about-copy{max-width:720px}.work-caption .spark{display:inline-block;font-size:1em;line-height:1;vertical-align:baseline}

@media(max-width:800px){.viewer-image{padding:0}}
@media(max-width:520px){
 .gallery{grid-template-columns:minmax(0,1fr);gap:20px}
 .work-caption{padding:14px;gap:10px}
 dialog.viewer{width:calc(100vw - 16px);height:calc(100vh - 16px);height:calc(100dvh - 16px);border-radius:12px}
 .viewer-top,.viewer-bottom{padding:10px 12px}
 .viewer-bottom{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
 .viewer-navigation{width:100%}
 .viewer-permalink{width:100%;min-height:44px}
}
@media(max-height:480px) and (min-width:521px){
 dialog.viewer{height:calc(100dvh - 16px)}
 .viewer-top,.viewer-bottom{padding:6px 12px}
 .viewer-image{padding:0}
 .viewer-permalink{min-height:44px;padding-block:8px}
}

/* Compact service cards keep detailed terms in the service dialog. */
:root{--service-surface:rgba(255,255,255,.90);--service-hover-shadow:0 14px 32px rgba(78,32,68,.12),0 0 20px rgba(156,53,110,.06)}
:root[data-theme=dark]{--service-surface:rgba(35,24,47,.90);--service-hover-shadow:0 14px 32px rgba(0,0,0,.22),0 0 24px rgba(234,170,212,.12)}
.services-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.service-card{min-width:0;display:grid;grid-template-rows:auto 1fr auto;gap:16px;padding:22px;background:var(--service-surface);border:1px solid var(--line);border-radius:20px;box-shadow:0 8px 24px rgba(24,12,35,.04)}
.service-card-heading{display:grid;grid-template-columns:80px minmax(0,1fr);align-items:center;gap:16px}
.service-thumbnail{width:80px;height:80px;display:grid;place-items:center;overflow:hidden;background:var(--soft);border:1px solid var(--line);border-radius:14px}
.service-thumbnail picture{display:block;width:100%;height:100%}
.service-thumbnail img{width:100%;height:100%;object-fit:contain}
.service-thumbnail>.nav-icon{width:30px;height:30px;color:var(--accent);opacity:.65}
.service-card h3{margin:0;font-family:Atelier,Georgia,serif;font-size:29px;font-weight:500;line-height:1.1;overflow-wrap:anywhere}
.service-card h3,.service-card-description{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.service-card-description{min-height:3.3em;margin:0;color:var(--muted);font-size:14px;line-height:1.65}
.service-card-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
.service-price{min-width:0;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.service-more{min-height:44px;padding:9px 15px;gap:10px}
.service-more .icon{width:18px;height:18px;flex-shrink:0}
.service-card:has(:focus-visible:not(.service-focus-restored)){border-color:var(--accent);box-shadow:var(--service-hover-shadow)}
.service-more.service-focus-restored:focus-visible{outline:none}
.service-hover-restored .service-more.button{border-color:var(--line);transform:none}
@media(hover:hover) and (pointer:fine){
 .service-card:not(.service-hover-restored):hover{border-color:var(--accent);box-shadow:var(--service-hover-shadow)}
}
@media(prefers-reduced-motion:no-preference){
 .service-card{transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}
 .service-more .icon{transition:transform .22s ease}
 .service-card-enter{animation:service-card-arrive .52s cubic-bezier(.22,1,.36,1) backwards;animation-delay:var(--service-enter-delay,0ms)}
 .service-card:focus-within{animation:none}
 .service-card:has(:focus-visible:not(.service-focus-restored)){transform:translateY(-4px)}
 .service-card:has(:focus-visible:not(.service-focus-restored)) .service-more .icon{transform:translate(2px,-2px)}
 @keyframes service-card-arrive{
  from{opacity:0;translate:0 18px}
  to{opacity:1;translate:0 0}
 }
}
@media(prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine){
 .service-card:not(.service-hover-restored):hover{transform:translateY(-4px)}
 .service-card:not(.service-hover-restored):hover .service-more .icon{transform:translate(2px,-2px)}
}
.service-pagination{flex-wrap:wrap}
dialog.service-dialog{width:min(940px,calc(100vw - 40px));height:min(740px,calc(100vh - 40px));height:min(740px,calc(100dvh - 40px));max-width:none;max-height:none;margin:auto;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:24px;background:var(--service-surface);color:var(--ink);box-shadow:var(--shadow)}
dialog.service-dialog[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.service-dialog::backdrop{background:rgba(16,8,25,.7);backdrop-filter:blur(4px)}
.service-dialog-top{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 24px;border-bottom:1px solid var(--line)}
.service-dialog-top .eyebrow{margin:0}
.service-dialog-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:24px}
.service-dialog-body h2{margin:0 0 24px;font-size:42px;overflow-wrap:anywhere}
.service-detail-layout{display:grid;min-width:0;gap:28px;align-items:start}
.service-detail-layout.has-example{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
.service-detail-image{min-width:0;background:var(--soft);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.service-detail-image picture{display:block}
.service-detail-image img{width:100%;height:auto}
.service-detail-copy{min-width:0;font-size:15px;line-height:1.75;overflow-wrap:anywhere}
.service-description{white-space:pre-line;color:var(--muted);margin-bottom:20px}
.service-included h3{margin:0 0 8px;font-size:15px;font-weight:650}
.service-included ul{padding-left:20px;margin:0 0 24px}
.service-included li{padding-left:3px;margin-bottom:5px}
.service-included li::marker{color:var(--accent)}
.service-terms{display:grid;gap:14px;margin:0}
.service-terms>div{padding-top:14px;border-top:1px solid var(--line)}
.service-terms dt{font-weight:650}
.service-terms dd{margin:2px 0 0;color:var(--muted);white-space:pre-line}
.service-dialog-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:18px 24px;border-top:1px solid var(--line);background:transparent}
.service-dialog-bottom .price{font-size:22px}
.service-image-error{margin:0;padding:45px 16px;text-align:center;color:var(--muted);font-size:14px}
.service-page{padding-block:32px 64px}
.service-page .back-link{gap:8px}
.service-page-panel{max-width:940px;margin:20px auto 0;padding:28px;border:1px solid var(--line);border-radius:24px;background:var(--service-surface)}
.service-page-panel h1{max-width:none;margin:0 0 28px;font-size:48px;overflow-wrap:anywhere}
.service-page-panel>.service-dialog-bottom{margin:28px -28px -28px;border-radius:0 0 24px 24px}
@media(max-width:800px){
 .services-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
 .service-card{padding:20px}
 .service-card-heading{gap:12px}
}
@media(max-width:680px){
 .service-detail-layout.has-example{grid-template-columns:minmax(0,1fr);gap:22px}
 .service-detail-image{width:min(100%,360px);margin-inline:auto}
}
@media(max-width:520px){
 .services-grid{grid-template-columns:minmax(0,1fr);gap:16px}
 .service-card{gap:14px}
 .service-card h3{font-size:28px}
 dialog.service-dialog{width:calc(100vw - 20px);height:calc(100vh - 20px);height:calc(100dvh - 20px);border-radius:18px}
 .service-dialog-top{padding:10px 16px}
 .service-dialog-body{padding:20px 16px}
 .service-dialog-body h2{font-size:36px;margin-bottom:20px}
 .service-dialog-bottom{padding:14px 16px;gap:10px}
 .service-dialog-bottom .button{width:100%;min-height:46px}
 .service-dialog-bottom .price{font-size:20px}
 .service-page-panel{padding:20px;border-radius:18px}
 .service-page-panel h1{font-size:38px}
 .service-page-panel>.service-dialog-bottom{margin:24px -20px -20px;border-radius:0 0 18px 18px}
}

/* Shared page and service scrollbar styling; keep system rendering in forced-colour mode. */
html.portfolio-page{
 --site-header-height:88px;
 --scrollbar-track:#e7eff9;--scrollbar-thumb:#9c829f;
 --scrollbar-hover:#85658e;--scrollbar-active:#9c356e;
}
html.portfolio-page[data-theme=dark]{
 --scrollbar-track:#171425;--scrollbar-thumb:#867295;
 --scrollbar-hover:#aa89af;--scrollbar-active:#eaaad4;
}
.portfolio-page .header-inner{height:var(--site-header-height)}
@media(max-width:800px){html.portfolio-page{--site-header-height:74px}}
@media(forced-colors:none){
 html.portfolio-page,
 .portfolio-page .service-dialog-body{scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}
 @supports selector(::-webkit-scrollbar){
  /* Non-auto standard colours override the custom rounded thumb in Chromium. */
  html.portfolio-page,
  .portfolio-page .service-dialog-body{scrollbar-color:auto}
  html.portfolio-page::-webkit-scrollbar,
  .portfolio-page .service-dialog-body::-webkit-scrollbar{
   width:14px;height:14px;
   background:var(--scrollbar-track);
  }
  html.portfolio-page::-webkit-scrollbar{
   background:
    linear-gradient(var(--header),var(--header)) top / 100% var(--site-header-height) no-repeat,
    linear-gradient(var(--line),var(--line)) left var(--site-header-height) / 100% 1px no-repeat,
    var(--scrollbar-track);
  }
  /* Continue the header across the gutter; keep the thumb below its border. */
  html.portfolio-page::-webkit-scrollbar-track:vertical{margin-top:calc(var(--site-header-height) + 1px)}
  html.portfolio-page::-webkit-scrollbar-track,
  html.portfolio-page::-webkit-scrollbar-corner,
  .portfolio-page .service-dialog-body::-webkit-scrollbar-track,
  .portfolio-page .service-dialog-body::-webkit-scrollbar-corner{background:var(--scrollbar-track)}
  html.portfolio-page::-webkit-scrollbar-thumb,
  .portfolio-page .service-dialog-body::-webkit-scrollbar-thumb{
   min-height:48px;border:3px solid transparent;border-radius:100px;
   background:var(--scrollbar-thumb);background-clip:padding-box;
  }
  html.portfolio-page::-webkit-scrollbar-thumb:hover,
  .portfolio-page .service-dialog-body::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-hover)}
  html.portfolio-page::-webkit-scrollbar-thumb:active,
  .portfolio-page .service-dialog-body::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-active)}
  html.portfolio-page::-webkit-scrollbar-button,
  .portfolio-page .service-dialog-body::-webkit-scrollbar-button{display:none;width:0;height:0}
 }
}

/* Bootstrap Icons: https://icons.getbootstrap.com/ (MIT). */
.desktop-nav a,.mobile-menu nav a{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.nav-icon{display:block;width:16px;height:16px;flex-shrink:0;fill:currentColor}
@media(max-width:960px){.desktop-nav{display:none}.mobile-menu{display:block}.header-actions{margin-left:auto}}

/* Keep the saved section stable while a responsive replacement finishes loading. */
html.restoring-layout{scroll-behavior:auto!important;overflow-anchor:none}

/* A quiet closing line and one useful action, shared by every public page. */
.site-footer{border-top:1px solid var(--line);padding-block:28px}
.footer-inner{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:20px 28px}
.footer-inner>.brand{justify-self:start;min-width:0;overflow-wrap:anywhere}
.footer-copy{display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap;gap:0 6px;margin:0;text-align:center;font-size:14px;line-height:1.8;color:var(--muted)}
.footer-credit{white-space:nowrap}
.footer-top{position:relative;justify-self:end;display:inline-flex;align-items:center;gap:9px;min-height:44px;padding-block:8px;border-radius:6px;font-size:13px;font-weight:600;white-space:nowrap;transition:color .18s}
.footer-top::after{content:'';position:absolute;inset-inline:0;bottom:5px;height:1px;background:currentColor;opacity:0;transition:opacity .18s}
.footer-top .icon{width:18px;height:18px;flex-shrink:0;transform:rotate(-90deg)}
.footer-top:focus-visible,.footer-top:active{color:var(--accent)}
.footer-top:focus-visible::after,.footer-top:active::after{opacity:1}
@media(hover:hover) and (pointer:fine){
 .footer-top:hover{color:var(--accent)}
 .footer-top:hover::after{opacity:1}
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .footer-top .icon{transition:transform .18s}
 .footer-top:hover .icon{transform:translateY(-2px) rotate(-90deg)}
}
@media(max-width:960px){
 .footer-inner{grid-template-columns:minmax(0,1fr) auto;gap:18px 24px}
 .footer-copy{grid-column:1/-1;grid-row:2}
}
@media(max-width:520px){
 .site-footer{padding-block:22px}
 .footer-inner{gap:16px}
 .footer-copy{flex-direction:column;align-items:center;gap:2px}
 .footer-divider{display:none}
}

/* Day and night skies stay below the content, without pointer or keyboard targets. */
/* Keep the footer at the bottom even when a category has only a few works. */
body.portfolio-site{isolation:isolate;display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}
.portfolio-site>main{flex:1 0 auto}
.portfolio-site>.site-header,.portfolio-site>footer,.portfolio-site>.preview-note{flex-shrink:0}
.portfolio-site>footer{background:var(--bg)}
.site-atmosphere{
 --sky-height-scale:.84;
 position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;contain:strict;
}
.sky-day,.sky-night{position:absolute;inset:0;overflow:hidden}
.sky-day{
 --cloud-shade:#eadde7;--cloud-depth:#d8ccdf;--cloud-outline:#c9bfd2;
 background:
  radial-gradient(ellipse 60% 50% at 88% 0%,rgba(255,250,237,.3),transparent 75%),
  linear-gradient(180deg,#d7eafb 0%,#e4effc 52%,#f0f4fc 100%);
}
.sky-night{
 display:none;
 background:
  radial-gradient(ellipse 60% 80% at 105% 40%,rgba(96,73,137,.18),transparent 75%),
  radial-gradient(ellipse 70% 45% at 0% 100%,rgba(129,69,115,.13),transparent 75%),
  linear-gradient(180deg,#111526 0%,#19152c 60%,#24182d 100%);
}
:root[data-theme=dark] .sky-day{display:none}
:root[data-theme=dark] .sky-night{display:block}
.sky-stars{
 position:absolute;inset:-18px;
 mask-image:linear-gradient(to right,#000,rgba(0,0,0,.85) 20%,rgba(0,0,0,.5) 40%,rgba(0,0,0,.5) 60%,rgba(0,0,0,.85) 80%,#000);
 -webkit-mask-image:linear-gradient(to right,#000,rgba(0,0,0,.85) 20%,rgba(0,0,0,.5) 40%,rgba(0,0,0,.5) 60%,rgba(0,0,0,.85) 80%,#000);
 animation:sky-turn 160s ease-in-out infinite alternate;
}
.sky-star{
 --glow-inset:6px;
 --core-min:.55;--core-max:.9;--glow-min:.022;--glow-max:.1;--glow-scale-min:.5;--glow-scale-max:.85;
 position:absolute;left:var(--x);top:calc(var(--y) * var(--sky-height-scale));width:var(--size);height:var(--size);
 color:#eff2ff;
}
/* Sibling layers share one pulse without multiplying their opacities. */
.sky-star::before,.sky-star::after{
 content:'';position:absolute;
 animation:star-pulse var(--duration) ease-in-out var(--delay) infinite;
}
.sky-star::before{
 --pulse-min:var(--glow-min);--pulse-max:var(--glow-max);
 --pulse-scale-min:var(--glow-scale-min);--pulse-scale-max:var(--glow-scale-max);
 inset:calc(-1 * var(--glow-inset));
 background:radial-gradient(circle,currentColor,transparent 70%);opacity:calc(var(--glow-max) * .6);transform:scale(.7);
}
.sky-star::after{
 --pulse-min:var(--core-min);--pulse-max:var(--core-max);--pulse-scale-min:1;--pulse-scale-max:1;
 inset:0;border-radius:50%;background:currentColor;box-shadow:0 0 1.5px currentColor;
 filter:blur(.2px);opacity:calc(var(--core-max) * .7);
}
.sky-star:nth-child(4n){color:#f4d8ad}
.sky-star:nth-child(5n){color:#d6c0f1}
.sky-star-round-large{
 --core-min:.32;--glow-min:.014;--glow-max:.16;--glow-scale-min:.34;--glow-scale-max:.9;--glow-inset:8px;
}
.sky-star-spark{
 --core-min:.16;--core-max:.8;--glow-min:.015;--glow-max:.4;--glow-scale-min:.22;--glow-scale-max:1;
 --glow-inset:12px;--glow-shape:url('/assets/star-glow-spark.svg');width:8px;height:8px;
}
.sky-star-beacon{
 --core-min:.12;--core-max:.76;--glow-min:.01;--glow-max:.45;--glow-scale-min:.2;--glow-scale-max:1;
 --glow-inset:18px;--glow-shape:url('/assets/star-glow-beacon.svg');width:16px;height:16px;
}
.sky-star-spark::before,.sky-star-beacon::before,.sky-star-spark::after,.sky-star-beacon::after{
 background:currentColor;
 mask-image:var(--glow-shape);-webkit-mask-image:var(--glow-shape);
 mask-size:100% 100%;-webkit-mask-size:100% 100%;
 mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;
}
/* Fade along the rays as well as across their edges; retain the SVG's 16-unit margin. */
.sky-star-spark::after,.sky-star-beacon::after{
 inset:-16%;border-radius:0;box-shadow:none;filter:none;
 background:radial-gradient(circle,currentColor,transparent 100%);
}
.sky-cloud{
 position:absolute;left:0;top:calc(var(--y) * var(--sky-height-scale));width:var(--cloud-width);color:#fff;opacity:var(--cloud-opacity);
 filter:drop-shadow(0 7px 12px rgba(130,157,190,.09));
 animation:cloud-drift var(--duration) linear var(--delay) infinite;
}
.sky-cloud svg{display:block;width:100%;height:auto}
.sky-cloud:nth-child(even) svg{transform:scaleX(-1)}
.cloud-lit{fill:#fff}
.cloud-shade{fill:var(--cloud-shade)}
.cloud-depth{fill:var(--cloud-depth);opacity:.8}
.cloud-contour,.cloud-fold{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.1}
.cloud-contour{stroke:#fff;opacity:.85}
.cloud-fold{stroke:var(--cloud-outline);opacity:.55}
.atmosphere-paused .sky-stars,.atmosphere-paused .sky-star::before,.atmosphere-paused .sky-star::after,.atmosphere-paused .sky-cloud{animation-play-state:paused}
@keyframes sky-turn{
 from{transform:translate3d(-6px,-8px,0)}
 to{transform:translate3d(8px,10px,0)}
}
/* A brief, rounded crest follows the rise; the fade takes longer. */
@keyframes star-pulse{
 0%,100%{opacity:var(--pulse-min);transform:scale(var(--pulse-scale-min))}
 40%,46%{opacity:var(--pulse-max);transform:scale(var(--pulse-scale-max))}
}
@keyframes cloud-drift{
 from{transform:translate3d(calc(-100% - 32px),0,0)}
 to{transform:translate3d(calc(100vw + 32px),0,0)}
}
@media(max-width:900px){.sky-star:nth-child(n+37){display:none}}
@media(max-width:600px){
 .sky-star:nth-child(n+25),.sky-cloud:nth-child(n+4){display:none}
 .sky-cloud{width:calc(var(--cloud-width) * .6)}
}
@media(prefers-reduced-motion:reduce){
 .sky-stars,.sky-star::before,.sky-star::after,.sky-cloud{animation:none!important}
 .sky-stars{transform:none}
 .sky-cloud{left:var(--rest-x);transform:translateX(-50%)}
}
@media print{.site-atmosphere{display:none}}
