:root {
  --bg: #000;
  --fg: #fff;
  --mute: rgba(255, 255, 255, .55);
  --line: rgba(255, 255, 255, .16);
  --ease: cubic-bezier(.16, 1, .3, 1);
  --font: "Helvetica Neue", "Neue Haas Grotesk Text Pro", Helvetica, Arial, sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { background: var(--bg); color: var(--fg); font-family: var(--font); -webkit-font-smoothing: antialiased; }
body { overflow-x: hidden; }
body.lock { overflow: hidden; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
img, video { display: block; }
::selection { background: var(--fg); color: var(--bg); }

/* ---------- grain ---------- */
.grain { position: fixed; inset: -10%; z-index: 50; pointer-events: none; opacity: .11;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  animation: grain 1s steps(6) infinite; }
@keyframes grain { 0%{transform:translate(0,0)} 20%{transform:translate(-3%,2%)} 40%{transform:translate(2%,-3%)} 60%{transform:translate(-2%,-1%)} 80%{transform:translate(3%,3%)} 100%{transform:translate(0,0)} }

/* ---------- brand + centered mini menu (like the reference) ---------- */
.brand { position: fixed; z-index: 40; top: 18px; left: 22px; font-size: 11px; mix-blend-mode: difference; color: #fff; }
.nav { position: fixed; z-index: 40; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; gap: 1.4rem; align-items: center; white-space: nowrap; font-size: 11px; letter-spacing: .02em; color: #fff; padding: 9px 18px; border-radius: 99px; background: rgba(0,0,0,.55); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.nav a, .nav button { position: relative; padding: 4px 0; }
.nav a::after, .nav button::after { content: ""; position: absolute; left: 0; bottom: 0; height: 1px; width: 100%; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .5s var(--ease); }
.nav a:hover::after, .nav button:hover::after { transform: scaleX(1); transform-origin: left; }

/* ---------- split screen: 3 panels sliding to the left ---------- */
:root { --cols: 3; }
#split { position: fixed; inset: 0; z-index: 1; overflow: hidden; }
.track { position: absolute; top: 0; left: 0; height: 100%; display: flex; }
.cell { position: relative; flex: 0 0 calc(100vw / var(--cols)); height: 100vh; height: 100dvh; overflow: hidden; cursor: pointer; background: #0b0b0b; border-right: 1px solid rgba(255,255,255,.1); background-size: cover; background-position: center; }
.cell .m { position: absolute; top: 0; left: -6%; width: 112%; height: 100%; object-fit: cover; }
.cell::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.55), transparent 30%); opacity: 0; transition: opacity .5s; pointer-events: none; }
.cell:hover::after { opacity: 1; }
.cell .cap { position: absolute; z-index: 2; left: 18px; right: 18px; bottom: 64px; display: flex; justify-content: space-between; font-size: 12px; opacity: 0; transform: translateY(8px); transition: opacity .5s, transform .6s var(--ease); pointer-events: none; }
.cell:hover .cap { opacity: 1; transform: none; }
.cell .cap span:last-child { opacity: .7; }
#spacer { position: relative; z-index: 0; width: 1px; pointer-events: none; }

.hud { position: fixed; z-index: 40; left: 0; right: 0; bottom: 0; padding: 18px 22px; display: flex; justify-content: space-between; align-items: center; gap: 20px; font-size: 11px; mix-blend-mode: difference; color: #fff; pointer-events: none; }
.hud .scroll i { font-style: normal; display: inline-block; animation: nudge 1.6s ease-in-out infinite; }
@keyframes nudge { 50% { transform: translateY(4px); } }
.hud .prog { flex: 1; max-width: 220px; height: 1px; background: rgba(255,255,255,.3); position: relative; }
.hud .prog b { position: absolute; left: 0; top: 0; bottom: 0; width: 100%; background: #fff; transform-origin: left; transform: scaleX(0); }

/* ---------- panels (services / contact) ---------- */
.panel { position: fixed; inset: 0; z-index: 45; background: #050505; overflow-y: auto; overscroll-behavior: contain; clip-path: inset(100% 0 0 0); visibility: hidden; transition: clip-path .9s var(--ease), visibility 0s .9s; }
.panel.open { clip-path: inset(0 0 0 0); visibility: visible; transition: clip-path .9s var(--ease), visibility 0s; }
.panel .x { position: fixed; z-index: 3; top: 12px; right: 14px; font-size: 16px; line-height: 1; padding: 10px 12px; cursor: pointer; mix-blend-mode: difference; color: #fff; }
.panel-in { padding: 78px 22px 40px; max-width: 1500px; margin: 0 auto; }
.p-head { display: flex; justify-content: space-between; align-items: baseline; padding-bottom: 7vh; }
.p-head h2, .lead { font-weight: 400; letter-spacing: -.06em; line-height: .88; }
.p-head h2 { font-size: clamp(56px, 11vw, 200px); }
.p-head > span { font-size: 11px; color: var(--mute); }

/* services rows */
.svc { display: grid; grid-template-columns: 5fr 7fr; column-gap: 4vw; align-items: center; padding: 8vh 0; border-top: 1px solid var(--line); }
.svc:nth-child(even) { grid-template-columns: 7fr 5fr; }
.svc:nth-child(even) .svc-txt { order: 2; }
.svc .n { font-size: 11px; color: var(--mute); }
.svc h3 { font-weight: 400; font-size: clamp(30px, 3.8vw, 64px); letter-spacing: -.06em; line-height: .92; margin: 10px 0 22px; }
.svc p { font-size: 14px; line-height: 1.55; max-width: 40ch; color: rgba(255,255,255,.78); }
.svc ul { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin-top: 22px; }
.svc li { font-size: 11px; padding: 6px 11px; border: 1px solid var(--line); border-radius: 99px; }
.svc-mock { background: #101010; min-height: clamp(360px, 62vh, 640px); display: grid; place-items: center; overflow: hidden; border-radius: 4px; padding: 4vh 2vw; }
.mk { display: flex; align-items: center; justify-content: center; gap: 2.4vw; width: 100%; }

/* contact */
.lead { font-size: clamp(38px, 8vw, 150px); margin: 4vh 0 9vh; }
.line { display: block; overflow: hidden; padding-bottom: .12em; margin-bottom: -.12em; }
.line > span { display: block; transform: translateY(112%); transition: transform 1.3s var(--ease); }
.panel.open .line > span { transform: none; }
.panel.open .line:nth-child(2) > span { transition-delay: .12s; }
.c-grid { display: grid; grid-template-columns: 5fr 6fr; column-gap: 5vw; align-items: start; }
.about { display: grid; gap: 16px; font-size: 14px; line-height: 1.55; max-width: 44ch; color: rgba(255,255,255,.85); margin-bottom: 40px; }
.mail { display: inline-block; font-size: clamp(22px, 2.6vw, 42px); letter-spacing: -.045em; border-bottom: 2px solid currentColor; line-height: 1.1; transition: opacity .3s; }
.mail:hover { opacity: .5; }
.links { display: flex; gap: 1.4rem; font-size: 12px; margin-top: 26px; }
.links a { border-bottom: 1px solid var(--line); transition: border-color .3s; } .links a:hover { border-color: #fff; }
form { display: grid; }
.hp { position: absolute; left: -9999px; }
.f { position: relative; border-bottom: 1px solid var(--line); padding: 22px 0 8px; transition: border-color .4s; }
.f:focus-within { border-color: #fff; }
.f label { position: absolute; left: 0; top: 24px; font-size: 12px; color: var(--mute); pointer-events: none; transition: transform .5s var(--ease); transform-origin: left; }
.f:focus-within label, .f.has label { transform: translateY(-20px) scale(.85); }
.f input, .f textarea { width: 100%; background: none; border: 0; outline: 0; color: #fff; font: inherit; font-size: 18px; padding: 4px 0; resize: none; }
.send { margin-top: 30px; justify-self: start; display: inline-flex; align-items: center; gap: 12px; font-size: 13px; padding: 14px 26px; border: 1px solid #fff; border-radius: 99px; position: relative; overflow: hidden; isolation: isolate; transition: color .5s var(--ease); }
.send::before { content: ""; position: absolute; inset: 0; background: #fff; transform: translateY(101%); transition: transform .6s var(--ease); z-index: -1; border-radius: inherit; }
.send:hover { color: #000; } .send:hover::before { transform: none; }
.send[disabled] { opacity: .5; pointer-events: none; }
.status { font-size: 12px; min-height: 1.2em; margin-top: 14px; color: rgba(255,255,255,.85); }
.panel footer { display: flex; justify-content: space-between; font-size: 11px; color: var(--mute); margin-top: 14vh; }

/* ---------- detail ---------- */
#detail { position: fixed; inset: 0; z-index: 60; background: #000; display: grid; grid-template-columns: 1fr 340px; opacity: 0; visibility: hidden; transition: opacity .6s var(--ease), visibility .6s; }
#detail.open { opacity: 1; visibility: visible; }
.d-stage { position: relative; overflow: hidden; }
.d-stage > * { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.d-info { padding: 84px 26px 26px; display: flex; flex-direction: column; justify-content: flex-end; gap: 22px; border-left: 1px solid var(--line); }
.d-info h2 { font-weight: 400; font-size: clamp(32px, 3.4vw, 56px); letter-spacing: -.05em; line-height: .95; }
.d-info p { font-size: 13px; line-height: 1.5; color: rgba(255,255,255,.75); }
.d-info dl { display: grid; grid-template-columns: 70px 1fr; gap: 6px 0; font-size: 11px; border-top: 1px solid var(--line); padding-top: 12px; }
.d-info dt { color: var(--mute); }
#detail .ctl { position: absolute; z-index: 2; top: 18px; right: 22px; display: flex; gap: 18px; font-size: 11px; }
.d-info > * { transform: translateY(20px); opacity: 0; transition: transform .9s var(--ease), opacity .9s var(--ease); }
#detail.open .d-info > * { transform: none; opacity: 1; }
#detail.open .d-info > *:nth-child(2) { transition-delay: .08s; } #detail.open .d-info > *:nth-child(3) { transition-delay: .16s; }

/* ---------- mockups ---------- */
.float { animation: floaty 7s ease-in-out infinite alternate; animation-delay: var(--fd, 0s); }
@keyframes floaty { from { transform: translateY(-9px) rotate(var(--rot, 0deg)); } to { transform: translateY(11px) rotate(calc(var(--rot, 0deg) + 1.4deg)); } }
.phone { position: relative; width: clamp(130px, 15vw, 250px); aspect-ratio: 9 / 19; border-radius: 15% / 7%; background: #0d0d0d; padding: 2.6%; box-shadow: 0 40px 60px -28px rgba(0,0,0,.8), inset 0 0 0 1.5px #4a4a4a, inset 0 0 0 3px #111; }
.phone .scr { position: relative; width: 100%; height: 100%; border-radius: 12.5% / 5.8%; overflow: hidden; background: #1a1a1a; }
.phone .isl { position: absolute; z-index: 3; top: 2.8%; left: 50%; width: 26%; height: 2.4%; background: #000; border-radius: 99px; transform: translateX(-50%); }
.mk .m { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.reelui { position: absolute; inset: 0; z-index: 2; color: #fff; background: linear-gradient(to top, rgba(0,0,0,.55), transparent 32%); font-size: clamp(8px, .8vw, 12px); }
.reelui .ri { position: absolute; right: 7%; bottom: 14%; display: grid; gap: 1.2em; text-align: center; font-size: 1.9em; line-height: 1; }
.reelui .ri i { font-style: normal; }
.reelui .rc { position: absolute; left: 7%; right: 22%; bottom: 6%; display: grid; gap: 3px; }
.reelui .rc span { opacity: .8; font-size: .9em; }

.poster { position: relative; width: clamp(120px, 15vw, 250px); aspect-ratio: 3 / 4; background: #f2f2f2; padding: 5%; box-shadow: 0 34px 50px -26px rgba(0,0,0,.9); }
.poster::before { content: ""; position: absolute; inset: 5%; background: #ddd; }
.poster .m { inset: 5%; width: 90%; height: 90%; }
.poster-wrap .par:last-child { margin-top: 9vh; }

/* ---------- magazine mockup (Brands): revista abierta, la hoja gira al pasar el cursor ---------- */
.mag { position: relative; display: block; width: clamp(320px, 33vw, 580px); aspect-ratio: 3 / 2; cursor: pointer; }
.book { position: relative; width: 100%; height: 100%; perspective: 2600px; filter: drop-shadow(0 34px 40px rgba(0,0,0,.6)); }
.book .base { position: absolute; top: 0; width: 50%; height: 100%; background: #e8e8e5; }
.book .base.l { left: 0; background: linear-gradient(to right, #d9d9d5, #ececea 85%, #c9c9c5); } .book .base.r { left: 50%; background: linear-gradient(to left, #d9d9d5, #ececea 85%, #c9c9c5); }
.leaf { position: absolute; left: 50%; top: 0; width: 50%; height: 100%; transform-origin: 0 50%; transform-style: preserve-3d; transition: transform 1.7s cubic-bezier(.6,.02,.3,1); }
.leaf.flipped { transform: rotateY(-180deg); }
.leaf .face { position: absolute; inset: 0; backface-visibility: hidden; -webkit-backface-visibility: hidden; overflow: hidden; background: #ececea; }
.leaf .face.back { transform: rotateY(180deg); }
.leaf .face .m { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.leaf .face i { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(to right, rgba(0,0,0,.42), rgba(0,0,0,0) 14%); }
.leaf .face.back i { background: linear-gradient(to left, rgba(0,0,0,.42), rgba(0,0,0,0) 14%); }
.mag-spine { position: absolute; left: calc(50% - 1.5px); top: 0; width: 3px; height: 100%; background: rgba(0,0,0,.45); z-index: 500; pointer-events: none; }
.mag-tag { position: absolute; left: 0; bottom: -9%; display: inline-flex; align-items: center; gap: 6px; font-size: 11px; letter-spacing: .1em; color: #fff; opacity: .75; transition: opacity .3s, transform .3s; }
.mag-tag i { font-style: normal; transition: transform .3s; }
.mag:hover .mag-tag, .reel-link:hover .mag-tag { opacity: 1; }
.mag:hover .mag-tag i, .reel-link:hover .mag-tag i { transform: translateX(3px); }
.reel-link { position: relative; display: block; cursor: pointer; }
.reel-link .mag-tag { bottom: -11%; }
.duo.brands { gap: 4vw; }
.duo.brands .phone { width: clamp(180px, 16vw, 290px); }
@media (max-width: 860px) { .mag-tag { bottom: -7%; } }

.browser { width: min(100%, 600px); background: #fff; color: #111; border-radius: 10px; box-shadow: 0 40px 60px -30px rgba(0,0,0,.8); overflow: hidden; }
.browser .bar { display: flex; align-items: center; gap: 6px; padding: 10px 12px; background: #f2f2f2; border-bottom: 1px solid #e5e5e5; }
.browser .bar i { width: 9px; height: 9px; border-radius: 50%; background: #ccc; }
.browser .bar span { margin-left: 10px; flex: 1; text-align: center; font-size: 10px; color: #777; background: #fff; border-radius: 99px; padding: 4px 0; }
.shop { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 14px; }
.card small { display: block; margin-top: 6px; font-size: 10px; color: #666; }
.ph3 { position: relative; aspect-ratio: 3 / 4; overflow: hidden; background: #eee; }

.story { width: min(100%, 620px); }
.story .head { display: flex; justify-content: space-between; font-size: 10px; letter-spacing: .12em; padding-bottom: 10px; border-bottom: 1px solid #fff; }
.strip { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; padding-top: 12px; }
.strip .fr small { display: block; margin-top: 5px; font-size: 10px; color: var(--mute); font-variant-numeric: tabular-nums; }
.strip .fr .ph3 { animation: dim 6s linear infinite; animation-delay: calc(var(--i) * 1.5s); opacity: .35; }
@keyframes dim { 0%, 25% { opacity: 1; } 30%, 100% { opacity: .35; } }
.playhead { position: absolute; top: 0; bottom: 18px; width: 2px; background: #ff2a1f; animation: sweep 6s linear infinite; left: 0; }
@keyframes sweep { from { left: 0; } to { left: 100%; } }

.cinema { position: relative; width: min(100%, 620px); aspect-ratio: 2.39 / 1; background: #000; overflow: hidden; border-radius: 3px; box-shadow: 0 40px 60px -30px rgba(0,0,0,.9); }
.cinema .hud2 { position: absolute; z-index: 2; left: 4%; right: 4%; top: 8%; display: flex; justify-content: space-between; color: #fff; font-size: 9px; letter-spacing: .14em; }
.cinema .pg { position: absolute; z-index: 2; left: 4%; right: 4%; bottom: 8%; height: 2px; background: rgba(255,255,255,.3); }
.cinema .pg b { display: block; height: 100%; background: #fff; animation: prog 5s linear infinite; }
@keyframes prog { from { width: 0; } to { width: 100%; } }
.browser-wrap > .par, .story-wrap > .par, .cinema-wrap > .par, .browser-wrap .float, .cinema-wrap .float { width: 100%; display: flex; justify-content: center; }

/* ---------- small screens ---------- */
@media (max-width: 860px) {
  :root { --cols: 2; }
  .cell .cap { display: none; }
  .hud .prog { display: none; }
  .svc, .svc:nth-child(even) { grid-template-columns: 1fr; row-gap: 24px; padding: 6vh 0; }
  .svc:nth-child(even) .svc-txt { order: 0; }
  .c-grid { grid-template-columns: 1fr; row-gap: 44px; }
  #detail { grid-template-columns: 1fr; grid-template-rows: 1fr auto; }
  .d-info { border-left: 0; border-top: 1px solid var(--line); padding: 18px 20px 24px; gap: 12px; }
}
@media (prefers-reduced-motion: reduce) { .grain, .float, .playhead, .pg b, .hud .scroll i, .strip .fr .ph3 { animation: none; }  .cell .m { scale: 1; } }

/* filter chip + service link */
.chip { position: fixed; z-index: 41; left: 50%; bottom: 14px; transform: translateX(-50%) translateY(20px); opacity: 0; pointer-events: none; font-size: 11px; padding: 8px 14px; border-radius: 99px; background: rgba(0,0,0,.6); backdrop-filter: blur(10px); transition: opacity .5s, transform .6s var(--ease); }
.chip.on { opacity: 1; transform: translateX(-50%); pointer-events: auto; }
.svc .see { display: inline-block; margin-top: 26px; font-size: 12px; border-bottom: 1px solid var(--line); padding-bottom: 2px; transition: border-color .3s; }
.svc .see:hover { border-color: #fff; }

/* music player mockup */
.playerui { position: absolute; inset: 0; z-index: 2; color: #fff; background: linear-gradient(to top, rgba(0,0,0,.78), transparent 44%); font-size: clamp(8px, .8vw, 12px); }
.playerui .pt { position: absolute; left: 8%; right: 8%; bottom: 20%; display: grid; gap: 3px; }
.playerui .pt b { font-size: 1.5em; font-weight: 500; letter-spacing: -.02em; }
.playerui .pt span { opacity: .7; }
.playerui .bar2 { position: absolute; left: 8%; right: 8%; bottom: 15%; height: 3px; background: rgba(255,255,255,.3); border-radius: 9px; }
.playerui .bar2 b { display: block; height: 100%; background: #fff; border-radius: 9px; animation: prog 8s linear infinite; }
.playerui .ctrl { position: absolute; left: 8%; right: 8%; bottom: 6%; display: flex; justify-content: space-between; align-items: center; font-size: 1.7em; }
.playerui .ctrl i { font-style: normal; }
.playerui .ctrl .pl { width: 2.6em; height: 2.6em; border-radius: 50%; background: #fff; color: #000; display: grid; place-items: center; font-size: .8em; }

/* vinyl + sleeve mockup */
.vinyl-wrap .par { width: 100%; display: flex; justify-content: center; }
.vinyl { position: relative; width: clamp(180px, 22vw, 340px); aspect-ratio: 1; margin-right: 22%; }
.vinyl .disc { position: absolute; top: 4%; left: 34%; width: 92%; aspect-ratio: 1; border-radius: 50%; background: conic-gradient(from 20deg, rgba(255,255,255,.14), transparent 25%, rgba(255,255,255,.1) 50%, transparent 75%, rgba(255,255,255,.14)), repeating-radial-gradient(circle at center, #1a1a1a 0 2px, #2c2c2c 2px 3px); box-shadow: 0 30px 50px -20px rgba(0,0,0,.9); animation: spin 9s linear infinite; }
.vinyl .disc::before { content: ""; position: absolute; inset: 36%; border-radius: 50%; background: #e9e4dc; box-shadow: 0 0 0 5px #111; }
.vinyl .disc::after { content: ""; position: absolute; inset: 47.5%; border-radius: 50%; background: #0a0a0a; }
.vinyl .sleeve { position: absolute; inset: 0; z-index: 2; box-shadow: 0 34px 50px -22px rgba(0,0,0,.9), 0 0 0 1px rgba(255,255,255,.08); background: #111; overflow: hidden; }
.vinyl .sleeve .m { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.vinyl .sleeve small { position: absolute; z-index: 3; left: 6%; bottom: 5%; font-size: 9px; letter-spacing: .14em; color: #fff; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .vinyl .disc, .playerui .bar2 b { animation: none; } }

/* ---------- v4: Brands & Artists structure ---------- */
.hud .role { letter-spacing: .01em; }
.avail { position: fixed; z-index: 40; top: 18px; right: 22px; font-size: 11px; mix-blend-mode: difference; color: #fff; }
.avail:empty { display: none; }
.avail::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: #fff; margin-right: 8px; animation: blink 1.6s ease-in-out infinite; }
@keyframes blink { 50% { opacity: .2; } }
.p-head { align-items: flex-end; gap: 30px; }
.p-head h2 { font-size: clamp(56px, 12vw, 220px); }
.p-head p { font-size: 13px; line-height: 1.5; color: var(--mute); max-width: 26ch; text-align: right; padding-bottom: .6em; }
.p-head .line > span { transform: translateY(112%); transition: transform 1.3s var(--ease); }
.panel.open .p-head .line > span { transform: none; }
.panel.open .p-head .line:nth-child(2) > span { transition-delay: .12s; }
.svc { padding: 10vh 0; }
.svc .lead2 { font-size: clamp(18px, 1.7vw, 26px); letter-spacing: -.03em; line-height: 1.1; color: #fff; margin-bottom: 16px; max-width: 22ch; }
.svc ul { flex-direction: column; gap: 0; margin-top: 26px; max-width: 34ch; }
.svc li { border: 0; border-top: 1px solid var(--line); border-radius: 0; padding: 11px 0; font-size: 13px; }
.svc li:last-child { border-bottom: 1px solid var(--line); }
.svc-mock { min-height: clamp(420px, 74vh, 760px); }
.duo { gap: 4vw; align-items: center; }
.duo .poster { width: clamp(150px, 17vw, 300px); }
.duo .phone { width: clamp(150px, 15vw, 270px); }
.duo .vinyl { width: clamp(170px, 19vw, 320px); margin-right: 12%; }
.pick { border: 0; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 8px; }
.pick legend { float: left; font-size: 12px; color: var(--mute); margin-right: 14px; padding: 8px 0; }
.pick label { cursor: pointer; }
.pick input { position: absolute; opacity: 0; pointer-events: none; }
.pick span { display: inline-block; font-size: 12px; padding: 8px 16px; border: 1px solid var(--line); border-radius: 99px; transition: background .3s, color .3s, border-color .3s; }
.pick input:checked + span { background: #fff; color: #000; border-color: #fff; }
.pick input:focus-visible + span { outline: 1px solid #fff; outline-offset: 2px; }
.d-act { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.d-act #d-req { font-size: 13px; padding: 12px 20px; border-radius: 99px; background: #fff; color: #000; transition: transform .4s var(--ease), opacity .3s; }
.d-act #d-req:hover { transform: translateX(3px); }
.d-act #d-share { font-size: 12px; color: var(--mute); border-bottom: 1px solid var(--line); padding-bottom: 2px; }
.d-act #d-share:hover { color: #fff; }
.d-act #d-ig { font-size: 12px; color: var(--mute); border-bottom: 1px solid var(--line); padding-bottom: 2px; }
.d-act #d-ig:hover { color: #fff; }
@media (max-width: 860px) { .p-head { flex-direction: column; align-items: flex-start; } .p-head p { text-align: left; } .duo { flex-wrap: wrap; } .duo.brands { row-gap: 13vh; justify-content: center; } .duo.brands .mag { width: clamp(260px, 84vw, 420px); } .duo.brands .phone { width: clamp(160px, 46vw, 230px); } }

/* tablet + móvil: la pantalla se divide en 2 */
@media (max-width: 1099px) { :root { --cols: 2; } }

/* ---------- WORK panel ---------- */
.tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 5vh; }
.tabs button { font-size: 12px; padding: 9px 16px; border: 1px solid var(--line); border-radius: 99px; transition: background .3s, color .3s, border-color .3s; }
.tabs button sup { font-size: 9px; opacity: .6; margin-left: 2px; }
.tabs button:hover { border-color: #fff; }
.tabs button.on { background: #fff; color: #000; border-color: #fff; }
.w-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 26px 14px; }
.wcard { display: block; }
.wimg { aspect-ratio: 3 / 4; overflow: hidden; background: #111; }
.wimg img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.wcard:hover .wimg img { transform: scale(1.06); }
.wcap { display: flex; justify-content: space-between; gap: 10px; margin-top: 10px; font-size: 12px; }
.wcap span:last-child { color: var(--mute); font-size: 11px; text-align: right; }
.back { font-size: 12px; margin-bottom: 4vh; border-bottom: 1px solid var(--line); padding-bottom: 2px; }
.back:hover { border-color: #fff; }
.wp-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 30px; margin-bottom: 6vh; }
.wp-head h2 { font-weight: 400; font-size: clamp(48px, 9vw, 170px); letter-spacing: -.06em; line-height: .88; }
.wp-head p { font-size: 12px; color: var(--mute); padding-bottom: .8em; text-align: right; }
.gal { columns: 3; column-gap: 12px; }
.gi { margin: 0 0 12px; break-inside: avoid; cursor: pointer; background: #0d0d0d; overflow: hidden; }
.gi img, .gi video { width: 100%; height: auto; display: block; transition: transform 1s var(--ease); min-height: 120px; }
.gi:hover img, .gi:hover video { transform: scale(1.03); }
@media (max-width: 1100px) { .w-grid { grid-template-columns: repeat(3, 1fr); } .gal { columns: 2; } }
@media (max-width: 700px) { .w-grid { grid-template-columns: repeat(2, 1fr); gap: 18px 10px; } .gal { columns: 1; } .wp-head { flex-direction: column; align-items: flex-start; } .wp-head p { text-align: left; } }

/* ---------- services v2: en qué consiste + ejemplos ---------- */
.svc-block { border-top: 1px solid var(--line); padding: 8vh 0 6vh; }
.svc-block .svc { border-top: 0; padding: 0 0 6vh; }
.svc h4, .exh { font-weight: 400; font-size: 11px; letter-spacing: .12em; color: var(--mute); margin: 30px 0 12px; }
.exh { margin: 0 0 16px; }
.steps { list-style: none; counter-reset: s; display: grid; gap: 0; max-width: 38ch; }
.steps li { counter-increment: s; font-size: 13px; padding: 11px 0; border-top: 1px solid var(--line); display: flex; gap: 14px; }
.steps li::before { content: "0" counter(s); color: var(--mute); font-variant-numeric: tabular-nums; font-size: 11px; padding-top: 2px; }
.steps li:last-child { border-bottom: 1px solid var(--line); }
.ex { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.exc { border: 1px solid var(--line); padding: 18px 16px 16px; display: flex; flex-direction: column; gap: 10px; min-height: 170px; transition: border-color .4s, background .4s; }
.exc:hover { border-color: #fff; background: rgba(255,255,255,.03); }
.exc b { font-weight: 400; font-size: 17px; letter-spacing: -.03em; line-height: 1.1; }
.exc p { font-size: 12px; line-height: 1.5; color: rgba(255,255,255,.7); flex: 1; }
.exc span { font-size: 10px; letter-spacing: .06em; color: var(--mute); border-top: 1px solid var(--line); padding-top: 10px; }
.svc-foot { font-size: 13px; padding: 6vh 0 4vh; border-top: 1px solid var(--line); }
.svc-foot a { border-bottom: 1px solid var(--line); padding-bottom: 2px; transition: border-color .3s; }
.svc-foot a:hover { border-color: #fff; }
/* mockups neutros */
.art { background: #1a1a1a; }
.art.a1 { background: radial-gradient(120% 80% at 70% 15%, #f2f2f2 0, #9a9a9a 38%, #1c1c1c 78%); }
.art.a2 { background: radial-gradient(circle at 50% 38%, #fff 0, #6f7885 34%, #0a0d12 74%); }
.art.a3 { background: linear-gradient(200deg, #0b0b0b 0, #3b4350 52%, #d9dde2 100%); }
.art.a4 { background: radial-gradient(ellipse at 28% 72%, #a6a6a6 0, #2a2a2a 52%, #000 100%); }
.mk .art { position: absolute; inset: 0; width: 100%; height: 100%; }
@media (max-width: 1100px) { .ex { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .ex { grid-template-columns: 1fr; } .exc { min-height: 0; } }

/* v5: imágenes enteras, sin recortar */
.cell { background: #000; display: grid; place-items: center; }
.cell .m { position: static; left: auto; top: auto; width: 100%; height: 100%; object-fit: contain; transform: none !important; }
.wimg img { object-fit: contain; background: #0b0b0b; }
.wimg { background: #0b0b0b; }
.gi img, .gi video { height: auto; }

/* proyecto: menú del centro solo con AWRA Studios® y Work */
body.in-project .nav [data-open=services], body.in-project .nav [data-open=contact] { display: none; }
body.in-project .hud .role { max-width: 60vw; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* v6: todos los marcos del mismo tamaño; el hueco se rellena con la misma imagen difuminada */
.cell { position: relative; overflow: hidden; }
.cell::before { content: ""; position: absolute; inset: -8%; background: var(--bg, #000) center / cover no-repeat; filter: blur(30px) brightness(.45); z-index: 0; }
.cell .m { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: contain; }
.cell::after { z-index: 2; } .cell .cap { z-index: 3; }
.wimg { position: relative; overflow: hidden; aspect-ratio: 3 / 4; background: #0b0b0b; }
.wimg::before { content: ""; position: absolute; inset: -10%; background: var(--bg) center / cover no-repeat; filter: blur(22px) brightness(.45); }
.wimg img { position: relative; width: 100%; height: 100%; object-fit: contain; }

/* v7: sin títulos sobre las piezas; el detalle solo muestra las acciones */
.cell .cap{display:none!important}
.d-info h2,.d-info p,.d-info dl{display:none}

/* v8: dentro de un proyecto, una foto por pantalla completa (sin huecos arriba/abajo) */
body.in-project .cell{border-right:0}
body.in-project .cell .m{width:auto;max-width:100%;height:100%;margin:0 auto}

/* v10: todas las fotos en 3:4. Ordenador: rellenan su mitad de pantalla; móvil/tablet vertical: enteras sobre fondo difuminado */
@media (min-aspect-ratio: 3/5) { .cell .m { object-fit: cover; width: 100%; height: 100%; } .cell::before { display: none; } }

/* v11: fondo blanco en la home y en las series de proyecto (los paneles Work/Services/Contact siguen oscuros) */
html, body, #split, .track, .cell { background: #fff; }
.cell::before { display: none; }
.cell { border-right-color: rgba(0,0,0,.08); }

/* logo como al principio: texto simple, sin cápsula ni negrita */
.brand { font-weight: 400; letter-spacing: normal; background: none; padding: 0; border-radius: 0; -webkit-backdrop-filter: none; backdrop-filter: none; }
.nav a[data-go=top] { font-weight: 400; }

/* Music: una pieza por pantalla, fondo oscuro, mismo scroll horizontal que el resto */
body.in-music, body.in-music html, body.in-music #split, body.in-music .track, body.in-music .cell { background: #000; }
body.in-music .cell .m { object-fit: contain; width: 100%; height: 100%; }
html:has(body.in-music) { background: #000; }

/* v14: paneles a pantalla completa, sin huecos ni bordes; foto y vídeo llenan cada panel (formato 9:16) */
.cell { border-right: 0 !important; }
.cell::before { display: none !important; }
.cell .m, body.in-music .cell .m { object-fit: cover !important; width: 100% !important; height: 100% !important; }

/* miniaturas inferiores: giran con el scroll (bucle infinito) */
#thumbs { position: fixed; left: 0; right: 0; bottom: 42px; height: 64px; z-index: 35; overflow: hidden; pointer-events: none; -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
#tstrip { display: flex; gap: 6px; will-change: transform; height: 100%; }
#tstrip .t { flex: 0 0 auto; width: 36px; height: 64px; padding: 0; border: 0; background: #222; cursor: pointer; pointer-events: auto; opacity: .5; transition: opacity .3s, transform .3s; overflow: hidden; }
#tstrip .t img { width: 100%; height: 100%; object-fit: cover; display: block; }
#tstrip .t.on { opacity: 1; transform: translateY(-4px); outline: 1px solid rgba(255,255,255,.9); }
body.in-music #thumbs { display: none; }
@media (max-width: 899px) { #thumbs { bottom: 40px; height: 54px; } #tstrip .t { width: 30px; height: 54px; } }

#thumbs { display: none !important; }

/* Work: tarjeta "← Work" al entrar en una marca */
.wcard.wback { display: flex; align-items: center; justify-content: center; min-height: 160px; border: 1px solid var(--line); }
.wcard.wback .wcap { flex-direction: column; align-items: center; gap: 6px; margin: 0; font-size: 16px; }

/* Film: muro de reels (tarjetas verticales que se reproducen solas; al pulsar, visor con sonido) */
#w-grid:has(.reel) { grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 22px 16px; }
.wcard.reel .wimg { aspect-ratio: 9 / 16; position: relative; background: #000; overflow: hidden; border-radius: 3px; }
.wcard.reel .wimg video { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s var(--ease); }
.wcard.reel:hover .wimg video { transform: scale(1.04); }
.wcard.reel .pl { position: absolute; right: 10px; bottom: 10px; width: 30px; height: 30px; border-radius: 50%; background: rgba(0,0,0,.55); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); display: grid; place-items: center; font-style: normal; font-size: 10px; opacity: 0; transition: opacity .4s; }
.wcard.reel:hover .pl { opacity: 1; }
.wcard.reel .wcap { opacity: .7; letter-spacing: .08em; font-size: 10px; }
#d-stage video { max-width: 100%; max-height: 100%; }

/* Music: mockups de Spotify (portada) y Canvas (vídeo) */
.mm { min-height: 78vh; display: grid; place-items: center; padding: 30px 0 60px; }
.mm-row { display: flex; gap: clamp(28px, 6vw, 90px); align-items: flex-end; justify-content: center; flex-wrap: wrap; }
.mm-item { margin: 0; text-align: center; } .mm-item figcaption { margin-top: 16px; font-size: 11px; letter-spacing: .12em; color: var(--mute); }
.mm .ph { position: relative; width: min(290px, 74vw); aspect-ratio: 9 / 19; border-radius: 38px; border: 7px solid #1b1b1b; background: #000; box-shadow: 0 30px 80px rgba(0,0,0,.6), inset 0 0 0 1px rgba(255,255,255,.08); overflow: hidden; }
.mm .sb { position: absolute; z-index: 3; top: 10px; left: 22px; right: 22px; display: flex; justify-content: space-between; font-size: 11px; }
.mm .sp { background: linear-gradient(#232323, #0b0b0b 55%); padding: 46px 16px 16px; display: flex; flex-direction: column; gap: 14px; text-align: left; }
.mm .cov { position: relative; width: 100%; aspect-ratio: 1; border-radius: 6px; overflow: hidden; box-shadow: 0 16px 40px rgba(0,0,0,.6); }
.mm .cov img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.2s ease; } .mm .cov img.on { opacity: 1; }
.mm .tt { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; } .mm .tt b { font-size: 17px; letter-spacing: -.02em; } .mm .tt span { font-size: 12px; color: var(--mute); }
.mm .pr { height: 3px; background: rgba(255,255,255,.2); border-radius: 2px; } .mm .pr i { display: block; height: 100%; width: 38%; background: #fff; border-radius: 2px; animation: mmpr 14s linear infinite; }
@keyframes mmpr { from { width: 4%; } to { width: 96%; } }
.mm .ct { display: flex; justify-content: space-between; align-items: center; font-size: 15px; margin-top: 4px; } .mm .ct .pp { width: 46px; height: 46px; border-radius: 50%; background: #fff; color: #000; display: grid; place-items: center; font-size: 15px; }
.mm .cv video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.mm .tt2 { position: absolute; left: 18px; right: 18px; bottom: 26px; z-index: 2; text-align: left; text-shadow: 0 2px 14px rgba(0,0,0,.7); display: flex; flex-direction: column; gap: 2px; } .mm .tt2 b { font-size: 16px; } .mm .tt2 span { font-size: 11px; opacity: .8; }

/* v15: mockups de Services con imágenes/vídeos reales que rotan */
.cyc > .m { opacity: 0; transition: opacity .9s var(--ease); }
.cyc > .m.on { opacity: 1; }
.phone .scr .m { object-fit: cover; }
.strip .fr .ph3 .m { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 1; }
.poster.cyc > .m { position: absolute; }
/* proyecto: 2 imágenes por pantalla, cada una entera y a la altura de la ventana */
.gal { columns: 2; column-gap: 12px; max-width: calc(2 * (100vh - 150px) * 9 / 16 + 12px); margin: 0 auto; }
@media (max-width: 700px) { .gal { columns: 1; max-width: none; } }

/* v16: fluidez — cada panel se pinta por separado y el resto no se recalcula */
.cell { contain: layout paint style; }

/* v17: flecha "← Work" a la izquierda de las pestañas; film grain más visible; reels de 6 en 6 */
.tabback { font-size: 13px; padding: 9px 16px; border: 1px solid var(--line); border-radius: 99px; margin-right: 8px; }
.tabback:hover { background: rgba(255,255,255,.08); }
.tabs { align-items: center; }
.grain { opacity: .2 !important; }
.wcard.more { display: flex; align-items: center; justify-content: center; min-height: 160px; border: 1px solid var(--line); }

/* v18: Film con portadas; teléfono grande en Technology */
.reelbox { position: relative; overflow: hidden; }
.reelbox img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.reelbox video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .35s; }
.reelbox.on video { opacity: 1; }
.phone.big { width: clamp(240px, 27vw, 440px) !important; }

/* ---------- dentro de un proyecto: foto completa (sin recortar) y sin clic ---------- */
body.in-project .cell { cursor: default; background: #fff; }
body.in-project .cell .m { object-fit: contain !important; width: 100% !important; height: 100% !important; }
body.in-project .cell::after { display: none !important; }
body.in-project .cell { overflow: visible; }
body.in-project .cell .m { transform: translate(var(--tx, 0), var(--ty, 0)) scale(var(--sc, 1)) !important; will-change: transform; filter: drop-shadow(0 24px 34px rgba(0,0,0,.2)); }

/* ---------- esquinas redondeadas en tarjetas y recuadros ---------- */
.exc { border-radius: 16px; }
.svc-mock { border-radius: 20px !important; }
.wimg { border-radius: 14px; }
.wcard.wback { border-radius: 14px; }
.wcard.more { border-radius: 14px; }
.pick label span, .pick label { border-radius: 99px; }
.f input, .f textarea { border-radius: 0; }
.browser, .shop > *, .story, .cinema-wrap > * { border-radius: 14px; }
.reelbox, .reelbox img, .reelbox video { border-radius: 14px; }

/* ---------- miniaturas de Work: la foto rellena toda la tarjeta (sin franjas), esquinas redondeadas ---------- */
.wimg { border-radius: 14px; overflow: hidden; background: #111; }
.wimg::before { display: none !important; }
.wimg img, .wimg video { width: 100% !important; height: 100% !important; object-fit: cover !important; border-radius: 0; }

/* Film: esquinas más redondeadas */
.wcard.reel .wimg, .wcard.reel .wimg video, .wcard.reel .wimg img { border-radius: 26px !important; }
.wcard.reel .wimg { overflow: hidden; }
#detail .d-stage video, #detail .d-stage img { border-radius: 22px; }

:root { --row-title: clamp(40px, 6.4vw, 112px); }
/* contact: mismas reglas. Correo y redes como filas grandes; campos del formulario en tipo grande. */
.lead { letter-spacing: -.065em; }
.mail { font-size: var(--row-title); letter-spacing: -.055em; line-height: .98; border-bottom: 0; display: block; overflow-wrap: anywhere; margin-top: 2vh; }
.about { font-size: clamp(14px, 1.15vw, 17px); letter-spacing: -.01em; }
.links { display: block; margin-top: 5vh; border-bottom: 1px solid var(--line); }
.links a { display: grid; grid-template-columns: minmax(40px, 9vw) minmax(0, 1fr) auto; column-gap: 2vw; align-items: end; border: 0; border-top: 1px solid var(--line); padding: 1.2vh 0 1.6vh; transition: opacity .3s; }
.links a:hover { opacity: .55; border-color: var(--line); }
.links .n { font-size: 12px; color: var(--mute); padding-bottom: .8em; font-variant-numeric: tabular-nums; }
.links b { font-weight: 400; font-size: clamp(30px, 4vw, 68px); letter-spacing: -.055em; line-height: 1; }
.links i { font-style: normal; font-size: clamp(18px, 2vw, 32px); color: var(--mute); padding-bottom: .5em; }
form { counter-reset: fld; }
.f { counter-increment: fld; padding: 30px 0 10px; }
.f::before { content: "0" counter(fld); position: absolute; left: 0; top: 10px; font-size: 11px; color: var(--mute); font-variant-numeric: tabular-nums; }
.f label { left: 3.2em; top: 32px; font-size: 13px; }
.f input, .f textarea { font-size: clamp(22px, 2.4vw, 38px); letter-spacing: -.04em; padding: 6px 0 6px 1.5em; }
.f:focus-within label, .f.has label { transform: translateY(-26px) scale(.85); }
.pick legend { font-size: 11px; letter-spacing: .08em; }
.pick span { font-size: 13px; letter-spacing: -.01em; }
.send { font-size: 15px; letter-spacing: -.01em; }
.panel footer { font-size: 11px; }
.links a { grid-template-columns: minmax(28px, 4vw) minmax(0, 1fr) auto; }

/* servicios: para quién + llamada a la acción tras cada servicio */
.svc .who { font-size: 14px; line-height: 1.5; letter-spacing: -.01em; max-width: 38ch; color: rgba(255,255,255,.78); }
.svc-cta { display: flex; justify-content: space-between; align-items: flex-end; gap: 4vw; flex-wrap: wrap; border-top: 1px solid var(--line); margin-top: 7vh; padding-top: 5vh; }
.svc-cta h3 { font-weight: 400; font-size: clamp(34px, 4.6vw, 80px); letter-spacing: -.055em; line-height: .96; margin: 0 0 14px; }
.svc-cta p { font-size: clamp(13px, 1.1vw, 16px); line-height: 1.45; color: var(--mute); max-width: 36ch; }
.cta-btn { display: inline-flex; align-items: center; gap: 12px; font-size: 14px; padding: 14px 26px; border: 1px solid #fff; border-radius: 99px; position: relative; overflow: hidden; isolation: isolate; transition: color .5s var(--ease); white-space: nowrap; }
.cta-btn::before { content: ""; position: absolute; inset: 0; background: #fff; transform: translateY(101%); transition: transform .6s var(--ease); z-index: -1; border-radius: inherit; }
.cta-btn:hover { color: #000; } .cta-btn:hover::before { transform: none; }
.cta-btn i { font-style: normal; }
@media (max-width: 700px) { .svc-cta { flex-direction: column; align-items: flex-start; } }

/* revista: la foto entera (sin recortar) sobre el papel de la página */
.leaf .face .m { object-fit: contain; }

/* ============================================================
   v20: revista realista (papel, márgenes, pies de foto, folio, canto de páginas)
   ============================================================ */
.mag { font-size: clamp(7px, .88vw, 12px); }
.book { filter: drop-shadow(0 28px 30px rgba(0,0,0,.62)) drop-shadow(0 3px 5px rgba(0,0,0,.45)); }
.book::before { content: ""; position: absolute; left: -1.4%; right: -1.4%; top: 2%; bottom: -2.6%; background: linear-gradient(#1b1b1f, #0e0e10); border-radius: 3px 3px 5px 5px; }
.book .base { box-shadow: 0 2px 0 #dedcd5, 0 3px 0 #bdbab2, 0 4px 0 #e3e1da, 0 5px 0 #b3b0a8, 0 6px 0 #d9d6ce; }
.book .base.l { box-shadow: -2px 2px 0 #dedcd5, -3px 3px 0 #bdbab2, -4px 4px 0 #e3e1da, -5px 5px 0 #b3b0a8, -6px 6px 0 #d9d6ce; }
.leaf .face { background: #efeee9; }
.leaf .face i { background: linear-gradient(to right, rgba(0,0,0,.30), rgba(0,0,0,.06) 9%, rgba(0,0,0,0) 22%); }
.leaf .face.back i { background: linear-gradient(to left, rgba(0,0,0,.30), rgba(0,0,0,.06) 9%, rgba(0,0,0,0) 22%); }
.pg { position: absolute; inset: 0; display: flex; flex-direction: column; padding: 8% 9% 11%; color: #18181a; overflow: hidden;
  background: #f0efea url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .07 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); }
.pg figure { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: 3.2%; margin: 0; }
.pg .ph { position: relative; flex: 1; min-height: 0; }
.pg .pic { position: absolute; inset: 0; margin: auto; max-width: 100%; max-height: 100%; width: auto; height: auto; box-shadow: 0 .12em .35em rgba(0,0,0,.35), 0 1em 1.4em -1em rgba(0,0,0,.35); }
.pg figcaption { display: flex; justify-content: space-between; align-items: baseline; gap: 1em; font-size: .78em; letter-spacing: .16em; white-space: nowrap; }
.pg figcaption b { font-weight: 600; }
.pg figcaption span { opacity: .55; letter-spacing: .1em; }
.pg em { position: absolute; bottom: 4.2%; font-style: normal; font-size: .8em; letter-spacing: .12em; opacity: .5; font-variant-numeric: tabular-nums; }
.leaf .face.front .pg em { right: 9%; } .leaf .face.back .pg em { left: 9%; }
.pg.cover { background: #0c0c0d; color: #ececec; padding: 7% 8% 8%; }
.pg.cover .mast { font-weight: 400; letter-spacing: .55em; font-size: 1.5em; text-align: center; margin-bottom: 5%; padding-left: .55em; }
.pg.cover .pic { position: relative; inset: auto; flex: 1; min-height: 0; margin: 0 auto; max-width: 100%; box-shadow: none; object-fit: contain; }
.pg.cover small { text-align: center; font-size: .7em; letter-spacing: .3em; opacity: .6; margin-top: 4%; padding-left: .3em; }
.pg.blank { align-items: center; justify-content: center; }
.pg.blank small { font-size: .7em; letter-spacing: .25em; opacity: .4; }



/* ============================================================
   v21: Services moderno (móvil primero): capítulos visuales + embudo de venta
   ============================================================ */
.panel-in.sv { max-width: 1500px; padding: 64px 20px 120px; }
.sv-eyebrow { font-size: 11px; letter-spacing: .16em; color: var(--mute); }
.sv-hero { position: relative; min-height: 86svh; display: flex; flex-direction: column; justify-content: center; gap: 22px; padding: 6vh 0 9vh; isolation: isolate; }
.sv-grid { position: absolute; inset: -64px -20px 0; width: calc(100% + 40px); height: calc(100% + 64px); z-index: -1; -webkit-mask-image: radial-gradient(80% 70% at 50% 45%, #000 40%, transparent 100%); mask-image: radial-gradient(80% 70% at 50% 45%, #000 40%, transparent 100%); }
.sv-h { font-weight: 400; font-size: clamp(60px, 17vw, 210px); letter-spacing: -.07em; line-height: .86; margin: 0; }
.sv-h span { display: block; }
.sv-sub { font-size: clamp(16px, 1.6vw, 21px); line-height: 1.4; letter-spacing: -.015em; color: rgba(255,255,255,.75); max-width: 34ch; }
.sv-jump { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; max-width: 560px; margin-top: 8px; }
.sv-jump button { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; min-height: 64px; padding: 12px 14px; text-align: left; font-size: 15px; letter-spacing: -.02em; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.03); transition: background .3s, border-color .3s, transform .3s var(--ease); }
.sv-jump button span { font-size: 11px; color: var(--mute); font-variant-numeric: tabular-nums; }
.sv-jump button:hover, .sv-jump button:focus-visible { background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.5); transform: translateY(-2px); }
.sv-cue { position: absolute; left: 0; bottom: 3vh; font-size: 11px; letter-spacing: .14em; color: var(--mute); }
.sv-cue i { font-style: normal; display: inline-block; animation: nudge 1.6s ease-in-out infinite; }

.sv-rv { opacity: 0; transform: translateY(26px); transition: opacity .9s var(--ease), transform .9s var(--ease); transition-delay: var(--d, 0ms); }
.sv-rv.in { opacity: 1; transform: none; }

.sv-ch { display: grid; grid-template-columns: 1fr; gap: 28px; padding: 9vh 0; border-top: 1px solid var(--line); }
.sv-scene { position: relative; overflow: hidden; border-radius: 26px; aspect-ratio: 1 / 1.02; max-height: 70svh; width: 100%; background: radial-gradient(90% 70% at 50% 40%, #1a1a1c, #060607 70%); border: 1px solid rgba(255,255,255,.1); touch-action: pan-y; }
.sv-scene::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: linear-gradient(125deg, rgba(255,255,255,.1), rgba(255,255,255,0) 30%); }
.sv-glow { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(55% 40% at 50% 78%, rgba(255,255,255,.14), transparent 70%); }
.sv-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; min-width: 0; }
.sv-n { font-size: 12px; letter-spacing: .1em; color: var(--mute); font-variant-numeric: tabular-nums; }
.sv-t { font-weight: 400; font-size: clamp(44px, 12.5vw, 120px); letter-spacing: -.06em; line-height: .92; margin: 0; overflow-wrap: anywhere; }
.sv-line { font-size: clamp(18px, 2vw, 26px); line-height: 1.25; letter-spacing: -.025em; color: #fff; max-width: 24ch; }
.sv-chips { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 0; }
.sv-chips li { font-size: 13px; letter-spacing: -.01em; padding: 9px 14px; border: 1px solid var(--line); border-radius: 99px; background: rgba(255,255,255,.04); }
.sv-who { font-size: 13px; color: var(--mute); }
.sv-who b { font-weight: 400; color: rgba(255,255,255,.85); }
.sv-steps { list-style: none; counter-reset: st; display: grid; grid-template-columns: repeat(4, 1fr); width: 100%; max-width: 460px; margin: 6px 0 4px; position: relative; padding-top: 18px; }
.sv-steps::before { content: ""; position: absolute; left: 6px; right: 6px; top: 5px; height: 1px; background: var(--line); }
.sv-steps::after { content: ""; position: absolute; left: 6px; right: 6px; top: 5px; height: 1px; background: #fff; transform: scaleX(0); transform-origin: left; transition: transform 1.6s var(--ease) .3s; }
.sv-steps.in::after { transform: scaleX(1); }
.sv-steps li { counter-increment: st; position: relative; font-size: 12px; letter-spacing: -.01em; color: rgba(255,255,255,.8); }
.sv-steps li::before { content: ""; position: absolute; left: 0; top: -17px; width: 11px; height: 11px; border-radius: 50%; background: #050505; border: 1px solid rgba(255,255,255,.7); }
.sv-copy .cta-btn { margin-top: 10px; min-height: 52px; white-space: normal; text-align: left; }

/* escenas */
.sv-r { position: absolute; inset: 0; perspective: 1400px; perspective-origin: 50% 40%; }
.sv-rr { position: absolute; left: 50%; top: 52%; width: 0; height: 0; transform-style: preserve-3d; will-change: transform; }
.sv-card { position: absolute; width: var(--cw); height: var(--ch); left: calc(var(--cw) / -2); top: calc(var(--ch) / -2); transform: rotateY(var(--a)) translateZ(var(--R)); transform-style: preserve-3d; }
.svf, .svb { position: absolute; inset: 0; border-radius: calc(var(--cw) * .1); backface-visibility: hidden; -webkit-backface-visibility: hidden; overflow: hidden; }
.svf { padding: 2px; background: linear-gradient(140deg, #f4f4f4 0%, #8b8b8f 18%, #262629 40%, #0b0b0c 55%, #6e6e72 78%, #d6d6d8 100%); box-shadow: 0 24px 40px -18px rgba(0,0,0,.9); }
.svf img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: calc(var(--cw) * .09); background: #111; pointer-events: none; }
.svf i { position: absolute; inset: 2px; border-radius: calc(var(--cw) * .09); pointer-events: none; background: linear-gradient(118deg, rgba(255,255,255,.26), rgba(255,255,255,.06) 24%, rgba(255,255,255,0) 44%); mix-blend-mode: screen; }
.svb { transform: rotateY(180deg); background: linear-gradient(160deg, #2a2a2d, #0e0e10 55%, #1f1f22); box-shadow: inset 0 0 0 2px #3a3a3e; display: grid; place-items: center; }
.svb span { font-size: calc(var(--cw) * .11); letter-spacing: .5em; padding-left: .5em; color: rgba(255,255,255,.28); }
.sv-cv { position: absolute; inset: 0; width: 100%; height: 100%; }
.sv-bg { opacity: .9; }
.sv-st { position: absolute; inset: 0; display: grid; place-items: center; perspective: 1100px; }
.sv-plane { position: relative; width: 88%; display: grid; grid-template-columns: repeat(4, 1fr); gap: 3%; transform-style: preserve-3d; will-change: transform; }
.sv-fr { position: relative; margin: 0; aspect-ratio: 9 / 16; border-radius: 12px; overflow: hidden; border: 1px solid rgba(255,255,255,.18); background: #111; opacity: .5; transform: translateZ(0); transition: opacity .5s, transform .6s var(--ease), border-color .5s; }
.sv-fr img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sv-fr figcaption { position: absolute; left: 6px; bottom: 5px; font-size: 9px; letter-spacing: .08em; color: #fff; font-variant-numeric: tabular-nums; text-shadow: 0 1px 4px rgba(0,0,0,.8); }
.sv-fr.on { opacity: 1; transform: translateZ(34px) translateY(-4%); border-color: rgba(255,255,255,.7); }
.sv-head { position: absolute; top: -8%; bottom: -8%; width: 1px; background: #fff; box-shadow: 0 0 14px 1px rgba(255,255,255,.7); left: 0; pointer-events: none; }

/* embudo */
.sv-funnel { padding: 12vh 0 6vh; border-top: 1px solid var(--line); }
.sv-fh { display: grid; gap: 14px; margin-bottom: 28px; }
.sv-ft { font-weight: 400; font-size: clamp(54px, 15vw, 190px); letter-spacing: -.07em; line-height: .88; margin: 0; }
.sv-card-f { position: relative; border: 1px solid rgba(255,255,255,.16); border-radius: 28px; padding: clamp(18px, 4vw, 48px); background: linear-gradient(150deg, #151517, #070708 60%); overflow: hidden; }
.sv-card-f::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(125deg, rgba(255,255,255,.1), rgba(255,255,255,0) 28%); }
.sv-bar { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-bottom: 18px; position: relative; }
.sv-bar b { height: 3px; border-radius: 3px; background: rgba(255,255,255,.14); transition: background .5s; }
.sv-bar b.on { background: #fff; }
.sv-sum { display: flex; flex-wrap: wrap; gap: 6px; min-height: 30px; margin-bottom: 12px; position: relative; }
.sv-sum span { font-size: 12px; padding: 6px 11px; border-radius: 99px; background: rgba(255,255,255,.1); }
.sv-step { display: none; position: relative; }
.sv-step.on { display: block; animation: svIn .55s var(--ease); }
@keyframes svIn { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
.sv-step h4 { font-weight: 400; font-size: clamp(30px, 6.4vw, 64px); letter-spacing: -.055em; line-height: 1; margin: 0 0 20px; }
.sv-opts { display: grid; grid-template-columns: 1fr; gap: 10px; }
.sv-opts button { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 64px; padding: 14px 18px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,255,255,.03); font-size: clamp(17px, 2vw, 22px); letter-spacing: -.03em; text-align: left; transition: background .3s, color .3s, border-color .3s, transform .3s var(--ease); }
.sv-opts button i { flex: none; width: 22px; height: 22px; border-radius: 50%; border: 1px solid rgba(255,255,255,.5); transition: background .3s, border-color .3s; }
.sv-opts button:hover { border-color: rgba(255,255,255,.6); transform: translateY(-2px); }
.sv-opts button[aria-pressed="true"] { background: #fff; color: #000; border-color: #fff; }
.sv-opts button[aria-pressed="true"] i { background: #000; border-color: #000; }
.sv-in { display: grid; gap: 4px; margin-bottom: 14px; }
.sv-in span { font-size: 12px; color: var(--mute); }
.sv-in input, .sv-in textarea { width: 100%; background: transparent; border: 0; border-bottom: 1px solid var(--line); outline: 0; color: #fff; font: inherit; font-size: clamp(20px, 3vw, 30px); letter-spacing: -.04em; padding: 6px 0 8px; resize: none; border-radius: 0; }
.sv-in input:focus, .sv-in textarea:focus { border-color: #fff; }
.sv-send { margin-top: 8px; min-height: 54px; }
.sv-msg { font-size: 13px; min-height: 1.3em; margin-top: 12px; color: rgba(255,255,255,.85); }
.sv-done p { font-size: 18px; color: rgba(255,255,255,.8); margin-bottom: 18px; }
.sv-back { margin-top: 18px; font-size: 13px; color: var(--mute); padding: 8px 0; }
.sv-back:hover { color: #fff; }
.sv-alt { margin-top: 18px; font-size: 13px; color: var(--mute); }
.sv-alt button { color: #fff; border-bottom: 1px solid var(--line); padding-bottom: 1px; }
.sv-float { position: fixed; left: auto; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); z-index: 47; transform: translateY(24px); opacity: 0; pointer-events: none; background: rgba(8,8,9,.82); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); min-height: 50px; transition: opacity .4s, transform .5s var(--ease), color .5s var(--ease); }
.sv-float.on { opacity: 1; transform: none; pointer-events: auto; }

@media (min-width: 700px) {
  .sv-opts { grid-template-columns: repeat(3, 1fr); }
  .sv-opts.two { grid-template-columns: repeat(2, 1fr); }
  .sv-jump { grid-template-columns: repeat(4, 1fr); max-width: 760px; }
}
@media (min-width: 900px) {
  .panel-in.sv { padding: 78px 32px 120px; }
  .sv-ch { grid-template-columns: 1.05fr 1fr; gap: 6vw; align-items: center; padding: 12vh 0; }
  .sv-ch.alt .sv-scene { order: 2; }
  .sv-scene { aspect-ratio: 1 / 1; max-height: 78vh; }
  .sv-hero { min-height: 80vh; }
}
@media (prefers-reduced-motion: reduce) { .sv-rv { opacity: 1; transform: none; transition: none; } .sv-steps::after { transform: scaleX(1); transition: none; } .sv-cue i { animation: none; } .sv-step.on { animation: none; } }

@media (min-width: 900px) { .sv-float { left: auto; right: 28px; transform: translateY(24px); } .sv-float.on { transform: none; } }

.sv-card.inw { transform: rotateY(var(--a)) translateZ(var(--R)) rotateY(180deg); }
.sv-t { overflow-wrap: break-word; }
@media (min-width: 900px) { .sv-t { font-size: clamp(44px, 5.6vw, 92px); } }

.sv-fh { gap: 22px; }
.sv-ft { padding-bottom: .08em; }

/* ============================================================
   v22: Work en anillo 3D con selector de sección (Campaigns · Series · Film)
   ============================================================ */
#wr { position: relative; height: min(80svh, 840px); min-height: 480px; overflow: hidden; touch-action: pan-y; cursor: grab; user-select: none; -webkit-user-select: none; isolation: isolate; }
#wr.drag { cursor: grabbing; }
.wr-top { position: relative; z-index: 3; display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 18px 24px; }
.wr-h { font-weight: 400; font-size: clamp(56px, 13vw, 170px); letter-spacing: -.07em; line-height: .84; margin: 0; }
.wr-sw { display: inline-flex; align-items: center; gap: 4px; padding: 5px; border: 1px solid var(--line); border-radius: 99px; background: rgba(255,255,255,.04); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.wr-ar { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; font-size: 17px; transition: background .3s, color .3s; }
.wr-ar:hover, .wr-ar:focus-visible { background: #fff; color: #000; }
.wr-cur { min-width: 138px; text-align: center; display: grid; gap: 6px; padding: 0 6px; }
.wr-cur b { font-weight: 400; font-size: 19px; letter-spacing: -.03em; }
.wr-cur span { display: flex; gap: 5px; justify-content: center; }
.wr-cur i { width: 5px; height: 5px; border-radius: 50%; background: rgba(255,255,255,.28); transition: background .3s, transform .3s; }
.wr-cur i.on { background: #fff; transform: scale(1.35); }
.wr-back { position: absolute; z-index: 3; left: 0; top: clamp(78px, 15vw, 190px); font-size: 13px; padding: 9px 16px; border: 1px solid var(--line); border-radius: 99px; background: rgba(0,0,0,.4); }
.wr-back:hover { background: rgba(255,255,255,.1); }
.wr-stage { position: absolute; inset: 0; perspective: var(--P, 1600px); perspective-origin: 50% 42%; pointer-events: none; }
.wr-ring { position: absolute; left: 50%; top: 60%; width: 0; height: 0; transform-style: preserve-3d; will-change: transform; }
.wr-card { position: absolute; width: var(--w); height: var(--h); left: calc(var(--w) / -2); top: calc(var(--h) / -2); transform: rotateY(var(--a)) translateZ(var(--R)); transform-style: preserve-3d; pointer-events: auto; }
.wrf, .wrb { position: absolute; inset: 0; border-radius: calc(var(--w) * .1); backface-visibility: hidden; -webkit-backface-visibility: hidden; overflow: hidden; }
.wrf { padding: 2px; background: linear-gradient(140deg, #f4f4f4 0%, #8b8b8f 18%, #262629 40%, #0b0b0c 55%, #6e6e72 78%, #d6d6d8 100%); box-shadow: 0 0 0 1px rgba(255,255,255,.07), 0 28px 50px -20px rgba(0,0,0,.9); }
.wrf img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: calc(var(--w) * .09); background: #111; pointer-events: none; }
.wrf i { position: absolute; inset: 2px; border-radius: calc(var(--w) * .09); pointer-events: none; background: linear-gradient(118deg, rgba(255,255,255,.26), rgba(255,255,255,.07) 22%, rgba(255,255,255,0) 42%); mix-blend-mode: screen; }
.wrb { transform: rotateY(180deg); background: linear-gradient(160deg, #2a2a2d, #0e0e10 55%, #1f1f22); box-shadow: inset 0 0 0 2px #3a3a3e; display: grid; place-items: center; }
.wrb span { font-size: calc(var(--w) * .11); letter-spacing: .5em; padding-left: .5em; color: rgba(255,255,255,.28); }
.wr-glow { position: absolute; inset: 0; pointer-events: none; z-index: -1; background: radial-gradient(55% 40% at 50% 70%, rgba(255,255,255,.12), transparent 70%); }
.wr-ui { position: absolute; left: 50%; top: 60%; width: var(--w); height: var(--h); transform: translate(-50%, -50%); pointer-events: none; color: #fff; transition: opacity .4s; }
.wr-cap { position: absolute; left: 8%; right: 8%; bottom: 6%; display: grid; gap: .3em; text-shadow: 0 1px 10px rgba(0,0,0,.8); }
.wr-cap b { font-weight: 400; font-size: 11px; letter-spacing: .08em; opacity: .8; min-height: 1em; }
.wr-cap span { font-size: clamp(15px, 1.5vw, 22px); letter-spacing: -.04em; line-height: 1; min-height: 1em; }
.wr-foot { position: absolute; z-index: 3; left: 0; right: 0; bottom: 0; display: flex; justify-content: space-between; font-size: 11px; letter-spacing: .08em; color: var(--mute); pointer-events: none; }
@media (max-width: 700px) { .wr-hint { display: none; } .wr-top { gap: 16px; } .wr-cur { min-width: 120px; } #wr { min-height: 520px; } }
@media (prefers-reduced-motion: reduce) { .wr-ui { transition: none; } }

/* ============================================================
   v23: proyecto como revista realista (scroll pasa las páginas; a los 3 s se pasan solas)
   ============================================================ */
#mgv { position: fixed; inset: 0; z-index: 30; display: none; background: #050505; touch-action: none; user-select: none; -webkit-user-select: none; cursor: grab; overflow: hidden; }
#mgv.on { display: block; }
html.mgv-on #split, html.mgv-on #spacer, html.mgv-on #thumbs, html.mgv-on #chip { display: none !important; }
html.mgv-on, html.mgv-on body { overflow: hidden; height: 100%; }
.mgv-light { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(60% 55% at 50% 46%, rgba(255,255,255,.11), transparent 72%), radial-gradient(100% 50% at 50% 112%, rgba(255,255,255,.07), transparent 60%); }
.mgv-stage { position: absolute; inset: 0; display: grid; place-items: center; padding-bottom: 6svh; }
.mgv-bk { position: relative; }
.mgv-bk .book { filter: drop-shadow(0 34px 38px rgba(0,0,0,.7)) drop-shadow(0 4px 6px rgba(0,0,0,.5)); }
#mgv .leaf { transition: none; will-change: transform; }
#mgv.single .book .base.l { display: none; }
#mgv.single .book .base.r { left: 0; width: 100%; background: #e6e5e0; }
#mgv.single .leaf { left: 0; width: 100%; }
#mgv.single .mag-spine { display: none; }
#mgv .book::before { display: none; }
#mgv .leaf .face i { opacity: .4; }
.pg.cover h3 { font-weight: 400; font-size: 3.4em; letter-spacing: -.05em; line-height: .95; margin: auto 0; text-align: center; padding: 0 4%; overflow-wrap: break-word; }
.pg.cover { justify-content: flex-start; }
.pg.cover small { margin-top: auto; }
.pg.blank small.mgv-fin { margin-top: .8em; }
.mgv-x { position: absolute; z-index: 3; top: 14px; right: 22px; font-size: 12px; padding: 9px 16px; border: 1px solid var(--line); border-radius: 99px; background: rgba(0,0,0,.45); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.mgv-x:hover { background: rgba(255,255,255,.12); }
.mgv-ui { position: absolute; z-index: 3; left: 50%; bottom: 58px; transform: translateX(-50%); display: flex; align-items: center; gap: 10px; }
.mgv-b { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--line); background: rgba(0,0,0,.5); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); font-size: 15px; display: grid; place-items: center; transition: background .3s, color .3s; }
.mgv-b:hover, .mgv-b:focus-visible { background: #fff; color: #000; }
.mgv-play { font-size: 10px; letter-spacing: -.1em; }
.mgv-n { min-width: 74px; text-align: center; font-size: 12px; letter-spacing: .1em; color: var(--mute); font-variant-numeric: tabular-nums; }
.mgv-hint { position: absolute; z-index: 3; left: 0; right: 0; bottom: 118px; text-align: center; font-size: 12px; letter-spacing: .08em; color: rgba(255,255,255,.6); transition: opacity .6s; pointer-events: none; }
.mgv-hint.off { opacity: 0; }
.mgv-prog { position: absolute; z-index: 3; left: 0; right: 0; top: 0; height: 2px; background: rgba(255,255,255,.1); }
.mgv-prog b { display: block; height: 100%; background: #fff; transform-origin: left; transform: scaleX(0); }
@media (max-width: 760px) { .mgv-ui { bottom: 64px; } .mgv-hint { bottom: 124px; } .mgv-x { top: 12px; right: 16px; } }
html.mgv-on .nav { top: 26px; }
@media (max-width: 760px) { html.mgv-on .nav { top: 62px; } }

/* expositor de pósters (Music) */
.sv-sp { position: absolute; inset: 0; perspective: 1400px; perspective-origin: 50% 30%; }
.sv-sw { position: absolute; left: 50%; top: 54%; width: 0; height: 0; transform-style: preserve-3d; will-change: transform; }
.sv-spk { position: absolute; left: 0; top: calc(var(--ch) / -2); width: var(--cw); height: var(--ch); transform-origin: 0 50%; transform: rotateY(var(--a)) translateX(var(--hub)); transform-style: preserve-3d; }
.spf, .spb { position: absolute; inset: 0; overflow: hidden; border-radius: 5px; backface-visibility: hidden; -webkit-backface-visibility: hidden; box-shadow: 0 0 0 1px rgba(255,255,255,.14), 0 18px 30px -16px rgba(0,0,0,.9); }
.spb { transform: rotateY(180deg); }
.spf img, .spb img { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; }
.spb img { filter: brightness(.55) saturate(.8); }
/* preguntas del embudo: más discretas */
.sv-step h4 { font-size: clamp(20px, 2.4vw, 28px); letter-spacing: -.03em; line-height: 1.15; margin: 0 0 16px; color: rgba(255,255,255,.88); }

/* Technology: reel de ASAP Rocky × Tesla en teléfono */
.sv-tech { position: absolute; inset: 0; display: grid; place-items: center; }
.sv-rl { display: block; height: 82%; position: relative; will-change: transform; }
.sv-ph { height: 100%; width: auto; aspect-ratio: 9 / 19; }
.sv-ph .reelui { font-size: 10px; }
.sv-igtag { position: absolute; left: 50%; bottom: -9%; transform: translateX(-50%); font-size: 11px; letter-spacing: .1em; color: #fff; opacity: .75; white-space: nowrap; transition: opacity .3s; }
.sv-rl:hover .sv-igtag { opacity: 1; }
.sv-igtag i { font-style: normal; }
.sv-ph { min-width: 0; }
.sv-ph .scr .m { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

/* esfera de puntos de fondo en los formularios */
.sv-sbg { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.sv-card-f > :not(.sv-sbg) { position: relative; z-index: 1; }
#form { position: relative; isolation: isolate; }
#form > :not(.hp):not(.sv-sbg) { position: relative; z-index: 1; }

/* embudo: cabecera con la bola de puntos en el hueco libre, 5 pasos */
.sv-fh { position: relative; isolation: isolate; min-height: clamp(210px, 28vw, 360px); align-content: end; }
.sv-fh > :not(.sv-sbg) { position: relative; z-index: 1; }
.sv-ft { font-size: clamp(44px, 9.6vw, 150px); max-width: 11ch; text-wrap: balance; }
.sv-bar { grid-template-columns: repeat(5, 1fr); }
@media (min-width: 700px) { .sv-opts.four { grid-template-columns: repeat(2, 1fr); } }

/* ============================================================
   v23: Work como mosaico que aparece (selector de sección) · Services sin cajas · modo texto
   ============================================================ */
#wr { display: none !important; }
#panel-work #w-list > header.p-head p { display: none; }
#w-tabs { display: flex; flex-wrap: wrap; gap: 4px 28px; margin: 0 0 7vh; align-items: baseline; position: sticky; top: 0; z-index: 5; padding: 14px 0; background: linear-gradient(#050505 55%, rgba(5,5,5,0)); }
#w-tabs button[data-tab="All"] { display: none; }
#w-tabs button { border: 0; border-radius: 0; padding: 4px 0; font-size: clamp(26px, 5.4vw, 64px); letter-spacing: -.055em; line-height: 1; color: rgba(255,255,255,.34); background: none; position: relative; transition: color .4s var(--ease); }
#w-tabs button sup { font-size: 11px; letter-spacing: 0; margin-left: 6px; vertical-align: top; opacity: .7; font-variant-numeric: tabular-nums; }
#w-tabs button::after { content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px; background: #fff; transform: scaleX(0); transform-origin: left; transition: transform .6s var(--ease); }
#w-tabs button:hover { color: rgba(255,255,255,.8); background: none; }
#w-tabs button.on { background: none; color: #fff; }
#w-tabs button.on::after { transform: scaleX(1); }
#w-tabs .tabback { font-size: 14px; letter-spacing: 0; color: #fff; border-bottom: 1px solid var(--line); order: -1; }
#w-tabs .tabback:empty { display: none; }
#w-tabs .tabback::after { display: none; }

#w-grid { grid-template-columns: repeat(4, 1fr); gap: 18px 14px; align-items: start; padding-bottom: 14vh; }
#w-grid .wcard { opacity: 0; transform: translateY(46px) scale(.94); transition: opacity .9s var(--ease), transform 1.1s var(--ease); transition-delay: var(--d, 0ms); }
#w-grid .wcard.in { opacity: 1; transform: none; }
#w-grid .wimg { aspect-ratio: 1 / 1.2; border-radius: 4px; position: relative; clip-path: inset(0 0 100% 0); transition: clip-path 1.1s var(--ease); transition-delay: var(--d, 0ms); }
#w-grid .wcard.in .wimg { clip-path: inset(0); }
#w-grid .wcard:hover .wimg { box-shadow: 0 30px 60px -30px rgba(255,255,255,.18); }
#w-grid .wcap { margin-top: 12px; font-size: 13px; letter-spacing: -.01em; }
#w-grid .wcap span:first-child { transition: transform .5s var(--ease); }
#w-grid .wcard:hover .wcap span:first-child { transform: translateX(6px); }
#w-grid:has(.reel) { grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); }
#w-grid .wcard.reel .wimg { aspect-ratio: 9 / 16; }
@media (max-width: 1100px) { #w-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 700px) { #w-grid { grid-template-columns: repeat(2, 1fr); gap: 14px 10px; } #w-grid:has(.reel) { grid-template-columns: repeat(2, 1fr); } #w-tabs { gap: 2px 20px; } }
@media (prefers-reduced-motion: reduce) { #w-grid .wcard, #w-grid .wimg { opacity: 1; transform: none; clip-path: none; transition: none; } }

/* Services: escenas sin caja, se funden con el fondo */
.sv-scene { border: 0; border-radius: 0; background: none; overflow: hidden; -webkit-mask-image: radial-gradient(ellipse 74% 72% at 50% 50%, #000 58%, transparent 100%); mask-image: radial-gradient(ellipse 74% 72% at 50% 50%, #000 58%, transparent 100%); }
.sv-scene::after { display: none; }


/* v23b: tamaños discretos */
.sv-step h4 { font-size: clamp(24px, 3.6vw, 42px); margin: 0 0 3vh; }
.sv-in input, .sv-in textarea { font-size: clamp(20px, 2.6vw, 30px); }
#w-tabs button { font-size: clamp(20px, 3vw, 38px); }
#w-tabs { gap: 4px 22px; margin-bottom: 5vh; }

/* v23c: Work sin títulos y con entrada simétrica (izquierda desde la izquierda, derecha desde la derecha) */
#w-grid .wcard:not(.more):not(.wback) .wcap { display: none; }
#w-grid .wcard { transform: none; transition: opacity .9s var(--ease), transform 1.2s var(--ease); transition-delay: var(--d, 0ms); }
#w-grid .wcard.fl { transform: translateX(-14vw); }
#w-grid .wcard.fr { transform: translateX(14vw); }
#w-grid .wcard.fc { transform: translateY(40px); }
#w-grid .wcard.in { opacity: 1; transform: none; }
#w-grid .wcard.fl .wimg { clip-path: inset(0 100% 0 0); }
#w-grid .wcard.fr .wimg { clip-path: inset(0 0 0 100%); }
#w-grid .wcard.fc .wimg { clip-path: inset(0 0 100% 0); }
#w-grid .wcard.in .wimg { clip-path: inset(0); }
#w-grid .wcard .wimg { transition: clip-path 1.2s var(--ease); transition-delay: var(--d, 0ms); }

/* v23d: Work alineado; los cuadrados entran claramente desde los lados */
#w-grid .wcard.fl { transform: translateX(-34vw); }
#w-grid .wcard.fr { transform: translateX(34vw); }
#w-grid .wcard.fl .wimg, #w-grid .wcard.fr .wimg { clip-path: none; }
#w-grid .wcard { transition: opacity 1.1s var(--ease), transform 1.4s var(--ease); transition-delay: var(--d, 0ms); }
#w-grid .wcard.in { transform: none; }
/* Contact: el mismo test paso a paso */
#c-quiz { position: relative; isolation: isolate; align-self: start; }
#c-quiz > :not(.sv-sbg) { position: relative; z-index: 1; }

/* test: campo rellenable y nota */
.sv-hint { font-size: 13px; color: var(--mute); margin: -1.4vh 0 16px; }
.sv-own { display: flex; align-items: center; gap: 10px; margin-top: 14px; border-bottom: 1px solid var(--line); transition: border-color .3s; }
.sv-own:focus-within { border-color: #fff; }
.sv-own input { flex: 1; min-width: 0; background: none; border: 0; outline: 0; color: #fff; font: inherit; font-size: clamp(17px, 2vw, 22px); letter-spacing: -.03em; padding: 14px 0; border-radius: 0; }
.sv-own input::placeholder { color: rgba(255,255,255,.4); }
.sv-own button { flex: none; width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(255,255,255,.5); font-size: 16px; transition: background .3s, color .3s; }
.sv-own button:hover { background: #fff; color: #000; }
.svb span { font-size: calc(var(--cw) * .072); letter-spacing: .2em; padding-left: .2em; white-space: nowrap; text-transform: none; color: rgba(255,255,255,.4); }

/* "Ver más reels" con el estilo de las pestañas del menú */
#w-grid .wcard.more { grid-column: 1 / -1; display: block; min-height: 0; border: 0; border-radius: 0; padding: 4vh 0 0; margin: 0; background: none; text-align: left; }
#w-grid .wcard.more .wcap { display: inline-flex; align-items: flex-start; gap: 6px; margin: 0; padding: 4px 0; position: relative; font-size: clamp(20px, 3vw, 38px); letter-spacing: -.055em; line-height: 1; color: #fff; }
#w-grid .wcard.more .wcap span:first-child { position: relative; transform: none; }
#w-grid .wcard.more .wcap span:first-child::after { content: ""; position: absolute; left: 0; right: 0; bottom: -6px; height: 2px; background: #fff; transform-origin: left; transition: transform .6s var(--ease); }
#w-grid .wcard.more:hover .wcap span:first-child::after { transform: scaleX(.35); }
#w-grid .wcard.more .wcap span:last-child { font-size: 11px; letter-spacing: 0; color: var(--mute); font-variant-numeric: tabular-nums; text-align: left; }
.spf video { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; }

/* ============================================================
   v25: botones de cristal líquido (refracción, brillo especular que sigue al puntero, gelatina al pasar)
   ============================================================ */
.cta-btn, .send, .mgv-b, .sv-opts button, .sv-jump button, .sv-own button, .sv-float {
  --mx: 50%; --my: 0%;
  isolation: isolate; overflow: hidden;
  color: #fff;
  background: linear-gradient(140deg, rgba(255,255,255,.20), rgba(255,255,255,.05) 46%, rgba(255,255,255,.12));
  -webkit-backdrop-filter: blur(14px) saturate(1.8) brightness(1.1); backdrop-filter: blur(14px) saturate(1.8) brightness(1.1);
  border: 1px solid rgba(255,255,255,.30);
  box-shadow: inset 0 1.5px 0 rgba(255,255,255,.65), inset 0 -12px 18px -14px rgba(255,255,255,.35), inset 1px 0 0 rgba(255,255,255,.12), inset -1px 0 0 rgba(255,255,255,.12), 0 10px 26px -12px rgba(0,0,0,.75);
  transition: box-shadow .6s var(--ease), background .6s var(--ease), border-color .6s var(--ease), color .4s;
}
/* brillo especular que sigue al puntero */
.cta-btn::before, .send::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(120px 90px at var(--mx) var(--my), rgba(255,255,255,.65), rgba(255,255,255,.12) 45%, transparent 70%); opacity: 0; transform: none; transition: opacity .5s var(--ease); border-radius: inherit; }
.cta-btn:hover::before, .send:hover::before { opacity: 1; transform: none; }
/* barrido de luz líquida */
.cta-btn::after, .send::after, .sv-opts button::after, .sv-jump button::after, .mgv-b::after, .sv-own button::after, .sv-float::after {
  content: ""; position: absolute; inset: -20% -10%; z-index: -1; pointer-events: none;
  background: linear-gradient(108deg, transparent 38%, rgba(255,255,255,.55) 49%, rgba(255,255,255,.12) 53%, transparent 62%);
  translate: -130% 0; transition: translate 0s;
}
.sv-opts button::before, .sv-jump button::before, .mgv-b::before, .sv-own button::before, .sv-float::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; border-radius: inherit;
  background: radial-gradient(110px 80px at var(--mx) var(--my), rgba(255,255,255,.55), rgba(255,255,255,.1) 45%, transparent 70%); opacity: 0; transition: opacity .5s var(--ease);
}
.cta-btn:hover, .send:hover, .mgv-b:hover, .sv-opts button:hover, .sv-jump button:hover, .sv-own button:hover, .sv-float:hover,
.cta-btn:focus-visible, .send:focus-visible, .sv-opts button:focus-visible, .sv-jump button:focus-visible {
  color: #fff;
  background: linear-gradient(140deg, rgba(255,255,255,.34), rgba(255,255,255,.10) 46%, rgba(255,255,255,.22));
  border-color: rgba(255,255,255,.6);
  box-shadow: inset 0 2px 0 rgba(255,255,255,.85), inset 0 -14px 22px -14px rgba(255,255,255,.55), inset 1px 0 0 rgba(255,255,255,.2), inset -1px 0 0 rgba(255,255,255,.2), 0 16px 34px -12px rgba(0,0,0,.8), 0 0 28px -4px rgba(255,255,255,.28);
}
.sv-opts button:hover::before, .sv-jump button:hover::before, .mgv-b:hover::before, .sv-own button:hover::before, .sv-float:hover::before { opacity: 1; }
.cta-btn:hover::after, .send:hover::after, .sv-opts button:hover::after, .sv-jump button:hover::after, .mgv-b:hover::after, .sv-own button:hover::after, .sv-float:hover::after { translate: 130% 0; transition: translate 1.5s cubic-bezier(.22,.8,.3,1); }
/* opción elegida del test: cristal lleno */
.sv-opts button[aria-pressed="true"] { background: linear-gradient(140deg, rgba(255,255,255,.95), rgba(255,255,255,.72)); color: #000; border-color: #fff; }
.sv-opts button[aria-pressed="true"] i { background: #000; border-color: #000; }
/* barra de menú y "Ver más reels" en cristal */
.nav { -webkit-backdrop-filter: blur(16px) saturate(1.7) brightness(1.08); backdrop-filter: blur(16px) saturate(1.7) brightness(1.08); box-shadow: inset 0 1.5px 0 rgba(255,255,255,.5), inset 0 -10px 16px -12px rgba(255,255,255,.28), 0 10px 28px -12px rgba(0,0,0,.7); }
@media (prefers-reduced-motion: reduce) { .cta-btn:hover, .send:hover, .mgv-b:hover, .sv-opts button:hover, .sv-jump button:hover, .sv-own button:hover, .sv-float:hover { animation: none; scale: 1.03; } .cta-btn::after, .send::after { display: none; } }

.cta-btn:not(.sv-float), .sv-opts button, .sv-jump button, .sv-own button, .mgv-b { position: relative; }
.sv-float { transition: opacity .4s, transform .5s var(--ease), box-shadow .6s var(--ease), background .6s var(--ease), border-color .6s var(--ease); }
.sv-opts button:hover, .sv-jump button:hover { transform: none; }

/* v26: visor de proyecto a pantalla completa, una foto cada vez */
#mgv { cursor: pointer; }
.mgv-st { position: absolute; inset: 0; }
.mgv-sl { --top: 64px; --bot: 150px; position: absolute; inset: var(--top) 0 var(--bot); margin: 0; display: grid; place-items: center; opacity: 0; pointer-events: none; transform: translateX(2.5%) scale(.985); transition: opacity .6s var(--ease), transform .9s var(--ease); }
.mgv-sl[data-pos="p"] { transform: translateX(-2.5%) scale(.985); }
.mgv-sl.on { opacity: 1; transform: none; }
.mgv-sl img, .mgv-sl video { max-width: min(94vw, 1500px); max-height: calc(100vh - var(--top) - var(--bot)); max-height: calc(100svh - var(--top) - var(--bot)); width: auto; height: auto; object-fit: contain; display: block; border-radius: 3px; box-shadow: 0 30px 80px -30px rgba(0,0,0,.9); background: #0b0b0c; -webkit-user-drag: none; }
.mgv-sl.cover { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2.2vh; text-align: center; padding: 0 6vw; }
.mgv-sl.cover .mast { font-weight: 400; letter-spacing: .5em; font-size: clamp(12px, 1.2vw, 16px); padding-left: .5em; color: rgba(255,255,255,.7); }
.mgv-sl.cover h3 { font-weight: 400; font-size: clamp(40px, 8vw, 130px); letter-spacing: -.06em; line-height: .92; margin: 0; overflow-wrap: break-word; max-width: 14ch; }
.mgv-sl.cover small { font-size: 12px; letter-spacing: .26em; color: rgba(255,255,255,.55); }
.mgv-ui { bottom: 28px; }
.mgv-b[disabled] { opacity: .35; pointer-events: none; }
@media (max-width: 760px) { .mgv-sl { --top: 70px; --bot: 128px; } .mgv-sl img, .mgv-sl video { max-width: 96vw; } .mgv-ui { bottom: 22px; } }

/* v26: test más compacto y botones sin movimiento (solo brillo líquido) */
.sv-card-f { max-width: 760px; }
.sv-step h4 { font-size: clamp(20px, 2.3vw, 30px); margin: 0 0 14px; letter-spacing: -.04em; }
.sv-opts { gap: 8px; }
.sv-opts button { min-height: 0; padding: 11px 16px; border-radius: 14px; font-size: clamp(14px, 1.15vw, 16px); letter-spacing: -.02em; }
.sv-opts button i { width: 16px; height: 16px; }
.sv-sum { min-height: 0; margin-bottom: 8px; }
.sv-sum span { font-size: 11px; padding: 4px 9px; }
.sv-bar { margin-bottom: 14px; }
.sv-own input { font-size: clamp(14px, 1.15vw, 16px); padding: 10px 0; }
.sv-own button { width: 32px; height: 32px; font-size: 14px; }
.sv-in input, .sv-in textarea { font-size: clamp(16px, 1.6vw, 20px); padding: 6px 0 8px; }
.sv-in span { font-size: 12px; }
.sv-send { min-height: 44px; }
.sv-hint { font-size: 12px; margin: -6px 0 12px; }
@media (min-width: 700px) { .sv-opts { grid-template-columns: repeat(3, minmax(0, 1fr)); } .sv-opts.two, .sv-opts.four { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* test: opción "Otro" rellenable */
.sv-other { display: block; min-width: 0; }
.sv-other .sv-ob { width: 100%; }
.sv-oi { display: flex; align-items: center; gap: 8px; min-height: 43px; padding: 0 6px 0 14px; border-radius: 14px; border: 1px solid rgba(255,255,255,.55); background: linear-gradient(140deg, rgba(255,255,255,.22), rgba(255,255,255,.06) 50%, rgba(255,255,255,.14)); -webkit-backdrop-filter: blur(14px) saturate(1.8); backdrop-filter: blur(14px) saturate(1.8); box-shadow: inset 0 1.5px 0 rgba(255,255,255,.7), 0 10px 26px -12px rgba(0,0,0,.75); }
.sv-oi[hidden] { display: none; }
.sv-oi input { flex: 1; min-width: 0; background: none; border: 0; outline: 0; color: #fff; font: inherit; font-size: clamp(14px, 1.15vw, 16px); padding: 10px 0; border-radius: 0; }
.sv-oi input::placeholder { color: rgba(255,255,255,.5); }
.sv-opts .sv-oi .sv-og { flex: none; width: 30px; min-height: 30px; height: 30px; padding: 0; display: grid; place-items: center; border-radius: 50%; border: 1px solid rgba(255,255,255,.55); font-size: 14px; background: rgba(255,255,255,.1); }
.sv-opts .sv-oi .sv-og:hover { background: rgba(255,255,255,.3); }
@media (min-width: 700px) { .sv-opts.two { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.sv-fr video { width: 100%; height: 100%; object-fit: cover; display: block; background: #111; }
.sv-fr { opacity: .62; }

/* ---------- Lab ---------- */
.panel-in.lab { padding-bottom: 14vh; }
.lab-grid { display: grid; grid-template-columns: 1fr; gap: 6vh 24px; margin-top: 2vh; }
.lab-col { display: flex; flex-direction: column; gap: 12px; border-top: 1px solid var(--line); padding-top: 18px; min-width: 0; }
.lab-n { font-size: 12px; letter-spacing: .1em; color: var(--mute); font-variant-numeric: tabular-nums; }
.lab-col h3 { font-weight: 400; font-size: clamp(34px, 5vw, 64px); letter-spacing: -.06em; line-height: .95; margin: 0; }
.lab-d { color: var(--mute); font-size: 14px; line-height: 1.45; max-width: 34ch; margin: 0 0 6px; }
.lab-it { display: flex; flex-direction: column; gap: 8px; padding: 18px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,255,255,.03); }
.lab-it h4 { font-weight: 400; font-size: 20px; letter-spacing: -.03em; margin: 0; }
.lab-it p { font-size: 13px; line-height: 1.45; color: rgba(255,255,255,.7); margin: 0; }
.lab-it.soon { border-style: dashed; background: none; }
.lab-it.soon h4 { color: rgba(255,255,255,.75); }
.lab-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 6px; }
.lab-row b { font-weight: 400; font-size: 18px; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.lab-row .cta-btn { padding: 9px 16px; font-size: 13px; }
.lab-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; margin-top: 9vh; padding-top: 28px; border-top: 1px solid var(--line); }
.lab-foot p { font-size: clamp(18px, 2.2vw, 28px); letter-spacing: -.04em; margin: 0; }
@media (min-width: 900px) { .lab-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

.lab-soon { min-height: 46vh; display: grid; align-content: center; border-top: 1px solid var(--line); }
.lab-soon h3 { font-weight: 400; font-size: clamp(48px, 11vw, 190px); letter-spacing: -.07em; line-height: .9; margin: 0; color: rgba(255,255,255,.88); }

/* Lab: que el título no se corte por los lados */
#panel-lab .p-head h2 { padding-left: .04em; overflow: visible; }
#panel-lab .p-head .line { overflow: hidden; padding: 0 .1em .14em .06em; margin-left: -.02em; }

/* formulario antiguo de Contact: oculto de verdad (form{display:grid} anulaba el atributo hidden) */
#form[hidden], form[hidden] { display: none !important; }
/* panel final del test: todos los datos de contacto */
.sv-fg { display: grid; grid-template-columns: 1fr; gap: 0 22px; }
@media (min-width: 700px) { .sv-fg { grid-template-columns: 1fr 1fr; } }

/* v31: galería inmersiva — fondo con el color de la foto, foto grande, cursor-flecha y miniaturas */
#mgv { background: #08080a; cursor: none; }
#mgv .mgv-light { display: none; }
.mgv-bg { position: absolute; inset: -10%; z-index: 0; pointer-events: none; overflow: hidden; }
.mgv-bg i { position: absolute; inset: 0; background-size: cover; background-position: center; filter: blur(80px) saturate(1.35) brightness(.5); transform: scale(1.15); opacity: 0; transition: opacity 1.2s var(--ease); }
.mgv-bg i.on { opacity: 1; }
.mgv-bg::after { content: ""; position: absolute; inset: 0; background: radial-gradient(90% 80% at 50% 45%, transparent 40%, rgba(0,0,0,.55)); }
.mgv-st { z-index: 1; }
.mgv-sl { --top: 74px; --bot: 150px; }
.mgv-sl img, .mgv-sl video { box-shadow: 0 50px 110px -40px rgba(0,0,0,.9), 0 0 0 1px rgba(255,255,255,.05); border-radius: 2px; }
.mgv-sl.on img, .mgv-sl.on video { animation: mgvIn 1.1s var(--ease) both; }
@keyframes mgvIn { from { transform: scale(1.035); filter: brightness(.7); } to { transform: none; filter: none; } }
.mgv-x { z-index: 5; cursor: pointer; }
.mgv-bar { position: absolute; z-index: 4; left: 50%; bottom: 22px; transform: translateX(-50%); display: flex; align-items: center; gap: 12px; width: min(94vw, 980px); }
.mgv-t { flex: none; font-size: 13px; letter-spacing: .02em; color: #fff; padding: 9px 14px; border-radius: 99px; border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.08); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); cursor: pointer; transition: background .4s, border-color .4s; }
.mgv-t:hover { background: rgba(255,255,255,.2); border-color: rgba(255,255,255,.55); }
.mgv-t[disabled] { opacity: .35; pointer-events: none; }
.mgv-n { flex: none; min-width: 78px; text-align: center; font-size: 13px; letter-spacing: .1em; color: rgba(255,255,255,.8); font-variant-numeric: tabular-nums; }
.mgv-strip { flex: 1; min-width: 0; display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; padding: 3px; }
.mgv-strip::-webkit-scrollbar { display: none; }
.mgv-th { flex: none; width: 38px; height: 52px; padding: 0; border-radius: 4px; overflow: hidden; border: 1px solid transparent; opacity: .45; background: #111; cursor: pointer; transition: opacity .35s, transform .35s var(--ease), border-color .35s; }
.mgv-th img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mgv-th.cv { display: grid; place-items: center; font-size: 11px; color: #fff; }
.mgv-th:hover { opacity: .85; transform: translateY(-3px); }
.mgv-th.on { opacity: 1; border-color: #fff; transform: translateY(-3px); }
.mgv-cursor { position: fixed; left: 0; top: 0; z-index: 7; pointer-events: none; width: 76px; height: 76px; border-radius: 50%; display: grid; place-items: center; font-size: 24px; color: #fff; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.4); -webkit-backdrop-filter: blur(10px) saturate(1.6); backdrop-filter: blur(10px) saturate(1.6); opacity: 0; transition: opacity .25s, background .25s; }
.mgv-cursor.on { opacity: 1; }
.mgv-cursor.dis { opacity: .25; }
.mgv-prog { z-index: 5; }
@media (hover: none) { #mgv { cursor: auto; } .mgv-cursor { display: none; } }
@media (max-width: 760px) { .mgv-bar { gap: 8px; bottom: 16px; } .mgv-n { min-width: 62px; } .mgv-t { padding: 8px 11px; } .mgv-th { width: 30px; height: 42px; } .mgv-sl { --top: 70px; --bot: 128px; } }
.mgv-bar { bottom: 58px; }
.mgv-sl { --bot: 186px; }
@media (max-width: 760px) { .mgv-bar { bottom: 54px; } .mgv-sl { --bot: 160px; } }

/* modo rápido: cortes limpios y breves, sin animaciones lentas */
#mgv.fast .mgv-sl { transition: opacity .09s linear, transform .09s linear; }
#mgv.fast .mgv-sl.on img, #mgv.fast .mgv-sl.on video { animation: none; }
#mgv.fast .mgv-bg i { transition: opacity .35s linear; }
#mgv .mgv-sl { transform: none !important; }
#mgv .mgv-sl:not(.on) { opacity: 0; }

/* medida estándar: todas las piezas se exponen en el mismo marco 4:5 */
.mgv-sl { --fw: min(94vw, calc((100svh - var(--top) - var(--bot)) * .8)); }
.mgv-fr { position: relative; width: var(--fw); aspect-ratio: 4 / 5; overflow: hidden; border-radius: 3px; background: #0b0b0c; box-shadow: 0 50px 110px -40px rgba(0,0,0,.9), 0 0 0 1px rgba(255,255,255,.06); display: grid; place-items: center; }
.mgv-fr::before { content: ""; position: absolute; inset: -24px; background: var(--fb, none) center / cover; filter: blur(26px) saturate(1.2) brightness(.55); }
.mgv-fr img, .mgv-fr video { position: relative; width: 100%; height: 100%; max-width: none; max-height: none; object-fit: contain; box-shadow: none; border-radius: 0; background: none; }
#mgv.fast .mgv-sl.on .mgv-fr { animation: none; }

/* galería sin números ni flechas: solo el marco, las miniaturas y Pausa/Reproducir */
.mgv-bar { justify-content: center; }
.mgv-strip { flex: 0 1 auto; max-width: min(70vw, 640px); }

/* sin barra inferior: la imagen ocupa el espacio; solo "Work" y, en pausa, el indicador ▶ */
.mgv-sl { --top: 70px; --bot: 56px; }
@media (max-width: 760px) { .mgv-sl { --top: 72px; --bot: 70px; } }
.mgv-bar, .mgv-prog { display: none !important; }
.mgv-x { cursor: pointer; }
.mgv-state { position: absolute; z-index: 4; left: 50%; top: 50%; width: 84px; height: 84px; margin: -42px 0 0 -42px; border-radius: 50%; display: grid; place-items: center; font-size: 28px; padding-left: 5px; color: #fff; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.4); -webkit-backdrop-filter: blur(12px) saturate(1.5); backdrop-filter: blur(12px) saturate(1.5); opacity: 0; transform: scale(.85); transition: opacity .2s, transform .2s; pointer-events: none; }
#mgv.paused .mgv-state { opacity: 1; transform: none; }
@media (hover: hover) and (pointer: fine) { .mgv-state { display: none; } }

/* SEO: texto para buscadores y lectores de pantalla (mismo contenido que la web, sin ocupar sitio) */
.seo { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
/* Lab: Coming soon más pequeño + cuenta atrás */
.lab-soon { min-height: 40vh; gap: clamp(18px, 3vh, 34px); }
.lab-soon h3 { font-size: clamp(30px, 6.2vw, 104px); letter-spacing: -.06em; }
.lab-cd { display: flex; gap: clamp(18px, 3.4vw, 54px); flex-wrap: wrap; font-variant-numeric: tabular-nums; }
.lab-cd div { display: grid; gap: 6px; min-width: 3.2ch; }
.lab-cd b { font-weight: 400; font-size: clamp(26px, 4.4vw, 68px); letter-spacing: -.05em; line-height: 1; }
.lab-cd small { font-size: 11px; letter-spacing: .22em; color: var(--mute); }

/* selector de idioma (EN / ES), arriba a la derecha; se oculta con un panel o el visor abiertos */
.lang { position: fixed; z-index: 41; top: 14px; right: 22px; font-size: 11px; letter-spacing: .08em; color: #fff; padding: 9px 14px; border-radius: 99px; background: rgba(0,0,0,.55); -webkit-backdrop-filter: blur(16px) saturate(1.7); backdrop-filter: blur(16px) saturate(1.7); box-shadow: inset 0 1.5px 0 rgba(255,255,255,.4); text-decoration: none; transition: background .3s; }
.lang:hover { background: rgba(255,255,255,.18); }
body.lock .lang, html.mgv-on .lang { display: none; }
@media (max-width: 760px) { .lang { top: 12px; right: 16px; padding: 8px 12px; } }

/* rueda de Music más ligera para la tarjeta gráfica: sin imagen detrás ni sombras grandes */
.sv-spk .spf, .sv-spk .spb { box-shadow: 0 0 0 1px rgba(255,255,255,.14); }
.sv-spk .spb { background: linear-gradient(160deg, #2a2a30, #121215); }
.sv-sw { will-change: auto; }

/* Creative Director: anillo giratorio de fotogramas del film de Prada alrededor del vídeo principal */
.sv-dr { position: absolute; inset: 0; transform-style: preserve-3d; perspective-origin: 50% 42%; }
.sv-dr-ring { position: absolute; left: 50%; top: 47%; width: 0; height: 0; transform-style: preserve-3d; will-change: transform; }
.sv-dr-p { position: absolute; left: calc(var(--cw) / -2); top: calc(var(--ch) / -2); width: var(--cw); height: var(--ch); transform: rotateY(var(--a)) translateZ(var(--R)); transform-style: preserve-3d; border-radius: 7px; overflow: hidden; background: #0c0c0e; box-shadow: 0 0 0 1px rgba(255,255,255,.16); transition: opacity .5s var(--ease), filter .5s var(--ease); }
.sv-dr-p img { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; filter: grayscale(.15) contrast(1.05); }
.sv-dr-p i { position: absolute; left: 8px; bottom: 6px; font: 500 10px/1 ui-monospace, Menlo, monospace; letter-spacing: .08em; font-style: normal; color: rgba(255,255,255,.7); }
.sv-dr-p.now { opacity: .12; filter: blur(2px); }
.sv-dr-hero { position: absolute; left: 50%; top: 47%; width: var(--hw); aspect-ratio: 9 / 16; border-radius: 10px; overflow: hidden; background: #0b0b0d; box-shadow: 0 0 0 1px rgba(255,255,255,.28), 0 40px 90px -30px rgba(0,0,0,.95), 0 0 70px -10px rgba(255,255,255,.18); transform: translate(-50%, -50%); }
.sv-dr-hero video { width: 100%; height: 100%; object-fit: cover; display: block; }
.sv-dr-tc { position: absolute; left: 10px; bottom: 9px; font: 500 11px/1 ui-monospace, Menlo, monospace; letter-spacing: .1em; color: rgba(255,255,255,.85); text-shadow: 0 1px 6px rgba(0,0,0,.6); }

/* Technology: abanico de fotogramas detrás del reel + ranura "Tu lanzamiento" (clic = empezar proyecto) */
.sv-tf { position: absolute; inset: 0; perspective: 1200px; perspective-origin: 50% 45%; transform-style: preserve-3d; }
.sv-tf-c { position: absolute; left: 50%; top: 47%; width: var(--cwd, 120px); aspect-ratio: 9 / 16; border-radius: 10px; overflow: hidden; padding: 0; background: #0b0b0d; box-shadow: 0 0 0 1px rgba(255,255,255,.2), 0 40px 70px -34px rgba(0,0,0,.95); will-change: transform, opacity; opacity: 0; }
.sv-tf-c img { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; filter: grayscale(.2) contrast(1.05); }
.sv-tf-g { display: grid; place-content: center; gap: 10px; text-align: center; color: #fff; border: 1.5px dashed rgba(255,255,255,.55); background: rgba(255,255,255,.04); cursor: pointer; pointer-events: auto; animation: tfPulse 2.4s ease-in-out infinite; font: inherit; }
.sv-tf-g b { font-weight: 300; font-size: clamp(30px, 5vw, 52px); line-height: 1; }
.sv-tf-g span { font-size: 10px; letter-spacing: .06em; line-height: 1.4; padding: 0 10px; white-space: normal; overflow-wrap: anywhere; }
.sv-tf-g:hover { background: rgba(255,255,255,.14); }
@keyframes tfPulse { 0%, 100% { box-shadow: 0 0 0 1px rgba(255,255,255,.18), 0 0 0 0 rgba(255,255,255,.25); } 50% { box-shadow: 0 0 0 1px rgba(255,255,255,.4), 0 0 38px 4px rgba(255,255,255,.22); } }
.sv-rec { position: absolute; left: 16px; top: 14px; z-index: 3; display: inline-flex; align-items: center; gap: 8px; font: 500 11px/1 ui-monospace, Menlo, monospace; letter-spacing: .12em; color: rgba(255,255,255,.85); pointer-events: none; }
.sv-rec i { width: 8px; height: 8px; border-radius: 50%; background: #ff3b30; animation: recBlink 1.1s steps(2) infinite; }
.sv-rec em { font-style: normal; color: rgba(255,255,255,.55); }
@keyframes recBlink { 0% { opacity: 1; } 100% { opacity: .15; } }
.sv-tech { overflow: visible; }
.sv-rl { z-index: 2; }
@media (prefers-reduced-motion: reduce) { .sv-tf-g, .sv-rec i { animation: none; } }

/* Technology v2: cuenta atrás de lanzamiento → destello → reel (sustituye al abanico) */
.sv-tf, .sv-tf-c { display: none !important; }
.sv-ld { position: absolute; left: 50%; top: 47%; width: var(--ldw, 360px); aspect-ratio: 1; transform: translate(-50%, -50%); border-radius: 50%; display: grid; place-items: center; z-index: 3; pointer-events: none; opacity: 0; will-change: transform, opacity; background: radial-gradient(circle, rgba(255,255,255,.07), rgba(255,255,255,0) 70%); }
.sv-ld svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.sv-ld .a { fill: none; stroke: rgba(255,255,255,.55); stroke-width: .8; }
.sv-ld .b { stroke: rgba(255,255,255,.35); stroke-width: .6; }
.sv-ld .c { stroke: rgba(255,255,255,.14); stroke-width: .5; }
.sv-ld-sw { position: absolute; inset: 3%; border-radius: 50%; background: conic-gradient(from 0deg, rgba(255,255,255,0) 0deg, rgba(255,255,255,0) 270deg, rgba(255,255,255,.34) 358deg, rgba(255,255,255,0) 360deg); will-change: transform; }
.sv-ld-n { position: relative; font-weight: 300; font-size: clamp(90px, 14vw, 200px); line-height: 1; letter-spacing: -.06em; color: #fff; text-shadow: 0 0 40px rgba(255,255,255,.35); will-change: transform; }
.sv-ld-rings i { position: absolute; left: 50%; top: 47%; width: 60%; aspect-ratio: 1; border-radius: 50%; border: 1.5px solid rgba(255,255,255,.8); opacity: 0; transform: translate(-50%, -50%) scale(.25); z-index: 1; pointer-events: none; }
.sv-ld-flash { position: absolute; inset: -10%; background: radial-gradient(circle at 50% 47%, #fff 0%, rgba(255,255,255,.55) 35%, rgba(255,255,255,0) 70%); opacity: 0; z-index: 4; pointer-events: none; mix-blend-mode: screen; }
.sv-ld-tick { position: absolute; left: 0; right: 0; bottom: 3%; overflow: hidden; white-space: nowrap; z-index: 2; pointer-events: none; mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
.sv-ld-tick span { display: inline-block; font: 500 11px/1 ui-monospace, Menlo, monospace; letter-spacing: .18em; color: rgba(255,255,255,.55); animation: ldTick 26s linear infinite; }
@keyframes ldTick { from { transform: translateX(0); } to { transform: translateX(-33.333%); } }
.sv-igtag { bottom: -4%; }
@media (prefers-reduced-motion: reduce) { .sv-ld-tick span { animation: none; } }

.sv-ld-rings { position: absolute; inset: 0; pointer-events: none; z-index: 1; }
.sv-tech .sv-rl { grid-area: 1 / 1; }

/* Fashion: sin cara trasera (no existe) y fotos más grandes; las de atrás desaparecen */
.sv-card .svb { display: none !important; }
.sv-card { will-change: opacity, filter; }

.sv-ld-tick { display: none !important; }

/* pie de la home: legible sobre cualquier foto (velo oscuro + texto blanco con sombra, sin mezcla invertida) */
.hud { mix-blend-mode: normal; padding: 22px 22px 18px; color: #fff; }
.hud::before { content: ""; position: absolute; left: 0; right: 0; bottom: 0; top: -26px; z-index: -1; pointer-events: none; background: linear-gradient(to top, rgba(0,0,0,.82) 0%, rgba(0,0,0,.55) 58%, rgba(0,0,0,0) 100%); -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px); -webkit-mask-image: linear-gradient(to top, #000 62%, transparent); mask-image: linear-gradient(to top, #000 62%, transparent); }
.hud .role, .hud #count, .hud .scroll { color: #fff; font-size: 12px; font-weight: 500; letter-spacing: .02em; text-shadow: 0 1px 12px rgba(0,0,0,.7); }
.hud .role { max-width: 78vw; }
/* móvil: el texto va ARRIBA y la escena debajo, con más aire entre capítulos y escena más alta (Music respira) */
@media (max-width: 759px) {
  .sv-ch { padding: 11vh 0; gap: 34px; }
  .sv-ch .sv-copy { order: -1; }
  .sv-ch .sv-scene { order: 0; aspect-ratio: 1 / 1.18; max-height: 78svh; min-height: 380px; }
}

/* footer: mayúsculas, misma tipografía que el menú */
.hud .role { font-size: 12px; font-weight: 400; letter-spacing: .03em; }

/* copyright: línea legal en la home + © en la esquina del visor */
.hud { flex-wrap: wrap; row-gap: 7px; }
.hud .copy { order: 3; flex-basis: 100%; font-size: 10px; letter-spacing: .04em; color: rgba(255,255,255,.62); text-shadow: 0 1px 10px rgba(0,0,0,.7); }
.mgv-c { position: absolute; right: 10px; bottom: 9px; z-index: 3; font-size: 10px; letter-spacing: .05em; color: rgba(255,255,255,.72); text-shadow: 0 1px 8px rgba(0,0,0,.8); pointer-events: none; }

.sv-spk .spb { background-size: cover; background-position: center; background-repeat: no-repeat; }

/* móvil: sentido invertido (las fotos entran por la izquierda al bajar) */
body.rev .track { flex-direction: row-reverse; will-change: transform; }

/* carpetas / proyectos que incluyen vídeo: insignia ▶ */
.wcard.hasfilm .wimg { position: relative; }
.wcard.hasfilm .pl { position: absolute; right: 10px; bottom: 10px; width: 30px; height: 30px; border-radius: 50%; background: rgba(0,0,0,.55); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); display: grid; place-items: center; font-style: normal; font-size: 11px; color: #fff; }

/* pasos: tantas columnas como pasos, y la línea termina en el último punto */
.sv-steps { grid-template-columns: repeat(var(--n, 4), 1fr); max-width: min(100%, calc(var(--n, 4) * 150px)); }
.sv-steps::before, .sv-steps::after { right: calc(100% / var(--n, 4) - 11px); }
.sv-steps li { padding-right: 10px; line-height: 1.25; }

/* textos de definición: cabecera y cada bloque */
.sv-sub2 { max-width: 56ch; color: rgba(255,255,255,.62); margin-top: -6px; }
.sv-desc { margin: 0; font-size: 15px; line-height: 1.55; color: rgba(255,255,255,.68); max-width: 48ch; }

/* pie de la home: discreto en todas las pantallas. Línea 1: roles (+ barra de progreso en ordenador) · Línea 2: © 2026 … · Madrid, Spain */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
.hud { padding: 14px 22px 13px; column-gap: 3px; row-gap: 4px; justify-content: flex-start; align-items: center; }
.hud::before { top: -10px; }
.hud .role { order: 1; flex: 1 1 calc(100% - 170px); margin-right: 6px; max-width: none; font-size: 9.5px; font-weight: 400; letter-spacing: .06em; line-height: 1.4; color: rgba(255,255,255,.88); }
.hud .prog { order: 2; flex: 0 0 140px; margin-left: auto; }
.hud .copy, .hud #count { flex: 0 0 auto; font-size: 8.5px; font-weight: 400; letter-spacing: .06em; line-height: 1.4; color: rgba(255,255,255,.55); }
.hud .copy { order: 3; }
.hud #count { order: 4; }
.hud #count:not(:empty)::before { content: "· "; }
@media (max-width: 759px) {
  .hud { padding: 12px 16px; }
  .hud .role { flex-basis: 100%; font-size: 9px; }
  .hud .copy, .hud #count { font-size: 8px; }
}

/* Services: frase de apoyo bajo el lema de cada sector */
.sv-lead { margin: 0; font-size: 16px; line-height: 1.5; color: rgba(255,255,255,.88); max-width: 48ch; }

/* Services: cierre "Cuéntame tu idea →" (antes "Empezamos": pequeño, gris y muy espaciado) */
.sv-eyebrow.sv-go { display: inline-flex; align-items: center; gap: 10px; align-self: flex-start; width: fit-content; font-size: clamp(20px, 2.4vw, 28px); font-weight: 400; letter-spacing: 0; line-height: 1.1; color: #fff; padding-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,.85); }
.sv-eyebrow.sv-go i { font-style: normal; }

/* Home sin saltos de scroll: las celdas se colocan solas (translateX), no dependen del ancho de la tira */
body.virt .track { width: 100% !important; transform: none !important; }
body.virt .cell { position: absolute !important; left: 0; top: 0; flex: none !important; width: calc(100vw / var(--cols)); }

/* v23: iconos de reproducción de diseño (SVG, sin glifos de texto) y botón de volver visible en móvil */
.mgv-state svg { width: 34px; height: 34px; margin-left: 4px; display: block; }
#mgv .mgv-state { padding-left: 0; font-size: 0; }
.mgv-cursor svg { width: 30px; height: 30px; display: block; }
.mgv-cursor { font-size: 0; }
.wcard .pl svg { width: 12px; height: 12px; margin-left: 1.5px; display: block; }
.wcard.hasfilm .pl, .wcard.reel .pl { width: 34px; height: 34px; background: rgba(8,8,8,.5); border: 1px solid rgba(255,255,255,.55); color: #fff; box-shadow: 0 4px 14px rgba(0,0,0,.35); }
.wcard.hasfilm .pl svg, .wcard.reel .pl svg { width: 13px; height: 13px; }
.mgv-x { display: inline-flex; align-items: center; gap: 7px; }
.mgv-x svg { width: 17px; height: 17px; flex: none; display: block; }
@media (max-width: 760px) {
  .mgv-x { top: calc(8px + env(safe-area-inset-top, 0px)); right: 14px; left: auto; font-size: 14px; font-weight: 500; letter-spacing: 0; padding: 8px 15px 8px 10px; color: #fff; background: rgba(8,8,8,.66); border: 1px solid rgba(255,255,255,.62); box-shadow: 0 8px 26px rgba(0,0,0,.5); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); }
  .mgv-x svg { width: 18px; height: 18px; }
  #w-tabs .tabback { font-size: 15px; font-weight: 500; padding: 11px 18px 11px 14px; border-color: rgba(255,255,255,.55); background: rgba(8,8,8,.55); }
}

/* THEME-LIGHT:BEGIN */
html[data-theme="light"] { --bg: #f4f3ef; --fg: #141414; --mute: rgba(20,20,20,.58); --line: rgba(20,20,20,.18); color-scheme: light; }
html[data-theme="dark"] { color-scheme: dark; }
html[data-theme="light"] .panel { background: #f4f3ef; }
html[data-theme="light"] .panel .x { color: #141414; }
html[data-theme="light"] .svc p { color: rgba(20,20,20,.78); }
html[data-theme="light"] .svc-mock { background: #f4f3ef; }
html[data-theme="light"] .about { color: rgba(20,20,20,.85); }
html[data-theme="light"] .links a:hover { border-color: #141414; }
html[data-theme="light"] .f:focus-within { border-color: #141414; }
html[data-theme="light"] .f input,html[data-theme="light"] .f textarea { color: #141414; }
html[data-theme="light"] .send { border: 1px solid #141414; }
html[data-theme="light"] .send::before { background: #141414; }
html[data-theme="light"] .send:hover { color: #f4f3ef; }
html[data-theme="light"] .status { color: rgba(20,20,20,.85); }
html[data-theme="light"] #detail { background: #f4f3ef; }
html[data-theme="light"] .d-info p { color: rgba(20,20,20,.75); }
html[data-theme="light"] .svc .see:hover { border-color: #141414; }
html[data-theme="light"] .svc .lead2 { color: #141414; }
html[data-theme="light"] .pick input:checked + span { background: #141414; color: #f4f3ef; border-color: #141414; }
html[data-theme="light"] .pick input:focus-visible + span { outline: 1px solid #141414; }
html[data-theme="light"] .d-act #d-req { background: #141414; color: #f4f3ef; }
html[data-theme="light"] .d-act #d-share:hover { color: #141414; }
html[data-theme="light"] .d-act #d-ig:hover { color: #141414; }
html[data-theme="light"] .tabs button:hover { border-color: #141414; }
html[data-theme="light"] .tabs button.on { background: #141414; color: #f4f3ef; border-color: #141414; }
html[data-theme="light"] .wimg { background: #f4f3ef; }
html[data-theme="light"] .back:hover { border-color: #141414; }
html[data-theme="light"] .gi { background: #f4f3ef; }
html[data-theme="light"] .exc:hover { border-color: #141414; background: rgba(20,20,20,.03); }
html[data-theme="light"] .exc p { color: rgba(20,20,20,.7); }
html[data-theme="light"] .svc-foot a:hover { border-color: #141414; }
html[data-theme="light"] .wimg img { background: #f4f3ef; }
html[data-theme="light"] .wimg { background: #f4f3ef; }
html[data-theme="light"] .wimg { background: #f4f3ef; }
html[data-theme="light"],html[data-theme="light"] body { background: #141414; }
html[data-theme="light"] body.in-music,html[data-theme="light"] body.in-music html { background: #f4f3ef; }
html[data-theme="light"]:has(body.in-music) { background: #f4f3ef; }
html[data-theme="light"] .tabback:hover { background: rgba(20,20,20,.08); }
html[data-theme="light"] .wimg { background: #f4f3ef; }
html[data-theme="light"] .svc .who { color: rgba(20,20,20,.78); }
html[data-theme="light"] .cta-btn { border: 1px solid #141414; }
html[data-theme="light"] .cta-btn::before { background: #141414; }
html[data-theme="light"] .cta-btn:hover { color: #f4f3ef; }
html[data-theme="light"] .sv-sub { color: rgba(20,20,20,.75); }
html[data-theme="light"] .sv-jump button { background: rgba(20,20,20,.03); }
html[data-theme="light"] .sv-jump button:hover,html[data-theme="light"] .sv-jump button:focus-visible { background: rgba(20,20,20,.09); border-color: rgba(20,20,20,.5); }
html[data-theme="light"] .sv-line { color: #141414; }
html[data-theme="light"] .sv-chips li { background: rgba(20,20,20,.04); }
html[data-theme="light"] .sv-who b { color: rgba(20,20,20,.85); }
html[data-theme="light"] .sv-steps::after { background: #141414; }
html[data-theme="light"] .sv-steps li { color: rgba(20,20,20,.8); }
html[data-theme="light"] .sv-steps li::before { background: #f4f3ef; border: 1px solid rgba(20,20,20,.7); }
html[data-theme="light"] .svf { background: linear-gradient(140deg, #141414 0%, #8b8b8f 18%, #f4f3ef 40%, #f4f3ef 55%, #6e6e72 78%, #d6d6d8 100%); }
html[data-theme="light"] .svf img { background: #f4f3ef; }
html[data-theme="light"] .svf i { background: linear-gradient(118deg, rgba(20,20,20,.26), rgba(20,20,20,.06) 24%, rgba(20,20,20,0) 44%); }
html[data-theme="light"] .svb { background: linear-gradient(160deg, #2a2a2d, #f4f3ef 55%, #f4f3ef); }
html[data-theme="light"] .svb span { color: rgba(20,20,20,.28); }
html[data-theme="light"] .sv-fr { border: 1px solid rgba(20,20,20,.18); background: #f4f3ef; }
html[data-theme="light"] .sv-fr figcaption { color: #141414; }
html[data-theme="light"] .sv-fr.on { border-color: rgba(20,20,20,.7); }
html[data-theme="light"] .sv-head { background: #141414; box-shadow: 0 0 14px 1px rgba(20,20,20,.7); }
html[data-theme="light"] .sv-card-f { border: 1px solid rgba(20,20,20,.16); background: linear-gradient(150deg, #f4f3ef, #f4f3ef 60%); }
html[data-theme="light"] .sv-card-f::before { background: linear-gradient(125deg, rgba(20,20,20,.1), rgba(20,20,20,0) 28%); }
html[data-theme="light"] .sv-bar b { background: rgba(20,20,20,.14); }
html[data-theme="light"] .sv-bar b.on { background: #141414; }
html[data-theme="light"] .sv-sum span { background: rgba(20,20,20,.1); }
html[data-theme="light"] .sv-opts button { background: rgba(20,20,20,.03); }
html[data-theme="light"] .sv-opts button i { border: 1px solid rgba(20,20,20,.5); }
html[data-theme="light"] .sv-opts button:hover { border-color: rgba(20,20,20,.6); }
html[data-theme="light"] .sv-opts button[aria-pressed="true"] { background: #141414; color: #f4f3ef; border-color: #141414; }
html[data-theme="light"] .sv-opts button[aria-pressed="true"] i { background: #f4f3ef; border-color: #f4f3ef; }
html[data-theme="light"] .sv-in input,html[data-theme="light"] .sv-in textarea { color: #141414; }
html[data-theme="light"] .sv-in input:focus,html[data-theme="light"] .sv-in textarea:focus { border-color: #141414; }
html[data-theme="light"] .sv-msg { color: rgba(20,20,20,.85); }
html[data-theme="light"] .sv-done p { color: rgba(20,20,20,.8); }
html[data-theme="light"] .sv-back:hover { color: #141414; }
html[data-theme="light"] .sv-alt button { color: #141414; }
html[data-theme="light"] .sv-float { background: rgba(244,243,239,.82); }
html[data-theme="light"] .wr-sw { background: rgba(20,20,20,.04); }
html[data-theme="light"] .wr-ar:hover,html[data-theme="light"] .wr-ar:focus-visible { background: #141414; color: #f4f3ef; }
html[data-theme="light"] .wr-cur i { background: rgba(20,20,20,.28); }
html[data-theme="light"] .wr-cur i.on { background: #141414; }
html[data-theme="light"] .wr-back { background: rgba(244,243,239,.4); }
html[data-theme="light"] .wr-back:hover { background: rgba(20,20,20,.1); }
html[data-theme="light"] .wrf { background: linear-gradient(140deg, #141414 0%, #8b8b8f 18%, #f4f3ef 40%, #f4f3ef 55%, #6e6e72 78%, #d6d6d8 100%); box-shadow: 0 0 0 1px rgba(20,20,20,.07), 0 28px 50px -20px rgba(0,0,0,.9); }
html[data-theme="light"] .wrf img { background: #f4f3ef; }
html[data-theme="light"] .wrf i { background: linear-gradient(118deg, rgba(20,20,20,.26), rgba(20,20,20,.07) 22%, rgba(20,20,20,0) 42%); }
html[data-theme="light"] .wrb { background: linear-gradient(160deg, #2a2a2d, #f4f3ef 55%, #f4f3ef); }
html[data-theme="light"] .wrb span { color: rgba(20,20,20,.28); }
html[data-theme="light"] .wr-glow { background: radial-gradient(55% 40% at 50% 70%, rgba(20,20,20,.12), transparent 70%); }
html[data-theme="light"] .wr-ui { color: #141414; }
html[data-theme="light"] #mgv { background: #f4f3ef; }
html[data-theme="light"] .spf,html[data-theme="light"] .spb { box-shadow: 0 0 0 1px rgba(20,20,20,.14), 0 18px 30px -16px rgba(0,0,0,.9); }
html[data-theme="light"] .sv-step h4 { color: rgba(20,20,20,.88); }
html[data-theme="light"] .sv-igtag { color: #141414; }
html[data-theme="light"] #w-tabs { background: linear-gradient(#f4f3ef 55%, rgba(244,243,239,0)); }
html[data-theme="light"] #w-tabs button { color: rgba(20,20,20,.34); }
html[data-theme="light"] #w-tabs button::after { background: #141414; }
html[data-theme="light"] #w-tabs button:hover { color: rgba(20,20,20,.8); }
html[data-theme="light"] #w-tabs button.on { color: #141414; }
html[data-theme="light"] #w-tabs .tabback { color: #141414; }
html[data-theme="light"] #w-grid .wcard:hover .wimg { box-shadow: 0 30px 60px -30px rgba(20,20,20,.18); }
html[data-theme="light"] .sv-own:focus-within { border-color: #141414; }
html[data-theme="light"] .sv-own input { color: #141414; }
html[data-theme="light"] .sv-own input::placeholder { color: rgba(20,20,20,.4); }
html[data-theme="light"] .sv-own button { border: 1px solid rgba(20,20,20,.5); }
html[data-theme="light"] .sv-own button:hover { background: #141414; color: #f4f3ef; }
html[data-theme="light"] .svb span { color: rgba(20,20,20,.4); }
html[data-theme="light"] #w-grid .wcard.more .wcap { color: #141414; }
html[data-theme="light"] #w-grid .wcard.more .wcap span:first-child::after { background: #141414; }
html[data-theme="light"] .cta-btn,html[data-theme="light"] .send,html[data-theme="light"] .sv-opts button,html[data-theme="light"] .sv-jump button,html[data-theme="light"] .sv-own button,html[data-theme="light"] .sv-float { color: #141414; background: linear-gradient(140deg, rgba(20,20,20,.20), rgba(20,20,20,.05) 46%, rgba(20,20,20,.12)); border: 1px solid rgba(20,20,20,.30); box-shadow: inset 0 1.5px 0 rgba(20,20,20,.65), inset 0 -12px 18px -14px rgba(20,20,20,.35), inset 1px 0 0 rgba(20,20,20,.12), inset -1px 0 0 rgba(20,20,20,.12), 0 10px 26px -12px rgba(0,0,0,.75); }
html[data-theme="light"] .cta-btn::before,html[data-theme="light"] .send::before { background: radial-gradient(120px 90px at var(--mx) var(--my), rgba(20,20,20,.65), rgba(20,20,20,.12) 45%, transparent 70%); }
html[data-theme="light"] .cta-btn::after,html[data-theme="light"] .send::after,html[data-theme="light"] .sv-opts button::after,html[data-theme="light"] .sv-jump button::after,html[data-theme="light"] .sv-own button::after,html[data-theme="light"] .sv-float::after { background: linear-gradient(108deg, transparent 38%, rgba(20,20,20,.55) 49%, rgba(20,20,20,.12) 53%, transparent 62%); }
html[data-theme="light"] .sv-opts button::before,html[data-theme="light"] .sv-jump button::before,html[data-theme="light"] .sv-own button::before,html[data-theme="light"] .sv-float::before { background: radial-gradient(110px 80px at var(--mx) var(--my), rgba(20,20,20,.55), rgba(20,20,20,.1) 45%, transparent 70%); }
html[data-theme="light"] .cta-btn:hover,html[data-theme="light"] .send:hover,html[data-theme="light"] .sv-opts button:hover,html[data-theme="light"] .sv-jump button:hover,html[data-theme="light"] .sv-own button:hover,html[data-theme="light"] .sv-float:hover,html[data-theme="light"] .cta-btn:focus-visible,html[data-theme="light"] .send:focus-visible,html[data-theme="light"] .sv-opts button:focus-visible,html[data-theme="light"] .sv-jump button:focus-visible { color: #141414; background: linear-gradient(140deg, rgba(20,20,20,.34), rgba(20,20,20,.10) 46%, rgba(20,20,20,.22)); border-color: rgba(20,20,20,.6); box-shadow: inset 0 2px 0 rgba(20,20,20,.85), inset 0 -14px 22px -14px rgba(20,20,20,.55), inset 1px 0 0 rgba(20,20,20,.2), inset -1px 0 0 rgba(20,20,20,.2), 0 16px 34px -12px rgba(0,0,0,.8), 0 0 28px -4px rgba(20,20,20,.28); }
html[data-theme="light"] .sv-opts button[aria-pressed="true"] { background: linear-gradient(140deg, rgba(20,20,20,.95), rgba(20,20,20,.72)); color: #f4f3ef; border-color: #141414; }
html[data-theme="light"] .sv-opts button[aria-pressed="true"] i { background: #f4f3ef; border-color: #f4f3ef; }
html[data-theme="light"] .sv-oi { border: 1px solid rgba(20,20,20,.55); background: linear-gradient(140deg, rgba(20,20,20,.22), rgba(20,20,20,.06) 50%, rgba(20,20,20,.14)); box-shadow: inset 0 1.5px 0 rgba(20,20,20,.7), 0 10px 26px -12px rgba(0,0,0,.75); }
html[data-theme="light"] .sv-oi input { color: #141414; }
html[data-theme="light"] .sv-oi input::placeholder { color: rgba(20,20,20,.5); }
html[data-theme="light"] .sv-opts .sv-oi .sv-og { border: 1px solid rgba(20,20,20,.55); background: rgba(20,20,20,.1); }
html[data-theme="light"] .sv-opts .sv-oi .sv-og:hover { background: rgba(20,20,20,.3); }
html[data-theme="light"] .sv-fr video { background: #f4f3ef; }
html[data-theme="light"] .lab-it { background: rgba(20,20,20,.03); }
html[data-theme="light"] .lab-it p { color: rgba(20,20,20,.7); }
html[data-theme="light"] .lab-it.soon h4 { color: rgba(20,20,20,.75); }
html[data-theme="light"] .lab-soon h3 { color: rgba(20,20,20,.88); }
html[data-theme="light"] #mgv { background: #f4f3ef; }
html[data-theme="light"] .sv-spk .spf,html[data-theme="light"] .sv-spk .spb { box-shadow: 0 0 0 1px rgba(20,20,20,.14); }
html[data-theme="light"] .sv-spk .spb { background: linear-gradient(160deg, #2a2a30, #f4f3ef); }
html[data-theme="light"] .sv-dr-p { background: #f4f3ef; box-shadow: 0 0 0 1px rgba(20,20,20,.16); }
html[data-theme="light"] .sv-dr-p i { color: rgba(20,20,20,.7); }
html[data-theme="light"] .sv-dr-hero { background: #f4f3ef; box-shadow: 0 0 0 1px rgba(20,20,20,.28), 0 40px 90px -30px rgba(0,0,0,.95), 0 0 70px -10px rgba(20,20,20,.18); }
html[data-theme="light"] .sv-dr-tc { color: rgba(20,20,20,.85); }
html[data-theme="light"] .sv-tf-c { background: #f4f3ef; box-shadow: 0 0 0 1px rgba(20,20,20,.2), 0 40px 70px -34px rgba(0,0,0,.95); }
html[data-theme="light"] .sv-tf-g { color: #141414; border: 1.5px dashed rgba(20,20,20,.55); background: rgba(20,20,20,.04); }
html[data-theme="light"] .sv-tf-g:hover { background: rgba(20,20,20,.14); }
html[data-theme="light"] .sv-rec { color: rgba(20,20,20,.85); }
html[data-theme="light"] .sv-rec em { color: rgba(20,20,20,.55); }
html[data-theme="light"] .sv-ld { background: radial-gradient(circle, rgba(20,20,20,.07), rgba(20,20,20,0) 70%); }
html[data-theme="light"] .sv-ld .a { stroke: rgba(20,20,20,.55); }
html[data-theme="light"] .sv-ld .b { stroke: rgba(20,20,20,.35); }
html[data-theme="light"] .sv-ld .c { stroke: rgba(20,20,20,.14); }
html[data-theme="light"] .sv-ld-sw { background: conic-gradient(from 0deg, rgba(20,20,20,0) 0deg, rgba(20,20,20,0) 270deg, rgba(20,20,20,.34) 358deg, rgba(20,20,20,0) 360deg); }
html[data-theme="light"] .sv-ld-n { color: #141414; }
html[data-theme="light"] .sv-ld-rings i { border: 1.5px solid rgba(20,20,20,.8); }
html[data-theme="light"] .sv-ld-flash { background: radial-gradient(circle at 50% 47%, #141414 0%, rgba(20,20,20,.55) 35%, rgba(20,20,20,0) 70%); }
html[data-theme="light"] .sv-ld-tick span { color: rgba(20,20,20,.55); }
html[data-theme="light"] .sv-sub2 { color: rgba(20,20,20,.62); }
html[data-theme="light"] .sv-desc { color: rgba(20,20,20,.68); }
html[data-theme="light"] .sv-lead { color: rgba(20,20,20,.88); }
html[data-theme="light"] .sv-eyebrow.sv-go { color: #141414; border-bottom: 1px solid rgba(20,20,20,.85); }
@media (max-width: 760px) {
  html[data-theme="light"] #w-tabs .tabback { border-color: rgba(20,20,20,.55); background: rgba(244,243,239,.55); }
}
html[data-theme="light"] .theme { color: #141414; background: rgba(244,243,239,.55); box-shadow: inset 0 1.5px 0 rgba(20,20,20,.4); }
html[data-theme="light"] .theme:hover { background: rgba(20,20,20,.18); }
/* THEME-LIGHT:END */

/* ---------- botón de tema (junto al idioma) ---------- */
.theme { position: fixed; z-index: 41; top: 14px; right: 72px; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 99px; color: #fff; background: rgba(0,0,0,.55); -webkit-backdrop-filter: blur(16px) saturate(1.7); backdrop-filter: blur(16px) saturate(1.7); box-shadow: inset 0 1.5px 0 rgba(255,255,255,.4); transition: background .3s; }
.theme:hover { background: rgba(255,255,255,.18); }
.theme .i-sun { display: block; } .theme .i-moon { display: none; }
html[data-theme="light"] .theme .i-sun { display: none; } html[data-theme="light"] .theme .i-moon { display: block; }
body.lock .theme, html.mgv-on .theme { display: none; }
@media (max-width: 760px) { .theme { top: 12px; right: 62px; width: 32px; height: 32px; } }
/* claro: las pastillas de cristal sobre las fotos pasan a cristal blanco */
html[data-theme="light"] .nav, html[data-theme="light"] .lang, html[data-theme="light"] .theme { color: #141414; background: rgba(255,255,255,.62); box-shadow: inset 0 1.5px 0 rgba(255,255,255,.9), 0 1px 0 rgba(0,0,0,.04); }
html[data-theme="light"] .lang:hover, html[data-theme="light"] .theme:hover { background: rgba(255,255,255,.9); }
html[data-theme="light"] .wimg { background: #e9e8e3; }
html[data-theme="light"] .panel .x { mix-blend-mode: normal; color: #141414; }
/* claro: visor de proyectos (revista) */
html[data-theme="light"] #mgv { background: #ecebe6; }
html[data-theme="light"] .mgv-light { background: radial-gradient(60% 55% at 50% 46%, rgba(255,255,255,.75), transparent 72%), radial-gradient(100% 50% at 50% 112%, rgba(255,255,255,.5), transparent 60%); }
html[data-theme="light"] .mgv-x, html[data-theme="light"] .mgv-b { color: #141414; background: rgba(255,255,255,.62); border-color: rgba(20,20,20,.22); box-shadow: 0 1px 0 rgba(0,0,0,.04); }
html[data-theme="light"] .mgv-x:hover, html[data-theme="light"] .mgv-b:hover, html[data-theme="light"] .mgv-b:focus-visible { background: #141414; color: #f4f3ef; }
html[data-theme="light"] .mgv-hint { color: rgba(20,20,20,.55); }
html[data-theme="light"] .mgv-prog { background: rgba(20,20,20,.1); }
html[data-theme="light"] .mgv-prog b { background: #141414; }
html[data-theme="light"] .mgv-sl img, html[data-theme="light"] .mgv-sl video { background: #e2e1dc; box-shadow: 0 30px 80px -34px rgba(0,0,0,.45); }
html[data-theme="light"] .mgv-sl.cover .mast { color: rgba(20,20,20,.7); }
html[data-theme="light"] .mgv-sl.cover small { color: rgba(20,20,20,.55); }
html[data-theme="light"] .mgv-bg i { filter: blur(80px) saturate(1.05) brightness(1.6) contrast(.8); }
html[data-theme="light"] .mgv-bg::after { background: radial-gradient(90% 80% at 50% 45%, transparent 35%, rgba(244,243,239,.7)); }
html[data-theme="light"] .mgv-t { color: #141414; border-color: rgba(20,20,20,.22); background: rgba(255,255,255,.5); }
/* pie de la home más discreto: sin desenfoque ni banda gruesa, para no tapar la parte baja de las fotos */
.hud::before { top: -6px; -webkit-backdrop-filter: none; backdrop-filter: none; -webkit-mask-image: none; mask-image: none; background: linear-gradient(to top, rgba(0,0,0,.5), rgba(0,0,0,0)); }
html[data-theme="light"].mgv-on .hud::before { background: linear-gradient(to top, rgba(244,243,239,.8), rgba(244,243,239,0)); }
html[data-theme="light"].mgv-on .hud, html[data-theme="light"].mgv-on .hud .role, html[data-theme="light"].mgv-on .hud #count, html[data-theme="light"].mgv-on .hud .scroll { color: #141414; text-shadow: none; }
html[data-theme="light"].mgv-on .brand, html[data-theme="light"].mgv-on .avail { color: #141414; mix-blend-mode: normal; }

/* ---------- Practice (antigua Services): descripción del estudio, desplegables por servicio y preguntas; usan las variables del tema (oscuro y claro) ---------- */
.sv-hero { justify-content: flex-start; padding-top: 4vh; }
.sv-intro { display: flex; flex-direction: column; gap: 14px; max-width: 60ch; }
.sv-intro .sv-sub { max-width: none; color: var(--mute); font-size: clamp(15px, 1.35vw, 18px); line-height: 1.5; margin: 0; }
.sv-intro .sv-sub.first { color: var(--fg); font-size: clamp(20px, 2.3vw, 32px); line-height: 1.18; letter-spacing: -.04em; }
.sv-sig { font-size: 13px; letter-spacing: .02em; color: var(--mute); margin: 6px 0 0; }
.sv-more { width: 100%; max-width: 52ch; border-top: 1px solid var(--line); margin-top: 6px; }
.sv-more summary, .sv-faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 14px 0; font-size: 15px; letter-spacing: -.01em; color: var(--fg); }
.sv-more summary::-webkit-details-marker, .sv-faq summary::-webkit-details-marker { display: none; }
.sv-more summary::after, .sv-faq summary::after { content: "+"; font-size: 18px; color: var(--mute); transition: transform .4s var(--ease); }
.sv-more[open] summary::after, .sv-faq details[open] summary::after { transform: rotate(45deg); }
.sv-mi { display: grid; gap: 16px; padding: 4px 0 18px; }
.sv-mi h4 { font-weight: 400; font-size: 17px; letter-spacing: -.03em; margin: 0 0 4px; color: var(--fg); }
.sv-mi p { font-size: 14px; line-height: 1.5; color: var(--mute); margin: 0; }
.sv-faq { max-width: 900px; margin: 12vh 0 8vh; }
.sv-faq .sv-eyebrow { margin: 0 0 14px; }
.sv-faq details { border-top: 1px solid var(--line); }
.sv-faq details:last-of-type { border-bottom: 1px solid var(--line); }
.sv-faq summary { font-size: clamp(17px, 1.7vw, 22px); letter-spacing: -.03em; }
.sv-faq details p { font-size: 14px; line-height: 1.55; color: var(--mute); margin: 0 0 18px; max-width: 62ch; }
.lab-intro { font-size: clamp(18px, 2.2vw, 30px); line-height: 1.22; letter-spacing: -.04em; max-width: 34ch; margin: 0; color: var(--fg); }
.lab-soon { margin-top: 7vh; }
.lab-main { display: grid; gap: clamp(18px, 3vh, 34px); min-width: 0; }
.lab-intro { margin: 0 0 6vh; }
@media (min-width: 900px) {
  .lab-soon { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); column-gap: 6vw; align-items: end; }
  .lab-intro { margin: 0; max-width: 24ch; align-self: end; }
}

/* ordenador: la escena de Tecnología tiene la altura del texto y el teléfono queda centrado con él */
@media (min-width: 900px) {
  .sv-ch:has(.sv-scene[data-scene="tech"]) { align-items: stretch; }
  .sv-ch:has(.sv-scene[data-scene="tech"]) .sv-scene { aspect-ratio: auto; max-height: none; min-height: 560px; }
  .sv-scene[data-scene="tech"] .sv-rl { height: min(82%, 84vh); }
}

/* Practice: foto en placa a la izquierda (entera, sin recortar) y la descripción a la derecha, como en el borrador */
.sv-aboutsec { padding: 2vh 0 12vh; }
.sv-about { display: grid; grid-template-columns: 1fr; gap: 28px; align-items: end; }
.sv-plate { margin: 0; max-width: 420px; }
.sv-plate img { display: block; width: 100%; height: auto; }
.sv-plate figcaption { font-size: 11px; letter-spacing: .04em; color: var(--mute); margin-top: 10px; }
.sv-intro { max-width: 62ch; }
@media (min-width: 860px) {
  .sv-about { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); column-gap: 7vw; }
  .sv-plate { max-width: none; }
}

/* Practice: descripción en una sola columna (sin foto) */
.sv-about { grid-template-columns: 1fr !important; }
.sv-aboutsec { padding: 4vh 0 12vh; }
/* imagen junto a la parte de música */
.sv-mfig { margin: 6px 0 4px; width: min(100%, 300px); }
.sv-mfig img { display: block; width: 100%; height: auto; border-radius: 14px; }
/* Tecnología por debajo de 900px: el teléfono es proporcional al ancho (no a la altura de la ventana); escena centrada con margen */
@media (max-width: 899px) {
  .sv-scene[data-scene="tech"] { width: min(100%, 560px); margin-inline: auto; aspect-ratio: 1 / 1.18; max-height: none; min-height: 0; }
}

/* Practice: texto grande justo después del título y el menú de servicios al final de la presentación */
.sv-hero { min-height: 0; padding-bottom: 10vh; gap: 28px; }
.sv-intro { max-width: 60ch; display: flex; flex-direction: column; gap: 0; margin-top: 2vh; }
.sv-intro .sv-sub { font-size: clamp(15px, 1.35vw, 18px); line-height: 1.5; letter-spacing: -.015em; color: var(--mute); margin: 0 0 .9em; max-width: none; }
.sv-intro .sv-sub.first { font-size: clamp(20px, 2.3vw, 32px); line-height: 1.18; letter-spacing: -.04em; color: var(--fg); margin-bottom: 1em; }
.sv-hero .sv-jump { margin-top: 6vh; }

/* Practice: menú de servicios en cuadrados (icono + nombre debajo), a la derecha del texto */
.sv-top { display: grid; grid-template-columns: 1fr; gap: 36px; align-items: center; }
.sv-hero .sv-jump.sv-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; max-width: 300px; width: 100%; margin: 0; }
.sv-tiles button { aspect-ratio: 1; min-height: 0; padding: 12px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; text-align: center; }
.sv-tiles .ic { flex: none; opacity: .9; }
.sv-tiles b { font-weight: 400; font-size: 13px; line-height: 1.2; letter-spacing: -.01em; }
@media (min-width: 900px) {
  .sv-top { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); column-gap: 6vw; }
  .sv-hero .sv-jump.sv-tiles { justify-self: end; max-width: 380px; }
}

/* preguntas frecuentes: un solo desplegable cerrado, debajo del formulario */
details.sv-faq { max-width: 900px; margin: 4vh 0 10vh; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
details.sv-faq > summary { font-size: clamp(18px, 1.9vw, 24px); padding: 18px 0; }
.sv-faq-in { padding: 0 0 8px; }
.sv-faq-in details:first-child { border-top: 1px solid var(--line); }
.sv-faq-in details:last-of-type { border-bottom: 0; }

/* preguntas frecuentes: a la derecha, con un signo de interrogación como icono */
details.sv-faq { max-width: 440px; margin-left: auto; margin-right: 0; }
.sv-qt { display: inline-flex; align-items: center; gap: 14px; }
.sv-qt .qi { flex: none; width: 30px; height: 30px; border: 1px solid var(--fg); border-radius: 50%; display: inline-grid; place-items: center; font-style: normal; font-size: 16px; line-height: 1; color: var(--fg); opacity: .9; }

/* resaltes en los textos de Practice: negrita y cursiva (el color sube a blanco/negro del tema) */
.sv-intro em, .sv-lead em, .sv-desc em, .sv-mi em { font-style: italic; color: inherit; font-weight: inherit; }

/* Practice: más sangría y margen a los lados */
.panel-in.sv { padding-left: clamp(26px, 6vw, 120px); padding-right: clamp(26px, 6vw, 120px); }

/* "AWRA Studios" y pie de la home: misma letra que el resto del texto (trazo cerrado como los párrafos, sin el espaciado ancho) */
.brand { font-size: 14px; letter-spacing: -.015em; font-weight: 400; mix-blend-mode: normal; color: #fff; text-shadow: 0 1px 14px rgba(0,0,0,.55); }
.brand::before { content: ""; position: fixed; left: 0; right: 0; top: 0; height: 84px; z-index: -1; pointer-events: none; background: linear-gradient(to bottom, rgba(0,0,0,.3), rgba(0,0,0,0)); }
html.mgv-on .brand::before { display: none; }
.hud .role { font-size: 13px; font-weight: 400; letter-spacing: -.01em; }
.hud .copy { font-size: 11px; letter-spacing: 0; }

/* ====== Pie de la home: todo el texto a la derecha con el MISMO tamaño y trazo, y la barra de scroll en el centro ====== */
.hud #count { display: none !important; }
.hud { display: grid; grid-template-columns: minmax(0, 1fr) minmax(120px, 220px) minmax(0, 1fr); align-items: end; column-gap: 24px; row-gap: 3px; padding: 22px 28px 18px; flex-wrap: nowrap; }
.hud .prog { grid-column: 2; grid-row: 1 / span 2; align-self: center; justify-self: stretch; order: 0; flex: none; margin: 0; max-width: none; display: block; }
.hud .role, .hud .copy { justify-self: end; text-align: right; order: 0; flex: none; margin: 0; max-width: none; font-size: 12px; font-weight: 400; letter-spacing: -.005em; line-height: 1.45; color: rgba(255,255,255,.9); text-shadow: 0 1px 12px rgba(0,0,0,.7); }
.hud .role { grid-column: 1; grid-row: 1 / span 2; justify-self: start; text-align: left; align-self: end; }
.hud .copy { grid-column: 3; grid-row: 1 / span 2; align-self: end; }
@media (max-width: 699px) {
  .hud { grid-template-columns: 1fr; padding: 14px 20px 14px; row-gap: 4px; justify-items: center; text-align: center; }
  .hud .prog { grid-column: 1; grid-row: 1; width: min(60%, 220px); justify-self: center; display: block !important; }
  .hud .role, .hud .copy { grid-column: 1; justify-self: center; text-align: center; font-size: 10.5px; text-wrap: balance; }
  .hud .role { grid-row: 2; }
  .hud .copy { grid-row: 3; }
}
html[data-theme="light"].mgv-on .hud .copy { color: #141414; text-shadow: none; }
/* etiquetas pequeñas de Practice: mismo trazo que el resto del texto (sin espaciado ancho) */
.sv-eyebrow, .sv-cue, .sv-n { letter-spacing: .01em; }

/* etiquetas pequeñas de la interfaz: mismo trazo que el texto (sin espaciado ancho) */
.sv-eyebrow, .sv-cue, .sv-n, .lab-n, .lab-cd small, .sv-igtag, .mgv-hint, .mgv-n, .lang, .pick legend, .svc h4, .exh { letter-spacing: .02em; }

/* ====== Modo día: botones de cristal CLARO (blanco translúcido, sin sombra negra) ====== */
html[data-theme="light"] .cta-btn,html[data-theme="light"] .send,html[data-theme="light"] .sv-opts button,html[data-theme="light"] .sv-jump button,html[data-theme="light"] .sv-own button,html[data-theme="light"] .sv-float { color: #141414; background: linear-gradient(140deg, rgba(255,255,255,.9), rgba(255,255,255,.48) 46%, rgba(255,255,255,.74)); -webkit-backdrop-filter: blur(14px) saturate(1.5); backdrop-filter: blur(14px) saturate(1.5); border: 1px solid rgba(255,255,255,.95); box-shadow: inset 0 1.5px 0 #fff, inset 0 -10px 16px -12px rgba(20,20,20,.08), 0 0 0 1px rgba(20,20,20,.06), 0 10px 24px -16px rgba(20,20,20,.22); }
html[data-theme="light"] .cta-btn:hover,html[data-theme="light"] .send:hover,html[data-theme="light"] .sv-opts button:hover,html[data-theme="light"] .sv-jump button:hover,html[data-theme="light"] .sv-own button:hover,html[data-theme="light"] .sv-float:hover,html[data-theme="light"] .cta-btn:focus-visible,html[data-theme="light"] .send:focus-visible,html[data-theme="light"] .sv-opts button:focus-visible,html[data-theme="light"] .sv-jump button:focus-visible { color: #141414; background: linear-gradient(140deg, #fff, rgba(255,255,255,.72) 50%, rgba(255,255,255,.92)); border-color: #fff; box-shadow: inset 0 2px 0 #fff, inset 0 -12px 18px -14px rgba(20,20,20,.1), 0 0 0 1px rgba(20,20,20,.08), 0 14px 30px -16px rgba(20,20,20,.28), 0 0 26px -6px rgba(255,255,255,.9); }
html[data-theme="light"] .cta-btn::before,html[data-theme="light"] .send::before { background: radial-gradient(120px 90px at var(--mx) var(--my), rgba(255,255,255,.95), rgba(255,255,255,.25) 45%, transparent 70%); }
html[data-theme="light"] .sv-opts button::before,html[data-theme="light"] .sv-jump button::before,html[data-theme="light"] .sv-own button::before,html[data-theme="light"] .sv-float::before { background: radial-gradient(110px 80px at var(--mx) var(--my), rgba(255,255,255,.95), rgba(255,255,255,.25) 45%, transparent 70%); }
html[data-theme="light"] .cta-btn::after,html[data-theme="light"] .send::after,html[data-theme="light"] .sv-opts button::after,html[data-theme="light"] .sv-jump button::after,html[data-theme="light"] .sv-own button::after,html[data-theme="light"] .sv-float::after { background: linear-gradient(108deg, transparent 38%, rgba(255,255,255,.95) 49%, rgba(255,255,255,.3) 53%, transparent 62%); }
html[data-theme="light"] .sv-oi { border: 1px solid rgba(255,255,255,.95); background: linear-gradient(140deg, rgba(255,255,255,.9), rgba(255,255,255,.5) 50%, rgba(255,255,255,.76)); box-shadow: inset 0 1.5px 0 #fff, 0 0 0 1px rgba(20,20,20,.06), 0 10px 24px -16px rgba(20,20,20,.22); }

/* Sin marco negro: en modo día el fondo base (html/body) es claro, igual que los paneles; y sin contorno de enfoque en los contenedores a pantalla completa */
html[data-theme="light"], html[data-theme="light"] body { background: #f4f3ef; }
html[data-theme="light"] body.in-music, html[data-theme="light"] body.in-music html, html[data-theme="light"]:has(body.in-music) { background: #f4f3ef; }
.panel, .panel-in, #detail, #mgv, #split, main, section { outline: none; }
.panel:focus, .panel:focus-visible, #detail:focus, #detail:focus-visible, #mgv:focus, #mgv:focus-visible, #split:focus, main:focus, body:focus, html:focus { outline: none !important; box-shadow: none; }

/* Preguntas frecuentes: mismo tamaño y trazo que los botones del formulario (14px / -.02em), pero sin botón, más compactas */
details.sv-faq { max-width: 380px; margin: 3vh 0 8vh; }
details.sv-faq > summary, .sv-faq summary { font-size: 14px; letter-spacing: -.02em; line-height: 1.3; padding: 11px 0; gap: 14px; }
details.sv-faq > summary { padding: 12px 0; }
.sv-qt { gap: 10px; }
.sv-qt .qi { width: 22px; height: 22px; font-size: 12px; }
.sv-faq summary::after { font-size: 16px; }
.sv-faq details p, .sv-faq-in details p { font-size: 13px; line-height: 1.5; letter-spacing: -.01em; margin: 0 0 14px; }
@media (min-width: 900px) { details.sv-faq { margin-left: auto; } }
/* FAQ siempre a la derecha, en cualquier ancho */
details.sv-faq { margin-left: auto; margin-right: 0; width: 100%; max-width: 380px; }

/* FAQ: solo el icono "?" a la derecha; al pulsarlo se despliegan las preguntas */
details.sv-faq { border-top: 0; border-bottom: 0; }
details.sv-faq > summary { justify-content: flex-end; padding: 0; }
details.sv-faq > summary::after { display: none; }
details.sv-faq > summary .qi { width: 30px; height: 30px; font-size: 15px; transition: background .4s var(--ease), color .4s var(--ease); }
details.sv-faq > summary:hover .qi, details.sv-faq[open] > summary .qi { background: var(--fg); color: var(--bg); }
.sv-faq-in { padding-top: 12px; }

/* título que aparece al abrir el "?" */
.sv-faq-t { margin: 0 0 12px; font-size: 14px; letter-spacing: -.02em; line-height: 1.3; color: var(--fg); text-align: left; }

/* sin menú de cuadrados: la cabecera de Practice vuelve a una sola columna */
.sv-top { display: block; }
/* Dirección: la tarjeta central siempre tiene foto detrás (si el vídeo no arranca, no queda en blanco) */
.sv-dr-hero { background-size: cover; background-position: center; background-color: #1a1a1c; }
.sv-dr-hero video { transition: opacity .4s; }
html[data-theme="light"] .sv-dr-hero { background-color: #1a1a1c; background-size: cover; background-position: center; }

/* Dirección: el vídeo de la tarjeta central se pinta en su propia capa (Safari no pinta vídeo dentro de contenedores 3D con bordes redondeados y recorte) */
.sv-dr-hero { -webkit-mask-image: -webkit-radial-gradient(white, black); transform-style: flat; }
.sv-dr-hero video { transform: translateZ(0); -webkit-transform: translateZ(0); position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 1 !important; background: #0b0b0d; }
.sv-dr-tc { position: absolute; z-index: 2; }

/* logo (A gótica) arriba a la izquierda en lugar del texto "AWRA Studios" */
.brand { display: block; line-height: 0; top: 14px; left: 20px; text-shadow: none; }
.brand svg { display: block; width: 34px; height: 34px; filter: drop-shadow(0 1px 10px rgba(0,0,0,.45)); }
.brand::before { height: 80px; }

/* contador de la tarjeta de vídeo: 4 cifras (MM:SS) y letra más pequeña */
.sv-dr-tc { font-size: 9px; letter-spacing: .06em; }

/* ordenador: todas las animaciones tienen la altura del bloque de texto (no quedan pequeñas a su lado) */
@media (min-width: 900px) {
  .sv-ch { align-items: stretch; }
  .sv-ch .sv-scene { aspect-ratio: auto; max-height: none; min-height: 560px; }
  .sv-scene[data-scene="tech"] .sv-rl { height: min(86%, 90vh); }
}

@media (min-width: 900px) { .sv-ch { grid-template-columns: 1.2fr 1fr; } .sv-ch.alt { grid-template-columns: 1fr 1.2fr; } }

/* ====== Practice como diapositivas (una sección por pantalla; la última es el formulario) ====== */
#panel-services { scroll-snap-type: y mandatory; }
#panel-services .panel-in.sv { padding-top: 0; padding-bottom: 0; }
.sv-slide { min-height: 100svh; box-sizing: border-box; scroll-snap-align: start; scroll-snap-stop: always; padding-top: 88px; padding-bottom: 56px; border-top: 0; }
.sv-hero.sv-slide { justify-content: center; gap: 28px; padding-bottom: 72px; }
.sv-ch.sv-slide { align-content: center; align-items: center; }
.sv-funnel.sv-slide { display: flex; flex-direction: column; justify-content: center; }
@media (min-width: 900px) { .sv-ch.sv-slide { align-items: stretch; } }
.sv-dots { position: fixed; right: 16px; top: 50%; transform: translateY(-50%); z-index: 6; display: flex; flex-direction: column; gap: 4px; }
.sv-dots button { width: 22px; height: 18px; padding: 0; background: none; border: 0; cursor: pointer; display: grid; place-items: center; }
.sv-dots button::before { content: ""; width: 7px; height: 7px; border-radius: 50%; border: 1px solid var(--fg); background: transparent; transition: background .4s var(--ease), transform .4s var(--ease); }
.sv-dots button.on::before { background: var(--fg); transform: scale(1.25); }
@media (max-width: 899px) { #panel-services { scroll-snap-type: y proximity; } .sv-slide { scroll-snap-stop: normal; } .sv-dots { right: 6px; } }

/* ====== WORK: sin scroll vertical. Dos filas × cuatro columnas que se deslizan hacia la izquierda; Film = una fila de reels grandes ====== */
#panel-work:has(#w-list:not([hidden])) { overflow: hidden; }
#panel-work:has(#w-list:not([hidden])) .panel-in { max-width: none; width: 100%; height: 100svh; box-sizing: border-box; padding: 62px clamp(16px, 2.4vw, 40px) 22px; display: flex; flex-direction: column; margin: 0; }
#panel-work #w-list { flex: 1; min-height: 0; display: flex; flex-direction: column; }
#panel-work #w-list > header.p-head { display: none; }
#w-tabs { flex: none; position: static; margin: 0 0 clamp(10px, 2vh, 22px); padding: 0; background: none !important; }
#w-grid { --gap: 14px; flex: 1; min-height: 0; display: grid; grid-auto-flow: column; grid-template-columns: none; grid-template-rows: repeat(2, minmax(0, 1fr)); grid-auto-columns: calc((100% - 3 * var(--gap)) / 4); gap: var(--gap); align-items: stretch; align-content: stretch; overflow-x: auto; overflow-y: hidden; padding: 0 0 4px; scroll-snap-type: x proximity; overscroll-behavior-x: contain; scrollbar-width: none; touch-action: pan-x; }
#w-grid::-webkit-scrollbar { display: none; }
#w-grid .wcard { display: flex; flex-direction: column; min-height: 0; min-width: 0; scroll-snap-align: start; }
#w-grid .wcard .wimg { flex: 1; min-height: 0; aspect-ratio: auto; height: auto; }
#w-grid .wcard.fl, #w-grid .wcard.fr, #w-grid .wcard.fc { transform: translateY(22px); }
#w-grid .wcard.fl .wimg, #w-grid .wcard.fr .wimg, #w-grid .wcard.fc .wimg { clip-path: none; }
#w-grid .wcard.in { transform: none; }
/* Film: una sola fila de vídeos grandes (9:16) */
#w-grid:has(.reel) { grid-template-columns: none; grid-template-rows: minmax(0, 1fr); grid-auto-columns: calc((100svh - 200px) * .5625); gap: 18px; }
#w-grid:has(.reel) .wcard.reel .wimg { aspect-ratio: auto; }
@media (max-width: 1100px) { #w-grid { grid-auto-columns: calc((100% - 2 * var(--gap)) / 3); } #w-grid:has(.reel) { grid-auto-columns: calc((100svh - 200px) * .5625); } }
@media (max-width: 700px) { #w-grid:has(.reel) { grid-template-columns: none; } #w-grid { --gap: 10px; grid-auto-columns: calc((100% - var(--gap)) / 2); } #w-grid:has(.reel) { grid-auto-columns: calc((100svh - 190px) * .5625); gap: 12px; } #w-tabs { margin-bottom: 10px; } }

/* portada del visor: el logo (A gótica) en lugar del texto "AWRA Studios ®" */
.mgv-sl.cover .mast { display: block; line-height: 0; padding: 0; margin: 0 auto 2.4vh; letter-spacing: 0; color: rgba(255,255,255,.9); }
.mgv-sl.cover .mast svg { display: block; width: clamp(34px, 3.4vw, 54px); height: auto; margin: 0 auto; }
html[data-theme="light"] .mgv-sl.cover .mast { color: rgba(20,20,20,.9); }
.mgv-sl.cover small { letter-spacing: .04em; font-size: 13px; }

/* ====== WORK: proyectos de uno en uno, apilados como la vista previa de Finder (workstack.js) ====== */
#w-grid.stk { display: flex; flex-direction: column; overflow: hidden; padding: 0; gap: 0; scroll-snap-type: none; touch-action: none; position: relative; grid-auto-columns: auto; }
.stk-stage { position: relative; flex: 1; min-height: 0; margin-top: clamp(6px, 1.4vh, 16px); perspective: 1200px; perspective-origin: 50% 42%; }
.stk-c { position: absolute; left: 50%; bottom: 0; height: 94%; max-width: 62%; aspect-ratio: var(--ar, 4 / 5); margin: 0; padding: 0; border: 0; border-radius: 6px; overflow: hidden; background: #1a1a1a; color: inherit; cursor: pointer;
  transform-origin: 50% 50%; transform: translateX(calc(-50% + var(--x, 0%))) translateZ(var(--z, 0px)) rotateY(var(--ry, 0deg)) scale(var(--s, 1)); backface-visibility: hidden; opacity: var(--o, 1);
  transition: transform .95s cubic-bezier(.22, .8, .2, 1), opacity .7s ease; box-shadow: 0 30px 60px -34px rgba(0, 0, 0, .55); will-change: transform, opacity; }
.stk-c.gone { pointer-events: none; }
.stk-c:not(.front):not(.gone):hover { opacity: 1; }
.stk-c:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
.stk-c::after { content: ""; position: absolute; inset: 0; background: #000; opacity: var(--dim, 0); pointer-events: none; transition: opacity .8s ease; }
.stk-m { position: absolute; inset: 0; }
.stk-s { position: absolute; inset: 0; opacity: 0; transition: opacity .9s ease; }
.stk-s.on { opacity: 1; }
.stk-s img, .stk-s video { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 0; background: #1a1a1a; }
.stk-m.kb .stk-s.on img { animation: stkkb 7s ease-out both; }
@keyframes stkkb { from { transform: scale(1.0); } to { transform: scale(1.06); } }
.stk-cap { flex: none; display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: clamp(10px, 1.8vh, 18px) 2px 2px; cursor: pointer; }
.stk-l { display: flex; align-items: baseline; gap: 14px; min-width: 0; flex-wrap: wrap; }
.stk-t { font-size: 13px; letter-spacing: -.01em; }
.stk-k, .stk-n { white-space: nowrap; font-size: 11px; color: var(--mute); font-variant-numeric: tabular-nums; }
.stk-cap.swap .stk-l { animation: stkcap .7s cubic-bezier(.22, .8, .2, 1) both; }
@keyframes stkcap { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.stk-empty { margin: auto; color: var(--mute); font-size: 13px; }
html[data-theme="light"] .stk-c { background: #e9e8e3; box-shadow: 0 30px 60px -36px rgba(20, 20, 20, .45); }
html[data-theme="light"] .stk-s img, html[data-theme="light"] .stk-s video { background: #e9e8e3; }
@media (max-width: 700px) { .stk-c { height: 88%; max-width: 80%; } .stk-l { gap: 10px; } }
@media (prefers-reduced-motion: reduce) { .stk-c, .stk-s { transition: none; } .stk-m.kb .stk-s.on img { animation: none; } }

/* Practice: sin puntos de navegación laterales */
.sv-dots { display: none !important; }

/* Idioma: no aparece en la home; solo dentro de Practice y Lab, a la izquierda de «← Back» */
.lang { display: none; }
body.lock:has(#panel-services.open) .lang, body.lock:has(#panel-lab.open) .lang { display: block; z-index: 60; right: clamp(110px, 8.5vw, 124px); top: 15px; }
html.mgv-on .lang { display: none !important; }
@media (max-width: 760px) { body.lock:has(#panel-services.open) .lang, body.lock:has(#panel-lab.open) .lang { z-index: 60; right: 104px; top: 13px; } }

/* Botón de tema: sin el de idioma en la home pasa a la esquina; cristal con aro completo para que se vea sobre fotos oscuras */
.theme { right: 22px; }
.theme, .lang { background: rgba(255, 255, 255, .14); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .32), inset 0 1.5px 0 rgba(255, 255, 255, .45); }
.theme:hover, .lang:hover { background: rgba(255, 255, 255, .28); }
@media (max-width: 760px) { .theme { right: 16px; } }

/* Logotipo: AWRA STUDIOS en mayúsculas muy espaciadas (sustituye a la A gótica) */
.brand .wm { display: block; font-size: 12px; line-height: 1; font-weight: 400; letter-spacing: .3em; text-transform: uppercase; white-space: nowrap; padding: 11px 0 0 2px; }
.brand { top: 14px; left: 22px; }
@media (max-width: 760px) { .brand { left: 16px; } .brand .wm { font-size: 11px; letter-spacing: .26em; } }
.mgv-sl.cover .mast { font-size: clamp(11px, 1.05vw, 14px); font-weight: 400; letter-spacing: .42em; padding-left: .42em; line-height: 1.2; text-transform: uppercase; margin-bottom: 2.4vh; }

/* ====== WORK: portal 3D de entrada (portal.js) ====== */
.pz { position: absolute; inset: 0; z-index: 2; display: grid; place-items: center; overflow: hidden; opacity: 0; transition: opacity .8s ease; }
.pz.in { opacity: 1; }
.pz[hidden] { display: none; }
.pz-stage { position: absolute; inset: 0; perspective: 1400px; perspective-origin: 50% 46%; transition: transform .8s cubic-bezier(.5, 0, .8, .4), opacity .7s ease; }
.pz-world { position: absolute; left: 50%; top: 50%; width: 0; height: 0; transform-style: preserve-3d; will-change: transform; }
.pz-c { position: absolute; left: 0; top: 0; width: clamp(96px, 12.5vw, 200px); aspect-ratio: 4 / 5; border-radius: 4px; overflow: hidden; background: #1a1a1a; transform-style: preserve-3d; transition: transform 1.9s cubic-bezier(.2, .8, .2, 1), opacity 1.2s ease; box-shadow: 0 18px 40px -24px rgba(0, 0, 0, .6); will-change: transform, opacity; }
.pz-c img { width: 100%; height: 100%; object-fit: cover; display: block; }
html[data-theme="light"] .pz-c { background: #e9e8e3; }
.pz-nav { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; gap: clamp(2px, 1vh, 10px); }
.pz-z { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 4px 10px; display: inline-flex; align-items: flex-start; gap: 6px; opacity: .3; transition: opacity .5s ease, transform .6s cubic-bezier(.2, .8, .2, 1); mix-blend-mode: normal; text-shadow: 0 2px 30px rgba(0, 0, 0, .35); }
html[data-theme="light"] .pz-z { text-shadow: 0 2px 30px rgba(244, 243, 239, .9); }
.pz-z:hover, .pz-z.on { opacity: 1; }
.pz-z.on { transform: scale(1.03); }
.pz-z:focus-visible { outline: 1px solid currentColor; outline-offset: 4px; }
.pz-t { font-size: clamp(38px, 8.4vw, 124px); font-weight: 400; letter-spacing: -.045em; line-height: .98; }
.pz-z sup { font-size: 11px; letter-spacing: 0; opacity: .6; margin-top: .6em; font-variant-numeric: tabular-nums; }
.pz-hint { position: absolute; left: 0; right: 0; bottom: 22px; text-align: center; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; opacity: .5; margin: 0; }
.pz.go .pz-stage { transform: scale(2.4); opacity: 0; }
.pz.go .pz-nav, .pz.go .pz-hint { opacity: 0; transition: opacity .4s ease; }
.pz-home { position: absolute; z-index: 4; top: 62px; right: clamp(16px, 2.4vw, 40px); font: inherit; font-size: 13px; color: inherit; background: none; border: 0; padding: 6px 0; cursor: pointer; opacity: .6; }
.pz-home:hover { opacity: 1; }
#panel-work.pz-on #w-list { visibility: hidden; }
#panel-work:not(.open) .pz-home { display: none; }
@media (max-width: 700px) { .pz-home { top: 60px; } }
@media (prefers-reduced-motion: reduce) { .pz-c, .pz-stage, .pz { transition: none; } }

/* Work: carrusel limpio y elegante. Las de los lados casi desaparecen (solo la de delante tiene sombra y presencia) */
.stk-c { border-radius: 2px; transition: transform 1.1s cubic-bezier(.22, .8, .2, 1), opacity 1.1s ease; }
.stk-c:not(.front) { box-shadow: none; }
.stk-c.front { box-shadow: 0 40px 70px -42px rgba(0, 0, 0, .35); }
.stk-c::after { display: none; }
.stk-cap { padding-top: clamp(12px, 2.2vh, 22px); }
.stk-t { font-size: 14px; letter-spacing: .01em; }
.stk-k, .stk-n { letter-spacing: .03em; }

/* Contact: titular de colaboración y Instagram como tarjeta discreta abajo a la derecha del formulario */
#links[hidden] { display: none !important; }
.c-grid > .c-left { min-height: 1px; }
.c-right { display: flex; flex-direction: column; gap: clamp(28px, 5vh, 52px); min-width: 0; }
.ig-card { align-self: flex-end; display: inline-flex; align-items: center; gap: 14px; padding: 9px 18px 9px 9px; border: 1px solid var(--line); border-radius: 16px; color: inherit; text-decoration: none; transition: border-color .35s ease, transform .5s cubic-bezier(.2, .8, .2, 1); }
.ig-card:hover { border-color: currentColor; transform: translateY(-2px); }
.ig-card img { width: 52px; height: 52px; border-radius: 11px; object-fit: cover; display: block; }
.ig-card .t { display: flex; flex-direction: column; gap: 3px; }
.ig-card b { font-weight: 400; font-size: 14px; letter-spacing: -.005em; }
.ig-card i { font-style: normal; font-size: 11px; color: var(--mute); letter-spacing: .02em; }
.ig-card .ar { font-size: 15px; opacity: .55; margin-left: 6px; transition: opacity .3s, transform .4s; }
.ig-card:hover .ar { opacity: 1; transform: translate(2px, -2px); }
@media (max-width: 899px) { .ig-card { align-self: flex-start; } }
.c-right > #c-quiz, .c-right > form { width: 100%; max-width: none; box-sizing: border-box; }
@media (max-width: 899px) { .c-grid > .c-left { display: none; } .c-right { width: 100%; } }

/* Work: cada proyecto es un mazo de fotos. Detrás de la portada asoman las siguientes (se abren en abanico al pasar el ratón),
   una barra marca cuántas fotos hay y un índice permite elegir proyecto. */
.stk-c { overflow: visible; background: none; }
.stk-clip { position: absolute; inset: 0; overflow: hidden; border-radius: 2px; background: #1a1a1a; }
html[data-theme="light"] .stk-clip { background: #e9e8e3; }
.stk-deck { position: absolute; inset: 0; pointer-events: none; opacity: 0; transition: opacity .6s ease; }
.stk-c.front .stk-deck { opacity: 1; }
.stk-d { position: absolute; inset: 0; border-radius: 2px; overflow: hidden; background: #cfcdc7; box-shadow: 0 10px 24px -16px rgba(0, 0, 0, .45); transition: transform 1s cubic-bezier(.22, .8, .2, 1); transform-origin: 50% 90%; }
.stk-d img { width: 100%; height: 100%; object-fit: cover; display: block; }
.stk-d.d1 { transform: translate(3.2%, -1.8%) rotate(3.2deg); z-index: -1; }
.stk-d.d2 { transform: translate(-3.6%, -2.4%) rotate(-4.2deg); z-index: -2; }
.stk-d.d3 { transform: translate(6.4%, -3.4%) rotate(6.6deg); z-index: -3; }
.stk-d.d4 { transform: translate(-7%, -4.2%) rotate(-8deg); z-index: -4; }
.stk-c.front:hover .stk-d.d1 { transform: translate(15%, -3%) rotate(9deg); }
.stk-c.front:hover .stk-d.d2 { transform: translate(-16%, -4%) rotate(-10deg); }
.stk-c.front:hover .stk-d.d3 { transform: translate(28%, -6%) rotate(15deg); }
.stk-c.front:hover .stk-d.d4 { transform: translate(-30%, -7%) rotate(-17deg); }
@media (hover: none) { .stk-d.d1 { transform: translate(9%, -2.4%) rotate(6deg); } .stk-d.d2 { transform: translate(-9.5%, -3%) rotate(-7deg); } .stk-d.d3 { transform: translate(15%, -4.4%) rotate(11deg); } .stk-d.d4 { transform: translate(-16%, -5%) rotate(-12deg); } }
.stk-seg { position: absolute; left: 14px; right: 14px; bottom: 12px; display: flex; gap: 4px; pointer-events: none; z-index: 2; opacity: 0; transition: opacity .6s ease; }
.stk-c.front .stk-seg { opacity: 1; }
.stk-seg i { flex: 1; height: 2px; background: rgba(255, 255, 255, .35); border-radius: 2px; position: relative; overflow: hidden; }
.stk-seg i::after { content: ""; position: absolute; inset: 0; background: #fff; transform: scaleX(0); transform-origin: left; }
.stk-seg i.done::after { transform: scaleX(1); }
.stk-seg i.on::after { animation: stkseg 2.6s linear forwards; }
@keyframes stkseg { to { transform: scaleX(1); } }
.stk-idx { position: absolute; left: 0; top: 4%; bottom: 8%; width: clamp(150px, 16vw, 240px); overflow-y: auto; scrollbar-width: none; display: none; flex-direction: column; gap: 2px; z-index: 5;
  -webkit-mask-image: linear-gradient(transparent, #000 14%, #000 86%, transparent); mask-image: linear-gradient(transparent, #000 14%, #000 86%, transparent); padding: 22% 0; }
.stk-idx::-webkit-scrollbar { display: none; }
.stk-i { display: flex; gap: 12px; text-align: left; font: inherit; font-size: 12px; letter-spacing: .01em; color: inherit; background: none; border: 0; padding: 7px 0; cursor: pointer; opacity: .5; transition: opacity .4s ease, transform .5s cubic-bezier(.2, .8, .2, 1); min-height: 0; }
.stk-i span { font-size: 10px; opacity: .6; font-variant-numeric: tabular-nums; padding-top: 1px; }
.stk-i:hover { opacity: .75; }
.stk-i.on { opacity: 1; transform: translateX(6px); }
@media (min-width: 1100px) { .stk-idx { display: flex; } }
.stk-idx { background: linear-gradient(to right, #f4f3ef 62%, rgba(244, 243, 239, 0)); padding-right: 40px; }
html:not([data-theme="light"]) .stk-idx { background: linear-gradient(to right, #050505 62%, rgba(5, 5, 5, 0)); }
.stk-i { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.25; }
.stk-i { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 6px; }
.ig-card .ig-ic { width: 44px; height: 44px; border: 1px solid var(--line); border-radius: 12px; display: grid; place-items: center; flex: none; transition: border-color .35s ease; }
.ig-card:hover .ig-ic { border-color: currentColor; }
.ig-card { padding: 8px 18px 8px 8px; }

/* Practice: scroll continuo, sin saltos entre secciones */
#panel-services { scroll-snap-type: none !important; scroll-behavior: auto; }
.sv-slide { scroll-snap-align: none; scroll-snap-stop: normal; }
/* Contact: esfera de puntos que se mueve, al lado del formulario */
.c-grid > .c-left { position: relative; min-height: 380px; align-self: start; }
.c-left .sv-sbg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
@media (max-width: 899px) { .c-grid > .c-left { display: block; width: 100%; align-self: stretch; min-height: 210px; order: -1; } .c-grid { display: flex; flex-direction: column; } }

/* Practice: el botón «Empezar un proyecto» es una estrella discreta que se despliega hacia la izquierda al pulsarla */
.sv-float { display: inline-flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 0; padding: 0; min-height: 50px; height: 50px; width: auto; border-radius: 16px; overflow: hidden; }
.sv-float .fl-s { flex: none; width: 50px; height: 50px; padding: 14px; box-sizing: border-box; transition: transform .8s cubic-bezier(.22, .8, .2, 1); }
.sv-float .fl-t { display: inline-flex; align-items: center; gap: 10px; white-space: nowrap; max-width: 0; opacity: 0; padding-left: 0; overflow: hidden; transition: max-width .7s cubic-bezier(.22, .8, .2, 1), opacity .5s ease, padding .7s cubic-bezier(.22, .8, .2, 1); font-size: 14px; }
.sv-float.open .fl-t { max-width: 280px; opacity: 1; padding-left: 22px; }
.sv-float.open .fl-s { transform: rotate(90deg); }
.sv-float .fl-t i { font-style: normal; }
/* móvil: título, luego la animación y después el texto de cada capítulo */
@media (max-width: 899px) {
  .sv-ch { row-gap: 0; }
  .sv-ch .sv-copy { display: contents; }
  .sv-ch .sv-n { order: -2; }
  .sv-ch .sv-t { order: -1; }
  .sv-ch .sv-line { order: -1; }
  .sv-ch .sv-scene { order: 0; margin: 4vh 0 5vh; }
  .sv-ch .sv-lead, .sv-ch .sv-desc, .sv-ch .sv-chips, .sv-ch .sv-more, .sv-ch .sv-who, .sv-ch .sv-steps, .sv-ch .cta-btn { order: 1; }
}

/* Practice: «En la práctica» es la puerta a ver más de cada servicio, así que se destaca: negrita y flecha en lugar del + */
.sv-more { border-top: 1px solid currentColor; border-bottom: 1px solid var(--line); }
.sv-more summary { font-weight: 600; font-size: 16px; letter-spacing: -.005em; padding: 17px 0; color: inherit; }
.sv-more summary::after { content: "↓"; font-size: 20px; line-height: 1; font-weight: 400; color: inherit; transform: none; transition: transform .5s var(--ease); }
.sv-more:hover summary::after { transform: translateY(3px); }
.sv-more[open] summary::after { transform: rotate(180deg); }
.sv-more[open]:hover summary::after { transform: rotate(180deg) translateY(3px); }

/* Practice: las animaciones 3D (anillos y abanicos) ya no se cortan con el borde cuadrado de su caja: se funden con el fondo y solo las recorta la pantalla */
.sv-scene[data-scene="fashion"], .sv-scene[data-scene="live"], .sv-scene[data-scene="music"], .sv-scene[data-scene="direction"] { overflow: visible; -webkit-mask-image: none; mask-image: none; }
#panel-services { overflow-x: hidden; }
#panel-services .panel-in { overflow-x: clip; }

/* Animaciones 3D (Fashion, Live…): tamaño original. En ordenador quedan dentro de su zona con fundido; en móvil, arriba y grandes, sin corte cuadrado */
@media (min-width: 900px) {
  .sv-scene[data-scene="fashion"], .sv-scene[data-scene="live"], .sv-scene[data-scene="music"], .sv-scene[data-scene="direction"] { overflow: hidden; -webkit-mask-image: radial-gradient(ellipse 74% 72% at 50% 50%, #000 58%, transparent 100%); mask-image: radial-gradient(ellipse 74% 72% at 50% 50%, #000 58%, transparent 100%); }
}
/* Dirección creativa: animación más ligera y pequeña */
.sv-scene[data-scene="direction"] { min-height: 0; max-height: 420px; aspect-ratio: 1 / .9; opacity: .92; }
@media (min-width: 900px) { .sv-ch .sv-scene[data-scene="direction"] { min-height: 0; max-height: 440px; align-self: center; } }

/* Work: de vuelta a lo limpio. Las fotos de los lados no se giran ni se inclinan: solo pierden opacidad. El mazo de detrás asoma sin rotar. */
.stk-d.d1 { transform: translate(2.6%, -2.4%); }
.stk-d.d2 { transform: translate(-2.6%, -4.4%); }
.stk-d.d3 { transform: translate(5.2%, -6.4%); }
.stk-d.d4 { transform: translate(-5.2%, -8.4%); }
.stk-c.front:hover .stk-d.d1 { transform: translate(8%, -3%); }
.stk-c.front:hover .stk-d.d2 { transform: translate(-8%, -6%); }
.stk-c.front:hover .stk-d.d3 { transform: translate(16%, -9%); }
.stk-c.front:hover .stk-d.d4 { transform: translate(-16%, -12%); }
@media (hover: none) { .stk-d.d1 { transform: translate(5%, -2.6%); } .stk-d.d2 { transform: translate(-5%, -4.6%); } .stk-d.d3 { transform: translate(10%, -6.6%); } .stk-d.d4 { transform: translate(-10%, -8.6%); } }
.stk-stage { perspective: none; }
.stk-d { transform-origin: 50% 50%; }

/* Work: sin capas visibles; en su lugar un botón «Ver proyecto» en la portada para que se entienda que se puede entrar */
.stk-deck { display: none !important; }
.stk-go { position: absolute; left: 50%; bottom: 36px; transform: translateX(-50%) translateY(6px); display: inline-flex; align-items: center; gap: 10px; padding: 12px 20px; border-radius: 99px; font-size: 13px; letter-spacing: .01em; color: #fff; background: rgba(12, 12, 12, .46); -webkit-backdrop-filter: blur(14px) saturate(1.4); backdrop-filter: blur(14px) saturate(1.4); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .34); opacity: 0; transition: opacity .6s ease .3s, transform .7s cubic-bezier(.22, .8, .2, 1) .3s, background .3s; z-index: 3; white-space: nowrap; pointer-events: none; }
.stk-c.front .stk-go { opacity: 1; transform: translateX(-50%); }
.stk-c.front:hover .stk-go { background: rgba(255, 255, 255, .88); color: #141414; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .9); }
.stk-go i { font-style: normal; transition: transform .4s var(--ease); }
.stk-c.front:hover .stk-go i { transform: translateX(4px); }
@media (hover: none) { .stk-go { bottom: 30px; } }
/* Work: esquinas ligeramente redondeadas en las fotos */
.stk-c, .stk-clip, .stk-c::after { border-radius: 9px; }
.stk-s img, .stk-s video { border-radius: 0; }
.stk-go { border-radius: 12px; }

/* Fotos de París: enteras, sin recorte (formato 2:3; la más estrecha deja márgenes del mismo tono) */
.stk-c.full .stk-s img { object-fit: contain; }
.stk-c.full .stk-clip { background: #e9e8e3; }
html:not([data-theme="light"]) .stk-c.full .stk-clip { background: #1a1a1a; }
