/* NIVO Group homepage (ring design). Built 2026-10-06 from the approved
   prototype (website-next/design/home-2026-10, Codex, approved by Alin 4 Oct)
   plus the ring revision Alin directed on 5 Oct (design/home-2026-10-ring).
   Only the homepage loads this file; account, privacy and 404 keep styles.css. */
@font-face{font-family:Alexandria;src:url('/fonts/alexandria-lat.woff2') format('woff2');font-weight:100 900;font-display:swap;unicode-range:U+0000-00FF,U+00B7,U+2013-2014,U+2018-201D,U+2026,U+2192}
@font-face{font-family:Alexandria;src:url('/fonts/alexandria-ar.woff2') format('woff2');font-weight:100 900;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E}
/* Approved palette. The aliases let guide.css (shared tokens) read it. */
:root{--bg:#f6f5f1;--paper:#fff;--ink:#22232c;--muted:#62636f;--line:#dcdcd7;--brand:#5751d9;--soft:#eeedf7;--art:#e9e7f3;color-scheme:light}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#16171d;--paper:#22232b;--ink:#f1f0f6;--muted:#b0b0bd;--line:#3b3c46;--brand:#a8a2ff;--soft:#282638;--art:#292735;color-scheme:dark}}
:root[data-theme=dark]{--bg:#16171d;--paper:#22232b;--ink:#f1f0f6;--muted:#b0b0bd;--line:#3b3c46;--brand:#a8a2ff;--soft:#282638;--art:#292735;color-scheme:dark}
:root{--surface:var(--paper);--accent-text:var(--brand);--button:#5751d9;--button-ink:#fff}
:root[data-theme=dark]{--button:var(--brand);--button-ink:#121525}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--button:var(--brand);--button-ink:#121525}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.9 Alexandria,Arial,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}button,a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--brand);outline-offset:4px}img{display:block;max-width:100%;height:auto}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6}h1,h2,h3,p{margin:0}h1,h2,h3{text-wrap:balance}h2{font-size:28px;line-height:1.6;font-weight:600}h3{font-size:25px;font-weight:600}[hidden]{display:none!important}.wrap{max-width:1160px;margin-inline:auto;width:calc(100% - 96px)}.skip{position:fixed;top:-90px;z-index:30;padding:12px;background:var(--paper)}.skip:focus{top:8px}.preview-note{display:flex;justify-content:space-between;gap:15px;padding:7px 24px;font-size:10px;line-height:1.6;color:var(--muted)}.preview-note span:last-child{font-family:monospace;letter-spacing:.08em}
.header-shell{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--line)}.header{height:82px;display:flex;align-items:center;gap:28px}.brand{display:flex;gap:9px;align-items:center;font-size:23px;font-weight:750;line-height:1.1;letter-spacing:-1px;direction:ltr}.brand-small{display:block;font-size:9px;letter-spacing:4px;font-weight:500;margin-top:7px}.header nav{display:flex;gap:25px;margin-inline-start:auto;font-size:12px}.header nav a,.header nav button{display:flex;align-items:center;min-height:44px;padding:0}.desk-shortcut{display:flex;align-items:center;justify-content:center;gap:15px;min-height:48px;padding:10px 20px;border-radius:9px;background:#5751d9;color:#fff;font-size:13px;white-space:nowrap}.desk-shortcut:hover,.primary:hover{background:#4740c0}.header-options{position:relative}.header-options summary{display:grid;place-items:center;list-style:none;width:44px;height:44px;border:1px solid var(--line);border-radius:9px;cursor:pointer}.header-options summary::-webkit-details-marker{display:none}.header-options[open] summary{background:var(--soft)}.header-tools{position:absolute;inset-inline-end:0;top:56px;width:210px;display:grid;padding:8px;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 40px #0002}.header-tools a,.header-tools button{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:10px 14px;text-align:start;border-radius:6px;font-size:13px}.header-tools a:hover,.header-tools button:hover{background:var(--soft)}.header-tools button[aria-pressed=true]{background:var(--soft);color:var(--brand)}
.hero{display:grid;grid-template-columns:1.08fr 1fr;align-items:center;gap:55px;min-height:500px;padding-block:36px 45px}.eyebrow{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:10px}.tiny-mark{width:7px;height:7px;background:var(--brand);display:inline-block;border-radius:2px;transform:rotate(45deg)}h1{font-size:clamp(37px,4.2vw,60px);line-height:1.6;letter-spacing:-1.5px;font-weight:650;margin:18px 0}.accent{color:var(--brand)}.hero-description{color:var(--muted);font-size:16px;line-height:2;max-width:450px;margin-bottom:22px}.discover-link{display:inline-flex;align-items:center;gap:26px;min-height:48px;border-bottom:1px solid var(--line);font-size:14px}.discover-link:hover{border-color:var(--brand);color:var(--brand)}.direction-arrow{font-family:Arial,sans-serif;font-size:23px;font-weight:400}[dir=ltr] .direction-arrow{transform:scaleX(-1)}.hero-art{height:405px;position:relative;direction:ltr;isolation:isolate}.art-outline{position:absolute;inset:20px 0 40px 20px;border:1px solid var(--line);border-radius:180px 180px 24px 24px;transform:rotate(-7deg)}.art-orbit{position:absolute;inset:25px 25px 40px;border-radius:180px 180px 24px 24px;background:var(--art)}.hero-mascot{position:absolute;width:350px;max-width:none;right:50%;top:25px;transform:translateX(50%);transition:transform .35s}.hero-art:hover .hero-mascot{transform:translateX(50%) translateY(-6px)}.art-caption{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:12px;color:var(--muted)}
.guide-invitation{display:flex;align-items:center;gap:20px;width:100%;text-align:start;background:var(--paper);padding:20px 24px;border:1px solid var(--line);border-radius:12px}.guide-invitation:hover{border-color:var(--brand)}.guide-invitation strong{display:block;font-size:14px;font-weight:550}.guide-invitation span span{font-size:12px;color:var(--muted)}.guide-invitation-end{font-size:12px;margin-inline-start:auto;white-space:nowrap}.guide-invitation>.direction-arrow{color:var(--brand)}
.services{padding-block:64px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:25px}.section-heading h2{margin-top:8px}.service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.service-card{display:flex;flex-direction:column;gap:22px;border:1px solid var(--line);border-radius:18px;padding:26px;background:var(--paper);min-width:0}.card-heading{display:grid;grid-template-columns:minmax(0,1fr) 76px;align-items:center;gap:8px}.card-heading h3{font-size:21px;line-height:1.6}.card-heading img{width:76px;height:76px;object-fit:contain}.status{display:block;font-size:11px;color:var(--muted);margin-top:7px}.service-card>p{color:var(--muted);font-size:13px;line-height:1.95}.card-action{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;min-height:48px;border-top:1px solid var(--line);padding:14px 0 0;margin-top:auto;text-align:start;font-size:13px}.card-action:hover{color:var(--brand)}.desk-card{background:#262737;border-color:#262737;color:#fff}.desk-card .status,.desk-card>p{color:#d4d2e1}.desk-card .card-action{border-color:#ffffff30}.desk-card .card-action:hover{color:#c4bfff}.desk-card button:focus-visible{outline-color:#c4bfff}
.contact{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:44px;border-top:1px solid var(--line)}.contact h2{margin-top:9px}.contact-link{display:flex;align-items:center;gap:25px;font-size:14px;border-bottom:1px solid var(--ink);padding-block:10px;min-height:48px}.endnote{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:20px 30px;font-size:11px;color:var(--muted);border-top:1px solid var(--line)}.endnote a{display:flex;align-items:center;min-height:44px}
#service-dialog{width:min(520px,calc(100% - 32px));max-height:90dvh;overflow-y:auto;padding:28px;border:1px solid var(--line);border-radius:18px;background:var(--paper);color:var(--ink);box-shadow:0 30px 100px #0003}#service-dialog::backdrop{background:#14142288;backdrop-filter:blur(5px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.close-dialog{height:44px;width:44px;border:1px solid var(--line);border-radius:50%;font:26px Arial}.dialog-head+h2{font-size:27px;margin-bottom:8px}#service-dialog>p{color:var(--muted);font-size:12px}.guide-options{margin-top:22px;display:grid;gap:10px}.guide-options button,.guide-options a{display:flex;justify-content:space-between;align-items:center;gap:15px;text-align:start;min-height:50px;padding:12px 15px;border:1px solid var(--line);border-radius:8px;font-size:13px}.guide-options button:hover,.guide-options a:hover{border-color:var(--brand);background:var(--soft)}.dialog-note{margin-top:18px;font-size:12px}#service-dialog .contact-link{margin-top:22px;width:fit-content}
@media(max-width:1050px){.wrap{width:calc(100% - 56px)}.header{gap:18px}.header nav{gap:18px}.hero{gap:20px}.hero-mascot{width:300px;top:55px}.service-card{padding:20px;gap:18px}.card-heading{grid-template-columns:minmax(0,1fr) 60px}.card-heading img{width:60px;height:60px}.card-heading h3{font-size:18px}.task-panel{gap:30px}}
@media(max-width:760px){.wrap{width:calc(100% - 32px)}.preview-note{padding:6px 16px;font-size:9px}.header{height:72px;gap:10px}.header nav{display:none}.brand{font-size:18px;gap:6px}.brand img{width:26px;height:26px}.brand-small{display:none}.desk-shortcut{margin-inline-start:auto;font-size:12px;min-height:44px;padding:9px 12px;gap:9px}.header-options summary{width:44px;height:44px}.header-tools{top:52px}.hero{display:flex;flex-direction:column;gap:0;padding:28px 0;min-height:0;align-items:stretch}.eyebrow{font-size:12px}h1{font-size:clamp(31px,8.6vw,45px);line-height:1.55;letter-spacing:-1px;margin:15px 0}.hero-description{font-size:14px;max-width:430px;margin-bottom:14px}.hero-art{height:215px;width:270px;max-width:100%;align-self:center;margin-top:15px}.hero-mascot{width:215px;top:0}.art-outline{inset:18px 16px 10px}.art-orbit{inset:26px 26px 15px}.art-caption{display:none}.guide-invitation{gap:12px;padding:16px}.guide-invitation>img{width:26px;height:26px}.guide-invitation strong{font-size:13px}.guide-invitation span span{font-size:12px;line-height:1.8;display:block;margin-top:3px}.guide-invitation-end{display:none}.guide-invitation>.direction-arrow{margin-inline-start:auto}.services{padding-block:36px}.section-heading{margin-bottom:20px;align-items:start;gap:12px;flex-wrap:wrap}h2{font-size:24px}.service-grid{grid-template-columns:1fr;gap:14px}.service-card{padding:22px;gap:16px}.card-heading{grid-template-columns:minmax(0,1fr) 68px;gap:14px}.card-heading img{width:68px;height:68px}.card-heading h3{font-size:22px}.status{font-size:12px;margin-top:4px}.service-card>p{font-size:14px}.card-action{font-size:13px;padding-top:12px}.desk-section{padding:30px 0}.desk-section,.services,#main{scroll-margin-top:90px}.area-tabs{gap:6px}.area-tabs button{flex:1;padding:10px 8px;font-size:12px}.task-tabs{gap:0;padding-inline:8px;justify-content:space-between}.task-tabs button{font-size:11px;padding-inline:5px;min-height:56px}.task-panel{padding:24px 20px;grid-template-columns:1fr;gap:24px}.task-copy h3{font-size:23px}.task-copy .primary{width:100%}.task-steps{padding-inline-start:0;border:0}.task-step{font-size:13px;padding:10px 0}.contact{align-items:start;flex-direction:column;padding-block:32px;gap:18px}.contact h2{font-size:24px}.endnote{align-items:start;gap:15px}.endnote>span{max-width:210px}dialog{padding:22px}.dialog-head+h2{font-size:24px}}
@media(max-width:350px){.header{gap:8px}.brand{font-size:17px;gap:4px}.brand img{width:24px;height:24px}.desk-shortcut{padding-inline:9px;gap:6px;font-size:11px}.service-card{padding:20px}.card-heading h3{font-size:20px}}
.brand{min-height:44px;min-width:44px}
/* ---- Ring revision ---- */
/* Hero service ring probe — layered on the approved preview.css, never replacing it.
   Geometry: cards ride an orbit whose centre is in front of the mascot, so at rest
   all three cards sit in front of the mark and only a card in transit through the
   far point passes behind it. Cards always face the viewer (billboarded): a true
   cylinder would show the two rear cards backwards, which for Arabic is unreadable.
   Positions come from --x/--y/--s/--z. The data-pos defaults below are the no-JS and
   reduced-motion arrangement; ring.js only writes the same variables. */
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.hero{min-height:0;padding-block:28px 36px}
.hero-art{height:auto;--card-w:340px;--rx:172px;--ry:176px}
.art-layers{position:absolute;inset:0 0 auto;height:380px}
.art-layers .art-outline{inset:10px 10px 0 30px}
.art-layers .art-orbit{inset:16px 40px 0}
.hero-mascot{width:300px;top:8px;z-index:2}
.art-layers .art-orbit{z-index:0}.art-layers .art-outline{z-index:1}

.ring{position:relative;height:560px;scroll-margin-top:100px}
[dir=rtl] .ring{direction:rtl}[dir=ltr] .ring{direction:ltr}
.ring:focus{outline:none}
.ring-stage{position:absolute;inset:0;touch-action:pan-y;-webkit-user-select:none;user-select:none}

.ring .service-card{
  position:absolute;bottom:0;left:50%;width:var(--card-w);margin-left:calc(var(--card-w) / -2);
  transform-origin:50% 100%;
  transform:translate3d(var(--x,0px),var(--y,0px),0) scale(var(--s,1));
  z-index:var(--z,3);
  box-shadow:0 calc(18px * var(--lift,1)) calc(46px * var(--lift,1)) #1d1c3a26;
  will-change:transform;
}
.ring .service-card:not(.desk-card){box-shadow:0 calc(14px * var(--lift,1)) calc(40px * var(--lift,1)) #1d1c3a1f}
:root[data-theme=dark] .ring .service-card{box-shadow:0 calc(18px * var(--lift,1)) calc(46px * var(--lift,1)) #0008}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .ring .service-card{box-shadow:0 calc(18px * var(--lift,1)) calc(46px * var(--lift,1)) #0008}}
/* Rest positions. "next" follows the reading direction: inline-end of the front card. */
.ring [data-pos=front]{--x:0px;--y:0px;--s:1;--z:30;--lift:1}
.ring [data-pos=next]{--x:calc(var(--rx) * .866);--y:calc(var(--ry) * -.75);--s:.84;--z:12;--lift:.35}
.ring [data-pos=previous]{--x:calc(var(--rx) * -.866);--y:calc(var(--ry) * -.75);--s:.84;--z:12;--lift:.35}
[dir=rtl] .ring [data-pos=next]{--x:calc(var(--rx) * -.866)}
[dir=rtl] .ring [data-pos=previous]{--x:calc(var(--rx) * .866)}
/* A rear card shows its name, status and character; its description and action
   resolve as it comes forward. Still in the DOM and in Tab order — focusing it
   turns it to the front. */
.ring .service-card>p,.ring .service-card>.card-action{opacity:var(--body,1)}
.ring [data-pos=next],.ring [data-pos=previous]{--body:0}
.ring .status{font-size:12px}
/* Name + status must clear the card in front even when a name wraps ("Information
   technology" does in English). */
.ring .card-heading{align-items:start}.ring .card-heading h3{line-height:1.4}
/* A rear card is one tap from the front: whole card is the target for a pointer. */
.ring.is-live .service-card:not([data-pos=front]){cursor:pointer}
.ring.is-dragging .service-card{cursor:grabbing}

/* The ring replaces the section the discover link pointed at, and sits beside it. */
.discover-link{display:none}
.services{display:none}

/* Ring or stack is chosen by the width the art cell actually has, not by device:
   below 460px three cards cannot form a ring without leaving the page (measured
   at 768px: the rear card started at x = -54). ring.js reads the same width. */
.hero-art{container:ring-cell / inline-size}
@media(max-width:760px){.hero{padding-block:22px 18px}.hero-art{width:100%;margin-top:6px}}

/* Narrow: the same ring, scaled down to the characters. The main NIVO mark stands
   in the middle; the three service characters orbit it (selected one in front, at
   its feet); ONE card below always shows the service in front. Replaces the edge-on
   stack, where the first thing a phone visitor read was the last service. */
.orbit-picks{display:none}
@container ring-cell (min-width: 0px){
  .art-layers{position:relative;height:200px;width:100%}
  .art-layers .art-orbit{inset:10px calc(50% - 96px) 52px}
  .art-layers .art-outline{inset:2px calc(50% - 108px) 46px}
  .hero-mascot{width:128px;top:6px}
  .orbit-picks{display:block;position:absolute;inset:0 0 auto;height:200px}
  .orbit-pick{position:absolute;left:50%;top:var(--cy,78px);width:96px;margin-left:-48px;display:grid;justify-items:center;gap:2px;
    transform:translate3d(var(--x,0px),var(--y,0px),0) scale(var(--s,1));z-index:var(--z,3);will-change:transform}
  .orbit-pick img{width:68px;height:68px;object-fit:contain}
  /* Name only on the side characters; the card below names the one in front. */
  .orbit-pick span{font-size:11px;line-height:1.5;white-space:nowrap;color:var(--muted);opacity:var(--label,0)}
  .ring{height:auto;margin-top:4px}
  .ring-stage{position:relative;inset:auto;display:grid}
  .ring .service-card{position:relative;grid-area:1/1;left:auto;bottom:auto;width:auto;margin:0;align-self:stretch;opacity:var(--o,1)}
  .ring .service-card>p,.ring .service-card>.card-action{opacity:1}
  /* The character is already standing above the card. */
  .ring .card-heading{grid-template-columns:minmax(0,1fr)}.ring .card-heading img{display:none}
  .ring [data-pos=next],.ring [data-pos=previous]{--o:0;--x:0px;--y:0px;--s:1;pointer-events:none}
  [dir=rtl] .ring [data-pos=next],[dir=rtl] .ring [data-pos=previous]{--x:0px}
  /* Without the script: no orbit, all three cards in reading order. */
  .ring:not(.is-live) .ring-stage{gap:14px}
  .ring:not(.is-live) .service-card{grid-area:auto;--o:1;pointer-events:auto}
}
.hero-art:not(:has(.ring.is-live)) .orbit-picks{display:none}

/* Header: wordmark centred, language and theme as the two ends. */
.header-centered{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center}
.header-centered .brand{justify-self:center}
.header-centered .header-start{justify-self:start;display:flex;align-items:center;gap:6px}
@media(max-width:360px){.header-centered{gap:6px}.header-centered #language{padding:0 9px}}
.header-centered .theme-toggle{justify-self:end}
.header-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:0 16px;border:1px solid var(--line);border-radius:22px;font-size:13px}
.header-toggle:hover{background:var(--soft)}
.theme-toggle{width:44px;padding:0;border-radius:50%}
.theme-toggle[aria-pressed=true]{background:var(--soft);color:var(--brand)}

/* Reduced motion: preview.css already removes transitions. ring.js also skips the
   spring and jumps between rest positions, so the static arrangement above is what
   this audience sees — all three cards present, Desk in front. */

@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* ---- Production header: the live account link and balance (account.js) ---- */
.header-account{display:inline-flex;align-items:center;gap:8px}
.header-account a{display:inline-flex;align-items:center;min-height:44px;padding-inline:8px;font-size:13px;white-space:nowrap}
.header-account a:hover{color:var(--brand)}
.header-account [data-account-balance]{font-size:12px;color:var(--muted);white-space:nowrap}
.theme-toggle[aria-checked=true]{background:var(--soft);color:var(--brand)}
/* Every width (Alin, 6 Oct: the desktop header matches the phone): the account is a
   round person icon. account.js rewrites the link's text (Sign in / Account), so the
   icon is drawn in CSS and the text stays as the accessible name. The balance is
   shown on the account page and inside Desk, not in this header. */
.header-account [data-account-balance]{display:none!important}
.header-centered .brand-small{display:none}
.header-account a{position:relative;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:50%;font-size:0;color:var(--ink);overflow:hidden}
.header-account a::before{content:'';position:absolute;left:50%;top:11px;width:9px;height:9px;margin-left:-4.5px;border:1.6px solid currentColor;border-radius:50%}
.header-account a::after{content:'';position:absolute;left:50%;top:23px;width:16px;height:12px;margin-left:-8px;border:1.6px solid currentColor;border-radius:9px 9px 0 0;border-bottom:0}
/* The approved sheet hides header <nav> on phones (its old link row); the account
   nav must stay, so it is addressed with higher specificity. */
.header .header-account{display:inline-flex;margin-inline-start:0;gap:8px;font-size:13px}

/* ---- 2026-10-06 quality pass (grade fixes) ---- */
/* Readable rear text: rear cards render at .84, so 14px status shows at ~12px. */
.ring .status{font-size:14px}
/* Dark theme: the Desk card must still stand apart from the other cards. */
:root[data-theme=dark] .desk-card{background:#2b2758;border-color:#7d76f0}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .desk-card{background:#2b2758;border-color:#7d76f0}}
.desk-card a:focus-visible{outline-color:#c4bfff}
@container ring-cell (min-width: 0px){
  /* Character names: readable, and allowed to wrap rather than leave the cell. */
  .orbit-pick span{font-size:12.5px;line-height:1.35;white-space:normal;max-width:112px;text-align:center}
  /* Cards slide in from the side while turning; the slide may not widen the page. */
  .ring-stage{overflow:clip;overflow-clip-margin:16px}
}

/* Desktop (Alin, 6 Oct): the phone composition at every width — NIVO stands clear
   in the middle with the characters orbiting it and one card below, instead of
   cards in front of the mark. Same behaviour, larger sizes. */
@container ring-cell (min-width: 421px){
  /* Alin, 6 Oct: bigger characters (main NIVO most of all) and a compact stack, so
     the whole Desk card fits on the first screen of a ~650px-tall laptop window. */
  .art-layers{height:300px}
  .art-layers .art-orbit{inset:8px calc(50% - 160px) 54px}
  .art-layers .art-outline{inset:0 calc(50% - 178px) 48px}
  /* Up to 250px; slightly smaller in narrower columns so the side characters stay clear. */
  .hero-mascot{width:min(250px,52cqw);top:0}
  .orbit-picks{height:300px}
  .orbit-pick{top:112px;width:130px;margin-left:-65px}
  .orbit-pick img{width:104px;height:104px}
  .orbit-pick span{font-size:13px;max-width:130px}
  /* The card tucks up under the front character's feet. */
  .ring{max-width:420px;margin-inline:auto;margin-top:-8px}
  .ring .service-card{padding:18px 24px;gap:10px}
  .ring .card-heading h3{line-height:1.35}
  .ring .status{margin-top:2px}
  .ring .service-card>p{line-height:1.8}
  .ring .card-action{padding-top:8px}
  /* The art cell is wider than the card, so clip the side slide there and leave
     the card's shadow whole (clipping the stage cut it into a hard band). */
  .ring-stage{overflow:visible}
}
/* Desktop: a tighter opening so the art and its card sit higher on the page. */
@media(min-width:761px){
  .header{height:72px}
  .hero{padding-block:8px 24px}
}
/* Outside the query: a container cannot style itself. Clips the sideways slide of
   hidden cards so the page never widens (phones also clip at the stage). */
.hero-art{overflow-x:clip}
