/* OTAN Construction — tokens, resets and motion primitives.
   Layout and appearance live inline in each Design Component. */

:root {
  --charcoal: #1C2126;
  --graphite: #0F1113;
  --stone: #B6B4AC;
  --green: #2E7D46;
  --forest: #0F5B32;
  --bronze: #B08A44;
  --warm: #F6F4EF;
  --white: #FFFFFF;
  --line: rgba(28, 33, 38, 0.14);
  --line-dark: rgba(246, 244, 239, 0.16);
  --h: 'Manrope', 'Inter Display', system-ui, sans-serif;
  --b: 'Inter', system-ui, sans-serif;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--warm);
  color: var(--charcoal);
  font-family: var(--b);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-wrap: pretty;
  overflow-x: hidden;
}

h1, h2, h3, h4 { font-family: var(--h); margin: 0; font-weight: 700; letter-spacing: -0.02em; line-height: 0.95; }
p { margin: 0; }
img, svg { display: block; max-width: 100%; }
button { font: inherit; }

a { color: var(--forest); text-decoration: none; transition: color 0.3s var(--ease); }
a:hover { color: var(--bronze); }

:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; }
::selection { background: rgba(46, 125, 70, 0.22); }

/* ---------- reveal primitives (state applied by otan.js) ---------- */
[data-reveal] { will-change: transform, opacity; }
[data-reveal="up"] { opacity: 0; transform: translateY(22px); transition: opacity 0.8s var(--ease), transform 0.8s var(--ease); }
[data-reveal="fade"] { opacity: 0; transition: opacity 1s var(--ease); }
[data-reveal="label"] { opacity: 0; transform: translateY(12px); letter-spacing: 0.32em; transition: opacity 0.7s var(--ease), transform 0.7s var(--ease), letter-spacing 0.9s var(--ease); }
[data-reveal="line"] > span { display: block; transform: translateY(105%); transition: transform 0.7s var(--ease); }
[data-reveal="wipe"] { clip-path: inset(0 100% 0 0); transition: clip-path 1.1s var(--ease); }
[data-reveal="curtain"] { clip-path: inset(100% 0 0 0); transition: clip-path 1.1s var(--ease); }
[data-reveal="zoom"] > * { transform: scale(1.09); transition: transform 1.4s var(--ease); }
[data-reveal="rule"] { transform: scaleX(0); transform-origin: left center; transition: transform 0.9s var(--ease); }
[data-reveal="draw"] { transition: stroke-dashoffset 1.8s var(--ease); }

[data-reveal].is-in { opacity: 1; transform: none; clip-path: inset(0 0 0 0); }
[data-reveal="label"].is-in { letter-spacing: 0.22em; }
[data-reveal="line"].is-in > span { transform: none; }
[data-reveal="zoom"].is-in > * { transform: scale(1); }
[data-reveal="rule"].is-in { transform: scaleX(1); }
[data-reveal="draw"].is-in { stroke-dashoffset: 0 !important; }

@keyframes otan-marquee { from { transform: translate3d(0,0,0); } to { transform: translate3d(-50%,0,0); } }
@keyframes otan-drift { 0%,100% { transform: translate3d(0,0,0); } 50% { transform: translate3d(0,-18px,0); } }
@keyframes otan-node { 0% { offset-distance: 0%; } 100% { offset-distance: 100%; } }
@keyframes otan-scroll-hint { 0% { transform: translateY(-100%); } 60%,100% { transform: translateY(100%); } }
@keyframes otan-spin { to { transform: rotate(360deg); } }
@keyframes otan-mob { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
@keyframes otan-dash { to { stroke-dashoffset: 0; } }

.otan-marquee-track { animation: otan-marquee 34s linear infinite; }
.otan-drift { animation: otan-drift 11s ease-in-out infinite; }

/* ---------- custom cursor ---------- */
#otan-cursor {
  position: fixed; top: 0; left: 0; z-index: 9998; pointer-events: none;
  width: 14px; height: 14px; border-radius: 50%; background: var(--graphite);
  display: none; align-items: center; justify-content: center;
  font-family: var(--b); font-size: 10px; font-weight: 600; letter-spacing: 0.14em; color: transparent;
  transition: width 0.35s var(--ease), height 0.35s var(--ease), background 0.35s var(--ease), color 0.25s var(--ease), opacity 0.3s var(--ease);
  mix-blend-mode: normal;
}
#otan-cursor[data-state="link"] { width: 34px; height: 34px; background: rgba(46,125,70,0.9); }
#otan-cursor[data-state="media"] { width: 82px; height: 82px; background: rgba(46,125,70,0.92); color: var(--warm); }
#otan-cursor[data-dark="1"] { background: var(--warm); }
#otan-cursor[data-dark="1"][data-state="link"] { background: rgba(246,244,239,0.9); }

body[data-otan-cursor="1"] { cursor: none; }
body[data-otan-cursor="1"] a, body[data-otan-cursor="1"] button { cursor: none; }

/* ---------- page transition + progress ---------- */
#otan-progress { position: fixed; top: 0; left: 0; height: 2px; width: 0; background: var(--green); z-index: 9997; transition: width 0.12s linear; }
#otan-veil { position: fixed; inset: 0; z-index: 9999; background: var(--charcoal); transform: translateY(100%); pointer-events: none; }
#otan-veil.is-on { transform: translateY(0); transition: transform 0.5s var(--ease); }
#otan-veil.is-off { transform: translateY(-100%); transition: transform 0.5s var(--ease); }

/* ---------- interaction primitives (attribute-keyed, shared site-wide) ---------- */
[data-nav] [data-nav-bg] { opacity: 0; transition: opacity 0.45s var(--ease); }
[data-nav][data-scrolled="1"] [data-nav-bg] { opacity: 1; }
[data-nav] [data-nav-inner] { transition: padding 0.45s var(--ease); }
[data-nav][data-scrolled="1"] [data-nav-inner] { padding-top: 14px; padding-bottom: 14px; }

[data-nav] [data-burger] span { transition: transform 0.4s var(--ease), opacity 0.3s var(--ease); }
[data-nav][data-open="1"] [data-burger] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
[data-nav][data-open="1"] [data-burger] span:nth-child(2) { opacity: 0; }
[data-nav][data-open="1"] [data-burger] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (min-width: 1080px) {
  [data-desknav] { display: flex !important; }
  [data-deskcta] { display: inline-flex !important; }
  [data-burger] { display: none !important; }
}

[data-navlink] i { display: block; height: 1px; background: var(--green); transform: scaleX(0); transform-origin: left center; transition: transform 0.4s var(--ease); }
[data-navlink]:hover i, [data-navlink][aria-current="page"] i { transform: scaleX(1); }

[data-media] [data-zoom] { transition: transform 1s var(--ease); will-change: transform; }
[data-media]:hover [data-zoom] { transform: scale(1.045); }
[data-media] [data-meta] { transition: transform 0.6s var(--ease), opacity 0.6s var(--ease); }
[data-media]:hover [data-meta] { transform: translateY(-6px); }
[data-media] [data-edge] { transform: scaleX(0); transform-origin: left center; transition: transform 0.7s var(--ease); }
[data-media]:hover [data-edge] { transform: scaleX(1); }

[data-tile] { transition: background-color 0.5s var(--ease), transform 0.5s var(--ease), border-color 0.5s var(--ease); }
[data-tile]:hover { background-color: rgba(46, 125, 70, 0.045); transform: translateY(-3px); }
[data-tile][data-bg="dark"]:hover { background-color: rgba(246, 244, 239, 0.04); }
[data-tile] [data-rule] { transform: scaleX(0); transform-origin: left center; transition: transform 0.55s var(--ease); }
[data-tile]:hover [data-rule] { transform: scaleX(1); }
[data-tile] [data-arrow] { transition: transform 0.5s var(--ease), color 0.5s ease; }
[data-tile]:hover [data-arrow] { transform: translate(7px, -7px); color: var(--green); }
[data-tile] [data-num] { transition: color 0.5s ease, transform 0.5s var(--ease); }
[data-tile]:hover [data-num] { color: var(--green); transform: translateY(-2px); }
[data-tile] [data-outline] { opacity: 0; transition: opacity 0.6s var(--ease); }
[data-tile]:hover [data-outline] { opacity: 1; }

[data-cta] { transition: background-color 0.45s var(--ease), color 0.45s var(--ease), border-color 0.45s ease; }
[data-cta] [data-arrow] { transition: transform 0.45s var(--ease); }
[data-cta]:hover [data-arrow] { transform: translate(5px, -5px); }

[data-area]:hover { color: var(--forest); }
[data-area] i { display: block; height: 1px; background: var(--green); transform: scaleX(0); transform-origin: left center; transition: transform 0.4s var(--ease); }
[data-area]:hover i { transform: scaleX(1); }

/* ---------- FAQ accordion + forms ---------- */
[data-faq] [data-ans] { max-height: 0; opacity: 0; overflow: hidden; transition: max-height 0.55s var(--ease), opacity 0.4s var(--ease); }
[data-faq][data-open="1"] [data-ans] { max-height: 420px; opacity: 1; }
[data-faq] [data-plus] { transition: transform 0.4s var(--ease); }
[data-faq][data-open="1"] [data-plus] { transform: rotate(135deg); }
[data-faq] [data-frule] { transform: scaleX(0); transform-origin: left center; transition: transform 0.5s var(--ease); }
[data-faq][data-open="1"] [data-frule] { transform: scaleX(1); }

[data-field] { position: relative; }
[data-field] input, [data-field] select, [data-field] textarea {
  width: 100%; padding: 13px 2px; background: transparent; border: 0; border-bottom: 1px solid var(--line);
  font-family: var(--b); font-size: 15px; color: var(--charcoal); border-radius: 0; appearance: none;
}
[data-field] textarea { resize: vertical; min-height: 110px; }
[data-field] input:focus, [data-field] select:focus, [data-field] textarea:focus { outline: none; }
[data-field] [data-focusline] { position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--green); transform: scaleX(0); transform-origin: left center; transition: transform 0.45s var(--ease); }
[data-field]:focus-within [data-focusline] { transform: scaleX(1); }
[data-field] label { display: block; font-size: 10px; font-weight: 600; letter-spacing: 0.2em; text-transform: uppercase; color: rgba(28, 33, 38, 0.55); }
[data-field][data-invalid="1"] input, [data-field][data-invalid="1"] select, [data-field][data-invalid="1"] textarea { border-bottom-color: #B04444; }
[data-field-dark] label { color: rgba(246, 244, 239, 0.6); }
[data-field-dark] input, [data-field-dark] select, [data-field-dark] textarea { color: #F6F4EF; border-bottom-color: rgba(246, 244, 239, 0.24); }

@keyframes otan-check { from { stroke-dashoffset: 60; } to { stroke-dashoffset: 0; } }
@keyframes otan-ring { from { stroke-dashoffset: 760; } to { stroke-dashoffset: 0; } }

/* ---------- pinned services stack ---------- */
[data-svcstack] { position: relative; }
[data-svcstack] > [data-svc-item] { position: absolute; inset: 0; opacity: 0; transform: translateY(16px); pointer-events: none; transition: opacity 0.6s var(--ease), transform 0.6s var(--ease); }
[data-svcstack] > [data-svc-item]:first-child { position: relative; }
[data-svcstack][data-active="0"] > [data-svc-item]:nth-child(1),
[data-svcstack][data-active="1"] > [data-svc-item]:nth-child(2),
[data-svcstack][data-active="2"] > [data-svc-item]:nth-child(3),
[data-svcstack][data-active="3"] > [data-svc-item]:nth-child(4),
[data-svcstack][data-active="4"] > [data-svc-item]:nth-child(5),
[data-svcstack][data-active="5"] > [data-svc-item]:nth-child(6),
[data-svcstack][data-active="6"] > [data-svc-item]:nth-child(7),
[data-svcstack][data-active="7"] > [data-svc-item]:nth-child(8),
[data-svcstack][data-active="8"] > [data-svc-item]:nth-child(9),
[data-svcstack][data-active="9"] > [data-svc-item]:nth-child(10),
[data-svcstack][data-active="10"] > [data-svc-item]:nth-child(11),
[data-svcstack][data-active="11"] > [data-svc-item]:nth-child(12) { opacity: 1; transform: none; pointer-events: auto; }

[data-svcsticky] { position: static; }
@media (min-width: 1000px) {
  [data-svcgrid] { grid-template-columns: 1fr 1fr !important; }
  [data-svcsticky] { position: sticky !important; top: 18vh; }
  [data-svc-panel] { min-height: 82vh !important; }
}

[data-step] [data-num] { transition: color 0.6s ease, transform 0.6s var(--ease); }
[data-step].is-in [data-num] { color: var(--green); }
[data-step] { opacity: 0.55; transition: opacity 0.6s ease; }
[data-step].is-in { opacity: 1; }

[data-kinetic] { animation: otan-marquee 46s linear infinite; }
[data-kinetic][data-dir="rev"] { animation-direction: reverse; }

@media (prefers-reduced-motion: reduce) {
  [data-kinetic] { animation: none !important; }
}

@media (prefers-reduced-motion: reduce) {
  [data-reveal] { opacity: 1 !important; transform: none !important; clip-path: none !important; transition: opacity 0.3s linear !important; letter-spacing: 0.22em; }
  [data-reveal="line"] > span, [data-reveal="zoom"] > * { transform: none !important; }
  .otan-marquee-track, .otan-drift { animation: none !important; }
  #otan-cursor { display: none !important; }
  body[data-otan-cursor="1"] { cursor: auto; }
}
