/* =====================================================================
   MG LAW — common.css
   Single source of truth for the shared SHELL (header, footer, contact
   band, fixed buttons) + design tokens + reusable interaction classes.
   Linked from every page via <helmet><link rel="stylesheet" ...></helmet>.
   Change a token here once → it applies across all pages.
   Page-specific SECTION layout stays inline per page (each page keeps its
   own HTML structure); this file owns only the shell + shared primitives.
   ===================================================================== */

/* ---------- 1. Design tokens ---------- */
:root {
  /* color */
  --canvas:#e3e3e5;          /* outer body canvas */
  --surface:#ffffff;         /* centered page */
  --gray:#f5f5f7;            /* tinted bands */
  --ink:#18202D;            /* brand dark: footer, dark buttons, focus */
  --ink-strong:#111111;      /* headings, nav */
  --text:#1a1a1a;           /* root text */
  --text-body:#5a5a5a;       /* paragraphs */
  --text-body-2:#555555;     /* paragraphs (alt) */
  --muted:#8a8a8a;          /* captions, meta */
  --placeholder:#9a9a9f;     /* input placeholder / floating label */
  --accent:#CF3F3C;         /* ALL hover states */
  --divider:#d2d2d8;        /* section rules, team lines */
  --divider-field:#cfcfd6;   /* form underline */
  --divider-arrow:#d4d4d8;   /* arrow border */
  --hairline:#e0e0e4;       /* card separators */
  --wa-green:#25d366;       /* WhatsApp button */

  /* layout */
  --inset:clamp(28px,8.5vw,124px);     /* THE content alignment line */
  --inset-hero:calc(var(--inset) / 2); /* hero image-card side gap = half the page content inset */
  --col-gap:clamp(40px,5vw,80px);      /* shared two-up gutter */
  --page-max:1340px;

  /* radii */
  --r-card:22px;
  --r:16px;
  --r-sm:12px;

  /* shadows */
  --shadow-card:0 5px 18px rgba(0,0,0,.18);
  --shadow-page:0 0 50px rgba(0,0,0,.07);
  --shadow-pill-active:0 4px 14px rgba(24,32,45,.3);
  --shadow-pill:0 4px 14px rgba(0,0,0,.06);
  --shadow-float:0 8px 22px rgba(0,0,0,.28);

  /* type */
  --font:'Helvetica Neue',Helvetica,'Open Sans',Arial,sans-serif;
  --font-nav:'Avenir Next','Avenir','Helvetica Neue',Helvetica,'Segoe UI',Arial,sans-serif;  /* menus: header + footer */

  /* ===== Type scale — SINGLE SOURCE OF TRUTH =====
     Change a token here = it changes site-wide. Shared classes + new pages
     consume these; never hard-code font sizes/weights/line-heights. */
  /* weights */
  --fw-body:400;       /* all body paragraphs */
  --fw-heading:500;    /* all titles/headings (h1/h2) */
  --fw-btn:500;        /* ALL buttons — weight never varies */
  /* line-heights */
  --lh-body:1.72;      /* body paragraph rhythm */
  --lh-body-sm:1.55;   /* accessory paragraph rhythm */
  --lh-heading:1.1;
  /* paragraph sizes */
  --fs-body:17px;        /* main paragraphs: lead, body, contact intro */
  --fs-body-sm:14.5px;   /* accessory copy: cards, news columns, side menus */
  /* title sizes */
  --fs-h1:clamp(30px,3.9vw,48px);  /* page/article H1 */
  --fs-h2:clamp(24px,2.4vw,30px);
  --fs-h3:clamp(18px,1.7vw,21px);
  /* accessory labels */
  --fs-eyebrow:12.5px;
  --fs-label:11px;
  /* unified content rhythm (single source) */
  --fs-section-title:clamp(28px,3.2vw,40px); /* every content-section H2: about, CEDO, expertiză, știri, victime, contact */
  --measure:560px;                            /* one line-length for section titles + body paragraphs → shared right edge */
  /* buttons — size may vary per context, weight + font-family never do */
  --fs-btn:16px;

  /* hero overlay */
  --hero-overlay:linear-gradient(90deg, rgba(24,32,45,.88) 0%, rgba(24,32,45,.58) 38%, rgba(24,32,45,.14) 66%, rgba(24,32,45,0) 100%);
}

/* ---------- 2. Resets ---------- */
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
/* Own background on <html>: without it, body's gray canvas propagates into the
   iOS safe areas (Dynamic Island strip, area below the footer) and overscroll.
   Split: top half white (matches header), bottom half navy (matches footer) —
   the middle is always covered by <body>, only the edges ever show. */
html{background:linear-gradient(180deg,var(--surface) 0%,var(--surface) 50%,var(--ink) 50%,var(--ink) 100%);}
body{background:var(--canvas);-webkit-font-smoothing:antialiased;}
a{text-decoration:none;color:inherit;}
button{font-family:inherit;}

/* ---------- 3. Page shell ---------- */
.site-shell{font-family:var(--font);color:var(--text);background:var(--canvas);min-height:100vh;}
.page-surface{max-width:var(--page-max);margin:0 auto;background:var(--surface);min-height:100vh;position:relative;box-shadow:var(--shadow-page);}

/* ---------- 4. Header ---------- */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.72);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);padding-top:env(safe-area-inset-top,0px);}
.header-inner{padding:26px var(--inset) 26px;}
.header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:26px;}
.brand-logo{height:clamp(50px,5.4vw,76px);width:auto;display:block;}
.flag-row{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
.flag{display:block;opacity:.72;transition:opacity .18s ease;}
.flag:hover{opacity:1;}
.flag img{width:22px;height:14px;border-radius:2px;display:block;box-shadow:0 0 0 1px rgba(0,0,0,.12);}
.site-nav{display:flex;align-items:center;gap:clamp(22px,2.8vw,46px);flex-wrap:wrap;}
.nav-link{position:relative;font-family:var(--font-nav);font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.13em;color:var(--ink-strong);padding:4px 0;transition:color .2s ease;}
.nav-link::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1.5px;background:var(--accent);transform:scaleX(0);transform-origin:right center;transition:transform .32s cubic-bezier(.65,0,.35,1);}
.nav-link:hover{color:var(--accent);}
.nav-link:hover::after{transform:scaleX(1);transform-origin:left center;}
.nav-link.is-active{color:var(--ink-strong);font-weight:600;}
.nav-link.is-active::after{transform:scaleX(1);transform-origin:left center;background:var(--ink);}
.nav-toggle{display:flex;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:4px;}
.nav-toggle span{display:block;width:26px;height:2px;background:var(--ink-strong);}
.site-nav--mobile{flex-direction:column;align-items:stretch;gap:2px;margin-top:16px;border-top:1px solid rgba(0,0,0,.12);padding-top:12px;}
.site-nav--mobile .nav-link{font-size:14px;letter-spacing:.13em;padding:14px 0;border-bottom:1px solid rgba(0,0,0,.08);}
/* Mobile/tablet (<=820px): Servicii submenu — always open, tinted, indented.
   Heading reads as a peer nav item; the four areas sit in a soft tinted card,
   sentence-case (a step down from the uppercase parents), each with an accent
   dot that lights up on hover / for the current page. No crude full-width rules. */
.mobile-services{border-bottom:1px solid rgba(0,0,0,.08);}
.mobile-services-label{display:block;font-family:var(--font-nav);font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.13em;color:var(--ink-strong);padding:14px 0 12px;}
.mobile-submenu{display:flex;flex-direction:column;gap:2px;background:var(--gray);border-radius:14px;margin:0 0 14px;padding:7px;}
.site-nav--mobile .mobile-submenu-link{position:relative;border:none;padding:12px 14px 12px 30px;font-size:14px;font-weight:500;letter-spacing:.02em;text-transform:none;color:var(--ink);border-radius:10px;transition:color .18s ease,background .18s ease;}
.site-nav--mobile .mobile-submenu-link::after{display:none;}
.site-nav--mobile .mobile-submenu-link::before{content:"";position:absolute;left:13px;top:50%;width:5px;height:5px;border-radius:50%;background:var(--muted);opacity:.55;transform:translateY(-50%);transition:background .18s ease,opacity .18s ease;}
.site-nav--mobile .mobile-submenu-link:hover{color:var(--accent);background:rgba(255,255,255,.7);}
.site-nav--mobile .mobile-submenu-link:hover::before{background:var(--accent);opacity:1;}
.site-nav--mobile .mobile-submenu-link.is-active{color:var(--accent);font-weight:600;}
.site-nav--mobile .mobile-submenu-link.is-active::before{background:var(--accent);opacity:1;}
/* Our Services hover dropdown (glass card) */
.nav-item{position:relative;display:inline-flex;align-items:center;}
.nav-link--menu{display:inline-flex;align-items:center;gap:7px;background:none;border:none;cursor:pointer;font:inherit;font-family:var(--font-nav);font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.13em;color:var(--ink-strong);}
.nav-caret{width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .24s ease,opacity .2s ease;opacity:.65;}
.nav-item:hover .nav-caret,.nav-item:focus-within .nav-caret{transform:translateY(1px) rotate(225deg);opacity:1;}
.nav-menu{position:absolute;top:100%;left:0;padding-top:18px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease,visibility .2s;z-index:60;}
.nav-item:hover .nav-menu,.nav-item:focus-within .nav-menu{opacity:1;visibility:visible;pointer-events:auto;}
.nav-menu-card{display:flex;flex-direction:column;gap:2px;min-width:210px;padding:10px;background:rgba(255,255,255,.97);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border:1px solid rgba(255,255,255,.7);border-radius:16px;box-shadow:0 22px 48px -20px rgba(24,32,45,.4),0 2px 8px rgba(0,0,0,.05);transform:translateY(8px);transition:transform .28s cubic-bezier(.16,1,.3,1);}
.nav-item:hover .nav-menu-card,.nav-item:focus-within .nav-menu-card{transform:translateY(0);}
.nav-menu-link{font-family:var(--font-nav);font-size:12px;font-weight:500;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-strong);padding:10px 14px;border-radius:10px;white-space:nowrap;transition:background .16s ease,color .16s ease;}
.nav-menu-link:hover{background:rgba(24,32,45,.06);color:var(--accent);}

/* ---------- 5. Buttons / pills ---------- */
.btn-fom{display:inline-block;background:#fff;color:var(--ink);font-size:var(--fs-btn);font-weight:var(--fw-btn);letter-spacing:-0.005em;padding:17px 34px;border-radius:var(--r-sm);border:none;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease;}
.btn-fom:hover{background:var(--accent);color:#fff;}
/* .btn-submit ("Trimite") + .cta-btn ("Contact") — one refined CTA family:
   crisp corners (--r-sm), restrained padding, and a shared arrow that slides
   right on hover. Color inverts per background; ghost variant for dark strips. */
.btn-submit,.cta-btn{display:inline-flex;align-items:center;justify-content:center;gap:11px;min-width:190px;box-sizing:border-box;font-family:inherit;font-size:15px;font-weight:var(--fw-btn);letter-spacing:.005em;line-height:1;padding:15px 28px;border-radius:var(--r-sm);border:1px solid transparent;cursor:pointer;text-align:center;transition:background .25s ease,color .25s ease,border-color .25s ease,box-shadow .25s ease;}
.btn-submit::after,.cta-btn::after{content:"";width:16px;height:16px;flex:0 0 auto;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h13M13 6l6 6-6 6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h13M13 6l6 6-6 6'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .25s ease;}
.btn-submit:hover::after,.cta-btn:hover::after{transform:translateX(4px);}
/* Trimite — solid navy on the white contact band */
.btn-submit{color:#fff;background:var(--ink);box-shadow:0 12px 24px -14px rgba(24,32,45,.6);}
.btn-submit:hover{background:var(--accent);box-shadow:0 14px 28px -14px rgba(207,63,60,.5);}
.pa-cell{display:flex;align-items:center;justify-content:center;text-align:center;padding:17px 18px;border-radius:var(--r);cursor:pointer;border:none;font-family:inherit;font-size:var(--fs-btn);font-weight:var(--fw-btn);letter-spacing:-0.005em;background:#efeff2;color:var(--ink-strong);box-shadow:var(--shadow-pill);transition:background .2s,color .2s,box-shadow .2s;-webkit-tap-highlight-color:transparent;}
@media (hover:hover){ .pa-cell:hover{color:var(--ink);box-shadow:0 8px 22px rgba(0,0,0,.1);} }
.pa-cell-active{border:none;-webkit-tap-highlight-color:transparent;border-radius:var(--r);font-family:inherit;font-size:var(--fs-btn);font-weight:var(--fw-btn);letter-spacing:-0.005em;background:var(--ink);color:#fff;box-shadow:var(--shadow-pill-active);}
.team-arrow{width:34px;height:34px;border-radius:var(--r-sm);border:1px solid var(--divider-arrow);background:#fff;color:var(--ink-strong);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:background .18s,color .18s,border-color .18s,opacity .18s;}
.team-arrow:hover{background:var(--ink);color:#fff;border-color:var(--ink);}

/* ---------- 5b. Scroll-reveal (reusable; JS adds .is-in when in view) ---------- */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay,0ms);will-change:opacity,transform;}
.reveal.is-in{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important;transition:none!important;}}

/* ---------- 5c. Shared editorial blocks (eyebrow / stats / CTA) — used site-wide ---------- */
/* small accent caption above section titles */
.eyebrow{font-size:12.5px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin:0 0 18px;}

/* credibility stats strip */
.stat-band{padding:clamp(40px,4.5vw,68px) var(--inset);}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #e3e3e8;border-radius:var(--r-card);overflow:hidden;background:#fff;}
.stat{padding:clamp(24px,2.6vw,34px) clamp(20px,2vw,30px);border-left:1px solid #ececef;}
.stat:first-child{border-left:none;}
.stat-num{font-weight:500;font-size:clamp(30px,3vw,44px);line-height:1;letter-spacing:-0.02em;color:var(--ink-strong);}
.stat-label{margin-top:10px;font-size:11.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);line-height:1.4;}

/* dark closing CTA band */
.cta-band{background:var(--ink);padding:clamp(44px,5vw,72px) var(--inset);display:flex;flex-direction:column;align-items:flex-start;gap:16px;}
.cta-band h2{font-weight:500;font-size:clamp(26px,3vw,36px);line-height:1.12;letter-spacing:-0.02em;color:#fff;margin:0;max-width:640px;}
.cta-band p{font-size:clamp(15px,1.5vw,17px);line-height:1.6;color:rgba(255,255,255,.8);margin:0;max-width:520px;}
/* Contact / closing CTA — solid white on dark bands (geometry from the shared
   .btn-submit,.cta-btn rule above). */
.cta-btn{margin-top:6px;background:#fff;color:var(--ink);}
.cta-btn:hover{background:var(--accent);color:#fff;}
/* Ghost variant for the slim charcoal Întrebări strip — outlined, fills on hover. */
.cta-btn--ghost{margin-top:0;background:transparent;color:#fff;border-color:rgba(255,255,255,.34);}
.cta-btn--ghost:hover{background:#fff;color:var(--ink);border-color:#fff;}

@media (max-width:820px){
  .stat-grid{grid-template-columns:repeat(2,1fr);}
  .stat:nth-child(odd){border-left:none;}
  .stat:nth-child(n+3){border-top:1px solid #ececef;}
}

/* ---------- 6. Text-link hovers ---------- */
.news-title,.read-more,.fom-text,.footer-link{transition:color .18s ease;}
.news-title:hover,.fom-text:hover,.footer-link:hover{color:var(--accent);}
.read-more:hover{color:var(--accent);text-decoration:underline;}

/* ---------- 7. Card ---------- */
.card{background:#fff;border-radius:var(--r-card);box-shadow:var(--shadow-card);padding:clamp(34px,3.4vw,46px) clamp(30px,3vw,42px);}

/* ---------- 8. Contact band + floating-label form ---------- */
/* Very-light-grey band + right-aligned submit are the site-wide default. */
.contact-band{background:var(--gray);padding:clamp(32px,4vw,56px) var(--inset);}
/* Desktop: heading/intro top-left, map bottom-left, form spans the right column.
   Mobile/tablet portrait: re-ordered to heading → intro → FORM → map (see @820). */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"head form" "map form";column-gap:var(--col-gap);row-gap:clamp(24px,3vw,40px);align-items:start;}
.contact-head{grid-area:head;min-width:0;}
.contact-heading{font-weight:500;font-size:var(--fs-section-title);line-height:1.14;letter-spacing:-0.02em;color:var(--ink-strong);margin:0;max-width:var(--measure);}
.contact-intro{font-size:var(--fs-body);line-height:var(--lh-body);color:var(--text-body-2);margin:20px 0 0;max-width:var(--measure);}
.map-frame{grid-area:map;border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow-card);line-height:0;}
.map-frame iframe{width:100%;height:clamp(200px,26vh,300px);border:0;display:block;filter:grayscale(1) contrast(1.05);-webkit-filter:grayscale(1) contrast(1.05);}
/* padded down so the form starts level with the Contact intro paragraph,
   not level with the "Contact" heading */
.contact-form{grid-area:form;display:flex;flex-direction:column;gap:clamp(26px,3vw,38px);width:100%;padding-top:clamp(44px,4.8vw,72px);}
.contact-form .btn-submit{align-self:flex-end;margin-top:6px;}
.cfield{position:relative;}
.cfield input,.cfield textarea{width:100%;font-family:inherit;font-size:16px;color:var(--ink-strong);background:transparent;border:none;border-bottom:1.5px solid var(--divider-field);padding:16px 2px 9px;outline:none;box-sizing:border-box;transition:border-color .2s ease;display:block;}
.cfield textarea{line-height:1.55;min-height:60px;resize:vertical;}
.cfield input:focus,.cfield textarea:focus{border-bottom-color:var(--ink);}
.cfield label{position:absolute;left:2px;top:16px;font-size:16px;color:var(--placeholder);pointer-events:none;transition:top .18s ease,font-size .18s ease,color .18s ease;}
.cfield input:focus~label,.cfield input:not(:placeholder-shown)~label,
.cfield textarea:focus~label,.cfield textarea:not(:placeholder-shown)~label{top:-9px;font-size:12.5px;color:var(--ink);letter-spacing:.01em;}
/* Contact form extras (cta-contact.js): honeypot off-screen (out of flow, so
   the flex gap ignores it) · GDPR consent row · inline status note. */
.hp-field{position:absolute !important;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;}
.form-consent{display:flex;align-items:flex-start;gap:10px;margin-top:-6px;font-size:var(--fs-body-sm);line-height:1.55;color:var(--text-body-2);cursor:pointer;}
.form-consent input{flex:0 0 auto;width:16px;height:16px;margin:2px 0 0;accent-color:var(--accent);cursor:pointer;}
.form-consent a{color:var(--ink);text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--divider-field);}
.form-consent a:hover{color:var(--accent);text-decoration-color:var(--accent);}
.contact-form .btn-submit[disabled]{opacity:.55;cursor:default;}
.form-status{margin:-8px 0 0;font-size:var(--fs-body-sm);line-height:1.6;}
.form-status.is-ok{color:var(--ink);}
.form-status.is-err{color:var(--accent);}
.form-status a{color:inherit;text-decoration:underline;text-underline-offset:2px;}

/* ---------- 9. Footer (full-bleed, dark, layered) ---------- */
.site-footer{width:100%;color:#fff;padding:0;box-sizing:border-box;}
/* Layer 1 — main navy band (reduced top padding so a preceding strip reads as one footer unit) */
/* Întrebări CTA — slim charcoal band emitted by the Footer component (so it
   appears site-wide), sitting above the taller navy block. */
.intrebari-strip{background:#2a3340;padding:clamp(16px,1.9vw,26px) var(--inset);}
.intrebari-inner{display:flex;align-items:center;justify-content:space-between;gap:clamp(20px,4vw,56px);flex-wrap:wrap;}
.intrebari-copy{min-width:0;max-width:680px;}
.intrebari-title{font-size:clamp(16px,1.4vw,19px);font-weight:500;letter-spacing:-0.01em;color:#fff;margin:0 0 8px;}
.intrebari-text{font-size:14.5px;line-height:1.5;color:rgba(255,255,255,.72);margin:0;}
.intrebari-strip .cta-btn{margin-top:0;flex:0 0 auto;}
/* Taller navy block — the main footer mass sits below the slim charcoal strip. */
.footer-dark{background:var(--ink);padding:clamp(54px,6vw,84px) var(--inset);}
.footer-row{display:grid;grid-template-columns:1.4fr .9fr 1.5fr;gap:clamp(32px,4.5vw,72px);align-items:start;}
.footer-colhead{font-family:var(--font-nav);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.18em;color:rgba(255,255,255,.5);margin:0 0 20px;}
.footer-contact{display:flex;flex-direction:column;gap:14px;min-width:0;max-width:330px;}
.footer-citem{display:flex;align-items:flex-start;gap:12px;font-size:14.5px;line-height:1.5;color:rgba(255,255,255,.8);}
.footer-citem svg{flex:0 0 auto;margin-top:3px;color:rgba(255,255,255,.4);}
.footer-citem a{color:rgba(255,255,255,.8);transition:color .18s ease;}
.footer-citem a:hover{color:#fff;}
.footer-col{display:flex;flex-direction:column;gap:15px;}
/* Recent-articles column (dragne.ro-style): one row per practice theme. */
.footer-arts{display:flex;flex-direction:column;gap:clamp(14px,1.3vw,19px);}
.footer-art{display:block;max-width:330px;}
.footer-art + .footer-art{padding-top:clamp(14px,1.3vw,19px);border-top:1px solid rgba(255,255,255,.1);}
.footer-art-theme{display:block;font-family:var(--font-nav);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;}
.footer-art-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:14px;line-height:1.4;color:rgba(255,255,255,.82);transition:color .18s ease;}
.footer-art:hover .footer-art-title{color:#fff;}
.footer-link{position:relative;display:inline-block;font-family:var(--font-nav);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:rgba(255,255,255,.78);width:fit-content;}
.footer-link::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1.5px;background:var(--accent);transform:scaleX(0);transform-origin:right center;transition:transform .32s cubic-bezier(.65,0,.35,1);}
.footer-link:hover::after{transform:scaleX(1);transform-origin:left center;}
/* Layer 2 — copyright band, a subtle step darker than the navy */
.footer-bottom{background:#11161f;padding:10px var(--inset);padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));}
.footer-bottom-inner{display:flex;align-items:center;justify-content:space-between;gap:8px 26px;flex-wrap:wrap;}
.footer-copyright{font-size:10.5px;color:var(--muted);letter-spacing:.02em;}
.footer-legal{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.footer-legalink{position:relative;font-family:var(--font-nav);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.5);transition:color .18s ease;}
.footer-legalink:hover{color:#fff;}
/* hairline separator between the legal links */
.footer-legalink + .footer-legalink::before{content:"";position:absolute;left:-7px;top:50%;transform:translateY(-50%);width:1px;height:11px;background:rgba(255,255,255,.22);}
@media (max-width:820px){
  .footer-row{grid-template-columns:1fr 1fr;gap:clamp(30px,6vw,44px);}
  .footer-contact{grid-column:1 / -1;max-width:none;}
  .footer-bottom-inner{flex-direction:column;align-items:flex-start;gap:12px;}
  /* phone/tablet: the strip's vw padding collapses to its floor — restore the
     desktop breathing room above "Întrebări" and below the Contact button */
  .intrebari-strip{padding-top:28px;padding-bottom:28px;}
}
@media (max-width:520px){ .footer-row{grid-template-columns:1fr;} }
@media (prefers-reduced-motion:reduce){
  .nav-link::after,.footer-link::after,.nav-menu,.nav-menu-card,.nav-caret{transition:none;}
  .btn-submit::after,.cta-btn::after,.btn-submit:hover::after,.cta-btn:hover::after{transition:none;transform:none;}
}

/* ---------- 10. Fixed action buttons ---------- */
.fixed-actions{position:fixed;bottom:clamp(20px,3.5vw,32px);right:clamp(14px,2.4vw,34px);display:flex;flex-direction:column;gap:16px;z-index:60;}
/* iOS only (Safari + Chrome share WebKit; -webkit-touch-callout matches just iOS):
   the bottom toolbar collapses on scroll, the viewport grows and drags fixed
   elements down with it. 100dvh-100svh equals the collapsed toolbar height, so
   adding it to `bottom` keeps the FABs on the same screen spot in both states.
   Android's URL bar is at the top — viewport bottom never moves — so it keeps
   the plain rule above. */
@supports (height:100dvh) and (-webkit-touch-callout:none){
  .fixed-actions{bottom:calc(clamp(20px,3.5vw,32px) + (100dvh - 100svh));}
}
.fab{width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-float);transition:transform .18s;}
.fab:hover{transform:scale(1.08);}
.fab--wa{background:var(--wa-green);}
.fab--mail{background:#fff;}

/* CEDO / ECHR landmark spotlight CSS now lives in /components/cedo.js
   (self-injected on load) so it travels with the shared component and is
   never out of sync with a cached common.css. */

/* ---------- 11. Responsive (shell only) ---------- */
@media (max-width:820px){
  /* single column, re-ordered so the form sits above the map */
  .contact-grid{grid-template-columns:1fr;grid-template-areas:"head" "form" "map";}
  .contact-form{padding-top:0;}
  /* intro runs the full content width on phone + portrait tablet */
  .contact-heading,.contact-intro{max-width:none;}
  /* phone/tablet: submit sits left, on the same vertical as the footer-strip
     "Contact" button right below the form (both use var(--inset) padding) */
  .contact-form .btn-submit{align-self:flex-start;}
}
