/* shared shell for all Ceimi case-study pages — one place to fix, every page follows */
:root{--void:#07131a;--elev:#0e222b;--panel:#0f242e;--shell:#17313a;--smoke:#294a54;--ash:#cde0e1;--fog:#86a0a3;
  --cta:linear-gradient(30deg,#0ad6b4,#3ee66a);--current:linear-gradient(141deg,#1fa8ff,#12e0c0)}
*{box-sizing:border-box}
html{background:var(--void)}
body{margin:0;background:var(--void);color:var(--ash);font-family:'DM Sans',sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:#2fc4d8;text-decoration:none} a:hover{color:#12e0c0}
::selection{background:rgba(18,224,192,.25);color:#fff}
.wrap{max-width:1100px;margin:0 auto;padding:0 clamp(20px,4vw,40px)}
.eyebrow{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--fog);margin:0}
h1,h2{font-weight:300;letter-spacing:-.02em;color:#fff;margin:0}
.card{background:var(--elev);border-radius:16px;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08), inset 0 1px 0 0 rgba(18,224,192,.30)}
.vimg{display:block;width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.card:hover .vimg{transform:scale(1.045)}
.vlabel{position:absolute;left:16px;bottom:14px;background:rgba(7,19,26,.78);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(18,224,192,.25);border-radius:9999px;padding:7px 14px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#dff7f2}
.pill{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--smoke);border-radius:9999px;padding:8px 16px;font-size:13px;color:var(--ash)}
.pill s{color:var(--fog)}
.casenav{position:fixed;top:0;left:0;right:0;z-index:50;height:66px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(16px,4vw,40px);background:rgba(7,19,26,.82);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid rgba(41,74,84,.6)}
[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
[data-reveal].in{opacity:1;transform:none}
/* min() clamp: if the strip image is shorter than the box, it stays put instead of sliding into blank space */
@keyframes strip{0%,6%{transform:translateY(0)}48%,56%{transform:translateY(min(0px, calc(-100% + var(--boxh,520px))))}94%,100%{transform:translateY(0)}}
@media(max-width:860px){ [data-cols]{grid-template-columns:1fr !important} [data-bento]{grid-template-columns:1fr !important} [data-bento]>*{height:240px !important} }
@media (prefers-reduced-motion: reduce){ *{animation:none !important;transition:none !important} [data-reveal]{opacity:1;transform:none} }
