/* NORTime Lapse — design system
 *
 * Values are lifted from the Claude Design export (NORTime Lapse.dc.html).
 * If a number here disagrees with the export, the export wins — re-derive it,
 * do not eyeball it.
 *
 * HOW THIS FILE IS ORGANISED
 *   1. tokens
 *   2. ground + Elementor/Astra reset
 *   3. the Elementor bridge  <- read this before editing anything
 *   4. components
 *
 * THE ELEMENTOR BRIDGE. Elementor wraps every widget in a div and puts the
 * class from `_css_classes` on that WRAPPER, not on the text element:
 *
 *   <div class="elementor-element elementor-widget-heading  nr-h1">   <- class lands here
 *     <h1 class="elementor-heading-title">…</h1>                      <- but type belongs here
 *
 * So type rules target `.nr-x .elementor-heading-title` and box rules target
 * `.nr-x`. Every rule that has to beat Elementor is prefixed `body.nortime`
 * (0,2,x) so it outranks Elementor's own `.e-con` / `.elementor-button` (0,1,x)
 * regardless of stylesheet order.
 */

/* ------------------------------------------------------------- 1. tokens */

:root {
  --nr-bg:        #0A0A0B;
  --nr-bg-deep:   #08080A;
  --nr-surface:   #121214;
  --nr-surface-2: #141519;
  --nr-surface-3: #101116;
  --nr-surface-4: #111217;
  --nr-surface-5: #1B1C20;
  --nr-ink:       #F2F2F0;
  --nr-muted:     #A2A2A6;
  --nr-muted-2:   #8A8A90;
  --nr-muted-3:   #6E6E74;
  --nr-dim:       #55555C;
  --nr-line:      #232327;
  --nr-line-4:    #1E1E22;
  --nr-chip:      #0E0E11;
  --nr-line-2:    #2A2A2F;
  --nr-line-3:    #3A3A40;
  --nr-orange:    #FF741F;
  --nr-orange-2:  #F4761F;
  --nr-orange-3:  #FF8A3D;
  --nr-orange-4:  #FFA469;

  --nr-shell: 1280px;
  --nr-gut:   clamp(20px, 4vw, 56px);
  --nr-sec-y: clamp(72px, 9vw, 140px);

  --nr-sans: Archivo, sans-serif;
  --nr-body: "Public Sans", system-ui, sans-serif;
  --nr-mono: "IBM Plex Mono", monospace;
}

/* ------------------------------------------------------------- 2. ground */

body.nortime {
  background: var(--nr-bg);
  color: var(--nr-ink);
  font-family: var(--nr-body);
  -webkit-font-smoothing: antialiased;
  font-variant-numeric: tabular-nums;
}
body.nortime * { box-sizing: border-box; }
body.nortime a { color: var(--nr-orange); text-decoration: none; }
body.nortime a:hover { color: var(--nr-orange-4); }
body.nortime :focus-visible { outline: 2px solid var(--nr-orange); outline-offset: 3px; border-radius: 2px; }
html { scroll-behavior: smooth; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  body.nortime * { animation: none !important; transition: none !important; }
}

body.nortime h1, body.nortime h2, body.nortime h3,
body.nortime h4, body.nortime p, body.nortime figure { margin: 0; }

@keyframes nrEntra { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* -------------------------------------------------------- 3. the bridge */

/* Elementor gives every container a column flexbox and its own padding/width
   custom properties. This design does its own layout, so zero the box and let
   the component rules below decide display. */
body.nortime .e-con,
body.nortime .e-con.e-con-full {
  --width: 100%;
  --content-width: 100%;
  --padding-block-start: 0px; --padding-block-end: 0px;
  --padding-inline-start: 0px; --padding-inline-end: 0px;
  --margin-block-start: 0px; --margin-block-end: 0px;
  --margin-inline-start: 0px; --margin-inline-end: 0px;
  --row-gap: 0px; --column-gap: 0px;
  --flex-wrap: nowrap;
}
/* Kill Elementor's default gap between widgets through its own custom property
   rather than by forcing margin-block-end. Forcing it also cancelled margins
   the design DOES want (the open FAQ answer's 24px), because a physical
   `margin` shorthand and a logical `margin-block-end` fight in the cascade. */
body.nortime .e-con,
body.nortime .elementor {
  --widgets-spacing: 0px;
  --widgets-spacing-row: 0px;
  --widgets-spacing-column: 0px;
}
body.nortime .elementor-widget-container { margin: 0; padding: 0; }

/* Astra must not add a shell around an Elementor canvas page */
body.nortime .ast-container { max-width: none; padding: 0; margin: 0; }
body.nortime .site-content { padding: 0; }
body.nortime .ast-single-entry-banner { display: none; }

/* ---------------------------------------------------------- 4. shell */

body.nortime .nr-sec {
  display: block;
  background: var(--nr-bg);
  border-bottom: 1px solid var(--nr-line);
  padding: var(--nr-sec-y) 0;
  width: 100%;
}
body.nortime .nr-shell {
  display: block;
  max-width: var(--nr-shell);
  margin: 0 auto;
  padding: 0 var(--nr-gut);
  width: 100%;
}
body.nortime .nr-head {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(24px, 4vw, 64px);
  align-items: end;
}

/* ---------------------------------------------------------- type */

body.nortime .nr-eyebrow .elementor-heading-title,
body.nortime p.nr-eyebrow {
  font-family: var(--nr-sans);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--nr-orange);
  line-height: normal;
}
body.nortime .nr-eyebrow { margin: 0; }

body.nortime .nr-h1 { margin: 20px 0 0; }
body.nortime .nr-h1 .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 86;
  font-weight: 800;
  font-size: clamp(40px, 6.4vw, 84px);
  line-height: .98;
  letter-spacing: -.025em;
  color: var(--nr-ink);
  max-width: 15ch;
  text-wrap: balance;
}

body.nortime .nr-h2 { margin: 16px 0 0; }
body.nortime .nr-h2 .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 88;
  font-weight: 700;
  font-size: clamp(30px, 4.2vw, 54px);
  line-height: 1.02;
  letter-spacing: -.02em;
  color: var(--nr-ink);
  max-width: 20ch;
}
/* Only registo's heading balances in the design. Applying it everywhere changed
   where every other heading broke its lines. */
body.nortime .nr-h2-bal .elementor-heading-title { text-wrap: balance; }
body.nortime .nr-h2-22ch .elementor-heading-title { max-width: 22ch; }
body.nortime .nr-h2-20ch .elementor-heading-title { max-width: 20ch; }

body.nortime .nr-h3 .elementor-heading-title {
  font-family: var(--nr-sans);
  font-weight: 700;
  font-size: 17px;
  line-height: 1.3;
  color: var(--nr-ink);
}

body.nortime .nr-lede .elementor-heading-title,
body.nortime .nr-lede p {
  font-family: var(--nr-body);
  font-size: 18px; line-height: 1.62; color: var(--nr-muted); max-width: 56ch;
}
body.nortime .nr-lede-hero { margin: 24px 0 0; }
body.nortime .nr-lede-hero .elementor-heading-title {
  font-family: var(--nr-body);
  font-weight: 400;
  font-size: 19px; line-height: 1.58; color: var(--nr-muted); max-width: 52ch;
}
body.nortime .nr-body .elementor-heading-title,
body.nortime .nr-body p {
  font-family: var(--nr-body);
  font-size: 16px; line-height: 1.62; color: var(--nr-muted);
}
body.nortime .nr-mono .elementor-heading-title,
body.nortime p.nr-mono {
  font-family: var(--nr-mono); font-size: 12px; color: var(--nr-muted);
  line-height: normal;
}
body.nortime .nr-confirmar,
body.nortime p.nr-confirmar {
  font-family: var(--nr-mono); font-size: 10.5px; color: var(--nr-orange);
  margin: 0; line-height: normal;
}
body.nortime .nr-cta-note { margin: 16px 0 0; }
body.nortime .nr-cta-note .elementor-heading-title {
  font-family: var(--nr-mono); font-size: 11.5px; color: var(--nr-muted-3);
  font-weight: 400; line-height: normal;
}

/* ---------------------------------------------------------- buttons */

body.nortime .nr-btn .elementor-button,
body.nortime .nr-btn-ghost .elementor-button,
body.nortime .nr-btn-sm .elementor-button {
  border-radius: 2px;
  font-family: var(--nr-sans);
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  line-height: normal;
  transition: background .18s ease, border-color .18s ease;
  text-decoration: none;
}
body.nortime .nr-btn .elementor-button {
  background-color: var(--nr-orange);
  color: var(--nr-bg);
  font-weight: 700;
  font-size: 16.5px;
  padding: 16px 24px;
  min-height: 52px;
  border: 0;
}
body.nortime .nr-btn .elementor-button:hover,
body.nortime .nr-btn .elementor-button:focus { background-color: var(--nr-orange-2); color: var(--nr-bg); }

body.nortime .nr-btn-ghost .elementor-button {
  background-color: transparent;
  color: var(--nr-ink);
  font-weight: 600;
  font-size: 16.5px;
  padding: 16px 24px;
  min-height: 52px;
  border: 1px solid var(--nr-line-3);
}
body.nortime .nr-btn-ghost .elementor-button:hover,
body.nortime .nr-btn-ghost .elementor-button:focus { border-color: var(--nr-ink); background-color: transparent; color: var(--nr-ink); }

body.nortime .nr-btn-sm .elementor-button {
  background-color: var(--nr-orange);
  color: var(--nr-bg);
  font-weight: 700;
  font-size: 14.5px;
  padding: 12px 18px;
  min-height: 44px;
  border: 0;
}
body.nortime .nr-btn-sm .elementor-button:hover,
body.nortime .nr-btn-sm .elementor-button:focus { background-color: var(--nr-orange-2); color: var(--nr-bg); }

/* Elementor centres button wrappers by default; this design left-aligns them */
body.nortime .nr-btn .elementor-button-wrapper,
body.nortime .nr-btn-ghost .elementor-button-wrapper,
body.nortime .nr-btn-sm .elementor-button-wrapper { text-align: left; }

/* ---------------------------------------------------------- header */

body.nortime .nr-header {
  display: block;
  position: sticky;
  top: 0;
  z-index: 60;
  background: rgba(10,10,11,.86);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--nr-line);
  width: 100%;
}
body.nortime .nr-header-in {
  display: flex;
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px clamp(16px, 3vw, 44px);
  max-width: var(--nr-shell);
  margin: 0 auto;
  padding: 10px var(--nr-gut);
  min-height: 72px;
  width: 100%;
}
body.nortime .nr-brand-w { flex: 0 0 auto; width: auto; }
body.nortime .nr-nav-w   { flex: 0 1 auto; width: auto; margin-left: auto; }
body.nortime .nr-header-right {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 14px;
  flex: 0 0 auto;
  width: auto;
  margin-left: auto;
}

body.nortime .nr-brand { display: flex; align-items: center; gap: 12px; }
body.nortime .nr-brand img { display: block; height: 38px; width: auto; }
/* the design's placeholder disc — superseded by the real wordmark in v2.css,
   kept only so an older revision of the page still renders sanely */
body.nortime .nr-logo-slot {
  width: 38px; height: 38px; border-radius: 50%;
  background: var(--nr-orange); color: var(--nr-bg);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--nr-mono); font-size: 8px; font-weight: 400;
  letter-spacing: .06em; line-height: 1.1; text-align: center; flex: 0 0 auto;
}
body.nortime .nr-wordmark {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 90;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: -.01em;
  color: var(--nr-ink);
  line-height: normal;
}
body.nortime .nr-nav {
  display: flex;
  gap: clamp(14px, 1.7vw, 26px);
  flex-wrap: nowrap;
  overflow-x: auto;
  white-space: nowrap;
  font-size: 14.5px;
  scrollbar-width: none;
}
body.nortime .nr-nav::-webkit-scrollbar { display: none; }
body.nortime .nr-nav a { color: var(--nr-muted); line-height: normal; }
body.nortime .nr-nav a:hover { color: var(--nr-ink); }
body.nortime .nr-header-tel .elementor-heading-title,
body.nortime .nr-header-tel a {
  font-family: var(--nr-sans);
  font-weight: 600;
  font-size: 15px;
  color: var(--nr-ink);
  letter-spacing: .01em;
  line-height: normal;
}

/* ---------------------------------------------------------- hero */

body.nortime .nr-hero {
  display: block;
  border-bottom: 1px solid var(--nr-line);
  background:
    radial-gradient(120% 90% at 8% -10%, rgba(255,116,31,.07) 0%, rgba(10,10,11,0) 55%),
    var(--nr-bg);
  width: 100%;
}
body.nortime .nr-hero-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: clamp(32px, 5vw, 72px);
  align-items: end;
  max-width: var(--nr-shell);
  margin: 0 auto;
  padding: clamp(48px, 6vw, 92px) var(--nr-gut) 0;
  width: 100%;
}
body.nortime .nr-hero-col {
  display: block;
  animation: nrEntra .7s cubic-bezier(.2,.7,.2,1) both;
  padding-bottom: clamp(48px, 6vw, 96px);
}
body.nortime .nr-hero-media {
  position: relative;
  align-self: stretch;
  min-height: clamp(320px, 46vw, 620px);
  border-left: 1px solid var(--nr-line);
  border-top: 1px solid var(--nr-line);
  background: repeating-linear-gradient(135deg, #141519 0 12px, #101116 12px 24px);
  display: flex;
  flex-direction: row;
  align-items: flex-end;
  padding: 18px;
}

body.nortime .nr-preco-w { margin: 30px 0 0; }
body.nortime .nr-preco-w p {
  display: inline-flex;
  align-items: baseline;
  gap: 10px;
  padding: 12px 16px;
  border: 1px solid var(--nr-orange);
  border-radius: 2px;
  background: rgba(255,116,31,.07);
  font-family: var(--nr-sans);
  font-size: 15px;
  font-weight: 600;
  color: var(--nr-ink);
  flex-wrap: wrap;
  margin: 0;
  line-height: normal;
}
body.nortime .nr-preco-w strong {
  font-family: var(--nr-sans);
  font-weight: 800;
  font-size: 22px;
  color: var(--nr-orange);
  letter-spacing: -.01em;
  line-height: normal;
}
body.nortime .nr-cta-row {
  display: flex;
  flex-direction: row;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 32px;
  width: 100%;
}
body.nortime .nr-cta-row > .elementor-widget { width: auto; flex: 0 0 auto; }

/* media slot — stands in until a real photo or video arrives */
body.nortime .nr-slot {
  position: relative;
  background: repeating-linear-gradient(135deg, #101116 0 12px, #141519 12px 24px);
  border: 1px solid var(--nr-line);
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  width: 100%;
}
body.nortime .nr-slot-4x5  { aspect-ratio: 4 / 5; }
body.nortime .nr-slot-16x9 { aspect-ratio: 16 / 9; }
body.nortime .nr-slot-label {
  font-family: var(--nr-mono);
  font-size: 11px;
  color: var(--nr-muted-2);
  background: rgba(10,10,11,.7);
  padding: 6px 8px;
  line-height: normal;
}
/* An Elementor widget wrapper is an extra box the design does not have. Where
   the markup inside must sit directly in the parent's flex/grid, display:contents
   removes the wrapper from layout without removing the widget from the editor. */
body.nortime .nr-slot-w { display: contents; }

/* when the client drops a real image in, it fills the slot */
body.nortime .nr-slot img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---------------------------------------------------------- client marks */

body.nortime .nr-marcas-sec {
  display: block;
  background: var(--nr-bg-deep);
  border-bottom: 1px solid var(--nr-line);
  width: 100%;
}
body.nortime .nr-marcas-row {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: clamp(20px, 4vw, 48px);
  flex-wrap: wrap;
  max-width: var(--nr-shell);
  margin: 0 auto;
  padding: 26px var(--nr-gut);
  width: 100%;
}
body.nortime .nr-marcas-t { flex: 0 0 auto; width: auto; }
body.nortime .nr-marcas-t .elementor-heading-title {
  font-family: var(--nr-mono);
  font-size: 11px;
  letter-spacing: .12em;
  line-height: normal;
  text-transform: uppercase;
  color: var(--nr-muted-3);
  font-weight: 400;
}
body.nortime .nr-marcas-w { flex: 1 1 320px; width: auto; }
body.nortime .nr-marcas {
  display: flex; align-items: center;
  gap: clamp(10px, 1.4vw, 16px); flex-wrap: wrap;
}
body.nortime .nr-marca {
  display: flex; align-items: center; gap: 10px;
  height: 52px; padding: 0 14px;
  border: 1px solid var(--nr-line-4); background: var(--nr-chip);
}
body.nortime .nr-marca-i {
  width: 26px; height: 26px; flex: 0 0 auto;
  border: 1px solid var(--nr-line-2);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--nr-sans); font-weight: 700; font-size: 11px;
  color: var(--nr-muted-3); letter-spacing: .02em;
}
body.nortime .nr-marca-t {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 92;
  font-weight: 600;
  font-size: 13.5px;
  color: var(--nr-muted-2);
  white-space: nowrap;
  line-height: normal;
}
body.nortime .nr-confirmar-w { flex: 1 1 100%; width: 100%; }

/* ---------------------------------------------------------- cards */

body.nortime .nr-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  border: 1px solid var(--nr-line);
  border-right: 0;
}
body.nortime .nr-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
  border-right: 1px solid var(--nr-line);
  padding: clamp(24px, 3vw, 36px);
}
body.nortime .nr-card-n .elementor-heading-title {
  font-family: var(--nr-mono); font-size: 12px; font-weight: 500; color: var(--nr-orange);
}

/* ---------------------------------------------------------- narrow */

/* The design's own breakpoint is 1120px, and it does not hide the nav — the nav
   drops to its own full-width row and scrolls sideways. Only the header phone
   number goes. See responsive-spec.md. */
@media (max-width: 1119.98px) {
  body.nortime .nr-nav-w { flex: 1 1 100%; order: 3; margin-left: 0; }
  body.nortime .nr-header-tel { display: none; }
}

/* ====================================================== registo diário */

body.nortime .nr-head-l { display: block; }

/* the "DIA 30 / 30" reading, on a rule above the strip */
body.nortime .nr-leitura {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: clamp(40px, 5vw, 72px);
  padding-bottom: 14px;
  border-bottom: 1px solid var(--nr-line);
  width: 100%;
}
body.nortime .nr-viz { display: block; margin-top: clamp(28px, 4vw, 44px); }

body.nortime .nr-pelicula-w { display: contents; }
body.nortime .nr-pelicula {
  position: relative;
  background: var(--nr-bg-deep);
  border: 1px solid var(--nr-line);
  padding: clamp(14px, 2vw, 26px) clamp(10px, 1.6vw, 20px);
}
/* sprocket holes, top and bottom */
body.nortime .nr-perf {
  height: 10px;
  background: repeating-linear-gradient(90deg, #0A0A0B 0 10px, #1B1C20 10px 18px);
  opacity: .9;
}
body.nortime .nr-tira { position: relative; margin: 12px 0; }

/* base layer: always present, so the strip still reads without JS */
body.nortime .nr-tira-base {
  display: flex;
  gap: clamp(3px, .5vw, 6px);
  opacity: .22;
  filter: grayscale(1);
}
body.nortime .nr-frame {
  flex: 1 1 0;
  aspect-ratio: 1 / 1.12;
  min-width: 0;
  background: #131418;
  border: 1px solid #1B1C20;
}
/* live layer: revealed left-to-right by nortime.js as the section scrolls in */
body.nortime .nr-tira-viva {
  position: absolute;
  inset: 0;
  display: flex;
  gap: clamp(3px, .5vw, 6px);
  clip-path: inset(0 0% 0 0);
}
body.nortime .nr-frame-viva {
  flex: 1 1 0;
  aspect-ratio: 1 / 1.12;
  min-width: 0;
  padding: 0;
  cursor: default;
  position: relative;
  border: 1px solid #26262B;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
body.nortime .nr-frame-viva.is-video { border-color: var(--nr-orange); }

body.nortime .nr-tira-pes {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-top: 14px;
  font-family: var(--nr-mono);
  font-size: 11px;
  line-height: normal;
  color: var(--nr-muted-3);
}
body.nortime .nr-tira-fim { color: var(--nr-orange); font-weight: 500; }

body.nortime .nr-viz-nota { margin: 20px 0 0; }
body.nortime .nr-viz-nota .elementor-heading-title {
  font-family: var(--nr-body);
  font-weight: 400;
  font-size: 16.5px;
  line-height: 1.6;
  color: var(--nr-muted);
  max-width: 60ch;
}

/* the four reasons, as a hairline grid */
body.nortime .nr-pontos {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  margin-top: clamp(48px, 6vw, 88px);
  background: var(--nr-line);
  border: 1px solid var(--nr-line);
}
body.nortime .nr-ponto {
  display: block;
  background: var(--nr-surface);
  padding: clamp(22px, 2.6vw, 34px);
}
body.nortime .nr-ponto-n .elementor-heading-title {
  font-family: var(--nr-sans);
  font-weight: 700;
  font-size: 13px;
  color: var(--nr-orange);
  letter-spacing: .12em;
  line-height: normal;
}
body.nortime .nr-ponto-t { margin: 14px 0 0; }
body.nortime .nr-ponto-t .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 92;
  font-weight: 700;
  font-size: 20px;
  line-height: 1.16;
  color: var(--nr-ink);
}
body.nortime .nr-ponto-p { margin: 12px 0 0; }
body.nortime .nr-ponto-p .elementor-heading-title {
  font-family: var(--nr-body);
  font-weight: 400;
  font-size: 16.5px;
  line-height: 1.58;
  color: var(--nr-muted);
}

/* colunasPontos, from the design's own script */
@media (max-width: 1199.98px) {
  body.nortime .nr-pontos { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 619.98px) {
  body.nortime .nr-pontos { grid-template-columns: 1fr; }
}

@keyframes nrDeslizaEsq { from { transform: translate3d(0,0,0); } to { transform: translate3d(-50%,0,0); } }
@keyframes nrDeslizaDir { from { transform: translate3d(-50%,0,0); } to { transform: translate3d(0,0,0); } }

/* ================================================== shared section pieces */

body.nortime .nr-sec-deep { background: var(--nr-bg-deep); }

/* head variant used from exemplos onward: eyebrow above, h2 and lede side by side */
body.nortime .nr-head2 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(16px, 3vw, 56px);
  align-items: end;
  margin-top: 16px;
}
body.nortime .nr-h2-flat { margin: 0; }
body.nortime .nr-h2-flat .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 88;
  font-weight: 700;
  font-size: clamp(30px, 4.2vw, 54px);
  line-height: 1.02;
  letter-spacing: -.02em;
  color: var(--nr-ink);
}
body.nortime .nr-h2-18ch .elementor-heading-title { max-width: 18ch; }
body.nortime .nr-lede2 .elementor-heading-title {
  font-family: var(--nr-body);
  font-weight: 400;
  font-size: 18px;
  line-height: 1.6;
  color: var(--nr-muted);
  max-width: 44ch;
}
body.nortime .nr-lede-46 .elementor-heading-title { max-width: 46ch; }

/* the real mark on the design's orange disc */
body.nortime .nr-logo-slot img { display: block; width: 100%; height: 100%; object-fit: contain; }
body.nortime .nr-logo-slot { padding: 5px; overflow: hidden; }
body.nortime .nr-logo-sm { width: 34px; height: 34px; padding: 4px; }

/* ================================================================ exemplos */

body.nortime .nr-grid3 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(14px, 2vw, 28px);
  margin-top: clamp(32px, 4vw, 56px);
}
body.nortime .nr-fig { display: block; }
body.nortime .nr-poster-w { display: block; }
body.nortime .nr-poster {
  display: block;
  width: 100%;
  padding: 0;
  border: 1px solid var(--nr-line);
  background: repeating-linear-gradient(135deg, #141519 0 12px, #101116 12px 24px);
  aspect-ratio: 16 / 9;
  position: relative;
  cursor: pointer;
  overflow: hidden;
}
body.nortime .nr-poster.is-alt {
  background: repeating-linear-gradient(135deg, #16171C 0 12px, #111217 12px 24px);
}
body.nortime .nr-play-wrap {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
}
body.nortime .nr-play {
  width: 54px; height: 54px; border-radius: 50%;
  background: var(--nr-orange);
  display: flex; align-items: center; justify-content: center;
  border: 1px solid rgba(255,255,255,.14);
}
body.nortime .nr-play-tri {
  width: 0; height: 0;
  border-left: 13px solid var(--nr-bg);
  border-top: 8px solid transparent;
  border-bottom: 8px solid transparent;
  margin-left: 3px;
}
body.nortime .nr-poster-label {
  position: absolute; left: 12px; bottom: 10px;
  font-family: var(--nr-mono); font-size: 10.5px; line-height: normal;
  color: var(--nr-muted-2);
  background: rgba(8,8,10,.72);
  padding: 5px 7px;
}
body.nortime .nr-figcap {
  display: flex; flex-direction: row;
  justify-content: space-between; gap: 12px; align-items: baseline;
  margin-top: 12px;
}
body.nortime .nr-figcap-t .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 16px; line-height: normal; color: var(--nr-ink);
}
body.nortime .nr-figcap-d { flex: 0 0 auto; }
body.nortime .nr-figcap-d .elementor-heading-title {
  font-family: var(--nr-mono); font-size: 11px; line-height: normal; color: var(--nr-muted-3);
}

/* ================================================================= galeria */

body.nortime .nr-galeria {
  position: relative;
  overflow: hidden;            /* the marquee is ~6000px wide; the design clips it here */
  padding: clamp(64px, 8vw, 120px) 0;
}
body.nortime .nr-glow-w { display: contents; }
body.nortime .nr-galeria-glow {
  position: absolute;
  left: -10%; top: 0; width: 120%; height: 100%;
  background: radial-gradient(55% 55%, rgba(255,116,31,.10) 0%, rgba(255,116,31,.03) 42%, rgba(10,10,11,0) 72%);
  pointer-events: none;
}
body.nortime .nr-galeria-shell { position: relative; }
body.nortime .nr-fita-w { display: contents; }
body.nortime .nr-fita-caixa {
  position: relative;
  margin-top: clamp(32px, 4vw, 56px);
  -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0) 0%, #000 14%, #000 86%, rgba(0,0,0,0) 100%);
          mask-image: linear-gradient(90deg, rgba(0,0,0,0) 0%, #000 14%, #000 86%, rgba(0,0,0,0) 100%);
}
body.nortime .nr-fita {
  display: flex;
  gap: clamp(10px, 1.4vw, 18px);
  width: max-content;
}
body.nortime .nr-fita-esq { animation: nrDeslizaEsq 64s linear infinite; }
body.nortime .nr-fita-dir {
  animation: nrDeslizaDir 78s linear infinite;
  margin-top: clamp(10px, 1.4vw, 18px);
}
/* the copy says "passe o rato para parar" */
body.nortime .nr-fita-caixa:hover .nr-fita { animation-play-state: paused; }

body.nortime .nr-tile {
  margin: 0;
  flex: 0 0 auto;
  aspect-ratio: 16 / 10;
  border: 1px solid var(--nr-line);
  background: repeating-linear-gradient(135deg, #141519 0 12px, #101116 12px 24px);
  display: flex;
  align-items: flex-end;
}
body.nortime .nr-tile.is-alt {
  background: repeating-linear-gradient(135deg, #17181D 0 12px, #111217 12px 24px);
}
body.nortime .nr-w380 { width: clamp(240px, 26vw, 380px); }
body.nortime .nr-w290 { width: clamp(190px, 20vw, 290px); }
body.nortime .nr-w440 { width: clamp(280px, 30vw, 440px); }
body.nortime .nr-tile-cap {
  font-family: var(--nr-mono); font-size: 10.5px; line-height: normal;
  color: var(--nr-muted-2);
  background: rgba(8,8,10,.72);
  padding: 5px 7px;
  margin: 10px;
}

@media (prefers-reduced-motion: reduce) {
  body.nortime .nr-fita { animation: none !important; transform: none !important; }
  body.nortime .nr-fita-caixa { overflow-x: auto !important; }
}

/* ================================================================== planos */

body.nortime .nr-matriz {
  display: block;
  margin-top: clamp(20px, 3vw, 64px);
  border: 1px solid var(--nr-line);
  background: #0C0C0E;
}
body.nortime .nr-mx-head,
body.nortime .nr-mx-linha {
  display: grid;
  grid-template-columns: minmax(240px, 1.7fr) repeat(3, minmax(150px, 1fr));
}
body.nortime .nr-mx-head { background: var(--nr-surface); }
body.nortime .nr-mx-linha { border-top: 1px solid var(--nr-line); }

body.nortime .nr-mx-lbl {
  padding: 22px 24px;
  border-right: 1px solid var(--nr-line);
}
body.nortime .nr-mx-lbl .elementor-heading-title {
  font-family: var(--nr-mono); font-size: 11px; line-height: normal;
  letter-spacing: .12em; text-transform: uppercase; color: var(--nr-muted-3);
  font-weight: 400;
}
body.nortime .nr-mx-plano {
  display: block;
  padding: 22px 24px;
  border-right: 1px solid var(--nr-line);
  background: var(--nr-surface);
  position: relative;
}
body.nortime .nr-mx-plano:last-child { border-right: 0; }
body.nortime .nr-badge-w { display: contents; }
body.nortime .nr-mx-badge {
  position: absolute; top: 0; left: 0;
  background: var(--nr-orange); color: var(--nr-bg);
  font-family: var(--nr-sans); font-weight: 700; font-size: 10px;
  letter-spacing: .14em; padding: 5px 8px;
}
body.nortime .nr-mx-nome { margin: 14px 0 0; }
body.nortime .nr-mx-nome .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 94;
  font-weight: 700; font-size: 19px; line-height: normal; color: var(--nr-ink);
}
body.nortime .nr-mx-preco { margin: 10px 0 0; }
body.nortime .nr-mx-preco p {
  display: flex; align-items: baseline; gap: 6px; margin: 0; line-height: normal;
}
body.nortime .nr-mx-preco strong {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 100;
  font-weight: 800;
  font-size: clamp(34px, 3.4vw, 46px);
  line-height: 1;
  letter-spacing: -.03em;
  color: var(--nr-orange);
  font-feature-settings: "tnum";
}
body.nortime .nr-mx-preco span {
  font-family: var(--nr-sans); font-weight: 600; font-size: 15px; color: var(--nr-orange);
}
body.nortime .nr-mx-iva { margin: 8px 0 0; }
body.nortime .nr-mx-iva .elementor-heading-title {
  font-family: var(--nr-mono); font-size: 11px; line-height: normal; color: var(--nr-muted);
}

body.nortime .nr-mx-l {
  padding: 18px 24px;
  border-right: 1px solid var(--nr-line);
}
body.nortime .nr-mx-l .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 16.5px; line-height: 1.45; color: var(--nr-ink);
}
body.nortime .nr-mx-c {
  padding: 18px 24px;
  border-right: 1px solid var(--nr-line);
}
body.nortime .nr-mx-c .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 15px; line-height: 1.45; color: var(--nr-ink);
}
body.nortime .nr-mx-c.is-on .elementor-heading-title { color: var(--nr-orange); }
/* decorative per the notes: the meaning lives in the column header */
body.nortime .nr-mx-c.is-off .elementor-heading-title { color: var(--nr-dim); }
body.nortime .nr-mx-c.is-last {
  border-right: 0;
  background: rgba(255,116,31,.03);
}

body.nortime .nr-planos-pe {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(20px, 3vw, 48px);
  align-items: center;
  margin-top: clamp(32px, 4vw, 52px);
}
body.nortime .nr-planos-nota .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 15.5px; line-height: 1.6; color: var(--nr-muted-2); max-width: 64ch;
}
body.nortime .nr-planos-cta {
  display: flex; flex-direction: row; gap: 12px; flex-wrap: wrap; justify-content: flex-end;
}
body.nortime .nr-planos-cta > .elementor-widget { width: auto; flex: 0 0 auto; }

/* ================================================================ incluído */

body.nortime .nr-inc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: clamp(20px, 2.5vw, 40px);
  margin-top: clamp(32px, 4vw, 56px);
}
body.nortime .nr-inc-col {
  display: block;
  border-top: 1px solid var(--nr-line);
  padding-top: 22px;
}
body.nortime .nr-inc-t .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 92;
  font-weight: 700; font-size: 21px; line-height: normal; color: var(--nr-ink);
}
body.nortime .nr-inc-p { margin: 12px 0 0; }
body.nortime .nr-inc-p .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 17px; line-height: 1.6; color: var(--nr-muted);
}

body.nortime .nr-rgpd {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 0;
  margin-top: clamp(28px, 3.5vw, 48px);
  border: 1px solid var(--nr-orange);
  background: var(--nr-surface);
}
body.nortime .nr-rgpd-txt { display: block; padding: clamp(28px, 3.4vw, 48px); }
body.nortime .nr-rgpd-tag .elementor-heading-title {
  font-family: var(--nr-mono); font-size: 11px; line-height: normal;
  letter-spacing: .14em; text-transform: uppercase; color: var(--nr-orange); font-weight: 400;
}
body.nortime .nr-rgpd-t { margin: 16px 0 0; }
body.nortime .nr-rgpd-t .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 88;
  font-weight: 700;
  font-size: clamp(24px, 2.6vw, 34px);
  line-height: 1.08;
  color: var(--nr-ink);
  max-width: 22ch;
}
body.nortime .nr-rgpd-p { margin: 16px 0 0; }
body.nortime .nr-rgpd-p .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 18px; line-height: 1.6; color: var(--nr-ink); max-width: 50ch;
}
body.nortime .nr-rgpd-media {
  min-height: 220px;
  background: repeating-linear-gradient(135deg, #141519 0 12px, #101116 12px 24px);
  display: flex;
  flex-direction: row;
  align-items: flex-end;
  padding: 16px;
  border-left: 1px solid var(--nr-line);
}

/* =========================================================== como funciona */

body.nortime .nr-passos {
  display: flex;
  flex-direction: column;
  margin: clamp(32px, 4vw, 56px) 0 0;
  padding: 0;
}
body.nortime .nr-passo {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: clamp(12px, 3vw, 48px);
  padding: clamp(22px, 2.6vw, 32px) 0;
  border-top: 1px solid var(--nr-line);
  align-items: baseline;
}
body.nortime .nr-passo-l {
  display: flex;
  flex-direction: row;
  gap: 18px;
  align-items: baseline;
}
body.nortime .nr-passo-n { flex: 0 0 auto; }
body.nortime .nr-passo-n .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 100;
  font-weight: 800;
  font-size: clamp(28px, 3vw, 40px);
  line-height: 1;
  color: var(--nr-orange);
}
body.nortime .nr-passo-t .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 92;
  font-weight: 700;
  font-size: clamp(19px, 2vw, 25px);
  line-height: 1.14;
  color: var(--nr-ink);
}
body.nortime .nr-passo-p .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 17px; line-height: 1.6; color: var(--nr-muted);
}
body.nortime .nr-passos-pe {
  display: flex;
  flex-direction: row;
  gap: 14px;
  flex-wrap: wrap;
  align-items: center;
  border-top: 1px solid var(--nr-line);
  padding-top: clamp(24px, 3vw, 36px);
}
body.nortime .nr-passos-pe > .elementor-widget { width: auto; flex: 0 0 auto; }
body.nortime .nr-passos-nota .elementor-heading-title {
  font-family: var(--nr-mono); font-size: 11.5px; line-height: normal; color: var(--nr-muted-3);
  font-weight: 400;
}

/* ==================================================================== além */

body.nortime .nr-alem { padding: clamp(60px, 7vw, 110px) 0; }
body.nortime .nr-alem-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(24px, 4vw, 64px);
  max-width: var(--nr-shell);
  margin: 0 auto;
  padding: 0 var(--nr-gut);
  width: 100%;
}
body.nortime .nr-alem-l, body.nortime .nr-alem-r { display: block; }
body.nortime .nr-h2-alem { margin: 16px 0 0; }
body.nortime .nr-h2-alem .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 88;
  font-weight: 700;
  font-size: clamp(28px, 3.4vw, 44px);
  line-height: 1.04;
  letter-spacing: -.02em;
  color: var(--nr-ink);
}
body.nortime .nr-chips-w { display: block; }
body.nortime .nr-chips {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 24px 0 0;
  padding: 0;
}
body.nortime .nr-chips li {
  border: 1px solid var(--nr-line);
  background: var(--nr-surface);
  padding: 10px 14px;
  margin: 0;
  font-family: var(--nr-sans);
  font-weight: 600;
  font-size: 15px;
  line-height: normal;
  color: var(--nr-ink);
}

/* =============================================================== perguntas */

body.nortime .nr-perg-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(24px, 4vw, 72px);
  align-items: start;
  max-width: var(--nr-shell);
  margin: 0 auto;
  padding: 0 var(--nr-gut);
  width: 100%;
}
body.nortime .nr-perg-l, body.nortime .nr-perg-r { display: block; }
body.nortime .nr-h2-perg { margin: 16px 0 0; }
body.nortime .nr-h2-perg .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 88;
  font-weight: 700;
  font-size: clamp(30px, 4.2vw, 50px);
  line-height: 1.03;
  letter-spacing: -.02em;
  color: var(--nr-ink);
  max-width: 18ch;
}
body.nortime .nr-faq { display: block; border-top: 1px solid var(--nr-line); }
body.nortime .nr-faq-h-w { display: contents; }
body.nortime .nr-faq-h { margin: 0; }
body.nortime .nr-faq-b {
  display: flex;
  width: 100%;
  gap: 16px;
  justify-content: space-between;
  align-items: baseline;
  background: none;
  border: 0;
  padding: 22px 0;
  cursor: pointer;
  text-align: left;
  min-height: 52px;
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 94;
  font-weight: 700;
  font-size: 19px;
  line-height: 1.24;
  color: var(--nr-ink);
}
body.nortime .nr-faq-sinal {
  font-family: var(--nr-mono); font-size: 15px; color: var(--nr-orange); flex: 0 0 auto;
}
/* Elementor ships `.e-con .elementor-widget.elementor-widget { margin-block-end: 0 }`
   at (0,3,0), which outranks a `body.nortime .x` rule at (0,2,1). Any BOTTOM
   margin on a widget wrapper therefore needs a third class to land. Top margins
   are unaffected, which is why only this one broke. */
body.nortime .nr-faq .nr-faq-p.elementor-widget { margin: 0 0 24px; }
body.nortime .nr-faq-p .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 17px; line-height: 1.62; color: var(--nr-muted); max-width: 62ch;
}
body.nortime .nr-faq-p.is-closed { display: none; }

/* ================================================================== footer */

body.nortime .nr-rodape { display: block; background: var(--nr-bg); padding: clamp(40px, 5vw, 64px) 0; }
body.nortime .nr-rodape-in {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 24px;
  align-items: center;
  max-width: var(--nr-shell);
  margin: 0 auto;
  padding: 0 var(--nr-gut);
  width: 100%;
}
body.nortime .nr-brand-pe { display: flex; align-items: center; gap: 12px; }
body.nortime .nr-wordmark-pe {
  font-family: var(--nr-sans); font-weight: 700; font-size: 15px; color: var(--nr-ink);
}
body.nortime .nr-rodape-p .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 15.5px; line-height: normal; color: var(--nr-muted);
}
body.nortime .nr-rodape-tel .elementor-heading-title,
body.nortime .nr-rodape-tel a {
  font-family: var(--nr-sans); font-weight: 600; font-size: 15.5px;
  line-height: normal; color: var(--nr-ink);
}
body.nortime .nr-rodape-ig .elementor-heading-title,
body.nortime .nr-rodape-ig a {
  font-family: var(--nr-body); font-size: 15.5px; line-height: normal; color: var(--nr-orange);
}

/* ================================= sticky call bar, narrow screens only */
/* nortime.js shows this once the hero is scrolled past, below 900px, matching
   the design's `movel && passouHero`. */
body.nortime .nr-barra-w { display: contents; }
body.nortime .nr-barra {
  display: none;
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 70;
  gap: 10px;
  padding: 10px 14px;
  background: rgba(10,10,11,.94);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-top: 1px solid var(--nr-line);
}
body.nortime .nr-barra-tel,
body.nortime .nr-barra-planos {
  display: flex; align-items: center; justify-content: center;
  min-height: 48px; border-radius: 2px;
  font-family: var(--nr-sans); font-weight: 700; font-size: 15.5px;
}
body.nortime .nr-barra-tel { flex: 1 1 auto; background: var(--nr-orange); color: var(--nr-bg); }
body.nortime .nr-barra-planos { flex: 0 0 auto; padding: 0 16px; border: 1px solid var(--nr-line-3); color: var(--nr-ink); }
@media (max-width: 899.98px) { body.nortime { padding-bottom: 84px; } }

/* ================================================================ contacto */

body.nortime .nr-contacto { background: var(--nr-surface); }
body.nortime .nr-ct-grid {
  display: grid;
  grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
  gap: 0;
  align-items: stretch;
  max-width: var(--nr-shell);
  margin: 0 auto;
  padding: 0 var(--nr-gut);
  width: 100%;
}
body.nortime .nr-ct-l {
  display: flex;
  flex-direction: column;
  gap: clamp(28px, 3.5vw, 44px);
  padding: 0 clamp(0px, 3vw, 48px) 0 0;
}
body.nortime .nr-ct-l-top { display: block; }
body.nortime .nr-h2-ct { margin: 16px 0 0; }
body.nortime .nr-h2-ct .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 86;
  font-weight: 800;
  font-size: clamp(32px, 4.6vw, 58px);
  line-height: 1;
  letter-spacing: -.025em;
  color: var(--nr-ink);
  max-width: 16ch;
}
body.nortime .nr-ct-lede { margin: 20px 0 0; }
body.nortime .nr-ct-lede .elementor-heading-title {
  font-family: var(--nr-body); font-weight: 400;
  font-size: 18px; line-height: 1.6; color: var(--nr-muted); max-width: 46ch;
}

/* the two contact cards sit at the bottom of the column */
body.nortime .nr-ct-cards {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: auto;
}
body.nortime .nr-ct-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: var(--nr-bg);
  border: 1px solid var(--nr-line);
  padding: 22px 24px;
  border-radius: 2px;
}
body.nortime .nr-ct-card.is-primary {
  background: var(--nr-orange);
  color: var(--nr-bg);
  border: 0;
}
body.nortime .nr-ct-card.is-primary:hover { background: var(--nr-orange-2); color: var(--nr-bg); }
body.nortime .nr-ct-card:not(.is-primary):hover { border-color: var(--nr-ink); }
body.nortime .nr-ct-card-l {
  font-family: var(--nr-mono); font-size: 10.5px; line-height: normal;
  letter-spacing: .14em; text-transform: uppercase; color: rgba(10,10,11,.66);
}
body.nortime .nr-ct-card-b {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 96;
  font-weight: 800;
  font-size: clamp(23px, 2.5vw, 31px);
  line-height: 1;
  letter-spacing: -.02em;
}
body.nortime .nr-ct-card-n {
  font-family: var(--nr-mono); font-size: 11.5px; line-height: normal; color: rgba(10,10,11,.72);
}
body.nortime .nr-ct-card-ig {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 96;
  font-weight: 700;
  font-size: clamp(19px, 2vw, 24px);
  line-height: 1;
  color: var(--nr-ink);
}
body.nortime .nr-ct-card-p {
  font-family: var(--nr-body);
  font-size: 15.5px; line-height: 1.5; color: var(--nr-muted);
}

body.nortime .nr-ct-r {
  display: block;
  border-left: 1px solid var(--nr-line);
  border-top: 0;
  padding: 0 0 0 clamp(28px, 3.5vw, 56px);
}

/* --------------------------------------------------------------- the form */

body.nortime .nr-form-w { display: block; }
body.nortime .nr-form {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px 18px;
}
/* honeypot — present for bots, gone for everyone else */
body.nortime .nr-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

body.nortime .nr-form-head {
  grid-column: 1 / -1;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  flex-wrap: wrap;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--nr-line);
}
body.nortime .nr-form-h {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 94;
  font-weight: 700; font-size: 19px; line-height: normal; color: var(--nr-ink);
}
body.nortime .nr-form-sub {
  font-family: var(--nr-mono); font-size: 11px; line-height: normal; color: var(--nr-muted-3);
}
body.nortime .nr-form-ok {
  grid-column: 1 / -1;
  font-family: var(--nr-sans); font-weight: 700; font-size: 15px;
  color: var(--nr-orange);
  border: 1px solid var(--nr-orange);
  background: rgba(255,116,31,.07);
  padding: 12px 16px; border-radius: 2px;
}

body.nortime .nr-f { display: flex; flex-direction: column; gap: 7px; }
body.nortime .nr-f-full { grid-column: 1 / -1; }
body.nortime .nr-f-l {
  font-family: var(--nr-mono); font-size: 10.5px; line-height: normal;
  letter-spacing: .1em; text-transform: uppercase; color: var(--nr-muted-2);
}
body.nortime .nr-f-opt { text-transform: none; letter-spacing: 0; color: var(--nr-dim); }

body.nortime .nr-in {
  background: var(--nr-bg);
  border: 0;
  border-bottom: 1px solid var(--nr-line-2);
  border-radius: 0;
  color: var(--nr-ink);
  font-family: var(--nr-body);
  font-size: 17px;
  padding: 12px 2px;
  min-height: 48px;
  width: 100%;
  box-shadow: none;
}
body.nortime .nr-in:focus { border-bottom-color: var(--nr-orange); outline: 0; }
body.nortime .nr-in::placeholder { color: var(--nr-muted-3); opacity: 1; }

body.nortime .nr-ta {
  background: var(--nr-bg);
  border: 1px solid var(--nr-line-2);
  border-radius: 2px;
  color: var(--nr-ink);
  font-family: var(--nr-body);
  font-size: 17px;
  line-height: 1.5;
  padding: 14px;
  resize: vertical;
  width: 100%;
  box-shadow: none;
}
body.nortime .nr-ta:focus { border-color: var(--nr-orange); outline: 0; }
body.nortime .nr-ta::placeholder { color: var(--nr-muted-3); opacity: 1; }

body.nortime .nr-f-grupo {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 4px 0 0;
}
body.nortime .nr-f-planos { display: flex; gap: 8px; flex-wrap: wrap; }
body.nortime .nr-plano-b {
  font-family: var(--nr-sans);
  font-weight: 600;
  font-size: 14.5px;
  line-height: normal;
  padding: 11px 15px;
  min-height: 44px;
  border: 1px solid var(--nr-line-2);
  border-radius: 2px;
  cursor: pointer;
  background: transparent;
  color: var(--nr-muted);
  white-space: nowrap;
}
body.nortime .nr-plano-b:hover { border-color: var(--nr-muted); color: var(--nr-ink); }
body.nortime .nr-plano-b.is-on {
  border-color: var(--nr-orange);
  background: var(--nr-orange);
  color: var(--nr-bg);
}

body.nortime .nr-f-pe {
  grid-column: 1 / -1;
  display: flex;
  gap: 16px;
  align-items: center;
  flex-wrap: wrap;
  border-top: 1px solid var(--nr-line);
  padding-top: 20px;
}
body.nortime .nr-f-submit {
  background: var(--nr-orange);
  color: var(--nr-bg);
  font-family: var(--nr-sans);
  font-weight: 700;
  font-size: 16.5px;
  line-height: normal;
  padding: 16px 24px;
  border: 0;
  border-radius: 2px;
  min-height: 52px;
  cursor: pointer;
  white-space: nowrap;
}
body.nortime .nr-f-submit:hover { background: var(--nr-orange-2); }
body.nortime .nr-f-nota {
  font-family: var(--nr-body);
  font-size: 14.5px; line-height: 1.5; color: var(--nr-muted-2); max-width: 34ch;
}
body.nortime .nr-form .nr-confirmar { grid-column: 1 / -1; }

/* colsContacto / colsForm, from the design's own script */
@media (max-width: 979.98px) {
  body.nortime .nr-ct-grid { grid-template-columns: 1fr; }
  body.nortime .nr-ct-l { padding: 0; }
  body.nortime .nr-ct-r {
    border-left: 0;
    border-top: 1px solid var(--nr-line);
    padding: clamp(28px, 4vw, 40px) 0 0;
  }
}
@media (max-width: 619.98px) {
  body.nortime .nr-form { grid-template-columns: 1fr; }
}

/* ------------------------------------- planos: the mobile plan selector */
/* movelPlanos = w < 860. Above it the matrix shows all three plans; below it
   collapses to feature + one plan, chosen by this selector. */

body.nortime .nr-seletor-w { display: block; }
body.nortime .nr-seletor {
  display: none;
  gap: 6px;
  margin-top: clamp(28px, 4vw, 40px);
  border: 1px solid var(--nr-line);
  padding: 4px;
  border-radius: 2px;
}
body.nortime .nr-sel-b {
  flex: 1 1 0;
  font-family: var(--nr-sans);
  font-weight: 700;
  font-size: 14px;
  line-height: normal;
  padding: 12px 8px;
  min-height: 44px;
  border: 0;
  border-radius: 2px;
  cursor: pointer;
  background: transparent;
  color: var(--nr-muted);
}
body.nortime .nr-sel-b.is-on { background: var(--nr-orange); color: var(--nr-bg); }

/* the design's inner wrapper carries min-width 760px above the breakpoint */
@media (min-width: 860px) {
  body.nortime .nr-mx-head,
  body.nortime .nr-mx-linha { min-width: 760px; }
}

@media (max-width: 859.98px) {
  body.nortime .nr-seletor { display: flex; }
  body.nortime .nr-mx-head,
  body.nortime .nr-mx-linha { grid-template-columns: minmax(0, 1.5fr) minmax(96px, 1fr); }

  /* show only the selected plan's column */
  body.nortime .nr-matriz[data-nr-plano="0"] > * > :nth-child(3),
  body.nortime .nr-matriz[data-nr-plano="0"] > * > :nth-child(4),
  body.nortime .nr-matriz[data-nr-plano="1"] > * > :nth-child(2),
  body.nortime .nr-matriz[data-nr-plano="1"] > * > :nth-child(4),
  body.nortime .nr-matriz[data-nr-plano="2"] > * > :nth-child(2),
  body.nortime .nr-matriz[data-nr-plano="2"] > * > :nth-child(3) { display: none; }

  /* whichever column is last on screen carries no right border */
  body.nortime .nr-matriz .nr-mx-plano,
  body.nortime .nr-matriz .nr-mx-c { border-right: 0; }
  body.nortime .nr-matriz .nr-mx-c.is-last { background: none; }
}

/* Without JS the attribute is absent; default to Premium, as the design does. */
@media (max-width: 859.98px) {
  body.nortime .nr-matriz:not([data-nr-plano]) > * > :nth-child(2),
  body.nortime .nr-matriz:not([data-nr-plano]) > * > :nth-child(3) { display: none; }
}

/* Astra sets a heavier weight on button text; these captions are 400 in the design. */
body.nortime .nr-poster-label,
body.nortime .nr-tile-cap,
body.nortime .nr-slot-label { font-weight: 400; }

/* ============================================================================
   REVISION 2 — client feedback, 22/08/2026
   1. the real wordmark (type + inline SVG clock) replaces the placeholder disc
   2. a drawer menu below 1120px instead of a sideways-scrolling nav
   3. mobile density pass, mainly the plans matrix
   4. studio credit in the footer
   These are deliberate departures from the export: the design's logo was a
   [CONFIRMAR] placeholder, and its mobile nav clipped mid-word.
   ========================================================================== */

/* ------------------------------------------------------------- the wordmark */

body.nortime .hdr__mark { display: inline-flex; text-decoration: none; color: var(--nr-ink); }
body.nortime .hdr__mark:hover { color: var(--nr-ink); }

body.nortime .mark {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;          /* "Lapse" hangs off the right, as in the logo */
  line-height: 1;
  color: currentColor;
  font-family: var(--nr-sans);
  font-weight: 800;
}
body.nortime .mark__row {
  display: inline-flex;
  align-items: center;
  font-size: 1em;
  letter-spacing: -.005em;
  white-space: nowrap;
}
/* the clock stands in for the O, so it is sized and seated on the cap height */
/* Sized against the client's original: the clock overshoots the cap height
   rather than sitting inside it. Tuned by rendering both side by side. */
body.nortime .mark__row svg {
  width: 1.06em;
  height: 1.06em;
  display: block;
  margin: 0 .012em;
  flex: 0 0 auto;
  overflow: visible;
}
body.nortime .mark__lapse {
  font-weight: 700;
  font-size: .35em;
  letter-spacing: .36em;
  margin-top: .06em;
  margin-right: -.36em;           /* cancel the trailing letter-space so it aligns right */
  color: currentColor;
}

body.nortime .mark--sm { font-size: 23px; }   /* header */
body.nortime .mark--xs { font-size: 19px; }   /* footer */

/* --------------------------------------------------------- the drawer menu */

body.nortime .nr-menu-w { display: contents; }

body.nortime .nr-burger {
  display: none;
  width: 46px; height: 46px;
  margin-left: auto;
  padding: 0;
  border: 1px solid var(--nr-line-2);
  border-radius: 2px;
  background: transparent;
  cursor: pointer;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}
body.nortime .nr-burger:hover { border-color: var(--nr-muted); }
body.nortime .nr-burger-bars { display: block; width: 20px; }
body.nortime .nr-burger-bars i {
  display: block;
  height: 2px;
  background: var(--nr-ink);
  border-radius: 2px;
  transition: transform .22s ease, opacity .16s ease;
}
body.nortime .nr-burger-bars i + i { margin-top: 5px; }
body.nortime .nr-burger[aria-expanded="true"] .nr-burger-bars i:nth-child(1) { transform: translateY(7px) rotate(45deg); }
body.nortime .nr-burger[aria-expanded="true"] .nr-burger-bars i:nth-child(2) { opacity: 0; }
body.nortime .nr-burger[aria-expanded="true"] .nr-burger-bars i:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

body.nortime .nr-menu {
  display: none;
  flex: 1 1 100%;
  order: 9;
  flex-direction: column;
  gap: 2px;
  padding: 8px 0 14px;
  margin-top: 10px;
  border-top: 1px solid var(--nr-line);
}
body.nortime .nr-menu[hidden] { display: none; }
body.nortime .nr-menu.is-open { display: flex; }

body.nortime .nr-menu-nav { display: flex; flex-direction: column; }
body.nortime .nr-menu-nav a {
  display: flex;
  align-items: center;
  min-height: 52px;
  padding: 4px 2px;
  font-family: var(--nr-sans);
  font-weight: 600;
  font-size: 17px;
  color: var(--nr-ink);
  border-bottom: 1px solid var(--nr-line);
}
body.nortime .nr-menu-nav a:hover { color: var(--nr-orange); }
body.nortime .nr-menu-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  margin-top: 14px;
  padding: 0 20px;
  border-radius: 2px;
  background: var(--nr-orange);
  color: var(--nr-bg);
  font-family: var(--nr-sans);
  font-weight: 700;
  font-size: 16.5px;
}
body.nortime .nr-menu-cta:hover { background: var(--nr-orange-2); color: var(--nr-bg); }
body.nortime .nr-menu-nota {
  font-family: var(--nr-mono);
  font-size: 11.5px;
  line-height: normal;
  color: var(--nr-muted-3);
  margin: 10px 0 0;
  text-align: center;
}

/* Below the design's own nav breakpoint: links into the drawer, and the header
   CTA goes with them so the bar is just the mark and the button. */
@media (max-width: 1119.98px) {
  body.nortime .nr-nav-w { display: none; }
  body.nortime .nr-header-right { display: none; }
  body.nortime .nr-burger { display: flex; }
  body.nortime .nr-header-in { flex-wrap: wrap; gap: 0 12px; }
}
@media (min-width: 1120px) {
  body.nortime .nr-menu { display: none !important; }
}

/* ---------------------------------------------------- footer studio credit */

body.nortime .nr-credito-w { display: block; }
body.nortime .nr-credito {
  max-width: var(--nr-shell);
  margin: clamp(22px, 3vw, 32px) auto 0;
  padding: 14px var(--nr-gut) 0;
  border-top: 1px solid var(--nr-line);
  font-family: var(--nr-mono);
  font-size: 10.5px;
  line-height: normal;
  letter-spacing: .04em;
  color: var(--nr-muted-3);
}
body.nortime .nr-credito a { color: var(--nr-muted-2); text-decoration: none; }
body.nortime .nr-credito a:hover { color: var(--nr-orange); }

/* ============================================================== mobile pass */

/* --- plans matrix: the cells were the tightest thing on the page ---------- */
@media (max-width: 859.98px) {
  body.nortime .nr-mx-head,
  body.nortime .nr-mx-linha { grid-template-columns: minmax(0, 1.35fr) minmax(112px, 1fr); }

  body.nortime .nr-mx-lbl { padding: 16px 14px; }
  body.nortime .nr-mx-plano { padding: 16px 14px; }
  body.nortime .nr-mx-l { padding: 14px 14px; }
  body.nortime .nr-mx-c { padding: 14px 14px; }

  body.nortime .nr-mx-l .elementor-heading-title { font-size: 15.5px; line-height: 1.38; }
  body.nortime .nr-mx-c .elementor-heading-title { font-size: 14.5px; line-height: 1.38; }
  body.nortime .nr-mx-preco strong { font-size: 34px; }

  body.nortime .nr-seletor { margin-top: 24px; }
  body.nortime .nr-sel-b { font-size: 13.5px; padding: 12px 6px; }

  body.nortime .nr-planos-pe { gap: 20px; margin-top: 28px; }
  body.nortime .nr-planos-cta { justify-content: flex-start; }
  body.nortime .nr-planos-cta .elementor-button { width: 100%; justify-content: center; }
}

/* --- hero and general density ------------------------------------------- */
@media (max-width: 619.98px) {
  /* full-width CTAs read better than two half-width buttons that wrap */
  body.nortime .nr-cta-row { flex-direction: column; align-items: stretch; }
  body.nortime .nr-cta-row > .elementor-widget { width: 100%; }
  body.nortime .nr-cta-row .elementor-button { width: 100%; justify-content: center; }

  /* the bordered price strip was overflowing its line at narrow widths */
  body.nortime .nr-preco-w p { width: 100%; }

  body.nortime .nr-passos-pe .elementor-button { width: 100%; justify-content: center; }
  body.nortime .nr-passos-pe > .elementor-widget:first-child { width: 100%; }

  body.nortime .nr-f-pe .nr-f-submit { width: 100%; }
  body.nortime .nr-f-planos .nr-plano-b { flex: 1 1 auto; }

  /* the client-mark chips wrapped into a ragged block */
  body.nortime .nr-marca { height: 46px; padding: 0 12px; }
  body.nortime .nr-marca-t { font-size: 13px; }

  /* section heads: let long words break instead of pushing the line out */
  body.nortime .nr-h1 .elementor-heading-title,
  body.nortime .nr-h2 .elementor-heading-title,
  body.nortime .nr-h2-flat .elementor-heading-title,
  body.nortime .nr-h2-ct .elementor-heading-title,
  body.nortime .nr-h2-perg .elementor-heading-title { overflow-wrap: break-word; }
}

/* the sticky bar covers the last of the page; keep clear of it */
@media (max-width: 899.98px) {
  body.nortime .nr-credito { padding-bottom: 4px; }
}

/* When the RGPD box stacks, its divider belongs on top, not on the left. */
@media (max-width: 979.98px) {
  body.nortime .nr-rgpd-media {
    border-left: 0;
    border-top: 1px solid var(--nr-line);
  }
}

/* --- very narrow phones (320px) ------------------------------------------
 * The design's grids use minmax(300–320px, 1fr). Below ~360px the gutters
 * leave less than that, so the track is wider than the viewport and the page
 * scrolls sideways. Everything is single-column at this width anyway. */
@media (max-width: 400px) {
  body.nortime .nr-hero-grid,
  body.nortime .nr-head,
  body.nortime .nr-head2,
  body.nortime .nr-grid3,
  body.nortime .nr-cards,
  body.nortime .nr-pontos,
  body.nortime .nr-inc-grid,
  body.nortime .nr-rgpd,
  body.nortime .nr-passo,
  body.nortime .nr-alem-grid,
  body.nortime .nr-perg-grid,
  body.nortime .nr-planos-pe,
  body.nortime .nr-ct-grid,
  body.nortime .nr-rodape-in { grid-template-columns: 1fr; }
}

/* ============================================================================
   REVISION 3 — client change list, 22/08/2026 (PDF mark-up)
   new hero + registo copy · 3 video examples · gallery retitled ·
   plans wording · rebuilt form fields · footer socials
   ========================================================================== */

/* --------------------------------------------------- form: new field types */

/* the date input has to look like the other underlined fields, not like the
   browser's default chrome */
body.nortime .nr-in[type="date"] {
  appearance: none;
  -webkit-appearance: none;
  color-scheme: dark;
  font-variant-numeric: tabular-nums;
}
body.nortime .nr-in[type="date"]::-webkit-calendar-picker-indicator {
  filter: invert(1);
  opacity: .45;
  cursor: pointer;
}
body.nortime .nr-in[type="date"]::-webkit-calendar-picker-indicator:hover { opacity: .9; }

/* duração da obra — anos + meses side by side inside one field slot */
body.nortime .nr-dur { display: flex; gap: 10px; }
body.nortime .nr-sel {
  appearance: none;
  -webkit-appearance: none;
  flex: 1 1 0;
  min-width: 0;
  cursor: pointer;
  padding-right: 26px;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--nr-muted) 50%),
    linear-gradient(135deg, var(--nr-muted) 50%, transparent 50%);
  background-position: right 12px center, right 7px center;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
}
body.nortime .nr-sel:hover { background-image:
    linear-gradient(45deg, transparent 50%, var(--nr-ink) 50%),
    linear-gradient(135deg, var(--nr-ink) 50%, transparent 50%); }
body.nortime .nr-sel option { background: var(--nr-bg); color: var(--nr-ink); }

/* the form got taller with the extra fields; give the two columns a floor so
   they do not collapse into slivers between 620 and 980 */
@media (min-width: 620px) {
  body.nortime .nr-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ------------------------------------------------------- footer: contact */

body.nortime .nr-rodape-ct {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
}
body.nortime .nr-rodape-lbl .elementor-heading-title {
  font-family: var(--nr-mono);
  font-size: 10.5px;
  line-height: normal;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--nr-orange);
  font-weight: 400;
}
body.nortime .nr-sociais-w { display: block; }
body.nortime .nr-sociais { display: flex; gap: 10px; }
body.nortime .nr-social {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border: 1px solid var(--nr-line-2);
  border-radius: 2px;
  color: var(--nr-muted);
  transition: color .18s ease, border-color .18s ease, background .18s ease;
}
body.nortime .nr-social svg { width: 19px; height: 19px; display: block; }
body.nortime .nr-social:hover {
  color: var(--nr-bg);
  background: var(--nr-orange);
  border-color: var(--nr-orange);
}

/* --------------------------------------------------- hero: the new headline */

/* "Acompanhe. Registe. Mostre." is a short three-verb line — the export's 15ch
   measure was cut for a much longer headline and would break it oddly. */
body.nortime .nr-h1 .elementor-heading-title { max-width: 13ch; }

/* the new lede is two sentences instead of one; keep the same measure but let
   it breathe */
body.nortime .nr-lede-hero .elementor-heading-title { max-width: 54ch; }

/* ----------------------------------------------- exemplos: three, not six */

/* three 16:9 posters across at desktop, and they should not stretch wider than
   the design's card when there are fewer of them */
@media (min-width: 900px) {
  body.nortime .nr-grid3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ------------------------------------------- the client's real logo file ---
 * Replaces the SVG recreation: this is the white transparent PNG from the
 * client's drive, trimmed to its content box (1204x351). Sized by height so
 * the header bar keeps its geometry.
 */
body.nortime .hdr__mark { display: inline-flex; align-items: center; line-height: 0; }
body.nortime .hdr__mark img { display: block; width: auto; }
body.nortime .hdr__mark--sm img { height: 34px; }
body.nortime .hdr__mark--xs img { height: 30px; }
@media (max-width: 400px) {
  body.nortime .hdr__mark--sm img { height: 30px; }
}

/* ============================================================================
   WPForms, dressed as the design's form
   ----------------------------------------------------------------------------
   The contact form is WPForms #25 so the client can edit fields in the builder.
   WPForms brings its own markup and a light-theme stylesheet, so everything
   below maps its classes onto the design's form:

     .wpforms-field-container  -> the 4-column grid (full/half/quarter)
     .wpforms-field-label      -> mono, uppercase, muted
     inputs                    -> dark ground, single bottom rule
     textarea / select         -> dark ground, 1px box
     .wpforms-submit           -> the orange button

   A 4-column grid (not 2) is what lets "Data de começo" sit at a half beside
   two quarter-width duration dropdowns, matching the client's mark-up.
   ========================================================================== */

body.nortime .nr-wf.nr-wf .wpforms-container { margin: 0; }
body.nortime .nr-wf.nr-wf .wpforms-form { margin: 0; }

/* ------------------------------------------------------------------ layout */

body.nortime .nr-wf.nr-wf .wpforms-field-container {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px 18px;
}
body.nortime .nr-wf.nr-wf .wpforms-field {
  grid-column: span 4;                 /* full width unless told otherwise */
  float: none;
  width: auto;
  max-width: none;
  padding: 0;
  margin: 0;
  clear: none;
}
body.nortime .nr-wf.nr-wf .wpforms-one-half   { grid-column: span 2; }
body.nortime .nr-wf.nr-wf .wpforms-one-fourth { grid-column: span 1; }
body.nortime .nr-wf.nr-wf .nr-wf-full         { grid-column: span 4; }

/* the two antispam honeypots are position:absolute — keep them out of the grid */
body.nortime .nr-wf.nr-wf .wpforms-field[style*="absolute"] { grid-column: auto; }

/* ------------------------------------------------------------------ labels */

body.nortime .nr-wf.nr-wf .wpforms-field-label {
  display: block;
  font-family: var(--nr-mono);
  font-size: 10.5px;
  font-weight: 400;
  line-height: normal;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--nr-muted-2);
  margin: 0 0 7px;
}
/* the design writes "(obrigatório)" rather than a red asterisk */
body.nortime .nr-wf.nr-wf .wpforms-required-label {
  font-size: 0;
  color: transparent;
  margin-left: 4px;
}
body.nortime .nr-wf.nr-wf .wpforms-required-label::after {
  content: "(obrigatório)";
  font-size: 10.5px;
  text-transform: none;
  letter-spacing: 0;
  color: var(--nr-dim);
}
/* "First" / "Last" under the name field — the placeholders already say it */
body.nortime .nr-wf.nr-wf .wpforms-field-sublabel { display: none; }

/* ------------------------------------------------------------------ inputs */

body.nortime .nr-wf.nr-wf input[type="text"],
body.nortime .nr-wf.nr-wf input[type="email"],
body.nortime .nr-wf.nr-wf input[type="tel"],
body.nortime .nr-wf.nr-wf input[type="url"],
body.nortime .nr-wf.nr-wf input[type="number"],
body.nortime .nr-wf.nr-wf input[type="date"] {
  background: var(--nr-bg);
  border: 0;
  border-bottom: 1px solid var(--nr-line-2);
  border-radius: 0;
  box-shadow: none;
  color: var(--nr-ink);
  font-family: var(--nr-body);
  font-size: 17px;
  line-height: normal;
  padding: 12px 2px;
  min-height: 48px;
  height: auto;
  width: 100%;
  max-width: none;
  transition: border-color .18s ease;
}
body.nortime .nr-wf.nr-wf textarea {
  background: var(--nr-bg);
  border: 1px solid var(--nr-line-2);
  border-radius: 2px;
  box-shadow: none;
  color: var(--nr-ink);
  font-family: var(--nr-body);
  font-size: 17px;
  line-height: 1.5;
  padding: 14px;
  width: 100%;
  max-width: none;
  min-height: 132px;
  resize: vertical;
}
body.nortime .nr-wf.nr-wf select {
  appearance: none;
  -webkit-appearance: none;
  background-color: var(--nr-bg);
  border: 0;
  border-bottom: 1px solid var(--nr-line-2);
  border-radius: 0;
  box-shadow: none;
  color: var(--nr-ink);
  font-family: var(--nr-body);
  font-size: 17px;
  padding: 12px 26px 12px 2px;
  min-height: 48px;
  height: auto;
  width: 100%;
  max-width: none;
  cursor: pointer;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--nr-muted) 50%),
    linear-gradient(135deg, var(--nr-muted) 50%, transparent 50%);
  background-position: right 12px center, right 7px center;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
}
body.nortime .nr-wf.nr-wf select option { background: var(--nr-bg); color: var(--nr-ink); }

body.nortime .nr-wf.nr-wf input:focus,
body.nortime .nr-wf.nr-wf select:focus { border-bottom-color: var(--nr-orange); outline: 0; }
body.nortime .nr-wf.nr-wf textarea:focus { border-color: var(--nr-orange); outline: 0; }

body.nortime .nr-wf.nr-wf input::placeholder,
body.nortime .nr-wf.nr-wf textarea::placeholder { color: var(--nr-muted-3); opacity: 1; }

/* the native date picker, in the dark */
body.nortime .nr-wf.nr-wf input[type="date"] {
  color-scheme: dark;
  font-variant-numeric: tabular-nums;
}
body.nortime .nr-wf.nr-wf input[type="date"]::-webkit-calendar-picker-indicator {
  filter: invert(1);
  opacity: .45;
  cursor: pointer;
}
body.nortime .nr-wf.nr-wf input[type="date"]::-webkit-calendar-picker-indicator:hover { opacity: .9; }

/* the name field's own two-up row */
body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row { display: flex; gap: 18px; }
body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row-block {
  flex: 1 1 0; width: auto; float: none; padding: 0; margin: 0;
}
body.nortime .nr-wf.nr-wf fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
body.nortime .nr-wf.nr-wf legend.wpforms-field-label { padding: 0; }

/* ------------------------------------------------------------------ submit */

body.nortime .nr-wf.nr-wf .wpforms-submit-container { padding: 0; margin-top: 24px; }
body.nortime .nr-wf.nr-wf .wpforms-submit,
body.nortime .nr-wf.nr-wf button[type="submit"] {
  background: var(--nr-orange);
  background-color: var(--nr-orange);
  border: 0;
  border-radius: 2px;
  color: var(--nr-bg);
  font-family: var(--nr-sans);
  font-weight: 700;
  font-size: 16.5px;
  line-height: normal;
  padding: 16px 24px;
  min-height: 52px;
  cursor: pointer;
  box-shadow: none;
  transition: background .18s ease;
}
body.nortime .nr-wf.nr-wf .wpforms-submit:hover,
body.nortime .nr-wf.nr-wf button[type="submit"]:hover { background: var(--nr-orange-2); color: var(--nr-bg); }
body.nortime .nr-wf.nr-wf .wpforms-submit-spinner { margin-left: 10px; }

/* ------------------------------------------------- validation + confirmation */

body.nortime .nr-wf.nr-wf label.wpforms-error,
body.nortime .nr-wf.nr-wf em.wpforms-error {
  font-family: var(--nr-mono);
  font-size: 11px;
  line-height: normal;
  color: var(--nr-orange);
  margin-top: 6px;
  display: block;
}
body.nortime .nr-wf.nr-wf input.wpforms-error,
body.nortime .nr-wf.nr-wf select.wpforms-error { border-bottom-color: var(--nr-orange); }
body.nortime .nr-wf.nr-wf textarea.wpforms-error { border-color: var(--nr-orange); }

body.nortime .nr-wf.nr-wf .wpforms-confirmation-container,
body.nortime .nr-wf.nr-wf .wpforms-confirmation-container-full,
body.nortime div.wpforms-confirmation-container-full {
  background: rgba(255,116,31,.07);
  border: 1px solid var(--nr-orange);
  border-radius: 2px;
  color: var(--nr-ink);
  font-family: var(--nr-sans);
  font-weight: 600;
  font-size: 16px;
  padding: 16px 18px;
  margin: 0;
}
body.nortime .nr-wf.nr-wf .wpforms-confirmation-container p:last-child { margin: 0; }

/* WPForms' own error notice at the top of the form */
body.nortime .nr-wf.nr-wf .wpforms-error-container {
  background: rgba(255,116,31,.07);
  border: 1px solid var(--nr-orange);
  border-radius: 2px;
  color: var(--nr-ink);
  font-family: var(--nr-body);
  font-size: 15px;
  padding: 12px 16px;
}

/* ------------------------------------------------------- head and footnotes */

body.nortime .nr-form-head2 {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  flex-wrap: wrap;
  padding-bottom: 14px;
  margin-bottom: 22px;
  border-bottom: 1px solid var(--nr-line);
  width: 100%;
}
body.nortime .nr-form-h2 .elementor-heading-title {
  font-family: var(--nr-sans);
  font-variation-settings: "wdth" 94;
  font-weight: 700; font-size: 19px; line-height: normal; color: var(--nr-ink);
}
body.nortime .nr-form-sub2 .elementor-heading-title {
  font-family: var(--nr-mono); font-size: 11px; line-height: normal; color: var(--nr-muted-3);
}
body.nortime .nr-form-foot-w { display: block; margin-top: 18px; }
body.nortime .nr-form-foot-w .nr-f-nota {
  font-family: var(--nr-body);
  font-size: 14.5px; line-height: 1.5; color: var(--nr-muted-2); max-width: 44ch;
  margin: 0 0 10px;
}

/* --------------------------------------------------------------- narrow */

@media (max-width: 619.98px) {
  body.nortime .nr-wf.nr-wf .wpforms-field-container { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.nortime .nr-wf.nr-wf .wpforms-field { grid-column: span 2; }
  body.nortime .nr-wf.nr-wf .wpforms-one-half { grid-column: span 2; }
  body.nortime .nr-wf.nr-wf .wpforms-one-fourth { grid-column: span 1; }
  body.nortime .nr-wf.nr-wf .nr-wf-full { grid-column: span 2; }
  body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row { flex-direction: column; gap: 20px; }
  body.nortime .nr-wf.nr-wf .wpforms-submit { width: 100%; }
}

/* ---------------------------------------------------------------------------
   WPForms is themed through its own custom properties (the "modern" renderer
   reads these for every field). Setting them is far more reliable than
   overriding each of its rules — and it keeps working if WPForms updates.
   Values are the design's.
   ------------------------------------------------------------------------- */
body.nortime .nr-wf.nr-wf .wpforms-container {
  --wpforms-container-padding: 0px;
  --wpforms-container-border-style: none;

  --wpforms-field-background-color: #0A0A0B;
  --wpforms-field-border-color: #2A2A2F;
  --wpforms-field-border-color-spare: #2A2A2F;
  --wpforms-field-border-size: 0px;          /* the rule is drawn per-field below */
  --wpforms-field-border-style: none;
  --wpforms-field-border-radius: 0px;
  --wpforms-field-text-color: #F2F2F0;
  --wpforms-field-menu-color: #0A0A0B;
  --wpforms-field-size-input-height: 48px;
  --wpforms-field-size-font-size: 17px;
  --wpforms-field-size-line-height: 22px;
  --wpforms-field-size-padding-h: 2px;
  --wpforms-field-size-input-spacing: 20px;
  --wpforms-field-size-sublabel-spacing: 5px;

  --wpforms-label-color: #8A8A90;
  --wpforms-label-sublabel-color: #6E6E74;
  --wpforms-label-error-color: #FF741F;
  --wpforms-label-size-font-size: 10.5px;
  --wpforms-label-size-line-height: 14px;

  --wpforms-button-background-color: #FF741F;
  --wpforms-button-border-color: #FF741F;
  --wpforms-button-border-style: none;
  --wpforms-button-border-size: 0px;
  --wpforms-button-border-radius: 2px;
  --wpforms-button-text-color: #0A0A0B;
  --wpforms-button-size-font-size: 16.5px;
  --wpforms-button-size-height: 52px;
  --wpforms-button-size-padding-h: 24px;
  --wpforms-button-size-margin-top: 24px;
}

/* the single bottom rule the design uses, drawn after the variables above
   have removed WPForms' full box */
body.nortime .nr-wf.nr-wf input[type="text"],
body.nortime .nr-wf.nr-wf input[type="email"],
body.nortime .nr-wf.nr-wf input[type="tel"],
body.nortime .nr-wf.nr-wf input[type="date"],
body.nortime .nr-wf.nr-wf select {
  border-bottom: 1px solid var(--nr-line-2) !important;
  border-top: 0 !important;
  border-left: 0 !important;
  border-right: 0 !important;
  border-radius: 0 !important;
}
body.nortime .nr-wf.nr-wf textarea {
  border: 1px solid var(--nr-line-2) !important;
  border-radius: 2px !important;
}
body.nortime .nr-wf.nr-wf input:focus,
body.nortime .nr-wf.nr-wf select:focus { border-bottom-color: var(--nr-orange) !important; }
body.nortime .nr-wf.nr-wf textarea:focus { border-color: var(--nr-orange) !important; }

/* WPForms sets placeholder colour from the field text colour at low alpha,
   which lands almost black on this ground */
body.nortime .nr-wf.nr-wf input::placeholder,
body.nortime .nr-wf.nr-wf textarea::placeholder {
  color: var(--nr-muted-3) !important;
  opacity: 1 !important;
  -webkit-text-fill-color: var(--nr-muted-3);
}
body.nortime .nr-wf.nr-wf input,
body.nortime .nr-wf.nr-wf textarea,
body.nortime .nr-wf.nr-wf select { -webkit-text-fill-color: var(--nr-ink); }
body.nortime .nr-wf.nr-wf input::placeholder { -webkit-text-fill-color: var(--nr-muted-3); }

/* autofill: Chrome paints its own pale yellow otherwise */
body.nortime .nr-wf.nr-wf input:-webkit-autofill,
body.nortime .nr-wf.nr-wf input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--nr-ink);
  -webkit-box-shadow: 0 0 0 40px var(--nr-bg) inset;
  caret-color: var(--nr-ink);
}

/* ---------------------------------------------------------------------------
   The Nome / Sobrenome pair
   ---------------------------------------------------------------------------
   WPForms wraps the name field in a container-query context and sets
   `justify-content: space-between` on its inner row, so the two blocks were
   sitting 18px inside the field on both sides — visibly narrower than every
   other field, and only ~62% width once stacked on a phone. @container rules
   are normal-specificity, so !important is what reliably wins here.
   ------------------------------------------------------------------------- */

body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  justify-content: flex-start !important;
  align-items: flex-start !important;
  gap: 18px !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}
body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row-block {
  flex: 1 1 0 !important;
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  float: none !important;
}
body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row-block input {
  width: 100% !important;
  max-width: none !important;
}

/* stacked on a phone — full width, not 62% */
@media (max-width: 619.98px) {
  body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row {
    flex-direction: column !important;
    gap: 20px !important;
  }
  body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row-block {
    flex: 0 0 auto !important;
    width: 100% !important;
  }
}

/* WPForms' clearfix pseudo-elements on the name row become flex items once the
   row is a flexbox, and each one consumes a gap — which is what pushed the two
   blocks 18px in on both sides and made them narrower than every other field. */
body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row::before,
body.nortime .nr-wf.nr-wf .wpforms-field-name .wpforms-field-row::after {
  content: none !important;
  display: none !important;
}

/* ============================================================================
   REVISION 4 — real photography and client logos
   ========================================================================== */

/* -------------------------------------------------- galeria: real photos ---
 * The marquee is a fixed-height band. Each tile takes its width from its own
 * aspect, so the 16:9 drone frames run wide and the 3:4 ground shots run
 * narrow — no photograph is cropped to a common ratio.
 */
body.nortime .nr-tile {
  margin: 0;
  flex: 0 0 auto;
  height: clamp(190px, 19vw, 270px);
  width: auto;
  border: 1px solid var(--nr-line);
  background: var(--nr-surface-3);
  overflow: hidden;
  display: block;
  position: relative;
}
body.nortime .nr-tile--land { aspect-ratio: 16 / 9; }
body.nortime .nr-tile--port { aspect-ratio: 3 / 4; }
body.nortime .nr-tile img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* held back a touch so the strip reads as texture behind the headline,
     the way the placeholder version did */
  opacity: .86;
  transition: opacity .3s ease, transform .5s ease;
}
body.nortime .nr-fita-caixa:hover .nr-tile img { opacity: 1; }

/* ------------------------------------------- obras registadas: real logos ---
 * Ten brand palettes on one dark row is noise, so they are knocked back to
 * white. Colour returns on hover for anyone who wants to look closer.
 */
/* An even grid rather than a wrapped flex row: ten logos in a free-flowing row
   left two orphans stranded on a second line. */
body.nortime .nr-marcas {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  align-items: center;
  justify-items: center;
  gap: clamp(16px, 2vw, 26px) clamp(14px, 2vw, 28px);
  width: 100%;
}
body.nortime .nr-marca {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  height: 52px;
  padding: 0;
  border: 0;
  background: none;
}
body.nortime .nr-marca img {
  display: block;
  width: auto;
  max-width: 150px;
  object-fit: contain;
  filter: brightness(0) invert(1);
  opacity: .68;
  transition: opacity .22s ease, filter .22s ease;
}
body.nortime .nr-marca:hover img { opacity: 1; filter: none; }

/* Ten logos divide cleanly by 5 and by 2 only — any other column count strands
   orphans on the last row, so the grid steps straight from 5 to 2. */
@media (max-width: 859.98px) {
  body.nortime .nr-marca { height: 46px; }
  body.nortime .nr-marca img { max-width: 124px; transform: scale(.9); }
}
@media (max-width: 619.98px) {
  body.nortime .nr-marcas {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px 16px;
  }
  body.nortime .nr-marca { height: 48px; }
  body.nortime .nr-marca img { max-width: 100%; transform: none; }
  body.nortime .nr-marcas-t { flex: 1 1 100%; margin-bottom: 6px; }
}

/* ============================================================================
   REVISION 5 — hero video · scrolling logo marquee · uniform gallery tiles
   ========================================================================== */

/* ------------------------------------------------------------- hero video ---
 * A 16:9 video cannot fill a half-width column's height, so instead of leaving
 * a tall gap the hero becomes a balanced two-up: copy and video both centred on
 * the row, and the copy column drops the deep bottom padding that suited the
 * design's 4:5 portrait slot.
 */
body.nortime .nr-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr);
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
  max-width: var(--nr-shell);
  margin: 0 auto;
  padding: clamp(48px, 6vw, 88px) var(--nr-gut);
  width: 100%;
}
body.nortime .nr-hero-col { padding-bottom: 0; }

body.nortime .nr-hero-media {
  position: relative;
  align-self: center;
  min-height: 0;
  border: 0;
  background: none;
  display: block;
  padding: 0;
}
body.nortime .nr-video-w { display: block; }

body.nortime .nr-video {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 1px solid var(--nr-line);
  background: var(--nr-surface-3);
  overflow: hidden;
}
body.nortime .nr-video-el {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: var(--nr-bg-deep);
}
/* the overlay play button; hidden once the video is running */
body.nortime .nr-video-btn {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: rgba(10, 10, 11, .18);
  cursor: pointer;
  transition: background .22s ease;
}
body.nortime .nr-video-btn:hover { background: rgba(10, 10, 11, .05); }
body.nortime .nr-video-btn .nr-play { transition: transform .22s ease; }
body.nortime .nr-video-btn:hover .nr-play { transform: scale(1.07); }
body.nortime .nr-video.is-playing .nr-video-btn { display: none; }

/* --------------------------------------------------- the logo marquee ---
 * Ten logos in the width of three, moving. Pauses on hover so a name can be
 * read; reduced-motion stops it and hands the row over to normal scrolling.
 */
body.nortime .nr-marcas-w { flex: 1 1 320px; width: auto; min-width: 0; }

body.nortime .nr-marcas-caixa {
  position: relative;
  overflow: hidden;
  width: 100%;
  -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0) 0%, #000 7%, #000 93%, rgba(0,0,0,0) 100%);
          mask-image: linear-gradient(90deg, rgba(0,0,0,0) 0%, #000 7%, #000 93%, rgba(0,0,0,0) 100%);
}
body.nortime .nr-marcas-fita {
  display: flex;
  align-items: center;
  gap: clamp(30px, 4vw, 58px);
  width: max-content;
  animation: nrDeslizaEsq 42s linear infinite;
}
body.nortime .nr-marcas-caixa:hover .nr-marcas-fita { animation-play-state: paused; }

body.nortime .nr-marca {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 0;
  height: 56px;
  padding: 0;
  border: 0;
  background: none;
}
body.nortime .nr-marca img {
  display: block;
  width: auto;
  max-width: 160px;
  object-fit: contain;
  filter: brightness(0) invert(1);
  opacity: .66;
  transition: opacity .22s ease, filter .22s ease;
}
body.nortime .nr-marca:hover img { opacity: 1; filter: none; }

@media (prefers-reduced-motion: reduce) {
  body.nortime .nr-marcas-fita { animation: none !important; }
  body.nortime .nr-marcas-caixa { overflow-x: auto !important; }
}

@media (max-width: 859.98px) {
  body.nortime .nr-marca { height: 48px; }
  body.nortime .nr-marca img { max-width: 128px; }
  body.nortime .nr-marcas-fita { gap: 30px; animation-duration: 34s; }
}
@media (max-width: 619.98px) {
  /* the label sits above the strip so the marquee gets the full width */
  body.nortime .nr-marcas-row { flex-direction: column; align-items: stretch; gap: 14px; }
  body.nortime .nr-marcas-t { flex: 0 0 auto; }
  /* in a column flexbox `flex: 1 1 320px` is a 320px *height* basis, which left
     280px of dead space under the strip */
  body.nortime .nr-marcas-w { flex: 0 0 auto; width: 100%; }
  body.nortime .nr-marca { height: 42px; }
  body.nortime .nr-marca img { max-width: 108px; }
  body.nortime .nr-marcas-fita { gap: 26px; animation-duration: 28s; }
}

/* --------------------------------------------- gallery: one common frame ---
 * The source set is mixed (16:9 drone, 3:4 ground), so every tile is cropped
 * to the same 4:3 window instead of the strip's rhythm depending on whatever
 * shape each photograph happened to be.
 */
body.nortime .nr-tile {
  margin: 0;
  flex: 0 0 auto;
  height: clamp(180px, 18vw, 250px);
  aspect-ratio: 4 / 3;
  width: auto;
  border: 1px solid var(--nr-line);
  background: var(--nr-surface-3);
  overflow: hidden;
  display: block;
  position: relative;
}
body.nortime .nr-tile img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* biased above centre: in these frames the subject sits high and the
     foreground is spoil, so a straight centre crop loses the machinery */
  object-position: center 42%;
  opacity: .88;
  transition: opacity .3s ease;
}
body.nortime .nr-fita-caixa:hover .nr-tile img { opacity: 1; }

/* ----------------------------------------------------------- hero, narrow */

@media (max-width: 859.98px) {
  body.nortime .nr-hero-grid {
    grid-template-columns: 1fr;
    gap: clamp(28px, 5vw, 44px);
  }
  /* on a stacked hero the video reads better above the price and buttons,
     but the copy still leads — so it simply follows the column */
  body.nortime .nr-hero-media { width: 100%; }
}

/* ============================================================================
   REVISION 6 — hero proportions · video autoplay + controls · draggable marquee
   ========================================================================== */

/* ------------------------------------------------ hero: closer proportions ---
 * The copy column ran ~660px tall against a 320px video, which left a deep gap
 * above and below the video. Desktop only: the headline caps lower, the video
 * column takes more of the row, and the section's vertical padding eases off.
 * The clamp minimums are untouched, so phones are unaffected.
 */
body.nortime .nr-h1 .elementor-heading-title {
  font-size: clamp(40px, 6.4vw, 70px);   /* was 84px — only bites above ~1090px */
}

@media (min-width: 860px) {
  body.nortime .nr-hero-grid {
    grid-template-columns: minmax(0, 0.94fr) minmax(0, 1.2fr);
    gap: clamp(28px, 4vw, 56px);
    padding-top: clamp(40px, 4.4vw, 64px);
    padding-bottom: clamp(40px, 4.4vw, 64px);
  }
  /* the lede gets a wider measure so it sets in three lines rather than four */
  body.nortime .nr-lede-hero .elementor-heading-title { max-width: 60ch; }
}

/* --------------------------------------------------------- video controls ---
 * Autoplays muted on desktop, so the bar carries the two things that matter:
 * pause and sound. It rests over the foot of the frame and lifts on hover;
 * on touch it simply stays put, since there is no hover to reveal it.
 */
body.nortime .nr-video-bar {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  background: linear-gradient(to top, rgba(8,8,10,.86) 0%, rgba(8,8,10,0) 100%);
  opacity: 0;
  transform: translateY(6px);
  transition: opacity .22s ease, transform .22s ease;
  pointer-events: none;
}
body.nortime .nr-video:hover .nr-video-bar,
body.nortime .nr-video:focus-within .nr-video-bar {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}
body.nortime .nr-video-ctrl {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid rgba(242,242,240,.18);
  border-radius: 2px;
  background: rgba(10,10,11,.6);
  color: var(--nr-ink);
  cursor: pointer;
  transition: background .18s ease, border-color .18s ease, color .18s ease;
}
body.nortime .nr-video-ctrl:hover {
  background: var(--nr-orange);
  border-color: var(--nr-orange);
  color: var(--nr-bg);
}
body.nortime .nr-video-ctrl svg { width: 15px; height: 15px; display: block; fill: currentColor; }
/* each button holds both glyphs and shows whichever matches the state */
body.nortime .nr-video-ctrl .nr-ic-b { display: none; }
body.nortime .nr-video.is-playing .nr-video-play .nr-ic-a { display: none; }
body.nortime .nr-video.is-playing .nr-video-play .nr-ic-b { display: block; }
body.nortime .nr-video.is-muted .nr-video-sound .nr-ic-a { display: none; }
body.nortime .nr-video.is-muted .nr-video-sound .nr-ic-b { display: block; }

body.nortime .nr-video-time {
  margin-left: auto;
  font-family: var(--nr-mono);
  font-size: 11px;
  line-height: normal;
  color: var(--nr-muted);
  font-variant-numeric: tabular-nums;
  padding-right: 2px;
}

/* the big centre button is only the pre-roll affordance; once it plays, gone */
body.nortime .nr-video.is-playing .nr-video-btn,
body.nortime .nr-video.is-started .nr-video-btn { display: none; }

/* touch: no hover to reveal the bar, so leave it showing */
@media (hover: none) {
  body.nortime .nr-video-bar { opacity: 1; transform: none; pointer-events: auto; }
}

/* --------------------------------------------------- draggable marquee ---
 * Once JS takes over, the CSS animation steps aside and nortime.js drives the
 * transform. That is what lets the strip be flicked and carry momentum, and it
 * also fixes the speed: the CSS version ran a fixed duration over a strip whose
 * width changes with the breakpoint, so it crawled on a phone.
 */
body.nortime .nr-marcas-caixa.is-js .nr-marcas-fita { animation: none !important; }
body.nortime .nr-marcas-caixa.is-js {
  cursor: grab;
  touch-action: pan-y;          /* let the page scroll vertically, we take x */
}
body.nortime .nr-marcas-caixa.is-js.is-dragging { cursor: grabbing; }
/* the images must not be draggable as images, or the browser's own drag
   preview hijacks the gesture — but hover stays live, so a logo still
   colours up under the cursor */
body.nortime .nr-marcas-caixa.is-js .nr-marca img {
  user-select: none;
  -webkit-user-drag: none;
}












/* ============================================================================
   REVISION 7 — the hero, sized around a 16:9 video
   ==========================================================================
 * A 16:9 video beside a text column is always the shorter of the two, and the
 * measurements said the obvious fix makes it worse: narrowing the copy column
 * to hand width to the video makes the copy *taller*, because it wraps more.
 * At 1440 the copy ran 534px against a 351px video, and pushing the ratio to
 * 0.8/1.35 gave a 395px video under a 581px copy - a bigger hole, not smaller.
 *
 * So the width comes from outside the shell instead: above 1180px the row
 * keeps its left edge on the shell and lets the video run to the right edge of
 * the screen. The video gains ~120px of width, the copy loses nothing, and the
 * widget spacing tightens - which between them close the gap to a few tens of
 * pixels and take the whole hero down by around 100px.
 *
 * Below 1180px the two-up simply does not fit: at 1024 the copy column was
 * 396px, which put the headline on three lines, the lede on six and broke the
 * buttons onto two rows for a 833px hero holding a 284px video. Stacked, the
 * video is full-bleed width and the copy reads normally.
 */

@media (min-width: 1180px) {
  body.nortime .nr-hero-grid {
    /* left edge stays on the shell; the right column runs off the screen.
     * 100% (not 100vw) so the scrollbar cannot cause a horizontal overflow. */
    max-width: none;
    margin: 0;
    padding-left: max(var(--nr-gut), calc((100% - var(--nr-shell)) / 2 + var(--nr-gut)));
    padding-right: 0;
    padding-top: clamp(36px, 3.6vw, 56px);
    padding-bottom: clamp(36px, 3.6vw, 56px);
    /* The floor is the point below which the copy starts costing more height
     * than the video gains: under ~545px the price wraps to two lines and the
     * headline to three, which at 1180 left a 633px copy beside a 365px video.
     * With it, the copy holds its shape and the video simply takes the rest. */
    grid-template-columns: minmax(545px, 0.9fr) minmax(0, 1.32fr);
    gap: clamp(32px, 3.4vw, 52px);
  }

  /* the right edge is off-screen, so the border there would never be seen */
  body.nortime .nr-video { border-right: 0; }

  /* ~24px between each widget was most of the copy column's surplus height */
  body.nortime .nr-hero-col { --widgets-spacing: 14px; }
  body.nortime .nr-hero-col > .elementor-element.elementor-element {
    margin-block-end: 14px;
  }
  body.nortime .nr-hero-col > .elementor-element.elementor-element:last-child {
    margin-block-end: 0;
  }
}

/* ---------------------------------------------------------- stacked hero ---
 * Extends v5's 860px stack up to 1180px. The video takes the full column
 * width, so there is no space around it to complain about.
 */
@media (max-width: 1179.98px) {
  body.nortime .nr-hero-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(28px, 3.4vw, 44px);
    padding-top: clamp(40px, 5vw, 72px);
    padding-bottom: clamp(40px, 5vw, 72px);
  }
  body.nortime .nr-hero-media { width: 100%; }
  /* the headline and lede get the full width, so they need their own measure
     back or they run to 90-odd characters */
  body.nortime .nr-h1 .elementor-heading-title { max-width: 16ch; }
  body.nortime .nr-lede-hero .elementor-heading-title { max-width: 54ch; }
}

/* ============================================================================
   REVISION 8 — the video controls, moved off the showreel's own overlay
   ==========================================================================
 * The showreel carries a burned-in caption strip along its bottom edge (month,
 * percent complete, year, and a progress bar). A full-width control bar sat
 * straight on top of it and the clock became unreadable. The controls move to
 * a compact pill in the top-right instead, which is where a muted autoplaying
 * hero video is expected to keep its sound toggle anyway.
 */
body.nortime .nr-video-bar {
  top: 12px;
  right: 12px;
  left: auto;
  bottom: auto;
  width: auto;
  gap: 6px;
  padding: 6px;
  background: rgba(8, 8, 10, .72);
  -webkit-backdrop-filter: blur(6px);
          backdrop-filter: blur(6px);
  border: 1px solid rgba(242, 242, 240, .14);
  border-radius: 3px;
  transform: translateY(-6px);
}
body.nortime .nr-video:hover .nr-video-bar,
body.nortime .nr-video:focus-within .nr-video-bar { transform: none; }

body.nortime .nr-video-ctrl {
  width: 32px;
  height: 32px;
  border-color: transparent;
  background: transparent;
}
body.nortime .nr-video-ctrl svg { width: 14px; height: 14px; }

body.nortime .nr-video-time {
  margin-left: 2px;
  padding: 0 6px 0 2px;
  color: rgba(242, 242, 240, .8);
}

/* the pill is small, so on a phone it stays put rather than waiting on a hover
   that never comes — and it shrinks a little further */
@media (max-width: 619.98px) {
  body.nortime .nr-video-bar { top: 8px; right: 8px; padding: 4px; }
  body.nortime .nr-video-ctrl { width: 30px; height: 30px; }
  body.nortime .nr-video-time { font-size: 10px; }
}

/* v8 sets a resting transform, which lands after v6's hover:none reset and so
   left the pill sitting 6px high on touch, where it never gets a hover to
   settle it. Restated here so it wins on order. */
@media (hover: none) {
  body.nortime .nr-video-bar { opacity: 1; transform: none; pointer-events: auto; }
}

/* ============================================================================
   REVISION 9 — the gallery rows drag too, and the video controls stay put
   ========================================================================== */

/* ------------------------------------------------------- draggable strips ---
 * nortime.js drives all three strips now — the logo marquee and both gallery
 * rows — so the hooks are shared. `is-js` lands on the strip that moves and
 * `is-dragging` on whatever surface took the pointer, which for the logos is
 * the clipping box and for the gallery is each row itself.
 *
 * The media query is the exact mirror of the script's own guard: it bails on
 * reduced motion, and there the strips stay plain scrollable rows with no
 * grab cursor promising a drag that will not happen.
 */
@media (prefers-reduced-motion: no-preference) {
  body.nortime .nr-marcas-fita.is-js,
  body.nortime .nr-fita.is-js { animation: none !important; }

  body.nortime .nr-marcas-caixa,
  body.nortime .nr-fita {
    cursor: grab;
    touch-action: pan-y;        /* the page keeps the vertical axis, we take x */
  }
  body.nortime .nr-marcas-caixa.is-dragging,
  body.nortime .nr-fita.is-dragging { cursor: grabbing; }

  /* the browser's own image-drag preview would hijack the gesture; hover is
     left alone, so a logo still colours up and a tile still lifts */
  body.nortime .nr-marca img,
  body.nortime .nr-tile img {
    user-select: none;
    -webkit-user-drag: none;
  }
}

/* --------------------------------------------------- video controls, kept ---
 * The pill was revealed on hover, which meant that on a desktop the video sat
 * there silent with nothing to say it was muted or that the sound could be
 * turned on. It stays visible now. Hover only lifts the contrast.
 */
body.nortime .nr-video-bar {
  opacity: 1;
  transform: none;
  pointer-events: auto;
  background: rgba(8, 8, 10, .62);
  border-color: rgba(242, 242, 240, .12);
  transition: background .22s ease, border-color .22s ease;
}
body.nortime .nr-video:hover .nr-video-bar,
body.nortime .nr-video:focus-within .nr-video-bar {
  background: rgba(8, 8, 10, .8);
  border-color: rgba(242, 242, 240, .2);
}

/* Muted is the state worth reading at a glance, so it is the one that carries
 * colour: the speaker sits in brand orange while the sound is off, and goes
 * quiet white once it is on. */
body.nortime .nr-video.is-muted .nr-video-sound { color: var(--nr-orange); }
body.nortime .nr-video-ctrl:hover { color: var(--nr-bg); }

/* ============================================================================
   REVISION 10 — the client's three sample videos, hero caption, RGPD photo
   ========================================================================== */

/* -------------------------------------------------------- sample videos ---
 * The three samples do not share an aspect: the first is 2160x3840 and the
 * other two are 16:9. Three equal tiles would mean cropping the vertical one
 * to a landscape frame, which throws away most of the picture — and a vertical
 * cut is a thing worth showing, not hiding.
 *
 * So above 980px it is a two-up: the vertical sample runs full height down the
 * left, the two landscape samples stack on the right. The proportions are
 * picked so the two sides come out level —
 *
 *     left  = W_l * 16/9                 (one portrait frame)
 *     right = 2 * W_r * 9/16 + gap       (two landscape frames)
 *
 * which balances at roughly 0.4 / 0.6, near enough that the few pixels of
 * difference never show. Below 980px they simply stack in the client's order,
 * each at its own aspect.
 */
body.nortime .nr-ex-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.4fr) minmax(0, 0.6fr);
  gap: clamp(14px, 2vw, 28px);
  margin-top: clamp(32px, 4vw, 56px);
  align-items: start;
}
body.nortime .nr-ex-item { display: block; }
body.nortime .nr-ex-item:nth-child(1) { grid-column: 1; grid-row: 1 / span 2; }
body.nortime .nr-ex-item:nth-child(2) { grid-column: 2; grid-row: 1; }
body.nortime .nr-ex-item:nth-child(3) { grid-column: 2; grid-row: 2; }
body.nortime .nr-ex-w { display: block; }

body.nortime .nr-ex {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 1px solid var(--nr-line);
  background: var(--nr-surface-3);
  overflow: hidden;
}
body.nortime .nr-ex--vert { aspect-ratio: 9 / 16; }

body.nortime .nr-ex-el {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: var(--nr-bg-deep);
}

body.nortime .nr-ex-btn {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: rgba(10, 10, 11, .18);
  cursor: pointer;
  transition: background .22s ease;
}
body.nortime .nr-ex-btn:hover { background: rgba(10, 10, 11, .05); }
body.nortime .nr-ex-btn .nr-play { transition: transform .22s ease; }
body.nortime .nr-ex-btn:hover .nr-play { transform: scale(1.07); }
body.nortime .nr-ex.is-playing .nr-ex-btn { display: none; }

@media (max-width: 979.98px) {
  /* stacked, in the order the client listed them */
  body.nortime .nr-ex-grid { grid-template-columns: minmax(0, 1fr); }
  body.nortime .nr-ex-item:nth-child(1),
  body.nortime .nr-ex-item:nth-child(2),
  body.nortime .nr-ex-item:nth-child(3) { grid-column: 1; grid-row: auto; }
  /* a 9:16 frame at full width is taller than most phone screens, so the
     vertical sample is centred at a readable width instead */
  body.nortime .nr-ex-item:nth-child(1) .nr-ex-w {
    max-width: min(360px, 62vw);
    margin: 0 auto;
  }
}

/* ------------------------------------------------------- the hero caption ---
 * Says what the showreel actually is, which the client asked for. Mono and
 * muted, the same register as the "chamada para a rede móvel nacional" note
 * under the buttons opposite.
 */
body.nortime .nr-video-legenda { margin: 10px 0 0; }
body.nortime .nr-video-legenda .elementor-heading-title {
  font-family: var(--nr-mono);
  font-size: 11.5px;
  line-height: 1.5;
  letter-spacing: .02em;
  color: var(--nr-muted-2);
  font-weight: 400;
  max-width: 62ch;
}

/* ---------------------------------------------- the RGPD panel's other half ---
 * Was a hatched placeholder. The client supplied the photograph of the camera
 * on its mount, which is the equipment the section is describing.
 */
body.nortime .nr-rgpd-media {
  position: relative;
  background: var(--nr-surface-3);
  padding: 0;
  display: block;
  overflow: hidden;
}
/* Elementor gives every widget wrapper position:relative, so an absolutely
   positioned child resolves against it - and the wrapper has collapsed to
   zero height, because that child is its only content and is out of flow.
   display:contents takes the wrapper out of the box tree altogether (the
   same trick the design already uses for .nr-fita-w), so the image resolves
   against .nr-rgpd-media and fills it. */
body.nortime .nr-rgpd-img-w { display: contents; }
body.nortime .nr-rgpd-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* the camera sits right of centre in the frame and the crop is tall on a
     phone, so favour that side rather than the empty sky */
  object-position: 62% center;
  display: block;
}

@media (max-width: 979.98px) {
  /* stacked, the cell has no text column to take its height from */
  body.nortime .nr-rgpd-media { min-height: clamp(200px, 46vw, 300px); }
}

/* ============================================================================
   REVISION 11 — media moved onto native Elementor widgets
   ==========================================================================
 * The photographs, logos and videos were raw <img>/<video> inside html widgets:
 * exact, but the client could only change them by editing markup. They are now
 * Elementor image and video widgets bound to media-library attachments, so each
 * one is a "Choose Image / Choose File" slot in the panel.
 *
 * Everything below exists to make Elementor's markup land on the same pixels.
 * Nothing here changes the design.
 */

/* ------------------------------------------------- containers as rows ------
 * An Elementor container is a flex COLUMN by default, which stacked both strips
 * vertically and took the page from 9739px to 14538px. Elementor drives its
 * containers through custom properties, so set those rather than fighting the
 * cascade with !important:
 *   --flex-direction        the axis
 *   --container-widget-width  otherwise every child widget stretches to 100%
 */
body.nortime .nr-marcas-fita,
body.nortime .nr-fita {
  --flex-direction: row;
  --flex-wrap: nowrap;
  --container-widget-width: auto;
  --align-items: center;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  width: max-content;
  padding: 0;
}

/* the clipping boxes are containers now too, and must not stretch their child */
body.nortime .nr-marcas-caixa,
body.nortime .nr-fita-caixa,
body.nortime .nr-marcas-w,
body.nortime .nr-fita-w,
body.nortime .nr-ex-w,
body.nortime .nr-video {
  --container-widget-width: 100%;
  padding: 0;
}
body.nortime .nr-fita-caixa { --flex-direction: column; }

/* --------------------------------------------------------- logo marquee ---
 * .nr-marca is the image widget's own div now, standing in for the <span>.
 */
body.nortime .nr-marca {
  flex: 0 0 auto;
  width: auto;
  max-width: none;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
body.nortime .nr-marca img {
  display: block;
  width: auto;
  max-width: 160px;
  object-fit: contain;
}

/* Optical heights, previously inline on each <img>. They live here now because
 * an inline style would be lost the moment the client swaps the image. */
body.nortime .nr-m-bloco-urbano img { height: 33.9px; }
body.nortime .nr-m-grumonte img { height: 29.3px; }
body.nortime .nr-m-quinta-de-monserrate img { height: 24.0px; }
body.nortime .nr-m-lemcor img { height: 32.3px; }
body.nortime .nr-m-cristal-pools img { height: 40.6px; }
body.nortime .nr-m-imolote img { height: 42.9px; }
body.nortime .nr-m-nosso-capital img { height: 50.5px; }
body.nortime .nr-m-lousa-estradas img { height: 23.7px; }
body.nortime .nr-m-invenio img { height: 43.4px; }
body.nortime .nr-m-ve-concept img { height: 41.6px; }

@media (max-width: 859.98px) {
  body.nortime .nr-marca img { max-width: 128px; }
}
@media (max-width: 619.98px) {
  body.nortime .nr-marca img { max-width: 108px; }
}

/* ------------------------------------------------------------- gallery ----
 * .nr-tile is the image widget div; the <img> is still its direct child, so the
 * existing .nr-tile / .nr-tile img rules keep working. Only the flex sizing and
 * Elementor's width:100% on widget images need correcting.
 */
body.nortime .nr-tile {
  flex: 0 0 auto;
  width: auto;
  padding: 0;
}
body.nortime .nr-tile img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
}

/* ------------------------------------------------------------- videos -----
 * Elementor wraps the <video> in .e-hosted-video.elementor-wrapper and drives
 * its shape with --video-aspect-ratio. The frame is already the right shape
 * from .nr-video / .nr-ex, so the wrapper just has to fill it.
 */
body.nortime .nr-video-el-w,
body.nortime .nr-ex-el-w {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}
body.nortime .nr-video-el-w .elementor-wrapper,
body.nortime .nr-ex-el-w .elementor-wrapper {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  aspect-ratio: auto;
  padding-bottom: 0;
}
body.nortime .nr-video .elementor-video,
body.nortime .nr-ex .elementor-video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: var(--nr-bg-deep);
}

/* The hero autoplays, so its poster overlay is only a flash of nothing. */
body.nortime .nr-video .elementor-custom-embed-image-overlay { display: none; }

/* --------------------------------------------- the samples' play affordance
 * Elementor draws its own overlay and play icon. Rather than replace the
 * markup, restyle it into the design's orange disc so the frame is identical
 * to what was there before.
 */
body.nortime .nr-ex .elementor-custom-embed-image-overlay {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  /* the scrim the old overlay button carried */
  box-shadow: inset 0 0 0 9999px rgba(10, 10, 11, .18);
  transition: box-shadow .22s ease;
}
body.nortime .nr-ex .elementor-custom-embed-image-overlay:hover {
  box-shadow: inset 0 0 0 9999px rgba(10, 10, 11, .05);
}
body.nortime .nr-ex .elementor-custom-embed-play {
  width: 54px;
  height: 54px;
  border-radius: 50%;
  background: var(--nr-orange);
  border: 1px solid rgba(255, 255, 255, .14);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  filter: none;
  transition: transform .22s ease;
}
body.nortime .nr-ex .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play {
  transform: scale(1.07);
}
body.nortime .nr-ex .elementor-custom-embed-play svg,
body.nortime .nr-ex .elementor-custom-embed-play i { display: none; }
body.nortime .nr-ex .elementor-custom-embed-play::before {
  content: "";
  width: 0;
  height: 0;
  border-left: 13px solid var(--nr-bg);
  border-top: 8px solid transparent;
  border-bottom: 8px solid transparent;
  margin-left: 3px;
}

/* ------------------------------------------------------- the RGPD photo ---
 * Now an image widget. display:contents on the wrapper keeps the <img>
 * resolving against .nr-rgpd-media, exactly as before.
 */
body.nortime .nr-rgpd-img-w { display: contents; }
body.nortime .nr-rgpd-media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 62% center;
  display: block;
}

/* ============================================================================
   REVISION 12 — settle a specificity tie across the whole form
   ==========================================================================
 * Every form rule was written as
 *     body.nortime .nr-wf X                        -> (0,3,1)
 * and WPForms ships the matching
 *     div.wpforms-container-full .wpforms-form X    -> (0,3,1)
 *
 * An exact tie is broken by stylesheet order, and the order here was not
 * stable between renders. Two things drifted because of it:
 *   - the textarea took WPForms' 43px min-height instead of the design's 132px
 *   - the submit button's margin-top came out 10px instead of 24px
 * which moved everything below the form by up to 26px depending on which sheet
 * landed last.
 *
 * The fix is in the base rules rather than here: `.nr-wf` is written twice
 * (`.nr-wf.nr-wf`), which raises every one of those selectors to (0,4,1) while
 * matching exactly the same elements. No declaration changed.
 */

/* ============================================================================
   REVISION 13 — the privacy policy page
   ==========================================================================
 * A legal page is read, not scanned, so it gets one narrow column and a larger
 * body size than the marketing page. It reuses the site's header and footer
 * verbatim, so only the prose in between needs describing.
 */
body.nortime .nr-legal-sec {
  padding-top: clamp(48px, 6vw, 96px);
  padding-bottom: clamp(56px, 7vw, 112px);
}
body.nortime .nr-legal-shell {
  /* ~68 characters: long enough not to feel clipped, short enough to read */
  max-width: 74ch;
}

body.nortime .nr-legal-t { margin: 14px 0 0; }
body.nortime .nr-legal-t .elementor-heading-title {
  font-family: var(--nr-display);
  font-size: clamp(30px, 4.4vw, 46px);
  line-height: 1.06;
  letter-spacing: -0.015em;
  font-weight: 700;
  color: var(--nr-ink);
  text-wrap: balance;
}
body.nortime .nr-legal-data { margin: 14px 0 0; }
body.nortime .nr-legal-data .elementor-heading-title {
  font-family: var(--nr-mono);
  font-size: 12px;
  letter-spacing: .04em;
  color: var(--nr-muted-2);
  font-weight: 400;
}
body.nortime .nr-legal-lede { margin: 26px 0 0; }
body.nortime .nr-legal-lede p {
  font-size: clamp(17px, 1.7vw, 19px);
  line-height: 1.6;
  color: var(--nr-ink-2, var(--nr-ink));
  margin: 0;
}

body.nortime .nr-legal-h { margin: clamp(38px, 4.4vw, 56px) 0 0; }
body.nortime .nr-legal-h .elementor-heading-title {
  font-family: var(--nr-display);
  font-size: clamp(19px, 2.1vw, 23px);
  line-height: 1.25;
  letter-spacing: -0.005em;
  font-weight: 700;
  color: var(--nr-ink);
}

body.nortime .nr-legal-p { margin: 16px 0 0; }
body.nortime .nr-legal-p p {
  margin: 0;
  font-size: 16.5px;
  line-height: 1.72;
  color: var(--nr-muted);
}
body.nortime .nr-legal-p a,
body.nortime .nr-legal-ul-w a {
  color: var(--nr-orange);
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
}
body.nortime .nr-legal-p a:hover,
body.nortime .nr-legal-ul-w a:hover { color: var(--nr-ink); }

body.nortime .nr-legal-ul-w { margin: 16px 0 0; }
body.nortime .nr-legal-ul {
  margin: 0;
  padding-left: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 9px;
}
body.nortime .nr-legal-ul li {
  position: relative;
  padding-left: 20px;
  font-size: 16.5px;
  line-height: 1.66;
  color: var(--nr-muted);
}
/* a rule rather than a bullet, to match the section dividers on the main page */
body.nortime .nr-legal-ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .72em;
  width: 10px;
  height: 1px;
  background: var(--nr-orange);
}

/* the footer credit gains the policy link; keep the two visually equal */
body.nortime .nr-credito a { white-space: nowrap; }
