
:root{
  --ink:#171a20;
  --muted:#676b73;
  --line:#e9e3de;
  --cream:#fbf7f2;
  --paper:#fffdfa;
  --red:#b41118;
  --red-soft:#f7e6e4;
  --yellow:#f3dfa0;
  --max:1180px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:"DM Sans",sans-serif;background:var(--paper);color:var(--ink)}
button,a{font:inherit}
button{cursor:pointer}
img{max-width:100%;display:block}
.site-header{
  height:84px;display:flex;align-items:center;justify-content:space-between;
  padding:0 4vw;border-bottom:1px solid var(--line);background:rgba(255,253,250,.95);
  position:sticky;top:0;z-index:50;backdrop-filter:blur(12px)
}
.brand{text-decoration:none;color:var(--ink);display:flex;flex-direction:column;line-height:.8}
.brand-script{font-family:"Playfair Display",serif;font-style:italic;font-size:23px}
.brand-world{font-size:11px;letter-spacing:.32em;font-weight:700;margin-top:10px}
.top-nav{display:flex;gap:34px;align-items:center}
.top-nav a{text-decoration:none;color:var(--ink);text-transform:uppercase;letter-spacing:.09em;font-size:13px;padding:30px 0 27px;border-bottom:2px solid transparent}
.top-nav a.active{color:var(--red);border-bottom-color:var(--red)}
.menu-toggle{display:none;border:0;background:none;font-size:26px}
.page{display:none;min-height:calc(100vh - 84px)}
.page.active{display:block}
.content-wrap{width:min(var(--max),92vw);margin:0 auto}
.eyebrow{font-size:12px;letter-spacing:.18em;font-weight:700;text-transform:uppercase;color:var(--red)}
.home-page{background:linear-gradient(130deg,#fff9df 0%,#fffdfa 50%,#f7efe8 100%)}
.home-hero{width:min(1120px,90vw);margin:0 auto;padding:12vh 0 10vh}
.home-hero h1{font-family:"Playfair Display",serif;font-size:clamp(58px,8vw,118px);line-height:.94;margin:16px 0 18px;letter-spacing:-.04em}
.home-hero h1 em{font-weight:500;color:#ad7c00}
.home-sub{font-size:18px;letter-spacing:.18em;text-transform:uppercase}
.home-links{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:70px}
.home-card{background:rgba(255,255,255,.45);border:1px solid #e8dfc4;border-radius:22px;padding:28px;text-align:left;display:flex;flex-direction:column;gap:7px;min-height:175px}
.home-card span{font-size:12px;color:#9c8d6f}
.home-card strong{font-family:"Playfair Display",serif;font-size:31px}
.home-card small{color:var(--muted)}
.home-card:hover{transform:translateY(-3px);transition:.2s;background:white}
.section-hero{min-height:330px;padding:80px max(4vw,calc((100vw - var(--max))/2));display:flex;align-items:flex-end}
.builder-hero{background:linear-gradient(120deg,#fff4c9,#fffdf7)}
.section-hero h1,.placeholder-content h1{font-size:clamp(72px,10vw,150px);line-height:.9;margin:8px 0 14px;letter-spacing:-.055em}
.section-hero p{max-width:600px;color:#4f4e49}
.section-title-row{display:flex;justify-content:space-between;align-items:end;margin:65px 0 24px}
.section-title-row h2{font-family:"Playfair Display",serif;font-size:44px;margin:0}
.section-title-row span{color:var(--muted);font-size:13px}
.artwork-card{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;padding-bottom:90px}
.artwork-image{background:#f3efe8;padding:16px;border-radius:22px}
.artwork-image img{border-radius:13px;width:100%;height:auto}
.artwork-copy h3{font-family:"Playfair Display",serif;font-size:64px;margin:8px 0 4px}
.art-medium{font-family:"Playfair Display",serif;font-style:italic;font-size:24px;color:var(--muted)}
dl{margin:36px 0}
dl div{display:grid;grid-template-columns:100px 1fr;padding:15px 0;border-top:1px solid var(--line)}
dt{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}
dd{margin:0}
blockquote{margin:30px 0 0;padding:22px 24px;background:#fff7da;border-radius:16px;font-family:"Playfair Display",serif;font-style:italic;font-size:20px;line-height:1.5}
.athlete-page{--section-red:#b41118;background:#fffdfb}
.athlete-hero{display:grid;grid-template-columns:1fr 1.05fr;gap:50px;align-items:center;padding-top:55px;padding-bottom:30px}
.athlete-title h1{font-size:clamp(88px,11vw,160px);line-height:.78;color:var(--section-red);margin:0 0 22px;letter-spacing:-.055em}
.athlete-kicker{letter-spacing:.3em;font-size:12px}
.athlete-kicker b{color:var(--section-red);padding:0 10px}
.athlete-intro{max-width:480px;font-family:"Playfair Display",serif;font-size:22px;line-height:1.55;margin-top:35px}
.photo-placeholder{border:1.5px dashed #d57d7d;border-radius:18px;background:#fff9f7;min-height:180px;display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--section-red)}
.hero-photo{min-height:410px;border-style:solid}
.photo-icon{font-size:64px;opacity:.45;margin-bottom:12px}
.sports-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:20px}
.sports-grid{display:grid;grid-template-columns:repeat(5,1fr)}
.sport-tile{position:relative;border:0;border-right:1px solid var(--line);background:transparent;padding:20px 10px 22px;min-height:145px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.sport-tile:first-child{border-left:1px solid var(--line)}
.sport-tile .sport-icon{font-size:34px}
.sport-tile strong{text-transform:uppercase;letter-spacing:.06em}
.sport-tile small{text-transform:uppercase;font-size:10px;color:var(--red);letter-spacing:.12em}
.sport-tile.selected{outline:1px solid var(--red);outline-offset:-1px;background:#fff8f6;color:var(--red)}
.sport-panels{padding:28px 0 70px}
.sport-panel{display:none}
.sport-panel.active{display:block}
.sport-panel-head{border:1px solid var(--line);border-radius:18px 18px 0 0;padding:18px 22px 0}
.sport-panel-head>div{display:flex;align-items:center;gap:12px}
.sport-panel-head h2{font-family:"Playfair Display",serif;font-size:46px;margin:0;color:var(--red)}
.tab-nav{display:flex;gap:28px;margin-top:12px;overflow-x:auto}
.tab-btn{border:0;background:none;padding:16px 0 14px;text-transform:uppercase;letter-spacing:.08em;font-size:11px;border-bottom:2px solid transparent;white-space:nowrap}
.tab-btn.active{color:var(--red);border-bottom-color:var(--red)}
.tab-panel{display:none;border:1px solid var(--line);border-top:0;border-radius:0 0 18px 18px;padding:24px}
.tab-panel.active{display:block}
.tennis-cards{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:16px}
.info-card{border:1px solid var(--line);border-radius:16px;padding:26px;background:#fff}
.info-card p{line-height:1.6}
.goal-card h3{font-family:"Playfair Display",serif;font-size:30px;margin:8px 0}
.goal-icon{font-size:48px;color:var(--red)}
.progress-card{margin-top:18px;border:1px solid var(--line);border-radius:16px;padding:22px}
.progress-grid{display:grid;grid-template-columns:repeat(4,1fr)}
.progress-grid button{border:0;border-right:1px solid var(--line);background:none;padding:20px;text-align:left;display:flex;flex-direction:column;gap:7px}
.progress-grid button:last-child{border-right:0}
.progress-grid button span{font-size:26px;color:var(--red)}
.progress-grid button small{color:var(--muted);line-height:1.45}
.empty-state{text-align:center;padding:70px 20px}
.empty-state h3{font-family:"Playfair Display",serif;font-size:40px;margin-bottom:8px}
.empty-state p{color:var(--muted);max-width:560px;margin:0 auto 22px}
.soft-btn{border:1px solid #e6b6b6;background:#fff6f5;color:var(--red);padding:12px 18px;border-radius:999px}
.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:30px 0}
.stat-card{border:1px solid var(--line);border-radius:16px;padding:28px;text-align:center}
.stat-card span{display:block;font-size:36px;color:var(--red);font-weight:700}
.stat-card small{color:var(--muted)}
.stats-note{text-align:center;color:var(--muted)}
.media-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.simple-sport{text-align:center;border:1px solid var(--line);border-radius:18px;padding:80px 20px}
.simple-sport span{font-size:48px}
.simple-sport h2{font-family:"Playfair Display",serif;font-size:48px;margin:10px}
.placeholder-page{background:linear-gradient(145deg,#fffdfa,#f7f2eb)}
.placeholder-content{padding-top:16vh}
.placeholder-content p:last-child{font-size:22px;color:var(--muted)}

@media (max-width: 900px){
  .menu-toggle{display:block}
  .top-nav{position:absolute;top:84px;left:0;right:0;background:#fffdfa;border-bottom:1px solid var(--line);padding:12px 24px;display:none;flex-direction:column;align-items:flex-start;gap:0}
  .top-nav.open{display:flex}
  .top-nav a{padding:13px 0;width:100%}
  .home-links,.artwork-card,.athlete-hero,.tennis-cards,.stats-grid,.media-grid{grid-template-columns:1fr}
  .sports-grid{grid-template-columns:repeat(2,1fr)}
  .sports-grid .sport-tile:last-child{grid-column:1/-1}
  .progress-grid{grid-template-columns:1fr 1fr}
  .progress-grid button:nth-child(2){border-right:0}
  .progress-grid button{border-bottom:1px solid var(--line)}
  .hero-photo{min-height:260px}
  .artwork-copy h3{font-size:48px}
}
@media (max-width: 560px){
  .site-header{height:72px}
  .top-nav{top:72px}
  .home-hero{padding-top:9vh}
  .home-hero h1{font-size:56px}
  .home-links{margin-top:40px}
  .athlete-title h1{font-size:78px}
  .sports-grid{grid-template-columns:1fr}
  .sports-grid .sport-tile:last-child{grid-column:auto}
  .sport-tile{min-height:100px}
  .progress-grid{grid-template-columns:1fr}
  .progress-grid button{border-right:0}
  .tab-panel{padding:14px}
}


/* Builder gallery */
.builder-gallery-wrap{padding-bottom:80px}
.gallery-intro{margin:8px 0 0;color:var(--muted);max-width:560px}
.add-entry-btn{border:1px solid #c99a20;background:#fff6d8;color:#705300;padding:12px 18px;border-radius:999px;font-weight:700}
.art-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.gallery-card{border:1px solid var(--line);background:#fff;border-radius:20px;padding:0;overflow:hidden;text-align:left;transition:transform .2s,border-color .2s}
.gallery-card:hover{transform:translateY(-3px);border-color:#d9c585}
.gallery-thumb{aspect-ratio:4/5;background:#f3efe8;overflow:hidden}
.gallery-thumb img{width:100%;height:100%;object-fit:cover}
.gallery-meta{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:18px}
.gallery-number{font-size:11px;letter-spacing:.16em;color:#a79663}
.gallery-meta h3{font-family:"Playfair Display",serif;font-size:28px;margin:0 0 3px}
.gallery-meta p{margin:0;color:var(--muted)}
.gallery-arrow{font-size:20px}
.gallery-card-empty{min-height:360px;border-style:dashed;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px;color:#8a7f67;background:#fffdf7}
.empty-gallery-plus{width:58px;height:58px;border:1px solid #d9c585;border-radius:50%;display:grid;place-items:center;font-size:34px;margin-bottom:15px}
.gallery-card-empty strong{font-size:18px;margin-bottom:6px;color:var(--ink)}
.gallery-card-empty span{max-width:240px;font-size:13px;line-height:1.45}
.art-entry-view{border-top:1px solid var(--line);padding:34px 0 80px}
.back-to-gallery{border:0;background:none;color:#8b6b12;padding:8px 0 24px;font-weight:700}
.art-entry-card{padding-bottom:0}
.art-dialog{width:min(720px,92vw);border:1px solid var(--line);border-radius:22px;padding:0;background:#fffdf9;color:var(--ink)}
.art-dialog::backdrop{background:rgba(20,20,20,.28);backdrop-filter:blur(3px)}
.art-dialog form{padding:26px}
.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.dialog-head h3{font-family:"Playfair Display",serif;font-size:36px;margin:4px 0 18px}
.dialog-close{border:0;background:none;font-size:30px;line-height:1}
.dialog-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.dialog-grid label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.dialog-grid input,.dialog-grid textarea{font:inherit;text-transform:none;letter-spacing:normal;border:1px solid var(--line);background:#fff;padding:12px 13px;border-radius:12px;min-width:0}
.dialog-wide{grid-column:1/-1}
.dialog-note{font-size:12px;color:var(--muted);line-height:1.5}
.dialog-actions{display:flex;justify-content:flex-end;gap:10px}
.session-card .gallery-thumb{display:grid;place-items:center;color:#a78c44;font-size:42px}
.session-card .gallery-thumb::before{content:"Artwork image";font-size:13px;letter-spacing:.08em;text-transform:uppercase}
@media (max-width:900px){.art-gallery{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.art-gallery{grid-template-columns:1fr}.dialog-grid{grid-template-columns:1fr}.dialog-wide{grid-column:auto}.section-title-row{align-items:flex-start;gap:16px;flex-direction:column}}


/* Reader + universal entry controls */
.reader-page { --reader-blue:#163d68; background:#f6f1e7; min-height:100vh; }
.reader-hero { background:var(--reader-blue); color:#fff; padding:72px max(6vw,28px) 62px; }
.reader-hero h1 { font-size:clamp(4rem,11vw,9rem); line-height:.82; margin:12px 0 24px; letter-spacing:-.06em; }
.reader-hero p:last-child { max-width:620px; font-size:1.1rem; opacity:.9; }
.reader-toolbar { display:flex; justify-content:space-between; align-items:end; gap:20px; padding:48px max(6vw,28px) 24px; }
.reader-toolbar h2 { margin:5px 0 0; font-family:"Playfair Display",serif; font-size:2.3rem; }
.entry-add-btn { border:1px solid currentColor; background:transparent; border-radius:999px; padding:12px 18px; font:inherit; font-weight:700; cursor:pointer; }
.reader-toolbar .entry-add-btn { color:var(--reader-blue); }
.athlete-add { margin:16px 0 8px; color:inherit; }
.reader-gallery { padding:0 max(6vw,28px) 70px; display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:24px; }
.book-card,.empty-entry-card { border:0; background:#fff; border-radius:22px; padding:16px; box-shadow:0 10px 30px rgba(20,35,50,.08); text-align:left; cursor:pointer; }
.book-cover { aspect-ratio:2/3; border-radius:14px; overflow:hidden; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; }
.book-cover img { width:100%; height:100%; object-fit:cover; }
.explorer-cover { color:#fff7df; background:linear-gradient(#153d49,#2d675a 52%,#1e4a38); padding:22px; }
.explorer-cover strong { font-family:"Playfair Display",serif; font-size:2.3rem; line-height:.9; margin:22px 0; }
.cover-small,.cover-jungle { font-size:.68rem; letter-spacing:.16em; }
.book-card-copy { padding:16px 5px 5px; }
.book-card-copy>span { font-size:.72rem; letter-spacing:.12em; opacity:.58; }
.book-card-copy h3 { margin:8px 0 2px; font-size:1.25rem; }
.book-card-copy p { margin:0 0 8px; opacity:.65; }
.stars { letter-spacing:.08em; color:#163d68; }.stars span{opacity:.2}
.empty-entry-card { min-height:330px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; color:#163d68; border:1px dashed #9aa9b8; background:transparent; }
.empty-entry-card span { font-size:2.5rem; }
.book-detail { padding:0 max(6vw,28px) 70px; }
.book-entry { max-width:1000px; margin:auto; display:grid; grid-template-columns:minmax(220px,340px) 1fr; gap:50px; align-items:start; }
.book-entry .book-cover { width:100%; }
.book-entry h2 { font-family:"Playfair Display",serif; font-size:clamp(2.5rem,6vw,5rem); margin:4px 0 5px; }
.book-entry .meta { opacity:.6; margin-bottom:30px; }
.book-entry h3 { margin:26px 0 8px; }
.back-library { margin-bottom:30px; }
.entry-dialog { width:min(620px,92vw); border:0; border-radius:22px; padding:0; box-shadow:0 24px 80px rgba(0,0,0,.25); }
.entry-dialog::backdrop { background:rgba(10,15,20,.55); }
.entry-dialog form { padding:30px; display:grid; gap:14px; position:relative; }
.entry-dialog h2 { margin:0 0 5px; }
.entry-dialog label { display:grid; gap:6px; font-weight:600; }
.entry-dialog input,.entry-dialog textarea,.entry-dialog select { width:100%; box-sizing:border-box; border:1px solid #c9c9c9; border-radius:10px; padding:11px; font:inherit; background:#fff; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.dialog-close { position:absolute; right:18px; top:14px; border:0; background:none; font-size:1.8rem; cursor:pointer; }
.primary-btn { border:0; border-radius:999px; padding:13px 18px; background:#163d68; color:#fff; font:inherit; font-weight:700; cursor:pointer; }
@media(max-width:700px){.book-entry{grid-template-columns:1fr}.book-entry .book-cover{max-width:300px}.reader-toolbar{align-items:start;flex-direction:column}.form-row{grid-template-columns:1fr}}

/* Hidden-view safety */
[hidden] { display: none !important; }

.book-card { width: 100%; font: inherit; color: inherit; }

[data-page] { cursor: pointer; }
.home-card, .home-tile, .identity-card, .big-icon, .section-card { cursor: pointer; }
.home-card *, .home-tile *, .identity-card *, .big-icon *, .section-card * { pointer-events: none; }


/* =========================
   JOURNAL — cherry pink
   ========================= */
.journal-page {
  --cherry:#a82e55;
  --cherry-dark:#74213e;
  --cherry-soft:#edb8c8;
  --blush:#fff3f6;
  --paper:#fffaf7;
  background:var(--paper);
  min-height:100vh;
}
.journal-hero {
  background:linear-gradient(135deg,#a92f57 0%,#cb6888 58%,#efb5c5 100%);
  color:white;
  padding:72px 0 66px;
  overflow:hidden;
  position:relative;
}
.journal-hero::after {
  content:"";
  position:absolute;
  width:340px;height:340px;
  border:1px solid rgba(255,255,255,.28);
  border-radius:50%;
  right:-80px;top:-130px;
  box-shadow:0 0 0 55px rgba(255,255,255,.06),0 0 0 110px rgba(255,255,255,.04);
}
.journal-hero h1 {
  margin:8px 0 18px;
  font-size:clamp(4.5rem,11vw,9rem);
  line-height:.82;
  letter-spacing:-.06em;
}
.journal-hero p:last-child {max-width:650px;font-size:1.08rem;opacity:.92}
.journal-gallery-wrap {padding-top:46px;padding-bottom:74px}
.journal-add-btn,.journal-save-btn {
  border:0;border-radius:999px;padding:13px 19px;
  background:var(--cherry);color:white;font:inherit;font-weight:700;cursor:pointer;
}
.journal-grid {
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:24px;
  margin-top:24px;
}
.journal-card {
  border:0;border-radius:24px;overflow:hidden;padding:0;
  background:white;text-align:left;cursor:pointer;color:inherit;font:inherit;
  box-shadow:0 12px 34px rgba(96,28,53,.10);
  transition:transform .18s ease, box-shadow .18s ease;
}
.journal-card:hover {transform:translateY(-3px);box-shadow:0 17px 42px rgba(96,28,53,.15)}
.journal-card-visual {
  position:relative;
  min-height:220px;
  padding:18px;
  background:linear-gradient(145deg,#f3c2d0,#d16e8c);
}
.journal-number {
  position:absolute;left:18px;top:16px;color:white;
  font-size:.72rem;letter-spacing:.15em;font-weight:700;
}
.journal-photo-placeholder {
  height:180px;border:1px dashed rgba(255,255,255,.7);border-radius:16px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:white;gap:4px;background:rgba(255,255,255,.08);
}
.journal-photo-placeholder span {font-weight:800;letter-spacing:.18em}
.journal-photo-placeholder small {opacity:.82}
.journal-card-copy {padding:20px 20px 22px;position:relative}
.journal-card-copy>span:first-child {
  font-size:.7rem;letter-spacing:.14em;color:var(--cherry);font-weight:800;
}
.journal-card-copy h3 {font-family:"Playfair Display",serif;font-size:1.55rem;margin:7px 34px 7px 0}
.journal-card-copy p {margin:0;color:#65545a}
.journal-arrow {position:absolute!important;right:20px;top:22px;color:var(--cherry)!important;font-size:1.3rem!important}
.journal-card-empty {
  min-height:370px;border:1px dashed #d89bae;background:var(--blush);
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  padding:28px;color:var(--cherry-dark);gap:8px;
}
.journal-plus {font-size:3rem;line-height:1}
.journal-card-empty strong {font-size:1.05rem}
.journal-card-empty small {max-width:220px;color:#866171}
.journal-detail {padding-top:46px;padding-bottom:80px}
.journal-back {margin-bottom:28px;border:1px solid var(--cherry);color:var(--cherry);background:transparent;border-radius:999px;padding:11px 16px;font:inherit;font-weight:700;cursor:pointer}
.journal-entry {
  display:grid;grid-template-columns:minmax(280px,420px) 1fr;gap:52px;align-items:start;
  max-width:1080px;margin:auto;
}
.journal-entry-media {
  background:linear-gradient(145deg,#f5cad5,#d16f8c);border-radius:24px;min-height:440px;
  overflow:hidden;display:flex;align-items:center;justify-content:center;color:white;
}
.journal-entry-media img {width:100%;height:100%;min-height:440px;object-fit:cover}
.journal-entry-media .journal-photo-placeholder {width:calc(100% - 36px);height:400px}
.journal-entry-copy .eyebrow {color:var(--cherry)}
.journal-entry-copy h2 {font-family:"Playfair Display",serif;font-size:clamp(2.6rem,6vw,5rem);line-height:.95;margin:8px 0 12px}
.journal-meta {color:#8b6e77;margin-bottom:30px}
.journal-entry-copy h3 {margin:27px 0 8px;color:var(--cherry-dark)}
.journal-entry-copy p {font-size:1.04rem;line-height:1.75}
.delete-entry-btn {
  margin-top:32px;border:1px solid #ba4b66;background:transparent;color:#9d2947;
  border-radius:999px;padding:10px 15px;font:inherit;font-weight:700;cursor:pointer;
}
.journal-dialog .eyebrow {color:#a82e55}
.journal-dialog .journal-save-btn {background:#a82e55}
.persisted-entry-badge {font-size:.68rem;letter-spacing:.12em;opacity:.55}

@media(max-width:760px){
  .journal-entry{grid-template-columns:1fr}
  .journal-entry-media{min-height:300px}
  .journal-entry-media img{min-height:300px}
}

.athlete-context-add.photo-placeholder {
  border:1px dashed currentColor;
  cursor:pointer;
  font:inherit;
  color:inherit;
}
.athlete-saved-entry {
  margin-top:18px;
  padding:18px;
  border-radius:18px;
  background:#fff;
  box-shadow:0 8px 24px rgba(0,0,0,.07);
}
.athlete-saved-entry img,
.athlete-saved-entry video {
  width:100%;
  max-height:420px;
  object-fit:cover;
  border-radius:14px;
  margin-top:12px;
}
.athlete-saved-entry .delete-entry-btn { margin-top:14px; }
.hero-photo img {width:100%;height:100%;object-fit:cover;border-radius:inherit}

.memories-page{--amber:#b86628;--amber-dark:#78401c;--peach:#efb27f;--cream:#fff8ee;background:#fffaf4;min-height:100vh}
.memories-hero{padding:72px 0 66px;color:#fff;background:linear-gradient(135deg,#a95325,#d88349 58%,#f2c09a)}
.memories-hero h1{font-size:clamp(4.5rem,11vw,9rem);line-height:.82;letter-spacing:-.06em;margin:8px 0 18px}
.memories-hero p:last-child{max-width:650px;font-size:1.08rem}
.memories-wrap{padding-top:46px;padding-bottom:75px}
.memory-add-btn{border:0;border-radius:999px;padding:13px 19px;background:var(--amber,#b86628);color:#fff;font:inherit;font-weight:700;cursor:pointer}
.memories-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:24px;margin-top:25px}
.memory-card{border:0;border-radius:24px;overflow:hidden;background:#fff;text-align:left;padding:0;font:inherit;color:inherit;cursor:pointer;box-shadow:0 12px 34px rgba(112,61,25,.11)}
.memory-image-placeholder{min-height:240px;background:linear-gradient(145deg,#f1c49e,#cf7940);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;position:relative}
.memory-image-placeholder>span{position:absolute;top:18px;left:18px;font-size:.72rem;letter-spacing:.15em}
.memory-image-placeholder strong{letter-spacing:.18em}.memory-image-placeholder img{width:100%;height:240px;object-fit:cover}
.memory-card-copy{padding:21px;position:relative}.memory-card-copy>span{font-size:.7rem;letter-spacing:.14em;color:#b86628;font-weight:800}
.memory-card-copy h3{font-family:"Playfair Display",serif;font-size:1.6rem;margin:7px 35px 7px 0}.memory-card-copy p{color:#6f5a4c}.memory-card-copy b{position:absolute;right:20px;top:22px;color:#b86628}
.memory-empty{min-height:380px;border:1px dashed #d99d70;background:#fff5e8;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px;color:#78401c;gap:8px}
.memory-empty strong{font-size:3rem}.memory-detail{padding-top:46px;padding-bottom:80px}
.memory-entry{display:grid;grid-template-columns:minmax(280px,420px) 1fr;gap:52px;max-width:1080px;margin:auto}.memory-entry-copy h2{font-family:"Playfair Display",serif;font-size:clamp(2.6rem,6vw,5rem);line-height:.95;margin:8px 0 14px}.memory-entry-copy h3{color:#78401c;margin:27px 0 8px}.memory-entry-copy p{line-height:1.75}.memory-back{margin-bottom:28px;border:1px solid #b86628;color:#b86628;background:transparent;border-radius:999px;padding:11px 16px;font:inherit;font-weight:700;cursor:pointer}
@media(max-width:760px){.memory-entry{grid-template-columns:1fr}}

/* v12 — all +New controls use the same interaction language as Artwork */
.unified-new-btn,
.athlete-context-add,
#emptyBookBtn,#emptyJournalBtn,#emptyMemoryBtn,[data-new-artwork]{
  cursor:pointer;
}
dialog form input, dialog form textarea, dialog form select{
  width:100%;
  box-sizing:border-box;
}
dialog::backdrop{background:rgba(28,22,24,.45);backdrop-filter:blur(2px)}

/* v15 — use the real published cover for The Explorer */
.actual-book-cover{
  padding:0 !important;
  overflow:hidden;
  background:#fff !important;
}
.actual-book-cover img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}

.cover-fallback{width:100%;height:100%;min-height:260px;display:flex;flex-direction:column;
align-items:center;justify-content:center;text-align:center;padding:22px;box-sizing:border-box;
background:linear-gradient(160deg,#0f4569,#0a7a66);color:white}
.cover-fallback span,.cover-fallback small{font-size:.72rem;letter-spacing:.12em}
.cover-fallback strong{font-family:"Playfair Display",serif;font-size:2.2rem;line-height:.95;margin:12px 0}
.actual-book-cover,.actual-book-cover img{aspect-ratio:2/3}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{
outline:3px solid currentColor;outline-offset:3px}

.add-content-btn{cursor:pointer;transition:transform .12s ease,opacity .12s ease,filter .12s ease}
.add-content-btn:active{transform:scale(.97)}
.add-content-btn[disabled]{cursor:not-allowed;opacity:.55}

/* v20 — selected top navigation label matches its page theme */
:root{
  --nav-works:#b58a1f;
  --nav-athlete:#b8483f;
  --nav-reader:#2f5f9d;
  --nav-journal:#b64f73;
  --nav-memories:#b86628;
  --nav-about:#6b6f77;
}
[data-nav-theme]{transition:color .18s ease}
[data-nav-theme="works"].theme-active{color:var(--nav-works)!important}
[data-nav-theme="athlete"].theme-active{color:var(--nav-athlete)!important}
[data-nav-theme="reader"].theme-active{color:var(--nav-reader)!important}
[data-nav-theme="journal"].theme-active{color:var(--nav-journal)!important}
[data-nav-theme="memories"].theme-active{color:var(--nav-memories)!important}
[data-nav-theme="about"].theme-active{color:var(--nav-about)!important}

/* v21 — active navigation underline matches the selected page theme */
[data-nav-theme]{position:relative}

/* Cover the existing red active underline with the correct themed one. */
[data-nav-theme].theme-active::after,
[data-nav-theme][aria-current="page"]::after{
  background:currentColor !important;
  border-color:currentColor !important;
}

/* Handle sites where the underline is implemented as border-bottom instead. */
[data-nav-theme="works"].theme-active{border-bottom-color:var(--nav-works)!important}
[data-nav-theme="athlete"].theme-active{border-bottom-color:var(--nav-athlete)!important}
[data-nav-theme="reader"].theme-active{border-bottom-color:var(--nav-reader)!important}
[data-nav-theme="journal"].theme-active{border-bottom-color:var(--nav-journal)!important}
[data-nav-theme="memories"].theme-active{border-bottom-color:var(--nav-memories)!important}
[data-nav-theme="about"].theme-active{border-bottom-color:var(--nav-about)!important}

/* v22 — themed page-entry animations */
@keyframes worksRise {
  0% { opacity:0; transform:translateY(18px) scale(.985); }
  70% { opacity:1; transform:translateY(-2px) scale(1.002); }
  100% { opacity:1; transform:translateY(0) scale(1); }
}
@keyframes athleteSnap {
  0% { opacity:0; transform:translateX(-24px) scale(.985); }
  60% { opacity:1; transform:translateX(4px) scale(1.005); }
  100% { opacity:1; transform:translateX(0) scale(1); }
}
@keyframes readerDrift {
  0% { opacity:0; transform:translateY(10px) translateX(12px); }
  100% { opacity:1; transform:translateY(0) translateX(0); }
}
@keyframes journalBloom {
  0% { opacity:0; transform:scale(.972); filter:blur(2px); }
  65% { opacity:1; transform:scale(1.008); filter:blur(0); }
  100% { opacity:1; transform:scale(1); }
}
@keyframes memoriesGlow {
  0% { opacity:0; transform:translateY(14px); filter:brightness(.92); }
  55% { opacity:1; transform:translateY(-2px); filter:brightness(1.04); }
  100% { opacity:1; transform:translateY(0); filter:brightness(1); }
}
@keyframes aboutCalm {
  0% { opacity:0; transform:translateY(12px); }
  100% { opacity:1; transform:translateY(0); }
}
@keyframes entryChild {
  from { opacity:0; transform:translateY(8px); }
  to { opacity:1; transform:translateY(0); }
}
@keyframes bookOpen {
  from { opacity:0; transform:perspective(700px) rotateY(-4deg) translateX(8px); }
  to { opacity:1; transform:perspective(700px) rotateY(0) translateX(0); }
}
@keyframes athleteItem {
  from { opacity:0; transform:translateY(8px) scale(.985); }
  to { opacity:1; transform:translateY(0) scale(1); }
}
@keyframes softLift {
  from { opacity:0; transform:translateY(10px); }
  to { opacity:1; transform:translateY(0); }
}

#works.page-enter,
#builder.page-enter { animation:worksRise .62s cubic-bezier(.2,.8,.2,1) both; }

#athlete.page-enter { animation:athleteSnap .52s cubic-bezier(.2,.9,.25,1) both; }

#reader.page-enter { animation:readerDrift .58s ease-out both; }

#journal.page-enter { animation:journalBloom .62s cubic-bezier(.2,.8,.2,1) both; }

#memories.page-enter { animation:memoriesGlow .64s cubic-bezier(.2,.8,.2,1) both; }

#about.page-enter { animation:aboutCalm .5s ease-out both; }

.page-enter > * {
  animation:entryChild .42s ease-out both;
}
.page-enter > *:nth-child(1) { animation-delay:.04s; }
.page-enter > *:nth-child(2) { animation-delay:.08s; }
.page-enter > *:nth-child(3) { animation-delay:.12s; }
.page-enter > *:nth-child(4) { animation-delay:.16s; }

#reader.page-enter .book-card,
#reader.page-enter [class*="book"] {
  transform-origin:left center;
  animation:bookOpen .5s ease-out both;
}

#athlete.page-enter button,
#athlete.page-enter .card {
  animation:athleteItem .35s ease-out both;
}

#journal.page-enter .card,
#memories.page-enter .card {
  animation:softLift .48s ease-out both;
}

@media (prefers-reduced-motion: reduce) {
  .page-enter,
  .page-enter > *,
  #reader.page-enter .book-card,
  #reader.page-enter [class*="book"],
  #athlete.page-enter button,
  #athlete.page-enter .card,
  #journal.page-enter .card,
  #memories.page-enter .card {
    animation:none !important;
    transform:none !important;
    filter:none !important;
    opacity:1 !important;
  }
}

/* v23 — more playful, page-specific entrance animations */

/* WORKS: cards pop in like pieces being placed onto a desk */
@keyframes worksFunIn {
  0%   { opacity:0; transform:translateY(28px) rotate(-1.5deg) scale(.94); }
  55%  { opacity:1; transform:translateY(-7px) rotate(.7deg) scale(1.025); }
  78%  { transform:translateY(3px) rotate(-.25deg) scale(.995); }
  100% { opacity:1; transform:translateY(0) rotate(0) scale(1); }
}

/* ATHLETE: energetic lateral spring */
@keyframes athleteFunIn {
  0%   { opacity:0; transform:translateX(-42px) skewX(-3deg) scale(.94); }
  52%  { opacity:1; transform:translateX(9px) skewX(1deg) scale(1.025); }
  76%  { transform:translateX(-4px) skewX(0) scale(.995); }
  100% { opacity:1; transform:translateX(0) scale(1); }
}

/* READER: subtle page-turn feeling */
@keyframes readerFunIn {
  0%   { opacity:0; transform:perspective(900px) rotateY(-8deg) translateX(28px) scale(.97); }
  65%  { opacity:1; transform:perspective(900px) rotateY(1.5deg) translateX(-3px) scale(1.01); }
  100% { opacity:1; transform:perspective(900px) rotateY(0) translateX(0) scale(1); }
}

/* JOURNAL: playful blossom/pop */
@keyframes journalFunIn {
  0%   { opacity:0; transform:scale(.88) rotate(-1.2deg); filter:blur(3px); }
  58%  { opacity:1; transform:scale(1.035) rotate(.6deg); filter:blur(0); }
  80%  { transform:scale(.99) rotate(-.2deg); }
  100% { opacity:1; transform:scale(1) rotate(0); }
}

/* MEMORIES: warm floating "memory bubble" arrival */
@keyframes memoriesFunIn {
  0%   { opacity:0; transform:translateY(30px) scale(.92); filter:brightness(.92); }
  50%  { opacity:1; transform:translateY(-9px) scale(1.025); filter:brightness(1.06); }
  76%  { transform:translateY(3px) scale(.995); }
  100% { opacity:1; transform:translateY(0) scale(1); filter:brightness(1); }
}

/* ABOUT: friendly bounce, calmer than the other sections */
@keyframes aboutFunIn {
  0%   { opacity:0; transform:translateY(22px) scale(.96); }
  62%  { opacity:1; transform:translateY(-5px) scale(1.012); }
  82%  { transform:translateY(2px) scale(.998); }
  100% { opacity:1; transform:translateY(0) scale(1); }
}

#works.page-enter,
#builder.page-enter {
  animation:worksFunIn .72s cubic-bezier(.18,.88,.3,1.18) both !important;
}

#athlete.page-enter {
  animation:athleteFunIn .62s cubic-bezier(.16,.9,.25,1.22) both !important;
}

#reader.page-enter {
  transform-origin:left center;
  animation:readerFunIn .72s cubic-bezier(.2,.78,.28,1.12) both !important;
}

#journal.page-enter {
  animation:journalFunIn .72s cubic-bezier(.18,.82,.28,1.18) both !important;
}

#memories.page-enter {
  animation:memoriesFunIn .74s cubic-bezier(.18,.84,.3,1.16) both !important;
}

#about.page-enter {
  animation:aboutFunIn .62s cubic-bezier(.2,.82,.3,1.12) both !important;
}

/* More playful stagger */
.page-enter > *:nth-child(1){ animation-delay:.03s !important; }
.page-enter > *:nth-child(2){ animation-delay:.09s !important; }
.page-enter > *:nth-child(3){ animation-delay:.15s !important; }
.page-enter > *:nth-child(4){ animation-delay:.21s !important; }
.page-enter > *:nth-child(5){ animation-delay:.27s !important; }

/* Cards get a tiny individual pop */
@keyframes funCardPop {
  0%   { opacity:0; transform:translateY(14px) scale(.95) rotate(-.5deg); }
  65%  { opacity:1; transform:translateY(-3px) scale(1.015) rotate(.2deg); }
  100% { opacity:1; transform:translateY(0) scale(1) rotate(0); }
}

.page-enter .card,
.page-enter .book-card {
  animation:funCardPop .48s cubic-bezier(.2,.85,.3,1.15) both;
}

/* Athlete tabs/buttons pop in quickly */
@keyframes sportyButtonPop {
  0%   { opacity:0; transform:scale(.88) translateY(7px); }
  68%  { opacity:1; transform:scale(1.045) translateY(-2px); }
  100% { opacity:1; transform:scale(1) translateY(0); }
}

#athlete.page-enter button {
  animation:sportyButtonPop .34s cubic-bezier(.2,.88,.3,1.22) both;
}

/* Gentle shimmer sweep on the page title area, without changing colours */
.page-enter h1,
.page-enter .hero-title,
.page-enter [class*="title"] {
  position:relative;
}

@keyframes titleBounceIn {
  0%   { opacity:0; transform:translateY(-9px) scale(.96); letter-spacing:.03em; }
  65%  { opacity:1; transform:translateY(2px) scale(1.015); }
  100% { opacity:1; transform:translateY(0) scale(1); }
}

.page-enter h1,
.page-enter .hero-title {
  animation:titleBounceIn .5s cubic-bezier(.2,.86,.3,1.18) both;
}

@media (prefers-reduced-motion: reduce) {
  #works.page-enter,
  #builder.page-enter,
  #athlete.page-enter,
  #reader.page-enter,
  #journal.page-enter,
  #memories.page-enter,
  #about.page-enter,
  .page-enter > *,
  .page-enter .card,
  .page-enter .book-card,
  #athlete.page-enter button,
  .page-enter h1,
  .page-enter .hero-title {
    animation:none !important;
    transform:none !important;
    filter:none !important;
    opacity:1 !important;
  }
}


/* v24 — About is intentionally unlike the gallery-style pages */
.about-page{
  --about-ink:#232323;
  --about-soft:#eee9df;
  --about-line:#c9c0ae;
  --about-accent:#66756b;
  min-height:760px;
  background:
    radial-gradient(circle at 82% 22%, rgba(102,117,107,.10), transparent 24%),
    linear-gradient(135deg,#f6f1e7 0%,#f9f6ef 58%,#eee9df 100%);
  color:var(--about-ink);
  overflow:hidden;
}

.about-stage{
  position:relative;
  max-width:1220px;
  min-height:780px;
  margin:0 auto;
  padding:92px 72px 110px;
  display:grid;
  grid-template-columns:1.08fr .92fr;
  grid-template-rows:auto auto auto;
  gap:42px 88px;
}

.about-ghost-letter{
  position:absolute;
  right:-34px;
  top:-118px;
  font-family:"Playfair Display",serif;
  font-size:610px;
  line-height:1;
  font-weight:700;
  color:rgba(35,35,35,.035);
  user-select:none;
  pointer-events:none;
}

.about-intro{
  position:relative;
  z-index:2;
  grid-column:1;
  grid-row:1;
  align-self:start;
}

.about-kicker{
  margin:0 0 19px;
  font-family:"DM Sans",sans-serif;
  font-size:12px;
  font-weight:700;
  letter-spacing:.24em;
  color:var(--about-accent);
}

.about-intro h1{
  margin:0;
  font-family:"Playfair Display",serif;
  font-size:clamp(62px,7.2vw,112px);
  line-height:.82;
  letter-spacing:-.065em;
  font-weight:600;
}

.about-traits{
  margin:30px 0 0;
  font-family:"DM Sans",sans-serif;
  font-size:15px;
  letter-spacing:.04em;
}
.about-traits span{padding:0 9px;color:var(--about-accent)}

.about-story{
  position:relative;
  z-index:2;
  max-width:590px;
  font-family:"DM Sans",sans-serif;
  font-size:17px;
  line-height:1.75;
}

.about-story p{margin:0}

.about-number{
  display:block;
  margin-bottom:14px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.22em;
  color:var(--about-accent);
}

.about-story-one{
  grid-column:2;
  grid-row:1;
  padding-top:38px;
  align-self:end;
}

.about-story-two{
  grid-column:1;
  grid-row:2;
  width:84%;
  margin-left:13%;
}

.about-story-three{
  grid-column:2;
  grid-row:2;
  margin-top:76px;
  width:88%;
}

.about-story::before{
  content:"";
  position:absolute;
  top:5px;
  left:-24px;
  width:1px;
  height:calc(100% - 5px);
  background:var(--about-line);
}

.about-motto{
  position:relative;
  z-index:2;
  grid-column:1 / -1;
  grid-row:3;
  margin-top:16px;
  padding:36px 0 0 13%;
  border-top:1px solid var(--about-line);
}

.about-motto span{
  display:block;
  margin-bottom:10px;
  font:700 11px/1 "DM Sans",sans-serif;
  letter-spacing:.22em;
  color:var(--about-accent);
}

.about-motto blockquote{
  margin:0;
  max-width:790px;
  font-family:"Playfair Display",serif;
  font-size:clamp(30px,4vw,57px);
  line-height:1.08;
  font-style:italic;
  letter-spacing:-.025em;
}

.about-now-future{
  position:absolute;
  left:22px;
  top:288px;
  bottom:145px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  color:var(--about-accent);
  font:700 9px/1 "DM Sans",sans-serif;
  letter-spacing:.18em;
  writing-mode:vertical-rl;
}

.about-now-future i{
  display:block;
  width:1px;
  flex:1;
  background:linear-gradient(to bottom,var(--about-accent),rgba(102,117,107,.18));
}

.about-path{
  position:absolute;
  z-index:1;
  left:49%;
  top:188px;
  width:2px;
  height:345px;
  background:linear-gradient(to bottom,transparent,var(--about-line) 12%,var(--about-line) 88%,transparent);
  transform:rotate(8deg);
}

.about-path-dot{
  position:absolute;
  left:50%;
  width:9px;
  height:9px;
  border:2px solid var(--about-accent);
  border-radius:50%;
  background:#f6f1e7;
  transform:translateX(-50%);
}
.dot-one{top:14%}
.dot-two{top:50%}
.dot-three{top:87%}

/* Unique About entry motion: it assembles like a personal timeline */
@keyframes aboutHeadlineIn{
  from{opacity:0;transform:translateX(-34px) rotate(-1deg)}
  to{opacity:1;transform:translateX(0) rotate(0)}
}
@keyframes aboutStoryIn{
  0%{opacity:0;transform:translateY(25px)}
  70%{opacity:1;transform:translateY(-3px)}
  100%{opacity:1;transform:translateY(0)}
}
@keyframes aboutLineDraw{
  from{opacity:0;transform:rotate(8deg) scaleY(0)}
  to{opacity:1;transform:rotate(8deg) scaleY(1)}
}
@keyframes aboutMottoIn{
  from{opacity:0;transform:translateX(25px)}
  to{opacity:1;transform:translateX(0)}
}

#about.page-enter .about-intro{
  animation:aboutHeadlineIn .65s cubic-bezier(.2,.8,.2,1) both !important;
}
#about.page-enter .about-path{
  transform-origin:top center;
  animation:aboutLineDraw .75s .15s ease-out both !important;
}
#about.page-enter .about-story-one{
  animation:aboutStoryIn .55s .18s ease-out both !important;
}
#about.page-enter .about-story-two{
  animation:aboutStoryIn .55s .30s ease-out both !important;
}
#about.page-enter .about-story-three{
  animation:aboutStoryIn .55s .42s ease-out both !important;
}
#about.page-enter .about-motto{
  animation:aboutMottoIn .62s .54s ease-out both !important;
}

/* Stop the generic v23 child animation from fighting the bespoke About layout */
#about.page-enter > *,
#about.page-enter .about-stage > *{
  animation-fill-mode:both;
}

@media (max-width:820px){
  .about-stage{
    display:block;
    min-height:0;
    padding:72px 34px 86px 48px;
  }
  .about-intro{margin-bottom:58px}
  .about-intro h1{font-size:clamp(58px,17vw,92px)}
  .about-story,
  .about-story-one,
  .about-story-two,
  .about-story-three{
    width:auto;
    max-width:none;
    margin:0 0 48px 18px;
    padding-top:0;
  }
  .about-motto{
    margin-top:22px;
    padding:32px 0 0 18px;
  }
  .about-path{display:none}
  .about-now-future{left:13px;top:220px;bottom:100px}
  .about-ghost-letter{font-size:390px;right:-80px;top:-40px}
}

@media (prefers-reduced-motion:reduce){
  #about.page-enter .about-intro,
  #about.page-enter .about-path,
  #about.page-enter .about-story-one,
  #about.page-enter .about-story-two,
  #about.page-enter .about-story-three,
  #about.page-enter .about-motto{
    animation:none !important;
    opacity:1 !important;
    transform:none !important;
  }
}

/* v25 — layered, more complex page-entry choreography */
@keyframes sweepAcross{0%{opacity:0;transform:translateX(-80%)}25%{opacity:.5}100%{opacity:0;transform:translateX(80%)}}
.page-enter::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.34) 50%,transparent 70%);
  animation:sweepAcross .95s .08s ease-out both;
}

/* WORKS */
@keyframes worksTitle{0%{opacity:0;transform:translateY(-42px) rotate(-2deg) scale(.9)}62%{opacity:1;transform:translateY(7px) rotate(.7deg) scale(1.03)}100%{opacity:1;transform:none}}
@keyframes worksLeft{0%{opacity:0;transform:translate(-58px,30px) rotate(-5deg) scale(.86)}68%{opacity:1;transform:translate(6px,-4px) rotate(1deg) scale(1.025)}100%{opacity:1;transform:none}}
@keyframes worksRight{0%{opacity:0;transform:translate(58px,30px) rotate(5deg) scale(.86)}68%{opacity:1;transform:translate(-6px,-4px) rotate(-1deg) scale(1.025)}100%{opacity:1;transform:none}}
#works.page-enter h1,#builder.page-enter h1{animation:worksTitle .75s cubic-bezier(.16,.9,.25,1.2) both!important}
#works.page-enter .card:nth-of-type(odd),#builder.page-enter .card:nth-of-type(odd){animation:worksLeft .72s .14s cubic-bezier(.2,.82,.28,1.18) both!important}
#works.page-enter .card:nth-of-type(even),#builder.page-enter .card:nth-of-type(even){animation:worksRight .72s .23s cubic-bezier(.2,.82,.28,1.18) both!important}

/* ATHLETE */
@keyframes athleteDash{0%{opacity:0;transform:translateX(-115px) skewX(-8deg) scaleX(.85)}50%{opacity:1;transform:translateX(18px) skewX(2deg) scaleX(1.04)}74%{transform:translateX(-7px) skewX(-1deg)}100%{opacity:1;transform:none}}
@keyframes athletePop{0%{opacity:0;transform:scale(.72) translateY(9px)}65%{opacity:1;transform:scale(1.08) translateY(-2px)}84%{transform:scale(.97)}100%{opacity:1;transform:scale(1)}}
#athlete.page-enter h1{animation:athleteDash .62s cubic-bezier(.12,.9,.2,1.25) both!important}
#athlete.page-enter button:nth-of-type(odd){animation:athletePop .4s .20s cubic-bezier(.2,.85,.3,1.3) both!important}
#athlete.page-enter button:nth-of-type(even){animation:athletePop .4s .30s cubic-bezier(.2,.85,.3,1.3) both!important}

/* READER */
@keyframes readerTurn{0%{opacity:0;transform:perspective(900px) rotateY(-18deg) translateX(65px) scale(.92);filter:blur(2px)}58%{opacity:1;transform:perspective(900px) rotateY(4deg) translateX(-8px) scale(1.02);filter:blur(0)}80%{transform:perspective(900px) rotateY(-1.5deg) translateX(2px)}100%{opacity:1;transform:none}}
@keyframes textReveal{from{opacity:0;clip-path:inset(0 100% 0 0);transform:translateX(12px)}to{opacity:1;clip-path:inset(0 0 0 0);transform:none}}
#reader.page-enter h1{transform-origin:left center;animation:readerTurn .8s cubic-bezier(.2,.78,.28,1.16) both!important}
#reader.page-enter p,#reader.page-enter .book-card{animation:textReveal .65s .20s ease-out both!important}

/* JOURNAL */
@keyframes journalInk{0%{opacity:0;clip-path:circle(0% at 14% 20%);transform:scale(.9) rotate(-2deg)}60%{opacity:1;clip-path:circle(80% at 35% 35%);transform:scale(1.025) rotate(.7deg)}100%{opacity:1;clip-path:circle(150% at 50% 50%);transform:none}}
@keyframes journalFloat{0%{opacity:0;transform:translateY(30px) rotate(1.5deg)}64%{opacity:1;transform:translateY(-5px) rotate(-.4deg)}100%{opacity:1;transform:none}}
#journal.page-enter h1{animation:journalInk .84s cubic-bezier(.18,.82,.28,1.15) both!important}
#journal.page-enter .card:nth-of-type(odd){animation:journalFloat .62s .22s ease-out both!important}
#journal.page-enter .card:nth-of-type(even){animation:journalFloat .62s .34s ease-out both!important}

/* MEMORIES */
@keyframes memoryFocus{0%{opacity:0;transform:translateY(36px) scale(.82);filter:blur(7px) brightness(.9)}54%{opacity:1;transform:translateY(-7px) scale(1.035);filter:blur(0) brightness(1.06)}82%{transform:translateY(2px) scale(.992)}100%{opacity:1;transform:none;filter:none}}
#memories.page-enter h1{animation:memoryFocus .8s cubic-bezier(.18,.84,.28,1.18) both!important}
#memories.page-enter .card:nth-of-type(1){animation:memoryFocus .7s .16s both!important}
#memories.page-enter .card:nth-of-type(2){animation:memoryFocus .7s .28s both!important}
#memories.page-enter .card:nth-of-type(3){animation:memoryFocus .7s .40s both!important}

/* ABOUT — multi-stage timeline sequence */
@keyframes aboutR{0%{opacity:0;transform:translate(65px,-35px) rotate(8deg) scale(.78)}65%{opacity:1;transform:translate(-6px,4px) rotate(-1deg) scale(1.025)}100%{opacity:1;transform:none}}
@keyframes aboutKicker{from{opacity:0;letter-spacing:.6em;transform:translateX(-28px)}to{opacity:1;letter-spacing:.24em;transform:none}}
@keyframes aboutTitle{0%{opacity:0;transform:translate(-42px,18px) skewY(-3deg);filter:blur(3px)}62%{opacity:1;transform:translate(5px,-3px) skewY(.5deg);filter:blur(0)}100%{opacity:1;transform:none}}
@keyframes aboutTrait{0%{opacity:0;transform:translateY(12px) scale(.88)}70%{opacity:1;transform:translateY(-2px) scale(1.035)}100%{opacity:1;transform:none}}
@keyframes timelineDraw{0%{opacity:0;transform:rotate(8deg) scaleY(0)}100%{opacity:1;transform:rotate(8deg) scaleY(1)}}
@keyframes dotPulse{0%{opacity:0;transform:translateX(-50%) scale(0)}65%{opacity:1;transform:translateX(-50%) scale(1.55)}100%{opacity:1;transform:translateX(-50%) scale(1)}}
@keyframes storyLeft{0%{opacity:0;transform:translate(-38px,16px);filter:blur(2px)}70%{opacity:1;transform:translate(4px,-2px);filter:blur(0)}100%{opacity:1;transform:none}}
@keyframes storyRight{0%{opacity:0;transform:translate(38px,16px);filter:blur(2px)}70%{opacity:1;transform:translate(-4px,-2px);filter:blur(0)}100%{opacity:1;transform:none}}
@keyframes mottoReveal{0%{opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(16px)}100%{opacity:1;clip-path:inset(0 0 0 0);transform:none}}

#about.page-enter .about-ghost-letter{animation:aboutR .95s cubic-bezier(.16,.86,.25,1.18) both!important}
#about.page-enter .about-kicker{animation:aboutKicker .64s .08s ease-out both!important}
#about.page-enter .about-intro h1{animation:aboutTitle .8s .16s cubic-bezier(.16,.86,.25,1.16) both!important}
#about.page-enter .about-traits{animation:aboutTrait .5s .34s cubic-bezier(.2,.85,.3,1.2) both!important}
#about.page-enter .about-path{transform-origin:top center;animation:timelineDraw .92s .35s ease-out both!important}
#about.page-enter .dot-one{animation:dotPulse .36s .56s both!important}
#about.page-enter .dot-two{animation:dotPulse .36s .76s both!important}
#about.page-enter .dot-three{animation:dotPulse .36s .96s both!important}
#about.page-enter .about-story-one{animation:storyRight .67s .52s ease-out both!important}
#about.page-enter .about-story-two{animation:storyLeft .67s .73s ease-out both!important}
#about.page-enter .about-story-three{animation:storyRight .67s .94s ease-out both!important}
#about.page-enter .about-motto{animation:mottoReveal .78s 1.10s ease-out both!important}

@media (hover:hover) and (pointer:fine){
  .page-enter .card{transition:transform .22s ease,box-shadow .22s ease}
  .page-enter .card:hover{transform:translateY(-5px) rotate(.25deg)}
}

@media (prefers-reduced-motion:reduce){
  .page-enter::before,
  #works.page-enter *,#builder.page-enter *,#athlete.page-enter *,
  #reader.page-enter *,#journal.page-enter *,#memories.page-enter *,#about.page-enter *{
    animation:none!important;transition:none!important;opacity:1!important;
    transform:none!important;filter:none!important;clip-path:none!important;
  }
}

/* v28 — ensure built-in Memory photographs render visibly */
.memory-entry-photo{
  margin:28px 0 34px;
  width:100%;
  overflow:hidden;
  border-radius:22px;
  background:#eee7dc;
}
.memory-entry-photo img{
  display:block;
  width:100%;
  max-height:560px;
  object-fit:cover;
  object-position:center;
}


/* v29 — photo sizing only; v28 Memories layout/design is unchanged */
[data-memory="highgate-first-days"] .memory-image-placeholder,
.memory-detail .memory-image-placeholder{
  aspect-ratio: 16 / 9;
  height: auto;
  min-height: 0;
  overflow: hidden;
}

[data-memory="highgate-first-days"] .memory-image-placeholder img,
.memory-detail .memory-image-placeholder img{
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}

[data-memory="highgate-first-days"] .memory-image-placeholder{
  border-radius: inherit;
}

/* v30 — Works navigation reliability */
.top-nav a[data-page="builder"].active{
  color:#b58a1f;
}


/* v31 School — creamy green */
.school-page{--sg:#71866d;--sd:#425740;background:#f8f5e5;min-height:100vh;color:#2d382c}
.school-hero{padding:72px 0 66px;background:linear-gradient(135deg,#dce7cd,#f4efd9 58%,#e7ecd8)}
.school-hero h1{margin:8px 0 18px;color:var(--sd);font-size:clamp(4.5rem,11vw,9rem);line-height:.82;letter-spacing:-.06em}
.school-hero p:last-child{max-width:680px;color:#586856;font-size:1.08rem}
.school-content{padding-top:48px;padding-bottom:80px}
.school-intro-card{padding:34px;border:1px solid #ccd7bc;border-radius:24px;background:rgba(255,255,255,.55)}
.school-intro-card>span,.school-grid article>span{font-size:.7rem;font-weight:800;letter-spacing:.17em;color:var(--sg)}
.school-intro-card h2{font-family:"Playfair Display",serif;font-size:2.5rem;margin:8px 0}
.school-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:22px}
.school-grid article{padding:26px;border:1px solid #dbe2cd;border-radius:20px;background:#fffdf3}
.school-grid h3{font-family:"Playfair Display",serif;font-size:1.55rem;margin:10px 0 7px}
.school-grid p{margin:0;color:#657063}
:root{--nav-school:#71866d}
[data-nav-theme="school"].theme-active{color:var(--nav-school)!important;border-bottom-color:var(--nav-school)!important}
[data-nav-theme="school"].theme-active::after,[data-nav-theme="school"][aria-current="page"]::after{background:var(--nav-school)!important;border-color:var(--nav-school)!important}

.training-log-head{display:flex;justify-content:space-between;align-items:end;gap:18px;margin-bottom:20px}
.training-log-head h3{margin:5px 0 0;font-size:1.7rem}
.training-entry-card{display:grid;grid-template-columns:58px 1fr;gap:18px;padding:22px;border-radius:20px;background:#fff;border:1px solid rgba(160,65,55,.16)}
.training-entry-mark{width:58px;height:58px;border-radius:16px;display:grid;place-items:center;background:#f3dfdb;color:#a7463e;font-family:"Playfair Display",serif;font-size:1.8rem;font-weight:700}
.training-entry-card span{font-size:.68rem;font-weight:800;letter-spacing:.14em;color:#b24a42}
.training-entry-card h4{font-size:1.25rem;margin:6px 0 7px}.training-entry-card p{margin:0;line-height:1.6;color:#665b59}
@keyframes schoolOpen{0%{opacity:0;transform:translateY(18px) scale(.98)}65%{opacity:1;transform:translateY(-3px) scale(1.008)}100%{opacity:1;transform:none}}
#school.page-enter{animation:schoolOpen .68s cubic-bezier(.2,.82,.28,1.12) both!important}
@media(max-width:760px){.school-grid{grid-template-columns:1fr}.training-log-head{align-items:start;flex-direction:column}}

/* v32 — Highgate Tennis Camp detailed training record */
.training-camp-card{
  width:100%;
  text-align:left;
  cursor:pointer;
  font:inherit;
  color:inherit;
}
.training-camp-card small{
  display:inline-block;
  margin-top:10px;
  color:#a7463e;
  font-weight:700;
}
.highgate-camp-view{
  padding:10px 0 34px;
}
.camp-back-btn{
  border:1px solid #c56b62;
  background:transparent;
  color:#a7463e;
  border-radius:999px;
  padding:10px 15px;
  font:inherit;
  font-weight:700;
  cursor:pointer;
  margin-bottom:22px;
}
.camp-hero{
  display:grid;
  grid-template-columns:1fr minmax(240px,360px);
  gap:28px;
  align-items:stretch;
  margin-bottom:26px;
}
.camp-hero h3{
  font-family:"Playfair Display",serif;
  font-size:clamp(2.2rem,5vw,4rem);
  margin:5px 0 10px;
}
.camp-photo-box{
  min-height:220px;
  border:1.5px dashed #d29a93;
  border-radius:22px;
  background:#fff5f2;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  cursor:pointer;
  overflow:hidden;
  text-align:center;
}
.camp-photo-box img{
  width:100%;
  height:100%;
  min-height:220px;
  object-fit:cover;
}
.camp-photo-icon{font-size:2.2rem;color:#a7463e}
.camp-photo-box small{color:#8d7470}
.camp-record-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:22px;
}
.camp-record-card{
  background:#fff;
  border:1px solid rgba(160,65,55,.14);
  border-radius:22px;
  padding:24px;
  display:grid;
  gap:14px;
}
.camp-record-card label{
  display:grid;
  gap:6px;
  font-weight:700;
}
.camp-record-card input,
.camp-record-card textarea{
  width:100%;
  box-sizing:border-box;
  border:1px solid #d9c7c4;
  border-radius:11px;
  padding:11px 12px;
  font:inherit;
  background:#fffdfc;
}
.camp-save-btn{
  border:0;
  border-radius:999px;
  padding:12px 18px;
  background:#a7463e;
  color:white;
  font:inherit;
  font-weight:800;
  cursor:pointer;
}
.camp-save-btn.secondary{
  background:#6e5a57;
}
.camp-history{
  margin-top:28px;
  padding-top:24px;
  border-top:1px solid #ead9d6;
}
.camp-history-head h4{
  font-family:"Playfair Display",serif;
  font-size:2rem;
  margin:4px 0 14px;
}
.camp-history-list{
  display:grid;
  gap:14px;
}
.camp-session-item{
  padding:18px 20px;
  border-radius:17px;
  background:#fff;
  border:1px solid #ead9d6;
}
.camp-session-item header{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
}
.camp-session-item h5{
  margin:0;
  font-size:1rem;
}
.camp-session-item p{
  margin:8px 0 0;
  line-height:1.55;
}
.camp-session-item button{
  border:0;
  background:transparent;
  color:#a7463e;
  font:inherit;
  font-weight:700;
  cursor:pointer;
}
.camp-empty-history{
  padding:22px;
  border:1px dashed #d8b7b1;
  border-radius:16px;
  color:#8d7470;
  text-align:center;
}
@media(max-width:760px){
  .camp-hero,.camp-record-grid{grid-template-columns:1fr}
}

#campPhotoBox img{width:100%;height:100%;min-height:220px;object-fit:cover;object-position:center;display:block}

.gone-series-cover{background:linear-gradient(155deg,#171d24,#293942 55%,#101419);color:#fff;padding:24px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.gone-series-cover>span{font-size:.68rem;letter-spacing:.18em}.gone-series-cover strong{font-family:"Playfair Display",serif;font-size:3.5rem;margin:14px 0}.gone-series-cover small{letter-spacing:.1em;opacity:.7}
.gone-series-detail{max-width:1080px;margin:auto}.series-head{display:flex;justify-content:space-between;gap:20px;align-items:end;margin:28px 0}.series-head h2{font-family:"Playfair Display",serif;font-size:clamp(2.8rem,6vw,5rem);margin:4px 0}.series-count{font-weight:800;letter-spacing:.12em;color:#2f5f9d}
.series-books{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.series-book{border:1px solid #dbe1e6;border-radius:20px;padding:20px;background:#fff}.series-book.read{cursor:pointer}.series-book.unread{opacity:.42;background:#f1f3f4}.series-book h3{font-family:"Playfair Display",serif;font-size:1.55rem;margin:8px 0}.series-book-number,.series-status{font-size:.68rem;font-weight:800;letter-spacing:.12em;color:#2f5f9d}
.star-rating{display:flex;gap:3px;align-items:center;margin:11px 0}.rating-star{position:relative;display:inline-block;font-size:1.35rem;line-height:1;color:#d3d8dd}.rating-star.full{color:#2f5f9d}.rating-star.half::before{content:"★";position:absolute;left:0;top:0;width:50%;overflow:hidden;color:#2f5f9d}
.series-book-detail{margin-top:28px;padding:26px;border-radius:22px;background:#f5f8fb;border:1px solid #dde5eb}.series-book-detail h3{font-family:"Playfair Display",serif;font-size:2rem;margin:7px 0}.series-book-detail h4{color:#294e7c;margin:22px 0 7px}.series-book-detail p{line-height:1.7}
@media(max-width:760px){.series-books{grid-template-columns:1fr}.series-head{align-items:start;flex-direction:column}}

/* v35 — supplied Gone Series cover image, fitted to the existing Reader design */
.gone-series-real-cover{padding:0!important;background:#fff!important;overflow:hidden}
.gone-series-real-cover img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.series-visual{width:100%;max-width:620px;margin:22px auto 30px;border-radius:20px;overflow:hidden;background:#fff;box-shadow:0 10px 28px rgba(30,55,75,.10)}
.series-visual img{display:block;width:100%;height:auto}
.hh-cover{padding:22px;box-sizing:border-box;text-align:center;background:linear-gradient(145deg,#101a36,#263c72,#0c1226);color:white}.hh-cover span,.hh-cover small{font-size:.65rem;letter-spacing:.15em}.hh-cover strong{font-family:"Playfair Display",serif;font-size:1.65rem;line-height:1.02;margin:18px 0}.hh-wrap{max-width:1080px;margin:auto}.hh-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:25px}.hh-item{padding:20px;border:1px solid #dbe1e6;border-radius:20px;background:white}.hh-item.read{cursor:pointer}.hh-item.unread{opacity:.42;background:#f1f3f4}.hh-item h3{font-family:"Playfair Display",serif}.hh-detailbox{margin-top:25px;padding:25px;background:#f5f8fb;border-radius:20px}.hh-detailbox p{line-height:1.7}@media(max-width:760px){.hh-grid{grid-template-columns:1fr}}
/* v37 — real Hitchhiker series cover montage, matching Gone-series treatment */
.hh-real-cover{padding:0!important;background:#fff!important;overflow:hidden}
.hh-real-cover img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.hh-series-visual{width:100%;max-width:620px;margin:22px auto 30px;border-radius:20px;overflow:hidden;background:#fff;box-shadow:0 10px 28px rgba(30,55,75,.10)}
.hh-series-visual img{display:block;width:100%;height:auto}

/* v38 turquoise school journal */
:root{--nav-school:#149e9f}
.school-page{--sg:#149e9f;--sd:#09666c;background:#f0fbfa;color:#153e43}
.school-hero{background:linear-gradient(120deg,#a8ebe6,#d4f8f3 60%,#effefa)}
.school-hero h1{color:#087d81}.school-hero p:last-child{color:#31767a}
.school-intro-card{background:#fff;border-color:#a9e1dc}.school-intro-card>span{color:#159c9d}
.school-toolbar{display:flex;justify-content:space-between;gap:18px;align-items:center;margin:28px 0;flex-wrap:wrap}
.school-filters{display:flex;flex-wrap:wrap;gap:8px}.school-filter,.school-form-actions button{border:1px solid #a4dcd7;background:#fff;color:#17676b;border-radius:999px;padding:10px 15px;cursor:pointer;font:inherit}
.school-filter.selected{background:#087e83;color:white;border-color:#087e83}.school-add{border:0;background:#078a8d;color:white;border-radius:999px;padding:12px 20px;font:inherit;font-weight:700;cursor:pointer}
.school-records{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:18px}.school-record{border:1px solid #b8e6e1;border-radius:20px;padding:20px;background:white;overflow:hidden;box-shadow:0 7px 25px #087e830b}.school-record img{width:100%;height:175px;object-fit:cover;border-radius:12px;margin-bottom:12px}.school-record h3{font-size:1.35rem;margin:8px 0}.school-record p{white-space:pre-wrap;overflow-wrap:anywhere}.school-record small{color:#517d80}.school-record-actions{display:flex;gap:10px;margin-top:14px}.school-record-actions button{border:1px solid #a4dcd7;border-radius:12px;background:#f4fbfa;padding:7px 12px;cursor:pointer}.school-empty{grid-column:1/-1;border:1px dashed #80cac7;padding:42px 22px;text-align:center;border-radius:18px;color:#41787a}
.school-dialog{width:min(560px,calc(100vw - 24px));max-height:90vh;overflow:auto;border:1px solid #99d6d0;border-radius:22px;padding:28px;color:#16474b;background:#f7fefd}.school-dialog::backdrop{background:#072f33a6}.school-form{display:grid;gap:15px}.school-form h2{margin:0}.school-form label{display:grid;gap:6px;font-weight:650}.school-form input,.school-form select,.school-form textarea{width:100%;box-sizing:border-box;border:1px solid #a9d9d5;border-radius:10px;padding:10px;background:white;color:#163b3e;font:inherit}.school-form-actions{display:flex;justify-content:flex-end;gap:10px}.school-help{font-size:.82rem;color:#5a777a;margin:0}

/* v39 subject folders */
.school-subject-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:35px 0 20px;flex-wrap:wrap}.school-subject-head h2{font-family:"Playfair Display",serif;font-size:clamp(1.8rem,4vw,2.8rem);margin:4px 0 6px;color:#09666c}.school-subject-head p{margin:0;color:#427b7e}.school-subjects{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:17px}.school-subject-card{background:#fff;border:1px solid #a6e0dc;border-radius:20px;box-shadow:0 8px 22px #087e830a;overflow:hidden}.school-subject-open{display:flex;flex-direction:column;align-items:flex-start;gap:12px;text-align:left;padding:25px;width:100%;background:none;border:0;color:#135b60;cursor:pointer;font:inherit}.school-subject-open strong{font-size:1.4rem;overflow-wrap:anywhere}.school-subject-open small{color:#4c8689}.school-folder-icon{font-size:2.5rem;line-height:1;color:#0b9999}.school-subject-open:hover{background:#ecfbf9}.school-subject-actions{display:flex;gap:8px;padding:10px 18px 15px;border-top:1px solid #e1f5f2}.school-subject-actions button,.school-back{background:transparent;border:1px solid #a6dcd7;border-radius:999px;padding:7px 12px;color:#13777a;cursor:pointer;font:inherit}.school-back{margin-top:25px}.school-page [hidden]{display:none!important}

/* Other Creations gallery */
.creations-gallery-wrap{padding-top:2rem;padding-bottom:3rem}
.creation-placeholder{display:flex;align-items:center;justify-content:center;min-height:190px;height:100%;font-size:4rem;color:#a77b2b;background:linear-gradient(135deg,#fff6df,#f1e0bd)}
#creationDetail{padding-top:2rem;padding-bottom:3rem}
#creationDetail[hidden],#creationsGalleryWrap[hidden]{display:none!important}
#creationDetailDescription{white-space:pre-wrap}

/* v42 soft rose-red athlete folders */
.athlete-page{--section-red:#b76a73;--red:#b76a73;background:#fffafa}.athlete-hero{background:linear-gradient(125deg,#fff9f8,#fff1f0)}.athlete-page .athlete-title h1{color:#a64f5e}.athlete-folders{padding:20px 0 55px}.athlete-folder-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin:24px 0}.athlete-folder-heading h2{font-family:'Playfair Display',serif;font-size:clamp(1.8rem,4vw,2.8rem);color:#944b58;margin:3px 0}.athlete-folder-heading p{color:#906f73}.athlete-folder-grid,.athlete-record-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:17px}.athlete-folder-card,.athlete-record-card{border:1px solid #eac9ce;border-radius:19px;background:#fff;overflow:hidden;box-shadow:0 8px 20px #aa637010}.athlete-folder-open{display:flex;flex-direction:column;align-items:flex-start;gap:12px;background:none;border:0;padding:25px;width:100%;font:inherit;text-align:left;color:#84414e;cursor:pointer}.athlete-folder-open:hover{background:#fff4f4}.athlete-folder-open strong{font-size:1.35rem;overflow-wrap:anywhere}.athlete-folder-open small{color:#a1767c}.athlete-folder-glyph{font-size:2.5rem;color:#be7781}.athlete-folder-actions{padding:10px 15px;border-top:1px solid #f5e5e7;display:flex;gap:8px}.athlete-folder-actions button,.athlete-folder-back,.athlete-dialog-actions button{border:1px solid #e1bbc0;border-radius:99px;background:#fff;padding:9px 13px;color:#944b58;cursor:pointer}.athlete-folder-button{border:0;border-radius:99px;padding:11px 18px;background:#b76a73;color:white;cursor:pointer;font:inherit}.athlete-folder-back{margin:15px 0}.athlete-folder-dialog{border:1px solid #eac9ce;border-radius:20px;max-width:480px;width:calc(100% - 30px);padding:25px}.athlete-folder-dialog::backdrop{background:#2e172466}.athlete-folder-dialog form{display:grid;gap:16px}.athlete-folder-dialog label{display:grid;gap:6px;color:#7f4853}.athlete-folder-dialog input,.athlete-folder-dialog textarea{width:100%;border:1px solid #e2bec3;border-radius:10px;padding:10px;font:inherit}.athlete-dialog-actions{display:flex;justify-content:flex-end;gap:10px}.athlete-record-card{padding:16px}.athlete-record-card img,.athlete-record-card video{width:100%;max-height:250px;object-fit:contain;border-radius:10px}.athlete-record-card h3{color:#84414e}.athlete-record-card p{white-space:pre-wrap;overflow-wrap:anywhere}.athlete-record-card a{overflow-wrap:anywhere}.athlete-storage-note{font-size:.85rem;color:#8d7378}.athlete-legacy{margin-top:32px;color:#91626b}.athlete-legacy summary{cursor:pointer}.athlete-page [hidden]{display:none!important}.athlete-page:not(.show-athlete-legacy)>.sports-strip,.athlete-page:not(.show-athlete-legacy)>.sport-panels{display:none!important}

/* Reader bookshelves */
.reader-library-home,.reader-category-screen{padding-bottom:70px}
.reader-shelf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(225px,1fr));gap:20px;padding:12px max(6vw,28px) 30px}
.reader-shelf{display:flex;flex-direction:column;align-items:flex-start;gap:12px;text-align:left;border:1px solid #c5d9f1;background:#f4f8ff;border-radius:20px;padding:28px;cursor:pointer;color:#294e80;min-height:165px;transition:transform .2s,box-shadow .2s}
.reader-shelf:hover{transform:translateY(-3px);box-shadow:0 8px 25px #284c7b18}
.reader-shelf-icon{font-size:2rem;color:#416c9e}
.reader-shelf strong{font-size:1.3rem}.reader-shelf small{font-size:.85rem}
.reader-go-back{background:none;border:0;color:#2f5f9d;font-weight:700;cursor:pointer;font-size:1rem;padding:10px 0}
.reader-category-screen>.reader-go-back,.reader-category-screen>h2,.reader-current-path{margin-left:max(6vw,28px)}
.reader-category-screen>h2,.reader-current-path h2{font-family:"Playfair Display",serif;font-size:2rem;margin-top:12px}
.reader-current-path{padding-top:25px}
.reader-gallery .book-card[hidden],#readerGalleryWrap[hidden],#readerSubcategories[hidden],#readerLibraryHome[hidden]{display:none!important}

/* v44: reader folders mirror School folder cards */
.reader-shelf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:17px;padding:18px max(6vw,28px) 32px}
.reader-shelf{display:flex;flex-direction:column;align-items:flex-start;gap:12px;text-align:left;background:#fff;border:1px solid #bfd7f0;border-radius:20px;box-shadow:0 8px 22px #305c8b0a;padding:25px;width:100%;min-height:unset;color:#24517f;cursor:pointer;font:inherit}
.reader-shelf:hover{background:#eef6ff;transform:none;box-shadow:0 8px 22px #305c8b0a}
.reader-shelf strong{font-size:1.4rem;overflow-wrap:anywhere}
.reader-shelf small{color:#537da6}
.reader-shelf-icon{font-size:2.5rem;line-height:1;color:#407bb4}
.reader-gallery>.book-card[hidden]{display:none!important}
.reader-page [hidden]{display:none!important}

/* v45: compact, minimal book cards and true full-screen series navigation */
.reader-gallery .book-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:20px 16px;cursor:pointer}
.reader-gallery .book-card .book-cover{width:110px!important;max-width:110px!important;height:150px!important;min-height:0!important;aspect-ratio:auto!important;flex:none!important;border-radius:9px!important;box-shadow:none!important}
.reader-gallery .book-card .book-cover img{width:100%;height:100%;object-fit:contain;background:#fff}
.reader-gallery .book-card-copy{width:100%;padding:0!important}
.reader-gallery .book-card-copy h3{font-size:1.12rem;line-height:1.35;margin:6px 0}
.reader-gallery .book-card-copy p{font-size:.9rem}
.reader-series-page-open>.reader-hero{display:none!important}
.reader-series-page-open #readerLibraryHome,.reader-series-page-open #readerSubcategories,.reader-series-page-open #readerGalleryWrap{display:none!important}
.reader-series-page-open #bookDetail{display:block!important;padding-top:25px;min-height:80vh}
.reader-series-page-open .series-visual,.reader-series-page-open .hh-series-visual{max-width:235px!important;margin:12px auto 20px!important;box-shadow:none!important;border-radius:9px!important}
.reader-series-page-open .series-visual img,.reader-series-page-open .hh-series-visual img{max-height:155px;object-fit:contain}
.reader-series-page-open .series-books[hidden],.reader-series-page-open .series-head[hidden],.reader-series-page-open .series-visual[hidden],.reader-series-page-open .hh-grid[hidden],.reader-series-page-open .hh-series-visual[hidden]{display:none!important}
.reader-series-page-open .series-book-detail,.reader-series-page-open .hh-detailbox{margin-top:16px!important;max-width:780px;margin-left:auto;margin-right:auto}
.reader-series-page-open .gone-series-detail,.reader-series-page-open .hh-wrap{max-width:1050px;margin:auto}
@media(max-width:600px){.reader-gallery .book-card .book-cover{width:90px!important;height:125px!important}}

/* Thought starts empty and uses the existing warm palette */
.thought-page .memories-hero{background:linear-gradient(135deg,#ad7459,#d7a88d)}
.thought-page .memory-empty{min-height:220px}

/* Family login */
body.auth-locked{overflow:hidden}body.auth-locked>:not(#familyLogin){visibility:hidden!important}.family-login[hidden]{display:none!important}.family-login{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;background:#f3f7fb;color:#284766;padding:22px;font-family:DM Sans,sans-serif}.family-login-card{background:#fff;width:min(100%,420px);box-sizing:border-box;border-radius:24px;padding:38px;box-shadow:0 20px 60px #264a681e}.family-login-kicker{letter-spacing:.2em;font-size:.75rem;color:#6b91b2}.family-login h1{font-family:Playfair Display,serif}.family-login-description,.family-login-note{color:#71869a}.family-login-note{font-size:.8rem}.family-login label{display:block;margin:18px 0;font-weight:600}.family-login input{display:block;width:100%;box-sizing:border-box;padding:13px;margin-top:8px;border:1px solid #c4d5e5;border-radius:10px}.family-login button{background:#527fab;color:#fff;border:0;border-radius:12px;padding:14px;width:100%;cursor:pointer}.family-login-error{color:#a33;min-height:1.2em}.family-sign-out{position:fixed;right:15px;bottom:15px;z-index:900;padding:10px 18px;border-radius:22px;background:white;border:1px solid #ccd6e4;cursor:pointer}

/* v49 password recovery */
.family-login [hidden]{display:none!important}.family-login .auth-link{width:auto;background:transparent;border:0;color:#416e9c;padding:9px 0;cursor:pointer;font-weight:600;text-align:left}.family-login .auth-recovery-status{font-size:.88rem;color:#456b8a;line-height:1.5}.family-login h2{font-family:Playfair Display,serif;font-size:1.35rem;margin:16px 0}.family-login button:disabled{opacity:.6;cursor:wait}
