/* ===== IRON SECURITY — shared site styles =====
   Extracted from the original inline <style> so every page (avaleht +
   teenuselehed) shares one source of truth. Per-element styling stays inline. */

/* ===== MOTION SYSTEM =====
   One cohesive easing language. Gentle ease-out for entrances (no overshoot),
   standard ease for state changes. Durations scale with the "weight" of the move. */
:root{
  --ease-out: cubic-bezier(0.22, 0.61, 0.36, 1);   /* calm deceleration for entrances */
  --ease-soft: cubic-bezier(0.4, 0, 0.2, 1);        /* responsive symmetric for hovers/UI */
  --dur-micro: 220ms;   /* color / border / small hover */
  --dur-lift:  320ms;   /* transform lifts, shadows */
  --dur-chrome:450ms;   /* header chrome, large surfaces */
  --dur-reveal:760ms;   /* scroll entrance */
  --rise: 22px;         /* scroll entrance travel */
}
*{box-sizing:border-box;}

/* ===== GRIDS =====
   Explicit column counts so rows are always full (no dangling orphan card).
   Long-content cards collapse to 2-up, then 1-up. */
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(18px,2.2vw,28px);}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,24px);}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,2vw,26px);}
@media(max-width:980px){
  .grid-3{grid-template-columns:repeat(2,1fr);}
  .grid-4{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:860px){
  .meist-grid{grid-template-columns:1fr !important;}
}
@media(max-width:760px){
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr;}
}

html{scroll-behavior:smooth;}
body{margin:0;background:#eef1f5;color:#1a2129;-webkit-font-smoothing:antialiased;font-family:'Manrope',sans-serif;}
::selection{background:rgba(30,42,58,.22);color:#fff;}
input,textarea,select,button{font-family:inherit;}
textarea{resize:vertical;}
input::placeholder,textarea::placeholder{color:#6f7680;}
a{color:inherit;}
/* ===== ACCESSIBILITY ===== */
/* Visible keyboard focus on every interactive element (replaces removed outlines). */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{
  outline:2px solid #1a2129 !important;outline-offset:2px;border-radius:4px;
}
/* On dark surfaces (header, mobile menu, footer, dark CTA) use a light ring. */
header a:focus-visible,header button:focus-visible,#mobile-menu a:focus-visible,#mobile-menu button:focus-visible,footer a:focus-visible{
  outline:2px solid #e6eaef !important;outline-offset:2px;
}
/* Skip link — visually hidden until focused. */
.skip-link{position:absolute;left:12px;top:-48px;z-index:200;padding:10px 16px;border-radius:6px;background:#1a2129;color:#f2f5f8;font-family:'Manrope',sans-serif;font-weight:700;font-size:14px;text-decoration:none;transition:top var(--dur-micro) var(--ease-soft);}
.skip-link:focus{top:12px;}
/* Lock background scroll while the mobile menu is open. */
body.menu-open{overflow:hidden;}
@keyframes irFloat{0%,100%{transform:translateY(-50%) translateY(0);}50%{transform:translateY(-50%) translateY(-10px);}}
/* Scroll entrance: hidden state lives in CSS so there is no flash before the
   observer runs, and so reduced-motion can cleanly opt out (see media query). */
[data-reveal]{opacity:0;transform:translateY(var(--rise));will-change:opacity,transform;}
[data-reveal].is-revealed{opacity:1;transform:none;transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out);}
[data-desktop-nav]{display:flex;}
[data-burger]{display:none;}
@media(max-width:860px){
  [data-desktop-nav]{display:none !important;}
  [data-burger]{display:inline-flex !important;}
  [data-hero-cta]{flex-direction:column;align-items:stretch;}
  /* Mobiili hero: suurem pealkiri + tugevam, ühtlasem skrim et taustapilt taanduks */
  .hero-title{font-size:clamp(40px,11vw,60px) !important;line-height:1.02 !important;}
  .hero-sub{font-size:17px !important;color:#c4cad2 !important;}
  .hero-scrim{background:linear-gradient(180deg,rgba(8,10,13,.55) 0%,rgba(8,10,13,.72) 52%,rgba(8,10,13,.92) 100%) !important;}
}
/* scrolled header state */
header.is-scrolled{
  background:rgba(13,16,20,0.96) !important;
  border-bottom:1px solid rgba(196,206,218,0.16) !important;
  box-shadow:0 12px 40px rgba(15,20,28,0.28) !important;
}
/* icon buttons: subtle tactile hover/press, consistent with the lift language */
#burger,#mobile-close{transition:background var(--dur-micro) var(--ease-soft),border-color var(--dur-micro) var(--ease-soft),transform var(--dur-micro) var(--ease-soft);}
#burger:hover,#mobile-close:hover{background:rgba(196,206,218,.16);border-color:rgba(196,206,218,.45);}
#burger:active,#mobile-close:active{transform:scale(.94);}
/* mobile menu: smooth fade so it does not pop in/out */
#mobile-menu{opacity:0;visibility:hidden;transition:opacity var(--dur-lift) var(--ease-soft),visibility 0s linear var(--dur-lift);}
#mobile-menu.is-open{opacity:1;visibility:visible;transition:opacity var(--dur-lift) var(--ease-soft),visibility 0s;}
@media(prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important;}
  html{scroll-behavior:auto;}
  /* show all entrance content immediately, no movement */
  [data-reveal]{opacity:1 !important;transform:none !important;}
  #mobile-menu.is-open{opacity:1;visibility:visible;}
}

/* ===== HOVER / FOCUS STATES =====
   Pure-CSS replacement for the former style-hover/style-focus JS, which rewrote
   each element's inline style on every mouseenter (style recalc + reflow risk).
   Transitions live inline on the elements; only the end-states are here. */
.svc-icard:hover{transform:translateY(-4px);box-shadow:0 22px 48px rgba(30,42,58,.1);border-color:rgba(40,55,75,.18);}
.ir-hoverlight{transition:color var(--dur-micro) var(--ease-soft);}
.ir-hoverlight:hover{color:#ccd3db;}
.ir-input{transition:border-color var(--dur-micro) var(--ease-soft);}
.ir-input:focus{border-color:rgba(40,55,75,.5);}
.ir-cta-silver:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(196,206,218,.4),inset 0 1px 0 rgba(255,255,255,.55);}
.ir-cta-hero:hover{transform:translateY(-2px);box-shadow:0 16px 42px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.6);}
.ir-cta-ghost:hover{background:rgba(196,206,218,.16);border-color:rgba(196,206,218,.5);}
.ir-submit:hover{transform:translateY(-2px);box-shadow:0 16px 38px rgba(196,206,218,.42),inset 0 1px 0 rgba(255,255,255,.55);}

/* ===== SERVICES MEGA MENU ===== */
.ir-mega-wrap{position:static;display:inline-flex;align-items:center;}
.ir-mega-trigger{display:inline-flex;align-items:center;gap:6px;cursor:pointer;}
.ir-mega-chev{transition:transform var(--dur-micro) var(--ease-soft);}
.ir-mega-wrap:hover .ir-mega-chev,.ir-mega-wrap.is-open .ir-mega-chev{transform:rotate(180deg);}
.ir-mega{
  position:absolute;left:0;right:0;top:calc(100% + 1px);z-index:90;
  background:rgba(13,16,20,.98);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid rgba(196,206,218,.12);border-top:none;border-radius:0 0 18px 18px;
  box-shadow:0 28px 56px rgba(0,0,0,.45);padding:22px clamp(18px,4vw,30px) 26px;
  opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-10px);
  transition:opacity var(--dur-micro) var(--ease-soft),transform var(--dur-micro) var(--ease-soft),visibility 0s linear var(--dur-micro);
}
.ir-mega-wrap:hover .ir-mega,.ir-mega-wrap.is-open .ir-mega{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);
  transition:opacity var(--dur-micro) var(--ease-soft),transform var(--dur-micro) var(--ease-soft),visibility 0s;
}
.ir-mega-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.ir-mega-item{display:flex;flex-direction:column;gap:11px;padding:16px;border-radius:12px;border:1px solid rgba(196,206,218,.08);background:rgba(196,206,218,.03);text-decoration:none;transition:background var(--dur-micro) var(--ease-soft),border-color var(--dur-micro) var(--ease-soft),transform var(--dur-lift) var(--ease-out);}
.ir-mega-item:hover{background:rgba(196,206,218,.09);border-color:rgba(196,206,218,.22);transform:translateY(-2px);}
.ir-mega-ico{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#3c4754,#1f2832);box-shadow:0 8px 18px rgba(0,0,0,.28);}
.ir-mega-item .t{font-family:'Oswald',sans-serif;font-weight:500;text-transform:uppercase;font-size:15px;letter-spacing:.03em;color:#eef1f4;}
.ir-mega-item .d{font-family:'Manrope',sans-serif;font-size:12.5px;line-height:1.45;color:#9aa3ad;}
.ir-mega-all{display:inline-flex;align-items:center;gap:7px;margin-top:18px;font-family:'Manrope',sans-serif;font-weight:700;font-size:13px;letter-spacing:.02em;color:#c3cbd4;text-decoration:none;transition:color var(--dur-micro) var(--ease-soft);}
.ir-mega-all:hover{color:#eef1f4;}
@media(max-width:980px){.ir-mega-grid{grid-template-columns:repeat(2,1fr);}}
