/* Portfolio and contact card — no animation library or third-party assets. */
.portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.portfolio-project{min-width:0;background:#111;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.portfolio-image{display:block;overflow:hidden;background:#161616}
.portfolio-image img{width:100%;aspect-ratio:1.44;object-fit:cover;object-position:top;transition:transform .6s ease}
.portfolio-image:hover img{transform:scale(1.025)}
.project-copy{padding:26px}.project-copy h3{font-family:Fraunces,Georgia,serif;font-size:1.9rem;margin:8px 0 15px}
.project-copy p{font-size:.84rem;color:var(--muted)}.project-copy .eyebrow{color:var(--gold);font-size:.59rem}
.project-tags{padding:0;margin:20px 0;display:flex;gap:8px;flex-wrap:wrap;list-style:none}
.project-tags li{font-size:.62rem;border:1px solid var(--line);padding:4px 9px;margin:0;border-radius:20px;color:var(--gold-soft)}
.capture-note{color:var(--muted);font-size:.75rem;margin:28px 0 0}
.sitemap-links{columns:2;list-style:none;padding:0;max-width:760px}.sitemap-links li{break-inside:avoid;margin:0;padding:12px 0;border-bottom:1px solid var(--line)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.card-shell{max-width:600px;padding:26px;margin-inline:auto;text-align:center}
.card-shell .eyebrow{font-size:.58rem;margin-bottom:8px}.card-shell p{font-size:.78rem;line-height:1.5;margin:0 auto 9px}.card-shell .card-intro{font-size:.8rem}
.card-brand{display:inline-flex;margin:0 auto 10px}.card-brand .brand-logo{width:175px!important}
.card-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:18px 0}
.card-actions .btn{padding:9px 5px;min-height:42px;font-size:.65rem;line-height:1.3;border-radius:7px;white-space:normal}
.card-shell label{font-size:.66rem}.card-shell .card-share-url{margin:5px 0 8px;padding:9px 11px;min-height:38px;font-size:.76rem}
.card-shell .share-status{margin:0;min-height:0}.card-shell .share-status:empty{display:none}
.card-qr{display:grid;grid-template-columns:112px 1fr;align-items:center;text-align:left;gap:18px;border-top:1px solid var(--line);padding-top:18px;margin-top:18px}
.card-qr img{width:112px;height:112px;background:#fff;border-radius:6px}.card-qr h2{font-size:1.3rem;margin-bottom:8px}.card-qr p{font-size:.7rem}.card-qr .text-link{font-size:.7rem}
.brand{position:relative}.brand::after{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,#fff9 48%,transparent 61%);transform:translateX(-140%);pointer-events:none;mix-blend-mode:screen;opacity:0;animation:shine-sweep 8s ease-in-out infinite;mask-image:url('/images/webedan-logo-header.webp');mask-size:100% 100%;mask-mode:luminance}
/* Approved: shiny sweep + gentle float together on BOTH header and footer. */
.header .brand.is-visible .brand-logo,.footer .brand.is-visible .brand-logo{animation:none}
.luxury-visual{position:relative;overflow:hidden}.luxury-visual::after{content:'';position:absolute;inset:8% 0;background:linear-gradient(115deg,transparent 35%,#ffe4ac36 49%,transparent 62%);pointer-events:none;mix-blend-mode:screen;opacity:0;animation:shine-sweep 10s ease-in-out infinite}
@keyframes shine-sweep{0%,18%{transform:translateX(-140%);opacity:0}23%{opacity:1}44%{transform:translateX(140%);opacity:1}45%,100%{transform:translateX(140%);opacity:0}}
@keyframes motion-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes motion-wave{0%,100%{transform:translateY(0) rotate(-1.2deg)}50%{transform:translateY(-3px) rotate(1.2deg)}}
@keyframes motion-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.035)}}
@keyframes motion-tilt{0%,100%{transform:perspective(600px) rotateY(-10deg)}50%{transform:perspective(600px) rotateY(10deg)}}
@keyframes motion-glow{0%,100%{filter:brightness(1)}50%{filter:brightness(1.24) saturate(1.12)}}
[data-motion='2'] .brand-logo{animation:motion-float 5s ease-in-out infinite!important}
[data-motion='3'] .brand-logo{animation:motion-wave 6s ease-in-out infinite!important}
[data-motion='4'] .brand-logo{animation:motion-breathe 6s ease-in-out infinite!important}
[data-motion='5'] .brand-logo{animation:motion-tilt 7s ease-in-out infinite!important}
[data-motion='6'] .brand-logo{animation:motion-glow 5s ease-in-out infinite!important}
.header .brand[data-motion='2'],.footer .brand[data-motion='2']{animation:motion-float 5s ease-in-out infinite}
.header .brand[data-motion='2'] .brand-logo,.footer .brand[data-motion='2'] .brand-logo{animation:none!important}
.footer .brand[data-motion='2']:not(.is-visible){animation-play-state:paused}
[data-paused] *,[data-paused] *::after{animation-play-state:paused!important}
.motion-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.motion-option{border:1px solid var(--line);border-radius:12px;padding:30px 24px;text-align:center;background:#111}.motion-option .brand{display:inline-flex;margin:15px 0 26px}.motion-option h2{font-size:1.5rem}.motion-option p{font-size:.8rem;color:var(--muted)}.motion-toolbar{display:flex;gap:16px;align-items:end;flex-wrap:wrap;margin:30px 0}.motion-toolbar label{display:grid;gap:6px}.motion-toolbar select{padding:10px;background:#171717;color:var(--text);border:1px solid var(--line)}
@media(max-width:960px){.portfolio-grid,.motion-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.portfolio-grid,.motion-grid{grid-template-columns:1fr}.project-copy{padding:23px}.card-shell{padding:20px 16px}.card-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:14px 0}.card-actions .btn{font-size:.7rem;min-height:40px}.card-shell .card-share-url{font-size:16px}.card-qr{gap:12px;grid-template-columns:96px 1fr}.card-qr img{width:96px;height:96px}.card-qr h2{font-size:1.1rem}.card-qr p{font-size:.66rem}.sitemap-links{columns:1}.motion-toolbar{align-items:stretch;flex-direction:column}}
@media(prefers-reduced-motion:reduce){.brand,.brand::after,.luxury-visual::after,[data-motion] .brand-logo{animation:none!important}.portfolio-image img{transition:none}}
