/* ============================================================================
   Shared site chrome — header, footer, buttons and document prose.

   Used by landing.html, privacy.html and terms.html so the public pages cannot
   drift apart. Page-specific layout (the landing hero, for instance) stays in
   the page that owns it. Depends on tokens.css; load that first.
   ========================================================================== */

body{font-weight:var(--w-light);display:flex;flex-direction:column;min-height:100vh}
a{color:inherit}
.wrap{width:100%;max-width:var(--container);margin:0 auto;padding:0 var(--s6)}
main{flex:1;display:flex;flex-direction:column}

/* -- header -------------------------------------------------------------- */
.site-header{
  border-bottom:1px solid var(--line);
  background:rgba(255,255,255,.72);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  position:sticky; top:0; z-index:50;
}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;height:62px}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none}
.brand img{width:24px;height:24px;display:block;flex:none}
.brand span{font-size:13.5px;font-weight:var(--w-normal);letter-spacing:.13em;color:var(--ink-2)}
.site-nav{display:flex;align-items:center;gap:24px}
.site-nav a{font-size:var(--t-body);min-height:var(--target);display:inline-flex;align-items:center;color:var(--ink-2);text-decoration:none;transition:color var(--dur) var(--ease)}
.site-nav a:hover{color:var(--ink)}
@media(max-width:640px){ .site-nav a.opt{display:none} }

/* -- buttons --------------------------------------------------------------
   Pills. The primary carries the brand colour rather than being black: on a
   page whose only other colour is the mark, a black slab is the heaviest thing
   on screen and reads as a form submit, not as the thing you came for. */
.btn{display:inline-flex;align-items:center;gap:9px;font-family:inherit;font-size:var(--t-base);
     font-weight:var(--w-normal);text-decoration:none;padding:13px 26px;border-radius:var(--radius-pill);
     border:1px solid var(--line-2);background:var(--card);color:var(--ink);white-space:nowrap;
     box-shadow:var(--shadow-sm);
     transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),
                box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
.btn:active{transform:scale(.985)}
.btn svg{width:15px;height:15px;flex:none;opacity:.8}
/* The platform glyph follows data-os, the same attribute that sets the label,
   so a button can never show one platform's logo above another's name. */
.btn[data-os="win"] .g-mac,
.btn[data-os="mac"] .g-win{display:none}
.btn:hover{border-color:var(--line-2);box-shadow:var(--shadow)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;
             box-shadow:0 1px 2px rgba(109,40,217,.20),0 6px 18px rgba(109,40,217,.22)}
.btn.primary svg{opacity:.95}
.btn.primary:hover{background:var(--accent-2);border-color:var(--accent-2);
                   box-shadow:0 2px 4px rgba(109,40,217,.24),0 10px 26px rgba(109,40,217,.26)}
.btn.off{opacity:.4;cursor:not-allowed}
.btn.off:hover{border-color:var(--line-2)}
.btn.primary.off:hover{background:var(--ink);border-color:var(--ink)}

/* -- footer -------------------------------------------------------------- */
.site-footer{border-top:1px solid var(--line);background:var(--card)}
.fgrid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:36px;padding:52px 0 40px}
@media(max-width:760px){.fgrid{grid-template-columns:1fr 1fr;gap:32px 24px;padding-top:42px}}
@media(max-width:420px){.fgrid{grid-template-columns:1fr}}
.fbrand p{margin:12px 0 0;font-size:13px;color:var(--ink-3);line-height:1.65;max-width:34ch}
.fcol h3{margin:0 0 12px;font-size:12px;font-weight:var(--w-med);letter-spacing:.07em;color:var(--ink)}
.fcol ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:9px}
.fcol a{font-size:13.5px;color:var(--ink-2);text-decoration:none;transition:color var(--dur) var(--ease)}
.fcol a:hover{color:var(--ink)}
/* A download link stays dimmed until the server confirms the file exists. */
.fcol a.off{opacity:.4;cursor:not-allowed}
.fcol a.off:hover{color:var(--ink-2)}
.fbot{border-top:1px solid var(--line);padding:20px 0 30px;display:flex;flex-wrap:wrap;
      justify-content:space-between;gap:10px 24px;font-size:12.5px;color:var(--ink-3)}

/* -- document prose (privacy, terms) --------------------------------------
   Centred on the canvas and set on a white panel. Capping the measure is right,
   but capping it and then leaving it pinned to the left of a 1120px container
   left 450px of empty canvas beside every paragraph - the measure rule and the
   centring rule have to be applied together or the page looks abandoned. */
.doc{
  max-width:calc(var(--measure) + var(--s16));
  margin:var(--s12) auto;
  padding:var(--s12) var(--s10) var(--s16);
  background:var(--card); border-radius:var(--radius-lg);
  box-shadow:var(--shadow);
}
@media(max-width:720px){
  .doc{margin:var(--s6) auto;padding:var(--s8) var(--s5) var(--s10);border-radius:var(--radius)}
}
.doc .eyebrow{font-size:var(--t-small);color:var(--ink-3);margin:0 0 var(--s2);letter-spacing:.04em}
.doc h1{margin:0 0 var(--s2);font-size:clamp(26px,4vw,34px);font-weight:var(--w-med);
        letter-spacing:-.02em;line-height:var(--lh-tight)}
.doc .updated{margin:0 0 var(--s10);font-size:var(--t-body);color:var(--ink-3)}
.doc h2{margin:var(--s10) 0 var(--s3);font-size:var(--t-lead);font-weight:var(--w-med);
        letter-spacing:-.01em;padding-top:var(--s6);border-top:1px solid var(--line)}
.doc h2:first-of-type{border-top:0;padding-top:0;margin-top:var(--s8)}
.doc h3{margin:var(--s6) 0 var(--s2);font-size:var(--t-base);font-weight:var(--w-med)}
.doc p{margin:0 0 var(--s4);font-size:var(--t-base);line-height:var(--lh-body);color:var(--ink-2);max-width:var(--measure)}
.doc li{font-size:var(--t-base);line-height:var(--lh-body);color:var(--ink-2)}
.doc strong{font-weight:var(--w-med);color:var(--ink)}
.doc a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-2)}
.doc a:hover{border-bottom-color:var(--ink)}
.doc .callout{border:0;border-left:3px solid var(--accent);
              border-radius:var(--radius-sm);padding:var(--s4) var(--s5);
              margin:0 0 var(--s6);background:var(--surface)}
.doc .callout p{margin:0;font-size:var(--t-base);color:var(--ink-2)}
.doc .callout p + p{margin-top:var(--s3)}
.doc ul{margin:0 0 var(--s4);padding-left:var(--s5);display:flex;flex-direction:column;gap:var(--s2)}
.doc dl{margin:0 0 var(--s4)}
.doc dt{font-size:var(--t-base);font-weight:var(--w-med);color:var(--ink);margin-top:var(--s4)}
.doc dd{margin:var(--s1) 0 0;font-size:var(--t-base);line-height:var(--lh-body);color:var(--ink-2)}
