/* =============================================================================
   premium.css — the shared language of the G set (the F2 direction, locked)
   Gold on near-black · Instrument Serif for the voice · IBM Plex Mono for the
   instruments · Inter for reading · glass sitting in the core's light.
   Each variation adds ONLY its own architecture on top of this.
   ============================================================================= */
:root{
  --bg:#060607; --fg:#efece4; --dim:#8e897d; --faint:#57534b;
  --gold:#e8b45c; --gold-hi:#f6d79c;
  --line:rgba(239,236,228,.10); --line-2:rgba(239,236,228,.18);
  --glass:rgba(255,255,255,.035);
  --ease:cubic-bezier(.2,0,0,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--fg);font:15.5px/1.65 Inter,-apple-system,sans-serif;
     -webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img{max-width:100%}

/* ---- skip to content ----
   First focusable element on the page. Invisible until it takes focus, then it
   parks itself over the header so a keyboard user can jump the whole nav. */
.skip{position:fixed;top:-100px;left:12px;z-index:200;padding:12px 18px;border-radius:11px;
      background:var(--gold);color:#241703;font:600 13px/1 Inter;transition:top .18s var(--ease)}
.skip:focus{top:12px;outline:2px solid #fff;outline-offset:2px}
[dir="rtl"] .skip{left:auto;right:12px}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.wrap{max-width:1240px;margin:0 auto;padding:0 28px}
.lab{font:500 10px/1 'IBM Plex Mono',monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--gold)}
.dimlab{font:400 10px/1 'IBM Plex Mono',monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--faint)}
.serif{font-family:'Instrument Serif',serif;font-weight:400;letter-spacing:-.022em}

/* ---- header ---- */
header{position:sticky;top:0;z-index:60;background:rgba(6,6,7,.72);backdrop-filter:blur(18px) saturate(140%);
       border-bottom:1px solid var(--line)}
.hin{max-width:1240px;margin:0 auto;padding:0 28px;height:66px;display:flex;align-items:center;gap:20px}
.brand{display:flex;align-items:center;gap:11px;font:600 15.5px/1 Inter;letter-spacing:-.02em}
/* the header mark, kept in step with favicon.svg — a ring around a real dark
   pupil, not a glowing dot. That pupil is what makes "The Core" the mark. */
.bdot{width:22px;height:22px;border-radius:50%;position:relative;flex:none;
      background:radial-gradient(circle at 50% 50%,rgba(255,246,228,.95) 0%,var(--gold) 44%,rgba(138,95,28,.35) 68%,transparent 78%);
      box-shadow:0 0 14px 2px rgba(232,180,92,.4)}
.bdot:after{content:"";position:absolute;inset:34%;border-radius:50%;background:var(--bg)}
nav{display:flex;gap:26px;margin-left:auto}
nav a{font-size:13.5px;color:var(--dim);transition:color .18s}
nav a:hover{color:var(--fg)}

/* ---- the mobile menu ----
   Below 1040px the desktop nav has no room, so it moves into a panel opened by
   the burger. The panel also carries the language switcher, which used to be
   unreachable on a phone — on a site that ships in twelve languages that was
   the more serious of the two losses. */
.menubtn{display:none;margin-left:auto;width:40px;height:40px;flex:none;border:1px solid var(--line);
         border-radius:12px;background:var(--glass);color:var(--fg);cursor:pointer;
         align-items:center;justify-content:center;transition:border-color .2s}
.menubtn:hover{border-color:var(--line-2)}
.menubtn span{position:relative;display:block;width:16px;height:1.5px;background:currentColor;border-radius:2px;
              transition:transform .22s var(--ease),opacity .18s}
.menubtn span:before,.menubtn span:after{content:"";position:absolute;left:0;width:16px;height:1.5px;
              background:currentColor;border-radius:2px;transition:transform .22s var(--ease)}
.menubtn span:before{top:-5px}
.menubtn span:after{top:5px}
.menubtn[aria-expanded="true"] span{background:transparent}
.menubtn[aria-expanded="true"] span:before{transform:translateY(5px) rotate(45deg)}
.menubtn[aria-expanded="true"] span:after{transform:translateY(-5px) rotate(-45deg)}
.mobnav{display:none;border-top:1px solid var(--line);background:rgba(6,6,7,.96);
        backdrop-filter:blur(18px) saturate(140%)}
.mobnav.on{display:block}
.mobnav .mn{max-width:1240px;margin:0 auto;padding:14px 28px 20px;display:flex;flex-direction:column;gap:2px}
.mobnav a{padding:13px 0;font-size:16px;color:var(--fg);border-bottom:1px solid var(--line)}
.mobnav a:last-of-type{border-bottom:0}
.mobnav .langsel{margin-top:14px;width:100%}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;gap:9px;border-radius:999px;font:600 13px/1 Inter;padding:14px 24px;
     transition:transform .18s var(--ease),box-shadow .25s,background .2s,border-color .2s}
.btn-p{background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:#241703;
       box-shadow:0 6px 26px -6px rgba(232,180,92,.55)}
.btn-p:hover{transform:translateY(-2px);box-shadow:0 12px 34px -8px rgba(232,180,92,.7)}
.btn-g{border:1px solid var(--line);background:var(--glass);color:var(--fg);backdrop-filter:blur(8px)}
.btn-g:hover{border-color:rgba(232,180,92,.4);transform:translateY(-2px)}
.navbtn{padding:11px 20px;font-size:12.5px;white-space:nowrap}
.cta{display:flex;gap:11px;flex-wrap:wrap}

/* ---- section rhythm ---- */
section{padding:92px 0;border-top:1px solid var(--line)}
.sh{max-width:56ch}
.sh h2{margin-top:14px;font-family:'Instrument Serif',serif;font-weight:400;font-size:clamp(30px,4.4vw,54px);
       line-height:1.02;letter-spacing:-.022em}
.sh h2 em{font-style:italic;color:var(--gold)}
.sh p{margin-top:16px;color:var(--dim)}

/* ---- product tiles ---- */
.grid{margin-top:44px;display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.tile{position:relative;padding:24px;border:1px solid var(--line);border-radius:18px;background:var(--glass);
      backdrop-filter:blur(10px);display:flex;flex-direction:column;overflow:hidden;
      transition:transform .22s var(--ease),border-color .22s,background .22s}
.tile:before{content:"";position:absolute;inset:-60% 40% 60% -60%;
             background:radial-gradient(circle,var(--pc),transparent 62%);opacity:0;transition:opacity .3s}
.tile:hover{transform:translateY(-4px);border-color:var(--line-2);background:rgba(255,255,255,.055)}
.tile:hover:before{opacity:.20}
.tile .well{position:relative;width:52px;height:52px;border-radius:14px;border:1px solid var(--line);
            background:rgba(255,255,255,.05);display:grid;place-items:center}
.tile .well img{width:30px;height:30px;object-fit:contain}
.tile h3{position:relative;margin-top:20px;font:600 16px/1.25 Inter;letter-spacing:-.015em}
.tile .cat{position:relative;margin-top:7px;font:400 10px/1.4 'IBM Plex Mono',monospace;letter-spacing:.12em;
           text-transform:uppercase;color:var(--faint)}
.tile .s{position:relative;margin-top:14px;font-size:13.5px;color:var(--dim);flex:1}
.tile .go{position:relative;margin-top:20px;display:flex;align-items:center;justify-content:space-between;
          font:500 9.5px/1 'IBM Plex Mono',monospace;letter-spacing:.14em;text-transform:uppercase;color:#5fd39b}
.tile .go i{font-style:normal;color:var(--faint);font-size:15px;transition:transform .2s,color .2s}
.tile:hover .go i{transform:translateX(4px);color:var(--gold)}

/* ---- service / course cards ---- */
.cards{margin-top:40px;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.card{padding:30px;border:1px solid var(--line);border-radius:18px;background:var(--glass);backdrop-filter:blur(10px);
      transition:border-color .22s,transform .22s var(--ease)}
.card:hover{border-color:rgba(232,180,92,.32);transform:translateY(-3px)}
.card .k{font:500 10px/1 'IBM Plex Mono',monospace;letter-spacing:.2em;color:var(--gold)}
.card h3{margin-top:16px;font:600 17px/1.28 Inter;letter-spacing:-.015em}
.card p{margin-top:11px;color:var(--dim);font-size:14px}

/* ---- book ---- */
.book{text-align:center;position:relative;overflow:hidden}
.book:before{content:"";position:absolute;left:50%;top:-40%;width:820px;height:820px;transform:translateX(-50%);
             background:radial-gradient(circle,rgba(232,180,92,.13),transparent 62%);pointer-events:none}
.book h2{max-width:19ch;margin:14px auto 0;font-family:'Instrument Serif',serif;font-weight:400;
         font-size:clamp(30px,4.4vw,54px);line-height:1.02;letter-spacing:-.022em}
.book h2 em{font-style:italic;color:var(--gold)}
.book p{margin:18px auto 0;max-width:48ch;color:var(--dim)}
.book .cta{justify-content:center;margin-top:28px}
.sig{margin-top:34px;font:500 10.5px/1 'IBM Plex Mono',monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}

footer{border-top:1px solid var(--line);padding:26px 0;font:400 12px/1.7 Inter;color:var(--faint)}
footer .in{max-width:1240px;margin:0 auto;padding:0 28px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
footer a:hover{color:var(--dim)}
/* secondary navigation — matters more than usual here, because the header nav
   collapses into the burger below 1040px */
footer .fnav{display:flex;gap:14px;flex-wrap:wrap}

/* ---- back to top ----
   The sticky header's brand mark is the only route home on a phone, and it is
   not signposted as one. This appears after ~1.5 viewports. */
.totop{position:fixed;right:18px;bottom:18px;z-index:70;width:42px;height:42px;border-radius:50%;
       border:1px solid rgba(232,180,92,.34);background:rgba(6,6,7,.82);backdrop-filter:blur(10px);
       color:var(--gold);display:flex;align-items:center;justify-content:center;cursor:pointer;
       opacity:0;visibility:hidden;transform:translateY(8px);
       transition:opacity .22s,transform .22s var(--ease),visibility .22s,border-color .2s}
.totop.on{opacity:1;visibility:visible;transform:none}
.totop:hover{border-color:var(--gold)}
[dir="rtl"] .totop{right:auto;left:18px}

/* ---- FAQ ---- */
.faq{margin-top:40px;max-width:78ch;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:20px 34px 20px 0;position:relative;
             font:600 16px/1.4 Inter;letter-spacing:-.012em;transition:color .18s}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--gold)}
.faq summary:after{content:"";position:absolute;right:6px;top:50%;width:9px;height:9px;
                   border-right:1.6px solid var(--gold);border-bottom:1.6px solid var(--gold);
                   transform:translateY(-70%) rotate(45deg);transition:transform .22s var(--ease)}
.faq details[open] summary:after{transform:translateY(-25%) rotate(-135deg)}
.faq p{padding:0 34px 22px 0;color:var(--dim);font-size:15px;max-width:68ch}
[dir="rtl"] .faq summary{padding:20px 0 20px 34px}
[dir="rtl"] .faq summary:after{right:auto;left:6px}
[dir="rtl"] .faq p{padding:0 0 22px 34px}

@media (max-width:1040px){
  .grid{grid-template-columns:repeat(2,1fr)} .cards{grid-template-columns:1fr}
  nav{display:none} .menubtn{display:flex}
}
@media (max-width:680px){ .grid{grid-template-columns:1fr} }

/* ---- print ----
   Near-white text on a near-black background prints as a blank page, because
   browsers drop background colours by default. Anything a visitor is likely to
   print (the privacy notice above all) has to invert. */
@media print{
  :root{--bg:#fff;--fg:#000;--dim:#333;--faint:#555;--gold:#7a5713;--line:#ccc;--line-2:#999;--glass:transparent}
  html{scroll-behavior:auto}
  body{background:#fff;color:#000;font-size:11pt}
  header,.mobnav,.menubtn,.totop,.skip,.mach,.machmob,.cta,.navbtn,form,.wl,#langSel,.langsel{display:none !important}
  section{border-top:1px solid #ccc;padding:18pt 0;break-inside:avoid}
  .tile,.card{border:1px solid #ccc;background:transparent;backdrop-filter:none;break-inside:avoid}
  .tile:before,.book:before{display:none}
  a{color:#000;text-decoration:underline}
  .faq details{border-bottom:1px solid #ccc}
  a[href^="http"]:after{content:" (" attr(href) ")";font-size:9pt;color:#555}
}
