/* ===== Base: reset, cabecera, galería, pie, botón de tema ===== */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{min-height:100vh;font-family:var(--body);color:var(--txt);background:var(--page);background-attachment:fixed;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overflow-x:hidden}
input,textarea,select{-webkit-user-select:text;user-select:text}
img{-webkit-user-drag:none;user-drag:none;pointer-events:none}
#embers{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
#app{position:relative;z-index:1}
body.is-admin #app{padding-top:54px}

/* cabecera */
.hero{text-align:center;padding:clamp(42px,8vw,86px) 20px 26px}
.hero h1{font-family:var(--disp);font-weight:700;font-size:clamp(24px,5vw,50px);letter-spacing:.14em;line-height:1.1;
  background:linear-gradient(180deg,var(--acc2),var(--acc) 65%,var(--dim));-webkit-background-clip:text;background-clip:text;color:transparent;padding:0 .1em}
.hero p{margin-top:12px;font-size:clamp(11px,1.9vw,15px);letter-spacing:.3em;text-transform:uppercase;color:var(--dim)}
.orn{display:flex;align-items:center;justify-content:center;gap:14px;margin:22px auto 0;max-width:420px;color:var(--acc)}
.orn i{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--acc),transparent)}
.orn b{width:9px;height:9px;transform:rotate(45deg);background:var(--acc);box-shadow:0 0 10px rgba(var(--acc-rgb),.7)}

/* galería */
#grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:clamp(26px,4vw,48px) clamp(18px,3vw,36px);
  max-width:1280px;margin:0 auto;padding:30px clamp(18px,4vw,40px) 70px}
.work{display:flex;flex-direction:column;align-items:center;animation:rise .8s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(min(var(--i,0),14)*70ms)}
@keyframes rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
.cap{margin-top:16px;text-align:center;width:100%}
.cap h3{font-family:var(--disp);font-weight:700;font-size:13px;letter-spacing:.12em;color:var(--acc2);text-transform:uppercase;line-height:1.35}
.cap .meta{margin-top:5px;font-family:var(--disp);font-size:9.5px;letter-spacing:.18em;color:var(--acc)}
.cap p{margin-top:5px;font-size:13.5px;color:var(--dim);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cap .tag{display:inline-block;margin-top:7px;font-family:var(--disp);font-size:9.5px;letter-spacing:.3em;color:var(--acc);opacity:.9}
.empty{grid-column:1/-1;text-align:center;padding:70px 20px;color:var(--dim);font-size:15px;letter-spacing:.06em}
.empty b{display:block;font-family:var(--disp);font-size:14px;letter-spacing:.34em;color:var(--acc);margin-bottom:12px;font-weight:600}
footer{position:relative;z-index:1;text-align:center;padding:10px 20px 40px;font-size:11px;letter-spacing:.2em;color:var(--dim);text-transform:uppercase}

/* botón de tema */
.tbtn{position:fixed;top:12px;right:14px;z-index:45;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--glass);color:var(--acc2);display:grid;place-items:center;cursor:pointer;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 4px 14px var(--sh);transition:transform .3s,border-color .25s}
.tbtn:hover{transform:rotate(18deg) scale(1.07);border-color:var(--acc)}
.tbtn:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.tbtn svg{width:19px;height:19px;grid-area:1/1;transition:opacity .3s,transform .45s}
.tbtn .sun{opacity:0;transform:rotate(-80deg) scale(.4)}
:root[data-theme=dark] .tbtn .sun{opacity:1;transform:none}
:root[data-theme=dark] .tbtn .moon{opacity:0;transform:rotate(80deg) scale(.4)}
body.is-admin .tbtn{top:7px}
body.shielded .tbtn{visibility:hidden}
@media (prefers-reduced-motion:reduce){.work{animation:none}}
#siteSub:empty{display:none}

/* capas de la cabecera (parallax) */
.hero .hero-cas{position:relative;top:auto;right:auto;width:clamp(104px,15vw,150px);margin:0 auto 20px;filter:drop-shadow(0 10px 18px rgba(0,0,0,.35))}
.hero>*,.work{will-change:translate}
.hero .hero-cas{will-change:translate,transform}
.hero .hero-cas .cas-bg{fill:#1b1b1f}
