/* ============================================================
   Mono Solution AS — site styles
   Shared by index.html and privacy.html.
   Colours live as tokens on :root and are redefined for light
   mode. Change a value once here and it changes everywhere.
   ============================================================ */

@font-face{
  font-family:'Mono Solution';
  src:url('fonts/MonoSolution-Light.woff2') format('woff2');
  font-weight:300;font-style:normal;font-display:swap;
}

:root{
  /* dark mode (default) */
  --bg:#0a0a0a; --bg-2:#121214; --line:#2c2c2e; --line-2:#3a3a3c;
  --fg:#f2f2f2; --fg-2:#a8a8a8; --fg-3:#6f6f6f;
  --accent:#8fb9cc; --accent-bg:rgba(143,185,204,.10); --accent-line:rgba(143,185,204,.35);
  --danger:#d98d8d;
  /* ambient light: white glow in dark mode */
  --amb-core:rgba(255,255,255,.08); --amb-mid:rgba(255,255,255,.03);
  --cta-glow:rgba(255,255,255,.12);
  --rim-a:rgba(255,255,255,.5); --rim-b:rgba(255,255,255,.08); --rim-c:rgba(255,255,255,.3);
  --orb-glow:rgba(255,255,255,.07);

  --max:1000px;
  --display:'Mono Solution',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --text:ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,monospace;
}
:root[data-theme="light"]{
  --bg:#fbfbfa; --bg-2:#f3f3f1; --line:#e3e3e0; --line-2:#d0d0cc;
  --fg:#0c0c0c; --fg-2:#565654; --fg-3:#8a8a86;
  --accent:#2a6a88; --accent-bg:rgba(42,106,136,.07); --accent-line:rgba(42,106,136,.28);
  --danger:#9a3b3b;
  /* ambient light: soft dark glow in light mode */
  --amb-core:rgba(0,0,0,.05); --amb-mid:rgba(0,0,0,.02);
  --cta-glow:rgba(0,0,0,.022);
  --rim-a:rgba(0,0,0,.16); --rim-b:rgba(0,0,0,.05); --rim-c:rgba(0,0,0,.1);
  --orb-glow:rgba(0,0,0,.09);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
/* no rubber-band "bounce" past the top/bottom on phones (iOS Safari 16+,
   Chrome/Android): the page simply stops at the top. The root background
   matches the page so nothing different shows through on older browsers. */
html,body{overscroll-behavior-y:none}
html{background:var(--bg)}
body{
  margin:0;background:var(--bg);color:var(--fg);
  font-family:var(--text);font-size:17px;line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
a{color:inherit}
h1,h2,h3{font-family:var(--display);font-weight:300;letter-spacing:.03em;margin:0}
p{margin:0}

/* ---------- wordmark lockup: mono large, solution tucked bottom-right ---------- */
.lockup{display:inline-flex;flex-direction:column;align-items:flex-end;font-family:var(--display);line-height:1}
.lockup .mono{letter-spacing:.14em;margin-right:-.14em}
.lockup .solution{letter-spacing:.34em;margin-right:-.34em;color:var(--fg-2)}

/* ---------- header ---------- */
header{
  position:sticky;top:0;z-index:50;height:60px;display:flex;align-items:center;
  background:color-mix(in srgb,var(--bg) 92%,transparent);
  -webkit-backdrop-filter:saturate(160%) blur(14px);
  backdrop-filter:saturate(160%) blur(14px);border-bottom:1px solid var(--line);
}
/* ambient light: a faint glow from the top of the screen, behind the header.
   Not a shadow. Fixed, click-through, strongest right under the logo. */
.ambient-top{
  position:fixed;top:0;left:0;right:0;height:340px;z-index:1;pointer-events:none;
  background:radial-gradient(60% 100% at 50% 0%,var(--amb-core) 0%,var(--amb-mid) 40%,transparent 100%);
}
header .wrap{display:flex;align-items:center;gap:14px;width:100%}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none}
.brand .lockup .mono{font-size:19px}
.brand .lockup .solution{font-size:8.5px;margin-top:5px}
header nav{margin-left:auto;display:flex;align-items:center;gap:8px}
header .wrap{position:relative;max-width:none}
.hlogo{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  display:block;width:128px;line-height:0;color:var(--fg);
}
/* inline vector logo: sharp at any size and pixel density, follows the theme colour */
.hlogo svg{display:block;width:100%;height:auto;shape-rendering:geometricPrecision}

/* header tools (left): language switch — one button, no box. It shows the
   language you switch TO (NO while the page is English, EN while Norwegian). */
.tools{display:flex;align-items:center;gap:10px}
.lang{
  display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;
  padding:0 4px;border:0;border-radius:8px;background:none;cursor:pointer;font:inherit;
  color:var(--fg-2);transition:color .15s ease;
}
.lang:hover{color:var(--fg)}
.lang span{font-size:12px;font-weight:600;letter-spacing:.06em;line-height:1}
.lang span.on{display:none}
/* light/dark switch: one round icon button fixed in the bottom-left corner.
   Sun in dark mode (click for light), moon in light mode (click for dark). */
.theme-btn{
  position:fixed;left:max(18px,env(safe-area-inset-left));bottom:max(18px,env(safe-area-inset-bottom));z-index:40;
  display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;
  border:1px solid var(--line);border-radius:999px;cursor:pointer;color:var(--fg-2);
  background:color-mix(in srgb,var(--bg) 82%,transparent);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  transition:color .15s ease,border-color .15s ease;
}
.theme-btn:hover{color:var(--fg);border-color:var(--line-2)}
.theme-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.theme-btn .i-moon{display:none}
:root[data-theme="light"] .theme-btn .i-sun{display:none}
:root[data-theme="light"] .theme-btn .i-moon{display:block}
.back .bk-short{display:none}
@media (max-width:540px){
  header .wrap{padding:0 16px}
  .back .bk-short{display:inline}
  .back .bk-full{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
@media (max-width:400px){
  .hlogo{width:88px}
}

.btn{
  display:inline-flex;align-items:center;justify-content:center;text-decoration:none;
  font:inherit;font-size:14px;line-height:1;padding:11px 18px;border-radius:7px;white-space:nowrap;
  border:1px solid var(--fg);background:var(--fg);color:var(--bg);cursor:pointer;
  transition:opacity .15s ease;
}
.btn:hover{opacity:.84}
.btn:disabled{opacity:.5;cursor:default}
.btn.sm{padding:8px 14px;font-size:13px}
/* header Contact: always the dark button (as in light mode); in dark mode it gets a
   subtle rim so it stays visible against the near-black header */
header .btn.sm{background:#0c0c0c;color:#fff;border-color:#0c0c0c}
:root:not([data-theme="light"]) header .btn.sm{border-color:var(--line-2)}
:root:not([data-theme="light"]) header .btn.sm:hover{opacity:1;background:#1c1c1e}
/* light mode: every filled button (Kontakt, Book demo, Kontakt oss, Send)
   is white with a thin rim */
:root[data-theme="light"] .btn:not(.quiet){background:#fff;color:#0c0c0c;border-color:var(--line-2);box-shadow:0 1px 2px rgba(0,0,0,.05)}
:root[data-theme="light"] .btn:not(.quiet):hover{opacity:1;background:var(--bg-2)}
:root[data-theme="light"] .btn:not(.quiet):disabled{opacity:.5}
.btn.quiet{background:none;color:var(--fg);border-color:var(--line-2);font-size:13px;padding:8px 14px}
.btn.quiet:hover{background:var(--bg-2);opacity:1}

@media (max-width:540px){
  header .wrap{gap:8px}
  header nav{gap:6px}
  .tools{gap:4px}
  .theme-btn{width:40px;height:40px;left:max(14px,env(safe-area-inset-left));bottom:max(14px,env(safe-area-inset-bottom))}
  .lang{min-width:28px;height:28px}
  .btn.sm{padding:8px 12px;font-size:12.5px}
  .hlogo{width:104px}
}
@media (max-width:420px){ .brand .lockup{display:none} }

/* ---------- hero ---------- */
.hero{position:relative}
.hero-in{
  min-height:calc(100svh - 60px);display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;padding:40px 24px;
}
.hero-txt{display:flex;flex-direction:column;align-items:center}
/* scroll-driven version (enabled by site.js): the hero is tall, its content sticks */
.scrolly .hero{height:calc(100svh - 60px + var(--hero-scroll,130svh))}
.scrolly .hero-in{position:sticky;top:60px;height:calc(100svh - 60px);min-height:0;overflow:hidden}
.scrolly .mark,.scrolly .m-txt{will-change:transform,opacity}
/* the next screen: wordmark + two lines, centred, revealed as it scrolls in */
.hero-next{
  min-height:calc(72svh - 60px);display:flex;align-items:center;justify-content:center;
  text-align:center;padding:40px 24px 0;
}
/* pull "The Company" up close to the wordmark block */
.hero-next+section>.wrap{padding-top:48px}
.scrolly .hero-next .hero-txt>*{opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.scrolly .hero-next.in .hero-txt>*{opacity:1;transform:none}
.scrolly .hero-next.in .hero-txt>:nth-child(2){transition-delay:.15s}
.scrolly .hero-next.in .hero-txt>:nth-child(3){transition-delay:.3s}
.mark{
  position:relative;width:min(560px,86vw,calc(44svh * 92 / 62));aspect-ratio:92/62;
  display:flex;align-items:center;justify-content:center;container-type:inline-size;
}
.mark svg{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible}
.mark path{fill:none;stroke:var(--fg);stroke-width:.9;stroke-linecap:round}
/* much thinner than the logo ratio (1.9) — reads better at this large size */
/* soft ambient light around the OUTSIDE of the merged circle, for depth.
   Sized to the circle's outer edge (60 + stroke, of the 92-wide viewBox); outer box-shadow
   only paints outside the element, so the inside stays clean. */
.m-glow{
  position:absolute;left:50%;top:50%;width:66.2%;aspect-ratio:1;border-radius:50%;
  transform:translate(-50%,-50%);pointer-events:none;opacity:0;
  box-shadow:0 0 22px 0 var(--orb-glow),0 0 70px 12px var(--orb-glow);
}
.m-txt{
  position:relative;margin:0;font-family:var(--display);font-weight:300;
  font-size:clamp(14px,4.8cqw,27px);line-height:1.3;letter-spacing:.06em;color:var(--fg);opacity:0;
}
.hero-next .lockup{margin-top:0}
.hero-next .lockup .mono{font-size:clamp(46px,9vw,92px)}
.hero-next .lockup .solution{font-size:clamp(11px,1.5vw,16px);margin-top:clamp(6px,1vh,12px)}
@media (max-width:540px){
  /* phones: circles and wordmark a little smaller */
  .mark{width:min(70vw,calc(40svh * 92 / 62))}
  .hero-next .lockup .mono{font-size:38px}
  .hero-next .lockup .solution{font-size:10px}
  .m-txt{font-size:4.2cqw}
}
.hero-next .one{margin-top:clamp(26px,4vh,46px);font-size:clamp(17px,2vw,21px);color:var(--fg);max-width:34ch;line-height:1.45}
.hero-next .two{margin-top:13px;font-size:15px;color:var(--fg-2);max-width:40ch}


/* ---------- sections ---------- */
section{border-top:0}
section>.wrap{padding:96px 24px}
.lab{
  font-family:var(--mono);font-size:13.5px;letter-spacing:.2em;color:var(--fg-2);
  text-transform:uppercase;display:block;margin-bottom:28px;
}
h2{font-size:clamp(26px,3.6vw,38px);line-height:1.15;max-width:19ch}
.lead{font-size:17.5px;color:var(--fg-2);max-width:60ch;margin-top:22px;line-height:1.62}
.lead-2{margin-top:20px}
.lab+.lead{margin-top:0}
.lab+.tiles{margin-top:0}

/* ---------- product tiles ---------- */
.tiles{display:flex;flex-direction:column;gap:18px;margin-top:46px}
.tile{
  border:1px solid var(--line);border-radius:14px;background:var(--bg-2);
  padding:34px 32px;display:grid;grid-template-columns:1fr auto;
  column-gap:28px;row-gap:0;align-items:start;
}
.tile>.pts,.tile>ul{grid-column:1/-1}
.tile .head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.tile .nm{font-family:var(--display);font-size:24px;letter-spacing:.09em}
.chip{
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  border:1px solid var(--line-2);color:var(--fg-2);padding:4px 9px;border-radius:99px;white-space:nowrap;
}
.tile p.desc{color:var(--fg-2);font-size:15.5px;line-height:1.62;max-width:60ch}
.tile ul{list-style:none;padding:0;margin:20px 0 0;display:flex;flex-wrap:wrap;gap:8px}
.tile ul li{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--fg-3);
  border:1px solid var(--line);border-radius:6px;padding:6px 10px;background:var(--bg);
}
.tile .act{display:flex;flex-direction:column;align-items:flex-end;gap:9px;min-width:200px}
.tile.soon{background:none;border-style:dashed}
/* CTA tile (Book demo): the same light, mirrored — from below, with a thin gradient rim */
.tile.cta{
  border:1px solid transparent;border-radius:16px;
  background:
    radial-gradient(90% 70% at 50% 100%,var(--cta-glow),transparent 60%) padding-box,
    linear-gradient(var(--bg-2),var(--bg-2)) padding-box,
    linear-gradient(160deg,var(--rim-a),var(--rim-b) 45%,var(--rim-c)) border-box;
}
.tile.soon .nm{color:var(--fg-2)}

.pts{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:30px}
.pts div{border-top:1px solid var(--line-2);padding-top:16px}
.pts h3{font-size:14.5px;letter-spacing:.07em;margin-bottom:8px;color:var(--fg)}
.pts p{font-size:14px;color:var(--fg-2);line-height:1.58}
@media (max-width:820px){.pts{grid-template-columns:1fr;gap:20px}}
@media (max-width:760px){
  .tile{grid-template-columns:1fr;padding:28px 22px}
  .tile .main{order:1}
  .tile .pts{order:2}
  .tile>ul{order:3}
  .tile .act{order:4;align-items:stretch;min-width:0;margin-top:26px}
  .tile .act .btn{width:100%}
}

/* ---------- contact ---------- */
.mail-btn{margin-top:30px;font-size:15px;padding:13px 22px}

/* ---------- partners (quiet strip at the bottom) ---------- */
.partners{margin-top:88px;padding-top:26px;border-top:1px solid var(--line)}
.plab{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--fg-3);display:block;margin-bottom:24px;
}
.plogos{display:flex;flex-wrap:wrap;align-items:center;gap:26px 54px}
.plogo{
  display:block;width:var(--w);height:26px;flex:0 0 auto;
  background-color:var(--fg-3);
  -webkit-mask:var(--m) no-repeat center/contain;
  mask:var(--m) no-repeat center/contain;
  opacity:.9;transition:background-color .15s ease,opacity .15s ease;
}
/* per-logo size and mask live here, not in inline style="" attributes:
   the site's Content-Security-Policy (style-src 'self') blocks inline styles */
.p-einnovation{--w:198px;--m:url(/assets/logos/einnovation.png)}
.p-swaibian{--w:122px;--m:url(/assets/logos/swaibian.png)}
.p-interpadel{--w:228px;--m:url(/assets/logos/interpadel.png)}
.p-forus{--w:236px;--m:url(/assets/logos/forus.png)} /* recreated from the building sign */
.plogo.p-forus{height:31px}
.plogos:hover .plogo{opacity:.6}
.plogos .plogo:hover{background-color:var(--fg-2);opacity:1}
@media (max-width:640px){
  .partners{margin-top:64px}
  .plogos{gap:22px 36px}
  .plogo{height:22px;width:calc(var(--w) * .85)}
  .plogo.p-forus{height:26px}
}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--line);background:var(--bg-2);font-size:13px;color:var(--fg-3)}
footer .wrap{padding:30px 24px}
footer .row{display:flex;gap:10px 22px;flex-wrap:wrap;align-items:baseline}
/* phones: keep the last footer line clear of the fixed light/dark button */
@media (max-width:540px){ footer .wrap{padding-bottom:78px} }
footer .row+.row{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
footer .sp{margin-left:auto}
footer a{text-decoration:none;border-bottom:1px solid var(--line-2);padding-bottom:1px}
footer a:hover{color:var(--fg-2);border-color:var(--fg-3)}

/* ---------- contact dialog ---------- */
dialog#contact-dialog,dialog#code-dialog{
  border:1px solid var(--line-2);border-radius:14px;background:var(--bg);color:var(--fg);
  padding:0;width:min(560px,calc(100vw - 32px));max-height:calc(100svh - 48px);
}
dialog#contact-dialog::backdrop,dialog#code-dialog::backdrop{background:rgba(0,0,0,.66);backdrop-filter:blur(3px)}
:root[data-theme="light"] dialog#contact-dialog::backdrop,:root[data-theme="light"] dialog#code-dialog::backdrop{background:rgba(30,30,28,.38)}
.dlg-head{
  display:flex;align-items:flex-start;gap:16px;
  padding:26px 28px 18px;border-bottom:1px solid var(--line);
}
.dlg-head h2{font-size:24px;max-width:none;letter-spacing:.05em}
.dlg-head p{font-size:13.5px;color:var(--fg-3);margin-top:8px;line-height:1.5}
.dlg-x{
  margin-left:auto;background:none;border:1px solid var(--line);color:var(--fg-3);
  border-radius:7px;width:32px;height:32px;font:inherit;font-size:17px;line-height:1;
  cursor:pointer;flex:0 0 auto;
}
.dlg-x:hover{color:var(--fg);background:var(--bg-2)}
.dlg-body{padding:22px 28px 26px;overflow-y:auto}
.field{margin-bottom:16px}
.field label{
  display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--fg-3);margin-bottom:7px;
}
.field label .opt{text-transform:none;letter-spacing:.04em;font-size:10px}
.field input,.field textarea{
  width:100%;font:inherit;font-size:15.5px;color:var(--fg);
  background:var(--bg-2);border:1px solid var(--line-2);border-radius:8px;
  padding:11px 13px;line-height:1.5;
}
.field textarea{min-height:108px;resize:vertical}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--accent);background:var(--bg);box-shadow:0 0 0 3px var(--accent-bg)}
a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
.field input:user-invalid,.field textarea:user-invalid{border-color:var(--danger)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.dlg-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:22px}
.dlg-foot .note{font-size:12px;color:var(--fg-3);line-height:1.45;flex:1 1 200px}
.dlg-foot .note a{color:var(--fg-2)}
.status{margin-top:16px;font-size:14px;line-height:1.5;display:none}
.status.show{display:block}
.status.ok{color:var(--accent)}
.status.err{color:var(--danger)}
@media (max-width:540px){
  .dlg-head{padding:22px 20px 16px}
  .dlg-body{padding:18px 20px 22px}
  .dlg-foot .btn{width:100%}
}

/* ---------- privacy page ---------- */
.doc .wrap{padding:76px 24px 40px}
.doc h1{font-size:clamp(30px,4.4vw,46px);line-height:1.12}
.doc .meta{font-family:var(--mono);font-size:12px;color:var(--fg-3);margin-top:20px;letter-spacing:.04em}
.doc .intro{font-size:17.5px;color:var(--fg-2);max-width:62ch;margin-top:26px;line-height:1.62}
.doc section{padding:38px 0}
.doc section:first-of-type{margin-top:46px}
.doc h2{font-size:20px;letter-spacing:.06em;margin-bottom:16px;max-width:none}
.doc section p{color:var(--fg-2);font-size:16px;line-height:1.66;max-width:68ch}
.doc section p+p{margin-top:14px}
.doc ul{margin:14px 0 0;padding:0;list-style:none;max-width:68ch}
.doc ul li{
  color:var(--fg-2);font-size:16px;line-height:1.6;padding:0 0 0 22px;position:relative;margin-bottom:9px;
}
.doc ul li::before{content:"";position:absolute;left:2px;top:12px;width:10px;height:1px;background:var(--fg-3)}
.contactbox{
  border:1px solid var(--line);border-radius:12px;background:var(--bg-2);
  padding:24px 26px;margin-top:22px;max-width:52ch;
}
.contactbox div{font-size:15.5px;color:var(--fg-2);line-height:1.7}
.contactbox div:first-child{color:var(--fg)}
@media (max-width:640px){
  section>.wrap,.doc .wrap{padding:66px 20px}
  .doc section{padding:30px 0}
  footer .sp{margin-left:0}
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important}
}

/* ---------- final touches: no circle, no box ----------
   light/dark switch (bottom-left): just the icon, no circle behind it;
   header Contact (top-right): plain text, no box, in both themes */
.theme-btn,.theme-btn:hover{border:0;background:none;-webkit-backdrop-filter:none;backdrop-filter:none}
header .btn.sm,
:root[data-theme="light"] header .btn.sm,
:root:not([data-theme="light"]) header .btn.sm{
  background:none;border-color:transparent;box-shadow:none;color:var(--fg-2);padding-left:6px;padding-right:6px;
}
header .btn.sm:hover,
:root[data-theme="light"] header .btn.sm:hover,
:root:not([data-theme="light"]) header .btn.sm:hover{background:none;color:var(--fg);opacity:1}

/* ---------- menu (top-right) ----------
   One text button with a two-line icon that turns into a cross. The list
   opens as a small panel under it. Same quiet look as the old Contact link. */
header nav{position:relative}
.menu-btn{
  display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;
  border:0;border-radius:8px;background:none;cursor:pointer;color:var(--fg-2);transition:color .15s ease;
}
.menu-btn:hover,.menu-btn[aria-expanded="true"]{color:var(--fg)}
.menu-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* the word stays for screen readers; on screen it is just the icon */
.menu-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* three lines; the outer two cross into an X, the middle one fades */
.menu-icon{position:relative;width:18px;height:12px}
.menu-icon i{
  position:absolute;left:0;right:0;height:1.5px;border-radius:1px;background:currentColor;
  transition:top .22s ease,transform .22s ease,opacity .15s ease;
}
.menu-icon i:nth-child(1){top:0}
.menu-icon i:nth-child(2){top:5.25px}
.menu-icon i:nth-child(3){top:10.5px}
.menu-btn[aria-expanded="true"] .menu-icon i:nth-child(1){top:5.25px;transform:rotate(45deg)}
.menu-btn[aria-expanded="true"] .menu-icon i:nth-child(2){opacity:0}
.menu-btn[aria-expanded="true"] .menu-icon i:nth-child(3){top:5.25px;transform:rotate(-45deg)}

.site-menu{
  position:absolute;right:0;top:calc(100% + 12px);min-width:220px;padding:6px;
  display:flex;flex-direction:column;
  background:var(--bg);border:1px solid var(--line);border-radius:14px;
  box-shadow:0 22px 50px rgba(0,0,0,.28);
  animation:menu-in .16s ease-out;
}
:root[data-theme="light"] .site-menu{box-shadow:0 18px 40px rgba(0,0,0,.08)}
.site-menu[hidden]{display:none}
@keyframes menu-in{from{opacity:0;transform:translateY(-4px)}}
.site-menu a,.site-menu button{
  display:block;width:100%;padding:11px 14px;border:0;border-radius:9px;background:none;
  text-align:left;text-decoration:none;cursor:pointer;
  font:inherit;font-size:14px;color:var(--fg-2);transition:background .12s ease,color .12s ease;
}
.site-menu a:hover,.site-menu button:hover,
.site-menu a:focus-visible,.site-menu button:focus-visible{background:var(--bg-2);color:var(--fg);outline:none}

/* the sticky header is 60px: keep anchored sections clear of it */
main section[id]{scroll-margin-top:72px}

@media (max-width:540px){
  .site-menu{position:fixed;left:16px;right:16px;top:70px;min-width:0}
}

/* ---------- swapped corners ----------
   light/dark switch sits top-left in the header; the NO/EN switch is
   fixed in the bottom-left corner where the theme switch used to be. */
header .theme-btn{
  position:static;width:32px;height:32px;border:0;border-radius:8px;
  background:none;-webkit-backdrop-filter:none;backdrop-filter:none;
}
header .theme-btn svg{width:17px;height:17px}
.lang-fixed{
  position:fixed;left:max(18px,env(safe-area-inset-left));bottom:max(18px,env(safe-area-inset-bottom));z-index:40;
  min-width:44px;height:44px;
}

/* ---------- onboarding: access-code box ----------
   One large clickable box. It opens #code-dialog, which sends the code to
   /api/onboarding; the API answers with where to go next. */
.keybox{
  display:flex;align-items:center;gap:18px;width:100%;max-width:52ch;margin-top:0;
  padding:22px 24px;text-align:left;cursor:pointer;font:inherit;color:var(--fg);
  border:1px solid var(--line);border-radius:12px;background:var(--bg-2);
  transition:border-color .15s ease,background .15s ease,transform .15s ease;
}
.keybox:hover{border-color:var(--accent-line);background:var(--accent-bg)}
.keybox:active{transform:translateY(1px)}
.keybox-icon{
  flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:10px;border:1px solid var(--line-2);color:var(--accent);
}
.keybox-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.keybox-text{display:flex;flex-direction:column;gap:4px;flex:1 1 auto;min-width:0}
.keybox-title{font-size:16.5px;color:var(--fg)}
.keybox-sub{font-size:13.5px;color:var(--fg-3)}
.keybox-arrow{flex:0 0 auto;font-size:18px;color:var(--fg-3);transition:transform .15s ease,color .15s ease}
.keybox:hover .keybox-arrow{transform:translateX(3px);color:var(--fg)}
.keybox-note{margin-top:16px;font-size:13.5px;color:var(--fg-3)}
.keybox-note a{color:var(--fg-2)}
dialog#code-dialog{width:min(440px,calc(100vw - 32px))}
.code-input{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;font-size:17px}
@media (max-width:540px){
  .keybox{padding:18px;gap:14px}
}
