
:root{
  --obsidian:#14100C; --surface:#1B1610; --raised:#241E16;
  --marble:#F3EDE1; --stone:#A29C88; --bronze:#A87B3C; --gilt:#D6B15F;
  --bronze-deep:#6E5124; --hair:rgba(243,237,225,.11); --hair-2:rgba(243,237,225,.06);
  --display:'Cinzel',"Optima",'Palatino Linotype',Palatino,Georgia,serif;
  --body:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  --z-nav:50; --z-toast:60;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--obsidian);color:var(--marble);font-family:var(--body);
  font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg{display:block;max-width:100%}
h1,h2,h3,.disp{font-family:var(--display);font-weight:700;line-height:1.08;margin:0;text-wrap:balance}
p{margin:0}
a{color:inherit;text-decoration:none}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.eyebrow{font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--bronze);font-weight:600}
.muted{color:var(--stone)}
.sec{padding:104px 0;position:relative}
.sec-head{max-width:min(62ch,100%);margin-bottom:44px}
.sec-head h2{font-size:clamp(30px,4.4vw,48px);letter-spacing:.02em;margin:12px 0 14px}
.sec-head p{color:var(--stone);font-size:17px}
.rule{height:1px;background:var(--hair);border:0;margin:0}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;
  padding:0 26px;border-radius:2px;font-weight:600;font-size:14px;letter-spacing:.09em;
  text-transform:uppercase;cursor:pointer;border:1px solid transparent;
  transition:background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease}
.btn-primary{background:var(--bronze);color:#120E08;border-color:var(--bronze)}
@media(hover:hover){.btn-primary:hover{background:var(--gilt);border-color:var(--gilt)}}
.btn-ghost{background:transparent;color:var(--marble);border-color:var(--hair)}
@media(hover:hover){.btn-ghost:hover{border-color:var(--bronze);color:var(--gilt)}}
.btn:focus-visible,a:focus-visible,button:focus-visible,summary:focus-visible{
  outline:2px solid var(--gilt);outline-offset:3px}

/* nav */
.nav{position:fixed;top:14px;left:14px;right:14px;height:60px;z-index:var(--z-nav);
  display:flex;align-items:center;justify-content:space-between;padding:0 14px 0 18px;
  border:1px solid transparent;border-radius:3px;transition:background-color .3s,border-color .3s,backdrop-filter .3s}
.nav.solid{background:rgba(20,16,12,.82);border-color:var(--hair);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.nav-brand{display:flex;align-items:center;gap:11px;cursor:pointer}
.nav-brand svg{width:30px;height:30px;color:var(--bronze)}
.nav-brand b{font-family:var(--display);letter-spacing:.15em;font-size:15px}
.nav-links{display:flex;align-items:center;gap:30px}
.nav-links a:not(.btn){font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);
  transition:color .2s;cursor:pointer}
@media(hover:hover){.nav-links a:not(.btn):hover{color:var(--gilt)}}
@media(max-width:880px){.nav-links a:not(.btn){display:none}}
.l-short{display:none}
@media(max-width:640px){
  .brk{display:none}
  .l-full{display:none}
  .l-short{display:inline}
  .sec{padding:76px 0}
  .nav{top:10px;left:10px;right:10px;padding:0 10px 0 12px}
  .hero{padding:110px 20px 70px}
}

/* hero */
.hero{min-height:100svh;display:flex;align-items:center;justify-content:center;text-align:center;
  padding:130px 24px 80px;position:relative;overflow:hidden}
.hero-glow{position:absolute;top:6%;left:50%;transform:translateX(-50%);width:min(900px,120vw);
  aspect-ratio:1;background:radial-gradient(circle,rgba(168,123,60,.20) 0%,rgba(168,123,60,.06) 38%,transparent 66%);
  pointer-events:none}
.hero-inner{position:relative;max-width:min(940px,100%);min-width:0;width:100%}
.hero-coin{width:min(30vw,170px);margin:0 auto 34px;color:var(--bronze)}
.hero h1{font-size:clamp(29px,6.6vw,80px);letter-spacing:.015em;margin:16px 0 20px;overflow-wrap:break-word}
.hero h1 .gild{color:var(--gilt)}
.hero-sub{font-size:clamp(15px,1.9vw,20px);color:var(--stone);max-width:min(60ch,100%);margin:0 auto 34px;line-height:1.6}
.hero-cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-bottom:26px}
.hero-meta{font-size:12.5px;color:var(--stone);letter-spacing:.05em}
.hero-meta b{color:var(--marble);font-weight:600}
.scroll-cue{margin-top:52px;font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--stone);opacity:.75}

/* chapters / odyssey */
.chapters{display:grid;gap:1px;background:var(--hair-2);border:1px solid var(--hair);border-radius:3px;overflow:hidden}
.chapter{background:var(--obsidian);padding:38px 32px;display:grid;grid-template-columns:78px 1fr;gap:26px;align-items:start;
  transition:background-color .3s}
@media(hover:hover){.chapter:hover{background:var(--surface)}}
.chapter .num{font-family:var(--display);font-size:34px;color:var(--bronze-deep);line-height:1}
.chapter h3{font-size:26px;letter-spacing:.06em;color:var(--gilt);margin-bottom:6px}
.chapter .t{font-family:var(--display);font-size:19px;margin-bottom:10px}
.chapter p{color:var(--stone);font-size:15px;max-width:min(66ch,100%)}
@media(max-width:640px){.chapter{grid-template-columns:1fr;gap:10px;padding:30px 22px}}

/* steps */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
@media(max-width:900px){.steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.steps{grid-template-columns:1fr}}
.step{border:1px solid var(--hair);border-radius:3px;padding:26px 22px;background:var(--surface)}
.step .n{font-family:var(--display);color:var(--bronze);font-size:13px;letter-spacing:.2em;margin-bottom:14px}
.step h4{font-family:var(--display);font-size:19px;margin-bottom:8px;letter-spacing:.02em}
.step p{color:var(--stone);font-size:14px;line-height:1.6}

/* map */
.map{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:900px){.map{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.map{grid-template-columns:1fr}}
.region{position:relative;border:1px solid var(--hair);border-radius:3px;background:var(--surface);
  padding:28px 24px;min-height:212px;display:flex;flex-direction:column;gap:12px;cursor:pointer;
  transition:border-color .25s,background-color .25s,transform .25s;text-align:left;width:100%;font:inherit;color:inherit}
.region:focus-visible{border-color:var(--bronze);background:var(--raised)}@media(hover:hover){.region:hover{border-color:var(--bronze);background:var(--raised)}}
.region .ico{color:var(--bronze);line-height:0}
.region .ico svg{width:38px;height:38px}
.region h4{font-family:var(--display);font-size:20px;letter-spacing:.02em}
.region p{font-size:13.5px;color:var(--stone);line-height:1.55;flex:1}
.region .foot{display:flex;justify-content:space-between;align-items:center;font-size:10.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--stone);border-top:1px solid var(--hair-2);padding-top:12px}
.region.locked .ico,.region.locked h4,.region.locked p{filter:blur(2.5px);opacity:.5;user-select:none}
.region .lockbadge{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:9px;color:var(--gilt);pointer-events:none}
.region .lockbadge span{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase}
.region .rank-pill{color:var(--bronze)}

/* dashboard preview */
.dash{display:grid;grid-template-columns:1fr 1.15fr;gap:18px;align-items:start}
@media(max-width:900px){.dash{grid-template-columns:1fr}}
.panel{border:1px solid var(--hair);border-radius:3px;background:var(--surface);padding:26px}
.panel-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.panel-h .lbl{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--stone)}
.char{display:flex;align-items:center;gap:16px;margin-bottom:22px}
.char .av{width:60px;height:60px;border-radius:50%;background:var(--obsidian);border:1px solid var(--bronze);
  display:flex;align-items:center;justify-content:center;color:var(--bronze);flex:none}
.char .av svg{width:34px;height:34px}
.char .nm{font-family:var(--display);font-size:21px;letter-spacing:.03em}
.char .rk{font-size:12px;color:var(--gilt);letter-spacing:.1em;text-transform:uppercase}
.bar{margin-bottom:14px}
.bar .bl{display:flex;justify-content:space-between;font-size:11.5px;color:var(--stone);margin-bottom:6px;
  letter-spacing:.08em;text-transform:uppercase}
.bar .bt{height:6px;background:var(--raised);border-radius:99px;overflow:hidden}
.bar .bf{height:100%;background:linear-gradient(90deg,var(--bronze-deep),var(--gilt));border-radius:99px;
  transition:width 1.1s cubic-bezier(.22,1,.36,1)}
.vault{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--hair-2);
  margin-top:18px;padding-top:16px}
.vault .v{display:flex;align-items:center;gap:9px;color:var(--gilt);font-weight:600;
  font-variant-numeric:tabular-nums;font-size:19px}
.vault .v svg{width:20px;height:20px}
.vault .lbl{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}
.quest{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--hair-2)}
.quest:last-of-type{border-bottom:0}
.qbox{width:22px;height:22px;flex:none;border:1px solid var(--stone);border-radius:2px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;background:transparent;transition:all .2s;padding:0}
.qbox svg{width:13px;height:13px;color:var(--obsidian);opacity:0;transition:opacity .18s}
.qbox[aria-checked="true"]{background:var(--gilt);border-color:var(--gilt)}
.qbox[aria-checked="true"] svg{opacity:1}
.quest .qn{font-size:14.5px;flex:1}
.quest[data-done="true"] .qn{color:var(--stone);text-decoration:line-through}
.quest .qm{font-size:12px;color:var(--stone);font-variant-numeric:tabular-nums}
.qhint{margin-top:16px;font-size:12px;color:var(--stone);font-style:italic}
.toast{position:fixed;left:50%;bottom:34px;transform:translate(-50%,140%);z-index:var(--z-toast);
  opacity:0;visibility:hidden;
  background:var(--gilt);color:#120E08;padding:13px 24px;border-radius:2px;font-weight:700;
  font-size:13.5px;letter-spacing:.06em;box-shadow:0 14px 40px rgba(0,0,0,.5);
  transition:transform .45s cubic-bezier(.34,1.3,.64,1),opacity .3s ease,visibility .3s;
  pointer-events:none;white-space:nowrap;max-width:calc(100vw - 32px)}
.toast.show{transform:translate(-50%,0);opacity:1;visibility:visible}

/* pricing */
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:start}
@media(max-width:940px){.tiers{grid-template-columns:1fr;max-width:520px;margin:0 auto}}
.tier{position:relative;border:1px solid var(--hair);border-radius:3px;background:var(--surface);
  padding:32px 28px;display:flex;flex-direction:column;gap:16px}
.tier.featured{border-color:var(--bronze);background:var(--raised);box-shadow:0 0 0 1px var(--bronze-deep),0 22px 60px rgba(0,0,0,.45)}
.ribbon{position:absolute;top:-1px;right:-1px;background:var(--bronze);color:#120E08;font-size:10px;
  font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding:6px 13px;border-radius:0 3px 0 3px}
.tier .tn{font-family:var(--display);font-size:23px;letter-spacing:.03em}
.tier .tb{font-size:13.5px;color:var(--stone);min-height:40px;line-height:1.5;min-width:0}
.tier .pr{display:flex;align-items:baseline;gap:6px}
.tier .pr .amt{font-family:var(--display);font-size:44px;color:var(--marble);line-height:1}
.tier.featured .pr .amt{color:var(--gilt)}
.tier .pr .per{font-size:13px;color:var(--stone)}
.tier .note{font-size:11.5px;color:var(--stone);letter-spacing:.03em}
.tier ul{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:11px;flex:1}
.tier li{position:relative;padding-left:26px;font-size:13.5px;line-height:1.55;color:#DCD5C4}
.tier li svg{position:absolute;left:0;top:3px;width:15px;height:15px;color:var(--bronze)}
.tier.featured li svg{color:var(--gilt)}
.tier li b{color:var(--marble);font-weight:600}

/* packs */
.packs{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:800px){.packs{grid-template-columns:1fr}}
.pack{border:1px dashed var(--hair);border-radius:3px;padding:22px;display:flex;
  justify-content:space-between;align-items:center;gap:16px;transition:border-color .25s}
@media(hover:hover){.pack:hover{border-color:var(--bronze)}}
.pack h4{font-family:var(--display);font-size:17px;margin-bottom:3px}
.pack p{font-size:12.5px;color:var(--stone)}
.pack .p{font-family:var(--display);color:var(--gilt);font-size:17px;white-space:nowrap}

/* faq */
.faq{border-top:1px solid var(--hair)}
.faq details{border-bottom:1px solid var(--hair)}
.faq summary{cursor:pointer;padding:22px 0;font-family:var(--display);font-size:19px;
  display:flex;justify-content:space-between;align-items:center;gap:20px;list-style:none;
  transition:color .2s}
.faq summary::-webkit-details-marker{display:none}
@media(hover:hover){.faq summary:hover{color:var(--gilt)}}
.faq summary .pm{color:var(--bronze);font-size:22px;flex:none;transition:transform .25s;line-height:1}
.faq details[open] summary .pm{transform:rotate(45deg)}
.faq .ans{padding:0 0 24px;color:var(--stone);font-size:15px;max-width:min(78ch,100%);line-height:1.7}

/* final cta */
.final{text-align:center;padding:118px 24px;position:relative;overflow:hidden;border-top:1px solid var(--hair)}
.final .hero-glow{top:-30%}
.final h2{font-size:clamp(26px,5vw,58px);margin-bottom:18px;position:relative;overflow-wrap:break-word}
.final p{color:var(--stone);max-width:min(52ch,100%);margin:0 auto 32px;position:relative}
.final .btn{position:relative}

/* footer */
footer{border-top:1px solid var(--hair);padding:52px 24px;text-align:center}
footer .fseal{width:52px;margin:0 auto 16px;color:var(--bronze-deep)}
footer .fw{font-family:var(--display);letter-spacing:.16em;font-size:15px;margin-bottom:8px}
footer .fl{font-size:11.5px;color:var(--stone);letter-spacing:.14em;text-transform:uppercase;margin-bottom:22px}
footer .fmeta{font-size:11.5px;color:var(--bronze-deep)}

/* ── The Character Forge (creation quiz) ── */
.forge{position:fixed;inset:0;z-index:100;background:var(--obsidian);overflow-y:auto;
  opacity:0;visibility:hidden;transition:opacity .32s ease,visibility .32s}
.forge.open{opacity:1;visibility:visible}
.forge-glow{position:absolute;top:-10%;left:50%;transform:translateX(-50%);width:min(820px,120vw);
  aspect-ratio:1;background:radial-gradient(circle,rgba(168,123,60,.16) 0%,transparent 62%);pointer-events:none}
.forge-top{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:18px;
  padding:16px 20px;background:linear-gradient(var(--obsidian) 60%,transparent)}
.forge-bar{flex:1;height:2px;background:var(--raised);border-radius:99px;overflow:hidden;min-width:0}
.forge-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--bronze-deep),var(--gilt));
  transition:width .4s cubic-bezier(.22,1,.36,1)}
.forge-step-n{font-family:var(--display);font-size:11px;letter-spacing:.2em;color:var(--stone);white-space:nowrap}
.forge-x{background:none;border:1px solid var(--hair);color:var(--stone);width:38px;height:38px;
  border-radius:2px;cursor:pointer;font-size:18px;line-height:1;flex:none;transition:all .2s}
@media(hover:hover){.forge-x:hover{border-color:var(--bronze);color:var(--gilt)}}
.forge-in{position:relative;max-width:820px;margin:0 auto;padding:26px 20px 70px;text-align:center;min-width:0}
.f-step{display:none}
.f-step.on{display:block}
.js .f-step.on{animation:fstep .45s cubic-bezier(.22,1,.36,1) both}
@keyframes fstep{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.f-q:focus{outline:none}
.f-q{font-family:var(--display);font-size:clamp(24px,3.6vw,38px);margin:18px 0 8px;letter-spacing:.01em}
.f-hint{color:var(--stone);font-size:14px;margin-bottom:32px}
.opts{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:680px){.opts{grid-template-columns:1fr}}
.opt{background:var(--surface);border:1px solid var(--hair);border-radius:3px;padding:26px 18px;
  cursor:pointer;color:var(--marble);font:inherit;text-align:center;display:flex;flex-direction:column;
  align-items:center;gap:12px;min-height:150px;justify-content:center;
  transition:border-color .2s,background-color .2s,color .2s}
@media(hover:hover){.opt:hover{border-color:var(--bronze);background:var(--raised)}}
.opt[aria-pressed="true"]{border-color:var(--gilt);background:var(--raised);box-shadow:0 0 0 1px var(--gilt)}
.opt .oi{color:var(--bronze);transition:color .2s}
.opt .oi svg{width:40px;height:40px}
.opt[aria-pressed="true"] .oi{color:var(--gilt)}@media(hover:hover){.opt:hover .oi{color:var(--gilt)}}
.opt .ol{font-family:var(--display);font-size:18px;letter-spacing:.02em}
.opt .os{font-size:12.5px;color:var(--stone);line-height:1.45}
.opt .num{font-family:var(--display);font-size:38px;color:var(--bronze);line-height:1}
.opt[aria-pressed="true"] .num{color:var(--gilt)}@media(hover:hover){.opt:hover .num{color:var(--gilt)}}
.f-name{max-width:440px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.f-input{background:var(--surface);border:1px solid var(--hair);border-radius:2px;color:var(--marble);
  font-family:var(--display);font-size:20px;letter-spacing:.06em;text-align:center;padding:16px;
  min-height:56px;width:100%}
.f-input::placeholder{color:var(--stone);opacity:.6;letter-spacing:.04em}
.f-input:focus{outline:none;border-color:var(--gilt)}
.f-back{background:none;border:0;color:var(--stone);font:inherit;font-size:12px;letter-spacing:.14em;
  text-transform:uppercase;cursor:pointer;margin-top:30px;padding:10px;transition:color .2s}
@media(hover:hover){.f-back:hover{color:var(--gilt)}}
/* reveal */
.rev-coin{width:110px;margin:0 auto 22px;color:var(--gilt)}
.js .rev-coin{animation:strike .7s cubic-bezier(.34,1.3,.64,1) both}
@keyframes strike{from{opacity:0;transform:scale(1.18)}to{opacity:1;transform:scale(1)}}
.rev-t{font-family:var(--display);font-size:clamp(26px,4vw,40px);margin-bottom:10px}
.rev-s{color:var(--stone);margin-bottom:26px;font-size:15px}
.rev-card{border:1px solid var(--bronze);background:var(--raised);border-radius:3px;padding:26px;
  text-align:left;margin-bottom:26px;box-shadow:0 0 0 1px var(--bronze-deep),0 24px 60px rgba(0,0,0,.5)}
.rev-hd{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.rev-hd .av{width:54px;height:54px;border-radius:50%;border:1px solid var(--gilt);flex:none;
  display:flex;align-items:center;justify-content:center;color:var(--gilt);background:var(--obsidian)}
.rev-hd .av svg{width:30px;height:30px}
.rev-hd .nm{font-family:var(--display);font-size:22px;letter-spacing:.03em;word-break:break-word}
.rev-hd .rk{font-size:12px;color:var(--gilt);letter-spacing:.12em;text-transform:uppercase}
.rev-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}
@media(max-width:560px){.rev-meta{grid-template-columns:1fr}}
.rev-meta>div{border:1px solid var(--hair-2);border-radius:2px;padding:11px 13px}
.rev-meta .k{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);margin-bottom:3px}
.rev-meta .v{font-family:var(--display);font-size:15px}
.gate{border-top:1px solid var(--hair);padding-top:24px;text-align:left}
.gate-h{font-family:var(--display);font-size:19px;margin-bottom:6px}
.gate-p{font-size:13.5px;color:var(--stone);margin-bottom:18px}
.tier-pick{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
@media(max-width:560px){.tier-pick{grid-template-columns:1fr}}
.tp{background:var(--surface);border:1px solid var(--hair);border-radius:3px;padding:16px;cursor:pointer;
  color:var(--marble);font:inherit;text-align:left;transition:all .2s}
@media(hover:hover){.tp:hover{border-color:var(--bronze)}}
.tp[aria-pressed="true"]{border-color:var(--gilt);box-shadow:0 0 0 1px var(--gilt)}
.tp .tpn{font-family:var(--display);font-size:15px;margin-bottom:3px}
.tp .tpp{font-size:12.5px;color:var(--gilt);font-weight:600}
.tp .tps{font-size:11px;color:var(--stone)}
.gate form{display:flex;flex-direction:column;gap:12px}
.f-note{font-size:11.5px;color:var(--stone);line-height:1.5;margin-top:10px}
.f-done{border:1px solid var(--gilt);background:var(--raised);border-radius:3px;padding:20px;text-align:center}
.f-done .fdh{font-family:var(--display);font-size:20px;color:var(--gilt);margin-bottom:8px}
.f-done p{font-size:13.5px;color:var(--stone);line-height:1.6}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* reveal — progressive enhancement: only hidden when JS is active */
.js .rv{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s cubic-bezier(.22,1,.36,1)}
.js .rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .rv{opacity:1;transform:none;transition:none}
  .bar .bf{transition:none}
  .toast{transition:none}
  *{animation:none!important}
}

/* ── The System (training science) ── */
.sys-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--hair-2);
  border:1px solid var(--hair);border-radius:3px;overflow:hidden;margin-bottom:22px}
@media(max-width:760px){.sys-grid{grid-template-columns:1fr}}
.sys{background:var(--obsidian);padding:28px 26px;transition:background-color .3s}
@media(hover:hover){.sys:hover{background:var(--surface)}}
.sys .si{color:var(--bronze);margin-bottom:14px;line-height:0}
.sys .si svg{width:32px;height:32px}
.sys h4{font-family:var(--display);font-size:20px;letter-spacing:.02em;margin-bottom:4px}
.sys .sgk{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);margin-bottom:10px}
.sys p{font-size:14px;color:var(--stone);line-height:1.6}
.sys p b{color:var(--marble);font-weight:600}

/* oracle demo */
.oracle{border:1px solid var(--hair);border-radius:3px;background:var(--surface);overflow:hidden}
.oracle-hd{padding:22px 26px;border-bottom:1px solid var(--hair-2);display:flex;
  justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.oracle-hd h4{font-family:var(--display);font-size:20px}
.oracle-hd p{font-size:13px;color:var(--stone);margin-top:3px}
.oracle-wk{font-family:var(--display);font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gilt);white-space:nowrap}
.oracle-bd{display:grid;grid-template-columns:1.1fr 1fr;gap:1px;background:var(--hair-2)}
@media(max-width:860px){.oracle-bd{grid-template-columns:1fr}}
.oracle-q,.oracle-out{background:var(--surface);padding:24px 26px}
.oq{margin-bottom:20px}
.oq:last-child{margin-bottom:0}
.oq .ql{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);margin-bottom:4px}
.oq .qt{font-size:14px;margin-bottom:11px;color:#DCD5C4}
.oq .qb{display:flex;gap:8px;flex-wrap:wrap}
.ob{background:transparent;border:1px solid var(--hair);border-radius:2px;color:var(--stone);
  font:inherit;font-size:12px;padding:9px 13px;cursor:pointer;min-height:38px;
  transition:border-color .2s,color .2s,background-color .2s}
@media(hover:hover){.ob:hover{border-color:var(--bronze);color:var(--marble)}}
.ob[aria-pressed="true"]{border-color:var(--gilt);color:var(--gilt);background:rgba(214,177,95,.09)}
/* verdict */
.oracle-out{display:flex;flex-direction:column;gap:18px;background:var(--raised);justify-content:center}
.vd-lbl{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--stone)}
.vd-sets{display:flex;align-items:baseline;gap:12px;font-family:var(--display)}
.vd-sets .from{font-size:30px;color:var(--stone)}
.vd-sets .arw{color:var(--bronze);font-size:19px}
.vd-sets .to{font-size:46px;color:var(--gilt);line-height:1}
.vd-sets .unit{font-size:12px;color:var(--stone);letter-spacing:.12em;text-transform:uppercase;
  font-family:var(--body)}
.vd-why{font-size:13.5px;color:#DCD5C4;line-height:1.6;min-height:44px}
.vd-why b{color:var(--gilt);font-weight:600}
/* volume ladder */
.ladder{margin-top:2px}
.ladder .lt{height:8px;background:var(--obsidian);border-radius:99px;overflow:hidden;position:relative;
  border:1px solid var(--hair-2)}
.ladder .lf{height:100%;background:linear-gradient(90deg,var(--bronze-deep),var(--gilt));
  border-radius:99px;transition:width .55s cubic-bezier(.22,1,.36,1)}
.ladder .lm{position:absolute;top:-4px;bottom:-4px;width:1px;background:var(--stone);opacity:.55}
.ladder .lk{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--stone);margin-top:8px}
.ladder .lk span.hot{color:var(--gilt)}
.oracle-ft{padding:16px 26px;border-top:1px solid var(--hair-2);display:flex;gap:14px;
  align-items:center;justify-content:space-between;flex-wrap:wrap}
.oracle-ft .note{font-size:12px;color:var(--stone);font-style:italic}
.mini-btn{background:transparent;border:1px solid var(--hair);color:var(--stone);font:inherit;
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:9px 15px;border-radius:2px;
  cursor:pointer;min-height:38px;transition:all .2s}
@media(hover:hover){.mini-btn:hover{border-color:var(--bronze);color:var(--gilt)}}

/* interference / hybrid edge */
.interf{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}
@media(max-width:760px){.interf{grid-template-columns:1fr}}
.icard{border:1px solid var(--hair);border-radius:3px;padding:22px 24px;background:var(--surface)}
.icard .ih{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.icard .ih svg{width:22px;height:22px;color:var(--bronze)}
.icard .ih span{font-family:var(--display);font-size:17px}
.icard p{font-size:13.5px;color:var(--stone);line-height:1.6}
.icard.edge{border-color:var(--bronze);background:var(--raised)}
.icard.edge .ih svg,.icard.edge .ih span{color:var(--gilt)}
.vs-tag{display:inline-block;font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gilt);border:1px solid var(--bronze-deep);border-radius:2px;padding:3px 8px;margin-bottom:12px}

/* ── PWA install ── */
.install{position:fixed;left:14px;right:14px;bottom:14px;z-index:70;max-width:440px;margin:0 auto;
  background:var(--raised);border:1px solid var(--bronze);border-radius:3px;padding:16px 18px;
  display:flex;align-items:center;gap:14px;box-shadow:0 18px 50px rgba(0,0,0,.55);
  transform:translateY(140%);transition:transform .45s cubic-bezier(.34,1.3,.64,1)}
.install.show{transform:translateY(0)}
.install svg.ico{width:38px;height:38px;color:var(--gilt);flex:none}
.install .it{flex:1;min-width:0}
.install .it b{font-family:var(--display);font-size:15px;display:block;letter-spacing:.03em}
.install .it span{font-size:12px;color:var(--stone);display:block;line-height:1.4}
.install .ia{display:flex;gap:8px;flex:none}
.install button{font:inherit;cursor:pointer;border-radius:2px;min-height:40px;padding:0 14px;
  font-size:12px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;transition:all .2s}
.install .go{background:var(--bronze);border:1px solid var(--bronze);color:#120E08}
@media(hover:hover){.install .go:hover{background:var(--gilt);border-color:var(--gilt)}}
.install .no{background:transparent;border:1px solid var(--hair);color:var(--stone)}
@media(hover:hover){.install .no:hover{border-color:var(--stone);color:var(--marble)}}
@media(max-width:560px){.install{flex-wrap:wrap}.install .ia{width:100%}.install .ia button{flex:1}}
.offline-dot{display:inline-flex;align-items:center;gap:7px;font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--stone)}
.offline-dot i{width:6px;height:6px;border-radius:50%;background:var(--laurel,#4A7A43);display:block}

/* page hero (inner pages) */
.phero{padding:150px 0 54px;position:relative;overflow:hidden}
.phero::after{content:"";position:absolute;top:-40%;left:50%;transform:translateX(-50%);
  width:min(820px,120vw);aspect-ratio:1;pointer-events:none;
  background:radial-gradient(circle,rgba(168,123,60,.13) 0%,transparent 62%)}
.phero .wrap{position:relative}
.phero h1{font-size:clamp(34px,5.6vw,62px);letter-spacing:.015em;margin:14px 0 18px;overflow-wrap:break-word}
.phero-sub{color:var(--stone);font-size:17px;max-width:min(62ch,100%);line-height:1.6}
.sec.pt0{padding-top:0}
.nav-links a.on{color:var(--gilt)}
.fnav{display:flex;gap:22px;justify-content:center;flex-wrap:wrap;margin:20px 0 18px}
.fnav a{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);transition:color .2s}
@media(hover:hover){.fnav a:hover{color:var(--gilt)}}

/* creed line on home */
.creed{padding:70px 0 30px}
.creed-t{font-family:var(--display);font-size:clamp(20px,2.9vw,30px);line-height:1.45;
  max-width:34ch;color:var(--marble);text-wrap:balance}

/* gateway cards */
.gates{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:860px){.gates{grid-template-columns:1fr}}
.gate{border:1px solid var(--hair);border-radius:3px;background:var(--surface);padding:34px 28px;
  display:flex;flex-direction:column;gap:12px;min-height:230px;cursor:pointer;
  transition:border-color .25s,background-color .25s}
@media(hover:hover){.gate:hover{border-color:var(--bronze);background:var(--raised)}}
.gate .gi{color:var(--bronze);line-height:0}
.gate .gi svg{width:34px;height:34px}
.gate h3{font-family:var(--display);font-size:23px;letter-spacing:.02em}
.gate p{font-size:14px;color:var(--stone);line-height:1.6;flex:1}
.gate .ga{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gilt)}

/* next link */
.nextlink{display:grid;grid-template-columns:auto 1fr auto;gap:6px 16px;align-items:center;
  border-top:1px solid var(--hair);margin-top:64px;padding:26px 4px;cursor:pointer;
  transition:border-color .25s}
@media(hover:hover){.nextlink:hover{border-color:var(--bronze)}}
.nextlink .nl-k{grid-row:1;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--bronze)}
.nextlink .nl-t{grid-row:2;grid-column:1/3;font-family:var(--display);font-size:26px}
.nextlink .nl-n{grid-row:2;grid-column:2;justify-self:start;align-self:center;display:none}
.nextlink .nl-a{grid-row:1/3;grid-column:3;font-size:26px;color:var(--bronze);transition:transform .25s}
@media(hover:hover){.nextlink:hover .nl-a{transform:translateX(6px);color:var(--gilt)}}

/* ── ENTER THE WORLD (post-forge destination) ── */
.wmap-hd{padding:130px 0 26px}
.wmap-hd .wrow{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.wmap-hd .wav{width:74px;height:74px;border-radius:50%;border:1px solid var(--gilt);flex:none;
  display:flex;align-items:center;justify-content:center;color:var(--gilt);background:var(--surface)}
.wmap-hd .wav svg{width:42px;height:42px}
.wmap-hd .wnm{font-family:var(--display);font-size:clamp(26px,4vw,40px);letter-spacing:.03em;word-break:break-word}
.wmap-hd .wrk{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--gilt);margin-top:2px}
.wmap-hd .wsp{margin-left:auto;text-align:right}
.wmap-hd .wsp .k{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}
.wmap-hd .wsp .v{font-family:var(--display);font-size:26px;color:var(--gilt);
  display:flex;align-items:center;gap:8px;justify-content:flex-end}
.wmap-hd .wsp .v svg{width:19px;height:19px}
@media(max-width:620px){.wmap-hd .wsp{margin-left:0;text-align:left}.wmap-hd .wsp .v{justify-content:flex-start}}
.xpbar{margin-top:22px}
.xpbar .xt{height:6px;background:var(--raised);border-radius:99px;overflow:hidden;border:1px solid var(--hair-2)}
.xpbar .xf{height:100%;background:linear-gradient(90deg,var(--bronze-deep),var(--gilt));width:8%;
  border-radius:99px;transition:width .9s cubic-bezier(.22,1,.36,1)}
.xpbar .xl{display:flex;justify-content:space-between;margin-top:7px;font-size:10.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--stone)}
.wgrid{display:grid;grid-template-columns:1.25fr 1fr;gap:18px;align-items:start}
@media(max-width:900px){.wgrid{grid-template-columns:1fr}}
.region.open{border-color:var(--bronze);background:var(--raised)}
.region .startpill{position:absolute;top:12px;right:12px;font-size:9.5px;letter-spacing:.14em;
  text-transform:uppercase;color:#120E08;background:var(--gilt);padding:3px 8px;border-radius:2px;font-weight:700}
.whint{font-size:12.5px;color:var(--stone);font-style:italic;margin-top:14px}
.empty-hero{text-align:center;padding:170px 24px 120px}
.empty-hero .eh-coin{width:100px;margin:0 auto 24px;color:var(--bronze-deep)}
.empty-hero h1{font-family:var(--display);font-size:clamp(26px,4vw,40px);margin-bottom:14px}
.empty-hero p{color:var(--stone);max-width:46ch;margin:0 auto 28px}

/* ── app-like mobile foundations ── */
html{-webkit-text-size-adjust:100%}
body{-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}
button,a{-webkit-tap-highlight-color:transparent}
@supports(padding:max(0px)){
  .nav{padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}
  footer{padding-bottom:max(52px,calc(52px + env(safe-area-inset-bottom)))}
}
/* burger */
.burger{display:none;width:44px;height:44px;border:1px solid var(--hair);background:transparent;
  border-radius:2px;cursor:pointer;align-items:center;justify-content:center;flex:none;padding:0}
.burger span{display:block;width:18px;height:1.5px;background:var(--marble);position:relative;transition:background .2s}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:18px;height:1.5px;
  background:var(--marble);transition:transform .28s cubic-bezier(.22,1,.36,1)}
.burger span::before{top:-6px}.burger span::after{top:6px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded="true"] span::after{transform:translateY(-6px) rotate(-45deg)}
/* full-screen mobile menu */
.mmenu{position:fixed;inset:0;z-index:45;background:var(--obsidian);display:flex;flex-direction:column;
  padding:96px 26px calc(34px + env(safe-area-inset-bottom));opacity:0;visibility:hidden;
  transform:translateY(-8px);transition:opacity .3s ease,transform .3s ease,visibility .3s}
.mmenu.open{opacity:1;visibility:visible;transform:none}
.mmenu a{display:flex;align-items:center;justify-content:space-between;padding:20px 0;
  border-bottom:1px solid var(--hair-2);font-family:var(--display);font-size:26px;letter-spacing:.02em}
.mmenu a .ar{color:var(--bronze);font-size:20px}
.mmenu a.on{color:var(--gilt)}
.mmenu .mfoot{margin-top:auto;display:flex;flex-direction:column;gap:12px}
.mmenu .mfoot .btn{width:100%}
.mmenu .mlogin{font-family:var(--body);font-size:13px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--stone);border:0;padding:14px 0;justify-content:center}
@media(max-width:880px){
  .burger{display:flex}
  .nav-links{display:none}
  .nav{height:58px}
}
/* sticky mobile CTA */
.mcta{position:fixed;left:0;right:0;bottom:0;z-index:40;display:none;padding:12px 14px calc(12px + env(safe-area-inset-bottom));
  background:linear-gradient(transparent,rgba(20,16,12,.92) 22%);pointer-events:none}
.mcta .btn{width:100%;pointer-events:auto;box-shadow:0 10px 30px rgba(0,0,0,.5)}
@media(max-width:880px){ .mcta.on{display:block} }
@media(display-mode:standalone){ .mcta{padding-bottom:calc(20px + env(safe-area-inset-bottom))} }
/* mobile spacing polish */
@media(max-width:640px){
  .sec{padding:64px 0}
  .wrap{padding:0 20px}
  .phero{padding:120px 0 40px}
  .sec-head{margin-bottom:30px}
  .gate{min-height:auto;padding:26px 22px}
  .chapter{padding:26px 20px}
  .region{min-height:auto;padding:24px 20px}
  .tier{padding:26px 22px}
  .panel{padding:20px 18px}
  .oracle-q,.oracle-out{padding:20px 18px}
  .oracle-hd{padding:18px}
  .nextlink{margin-top:44px}
  .nextlink .nl-t{font-size:21px}
  .faq summary{font-size:17px;padding:18px 0}
  .hero{padding:100px 20px 60px}
  .final{padding:80px 20px}
  .creed{padding:50px 0 20px}
}

/* ── login ── */
.loginwrap{min-height:100svh;display:flex;align-items:center;justify-content:center;
  padding:100px 20px calc(60px + env(safe-area-inset-bottom));position:relative;overflow:hidden}
.loginwrap .hero-glow{top:-14%}
.logincard{position:relative;width:100%;max-width:420px;border:1px solid var(--hair);
  background:var(--surface);border-radius:4px;padding:38px 30px}
.logincard .lc-coin{width:64px;margin:0 auto 22px;color:var(--bronze)}
.logincard h1{font-family:var(--display);font-size:27px;text-align:center;margin-bottom:8px;letter-spacing:.02em}
.logincard .lc-sub{text-align:center;color:var(--stone);font-size:13.5px;margin-bottom:26px;line-height:1.55}
.lc-field{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.lc-field label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}
.lc-input{background:var(--obsidian);border:1px solid var(--hair);border-radius:2px;color:var(--marble);
  font-family:var(--body);font-size:16px;letter-spacing:.08em;padding:15px;min-height:52px;width:100%;
  text-align:center;text-transform:uppercase}
.lc-input:focus{outline:none;border-color:var(--gilt)}
.lc-err{color:var(--porphyry,#C2543F);font-size:13px;text-align:center;margin-bottom:14px;min-height:18px}
.lc-note{margin-top:20px;padding-top:18px;border-top:1px solid var(--hair-2);font-size:12px;
  color:var(--stone);line-height:1.6;text-align:center}
.lc-note b{color:var(--marble)}

/* ── client dashboard ── */
.cwrap{padding-top:86px}
.chero{padding:22px 0 8px}
.crow{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.cav{width:60px;height:60px;border-radius:50%;border:1px solid var(--gilt);flex:none;background:var(--surface);
  display:flex;align-items:center;justify-content:center;color:var(--gilt)}
.cav svg{width:34px;height:34px}
.cname{font-family:var(--display);font-size:clamp(24px,5vw,34px);letter-spacing:.03em;line-height:1.1}
.ctier{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gilt);margin-top:3px}
.cout{margin-left:auto}
@media(max-width:600px){.cout{margin-left:0;width:100%}}
/* stat strip */
.cstats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--hair-2);
  border:1px solid var(--hair);border-radius:3px;overflow:hidden;margin:24px 0}
@media(max-width:700px){.cstats{grid-template-columns:repeat(2,1fr)}}
.cstat{background:var(--surface);padding:18px 16px;text-align:center}
.cstat .cv{font-family:var(--display);font-size:clamp(22px,4.4vw,30px);color:var(--gilt);line-height:1;
  font-variant-numeric:tabular-nums}
.cstat .ck{font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--stone);margin-top:7px}
/* PR board */
.prs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:820px){.prs{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.prs{grid-template-columns:1fr}}
.pr{border:1px solid var(--hair);border-radius:3px;background:var(--surface);padding:16px 18px;
  display:flex;align-items:center;justify-content:space-between;gap:12px}
.pr .pn{font-size:13.5px;color:#DCD5C4;line-height:1.35}
.pr .pv{font-family:var(--display);font-size:23px;color:var(--gilt);white-space:nowrap;
  font-variant-numeric:tabular-nums}
.pr .pv small{font-size:12px;color:var(--stone);margin-left:2px}
/* progression chart */
.chart{border:1px solid var(--hair);border-radius:3px;background:var(--surface);padding:20px 22px;margin-bottom:12px}
.chart .ch-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px}
.chart .ch-n{font-family:var(--display);font-size:17px}
.chart .ch-d{font-size:12px;color:var(--gilt);font-variant-numeric:tabular-nums;white-space:nowrap}
.chart svg{width:100%;height:70px;display:block;overflow:visible}
.chart .ch-x{display:flex;justify-content:space-between;font-size:10px;color:var(--stone);margin-top:8px;
  font-variant-numeric:tabular-nums}
/* session list */
.slist{border:1px solid var(--hair);border-radius:3px;overflow:hidden;background:var(--surface)}
.sess{border-bottom:1px solid var(--hair-2)}
.sess:last-child{border-bottom:0}
.sess>summary{cursor:pointer;list-style:none;padding:16px 20px;display:grid;
  grid-template-columns:auto 1fr auto;gap:6px 14px;align-items:center;transition:background-color .2s}
.sess>summary::-webkit-details-marker{display:none}
@media(hover:hover){.sess>summary:hover{background:var(--raised)}}
.sess .sd{font-family:var(--mono,ui-monospace,monospace);font-size:12px;color:var(--stone);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.sess .sday{font-family:var(--display);font-size:16px}
.sess .sv{font-size:11.5px;color:var(--gilt);white-space:nowrap;font-variant-numeric:tabular-nums}
.sess .sbody{padding:4px 20px 20px}
.exrow{padding:11px 0;border-top:1px solid var(--hair-2)}
.exrow .en{font-size:14px;margin-bottom:6px;color:#DCD5C4;display:flex;justify-content:space-between;gap:12px}
.exrow .en b{color:var(--marble);font-weight:600}
.exrow .en .ev{font-size:11.5px;color:var(--stone);white-space:nowrap}
.setpills{display:flex;gap:6px;flex-wrap:wrap}
.setpill{font-size:11.5px;border:1px solid var(--hair);border-radius:2px;padding:5px 9px;color:var(--stone);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.setpill b{color:var(--gilt);font-weight:600}
.exnote{font-size:11.5px;color:var(--bronze);font-style:italic;margin-top:6px}
/* oracle read */
.oread{border:1px solid var(--bronze);background:var(--raised);border-radius:3px;padding:22px 24px;margin-bottom:24px}
.oread .oh{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.oread .oh svg{width:22px;height:22px;color:var(--gilt)}
.oread .oh span{font-family:var(--display);font-size:18px;color:var(--gilt)}
.oread p{font-size:14px;color:#DCD5C4;line-height:1.65;margin-bottom:10px}
.oread p:last-child{margin-bottom:0}
.oread b{color:var(--gilt);font-weight:600}

/* app mode: hide the marketing chrome, this is the product */
.appmode .nav,.appmode .mmenu,.appmode .mcta,.appmode footer,.appmode .install{display:none!important}
.appmode body{background:var(--obsidian)}
/* ── client app shell ── */
.appbar{position:fixed;top:0;left:0;right:0;z-index:46;background:rgba(20,16,12,.94);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--hair);
  padding-top:env(safe-area-inset-top)}
.appbar-in{max-width:1180px;margin:0 auto;padding:11px 20px;display:flex;align-items:center;gap:14px}
.appbar .ab-brand{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.appbar .ab-brand svg{width:26px;height:26px;color:var(--bronze);flex:none}
.appbar .ab-nm{font-family:var(--display);font-size:15px;letter-spacing:.05em;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.appbar .ab-tier{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gilt)}
/* desktop tabs */
.tabs{display:flex;gap:2px;background:var(--raised);border:1px solid var(--hair);border-radius:3px;padding:3px}
.tabs button{flex:1;background:transparent;border:0;color:var(--stone);font:inherit;font-size:12px;
  letter-spacing:.12em;text-transform:uppercase;padding:9px 16px;border-radius:2px;cursor:pointer;
  min-height:38px;white-space:nowrap;transition:background-color .2s,color .2s}
.tabs button[aria-selected="true"]{background:var(--bronze);color:#120E08;font-weight:600}
@media(max-width:820px){.tabs{display:none}}
/* mobile bottom tab bar */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:46;display:none;
  background:rgba(20,16,12,.96);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border-top:1px solid var(--hair);padding-bottom:env(safe-area-inset-bottom)}
.tabbar-in{display:grid;grid-auto-flow:column;grid-auto-columns:1fr}
.tabbar button span{font-size:9px}
.tabbar button{background:transparent;border:0;color:var(--stone);font:inherit;cursor:pointer;
  padding:9px 4px 7px;display:flex;flex-direction:column;align-items:center;gap:4px;min-height:56px;
  transition:color .2s}
.tabbar button svg{width:21px;height:21px}
.tabbar button span{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase}
.tabbar button[aria-selected="true"]{color:var(--gilt)}
@media(max-width:820px){.tabbar{display:block}}
.appwrap{padding-top:calc(66px + env(safe-area-inset-top));padding-bottom:40px}
@media(max-width:820px){.appwrap{padding-bottom:calc(78px + env(safe-area-inset-bottom))}}
.pane{display:none}
.pane.on{display:block;animation:panein .32s cubic-bezier(.22,1,.36,1) both}
@keyframes panein{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.pane.on{animation:none}}
.ptitle{font-family:var(--display);font-size:clamp(22px,3.6vw,30px);margin:4px 0 18px;letter-spacing:.02em}

/* ── today card ── */
.today{border:1px solid var(--bronze);background:var(--raised);border-radius:4px;overflow:hidden;
  margin-bottom:18px;box-shadow:0 0 0 1px var(--bronze-deep),0 20px 50px rgba(0,0,0,.4)}
.today.rest{border-color:var(--hair);background:var(--surface);box-shadow:none}
.today-h{padding:20px 22px;border-bottom:1px solid var(--hair-2);display:flex;gap:14px;align-items:center}
.today-h .th-ic{width:44px;height:44px;border-radius:50%;border:1px solid var(--gilt);flex:none;
  display:flex;align-items:center;justify-content:center;color:var(--gilt);background:var(--obsidian)}
.today.rest .th-ic{border-color:var(--stone);color:var(--stone)}
.today-h .th-ic svg{width:22px;height:22px}
.today-h .th-k{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}
.today-h .th-t{font-family:var(--display);font-size:21px;letter-spacing:.02em;line-height:1.15}
.today-h .th-sub{font-size:11.5px;color:var(--gilt);letter-spacing:.06em;margin-top:3px}
.today-h .th-w{margin-left:auto;text-align:right;flex:none}
.today-h .th-w b{display:block;font-family:var(--display);font-size:13px;color:var(--gilt)}
.today-h .th-w span{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--stone)}
.today-b{padding:18px 22px}
.today-why{font-size:13px;color:var(--stone);line-height:1.6;margin-bottom:16px;font-style:italic}
.exlist{display:flex;flex-direction:column;gap:1px;background:var(--hair-2);border:1px solid var(--hair);border-radius:3px;overflow:hidden}
.exitem{background:var(--surface);padding:13px 16px;display:flex;justify-content:space-between;
  align-items:center;gap:14px}
.exitem .xn{font-size:14px;color:#DCD5C4}
.exitem .xn small{display:block;color:var(--stone);font-size:11.5px;margin-top:2px}
.exitem .xd{font-size:12.5px;color:var(--gilt);white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
.lastref{margin-top:14px;padding:13px 16px;border:1px dashed var(--hair);border-radius:3px;
  font-size:12.5px;color:var(--stone);line-height:1.6}
.lastref b{color:var(--gilt)}

/* ── calendar ── */
.calhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.calhead .cm{font-family:var(--display);font-size:19px;letter-spacing:.03em}
.calnav{display:flex;gap:6px}
.calnav button{width:38px;height:38px;border:1px solid var(--hair);background:transparent;color:var(--stone);
  border-radius:2px;cursor:pointer;font-size:15px;line-height:1;transition:all .2s}
@media(hover:hover){.calnav button:hover{border-color:var(--bronze);color:var(--gilt)}}
.calgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.caldow{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);
  text-align:center;padding-bottom:6px}
.calday{aspect-ratio:1;border:1px solid var(--hair-2);border-radius:3px;background:var(--surface);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;
  position:relative;padding:2px;transition:border-color .2s,background-color .2s;min-height:44px;min-width:0;overflow:hidden}
@media(hover:hover){.calday:hover{border-color:var(--bronze)}}
.calday.blank{border:0;background:transparent;cursor:default}
.calday .dn{font-size:12px;color:var(--stone);font-variant-numeric:tabular-nums;line-height:1}
.calday .dot{width:5px;height:5px;border-radius:50%;background:transparent}
.calday.coach .dot{background:var(--gilt)}
.calday.kouli .dot{background:var(--bronze-deep);border:1px solid var(--bronze)}
.calday.done{background:var(--raised);border-color:var(--bronze)}
.calday.done .dn{color:var(--gilt);font-weight:600}
.calday.today{box-shadow:0 0 0 1px var(--gilt)}
.calday.today .dn{color:var(--marble)}
.calday .fl{font-size:7.5px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:.04em;text-transform:uppercase;color:var(--stone);line-height:1}
.callegend{display:flex;gap:16px;flex-wrap:wrap;margin-top:16px;font-size:11.5px;color:var(--stone)}
.callegend span{display:inline-flex;align-items:center;gap:7px}
.callegend i{width:8px;height:8px;border-radius:50%;display:block}
.calsel{margin-top:16px;border:1px solid var(--hair);border-radius:3px;background:var(--surface);padding:18px 20px}
.calsel .cs-k{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}
.calsel .cs-t{font-family:var(--display);font-size:19px;margin:3px 0 10px}

/* ── profile ── */
.pform{display:flex;flex-direction:column;gap:16px;max-width:560px}
.pf{display:flex;flex-direction:column;gap:7px}
.pf label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}
.pf input,.pf select{background:var(--surface);border:1px solid var(--hair);border-radius:2px;
  color:var(--marble);font-family:var(--body);font-size:16px;padding:13px 14px;min-height:50px;width:100%}
.pf input:focus,.pf select:focus{outline:none;border-color:var(--gilt)}
.pf .hint{font-size:11.5px;color:var(--stone);line-height:1.5}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.seg button{flex:1;min-width:80px;background:transparent;border:1px solid var(--hair);border-radius:2px;
  color:var(--stone);font:inherit;font-size:13px;padding:11px 10px;min-height:46px;cursor:pointer;transition:all .2s}
.seg button[aria-pressed="true"]{border-color:var(--gilt);color:var(--gilt);background:rgba(214,177,95,.08)}
.wkdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.wkday{display:flex;flex-direction:column;align-items:center;gap:6px}
.wkday .wl{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--stone)}
.wkday button{width:100%;min-height:52px;border:1px solid var(--hair);background:transparent;border-radius:2px;
  color:var(--stone);font:inherit;font-size:10px;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;
  padding:4px 2px;transition:all .2s;line-height:1.2}
.wkday button[data-t="coach"]{border-color:var(--gilt);color:var(--gilt);background:rgba(214,177,95,.09)}
.wkday button[data-t="kouli"]{border-color:var(--bronze);color:var(--bronze)}
.psave{position:sticky;bottom:calc(78px + env(safe-area-inset-bottom));display:flex;gap:10px;
  padding-top:8px;background:linear-gradient(transparent,var(--obsidian) 34%)}
@media(min-width:821px){.psave{bottom:12px}}
.saved{font-size:12px;color:var(--laurel,#5E9A52);letter-spacing:.1em;text-transform:uppercase;
  opacity:0;transition:opacity .3s;align-self:center}
.saved.on{opacity:1}

/* ── macro strip (top of Today) ── */
.mstrip{border:1px solid var(--hair);border-radius:4px;background:var(--surface);padding:14px 16px;
  margin-bottom:16px;cursor:pointer;transition:border-color .2s}
@media(hover:hover){.mstrip:hover{border-color:var(--bronze)}}
.mstrip-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:11px}
.mstrip-h .mk{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}
.mstrip-h .mv{font-family:var(--display);font-size:15px;color:var(--gilt);font-variant-numeric:tabular-nums}
.mbars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.mbar .bl{display:flex;justify-content:space-between;font-size:9.5px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--stone);margin-bottom:4px}
.mbar .bl b{color:#DCD5C4;font-weight:600;font-variant-numeric:tabular-nums}
.mbar .bt{height:4px;background:var(--obsidian);border-radius:99px;overflow:hidden;border:1px solid var(--hair-2)}
.mbar .bf{height:100%;border-radius:99px;background:var(--bronze);transition:width .5s cubic-bezier(.22,1,.36,1)}
.mbar.p .bf{background:linear-gradient(90deg,var(--bronze-deep),var(--gilt))}
.mbar .bf.over{background:var(--porphyry,#C2543F)}

/* ── workout logger ── */
.wex{border:1px solid var(--hair);border-radius:4px;background:var(--surface);margin-bottom:10px;overflow:hidden}
.wex.done{border-color:var(--bronze)}
.wex-h{padding:14px 16px;display:flex;align-items:center;gap:12px;cursor:pointer;
  background:var(--surface);transition:background-color .2s}
@media(hover:hover){.wex-h:hover{background:var(--raised)}}
.wex-h .wn{flex:1;min-width:0}
.wex-h .wn b{font-size:15px;color:#DCD5C4;font-weight:600;display:block;line-height:1.25}
.wex-h .wn small{font-size:11.5px;color:var(--stone);display:block;margin-top:3px}
.wex-h .wc{font-size:11.5px;color:var(--gilt);white-space:nowrap;font-variant-numeric:tabular-nums}
.wex-b{padding:0 16px 14px;border-top:1px solid var(--hair-2)}
.setrow{display:grid;grid-template-columns:20px 1fr 1fr 42px;gap:6px;align-items:center;
  padding:8px 0;border-bottom:1px solid var(--hair-2)}
.setrow.hd{padding:2px 0 6px;border-bottom:1px solid var(--hair-2)}
.setrow.hd span{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);text-align:center}
.setrow:last-child{border-bottom:0}
.setrow .sn{font-size:11px;color:var(--stone);font-variant-numeric:tabular-nums;text-align:center}
.stepper{display:flex;align-items:center;border:1px solid var(--hair);border-radius:3px;overflow:hidden;
  background:var(--obsidian)}
.stepper button{width:32px;min-height:44px;background:transparent;border:0;color:var(--stone);
  font-size:17px;line-height:1;cursor:pointer;flex:none;transition:color .15s}
.stepper button:active{color:var(--gilt)}
.stepper input{flex:1;min-width:34px;width:100%;background:transparent;border:0;color:var(--marble);text-align:center;
  font-family:var(--body);font-size:15px;font-variant-numeric:tabular-nums;min-height:44px;padding:0 2px;
  -moz-appearance:textfield}
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.stepper input:focus{outline:none}
.setdone{width:44px;min-height:44px;border:1px solid var(--hair);border-radius:3px;background:transparent;
  cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .18s}
.setdone svg{width:16px;height:16px;color:var(--stone);transition:color .18s}
.setdone[aria-pressed="true"]{background:var(--gilt);border-color:var(--gilt)}
.setdone[aria-pressed="true"] svg{color:#120E08}
.setrow.logged .stepper{border-color:var(--bronze-deep)}
.wex-acts{display:flex;gap:8px;margin-top:12px}
.wex-acts button{flex:1;background:transparent;border:1px dashed var(--hair);color:var(--stone);
  font:inherit;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;padding:11px;border-radius:3px;
  cursor:pointer;min-height:44px;transition:all .2s}
@media(hover:hover){.wex-acts button:hover{border-color:var(--bronze);color:var(--gilt)}}
.wlast{font-size:11.5px;color:var(--stone);padding:8px 0 4px;font-style:italic}
.wlast b{color:var(--gilt);font-style:normal}

/* rest timer */
.rest{position:fixed;left:14px;right:14px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:44;
  max-width:420px;margin:0 auto;background:var(--raised);border:1px solid var(--gilt);border-radius:4px;
  padding:12px 16px;display:none;align-items:center;gap:14px;box-shadow:0 14px 40px rgba(0,0,0,.5)}
.rest.on{display:flex}
@media(min-width:821px){.rest{bottom:20px}}
.rest .rt{font-family:var(--display);font-size:26px;color:var(--gilt);font-variant-numeric:tabular-nums;
  min-width:66px}
.rest .rl{flex:1;font-size:11.5px;color:var(--stone);letter-spacing:.1em;text-transform:uppercase}
.rest button{background:transparent;border:1px solid var(--hair);color:var(--stone);border-radius:2px;
  min-height:38px;padding:0 12px;font:inherit;font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}

/* strike the day */
.strike{width:100%;margin-top:6px}
.struck{border:1px solid var(--gilt);background:var(--raised);border-radius:4px;padding:20px;text-align:center}
.struck .sh{font-family:var(--display);font-size:19px;color:var(--gilt);margin-bottom:6px}
.struck p{font-size:13px;color:var(--stone);line-height:1.6}

/* ── meals ── */
.mhero{border:1px solid var(--hair);border-radius:4px;background:var(--surface);padding:20px;margin-bottom:16px}
.rings{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.ring{position:relative;width:110px;height:110px;flex:none}
.ring svg{transform:rotate(-90deg);width:110px;height:110px}
.ring .rc{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring .rn{font-family:var(--display);font-size:23px;color:var(--gilt);line-height:1;font-variant-numeric:tabular-nums}
.ring .rk{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);margin-top:3px}
.mmacros{flex:1;min-width:190px;display:flex;flex-direction:column;gap:11px}
.mline .ml{display:flex;justify-content:space-between;font-size:11.5px;margin-bottom:5px}
.mline .ml span{color:var(--stone);letter-spacing:.1em;text-transform:uppercase;font-size:10px}
.mline .ml b{color:#DCD5C4;font-variant-numeric:tabular-nums;font-weight:600}
.mline .mt{height:6px;background:var(--obsidian);border-radius:99px;overflow:hidden;border:1px solid var(--hair-2)}
.mline .mf{height:100%;border-radius:99px;transition:width .5s cubic-bezier(.22,1,.36,1)}
.mline.p .mf{background:linear-gradient(90deg,var(--bronze-deep),var(--gilt))}
.mline.c .mf{background:#6E8E5E}
.mline.f .mf{background:#8A6F3C}
.mline .mf.over{background:var(--porphyry,#C2543F)}

.mealgroup{margin-bottom:14px}
.mealgroup-h{display:flex;justify-content:space-between;align-items:baseline;padding:0 2px 8px}
.mealgroup-h .gn{font-family:var(--display);font-size:16px;letter-spacing:.03em}
.mealgroup-h .gk{font-size:11.5px;color:var(--stone);font-variant-numeric:tabular-nums}
.fitem{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--hair-2);
  border-radius:3px;background:var(--surface);margin-bottom:6px}
.fitem .fn{flex:1;min-width:0}
.fitem .fn b{font-size:14px;color:#DCD5C4;font-weight:500;display:block}
.fitem .fn small{font-size:11px;color:var(--stone);display:block;margin-top:2px}
.fitem .fk{font-size:12.5px;color:var(--gilt);white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
.fitem .fx{background:transparent;border:0;color:var(--stone);cursor:pointer;font-size:17px;
  width:34px;min-height:34px;flex:none;line-height:1}
@media(hover:hover){.fitem .fx:hover{color:var(--porphyry,#C2543F)}}
.addbtn{width:100%;background:transparent;border:1px dashed var(--hair);color:var(--stone);font:inherit;
  font-size:12px;letter-spacing:.12em;text-transform:uppercase;padding:13px;border-radius:3px;cursor:pointer;
  min-height:48px;transition:all .2s}
@media(hover:hover){.addbtn:hover{border-color:var(--bronze);color:var(--gilt)}}

/* food picker sheet */
.sheet{position:fixed;inset:0;z-index:60;background:rgba(10,8,5,.72);opacity:0;visibility:hidden;
  transition:opacity .28s,visibility .28s;display:flex;align-items:flex-end;justify-content:center}
.sheet.on{opacity:1;visibility:visible}
.sheet-in{width:100%;max-width:520px;max-height:88svh;background:var(--obsidian);border:1px solid var(--hair);
  border-radius:6px 6px 0 0;display:flex;flex-direction:column;transform:translateY(100%);
  transition:transform .34s cubic-bezier(.22,1,.36,1);padding-bottom:env(safe-area-inset-bottom)}
.sheet.on .sheet-in{transform:none}
.sheet-h{padding:16px 18px;border-bottom:1px solid var(--hair);display:flex;align-items:center;gap:12px}
.sheet-h .st{font-family:var(--display);font-size:18px;flex:1}
.sheet-h button{background:transparent;border:1px solid var(--hair);color:var(--stone);width:38px;height:38px;
  border-radius:2px;cursor:pointer;font-size:17px;line-height:1}
.sheet-s{padding:12px 18px;border-bottom:1px solid var(--hair-2)}
.sheet-s input{width:100%;background:var(--surface);border:1px solid var(--hair);border-radius:3px;
  color:var(--marble);font-family:var(--body);font-size:16px;padding:13px 14px;min-height:50px}
.sheet-s input:focus{outline:none;border-color:var(--gilt)}
.sheet-l{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:8px 18px 18px;flex:1}
.frow{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--hair-2);
  cursor:pointer;transition:opacity .15s}
@media(hover:hover){.frow:hover{opacity:.75}}
.frow .fnm{flex:1;min-width:0}
.frow .fnm b{font-size:14.5px;color:#DCD5C4;font-weight:500;display:block}
.frow .fnm small{font-size:11px;color:var(--stone)}
.frow .fkc{font-size:12.5px;color:var(--gilt);white-space:nowrap;font-variant-numeric:tabular-nums}
.qgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.qgrid button{background:var(--surface);border:1px solid var(--hair);border-radius:3px;color:var(--stone);
  font:inherit;font-size:12px;padding:11px;min-height:46px;cursor:pointer;text-align:left;line-height:1.3}
@media(hover:hover){.qgrid button:hover{border-color:var(--bronze);color:var(--marble)}}
.qgrid button b{display:block;color:#DCD5C4;font-size:13px;font-weight:600}
.amt{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;margin:14px 0}
.amt .stepper{width:100%}
.mealpick{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.mealpick button{flex:1;min-width:70px;background:transparent;border:1px solid var(--hair);border-radius:2px;
  color:var(--stone);font:inherit;font-size:12px;padding:10px;min-height:44px;cursor:pointer;transition:all .2s}
.mealpick button[aria-pressed="true"]{border-color:var(--gilt);color:var(--gilt);background:rgba(214,177,95,.08)}
.nutprev{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px;text-align:center}
.nutprev div{border:1px solid var(--hair-2);border-radius:3px;padding:9px 4px}
.nutprev .nv{font-family:var(--display);font-size:16px;color:var(--gilt);font-variant-numeric:tabular-nums}
.nutprev .nk{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);margin-top:2px}

.syncpip{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);
  border:1px solid var(--hair);border-radius:99px;padding:4px 9px;white-space:nowrap;flex:none;
  transition:color .3s,border-color .3s}
.syncpip[data-s="saving"]{color:var(--gilt);border-color:var(--bronze-deep)}
.syncpip[data-s="saved"]{color:var(--stone)}
.syncpip[data-s="offline"]{color:var(--porphyry,#C2543F);border-color:var(--porphyry,#C2543F)}
@media(max-width:520px){.syncpip{display:none}}

.extag{display:inline-block;margin-left:8px;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gilt);border:1px solid var(--hair);border-radius:2px;padding:1px 6px;vertical-align:middle}
.coachwrap{padding-top:calc(66px + env(safe-area-inset-top));padding-bottom:60px}
.clist{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:26px}
.ccard{border:1px solid var(--hair);border-radius:4px;background:var(--surface);padding:20px;cursor:pointer;
  transition:border-color .2s,background-color .2s}
@media(hover:hover){.ccard:hover{border-color:var(--bronze);background:var(--raised)}}
.ccard.on{border-color:var(--gilt);background:var(--raised)}
.ccard .cn{font-family:var(--display);font-size:20px;letter-spacing:.02em}
.ccard .ct{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gilt);margin-top:3px}
.ccard .cm{font-size:12.5px;color:var(--stone);margin-top:12px;line-height:1.6}
.ccard .cm b{color:#DCD5C4}
.cdetail{border:1px solid var(--hair);border-radius:4px;background:var(--surface);padding:22px}
.cday{border-bottom:1px solid var(--hair-2);padding:14px 0}
.cday:last-child{border-bottom:0}
.cday-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px}
.cday-h .cd{font-family:var(--display);font-size:16px}
.cday-h .cv{font-size:11.5px;color:var(--gilt);font-variant-numeric:tabular-nums}
.cex{font-size:13px;color:var(--stone);line-height:1.7}
.cex b{color:#DCD5C4;font-weight:600}
.cshort{font-size:13.5px;line-height:1.7;font-variant-numeric:tabular-nums}
.cshort b{color:var(--marble);font-weight:600}
.cshort span{color:var(--gilt)}
.cshort .xt{font-style:normal;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--stone);margin-left:6px}
.cmeal{font-size:12px;color:var(--stone);margin-top:8px;padding-top:8px;border-top:1px dashed var(--hair-2)}
.cunread{margin-top:8px;display:inline-block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:#120E08;background:var(--gilt);padding:3px 8px;border-radius:2px;font-weight:700}
.chkbox{border:1px solid var(--hair);border-radius:4px;background:var(--surface);padding:15px 17px;margin-bottom:16px}
.chkbox-h{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gilt);margin-bottom:11px}
.chkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:11px}
.chkgrid div{min-width:0}
.chkgrid span{display:block;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone)}
.chkgrid b{font-size:14px;color:var(--marble)}
.chkbox p{margin-top:12px;padding-top:11px;border-top:1px dashed var(--hair-2);font-size:13px;
  color:var(--stone);line-height:1.6}
.chkbox p b{color:var(--gilt)}

/* message button + unread badge */
.msgbtn{position:relative;background:transparent;border:1px solid var(--hair);color:var(--stone);
  width:40px;height:40px;border-radius:2px;cursor:pointer;flex:none;display:flex;align-items:center;
  justify-content:center;padding:0;transition:all .2s}
@media(hover:hover){.msgbtn:hover{border-color:var(--bronze);color:var(--gilt)}}
.msgbtn svg{width:19px;height:19px}
.msgbtn .badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;border-radius:99px;
  background:var(--gilt);color:#120E08;font-size:10px;font-weight:700;display:none;
  align-items:center;justify-content:center;padding:0 5px;font-variant-numeric:tabular-nums}
.msgbtn .badge.on{display:flex}

/* thread */
.thread{position:fixed;inset:0;z-index:62;background:var(--obsidian);display:flex;flex-direction:column;
  opacity:0;visibility:hidden;transition:opacity .28s,visibility .28s}
.thread.on{opacity:1;visibility:visible}
.thread-h{display:flex;align-items:center;gap:14px;padding:14px 18px;border-bottom:1px solid var(--hair);
  padding-top:calc(14px + env(safe-area-inset-top))}
.thread-h .tn{flex:1;min-width:0}
.thread-h .tn b{font-family:var(--display);font-size:17px;display:block}
.thread-h .tn small{font-size:11px;color:var(--stone)}
.thread-h button{background:transparent;border:1px solid var(--hair);color:var(--stone);width:38px;height:38px;
  border-radius:2px;cursor:pointer;font-size:17px;line-height:1;flex:none}
.thread-l{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:18px;display:flex;
  flex-direction:column;gap:10px}
.bub{max-width:78%;padding:11px 14px;border-radius:10px;font-size:14.5px;line-height:1.5;word-wrap:break-word}
.bub .bt{display:block;font-size:10px;color:var(--stone);margin-top:5px;letter-spacing:.06em}
.bub.them{align-self:flex-start;background:var(--surface);border:1px solid var(--hair);border-bottom-left-radius:3px}
.bub.me{align-self:flex-end;background:var(--bronze);color:#120E08;border-bottom-right-radius:3px}
.bub.me .bt{color:rgba(18,14,8,.6)}
.thread-c{padding:12px 14px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--hair);
  display:flex;gap:9px;align-items:flex-end}
.thread-c textarea{flex:1;background:var(--surface);border:1px solid var(--hair);border-radius:4px;
  color:var(--marble);font-family:var(--body);font-size:16px;padding:12px;resize:none;min-height:48px;
  max-height:120px;line-height:1.4}
.thread-c textarea:focus{outline:none;border-color:var(--gilt)}
.thread-c button{background:var(--bronze);border:0;color:#120E08;border-radius:4px;min-height:48px;
  padding:0 18px;font:inherit;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;flex:none}
.thread-empty{margin:auto;text-align:center;color:var(--stone);font-size:13.5px;max-width:30ch;line-height:1.6}

/* bodyweight + check-in cards */
.bwcard,.chkcard{border:1px solid var(--hair);border-radius:4px;background:var(--surface);
  padding:16px 18px;margin-bottom:16px}
.bwcard{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.bwcard .bk{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);flex:1;min-width:110px}
.bwcard .bv{font-family:var(--display);font-size:22px;color:var(--gilt);font-variant-numeric:tabular-nums}
.bwcard .stepper{width:170px}
.chkcard{border-color:var(--bronze);background:var(--raised)}
.chkcard .ch{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.chkcard .ch svg{width:20px;height:20px;color:var(--gilt)}
.chkcard .ch b{font-family:var(--display);font-size:17px;color:var(--gilt)}
.chkcard p{font-size:13px;color:var(--stone);line-height:1.6;margin-bottom:12px}
.chkdone{border-color:var(--hair);background:var(--surface)}
.chkdone .ch b{color:var(--marble)}

/* ── full-bleed photo band ── */
.pband{position:relative;width:100%;overflow:hidden;background:var(--obsidian)}
.pband img{width:100%;height:100%;object-fit:cover;display:block}
.pband.tall{height:clamp(280px,46vw,560px)}
.pband.short{height:clamp(200px,30vw,360px)}
.pband:before{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(to bottom,var(--obsidian),rgba(20,16,12,.18) 26%,rgba(20,16,12,.22) 72%,var(--obsidian))}
.pband .pcap{position:absolute;z-index:3;left:0;right:0;bottom:clamp(18px,4vw,38px);
  text-align:center;padding:0 22px}
.pband .pcap span{display:inline-block;font-family:var(--display);font-size:clamp(15px,2.6vw,25px);
  color:var(--marble);letter-spacing:.01em;line-height:1.35;text-shadow:0 2px 24px rgba(0,0,0,.65)}
.pband .pcap small{display:block;margin-top:9px;font-size:10.5px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--gilt);text-shadow:0 2px 14px rgba(0,0,0,.8)}

/* ── hero photograph behind the coin ── */
.hero{position:relative}
.hero-photo{position:absolute;inset:0;z-index:0;overflow:hidden}
.hero-photo,.hero-photo picture{position:absolute;inset:0}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center 42%;
  opacity:.42;filter:grayscale(.14) contrast(1.06)}
.hero-photo:after{content:'';position:absolute;inset:0;
  background:radial-gradient(115% 78% at 50% 36%,rgba(20,16,12,.30) 0%,rgba(20,16,12,.80) 56%,var(--obsidian) 100%)}
.hero-inner{z-index:2}
.hero-glow{z-index:1}

@media(max-width:700px){.hero-photo img{object-position:center 46%;opacity:.5}}

/* ── side-by-side: image + words ── */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,5vw,58px);align-items:center}
.duo.flip .duo-img{order:2}
.duo-img{position:relative;border-radius:3px;overflow:hidden;aspect-ratio:4/5;background:var(--surface)}
.duo-img img{width:100%;height:100%;object-fit:cover;display:block}
.duo-img:after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 0 1px var(--hair);
  background:linear-gradient(to top,rgba(20,16,12,.5),transparent 46%)}
.duo-txt h2{font-family:var(--display);font-size:clamp(23px,4vw,38px);line-height:1.18;margin-bottom:16px}
.duo-txt p{color:var(--stone);line-height:1.75;margin-bottom:14px}
@media(max-width:760px){.duo{grid-template-columns:1fr;gap:26px}.duo.flip .duo-img{order:0}
  .duo-img{aspect-ratio:3/2}}

/* ── about / the coach ── */
.coach-hero{position:relative;min-height:clamp(400px,62vh,620px);display:flex;align-items:flex-end;
  overflow:hidden;background:var(--obsidian)}
.coach-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 64%;
  opacity:.62;filter:grayscale(.06) contrast(1.03)}
.coach-hero:after{content:'';position:absolute;inset:0;
  background:linear-gradient(to top,var(--obsidian) 3%,rgba(20,16,12,.42) 48%,rgba(20,16,12,.62))}
.coach-hero .wrap{position:relative;z-index:2;padding-bottom:clamp(32px,6vw,62px)}
.coach-hero h1{font-family:var(--display);font-size:clamp(34px,7vw,68px);line-height:1.05;margin-bottom:14px}
.coach-hero .eyebrow{margin-bottom:14px}
.coach-hero .lede{max-width:56ch;color:#CFC7B6;font-size:clamp(15px,2vw,18px);line-height:1.7}

.bio{display:grid;grid-template-columns:220px 1fr;gap:clamp(22px,4vw,54px);align-items:start}
@media(max-width:760px){.bio{grid-template-columns:1fr;gap:20px}}
.bio-k{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--gilt)}
.bio-k .bn{display:block;font-family:var(--display);font-size:clamp(22px,3.4vw,30px);
  letter-spacing:.01em;text-transform:none;color:var(--marble);margin-top:10px}
.bio-k .br{display:block;margin-top:6px;font-size:11px;letter-spacing:.14em;color:var(--stone);text-transform:uppercase}

/* the placeholder Theo fills in himself */
.draft{border:1px dashed var(--bronze);border-radius:3px;padding:clamp(20px,4vw,32px);background:var(--surface)}
.draft-h{display:flex;align-items:center;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.draft-h b{font-family:var(--display);font-size:16px;color:var(--gilt)}
.draft-h span{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#120E08;
  background:var(--bronze);padding:3px 8px;border-radius:2px;font-weight:700}
.draft p{color:var(--stone);font-size:14px;line-height:1.75;margin-bottom:16px}
.slot{border-bottom:1px solid var(--hair-2);height:15px;margin-bottom:13px}
.slot.s2{width:88%}.slot.s3{width:72%}
.draft .hint{margin:20px 0 0;padding-top:16px;border-top:1px solid var(--hair);
  font-size:12.5px;color:var(--stone);font-style:italic;line-height:1.65}

/* the bio itself */
.bio-t p{color:var(--stone);line-height:1.8;font-size:15px;margin-bottom:17px}
.bio-t p b{color:var(--marble);font-weight:600}
.bio-t .lede{font-family:var(--display);font-size:clamp(17px,2.6vw,21px);line-height:1.55;
  color:var(--marble);margin-bottom:22px}
.bio-t .signoff{font-family:var(--display);font-size:clamp(17px,2.7vw,23px);line-height:1.45;
  color:var(--gilt);margin:26px 0 0;padding-top:22px;border-top:1px solid var(--hair)}
.disc{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:24px 0 0;padding:0}
.disc li{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);
  border:1px solid var(--hair);border-radius:2px;padding:5px 11px}

/* media mosaic */
.mosaic{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(10px,1.8vw,20px)}
@media(max-width:760px){.mosaic{grid-template-columns:repeat(2,1fr)}}
@media(max-width:430px){.mosaic{grid-template-columns:1fr}}
.mtile{position:relative;width:100%;aspect-ratio:9/16;border-radius:3px;overflow:hidden;
  background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair);margin:0}
.mtile img,.mtile video{width:100%;height:100%;object-fit:cover;display:block}
.mtile:after{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgba(20,16,12,.94) 2%,rgba(20,16,12,.72) 16%,transparent 46%)}
.mtile figcaption{position:absolute;z-index:3;left:16px;right:16px;bottom:15px;
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--marble);
  text-shadow:0 1px 10px rgba(0,0,0,.8)}
.mtile figcaption b{display:block;font-family:var(--display);font-size:14px;letter-spacing:.02em;
  text-transform:none;color:var(--gilt);margin-bottom:3px}
.mtile .vpip{position:absolute;z-index:3;top:12px;left:12px;width:9px;height:9px;border-radius:50%;
  background:var(--gilt);box-shadow:0 0 0 4px rgba(214,177,95,.18)}

.qmark{max-width:34ch;margin:clamp(38px,7vw,72px) auto 0;text-align:center}
.qmark p{font-family:var(--display);font-size:clamp(19px,3.4vw,31px);line-height:1.4;color:var(--marble)}
.qmark small{display:block;margin-top:16px;font-size:10.5px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--gilt)}

/* ── media gallery ── */
.medhead{display:flex;align-items:center;gap:10px;margin:0 0 12px}
.medhead .mh-t{flex:1;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}
.upbtn{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:8px;
  background:var(--bronze);color:#120E08;border:0;border-radius:3px;padding:0 14px;min-height:40px;
  font:inherit;font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;cursor:pointer}
.upbtn input{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:200px}
.upbtn svg{width:15px;height:15px}
.upbtn[disabled]{opacity:.55}
.medgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media(min-width:640px){.medgrid{grid-template-columns:repeat(5,minmax(0,1fr))}}
.medtile{position:relative;aspect-ratio:1;border-radius:3px;overflow:hidden;background:var(--surface);
  box-shadow:inset 0 0 0 1px var(--hair);cursor:pointer;padding:0;border:0}
.medtile img,.medtile video{width:100%;height:100%;object-fit:cover;display:block}
.medtile .vp{position:absolute;right:6px;top:6px;width:20px;height:20px;border-radius:50%;
  background:rgba(20,16,12,.72);display:flex;align-items:center;justify-content:center}
.medtile .vp:after{content:'';border-left:6px solid var(--marble);border-top:4px solid transparent;
  border-bottom:4px solid transparent;margin-left:2px}
.medtile .md{position:absolute;left:0;right:0;bottom:0;padding:14px 6px 5px;font-size:9.5px;
  letter-spacing:.06em;color:var(--marble);text-align:left;
  background:linear-gradient(to top,rgba(20,16,12,.9),transparent)}
.medempty{border:1px dashed var(--hair);border-radius:3px;padding:22px 18px;text-align:center;
  color:var(--stone);font-size:13px;line-height:1.6}
.upbar{height:3px;background:var(--hair);border-radius:2px;overflow:hidden;margin-top:10px;display:none}
.upbar.on{display:block}
.upbar i{display:block;height:100%;width:0;background:var(--gilt);transition:width .2s}

/* full-screen viewer */
.medview{position:fixed;inset:0;z-index:70;background:rgba(10,8,5,.97);display:flex;
  flex-direction:column;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
.medview.on{opacity:1;visibility:visible}
.medview .mv-h{display:flex;align-items:center;gap:12px;padding:14px 16px;
  padding-top:calc(14px + env(safe-area-inset-top))}
.medview .mv-h span{flex:1;font-size:12px;color:var(--stone)}
.medview .mv-h button{background:transparent;border:1px solid var(--hair);color:var(--marble);
  min-width:40px;height:38px;border-radius:2px;font:inherit;font-size:12px;cursor:pointer;padding:0 10px}
.medview .mv-b{flex:1;display:flex;align-items:center;justify-content:center;padding:0 12px 16px;min-height:0}
.medview img,.medview video{max-width:100%;max-height:100%;object-fit:contain;border-radius:3px}

/* ── height + BMI ── */
.bmirow{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-top:6px;
  padding-top:12px;border-top:1px solid var(--hair-2)}
.bmirow b{font-family:var(--display);font-size:20px;color:var(--gilt)}
.bmirow span{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--stone)}
.bmirow small{flex-basis:100%;font-size:11.5px;color:var(--stone);line-height:1.55;font-style:italic}

/* ── meal detection ── */
.detbox{padding:12px 18px 4px;border-bottom:1px solid var(--hair-2)}
.detbox textarea{width:100%;background:var(--surface);border:1px solid var(--hair);border-radius:3px;
  color:var(--marble);font:inherit;font-size:16px;padding:11px 12px;resize:none;min-height:56px;line-height:1.45}
.detbox textarea:focus{outline:none;border-color:var(--gilt)}
.detbox .dh{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gilt);margin-bottom:7px}
.detbox .dhint{font-size:11.5px;color:var(--stone);margin:7px 0 0;line-height:1.5}
.detrow{display:flex;align-items:center;gap:9px;padding:11px 0;border-bottom:1px solid var(--hair-2)}
.detrow .dn{flex:1;min-width:0}
.detrow .dn b{display:block;font-size:14px}
.detrow .dn small{font-size:11px;color:var(--stone)}
.detrow .dg{display:flex;align-items:center;gap:5px;flex:none}
.detrow .dg input{width:62px;background:var(--surface);border:1px solid var(--hair);border-radius:3px;
  color:var(--marble);font:inherit;font-size:16px;text-align:center;padding:7px 4px}
.detrow .dg span{font-size:11px;color:var(--stone)}
.detrow .dx{background:transparent;border:0;color:var(--stone);font-size:19px;cursor:pointer;padding:0 4px;flex:none}
.detrow.guess{background:rgba(214,177,95,.05)}
.detrow .flag{display:inline-block;margin-left:6px;font-size:9px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--gilt);border:1px solid var(--hair);border-radius:2px;padding:0 5px;vertical-align:1px}
.detsum{display:flex;justify-content:space-between;align-items:center;padding:13px 0 4px;
  font-size:12.5px;color:var(--stone)}
.detsum b{color:var(--marble);font-size:14px}

/* ── reps in reserve, per set ── */
.setrow{grid-template-columns:18px 1fr 1fr 40px 40px !important}
.rirbtn{background:transparent;border:1px solid var(--hair);color:var(--stone);border-radius:3px;
  min-height:38px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:0;
  font-variant-numeric:tabular-nums}
.rirbtn.set{border-color:var(--bronze);color:var(--gilt)}
.rirbtn.hot{border-color:var(--porphyry,#C2543F);color:var(--porphyry,#C2543F)}
.rirpick{grid-column:1/-1;display:flex;gap:5px;padding:9px 0 3px;flex-wrap:wrap;align-items:center}
.rirpick .rl{flex-basis:100%;font-size:10px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--stone);margin-bottom:2px}
.rirpick button{flex:1;min-width:38px;background:var(--surface);border:1px solid var(--hair);
  color:var(--marble);border-radius:3px;min-height:38px;font:inherit;font-size:13px;cursor:pointer}
.rirpick button.on{background:var(--bronze);border-color:var(--bronze);color:#120E08;font-weight:700}
.rirpick button[data-r="0"]{border-color:var(--porphyry,#C2543F)}
.rirpick .rx{flex:none;min-width:34px;color:var(--stone);font-size:16px}
.rirnote{grid-column:1/-1;font-size:11px;color:var(--stone);line-height:1.5;padding:0 0 6px}
.wex .rirsum{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gilt);
  margin-left:8px}
.effort{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--hair);
  border-radius:4px;background:var(--surface);padding:14px 16px;margin-top:14px}
.effort .ev{font-family:var(--display);font-size:22px;color:var(--gilt)}
.effort .ek{font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--stone);flex:1}
.effort small{flex-basis:100%;font-size:11.5px;color:var(--stone);line-height:1.55}

/* ── the expenditure card ── */
.tdee{border:1px solid var(--bronze);border-radius:4px;background:var(--raised);
  padding:17px 18px;margin-bottom:16px}
.tdee.cold{border-color:var(--hair);background:var(--surface)}
.tdee-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.tdee-h b{font-family:var(--display);font-size:16.5px;color:var(--gilt)}
.tdee.cold .tdee-h b{color:var(--marble)}
.tdee-h .conf{font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--stone);
  border:1px solid var(--hair);border-radius:2px;padding:1.5px 6px}
.tdee-h .conf.hi{color:var(--gilt);border-color:var(--bronze)}
.tdee-big{font-family:var(--display);font-size:34px;color:var(--marble);line-height:1.1;
  font-variant-numeric:tabular-nums;margin:8px 0 2px}
.tdee-big small{font-size:13px;color:var(--stone);font-family:var(--body);margin-left:6px}
.tdee-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:12px;
  margin:14px 0 0;padding-top:13px;border-top:1px solid var(--hair)}
.tdee-row div{min-width:0}
.tdee-row span{display:block;font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--stone)}
.tdee-row b{font-size:15px;color:var(--marble);font-variant-numeric:tabular-nums}
.tdee p.read{margin:12px 0 0;font-size:13px;color:var(--stone);line-height:1.65}
.tdee .apply{margin-top:14px;width:100%}
.tdee .tgt{margin-top:12px;padding-top:12px;border-top:1px dashed var(--hair-2);font-size:13px;
  color:#DCD5C4;line-height:1.6}
.tdee .tgt b{color:var(--gilt)}

/* exercise actions */
.wex-acts{display:flex;gap:7px;flex-wrap:wrap}
.wex-acts button{flex:1 1 auto;min-width:66px}
.wex-acts button.warn{border-color:rgba(194,84,63,.5);color:var(--porphyry,#C2543F)}
.addex{width:100%;margin-top:12px;background:transparent;border:1px dashed var(--bronze);
  color:var(--gilt);border-radius:4px;min-height:50px;font:inherit;font-size:13.5px;
  letter-spacing:.06em;cursor:pointer}
.addex:active{transform:scale(.98)}

/* exercise picker */
.expick{position:fixed;inset:0;z-index:64;background:rgba(12,9,6,.72);
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  opacity:0;visibility:hidden;transition:opacity .24s,visibility .24s}
.expick.on{opacity:1;visibility:visible}
.expick-b{position:absolute;left:0;right:0;bottom:0;max-height:86vh;display:flex;flex-direction:column;
  background:var(--obsidian);border-top:1px solid var(--bronze);border-radius:12px 12px 0 0;
  transform:translateY(14px);transition:transform .28s cubic-bezier(.22,1,.36,1);
  padding-bottom:env(safe-area-inset-bottom)}
.expick.on .expick-b{transform:none}
.expick-h{display:flex;align-items:center;gap:12px;padding:16px 18px 12px;border-bottom:1px solid var(--hair)}
.expick-h b{font-family:var(--display);font-size:16.5px;flex:1}
.expick-h button{background:transparent;border:1px solid var(--hair);color:var(--stone);
  width:38px;height:38px;border-radius:3px;font-size:17px;cursor:pointer;flex:none}
.expick-s{padding:12px 18px}
.expick-s input{width:100%;background:var(--surface);border:1px solid var(--hair);border-radius:4px;
  color:var(--marble);font:inherit;font-size:16px;padding:13px 14px}
.expick-s input:focus{outline:none;border-color:var(--gilt)}
.expick-l{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 18px 18px;
  overscroll-behavior-y:contain}
.exgrp{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--gilt);
  margin:16px 0 8px}
.exrow2{display:block;width:100%;text-align:left;background:var(--surface);border:1px solid var(--hair);
  color:var(--marble);border-radius:3px;padding:14px 15px;font:inherit;font-size:14.5px;
  margin-bottom:7px;cursor:pointer}
.exrow2:active{transform:scale(.99)}
.exrow2 small{display:block;font-size:11px;color:var(--stone);margin-top:3px}
.exnew{border-style:dashed;border-color:var(--bronze);color:var(--gilt)}

/* session media, on the workout screen */
.medsess{margin-top:16px}

/* the coach app reuses the client app's chrome */
.coachwrap{padding-bottom:96px}
.cpane{display:none}
.cpane.on{display:block;animation:panein .3s cubic-bezier(.22,1,.36,1) both}
@media(prefers-reduced-motion:reduce){.cpane.on{animation:none}}

/* today */
.cday-card{border:1px solid var(--hair);border-radius:4px;background:var(--surface);
  padding:16px 17px;margin-bottom:12px;display:flex;align-items:center;gap:14px}
.cday-card.now{border-color:var(--bronze);background:var(--raised)}
.cday-card .who{flex:1;min-width:0}
.cday-card .who b{font-family:var(--display);font-size:17px;display:block}
.cday-card .who small{font-size:11.5px;color:var(--stone)}
.cday-card .tag{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gilt);
  border:1px solid var(--hair);border-radius:2px;padding:3px 8px;flex:none}
.cstrip{display:grid;grid-template-columns:repeat(auto-fit,minmax(84px,1fr));gap:10px;margin-bottom:20px}
.cstrip div{border:1px solid var(--hair);border-radius:4px;background:var(--surface);padding:13px 12px;text-align:center}
.cstrip b{display:block;font-family:var(--display);font-size:24px;color:var(--gilt);line-height:1.1}
.cstrip span{display:block;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--stone);margin-top:5px}

/* his own training */
.mine{border:1px solid var(--bronze);border-radius:4px;background:var(--surface);padding:13px 14px}
.mine-h{display:flex;align-items:center;gap:12px}
.mine-h b{display:block;font-size:14.5px;font-family:var(--display)}
.mine-h small{display:block;font-size:11.5px;color:var(--stone);margin-top:3px;line-height:1.45}
.mine-h > div{flex:1;min-width:0}
.minego{flex:none;background:var(--bronze);border:0;color:#120E08;border-radius:3px;min-height:40px;
  padding:0 16px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.minego2{display:flex;gap:6px;flex:none}
.minego.plus{padding:0 13px;font-size:16px;background:transparent;border:1px dashed var(--bronze);
  color:var(--gilt)}
.mine-l{margin-top:11px;border-top:1px solid var(--hair);padding-top:7px}
.mine-r{display:flex;align-items:baseline;gap:10px;width:100%;background:transparent;border:0;
  border-bottom:1px solid var(--hair-2);color:var(--marble);font:inherit;text-align:left;
  padding:8px 0;cursor:pointer}
.mine-r:last-child{border-bottom:0}
.mine-r .d{font-size:11.5px;color:var(--stone);min-width:74px}
.mine-r .f{flex:1;min-width:0;font-size:13px}
.mine-r .v{font-size:11.5px;color:var(--gilt);white-space:nowrap;font-variant-numeric:tabular-nums}

/* the week ahead */
.wstrip{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-bottom:14px}
.wstrip-d{background:var(--surface);border:1px solid var(--hair);border-radius:4px;padding:8px 2px;
  cursor:pointer;font:inherit;color:var(--marble);text-align:center;min-height:60px}
.wstrip-d.on{border-color:var(--bronze);background:var(--raised)}
.wstrip-d .wd{display:block;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone)}
.wstrip-d .wn{display:block;font-family:var(--display);font-size:15px;margin:2px 0 3px}
.wstrip-d .wc{display:block;font-size:9.5px;color:var(--gilt);white-space:nowrap}

/* the day's roster */
.cdaylist{margin-top:16px}
.cdh{display:flex;align-items:baseline;gap:10px;border-bottom:1px solid var(--hair);
  padding-bottom:9px;margin-bottom:11px}
.cdh b{flex:1;font-family:var(--display);font-size:16px}
.cdh span{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gilt)}
.cempty{color:var(--stone);font-size:13px;line-height:1.6;padding:8px 0}
.crow{display:flex;align-items:center;gap:9px;border:1px solid var(--hair);border-radius:4px;
  background:var(--surface);padding:10px 11px;margin-bottom:8px}
.crow.done{border-color:var(--bronze-deep)}
.crow .tm{flex:none;width:54px;min-height:46px;border:1px solid var(--hair);border-radius:3px;
  background:var(--raised);color:var(--gilt);font:inherit;font-size:14px;cursor:pointer;padding:0;
  font-variant-numeric:tabular-nums;line-height:1.15}
.crow .tm i{font-style:normal;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--stone)}
.crow .cw{flex:1;min-width:0}
.crow .cw b{display:block;font-size:14.5px;line-height:1.25}
.crow .cw .pl{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);
  border:1px solid var(--hair);border-radius:99px;padding:1px 6px;margin-left:7px;font-weight:400;
  vertical-align:middle}
.crow .cw small{display:block;font-size:11px;color:var(--stone);margin-top:2px;line-height:1.45}
.crow .cw em{font-style:normal;color:var(--gilt)}
.crow .go{flex:none;background:var(--bronze);border:0;color:#120E08;border-radius:3px;
  min-height:38px;padding:0 11px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.crow .go.alt{background:transparent;border:1px solid var(--hair);color:var(--stone);font-weight:400}

/* calendar */
.ccal{border:1px solid var(--hair);border-radius:4px;background:var(--surface);padding:14px}
.ccal-h{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.ccal-h b{flex:1;font-family:var(--display);font-size:16px}
.ccal-h button{background:transparent;border:1px solid var(--hair);color:var(--stone);
  width:36px;height:36px;border-radius:3px;cursor:pointer;font-size:15px}
.ccal-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.ccal-g .dow{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);
  text-align:center;padding-bottom:5px}
.ccal-d{min-width:0;min-height:54px;border:1px solid var(--hair-2);border-radius:3px;padding:4px;
  display:flex;flex-direction:column;gap:2px;font-size:10px;overflow:hidden}
.ccal-d .pips{display:flex;flex-wrap:wrap;gap:2px;align-content:flex-start;flex:1;min-height:0}
.ccal-d.pad{border:0}
.ccal-d.today{border-color:var(--gilt)}
.ccal-d .dn{color:var(--stone);font-variant-numeric:tabular-nums}
.ccal-d i{display:block;height:3px;border-radius:2px;background:var(--bronze);font-style:normal}
.ccal-d.has{cursor:pointer}
.ccal-d.sel{border-color:var(--gilt)}
.ccal-d .pip{display:block;width:13px;height:13px;line-height:13px;border-radius:50%;
  background:var(--bronze-deep,rgba(168,123,60,.25));color:var(--gilt);font-size:8px;
  text-align:center;flex:none}
.ccal-d .pip.on{background:var(--bronze);color:#120E08;font-weight:700}
.ccal-d .tick{display:block;font-size:8.5px;color:var(--gilt);margin-top:1px}
.ccal-d .more{color:var(--gilt);font-size:8.5px}

/* business */
.bizsw{display:flex;gap:8px;margin-bottom:16px}
.bizsw button{flex:1;background:var(--surface);border:1px solid var(--hair);color:var(--stone);
  border-radius:3px;min-height:42px;font:inherit;font-size:12.5px;letter-spacing:.08em;
  text-transform:uppercase;cursor:pointer}
.bizsw button.on{background:var(--bronze);border-color:var(--bronze);color:#120E08;font-weight:700}
.inv{border:1px solid var(--hair);border-radius:4px;background:var(--surface);padding:15px 16px;margin-bottom:11px}
.inv-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.inv-h b{font-family:var(--display);font-size:16px;flex:1}
.inv-h .amt{font-family:var(--display);font-size:18px;color:var(--gilt);font-variant-numeric:tabular-nums}
.inv .meta{font-size:11.5px;color:var(--stone);margin-top:5px}
.inv .pill{font-size:9px;letter-spacing:.14em;text-transform:uppercase;padding:2px 7px;border-radius:2px;
  border:1px solid var(--hair);color:var(--stone)}
.inv .pill.paid{border-color:var(--bronze);color:var(--gilt)}
.inv-acts{display:flex;gap:7px;margin-top:12px}
.inv-acts button{flex:1;background:transparent;border:1px solid var(--hair);color:var(--stone);
  border-radius:3px;min-height:40px;font:inherit;font-size:12px;cursor:pointer}
.ledrow{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--hair-2)}
.ledrow .lc{flex:1;min-width:0}
.ledrow .lc b{font-size:14px;display:block}
.ledrow .lc small{font-size:11px;color:var(--stone)}
.ledrow .lv{font-family:var(--display);font-size:16px;font-variant-numeric:tabular-nums}
.ledrow .lv.in{color:var(--gilt)}
.ledrow .lv.out{color:var(--porphyry,#C2543F)}
.bizform{border:1px solid var(--hair);border-radius:4px;background:var(--raised);padding:16px;margin-bottom:18px}
.bizform label{display:block;font-size:10px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--stone);margin:11px 0 5px}
.bizform input,.bizform select,.bizform textarea{width:100%;background:var(--surface);
  border:1px solid var(--hair);border-radius:3px;color:var(--marble);font:inherit;font-size:16px;padding:12px}
.bizform input:focus,.bizform select:focus,.bizform textarea:focus{outline:none;border-color:var(--gilt)}
.bizform .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.bizform .btn{margin-top:16px;width:100%}

.calday{cursor:pointer}
.dayv{position:fixed;inset:0;z-index:63;background:var(--obsidian);display:flex;flex-direction:column;
  opacity:0;visibility:hidden;transition:opacity .26s,visibility .26s}
.dayv.on{opacity:1;visibility:visible}
.dayv-h{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--hair);
  padding-top:calc(14px + env(safe-area-inset-top))}
.dayv-h .nav{background:transparent;border:1px solid var(--hair);color:var(--stone);width:38px;height:38px;
  border-radius:3px;cursor:pointer;font-size:15px;flex:none}
.dayv-h .tt{flex:1;min-width:0;text-align:center}
.dayv-h .tt b{display:block;font-family:var(--display);font-size:16.5px}
.dayv-h .tt small{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gilt)}
.dayv-b{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;
  padding:18px 16px calc(26px + env(safe-area-inset-bottom))}
.dayv-b .kv{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.dayv-b .kv div{flex:1;min-width:78px;border:1px solid var(--hair);border-radius:4px;
  background:var(--surface);padding:11px 12px;text-align:center}
.dayv-b .kv b{display:block;font-family:var(--display);font-size:19px;color:var(--gilt)}
.dayv-b .kv span{display:block;font-size:9px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--stone);margin-top:4px}
.dex{border:1px solid var(--hair);border-radius:4px;background:var(--surface);padding:13px 15px;margin-bottom:10px}
.dex b{font-size:14.5px;display:block;margin-bottom:5px}
.dex .sets{font-size:13px;color:var(--gilt);font-variant-numeric:tabular-nums;line-height:1.7}
.dex .nt{font-size:11.5px;color:var(--stone);margin-top:6px;line-height:1.5}
.dayv-empty{text-align:center;color:var(--stone);font-size:13.5px;line-height:1.7;padding:40px 20px}
.dayv-tag{display:inline-block;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  padding:3px 9px;border-radius:2px;border:1px solid var(--hair);color:var(--stone);margin-bottom:14px}
.dayv-tag.done{border-color:var(--bronze);color:var(--gilt)}
.dayv-tag.ahead{border-color:var(--bronze);color:var(--gilt)}
.dvlog{margin-top:20px;border-top:1px solid var(--hair);padding-top:16px}
.dvlog-h{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--gilt);margin-bottom:12px}

.clog{position:fixed;inset:0;z-index:64;background:var(--obsidian);display:flex;flex-direction:column;
  opacity:0;visibility:hidden;transition:opacity .24s,visibility .24s}
.clog.on{opacity:1;visibility:visible}
.clog-h{display:flex;align-items:center;gap:9px;padding:12px 14px;border-bottom:1px solid var(--hair);
  padding-top:calc(12px + env(safe-area-inset-top))}
.clog-h .tt{flex:1;min-width:0}
.clog-h .tt b{display:block;font-family:var(--display);font-size:16px;line-height:1.2}
.clog-h .tt small{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gilt)}
.clog-h button{background:transparent;border:1px solid var(--hair);color:var(--stone);min-width:38px;
  height:38px;border-radius:3px;cursor:pointer;font-size:15px;flex:none;padding:0 9px;font-family:inherit}
.clogpip{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);
  white-space:nowrap;flex:none;transition:color .3s}
.clogpip[data-s="saved"]{color:var(--gilt)}
.clogpip[data-s="saving"]{color:var(--stone)}
.clogpip[data-s="offline"]{color:var(--porphyry,#C2543F)}
.clog-h button.save{background:var(--bronze);border-color:var(--bronze);color:#120E08;font-weight:700;
  font-size:12.5px;letter-spacing:.06em}
.clog-b{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;
  padding:14px 14px calc(24px + env(safe-area-inset-bottom))}
.clog-date{display:flex;gap:8px;align-items:center;margin-bottom:14px}
.clog-date input{flex:1;background:var(--surface);border:1px solid var(--hair);border-radius:3px;
  color:var(--marble);font:inherit;font-size:16px;padding:11px}
.clog-date input:focus{outline:none;border-color:var(--gilt)}
.clog-sess{display:flex;gap:6px;margin:-4px 0 14px;flex-wrap:wrap}
.clog-sess .cs{background:var(--surface);border:1px solid var(--hair);color:var(--stone);
  border-radius:99px;min-height:34px;padding:0 13px;font:inherit;font-size:12px;cursor:pointer;
  font-variant-numeric:tabular-nums}
.clog-sess .cs.on{border-color:var(--bronze);color:var(--gilt);font-weight:600;
  background:rgba(168,123,60,.10)}
.clog-sess .cs.add{min-width:34px;padding:0;color:var(--gilt);border-style:dashed;font-size:15px}
.cex-card{border:1px solid var(--hair);border-radius:4px;background:var(--surface);margin-bottom:11px;
  overflow:hidden}
.cex-t{display:flex;align-items:center;gap:8px;padding:11px 13px;border-bottom:1px solid var(--hair-2)}
.cex-t b{flex:1;min-width:0;font-size:14.5px}
.cex-t button{background:transparent;border:1px solid var(--hair);color:var(--stone);width:32px;height:32px;
  border-radius:3px;cursor:pointer;font-size:14px;flex:none;padding:0}
.cex-last{font-size:11px;color:var(--stone);padding:0 13px 9px}
.cex-rng{display:flex;align-items:center;gap:8px;padding:8px 13px 4px}
.cex-rng span{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--stone)}
.cex-rng .rngset{background:transparent;border:1px dashed var(--hair);color:var(--stone);
  border-radius:99px;padding:4px 11px;font:inherit;font-size:12px;cursor:pointer;
  font-variant-numeric:tabular-nums;width:auto;height:auto}
.cex-rng .rngset.on{border-style:solid;border-color:var(--bronze);color:var(--gilt);font-weight:600;
  background:rgba(168,123,60,.10)}
.cex-rng .rngset.ghost{min-width:34px}
.cex-rng{flex-wrap:wrap}
.cex-rng em{font-style:normal;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone)}
.csrow{display:grid;grid-template-columns:16px 1fr 1fr 40px 38px 32px;gap:5px;align-items:center;
  padding:6px 10px;border-bottom:1px solid var(--hair-2)}
.csrow:last-child{border-bottom:0}
.csrow.hd span{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);text-align:center}
.csrow .n{font-size:11px;color:var(--stone);text-align:center;font-variant-numeric:tabular-nums}
.csrow input{width:100%;background:var(--raised);border:1px solid var(--hair);border-radius:3px;
  color:var(--marble);font:inherit;font-size:16px;padding:9px 4px;text-align:center;min-width:0}
.csrow input:focus{outline:none;border-color:var(--gilt)}
.csrow .tick,.csrow .rir,.csrow .del{background:transparent;border:1px solid var(--hair);color:var(--stone);
  border-radius:3px;height:38px;cursor:pointer;font-size:12px;padding:0;font-family:inherit}
.csrow .tick.on{background:var(--bronze);border-color:var(--bronze);color:#120E08}
.csrow .rir.on{border-color:var(--gilt);color:var(--gilt);font-weight:700}
.csrow.done input{border-color:var(--bronze-deep)}
.csrow.pre input{opacity:.45}
.csrow.pre .n{opacity:.45}
.cex-t .allbtn{width:auto;padding:0 9px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
  border-color:var(--bronze-deep);color:var(--gilt)}
.cex-acts{display:flex;gap:6px;padding:9px 10px}
.cex-acts button{flex:1;background:transparent;border:1px dashed var(--hair);color:var(--stone);
  border-radius:3px;min-height:36px;font:inherit;font-size:11.5px;cursor:pointer}
.clog-add{width:100%;background:transparent;border:1px dashed var(--bronze);color:var(--gilt);
  border-radius:4px;min-height:46px;font:inherit;font-size:13px;cursor:pointer;margin-bottom:12px}
.clog-note{font-size:11.5px;color:var(--stone);line-height:1.6;margin-top:12px}
.crep{border:1px solid var(--bronze-deep);border-radius:4px;background:var(--surface);
  padding:12px 13px;margin-bottom:12px}
.crep-h{font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gilt);margin-bottom:8px}
.crep-main{width:100%;background:var(--bronze);border:0;color:#120E08;border-radius:3px;min-height:44px;
  font:inherit;font-size:13.5px;font-weight:700;cursor:pointer;padding:0 12px;text-align:left}
.crep-main small{display:block;font-weight:400;font-size:11px;opacity:.75;margin-top:2px}
.crep-more{width:100%;background:transparent;border:1px dashed var(--hair);color:var(--stone);
  border-radius:3px;min-height:38px;font:inherit;font-size:11.5px;cursor:pointer;margin-top:7px}
.crep-list{margin-top:9px;border-top:1px solid var(--hair-2);padding-top:7px}
.crep-list button{display:block;width:100%;text-align:left;background:transparent;border:0;
  border-bottom:1px solid var(--hair-2);color:var(--marble);font:inherit;font-size:12.5px;
  padding:10px 2px;cursor:pointer;line-height:1.5}
.crep-list button:last-child{border-bottom:0}
.crep-list button b{display:block;font-size:12.5px;color:var(--gilt);font-weight:600}
.crep-list button span{color:var(--stone);font-size:11.5px}
.exlib .row{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--hair-2)}
.exlib .row .c{flex:1;min-width:0}
.exlib .row b{font-size:14px;display:block}
.exlib .row small{font-size:11px;color:var(--stone)}

.scan{border:1px solid var(--hair);border-radius:4px;background:var(--raised);padding:13px 14px;margin-bottom:14px}
.scan-h{display:flex;gap:7px;margin-bottom:10px}
.scan-h button{flex:1;background:var(--surface);border:1px solid var(--hair);color:var(--stone);
  border-radius:3px;min-height:40px;font:inherit;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;cursor:pointer}
.scan-h button.on{background:var(--bronze);border-color:var(--bronze);color:#120E08;font-weight:700}
.scan input{width:100%;background:var(--surface);border:1px solid var(--hair);border-radius:3px;
  color:var(--marble);font:inherit;font-size:16px;padding:12px}
.scan input:focus{outline:none;border-color:var(--gilt)}
.scan .hint{font-size:11.5px;color:var(--stone);margin-top:8px;line-height:1.55}
.scan-res{margin-top:11px;max-height:44vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  overscroll-behavior-y:contain}
.scan-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--hair-2);
  cursor:pointer}
.scan-row .c{flex:1;min-width:0}
.scan-row b{display:block;font-size:13.5px;line-height:1.35}
.scan-row small{font-size:11px;color:var(--stone);font-variant-numeric:tabular-nums}
.scan-row .add{flex:none;border:1px solid var(--bronze);color:var(--gilt);background:transparent;
  border-radius:3px;height:34px;padding:0 11px;font:inherit;font-size:12px;cursor:pointer}
.scan-pick{border-top:1px solid var(--hair);margin-top:11px;padding-top:12px}
.scan-pick .nm{font-family:var(--display);font-size:15px;margin-bottom:9px}
.scan-pick .g{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:9px}
.scan-pick label{display:block;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--stone);margin-bottom:4px}
.scan-tot{display:flex;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--gilt);
  font-variant-numeric:tabular-nums;margin-bottom:10px}
.scan-tot b{color:var(--marble)}
.scan-src{font-size:10.5px;color:var(--stone);margin-top:8px}

/* ── the range chip on an exercise ── */
.rng{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid var(--hair);
  color:var(--gilt);border-radius:99px;padding:3px 9px;font:inherit;font-size:11px;
  font-variant-numeric:tabular-nums;cursor:pointer;white-space:nowrap;flex:none;margin-top:5px}
.rng i{font-style:normal;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--stone)}
.rng b{font-weight:600}
.rng .q{width:13px;height:13px;border-radius:50%;border:1px solid var(--hair);color:var(--stone);
  font-size:9px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.wex-h .wn{display:flex;flex-direction:column;align-items:flex-start}
.rngrow{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}
.rngrow .rng{margin-top:0;color:var(--stone);border-color:var(--hair)}
.rngrow .rng b{font-weight:500}
.rngrow .rng.on{color:var(--gilt);border-color:var(--bronze);background:rgba(168,123,60,.10)}
.rngrow .rng.on b{font-weight:700}
.rngrow .rng.q2{width:26px;justify-content:center;padding:3px 0;color:var(--stone)}

/* the standing instruction, on every exercise that has a range */
.rngc{display:flex;align-items:center;gap:8px;font-size:11.5px;line-height:1.45;color:var(--stone);
  border-top:1px dashed var(--hair);padding:8px 10px 0;margin-top:2px}
.rngc b{color:var(--gilt)}

/* the weight the app is telling them to use */
.rngc.aim{align-items:flex-start;gap:10px}
.rngc .kg{font-family:var(--display);font-size:17px;color:var(--gilt);flex:none;line-height:1.15;
  font-variant-numeric:tabular-nums;padding-top:1px}
.rngc.aim.up .kg{color:var(--gilt)}
.rngc .tx{flex:1;min-width:0}
.rngc .tx i{font-style:normal;display:block;color:var(--stone);opacity:.8;font-size:11px;margin-top:3px}

/* the verdict line, once the set is in */
.rngv{font-size:11.5px;line-height:1.5;padding:8px 10px;border-radius:3px;margin:6px 10px 0;
  border:1px solid var(--hair);background:var(--raised);color:var(--stone)}
.rngv b{color:var(--marble)}
.rngv.up{border-color:var(--bronze);color:var(--gilt)}
.rngv.up b{color:var(--gilt)}
.rngv.down{border-color:var(--porphyry,#C2543F);color:var(--porphyry,#C2543F)}
.rngv.down b{color:var(--porphyry,#C2543F)}
.rngv.short{border-color:var(--hair)}

/* the weight step chips (all three shown; the active one is lit) */
.stepchip.on{border-color:var(--gilt);font-weight:700;background:rgba(255,255,255,.05)}
.stepunit{font-size:10.5px;letter-spacing:.08em;color:var(--stone);align-self:center;margin-left:2px}
.stepchip{background:transparent;border:1px solid var(--hair);color:var(--gilt);border-radius:3px;
  min-height:36px;font:inherit;font-size:11.5px;cursor:pointer;padding:0 10px;flex:none;
  font-variant-numeric:tabular-nums;white-space:nowrap}

/* ── the explainer sheet ── */
.rsheet{position:fixed;inset:0;z-index:70;background:rgba(8,7,5,.72);display:flex;
  align-items:flex-end;justify-content:center;opacity:0;visibility:hidden;
  transition:opacity .24s,visibility .24s}
.rsheet.on{opacity:1;visibility:visible}
.rsheet-in{width:100%;max-width:560px;max-height:88vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  background:var(--obsidian);border:1px solid var(--hair);border-bottom:0;
  border-radius:12px 12px 0 0;padding:20px 18px calc(24px + env(safe-area-inset-bottom));
  transform:translateY(18px);transition:transform .26s}
.rsheet.on .rsheet-in{transform:none}
.rsheet-h{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}
.rsheet-h b{flex:1;font-family:var(--display);font-size:19px;line-height:1.25}
.rsheet-h button{background:transparent;border:1px solid var(--hair);color:var(--stone);width:34px;
  height:34px;border-radius:3px;cursor:pointer;font-size:15px;flex:none;padding:0;font-family:inherit}
.rsheet p{font-size:13.5px;line-height:1.65;color:var(--stone);margin-bottom:12px}
.rsheet p b{color:var(--marble)}
.rs-k{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--gilt);margin:18px 0 9px}
.rs-law{border:1px solid var(--bronze);border-radius:4px;background:rgba(168,123,60,.10);
  padding:14px 15px;margin-bottom:6px}
.rs-law .t{font-family:var(--display);font-size:16px;color:var(--gilt);margin-bottom:6px;line-height:1.3}
.rs-law p{font-size:13px;margin:0}
.rs-band{display:flex;flex-direction:column;gap:8px}
.rs-b{display:flex;gap:11px;align-items:flex-start;border:1px solid var(--hair);border-radius:4px;
  background:var(--surface);padding:11px 13px}
.rs-b .n{font-family:var(--display);font-size:15px;color:var(--gilt);flex:none;min-width:58px;
  font-variant-numeric:tabular-nums}
.rs-b .d{flex:1;min-width:0}
.rs-b .d b{display:block;font-size:13px;margin-bottom:3px;color:var(--marble)}
.rs-b .d p{font-size:12px;line-height:1.55;margin:0}
.rs-rule{border:1px solid var(--hair);border-radius:4px;background:var(--surface);
  padding:14px 15px;margin-top:10px}
.rs-rule ul{list-style:none}
.rs-rule li{font-size:12.5px;line-height:1.6;color:var(--stone);padding-left:15px;position:relative;
  margin-bottom:8px}
.rs-rule li:last-child{margin-bottom:0}
.rs-rule li:before{content:'';position:absolute;left:0;top:7px;width:5px;height:5px;
  background:var(--bronze);border-radius:50%}
.rs-rule li b{color:var(--marble)}
.rs-warn{font-size:12px;line-height:1.6;color:var(--stone);border-top:1px solid var(--hair);
  padding-top:12px;margin-top:14px}
.rs-warn b{color:var(--marble)}

/* ══ the premium layer ══ */

/* a consistent spring for everything that moves */
:root{--spring:cubic-bezier(.32,.72,.28,1);--springOut:cubic-bezier(.16,1,.3,1)}

/* every pressable thing answers the finger */
button:not(:disabled){transition:transform .12s var(--spring), background-color .18s,
  border-color .18s, color .18s, box-shadow .18s}
button:not(:disabled):active{transform:scale(.965)}
.tabbar button:active,[data-tab]:active{transform:scale(.94)}
.btn-primary:active,.minego:active,.crow .go:active{transform:scale(.97)}

/* cards lift into place instead of appearing */
.wex,.cex-card,.crow,.mine-r,.cday-card,.today,.mealgroup,.mine,.rnote{
  animation:cardin .34s var(--springOut) backwards}
.wex:nth-child(2){animation-delay:.03s}.wex:nth-child(3){animation-delay:.06s}
.wex:nth-child(4){animation-delay:.09s}.wex:nth-child(5){animation-delay:.12s}
.crow:nth-child(2){animation-delay:.03s}.crow:nth-child(3){animation-delay:.06s}
.crow:nth-child(4){animation-delay:.09s}.crow:nth-child(5){animation-delay:.12s}
.crow:nth-child(6){animation-delay:.15s}.crow:nth-child(7){animation-delay:.18s}
@keyframes cardin{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}

/* a logged set glows for a beat */
.setrow.logged{animation:setglow .55s var(--springOut)}
@keyframes setglow{0%{background:rgba(214,177,95,.14)}100%{background:transparent}}
.setdone{transition:transform .14s var(--spring), background-color .18s, border-color .18s,
  color .18s}
.setdone[aria-pressed="true"]{animation:tickpop .3s var(--spring)}
@keyframes tickpop{0%{transform:scale(.8)}55%{transform:scale(1.12)}100%{transform:scale(1)}}

/* sheets rise on the spring, scrims fade */
.sheet-in,.rsheet-in,.expick-b{transition:transform .34s var(--springOut), opacity .26s}
.clog,.dayv{transition:opacity .3s var(--springOut), visibility .3s}
.clog.on .clog-b,.dayv.on .dayv-b{animation:cardin .38s var(--springOut) .04s backwards}

/* the calendar day panel slides under the grid */
.cdaylist{animation:cardin .32s var(--springOut) backwards}
.ccal-d{transition:border-color .18s, background-color .18s, transform .12s var(--spring)}
.ccal-d.has:active{transform:scale(.94)}
.wstrip-d{transition:border-color .18s, background-color .18s, transform .12s var(--spring)}
.wstrip-d:active{transform:scale(.95)}

/* chips settle rather than snap */
.rng,.rngset,.stepchip,.cs{transition:transform .12s var(--spring), border-color .18s,
  color .18s, background-color .18s}
.rng.on,.rngset.on,.stepchip.on,.cs.on{animation:chipin .26s var(--spring)}
@keyframes chipin{0%{transform:scale(.92)}60%{transform:scale(1.05)}100%{transform:scale(1)}}

/* the aim line breathes in after a repaint */
.rngc.aim,.rngv{animation:cardin .3s var(--springOut) backwards}

/* toasts arrive on the spring */
.toast{transition:transform .34s var(--springOut), opacity .3s}

/* rest bar slides, not blinks */
.rest{transition:transform .32s var(--springOut), opacity .28s, visibility .32s}

/* progress rings sweep on load */
.ring circle:last-child{transition:stroke-dashoffset .8s var(--springOut)}

/* headers get a touch of depth over content */
.appbar,.clog-h{box-shadow:0 1px 0 rgba(0,0,0,.35), 0 8px 24px -18px rgba(0,0,0,.8)}

/* smoother momentum everywhere */
.clog-b,.dayv-b,.sheet-l,.rsheet-in{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}

/* skeleton shimmer while the coach roster loads */
#coachLoading{position:relative;overflow:hidden}
#coachLoading:after{content:'';position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 30%,rgba(243,237,225,.045) 50%,transparent 70%);
  animation:shimmer 1.4s infinite}
@keyframes shimmer{from{transform:translateX(-100%)}to{transform:translateX(100%)}}

/* keyboard focus stays visible for those who tab */
button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--gilt);outline-offset:2px}

/* all of it stands down for reduced motion */
@media(prefers-reduced-motion:reduce){
  .wex,.cex-card,.crow,.mine-r,.cday-card,.today,.mealgroup,.mine,.rnote,.cdaylist,
  .rngc.aim,.rngv,.setrow.logged,.setdone[aria-pressed="true"],
  .rng.on,.rngset.on,.stepchip.on,.cs.on,.clog.on .clog-b,.dayv.on .dayv-b{animation:none}
  button:not(:disabled),.setdone,.ccal-d,.wstrip-d,.rng,.rngset,.stepchip,.cs,
  .sheet-in,.rsheet-in,.expick-b,.toast,.rest,.ring circle:last-child{transition:none}
  #coachLoading:after{animation:none}
}

/* hold-and-drag reordering */
.wex,.cex-card{touch-action:pan-y}
.wex.dragging,.cex-card.dragging{opacity:.92;transform:scale(1.02);z-index:30;position:relative;
  box-shadow:0 12px 34px -12px rgba(0,0,0,.8);border-color:var(--gilt);transition:none}
.drag-shift{transition:transform .18s var(--spring)}
body.dragging-ex{overflow:hidden;-webkit-user-select:none;user-select:none}
body.dragging-ex .clog-b,body.dragging-ex .dayv-b{overflow:hidden}

/* ═══ iOS feel ═══ */
html{-webkit-text-size-adjust:100%;background:var(--obsidian)}
*{-webkit-tap-highlight-color:transparent}

/* kill the 300ms double-tap delay and the long-press callout on anything tappable */
a,button,input,select,textarea,label,summary,.btn,.tab,.qbox,.ob,.gate,.ccard,.mtile,
.calday,.mstrip,.addbtn,.wex-h,.frow,.stepper button,.msgbtn,.chip
{touch-action:manipulation;-webkit-touch-callout:none}

/* chrome should not be selectable — long-press must not raise a text loupe */
.appbar,.tabbar,.tabs,.tab,.btn,.mini-btn,.msgbtn,.thread-h,.qbox,.stepper button,
.today-h,.appbar .ab-nm,.appbar .ab-tier{-webkit-user-select:none;user-select:none}

/* iOS zooms the whole page when a focused field is under 16px */
input,textarea,select,.stepper input{font-size:16px}
input,textarea{-webkit-appearance:none;appearance:none}

/* press feedback — the thing that actually makes a web app feel native */
.btn,.mini-btn,.msgbtn,.qbox,.ob,.stepper button,.tab,.ccard,.addbtn,.calday,
.mstrip,.wex-acts button,.calnav button,.qgrid button
{transition:transform .13s cubic-bezier(.22,1,.36,1),background-color .18s ease,
 border-color .18s ease,color .18s ease}
.btn:active,.mini-btn:active,.msgbtn:active,.ob:active,.stepper button:active,
.addbtn:active,.wex-acts button:active,.calnav button:active,.qgrid button:active
{transform:scale(.955)}
.qbox:active,.calday:active,.mstrip:active,.ccard:active{transform:scale(.98)}
.tab:active{transform:scale(.94)}

/* stop the app itself rubber-banding, and stop pull-to-refresh reloading it */
.appmode,.appmode body{overscroll-behavior-y:none;overscroll-behavior-x:none}
.pane,.thread-l,.sheet,.sheet-b,.coachwrap{overscroll-behavior-y:contain;
  -webkit-overflow-scrolling:touch}

/* give the fixed bars their own layer so iOS stops repainting them mid-scroll */
.appbar,.tabbar,.thread-c{transform:translateZ(0);backface-visibility:hidden}

/* the keyboard covers position:fixed on iOS — JS feeds the offset in here */
.thread{--kb:0px}
.thread-c{padding-bottom:calc(12px + env(safe-area-inset-bottom) + var(--kb,0px));
  transition:padding-bottom .22s cubic-bezier(.22,1,.36,1)}
.kbopen .thread-l{scroll-padding-bottom:20px}

/* keep the app header to a single row on a phone */
.appbar .ab-brand{min-width:0}
.appbar .ab-nm,.appbar .ab-tier{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
@media(max-width:430px){.appbar-in{gap:10px;padding-left:14px;padding-right:14px}
  .appbar .ab-tier{font-size:9.5px;letter-spacing:.1em}}

/* honour the system setting */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .btn:active,.mini-btn:active,.msgbtn:active,.ob:active,.stepper button:active,
  .qbox:active,.calday:active,.mstrip:active,.ccard:active,.tab:active,
  .addbtn:active,.wex-acts button:active,.calnav button:active,.qgrid button:active
  {transform:none}
  .thread-c{transition:none}
}
