/* virtual-cadie.com v2 — pleated fan */
:root{
  --bg:#F5F1E6;
  --card:#FFFDF7;
  --ink:#201E1B;
  --mute:#57524A;
  --rule:rgba(32,30,27,.16);
  --coral:#D9704F;--coral-2:#E8967A;
  --teal:#1F6E6A;--teal-2:#5CA39E;
  --ochre:#C9862E;--ochre-2:#E0AE5E;
  --plum:#5B3459;--plum-2:#8C6286;
  --f-head:"Fraunces",Georgia,serif;
  --f-body:"Karla",system-ui,sans-serif;
  --max:1280px;
  --pad:clamp(16px,4.2vw,56px);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:96px;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.0625rem/1.65 var(--f-body);overflow-x:hidden}
h1,h2,h3{font-family:var(--f-head);font-weight:600;margin:0;line-height:1.08;letter-spacing:-.015em;font-optical-sizing:auto}
p,ol,ul,figure{margin:0}
ol,ul{padding:0;list-style:none}
a{color:inherit}
svg{display:block}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.jump{position:absolute;left:-999px;top:10px;z-index:99;background:var(--teal);color:var(--bg);padding:10px 18px;font-weight:700}
.jump:focus{left:12px}
:focus-visible{outline:3px solid var(--ochre);outline-offset:3px}

.page--coral,.rib--coral,.turn--coral,.roll__grp--coral{--t1:var(--coral);--t2:var(--coral-2);--tx:#A9492A}
.page--teal,.rib--teal,.turn--teal,.roll__grp--teal{--t1:var(--teal);--t2:var(--teal-2);--tx:#1F6E6A}
.page--ochre,.rib--ochre,.turn--ochre,.roll__grp--ochre{--t1:var(--ochre);--t2:var(--ochre-2);--tx:#86560F}
.page--plum,.rib--plum,.turn--plum,.roll__grp--plum{--t1:var(--plum);--t2:var(--plum-2);--tx:#5B3459}

.kicker{font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--tx,var(--teal))}

/* ---------- header ---------- */
.crest{position:sticky;top:0;z-index:40;background:var(--bg);box-shadow:0 1px 0 var(--rule)}
.crest__row{max-width:var(--max);margin:0 auto;padding:0 var(--pad);min-height:78px;display:flex;align-items:center;gap:20px}
.logo{display:inline-flex;align-items:center;gap:12px;text-decoration:none;font:600 1.4rem/1 var(--f-head);margin-right:auto}
.logo__mark{width:25px;height:23px}
.crest__nav ul{display:flex;gap:6px}
.pl-link{position:relative;display:block;padding:12px 14px 16px;text-decoration:none;font-weight:600;font-size:.95rem;color:var(--mute);border-radius:6px;transition:color .2s,background .2s}
.pl-link--coral{--k:var(--coral)}.pl-link--teal{--k:var(--teal)}.pl-link--ochre{--k:var(--ochre)}.pl-link--plum{--k:var(--plum)}
.pl-link:hover,.pl-link[aria-current]{color:var(--ink)}
.pl-link[aria-current]{background:var(--card)}
.pl-link__fold{position:absolute;left:14px;bottom:5px;height:8px;display:flex;align-items:flex-end;gap:2px;opacity:0;transition:opacity .2s}
.pl-link__fold i{width:5px;background:var(--k)}
.pl-link__fold i:nth-child(1){height:4px}.pl-link__fold i:nth-child(2){height:8px}.pl-link__fold i:nth-child(3){height:6px}
.pl-link:hover .pl-link__fold,.pl-link:focus-visible .pl-link__fold,.pl-link[aria-current] .pl-link__fold{opacity:1}
.crest__toggle{display:none;width:46px;height:46px;border:0;border-radius:10px;background:var(--teal);cursor:pointer;align-items:flex-end;justify-content:center;gap:3px;padding-bottom:13px}
.crest__toggle span{width:5px;background:var(--bg)}
.crest__toggle span:nth-child(1){height:10px}.crest__toggle span:nth-child(2){height:18px}.crest__toggle span:nth-child(3){height:13px}
.crest__toggle[aria-expanded="true"] span{height:14px}

/* ---------- photo slot ---------- */
.slot{position:relative;padding-bottom:20px}
.slot__box{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;background:var(--card);border:2px solid var(--ink);color:var(--mute)}
.slot__box::after{content:"";position:absolute;inset:12px;border:1.5px dashed rgba(32,30,27,.26);pointer-events:none}
.slot__box svg{width:50px;color:var(--teal);margin-bottom:8px}
.slot__box strong{font:600 1.25rem/1.2 var(--f-head);color:var(--ink)}
.slot__box span{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase}
.slot__box--photo{padding:0;overflow:hidden}
.slot__box--photo::after{display:none}
.slot__box--photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 42%}
.slot__fringe{position:absolute;left:0;right:0;bottom:0;height:20px;display:flex;gap:2px;align-items:flex-start}
.slot__fringe i{flex:1;height:calc(var(--h)*1px);background:var(--c)}
.slot--pano .slot__box{aspect-ratio:3/1;min-height:260px}
.slot--wide{margin-bottom:12px}
.slot--wide .slot__box{aspect-ratio:21/9}

/* ---------- home: opening ---------- */
.open{max-width:var(--max);margin:0 auto;padding:clamp(28px,4vw,52px) var(--pad) 0}
.open__card{position:relative;z-index:2;width:min(720px,92%);margin:calc(-1 * clamp(70px,9vw,130px)) 0 0 clamp(0px,3vw,44px);background:var(--card);border:2px solid var(--ink);padding:clamp(24px,3.4vw,44px)}
.open__card::before{content:"";position:absolute;left:-2px;top:-2px;bottom:-2px;width:10px;background:var(--coral)}
.open__card h1{font-size:clamp(2.3rem,5.2vw,4.4rem);margin:14px 0 16px}
.open__dek{font-size:clamp(1.05rem,1.5vw,1.25rem);color:var(--mute);max-width:32em}

/* ---------- home: fan spread ---------- */
.spread{max-width:var(--max);margin:0 auto;padding:clamp(72px,9vw,128px) var(--pad) clamp(64px,8vw,104px)}
.spread__h{font-size:clamp(1.9rem,3.4vw,2.8rem);margin-bottom:clamp(26px,3vw,40px);text-align:center}
.spread__ribs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 clamp(10px,1.4vw,20px);align-items:stretch}
.rib{display:flex;flex-direction:column}
.rib__pleats{display:grid;grid-template-columns:repeat(6,1fr);height:clamp(170px,19vw,260px);align-items:end}
.rib__pleats span{height:calc(var(--h)*1%);background:var(--t1);clip-path:polygon(0 12px,100% 0,100% 100%,0 100%);box-shadow:inset -4px 0 0 rgba(32,30,27,.12);transition:height .5s cubic-bezier(.33,.0,.2,1)}
.rib__pleats span:nth-child(even){background:var(--t2);clip-path:polygon(0 0,100% 12px,100% 100%,0 100%)}
.rib:hover .rib__pleats span:nth-child(3n+1),.rib:focus-within .rib__pleats span:nth-child(3n+1){height:calc(var(--h)*1% - 12%)}
.rib:hover .rib__pleats span:nth-child(3n),.rib:focus-within .rib__pleats span:nth-child(3n){height:min(100%,calc(var(--h)*1% + 8%))}
.rib__card{position:relative;flex:1;display:flex;flex-direction:column;gap:12px;margin:-64px 8px 0;background:var(--card);border:2px solid var(--ink);padding:24px 22px 26px}
.rib__tally{align-self:flex-start;background:var(--t1);color:var(--card);font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:4px 10px}
.rib--ochre .rib__tally{color:var(--ink)}
.rib__title{font-size:clamp(1.5rem,2vw,1.95rem)}
.rib__copy{color:var(--mute);font-size:.98rem}
.rib__go{margin-top:auto;font-weight:700;text-decoration:none;color:var(--tx);border-bottom:2px solid currentColor;align-self:flex-start;padding-bottom:1px}
.rib__go:hover{color:var(--ink)}

/* ---------- home: roll call ---------- */
.roll{max-width:var(--max);margin:0 auto;padding:clamp(56px,7vw,96px) var(--pad) clamp(88px,10vw,140px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.1fr);gap:clamp(28px,5vw,80px);border-top:2px solid var(--ink)}
.roll__intro h2{font-size:clamp(1.8rem,3vw,2.5rem);margin-bottom:18px}
.roll__intro p{color:var(--mute)}
.roll__intro p+p{margin-top:12px}
.roll__lists{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px 40px}
.roll__grp h3{font-size:1.3rem;padding-bottom:10px;margin-bottom:6px;border-bottom:4px solid var(--t1)}
.roll__grp h3 a{text-decoration:none}
.roll__grp h3 a:hover{color:var(--tx)}
.roll__grp li a{display:grid;grid-template-columns:2.2em 1fr;column-gap:6px;padding:10px 0;border-bottom:1px solid var(--rule);text-decoration:none}
.roll__no{grid-row:1/3;font-weight:700;color:var(--tx);font-variant-numeric:tabular-nums}
.roll__nm{font-weight:600}
.roll__pl{font-size:.88rem;color:var(--mute)}
.roll__grp li a:hover .roll__nm{text-decoration:underline;text-underline-offset:3px}

/* ---------- category page ---------- */
.page__grid{max-width:var(--max);margin:0 auto;padding:clamp(36px,5vw,72px) var(--pad) clamp(56px,6vw,88px);display:grid;grid-template-columns:minmax(250px,.78fr) minmax(0,2fr);gap:clamp(28px,4.6vw,72px);align-items:start}
.side{position:sticky;top:104px}
.side__pleats{display:grid;grid-template-columns:repeat(6,26px);height:120px;align-items:end;margin-bottom:22px}
.side__pleats span{height:calc(var(--h)*1%);background:var(--t1);clip-path:polygon(0 8px,100% 0,100% 100%,0 100%);box-shadow:inset -3px 0 0 rgba(32,30,27,.12)}
.side__pleats span:nth-child(even){background:var(--t2);clip-path:polygon(0 0,100% 8px,100% 100%,0 100%)}
.side h1{font-size:clamp(2.5rem,4.4vw,3.9rem);margin:10px 0 14px}
.side__line{color:var(--mute);font-size:1.05rem}
.side__toc-h{margin-top:30px;font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.side__toc{counter-reset:t;margin-top:10px;border-left:4px solid var(--t1)}
.side__toc li{counter-increment:t}
.side__toc a{display:block;padding:7px 0 7px 14px;text-decoration:none;font-weight:600}
.side__toc a::before{content:counter(t,decimal-leading-zero) "  ";color:var(--tx);font-variant-numeric:tabular-nums}
.side__toc a:hover{background:var(--card)}

.leaves{display:flex;flex-direction:column;gap:clamp(24px,3vw,40px)}
.leaf{position:relative;background:var(--card);border:2px solid var(--ink);padding:clamp(24px,3vw,42px) clamp(22px,3vw,42px) 62px}
.leaf__top{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start;margin-bottom:20px}
.leaf__no{display:grid;place-items:center;width:52px;height:52px;background:var(--t1);color:var(--card);font:600 1.2rem/1 var(--f-head)}
.page--ochre .leaf__no{color:var(--ink)}
.leaf__name{font-size:clamp(1.7rem,2.8vw,2.4rem)}
.leaf__where{margin-top:6px;font-size:.82rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--tx)}
.leaf__text{columns:2 19em;column-gap:38px}
.leaf__text p{margin-bottom:12px;orphans:3;widows:3}
.leaf__tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.leaf__tags li{font-size:.85rem;font-weight:600;color:var(--mute);border:1.5px solid var(--t2);padding:3px 11px;border-radius:999px}
.leaf__fringe{position:absolute;right:clamp(22px,3vw,42px);bottom:0;height:24px;display:flex;align-items:flex-end;gap:3px}
.leaf__fringe i{width:9px;height:calc(var(--h)*1px);background:var(--c)}

.turns{max-width:var(--max);margin:0 auto;padding:0 var(--pad) clamp(80px,9vw,128px);display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,2vw,28px)}
.turn{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:18px;align-items:end;padding:20px 24px;background:var(--card);border:2px solid var(--ink);text-decoration:none;transition:transform .2s}
.turn:hover{transform:translateY(-3px)}
.turn--next{grid-template-columns:1fr auto;text-align:right}
.turn--next .turn__pleats{grid-column:2;grid-row:1/3}
.turn__pleats{grid-row:1/3;display:grid;grid-template-columns:repeat(5,9px);height:52px;align-items:end}
.turn__pleats span{height:calc(var(--h)*1%);background:var(--t1)}
.turn__pleats span:nth-child(even){background:var(--t2)}
.turn__lab{font-size:.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.turn__nm{font:600 1.45rem/1.15 var(--f-head)}
.turn--next .turn__lab,.turn--next .turn__nm{grid-column:1}

/* ---------- plain text pages ---------- */
.text__col{max-width:700px;margin:0 auto;padding:clamp(48px,7vw,104px) var(--pad) clamp(80px,9vw,128px)}
.text h1{font-size:clamp(2.4rem,5vw,3.6rem);margin-bottom:20px}
.text__lede{font-size:1.25rem;line-height:1.5;color:var(--mute);margin-bottom:12px}
.text h2{font-size:1.45rem;margin:42px 0 12px}
.text p+p{margin-top:14px}
.text a{color:var(--teal);text-underline-offset:3px}
.text__stamp{margin-top:52px!important;font-size:.85rem;color:var(--mute)}

/* ---------- footer ---------- */
.base{position:relative;background:#1F6E6A;color:var(--bg);margin-top:30px}
.base__fringe{position:absolute;left:0;right:0;top:-26px;height:26px;display:flex;align-items:flex-end;gap:2px;overflow:hidden}
.base__fringe i{flex:1;min-width:4px;height:calc(var(--h)*1px + 5px);background:var(--c)}
.base__row{max-width:var(--max);margin:0 auto;padding:56px var(--pad) 34px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:28px 60px}
.base__lead{max-width:30em;color:rgba(245,241,230,.88)}
.base__name{display:block;font:600 1.6rem/1.1 var(--f-head);color:var(--bg);margin-bottom:10px}
.base__links{display:flex;flex-direction:column;gap:14px;align-items:flex-end}
.base__set{display:flex;flex-wrap:wrap;gap:6px 22px;justify-content:flex-end}
.base__set a{text-decoration:none;font-weight:600}
.base__set--quiet a{font-weight:400;color:rgba(245,241,230,.82)}
.base a:hover{text-decoration:underline;text-underline-offset:4px}
.base__end{max-width:var(--max);margin:0 auto;padding:20px var(--pad) 30px;border-top:1px solid rgba(245,241,230,.22);font-size:.85rem;color:rgba(245,241,230,.78)}

/* ---------- breakpoints ---------- */
@media (max-width:1100px){
  .spread__ribs{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:44px}
  .roll{grid-template-columns:1fr}
}
@media (max-width:900px){
  .crest__toggle{display:flex}
  .crest__nav{position:absolute;top:78px;left:0;right:0;background:var(--bg);box-shadow:0 1px 0 var(--rule);display:none}
  .crest__nav.is-open{display:block}
  .crest__nav ul{flex-direction:column;gap:0;padding:6px var(--pad) 16px}
  .pl-link{padding:15px 0 17px;border-radius:0;border-bottom:1px solid var(--rule);font-size:1.05rem}
  .pl-link__fold{left:0}
  .pl-link[aria-current]{background:none}
  .page__grid{grid-template-columns:1fr}
  .side{position:static}
  .side__toc-h,.side__toc{display:none}
  .base__links{align-items:flex-start}
  .base__set{justify-content:flex-start}
}
@media (max-width:640px){
  body{font-size:1rem}
  .slot--pano .slot__box{aspect-ratio:4/3;min-height:0}
  .slot--wide .slot__box{aspect-ratio:4/3}
  .open__card{width:100%;margin:-48px 0 0}
  .spread__ribs{grid-template-columns:1fr}
  .spread__h{text-align:left}
  .roll__lists{grid-template-columns:1fr}
  .side__pleats{grid-template-columns:repeat(6,18px);height:80px}
  .leaf__fringe{right:auto;left:22px}
  .turns{grid-template-columns:1fr}
}
