/* ==========================================================================
   Learn Locus — site stylesheet
   One file, no build step. Colours come from the logo; nothing else is added.
   ========================================================================== */

/* ---------- self-hosted type (no third-party requests) ---------- */
@font-face{font-family:"Instrument Serif";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/instrument-serif-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Instrument Serif";font-style:italic;font-weight:400;font-display:swap;src:url(fonts/instrument-serif-latin-400-italic.woff2) format("woff2")}
@font-face{font-family:"Instrument Sans";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/instrument-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Instrument Sans";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/instrument-sans-latin-600-normal.woff2) format("woff2")}

/* ---------- tokens ---------- */
:root{
  --navy:#0a163b;
  --copper:#c87532;        /* rules, the hero, large type — the logo colour */
  --copper-text:#a35a1f;   /* same hue, darkened for small text on ivory (4.7:1) */
  --ivory:#f7f4ee;
  --paper:#ffffff;
  --ink:#151c38;
  --ink-soft:#555c78;
  --rule:rgba(10,22,59,.16);
  --rule-inv:rgba(255,255,255,.14);
  --serif:"Instrument Serif",Georgia,"Times New Roman",serif;
  --sans:"Instrument Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --wrap:1180px;
}

/* ---------- base ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--ivory);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
img{max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--copper);outline-offset:4px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 32px}
::selection{background:var(--copper);color:#fff}

/* skip link: invisible until focused */
.skip{position:absolute;left:-9999px;top:16px;z-index:100;background:var(--navy);color:#fff;padding:10px 16px;font-size:14px;font-weight:600}
.skip:focus{left:16px}

/* ---------- type ---------- */
h1,h2,h3,h4{font-family:var(--serif);font-weight:400;letter-spacing:-.015em}
h1{font-size:clamp(46px,7.6vw,104px);line-height:.98;letter-spacing:-.02em}
h2{font-size:clamp(34px,4.2vw,54px);line-height:1.05;margin-bottom:34px}
h2 em,h1 em{font-style:italic}
.h-page{font-size:clamp(40px,6vw,76px);line-height:1;letter-spacing:-.02em;max-width:14ch}
.prose p{margin-bottom:20px;max-width:60ch}
.prose p:last-child{margin-bottom:0}
.prose a{border-bottom:1px solid var(--copper)}
.kicker{font-size:12px;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--ink-soft)}
.kicker b{color:var(--copper-text);font-weight:600}

/* ---------- nav ---------- */
.nav{display:flex;align-items:center;justify-content:space-between;padding:28px 0;position:relative;z-index:5}
.nav .brand img{height:38px;width:auto;display:block}
.nav ul{display:flex;gap:32px;list-style:none;font-size:14px;font-weight:600;letter-spacing:.02em}
.nav ul a{opacity:.8;border-bottom:1px solid transparent;padding-bottom:2px;transition:opacity .2s,border-color .2s}
.nav ul a:hover,.nav ul a[aria-current="page"]{opacity:1;border-color:var(--copper)}
.nav-toggle{display:none;background:none;border:0;color:inherit;font:inherit;font-size:13px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;cursor:pointer;padding:12px 0 12px 12px}

/* ---------- hero (home) ---------- */
.hero{background:var(--navy);color:#fff;min-height:92vh;display:flex;flex-direction:column;position:relative;overflow:hidden}
.hero .rosette{position:absolute;right:-28vh;top:50%;transform:translateY(-50%);width:118vh;height:118vh;opacity:.085;pointer-events:none}
.hero-body{flex:1;display:grid;grid-template-columns:1fr 1fr;align-items:end;padding:60px 0 72px;gap:48px;position:relative;z-index:1}
.hero h1{max-width:11ch}
.hero h1 em{color:var(--copper)}
.hero-aside{max-width:38ch;justify-self:end;padding-bottom:10px}
.hero-aside p{opacity:.78;font-size:16px;line-height:1.65;margin-bottom:26px}

/* ---------- page header (inner pages) ---------- */
.page-head{background:var(--navy);color:#fff;position:relative;overflow:hidden}
.page-head .rosette{position:absolute;right:-22vh;top:-30vh;width:90vh;height:90vh;opacity:.07;pointer-events:none}
.page-head .wrap{position:relative;z-index:1}
.page-title{padding:56px 0 84px}
.page-title .kicker{color:rgba(255,255,255,.6);margin-bottom:22px}
.page-title .kicker b{color:var(--copper)}
.page-title p{opacity:.78;max-width:52ch;margin-top:26px;font-size:17px}

/* ---------- buttons / links ---------- */
.btn{display:inline-flex;align-items:center;gap:12px;font-size:14px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:inherit}
.btn::after{content:"";width:34px;height:1px;background:var(--copper);transition:width .25s}
.btn:hover::after{width:52px}
.more{display:inline-block;margin-top:28px;font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--copper);padding-bottom:2px}
.more:hover{color:var(--copper-text)}

/* ---------- editorial grid ---------- */
section{padding:104px 0}
section + section{border-top:1px solid var(--rule)}
.row{display:grid;grid-template-columns:minmax(200px,3fr) 7fr;gap:64px;align-items:start}
.section-h{margin-bottom:56px}
.section-h h2{margin:0}
.label{position:sticky;top:40px;font-size:12px;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--ink-soft)}
.label b{display:block;color:var(--copper-text);font-weight:600;margin-bottom:6px}

.cards{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:8px}
.card h3{font-size:30px;line-height:1.1;margin:18px 0 12px}
.card p{color:var(--ink-soft);font-size:16px}
.card .n{font-size:12px;letter-spacing:.2em;color:var(--copper-text);font-weight:600}
.card .soon{display:inline-block;margin-top:18px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-weight:600}

/* ---------- Doug ---------- */
.doug{display:grid;grid-template-columns:5fr 7fr;gap:72px;align-items:start}
.figure{position:relative;margin:0}
.figure::after{content:"";position:absolute;inset:0;transform:translate(18px,18px);border:1px solid var(--copper);pointer-events:none}
.figure img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 20%;position:relative;z-index:1}
.figure figcaption{margin-top:34px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--ink-soft)}
.doug .label{position:static;margin-bottom:28px}

.team{margin-top:72px;padding-top:40px;border-top:1px solid var(--rule)}
.team-h{font-size:12px;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--ink-soft);margin-bottom:28px}
.team-h b{color:var(--copper-text);font-weight:600;margin-right:14px}
.team ul{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:36px 40px}
.team h3{font-size:26px;line-height:1.1;margin-bottom:4px}
.team .role{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--copper-text);font-weight:600;margin-bottom:10px}
.team p{font-size:15px;color:var(--ink-soft);line-height:1.55}
.team .also{margin-top:36px;padding-top:24px;border-top:1px solid var(--rule);font-size:15px;color:var(--ink-soft);max-width:60ch}

/* ---------- team page: tutor entries ---------- */
.tutor{display:grid;grid-template-columns:minmax(200px,3fr) 7fr;gap:64px;align-items:start;padding:64px 0;border-top:1px solid var(--rule)}
.tutor:first-of-type{border-top:0;padding-top:0}
.tutor .who h3{font-size:34px;line-height:1.05;margin-bottom:8px}
.tutor .who .role{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--copper-text);font-weight:600}
.tutor .who{position:sticky;top:40px}
.loves{margin-top:28px;padding-left:22px;border-left:1px solid var(--copper)}
.loves .q{font-family:var(--serif);font-size:23px;line-height:1.3;font-style:italic}
.loves .q-h{font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--ink-soft);margin-bottom:8px}

/* ---------- quotes ---------- */
.quote{background:var(--paper);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.quote .row{align-items:center}
.lead-quote{font-family:var(--serif);font-size:clamp(28px,3.6vw,46px);line-height:1.15;letter-spacing:-.01em;max-width:24ch;margin-bottom:56px}
.lead-quote em{font-style:italic;color:var(--copper)}
cite{display:block;margin-top:22px;font-style:normal;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-weight:600}
.quotes{display:grid;grid-template-columns:1fr 1fr;gap:40px 48px;padding-top:40px;border-top:1px solid var(--rule)}
.quotes blockquote{font-family:var(--serif);font-size:21px;line-height:1.35}
.quotes cite{margin-top:14px}

/* ---------- contact ---------- */
.contact{background:var(--navy);color:#fff;border:0}
.contact .label{color:rgba(255,255,255,.6)}
.contact .label b{color:var(--copper)}
.contact p{opacity:.78;max-width:48ch;margin-bottom:34px}
.lines{display:grid;gap:10px;font-family:var(--serif);font-size:30px;line-height:1.2}
.lines a{display:inline-block;border-bottom:1px solid var(--copper);padding-bottom:2px;width:max-content;max-width:100%;word-break:break-all}
.lines a:hover{color:var(--copper)}

/* ---------- footer ---------- */
.site-footer{background:var(--navy);color:#fff;border-top:1px solid var(--rule-inv)}
.site-footer .wrap{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;padding-top:28px;padding-bottom:28px;font-size:13px;letter-spacing:.04em}
.site-footer img{height:22px;width:auto}
.site-footer .legal{opacity:.6}
.site-footer .legal a{border-bottom:1px solid transparent}
.site-footer .legal a:hover{border-color:var(--copper);opacity:1}

/* ---------- 404 ---------- */
.lost{padding:120px 0 140px;text-align:left}
.lost .kicker{margin-bottom:22px}
.lost h1{font-size:clamp(40px,6vw,76px);line-height:1;max-width:14ch;margin-bottom:28px}
.lost p{max-width:48ch;color:var(--ink-soft);margin-bottom:32px}
.lost .links{display:flex;gap:32px;flex-wrap:wrap}

/* ---------- legal pages ---------- */
.legal-grid{display:grid;grid-template-columns:minmax(220px,3fr) 7fr;gap:64px;align-items:start}
.toc{position:sticky;top:40px}
.toc summary{list-style:none;cursor:default}
.toc summary::-webkit-details-marker{display:none}
.toc .kicker{margin-bottom:18px}
.toc ol{list-style:none;counter-reset:toc}
.toc li{counter-increment:toc;margin:0 0 4px}
.toc a{display:flex;gap:12px;font-size:14px;line-height:1.4;color:var(--ink-soft);padding:6px 0 6px 12px;border-left:1px solid transparent;margin-left:-13px;transition:color .2s,border-color .2s}
.toc a::before{content:counter(toc,decimal-leading-zero);font-size:11px;letter-spacing:.1em;color:var(--copper-text);font-weight:600;padding-top:3px}
.toc a:hover,.toc a.active{color:var(--ink);border-left-color:var(--copper)}
.legal-meta{font-size:13px;color:var(--ink-soft);margin-top:28px;padding-top:18px;border-top:1px solid var(--rule)}
.clause{padding:0 0 56px;margin-bottom:56px;border-bottom:1px solid var(--rule);scroll-margin-top:32px}
.clause:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.clause h2{font-size:clamp(28px,3vw,38px);margin-bottom:22px}
.clause h2 .num{display:block;font-family:var(--sans);font-size:12px;letter-spacing:.2em;color:var(--copper-text);font-weight:600;margin-bottom:12px}
.inshort{border-left:1px solid var(--copper);padding:2px 0 2px 22px;margin:0 0 28px;max-width:60ch}
.inshort .q-h{font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--copper-text);margin-bottom:6px}
.inshort p{font-family:var(--serif);font-size:22px;line-height:1.3}
.clause ul{margin:0 0 20px 20px;max-width:60ch}
.clause li{margin-bottom:8px}
.clause table{border-collapse:collapse;width:100%;max-width:64ch;margin:0 0 20px;font-size:15px}
.clause th,.clause td{text-align:left;vertical-align:top;padding:10px 14px 10px 0;border-bottom:1px solid var(--rule)}
.clause th{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-weight:600}

/* ---------- reveal on scroll ----------
   Only hidden when JS is running (html.js is set inline in <head>), so content
   is always visible if the script fails to load. */
.js .reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}

/* ---------- responsive ---------- */
@media (max-width:820px){
  .wrap{padding:0 22px}
  .nav ul{display:none;position:absolute;left:-22px;right:-22px;top:100%;flex-direction:column;gap:0;background:var(--navy);padding:8px 22px 20px;border-top:1px solid var(--rule-inv);box-shadow:0 16px 24px -12px rgba(0,0,0,.35)}
  .nav ul a{display:block;padding:14px 0;opacity:.9;border-bottom:1px solid var(--rule-inv)}
  .nav.open ul{display:flex}
  .nav-toggle{display:block}
  .hero{min-height:auto}
  .hero-body{grid-template-columns:1fr;padding:48px 0 64px;gap:36px}
  .hero-aside{justify-self:start}
  .hero .rosette{right:-45vw;top:auto;bottom:-30vw;transform:none;width:120vw;height:120vw}
  .page-title{padding:40px 0 60px}
  section{padding:72px 0}
  .row,.doug,.cards,.quotes,.team ul,.tutor,.legal-grid{grid-template-columns:1fr;gap:28px}
  .doug{gap:40px}
  .figure{max-width:460px}
  .label,.tutor .who,.toc{position:static;margin-bottom:8px}
  .toc{padding-bottom:28px;border-bottom:1px solid var(--rule);margin-bottom:40px}
  .toc summary{cursor:pointer}
  .toc summary .kicker::after{content:" +";color:var(--copper-text)}
  .toc details[open] summary .kicker::after{content:" –"}
  .lines{font-size:24px}
}
