/* ---- shared app chrome: flashes, admin, blog ---- */
.rp a{color:inherit}
.flashes{padding:96px 24px 0; display:flex; flex-direction:column; gap:10px;}
.flash{padding:13px 18px; border-radius:6px; font-size:.95rem; border:1px solid var(--line-2);
  background:var(--ink-2); color:var(--chalk);}
.flash--success{border-color:rgba(74,201,126,.5);}
.flash--danger{border-color:rgba(226,90,80,.6);}
.flash--warning{border-color:rgba(230,180,70,.5);}

/* ---- optional background band on a profile: a bounded strip at the top,
   not the whole page, so it reads as a divider rather than wallpaper.
   Fade amounts and opacity come in via inline style (see background_bg_style
   in models.py) so they're user-adjustable and stay consistent everywhere. */
.profile-bg{
  position:absolute; top:0; left:0; right:0; height:min(64vh, 620px);
  z-index:-1; pointer-events:none;
  background-size:cover; background-repeat:no-repeat; background-position:center;
  filter:saturate(1.05);
}
.profile-bg::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 0%, var(--ink) 100%);
  opacity:.6;
}

/* cards float as frosted glass over the background instead of hiding it */
.has-bg .profile-card, .has-bg .card, .has-bg .entry, .has-bg .article, .has-bg .author-chip{
  background:rgba(19,23,27,.7);
  backdrop-filter:blur(16px) saturate(1.3);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);
}
/* text-shadow alone isn't reliable against a bright, busy photo (clouds,
   highlights) — give hero text a solid glass plate behind it instead, same
   language as the cards, so it's legible no matter what's in the photo */
.has-bg .page__head, .has-bg.journey .head{
  background:rgba(6,8,10,.62);
  border:1px solid var(--line);
  backdrop-filter:blur(10px) saturate(1.2);
  -webkit-backdrop-filter:blur(10px) saturate(1.2);
  padding:24px;
  border-radius:8px;
}
.has-bg .chapter__text{text-shadow:0 1px 2px rgba(0,0,0,.9), 0 2px 16px rgba(0,0,0,.7);}
/* chips carry small, dense text — the general glass card opacity isn't
   solid enough for it to stay legible over a busy photo */
.has-bg .author-chip{background:rgba(15,18,22,.9);}
.has-bg .author-chip b{text-shadow:0 1px 8px rgba(0,0,0,.7);}
.has-bg .author-chip small{color:var(--stone); text-shadow:0 1px 8px rgba(0,0,0,.8);}
.has-bg .btn--ghost{
  background:rgba(19,23,27,.6);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-color:var(--line-2);
}
.has-bg .btn--ghost:hover{background:rgba(19,23,27,.8);}

.page{padding:120px 0 80px;}
.page__head{margin-bottom:32px;}
.page__head h1{font-family:var(--disp); font-weight:400; text-transform:uppercase;
  font-size:clamp(2rem,4.5vw,3rem); line-height:1; letter-spacing:.01em;}
.page__head p{color:var(--stone); margin-top:12px; max-width:640px;}
.page--narrow{max-width:760px;}

/* ---- coaching interest form ---- */
.interest-head p{max-width:100%;}
.interest-head h1{font-size:clamp(2.2rem,5.5vw,3.2rem);}

.interest-form{padding:0; overflow:hidden;}
.interest-form__section{padding:36px 38px; border-bottom:1px solid var(--line);
  animation:fieldIn .5s cubic-bezier(.2,.7,.2,1) backwards;}
.interest-form__section--last{border-bottom:none;}
.interest-form__section-head{display:flex; align-items:center; gap:18px; margin-bottom:24px;}
.interest-form__num{font-family:var(--disp); font-weight:400; font-size:2.2rem; line-height:1;
  color:transparent; -webkit-text-stroke:1.5px var(--ember); flex:none;}
.interest-form__section-head h2{font-family:var(--disp); font-weight:400; text-transform:uppercase;
  font-size:1.35rem; letter-spacing:.02em; color:var(--chalk);}

.field-group{margin-bottom:20px;}
.field-group:last-child{margin-bottom:0;}
.field-group > span{display:block; font-family:var(--mono); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--stone); margin-bottom:10px;}
.field-group > span i{color:var(--ember); font-style:normal;}
.choice-grid{display:grid; gap:10px;}
.choice-grid--icons{grid-template-columns:1fr 1fr;}
/* two yes/no questions sharing one 4-column grid — guarantees all four
   buttons are exactly the same width, unlike two independent grids that
   happen to sit side by side */
.yn-grid{display:grid; grid-template-columns:1fr 1fr 20px 1fr 1fr; column-gap:8px; row-gap:10px;
  grid-template-areas:"q1 q1 div q2 q2" "c1a c1b div c2a c2b";}
.yn-grid__q{font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--stone);}
.yn-grid__q i{color:var(--ember); font-style:normal;}
.yn-grid__divider{grid-area:div; justify-self:center; width:1px; background:var(--line-2);}
@media(max-width:640px){
  .yn-grid{grid-template-columns:1fr 1fr;
    grid-template-areas:"q1 q1" "c1a c1b" "q2 q2" "c2a c2b";}
  .yn-grid__divider{display:none;}
}
.choice{position:relative; display:flex; align-items:center; gap:12px; padding:13px 16px 13px 42px;
  background:var(--ink-3); border:1px solid var(--line); border-radius:6px; color:var(--chalk);
  font-size:14.5px; cursor:pointer; transition:border-color .2s, background .2s, transform .2s, box-shadow .2s;}
.choice:hover{border-color:var(--line-2); transform:translateY(-1px);}
.choice:has(input:checked){border-color:var(--ember); background:rgba(70,183,230,.1);
  box-shadow:0 0 0 1px rgba(70,183,230,.4), 0 10px 24px -16px rgba(70,183,230,.6);}
.choice input{position:absolute; left:15px; top:50%; transform:translateY(-50%);
  accent-color:var(--ember); width:17px; height:17px; flex:none; margin:0;}
.choice--icon{padding-left:16px; flex-direction:column; align-items:flex-start; gap:10px; padding-top:16px;}
.choice--icon input{position:static; transform:none; order:2; align-self:flex-end; margin-top:-24px;}
.yn-grid .choice{padding:12px 16px; justify-content:center; gap:9px;}
.yn-grid .choice input{position:static; transform:none;}
.choice__icon{display:flex; align-items:center; justify-content:center; width:38px; height:38px;
  border-radius:50%; background:var(--ink-2); color:var(--ember); flex:none;}
.field textarea{width:100%; background:var(--ink-3); border:1px solid var(--line); border-radius:5px;
  color:var(--chalk); font-family:var(--body); font-size:15px; padding:13px 14px;
  transition:border-color .2s, box-shadow .2s; resize:vertical;}
.field textarea:focus{outline:none; border-color:var(--ember); box-shadow:0 0 0 3px rgba(70,183,230,.15);}
.field textarea::placeholder{color:var(--stone-dim);}
.field input:focus{box-shadow:0 0 0 3px rgba(70,183,230,.15);}

.interest-done{padding:48px 32px; text-align:center;}
.interest-done__check{display:grid; place-items:center; width:60px; height:60px; margin:0 auto 20px;
  border-radius:50%; background:rgba(74,201,126,.12); color:#4ac97e; border:1px solid rgba(74,201,126,.4);}
.interest-done h2{font-family:var(--disp); font-weight:400; text-transform:uppercase;
  font-size:1.8rem; margin-bottom:12px;}
.interest-done p{color:var(--stone); margin-bottom:22px;}

@keyframes fieldIn{from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:none;}}

@media(max-width:640px){
  .interest-form__section{padding:26px 22px;}
  .interest-done{padding:36px 24px;}
}
@media(max-width:420px){
  .choice-grid--icons{grid-template-columns:1fr;}
}

/* ---- layout with sidebar ---- */
.shell{display:grid; grid-template-columns:250px 1fr; gap:32px; align-items:start;}
.side{position:sticky; top:96px; background:var(--ink-2); border:1px solid var(--line);
  border-radius:8px; padding:20px; display:flex; flex-direction:column; gap:6px;}
.side h3{font-family:var(--mono); font-size:11px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--stone-dim); margin:14px 0 6px;}
.side h3:first-child{margin-top:0;}
.side a{padding:9px 12px; border-radius:5px; font-size:.94rem; color:var(--stone); display:block;
  transition:background .2s,color .2s;}
.side a:hover{background:rgba(255,255,255,.05); color:var(--chalk);}
.side a.is-active{background:var(--ember); color:var(--ink-3); font-weight:600;}

/* ---- cards & tables ---- */
.card{background:var(--ink-2); border:1px solid var(--line); border-radius:8px; padding:24px; margin-bottom:20px;}
.card h2{font-size:1.2rem; margin-bottom:16px; color:var(--chalk);}
.stats{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; margin-bottom:24px;}
.stat{background:var(--ink-2); border:1px solid var(--line); border-radius:8px; padding:18px;}
.stat b{display:block; font-family:var(--disp); font-size:2rem; color:var(--chalk); line-height:1;}
.stat span{font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--stone);}

.table{width:100%; border-collapse:collapse; font-size:.94rem;}
.table th{text-align:left; font-family:var(--mono); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--stone-dim); padding:10px 12px; border-bottom:1px solid var(--line);}
.table td{padding:12px; border-bottom:1px solid var(--line); color:var(--chalk); vertical-align:middle;}
.table tr:hover td{background:rgba(255,255,255,.03);}
.pill{display:inline-block; padding:4px 10px; border-radius:20px; font-size:11px;
  font-family:var(--mono); letter-spacing:.1em; text-transform:uppercase; border:1px solid var(--line-2); color:var(--stone);}
.pill--admin{border-color:var(--ember); color:var(--ember);}
h3 .pill{margin-right:10px; vertical-align:middle; border-color:var(--ember); color:var(--ember);}
.pill--editor{border-color:rgba(230,180,70,.7); color:#e6b446;}
.pill--on{border-color:rgba(74,201,126,.6); color:#4ac97e;}
.pill--off{opacity:.6;}

/* ---- forms ---- */
.form-grid{display:grid; gap:18px;}
.form-row{display:grid; gap:7px;}
.form-row label{font-family:var(--mono); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--stone);}
.form-row input[type=text],.form-row input[type=email],.form-row input[type=password],
.form-row input[type=number],.form-row textarea,.form-row select{
  width:100%; background:var(--ink-3); border:1px solid var(--line); border-radius:5px;
  color:var(--chalk); font-family:var(--body); font-size:15px; padding:12px 13px;}
.form-row textarea{min-height:130px; resize:vertical; line-height:1.6;}
.form-row input:focus,.form-row textarea:focus,.form-row select:focus{outline:none; border-color:var(--ember);}
.form-row input[type=color]{width:64px; height:40px; padding:3px; background:var(--ink-3);
  border:1px solid var(--line); border-radius:5px;}
.form-row .hint{font-size:12px; color:var(--stone-dim); font-family:var(--body); letter-spacing:0; text-transform:none;}
.check{display:flex; align-items:center; gap:10px; color:var(--chalk); font-size:.95rem;}
.check input{width:18px; height:18px; accent-color:var(--ember);}
.actions{display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-top:22px;}
.two-col{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
.btn--sm{padding:8px 14px; font-size:13.5px;}
.btn--danger{background:transparent; border:1px solid rgba(226,90,80,.6); color:#e25a50;}
.btn--danger:hover{background:rgba(226,90,80,.12);}
.inline-form{display:inline;}

/* ---- media picker ---- */
.picker{display:grid; grid-template-columns:repeat(auto-fill,minmax(92px,1fr)); gap:10px;
  max-height:230px; overflow-y:auto; padding:10px; background:var(--ink-3);
  border:1px solid var(--line); border-radius:6px; margin-top:8px;}
.picker figure{margin:0; cursor:pointer; border:2px solid transparent; border-radius:5px; overflow:hidden;}
.picker figure.is-picked{border-color:var(--ember);}
.picker img{width:100%; height:70px; object-fit:cover; display:block;}
.thumb{width:100%; max-width:210px; height:auto; border-radius:6px; border:1px solid var(--line); display:block;}
.media-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:16px;}
.media-item{background:var(--ink-2); border:1px solid var(--line); border-radius:8px; overflow:hidden;}
.media-item img{width:100%; height:140px; object-fit:cover; display:block;}
.media-item .meta{padding:12px; display:grid; gap:8px;}
.media-item .meta small{color:var(--stone-dim); font-size:11px; word-break:break-all;}
.media-item__frame{position:relative;}
.media-item__frame .pill{position:absolute; top:8px; right:8px; background:rgba(8,10,12,.75); backdrop-filter:blur(6px);}

/* ---- public photo gallery ---- */
.pgallery{column-count:3; column-gap:14px;}
.pgallery__item{display:block; width:100%; margin:0 0 14px; break-inside:avoid; padding:0; border:1px solid var(--line);
  border-radius:10px; overflow:hidden; background:var(--ink-2); cursor:zoom-in; -webkit-appearance:none; appearance:none;}
.pgallery__item img{width:100%; height:auto; display:block; transition:transform .5s cubic-bezier(.2,.7,.2,1);}
.pgallery__item:hover img{transform:scale(1.045);}
@media(max-width:820px){.pgallery{column-count:2;}}
@media(max-width:520px){.pgallery{column-count:1;}}

/* ---- instagram feed ---- */
.igrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:14px;}
.igrid__item{position:relative; display:block; aspect-ratio:1/1; overflow:hidden; padding:0; border:1px solid var(--line);
  border-radius:10px; background:var(--ink-2); cursor:pointer; -webkit-appearance:none; appearance:none;}
.igrid__item img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s cubic-bezier(.2,.7,.2,1);}
.igrid__item:hover img{transform:scale(1.06);}
.igrid__overlay{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#fff;
  background:linear-gradient(180deg,rgba(4,6,10,0) 55%,rgba(4,6,10,.75) 100%); opacity:0; transition:opacity .3s ease;}
.igrid__item:hover .igrid__overlay{opacity:1;}
@media(max-width:520px){.igrid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:8px;}}

.lightbox{position:fixed; inset:0; z-index:200; background:rgba(4,6,10,.95);
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transition:opacity .25s ease;}
.lightbox.is-open{opacity:1; visibility:visible;}
.rp .lightbox__img{max-width:88vw; max-height:84vh; width:auto; height:auto; object-fit:contain;
  border-radius:6px; box-shadow:0 50px 120px -40px rgba(0,0,0,.9);
  transform:scale(.97); transition:transform .25s ease;}
.lightbox.is-open .lightbox__img{transform:scale(1);}
.lightbox__close, .lightbox__nav{position:absolute; z-index:2; background:rgba(19,23,27,.7); border:1px solid var(--line-2);
  color:var(--chalk); border-radius:50%; width:44px; height:44px; display:flex; align-items:center;
  justify-content:center; cursor:pointer; transition:border-color .2s, color .2s;}
.lightbox__close:hover, .lightbox__nav:hover{border-color:var(--ember); color:var(--ember);}
.lightbox__close{top:20px; right:20px;}
.lightbox__nav--prev{left:16px; top:50%; transform:translateY(-50%);}
.lightbox__nav--next{right:16px; top:50%; transform:translateY(-50%);}
.lightbox__count{position:absolute; bottom:22px; left:50%; transform:translateX(-50%);
  font-family:var(--mono); font-size:12px; letter-spacing:.08em; color:var(--stone);}
@media(max-width:600px){
  .lightbox__nav{width:38px; height:38px;}
  .lightbox__close{top:12px; right:12px;}
  .lightbox__nav--prev{left:8px;} .lightbox__nav--next{right:8px;}
}

/* ---- review "read more" modal ---- */
.review-modal{position:fixed; inset:0; z-index:200; background:rgba(4,6,10,.95);
  display:flex; align-items:center; justify-content:center; padding:24px;
  opacity:0; visibility:hidden; transition:opacity .25s ease; cursor:default;}
.review-modal.is-open{opacity:1; visibility:visible;}
.review-modal__backdrop{position:absolute; inset:0;}
.review-modal__panel{position:relative; z-index:1; display:grid; grid-template-columns:260px 1fr;
  max-width:820px; width:100%; max-height:82vh;
  background:var(--ink-2); border:1px solid var(--line-2); border-radius:10px; overflow:hidden;
  box-shadow:0 60px 120px -40px rgba(0,0,0,.9);
  transform:scale(.96); transition:transform .25s ease;}
.review-modal.is-open .review-modal__panel{transform:scale(1);}
.review-modal__panel.no-image{grid-template-columns:1fr; max-width:600px;}
.review-modal__photo{background:var(--ink-3); position:relative; overflow:hidden;}
.review-modal__photo img{width:100%; height:100%; object-fit:cover; display:block;}
.review-modal__body{padding:40px 40px; display:flex; flex-direction:column; justify-content:center; overflow-y:auto;}
.review-modal__quote{font-family:var(--disp); color:var(--ember); font-size:3.2rem; line-height:.6; height:.5em; opacity:.9; margin-bottom:16px;}
.review-modal__body h3{font-size:1.3rem; font-weight:700; color:var(--chalk); margin-bottom:14px;}
.review-modal__body blockquote{color:var(--stone); font-size:1.05rem; line-height:1.65;}
.review-modal__by{margin-top:26px; padding-top:18px; border-top:1px solid var(--line);
  font-family:var(--mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--chalk);}
.rev__card{cursor:pointer;}
.rev__card:focus-visible{outline:2px solid var(--ember); outline-offset:3px;}
@media(max-width:640px){
  .review-modal{padding:14px;}
  .review-modal__panel{grid-template-columns:1fr; max-height:92vh; grid-template-rows:auto 1fr;}
  .review-modal__photo{height:auto; aspect-ratio:4/3;}
  .review-modal__body{padding:24px 20px;}
}

/* ---- blog ---- */
.blog-shell{display:grid; grid-template-columns:290px 1fr; gap:34px; align-items:start;}
.profile-card{background:var(--ink-2); border:1px solid var(--line); border-radius:10px;
  overflow:hidden; position:sticky; top:96px;}
.profile-card__cover{display:block; height:104px; background:linear-gradient(135deg,var(--ember),var(--ink-3));
  position:relative; z-index:1; overflow:hidden; cursor:pointer;}
.profile-card__avatar-link{display:block;}
.rp .profile-card__cover img{width:100%; height:100%; object-fit:cover; display:block;}
.profile-card__body{padding:0 20px 22px; text-align:center;}
/* shared avatar component */
.ava{position:relative; display:block; overflow:hidden; border-radius:50%;
  background:var(--ink-3); flex:none;}
.rp .ava img{width:100%; height:100%; object-fit:cover; display:block;}
.ava__initial{position:absolute; inset:0; display:grid; place-items:center;
  font-family:var(--disp); color:var(--ember); line-height:1;}

.ava--chip{width:44px; height:44px;}
.ava--chip .ava__initial{font-size:1.15rem;}

.profile-card__avatar{z-index:3; width:96px; height:96px; margin:-52px auto 12px;
  border:4px solid var(--ink-2); box-shadow:0 8px 22px -10px rgba(0,0,0,.9);}
.profile-card__avatar .ava__initial{font-size:2rem;}
.profile-card__name{font-family:var(--disp); font-size:1.5rem; text-transform:uppercase; letter-spacing:.02em; color:var(--chalk);}
.profile-card__headline{color:var(--ember); font-size:.92rem; margin-top:5px;}
.profile-card__bio{color:var(--stone); font-size:.92rem; margin-top:12px; text-align:left;}
.profile-meta{margin-top:16px; border-top:1px solid var(--line); padding-top:14px; display:grid; gap:9px; text-align:left;}
.profile-meta div{display:flex; justify-content:space-between; gap:10px; font-size:.88rem;}
.profile-meta span{color:var(--stone-dim); font-family:var(--mono); font-size:10.5px;
  letter-spacing:.12em; text-transform:uppercase;}
.profile-meta b{color:var(--chalk); font-weight:600;}

.post-list{display:grid; gap:20px;}
.post-card{background:var(--ink-2); border:1px solid var(--line); border-radius:10px; overflow:hidden;
  transition:transform .3s, border-color .3s;}
.post-card:hover{transform:translateY(-4px); border-color:var(--line-2);}
.post-card__img{width:100%; height:230px; object-fit:cover; display:block;}
.post-card__body{padding:22px 24px;}
.post-card__meta{font-family:var(--mono); font-size:11px; letter-spacing:.13em; text-transform:uppercase;
  color:var(--stone-dim); display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:10px;}
.post-card__title{font-family:var(--disp); font-size:1.6rem; text-transform:uppercase;
  letter-spacing:.015em; color:var(--chalk); line-height:1.05;}
.post-card__title a:hover{color:var(--ember);}
.post-card__excerpt{color:var(--stone); margin-top:10px; font-size:.96rem;}

.article{background:var(--ink-2); border:1px solid var(--line); border-radius:10px; overflow:hidden;}
.article__hero{width:100%; max-height:440px; object-fit:cover; display:block;}
.article__body{padding:32px;}
.article__body h1{font-family:var(--disp); font-size:clamp(1.8rem,4vw,2.8rem); text-transform:uppercase;
  line-height:1.02; color:var(--chalk); margin-bottom:12px;}
.article__body p{color:#c9d2da; margin-bottom:16px; line-height:1.75;}
.article__body p a{color:var(--ember); text-decoration:underline; text-underline-offset:2px;}

/* link-preview card: a bare URL pasted on its own line unfurls into this,
   the way a pasted link does on Facebook/Slack. */
.link-card{display:block; background:var(--ink-3); border:1px solid var(--line); border-radius:10px;
  overflow:hidden; margin-bottom:16px; transition:border-color .25s, transform .25s;}
.link-card:hover{border-color:var(--line-2); transform:translateY(-2px);}
.link-card__image{width:100%; height:220px; background-size:cover; background-position:center;
  background-color:var(--ink-2);}
.link-card__body{padding:16px 20px;}
.link-card__domain{font-family:var(--mono); font-size:11px; letter-spacing:.13em; text-transform:uppercase;
  color:var(--stone-dim);}
.link-card__domain--icon{display:inline-flex; align-items:center; gap:7px;}
.link-card__favicon{width:18px; height:18px; border-radius:4px; object-fit:contain;
  background:var(--ink-2); flex:none;}
.link-card__title{font-size:1.05rem; color:var(--chalk); margin:6px 0 0; line-height:1.3;}
.link-card__desc{color:var(--stone); font-size:.9rem; margin:6px 0 0; line-height:1.5;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}

.author-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:14px;}
.author-chip{background:var(--ink-2); border:1px solid var(--line); border-radius:8px; padding:14px;
  display:flex; gap:12px; align-items:center;
  transition:border-color .25s, transform .25s, box-shadow .25s;}
.author-chip:hover{border-color:var(--ember); transform:translateY(-3px);
  box-shadow:0 16px 32px -20px rgba(0,0,0,.9);}
.author-chip img{width:44px; height:44px; border-radius:50%; object-fit:cover; flex:none;}
.author-chip b{display:block; color:var(--chalk); font-size:.95rem;}
.author-chip small{color:var(--stone-dim); font-size:11.5px;}

.pager{display:flex; gap:10px; justify-content:center; margin-top:30px; align-items:center;}
.pager a,.pager span{padding:9px 15px; border-radius:5px; border:1px solid var(--line);
  color:var(--stone); font-size:.9rem;}
.pager .is-current{background:var(--ember); color:var(--ink-3); border-color:var(--ember); font-weight:600;}

.empty{text-align:center; padding:56px 20px; color:var(--stone); border:1px dashed var(--line-2); border-radius:10px;}

.auth-wrap{min-height:100vh; display:grid; place-items:center; padding:100px 20px 60px;}
.auth-card{width:100%; max-width:420px; background:var(--ink-2); border:1px solid var(--line-2);
  border-radius:10px; padding:34px;}
.auth-card h1{font-family:var(--disp); font-size:1.9rem; text-transform:uppercase; margin-bottom:8px; color:var(--chalk);}
.auth-card p.sub{color:var(--stone); font-size:.93rem; margin-bottom:22px;}

@media(max-width:900px){
  .shell,.blog-shell{grid-template-columns:1fr;}
  .side,.profile-card{position:static;}
  .two-col{grid-template-columns:1fr;}
}

/* ---- profile social icons (+ copy-link button, same shape) ---- */
.profile-social{display:flex; gap:10px; flex-wrap:wrap; margin-top:16px; padding-top:14px; border-top:1px solid var(--line);}
.profile-social a, .profile-social__copy{display:flex; align-items:center; justify-content:center; width:34px; height:34px;
  border:1px solid var(--line); border-radius:50%; color:var(--stone); background:transparent; padding:0;
  cursor:pointer; transition:border-color .2s, color .2s;}
.profile-social a:hover, .profile-social__copy:hover{border-color:var(--ember); color:var(--ember);}
.profile-social__copy.is-copied{color:#4ac97e; border-color:rgba(74,201,126,.6);}

/* ---- editable social link list ---- */
.social-link-list{display:grid; gap:10px;}
.social-link-list__row{display:flex; align-items:center; gap:10px; padding:9px 12px;
  background:var(--ink-3); border:1px solid var(--line); border-radius:5px;}
.social-link-list__row svg{flex:none; color:var(--stone-dim);}
.social-link-list__label{font-size:12.5px; color:var(--stone-dim); flex:none;}
.social-link-list__url{flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  font-family:var(--mono); font-size:12.5px;}

/* ---- progress / PB log ---- */
.progress-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:18px;}
.progress-card__head{display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:14px;}
.progress-card__head h2{margin:0;}
.progress-card__pb{text-align:right; flex:none;}
.progress-card__pb b{display:block; font-family:var(--disp); font-size:1.4rem; color:var(--ember); line-height:1;}
.progress-card__pb span{font-family:var(--mono); font-size:10.5px; color:var(--stone-dim); text-transform:uppercase; letter-spacing:.08em;}
.progress-chart{height:220px; position:relative;}
.progress-table{display:grid; gap:10px;}
.progress-row{display:flex; align-items:center; gap:14px; padding:10px 12px; flex-wrap:wrap;
  background:var(--ink-3); border:1px solid var(--line); border-radius:5px;}
.progress-row__date{font-family:var(--mono); font-size:11.5px; color:var(--stone-dim); flex:none;}
.progress-row__weight{flex:none; font-size:1rem;}
.progress-row__reps{flex:none; font-family:var(--mono); font-size:11.5px; color:var(--ember);}
.progress-row__note{flex:1; min-width:120px; color:var(--stone); font-size:.9rem;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}

/* ---- image adjuster ---- */
.adjust{display:grid; grid-template-columns:132px 1fr; gap:18px; align-items:center;
  background:var(--ink-3); border:1px solid var(--line); border-radius:8px; padding:16px;}
.adjust__preview{width:112px; height:112px; border-radius:50%; background-color:var(--ink-2);
  background-repeat:no-repeat; background-position:50% 50%; background-size:cover;
  border:3px solid var(--ink-2); box-shadow:0 0 0 1px var(--line); justify-self:center;}
.adjust__preview--wide{width:100%; height:96px; border-radius:6px;}
.adjust__controls{display:grid; gap:12px;}
.adjust__row{display:grid; grid-template-columns:74px 1fr 44px; gap:10px; align-items:center;}
.adjust__row label{font-family:var(--mono); font-size:10.5px; letter-spacing:.12em;
  text-transform:uppercase; color:var(--stone); margin:0;}
.adjust__row output{font-family:var(--mono); font-size:11px; color:var(--stone-dim); text-align:right;}
.adjust input[type=range]{width:100%; accent-color:var(--ember); background:transparent;}
@media(max-width:600px){.adjust{grid-template-columns:1fr;}}


/* ---- media editor ---- */
.medit{display:grid; grid-template-columns:auto 1fr; gap:20px; align-items:start;
  background:var(--ink-3); border:1px solid var(--line); border-radius:8px; padding:16px;}
.medit__preview{position:relative; overflow:hidden; background:var(--ink-2);
  border:1px solid var(--line); cursor:grab; touch-action:none; user-select:none;}
.medit__preview:active{cursor:grabbing;}
.medit__preview--circle{width:140px; height:140px; border-radius:50%;}
.medit__preview--wide{width:280px; height:110px; border-radius:6px;}
.medit__preview--tall{width:210px; height:330px; border-radius:8px;}
/* matches the real .profile-bg shape: a wide, short band across the top of
   the page (not a tall portrait), sized up for finer dragging precision —
   so positioning here lines up with reality */
.medit__preview--band{width:480px; max-width:100%; height:200px; border-radius:8px;}
.rp .medit__preview img{width:100%; height:100%; object-fit:cover; display:block;
  transform-origin:center; pointer-events:none;}
/* mirrors .profile-bg::after — the permanent top-to-bottom darkening the
   real page applies, so a spot that reads fine here doesn't disappear into
   shadow once it's live */
.medit__darken{position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(180deg, transparent 0%, var(--ink) 100%); opacity:.6;}
.medit__empty{position:absolute; inset:0; display:grid; place-items:center;
  font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--stone-dim); pointer-events:none;}
.medit__hint{position:absolute; left:0; right:0; bottom:0; text-align:center; padding:5px 4px;
  background:rgba(0,0,0,.65); color:var(--chalk); font-family:var(--mono); font-size:8.5px;
  letter-spacing:.08em; text-transform:uppercase; opacity:0; transition:opacity .2s;
  pointer-events:none;}
.medit__preview:hover .medit__hint{opacity:1;}
.medit__side{display:grid; gap:12px; align-content:start;}
.medit__row{display:grid; grid-template-columns:46px 1fr 44px; gap:10px; align-items:center;}
.medit__row span{font-family:var(--mono); font-size:10.5px; letter-spacing:.12em;
  text-transform:uppercase; color:var(--stone);}
.medit__row output{font-family:var(--mono); font-size:11px; color:var(--stone-dim); text-align:right;}
.medit__row input[type=range]{width:100%; accent-color:var(--ember);}
/* quick anchor presets (Top/Middle/Bottom, Left/Center/Right) — a one-click
   way to get a sane position without having to drag freehand */
.medit__presets{display:grid; gap:6px;}
.medit__presets-row{display:flex; gap:6px;}
.medit__presets-row button{flex:1; padding:7px 6px; font-family:var(--mono); font-size:10.5px;
  letter-spacing:.08em; text-transform:uppercase; color:var(--stone);
  background:var(--ink-2); border:1px solid var(--line); border-radius:6px; cursor:pointer;
  transition:border-color .2s, color .2s, background .2s;}
.medit__presets-row button:hover{border-color:var(--line-2); color:var(--chalk);}
.medit__presets-row button.is-active{border-color:var(--ember); color:var(--ember);
  background:rgba(70,183,230,.12);}
.medit__buttons{display:flex; flex-wrap:wrap; gap:8px;}
.medit__fileinput{position:absolute; width:1px; height:1px; opacity:0; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap;}
.medit__file{font-size:12px; color:var(--stone-dim); margin:0; min-height:1em; word-break:break-all;}
.medit__library:not([hidden]){grid-column:1 / -1; display:grid;
  grid-template-columns:repeat(auto-fill,minmax(84px,1fr)); gap:8px; max-height:210px;
  overflow-y:auto; padding:10px; background:var(--ink-2); border:1px solid var(--line);
  border-radius:6px;}
.medit__library figure{margin:0; cursor:pointer; border:2px solid transparent; border-radius:5px;
  overflow:hidden; height:64px;}
.medit__library figure.is-picked{border-color:var(--ember);}
.medit.is-cleared .medit__preview{opacity:.35;}
@media(max-width:640px){
  .medit{grid-template-columns:1fr;}
  .medit__preview--wide{width:100%;}
  .medit__preview--tall{width:100%; height:280px;}
  .medit__preview--band{width:100%; height:160px;}
}

/* ---- override the global .rp img rule inside admin widgets ---- */
.rp .thumb{width:auto; max-width:200px; max-height:150px; height:auto; object-fit:contain;
  border-radius:6px; border:1px solid var(--line); display:block; background:var(--ink-3);}
.rp .picker{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));}
.rp .picker img{width:100%; height:64px; object-fit:cover;}
.rp .medit__library img{width:100%; height:64px; object-fit:cover;}
.rp .media-item img{width:100%; height:140px; object-fit:cover;}
.rp .author-chip .ava img{width:100%; height:100%; object-fit:cover;}
.rp .rev__by img{width:42px; height:42px; object-fit:cover;}

/* ---- journey index (chapter layout) ---- */
.journey{padding-top:130px;}
.journey .head h1{font-family:var(--disp); font-weight:400; text-transform:uppercase;
  font-size:clamp(2.1rem,5.2vw,3.6rem); line-height:.98; letter-spacing:.005em; color:var(--chalk);}
.journey__intro{color:var(--stone); margin-top:14px; max-width:620px;}
.journey__people{display:flex; flex-wrap:wrap; gap:12px; margin:36px 0 16px;}
.journey__people .author-chip{min-width:190px; max-width:340px; flex:1 1 190px;}
.journey__list{margin-top:44px;}

/* date badge replaces the numbered corner */
.chapter__no--date{display:grid; line-height:.85; text-align:left;}
.chapter__no--date b{font-family:var(--disp); font-weight:400; font-size:clamp(3rem,7.5vw,5.2rem);
  color:transparent; -webkit-text-stroke:1.6px rgba(238,242,246,.55); letter-spacing:.02em;}
.chapter__no--date i{font-family:var(--mono); font-style:normal; font-size:12px;
  letter-spacing:.22em; text-transform:uppercase; color:var(--ember); margin-top:6px; padding-left:3px;}
.chapter__year{position:absolute; bottom:14px; left:18px; z-index:6; font-family:var(--mono);
  font-size:11px; letter-spacing:.2em; color:rgba(238,242,246,.55);}
.chapter__media--plain{background:linear-gradient(150deg,var(--ink-2),var(--ink-3));
  border:1px solid var(--line);}

.journey__title{font-family:var(--disp); font-weight:400; text-transform:uppercase;
  font-size:clamp(1.7rem,3.4vw,2.5rem); line-height:1.02; letter-spacing:.01em;
  color:var(--chalk); margin-bottom:14px;}
.journey__title a:hover{color:var(--ember);}
.chapter__label a:hover{color:var(--chalk);}
.journey__more{display:inline-flex; align-items:center; gap:8px; margin-top:6px;
  font-family:var(--mono); font-size:11.5px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ember); transition:gap .25s;}
.journey__more:hover{gap:14px;}
@media(max-width:900px){
  .journey{padding-top:104px;}
  .chapter__year{bottom:10px; left:14px;}
}

/* ---- journey cards: scrim behind the date + lifted image ---- */
.journey__list .chapter__media{
  width:100%; aspect-ratio:4/3; max-height:400px;
  border-radius:8px;
  box-shadow:0 26px 50px -26px rgba(0,0,0,.95), 0 0 0 1px var(--line);
  transition:transform .45s cubic-bezier(.2,.7,.2,1), box-shadow .45s;
}
.journey__list .chapter__media:hover{
  transform:translateY(-6px);
  box-shadow:0 40px 70px -30px rgba(0,0,0,1),
             0 0 0 1px rgba(70,183,230,.35),
             0 0 46px -18px rgba(70,183,230,.4);
}
/* dark-to-clear scrim so the date always reads, whatever the photo */
.journey__list .chapter__media::before{
  content:""; position:absolute; inset:0; z-index:4; pointer-events:none;
  background:
    linear-gradient(180deg,
      rgba(4,10,14,.9) 0%,
      rgba(4,10,14,.55) 18%,
      rgba(4,10,14,.12) 34%,
      rgba(4,10,14,0) 46%),
    linear-gradient(0deg,
      rgba(4,10,14,.8) 0%,
      rgba(4,10,14,.35) 12%,
      rgba(4,10,14,0) 26%),
    linear-gradient(160deg, rgba(70,183,230,.16) 0%, rgba(70,183,230,0) 42%);
}
/* the badge itself sits above the scrim and gets a solid outline */
.journey__list .chapter__no{z-index:7;}
.journey__list .chapter__no--date b{
  -webkit-text-stroke:1.8px rgba(238,242,246,.92);
  filter:drop-shadow(0 2px 10px rgba(0,0,0,.85));
}
.journey__list .chapter__no--date i{
  color:var(--ember);
  text-shadow:0 1px 8px rgba(0,0,0,.9);
}
.journey__list .chapter__year{
  z-index:7; color:rgba(238,242,246,.85);
  text-shadow:0 1px 8px rgba(0,0,0,.9);
}

/* ---- profile feed: compact, scannable entries ---- */
.entries{display:grid; gap:14px;}
.entry{display:grid; grid-template-columns:64px 190px 1fr; gap:20px; align-items:start;
  background:var(--ink-2); border:1px solid var(--line); border-radius:10px; padding:16px;
  transition:transform .35s cubic-bezier(.2,.7,.2,1), border-color .35s, box-shadow .35s;}
.entry:hover{transform:translateY(-3px); border-color:rgba(70,183,230,.4);
  box-shadow:0 22px 44px -28px rgba(0,0,0,.95);}

.entry__date{text-align:center; padding-top:4px; line-height:1;}
.entry__date b{display:block; font-family:var(--disp); font-weight:400; font-size:2.1rem;
  color:var(--chalk); letter-spacing:.02em;}
.entry__date i{display:block; font-family:var(--mono); font-style:normal; font-size:10.5px;
  letter-spacing:.18em; text-transform:uppercase; color:var(--ember); margin-top:4px;}
.entry__date em{display:block; font-family:var(--mono); font-style:normal; font-size:10px;
  letter-spacing:.14em; color:var(--stone-dim); margin-top:3px;}

.entry__thumb{display:block; height:124px; border-radius:7px; overflow:hidden;
  background:var(--ink-3); border:1px solid var(--line);}
.rp .entry__thumb img{width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .6s;}
.entry:hover .entry__thumb img{transform:scale(1.05);}
.entry__thumb--empty{background:linear-gradient(150deg,var(--ink-3),var(--ink-2));}

.entry__body{min-width:0;}
.entry__title{font-family:var(--disp); font-weight:400; text-transform:uppercase;
  font-size:1.45rem; line-height:1.05; letter-spacing:.015em; color:var(--chalk);
  margin-bottom:8px;}
.entry__title a:hover{color:var(--ember);}
.entry__excerpt{color:var(--stone); font-size:.94rem; margin:0 0 12px;}
.entry__foot{display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
.entry__by{font-family:var(--mono); font-size:10.5px; letter-spacing:.12em;
  text-transform:uppercase; color:var(--stone-dim);}

@media(max-width:820px){
  .entry{grid-template-columns:56px 1fr; gap:14px;}
  .entry__thumb{grid-column:1 / -1; grid-row:2; height:170px;}
  .entry__body{grid-column:1 / -1;}
}

/* stop the global .rp img rule from stretching card images */
.rp .post-card__img{width:100%; height:230px; object-fit:cover;}
.rp .article__hero{width:100%; height:auto; max-height:440px; object-fit:cover;}

/* ---- sticky footer: always at the bottom, even on short pages ---- */
html, body{min-height:100%;}
.rp{display:flex; flex-direction:column; min-height:100vh; min-height:100svh;}
.rp > .foot{margin-top:auto;}
.rp > .hero, .rp > .section, .rp > .philo{flex:none;}

/* ---- mobile polish ---- */
@media(max-width:820px){
  .page{padding:96px 0 56px;}
  .flashes{padding-top:88px;}
  .profile-card{margin-bottom:8px;}
  .blog-shell{gap:22px;}
  .journey__people .author-chip{min-width:0; width:100%;}
  .journey__people{display:grid; grid-template-columns:1fr 1fr; gap:10px;}
  .entry__title{font-size:1.25rem;}
  .card{padding:18px;}
  .table{font-size:.88rem;}
  .table th, .table td{padding:9px 8px;}
}
@media(max-width:520px){
  .journey__people{grid-template-columns:1fr;}
  .entry{grid-template-columns:52px 1fr; padding:14px;}
  .entry__date b{font-size:1.7rem;}
  .entry__thumb{height:150px;}
  .foot__base{flex-direction:column; gap:8px; text-align:center;}
  .actions .btn{flex:1 1 auto; justify-content:center;}
  .page__head h1{font-size:2rem;}
}
/* tables scroll instead of breaking the layout on small screens */
@media(max-width:700px){
  .card .table{display:block; overflow-x:auto; white-space:nowrap;}
}
