/* UiS Studentkapital – animasjoner. Brukes sammen med /assets/js/motion.js.
   Klassen .motion settes bare når skriptet kjører og «redusert bevegelse» er av. */

/* Skjul toppen et øyeblikk til animasjonen starter (fjernes uansett etter 2,5 s) */
.motion-pending :is(.hero, .page-hero) :is(h1, .eyebrow, .lead, .hero-actions, .hero-figure, .stats, .watermark, p) { opacity: 0; }

/* Ord som glir opp */
.motion .w { display: inline-block; overflow: hidden; vertical-align: top; padding: 0 0.06em 0.1em 0; margin: 0 -0.06em -0.1em 0; }
.motion .wi { display: inline-block; will-change: transform; }

/* Gullstrek under det uthevede ordet i hovedtittelen */
.motion .hero h1 em {
  background: linear-gradient(var(--brand-gold), var(--brand-gold)) no-repeat 0 94% / 0% 2px;
  transition: background-size 1.1s cubic-bezier(0.65, 0, 0.35, 1);
}
.motion .hero h1.strek em { background-size: 100% 2px; }

/* Okse som tegner seg selv (erstatter vannmerket) */
.band svg.watermark.okse-strek { opacity: 1; width: 380px; right: -30px; bottom: -70px; overflow: visible; }
.okse-strek path { fill: none; stroke: var(--brand-gold); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; stroke-opacity: 0.24; }
.okse-strek path.kropp { fill: var(--brand-gold); fill-opacity: 0; }
@media (max-width: 700px) { .band svg.watermark.okse-strek { width: 240px; right: -40px; bottom: -40px; } }

/* Bildet i toppen: gullrammen kommer etter bildet */
.motion .hero-figure::before { opacity: var(--ramme, 1); transform: translate(calc((1 - var(--ramme, 1)) * 10px), calc((1 - var(--ramme, 1)) * -10px)); }
.motion .hero-figure { will-change: transform; }

/* Intro: oksen tegnes, så trekkes teppet opp (én gang per besøk) */
.intro {
  position: fixed; inset: 0; z-index: 200; background: var(--brand-navy, #152238);
  display: grid; place-content: center; justify-items: center; gap: 28px; cursor: pointer;
  clip-path: inset(0 0 0 0);
}
.intro-okse { height: min(38vh, 300px); width: auto; overflow: visible; }
.intro-okse path { fill: none; stroke: #b08d57; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.intro-okse path.ramme { stroke: #3a4e6b; stroke-width: 5; }
.intro-okse path.kropp { fill: #b08d57; fill-opacity: 0; }
.intro-navn { font: 700 0.86rem/1 var(--font-sans, sans-serif); letter-spacing: 0.32em; text-transform: uppercase; color: #f2eee6; white-space: nowrap; }
.intro-navn span { color: #b08d57; }

/* Tynn gullstrek under menyen som viser hvor langt ned man har lest */
.les-fremdrift { position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--gold-mark); transform-origin: 0 50%; transform: scaleX(0); pointer-events: none; }

/* Etiketter: streken foran tegnes inn */
.motion main .eyebrow::before { transform: scaleX(0); transform-origin: 0 50%; transition: transform 0.9s cubic-bezier(0.65, 0, 0.35, 1) 0.1s; }
.motion main .eyebrow.inne::before, .motion :is(.hero, .page-hero) .eyebrow::before { transform: scaleX(1); }

/* Mykere og litt lengre inntoning */
.motion .reveal { transition: opacity 0.7s cubic-bezier(0.2, 0.7, 0.2, 1), transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1); }
.motion .reveal:not(.in) { transform: translateY(24px); }
.motion .member.reveal { transition-duration: 0.45s; }
.motion .member.reveal:not(.in) { transform: translateY(12px); }
.motion .post-card.reveal.in { transition: opacity 0.9s, transform 0.25s, border-color 0.2s, box-shadow 0.2s; }

/* Analyseprosessen (PC): gullinje som fylles mens stegene tennes */
html.motion { scroll-behavior: auto; }
.prosess-scroll { height: calc(var(--steg, 4) * 50vh + 100vh); padding: 0; }
.prosess-scroll > .container { position: sticky; top: 74px; min-height: calc(100vh - 74px); display: flex; flex-direction: column; justify-content: center; padding-block: 48px; }
.prosess-linje { height: 2px; background: var(--gold-mark); transform-origin: 0 50%; margin: 0 0 22px; }
.motion .process li { transition: border-color 0.4s, box-shadow 0.4s; }
.motion .process li.aktiv { border-color: var(--gold-mark); box-shadow: var(--shadow); }

/* Glans over gullknappene */
@media (hover: hover) {
  .motion .btn-gold { position: relative; overflow: hidden; isolation: isolate; }
  .motion .btn-gold::after {
    content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
    background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, 0.38) 50%, transparent 70%);
    transform: translateX(-120%); transition: transform 0.8s cubic-bezier(0.2, 0.7, 0.2, 1);
  }
  .motion .btn-gold:hover::after { transform: translateX(120%); }
}

/* Plassholdere som glimter mens innholdet hentes (klassen .laster fjernes etter 8 s) */
:root { --skel: color-mix(in srgb, var(--ink) 7%, transparent); }
.laster :is([data-latest-posts], [data-all-posts], [data-activities], [data-p-kpis], [data-org-facts], [data-eiere-kpis], [data-eiere], [data-sponsors], [data-membership-benefits], [data-membership-roles], [data-membership-semester], [data-membership-process], [data-membership-faq], [data-p-history], [data-p-sector-bar]):empty,
.laster [data-members] > .empty:only-child {
  --kol: 1; --rad: 1; --gap: 18px; --h: 180px;
  position: relative; overflow: hidden; min-height: var(--h); color: transparent; border: 0; border-radius: var(--radius);
  background: linear-gradient(var(--skel), var(--skel)) 0 0 / calc((100% - (var(--kol) - 1) * var(--gap)) / var(--kol)) calc((100% - (var(--rad) - 1) * var(--gap)) / var(--rad)) space;
}
.laster :is([data-latest-posts], [data-all-posts], [data-activities], [data-p-kpis], [data-org-facts], [data-eiere-kpis], [data-eiere], [data-sponsors], [data-membership-benefits], [data-membership-roles], [data-membership-semester], [data-membership-process], [data-membership-faq], [data-p-history], [data-p-sector-bar]):empty::after,
.laster [data-members] > .empty:only-child::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(100deg, transparent 30%, color-mix(in srgb, var(--brand-gold) 18%, transparent) 50%, transparent 70%);
  transform: translateX(-100%); animation: glimt 1.6s ease-in-out infinite;
}
@keyframes glimt { to { transform: translateX(100%); } }
.laster :is([data-latest-posts], [data-all-posts]):empty { --kol: 3; --gap: 26px; --h: 400px; }
.laster [data-activities]:empty { --kol: 3; --rad: 2; --gap: 2px; --h: 520px; }
.laster [data-members] > .empty:only-child { --kol: 4; --gap: 22px; --h: 420px; font-size: 0; }
.laster :is([data-p-kpis], [data-org-facts], [data-eiere-kpis]):empty { --kol: 3; --gap: 2px; --h: 118px; }
.laster [data-sponsors]:empty { --h: 120px; background-size: min(240px, 100%) 100%; background-repeat: no-repeat; }
.laster [data-membership-benefits]:empty { --kol: 2; --rad: 2; --h: 260px; }
.laster [data-membership-roles]:empty { --rad: 3; --h: 330px; }
.laster [data-membership-semester]:empty { --kol: 4; --h: 150px; }
.laster [data-membership-process]:empty { --kol: 4; --h: 200px; }
.laster [data-membership-faq]:empty { --rad: 4; --h: 280px; }
.laster [data-p-history]:empty { --h: 300px; }
.laster [data-p-sector-bar]:empty { --h: 22px; }
.laster [data-eiere]:empty { --rad: 4; --h: 380px; }
@media (max-width: 900px) {
  .laster :is([data-latest-posts], [data-all-posts], [data-activities], [data-membership-semester], [data-membership-process]):empty { --kol: 1; }
  .laster [data-members] > .empty:only-child { --kol: 2; --h: 300px; }
  .laster [data-membership-benefits]:empty { --kol: 1; --rad: 4; }
}
@media (prefers-reduced-motion: reduce) {
  .laster :is([data-latest-posts], [data-all-posts], [data-activities], [data-p-kpis], [data-org-facts], [data-eiere-kpis], [data-eiere], [data-sponsors], [data-membership-benefits], [data-membership-roles], [data-membership-semester], [data-membership-process], [data-membership-faq], [data-p-history], [data-p-sector-bar]):empty::after,
  .laster [data-members] > .empty:only-child::after { animation: none; display: none; }
}

/* Aktivitetskortene: gullramme tegnes rundt kortet, og «Les mer» glir fram */
@media (hover: hover) {
  a.activity { position: relative; }
  a.activity::before, a.activity::after { content: ""; position: absolute; width: 0; height: 0; box-sizing: border-box; border: 2px solid transparent; pointer-events: none; }
  a.activity::before { top: 0; left: 0; }
  a.activity::after { right: 0; bottom: 0; }
  a.activity:is(:hover, :focus-visible)::before { width: 100%; height: 100%; border-top-color: var(--gold-mark); border-right-color: var(--gold-mark); transition: width 0.22s ease-out, height 0.22s ease-out 0.22s; }
  a.activity:is(:hover, :focus-visible)::after { width: 100%; height: 100%; border-bottom-color: var(--gold-mark); border-left-color: var(--gold-mark); transition: border-color 0s 0.44s, width 0.22s ease-out 0.44s, height 0.22s ease-out 0.66s; }
  a.activity .read-more { display: inline-block; transition: transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1); }
  a.activity:is(:hover, :focus-visible) .read-more { transform: translateX(6px); }
}
@media (prefers-reduced-motion: reduce) {
  a.activity:is(:hover, :focus-visible)::before, a.activity:is(:hover, :focus-visible)::after, a.activity .read-more { transition: none; }
}

/* Myke overganger mellom sidene (nettlesere som støtter det) */
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
  .site-header { view-transition-name: toppmeny; }
  ::view-transition-old(root) { animation: 0.28s cubic-bezier(0.4, 0, 1, 1) both vt-ut; }
  ::view-transition-new(root) { animation: 0.45s cubic-bezier(0, 0, 0.2, 1) 0.05s both vt-inn; }
}
@keyframes vt-ut { to { opacity: 0; transform: translateY(-10px); } }
@keyframes vt-inn { from { opacity: 0; transform: translateY(14px); } }
