/* ============================================================
   ABOUT — classic architectural blueprint
   Deep cobalt diazo sheet, crisp white linework, pressed vinyl type.
   Structure: hero press → drawn plan → quiet guides.
   No cream pads, no label-maker chrome — lettering sits in the paper.
   ============================================================ */
.bp{
  --bp:#0A3A86;
  --bp-mid:#083070;
  --bp-deep:#06245A;
  --bp-ink:#FFFFFF;
  --bp-mute:rgba(255,255,255,.70);
  --bp-faint:rgba(255,255,255,.38);
  --bp-rule:rgba(255,255,255,.22);
  --bp-ghost:rgba(255,255,255,.12);
  --bp-chalk:#FFFFFF;
  --bp-graphite:rgba(255,255,255,.88);
  --bp-cyan:#E4EEFF;
  --bp-curve:0;
  --folio:#EDE8DC;
  --folio-ink:#1A1915;
  --folio-mute:rgba(26,25,21,.58);
  --folio-faint:rgba(26,25,21,.32);
  --folio-rule:rgba(26,25,21,.14);
  /* pressed vinyl — contact edge into the cobalt dye (letterpress, not chrome) */
  --bp-press:
    0 1px 0 rgba(2,18,48,.55),
    0 1px 2px rgba(2,14,40,.28),
    0 -0.5px 0 rgba(255,255,255,.22);
  position:relative;
  min-height:100vh;
  /* diazo cobalt sheet — real blueprint dye, not washed app blue */
  background-color:var(--bp);
  background-image:
    radial-gradient(70% 55% at 22% 8%, rgba(40,90,180,.2) 0%, transparent 70%),
    radial-gradient(50% 40% at 90% 12%, rgba(20,60,140,.16) 0%, transparent 65%),
    linear-gradient(175deg, #1148A0 0%, var(--bp) 38%, var(--bp-mid) 76%, var(--bp-deep) 100%);
  color:var(--bp-ink);
  --fg:var(--bp-ink);
  --fg2:var(--bp-mute);
  --fg3:var(--bp-faint);
  --rule:var(--bp-rule);
}
/* paper grain + faint construction grid — physical sheet, not costume */
.bp::before{
  content:"";
  position:absolute; inset:0; pointer-events:none; z-index:0;
  opacity:.55;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath d='M48 0H0V48' fill='none' stroke='%23FFFFFF' stroke-opacity='0.07' stroke-width='1'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)' opacity='0.22'/%3E%3C/svg%3E");
  background-size:48px 48px, 240px 240px;
  mix-blend-mode:soft-light;
}
/* plate edge only — no heavy inset vignette */
.bp::after{
  content:"";
  position:absolute; inset:clamp(10px,1.6vw,22px); z-index:0; pointer-events:none;
  border:1px solid var(--bp-ghost);
  border-radius:2px;
  box-shadow:none;
}
.bp-sheet{
  position:relative; z-index:1;
  margin:0 auto;
  max-width:1180px;
  padding:calc(var(--nav-h) + clamp(20px,4vh,48px)) clamp(16px,2.8vw,36px) clamp(36px,7vh,88px);
}
.bp-rim{ display:none; }
.bp-rim span{
  position:absolute; font-family:var(--mono); font-size:7.5px; letter-spacing:.46em;
  color:var(--bp-faint); white-space:nowrap; line-height:1;
}
.bp-rim-t{ top:0; left:0; right:0; padding:3px 0; border-bottom:1px solid var(--bp-faint); }
.bp-rim-b{ bottom:0; left:0; right:0; padding:3px 0; border-top:1px solid var(--bp-faint); }
.bp-rim-l, .bp-rim-r{
  top:50%; width:100vh; text-align:center;
  transform-origin:center;
}
.bp-rim-l{ left:0; transform:translate(-50%,-50%) rotate(-90deg); border-bottom:1px solid var(--bp-faint); padding-bottom:3px; }
.bp-rim-r{ right:0; transform:translate(50%,-50%) rotate(90deg); border-bottom:1px solid var(--bp-faint); padding-bottom:3px; }

.bp-head{ margin:clamp(10px,1.8vh,24px) 0 clamp(22px,4vh,44px); display:grid; gap:8px; justify-items:start; }
.bp-head.is-quiet{ margin-top:clamp(8px,2vh,20px); }
.bp-k{ font-size:9px; letter-spacing:.36em; color:var(--bp-mute); margin:0; }
.bp-title{
  margin:0; font-weight:400; letter-spacing:-.022em; line-height:.88;
  font-size:clamp(44px,10.5vw,128px); color:var(--bp-ink);
  text-shadow:var(--bp-press);
}
.bp-sub{ margin:0; font-size:9.5px; letter-spacing:.3em; color:var(--bp-mute); }

/* —— press take — condensed hero beat —— */
.bp-say-scene{
  position:relative;
  /* condensed hero: one viewport + ~560px of scrub — snappy, not a marathon */
  height:calc(100svh + 560px);
  background:transparent;
}
.bp-say-stage{
  position:sticky; top:0;
  height:100vh; height:100svh;
  overflow:hidden;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding:0 var(--gutter) clamp(56px,10vh,110px);
  pointer-events:none;
}
/* quiet light fall only — sheet stays cobalt */
.bp-say-stage::before{
  content:"";
  position:absolute; inset:0; pointer-events:none; z-index:0;
  background:
    radial-gradient(48% 36% at 42% 70%, rgba(255,255,255,.06) 0%, transparent 74%);
  opacity:calc(0.35 + var(--p, 0) * 0.3);
}
.bp-say-stage::after{
  content:"";
  position:absolute; left:10%; right:10%; bottom:18%; height:1px; z-index:1;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.28), transparent);
  opacity:calc(var(--p, 0) * 0.75);
  transform:scaleX(calc(0.4 + var(--p, 0) * 0.6));
  transform-origin:center;
}
.bp-say-intro{
  position:absolute; left:var(--gutter); top:calc(var(--nav-h) + clamp(28px,7vh,80px));
  display:grid; gap:8px; margin:0;
  font-size:9.5px; letter-spacing:.3em; color:var(--bp-mute);
  pointer-events:auto; z-index:3;
  opacity:calc(1 - var(--p, 0) * 0.55);
  transition:opacity .15s linear;
}
.bp-say-intro span:last-child{ color:var(--bp-faint); }
.bp-say-guides{ display:inline; }
.bp-say-jump{
  color:inherit; border-bottom:1px solid var(--bp-faint);
  text-decoration:none; pointer-events:auto;
  transition:border-color .4s var(--ease), color .4s var(--ease);
}
.bp-say-jump:hover{ border-bottom-color:var(--bp-chalk); color:var(--bp-chalk); }
.bp-say, .cp-say{
  position:relative; z-index:2; margin:0;
  font-family:var(--display); font-weight:400; text-transform:uppercase;
  letter-spacing:-.014em; line-height:.9;
  font-size:clamp(40px,8vw,136px); color:var(--bp-chalk);
  display:grid;
}
.bp-say .cp-line, .cp-say .cp-line{
  display:block; white-space:nowrap;
}
.bp-say .cp-line-1, .cp-say .cp-line-1{ padding-left:clamp(28px,9vw,180px); }
.bp-say .cp-line-2, .cp-say .cp-line-2{ padding-left:clamp(0px,3vw,60px); }
.bp-say .cp-line-3, .cp-say .cp-line-3{ padding-left:clamp(56px,20vw,400px); }

/* pressed white vinyl on cobalt — ink in the sheet, not a pad.
   --press / --contact are painted by CP.type.scrub (letterpress seat) */
.cp-w, .bp-say .cp-w{
  --press:0; --lift:1; --sheen:0; --contact:0;
  display:inline-block;
  will-change:opacity, transform, filter;
  opacity:0;
  color:var(--bp-chalk);
  -webkit-text-stroke:0;
  paint-order:fill;
  background:none;
  padding:0;
  margin:0;
  border-radius:0;
  box-shadow:none;
  text-shadow:
    0 1px 0 rgba(2,18,48, calc(0.35 + var(--contact) * 0.25)),
    0 1px 2px rgba(2,14,40, calc(0.18 + var(--contact) * 0.16)),
    0 -0.5px 0 rgba(255,255,255, calc(0.12 + var(--press) * 0.14));
  transform-origin:50% 80%;
  backface-visibility:hidden;
}
.cp-w.is-vinyl, .bp-say .cp-w.is-vinyl,
.cp-press .cp-w:not(.is-glyph), .bp-say.cp-press .cp-w:not(.is-glyph){
  color:var(--bp-chalk);
  -webkit-text-fill-color:var(--bp-chalk);
  background:none;
  padding:0;
  margin:0;
  box-shadow:none;
  border-radius:0;
}
.cp-w.is-pressed,
.cp-press .cp-w.is-pressed:not(.is-glyph),
.bp-press-k .cp-w.is-pressed{
  color:var(--bp-chalk);
  -webkit-text-fill-color:var(--bp-chalk);
  background:none !important;
  padding:0 !important;
  margin:0 !important;
  box-shadow:none !important;
  border-radius:0 !important;
  text-shadow:var(--bp-press);
}
/* letter body: same press, quieter weight */
.bp-press-line .cp-w,
.bp-peel-line .cp-w{
  color:var(--bp-graphite);
  -webkit-text-fill-color:var(--bp-graphite);
  text-shadow:
    0 1px 0 rgba(2,18,48,.4),
    0 1px 1px rgba(2,14,40,.22);
  background:none !important;
  padding:0 !important;
  margin:0 !important;
  box-shadow:none !important;
  border-radius:0 !important;
}
.bp-press-line .cp-w.is-pressed,
.bp-peel-line .cp-w.is-pressed{
  color:var(--bp-chalk);
  -webkit-text-fill-color:var(--bp-chalk);
  text-shadow:var(--bp-press);
}
.cp-w.is-accent, .bp-say .cp-w.is-accent{
  font-style:italic; text-transform:none; letter-spacing:-.02em;
  color:#F7FBFF;
  -webkit-text-fill-color:#F7FBFF;
  background:none;
  text-shadow:var(--bp-press);
}
.cp-w.is-glyph, .bp-say .cp-w.is-glyph{
  font-family:var(--mono); font-size:.36em; vertical-align:.7em;
  letter-spacing:0; color:var(--bp-mute);
  -webkit-text-fill-color:var(--bp-mute);
  -webkit-text-stroke:0;
  text-shadow:none;
  background:none; padding:0; margin:0; box-shadow:none;
}
.bp-say-cue{
  position:absolute; right:var(--gutter); bottom:clamp(20px,4vh,40px);
  margin:0; font-size:9px; letter-spacing:.34em; color:var(--bp-faint);
  opacity:calc(0.75 - var(--p,0)*1.1);
  z-index:2;
  text-shadow:none;
}
.bp-letter .cp-w{ text-shadow:var(--bp-press); }
.bp-press-k .cp-w,
.bp-peel-k .cp-w{
  color:var(--bp-chalk);
  text-shadow:var(--bp-press);
  background:none; padding:0; margin:0; box-shadow:none;
}
.bp-press-k,
.bp-peel-k{
  margin:0; font-weight:400; font-style:italic;
  font-size:clamp(28px,4.2vw,48px); letter-spacing:-.018em;
  color:var(--bp-chalk);
  line-height:1.05;
}
.bp-press-hint,
.bp-peel-hint{
  margin:2px 0 0; font-size:9px; letter-spacing:.2em; color:var(--bp-faint);
}
@media (max-width:759px){
  .bp-say-scene{ height:calc(100svh + 420px); }
  .bp-say .cp-line, .cp-say .cp-line{ white-space:normal; }
  .bp-say .cp-line-1, .bp-say .cp-line-2, .bp-say .cp-line-3,
  .cp-say .cp-line-1, .cp-say .cp-line-2, .cp-say .cp-line-3{ padding-left:0; }
  .bp-say, .cp-say{ font-size:clamp(34px,11vw,64px); }
}

.bp-fig{ margin:0 0 clamp(22px,4vh,40px); padding:0; }
.bp-draw{
  display:block; width:100%; height:auto; overflow:visible;
  shape-rendering:geometricPrecision;
  text-rendering:geometricPrecision;
  filter:none;
}
.bp-draw.is-hi{ min-height:clamp(180px,28vw,340px); }
.bp-fig.is-elev .bp-draw.is-hi{ min-height:clamp(220px,34vw,400px); }

/* —— line register — white ink on cobalt —— */
.bp-draw .bp-plate{
  fill:rgba(4,20,56,.28); stroke:var(--bp-rule); stroke-width:1.2;
}
.bp-draw .bp-plate.is-inner{ fill:none; stroke:var(--bp-ghost); stroke-width:1; }
.bp-draw .bp-box{
  fill:rgba(255,255,255,.03);
  stroke:var(--bp-ink);
  stroke-width:1.35;
}
.bp-draw .bp-wall{
  fill:none;
  stroke:var(--bp-ink);
  stroke-width:2.2;
  filter:none;
}
.bp-draw .bp-wall-fill{
  stroke:var(--bp-cyan);
  stroke-width:1;
  stroke-opacity:.65;
}
.bp-draw .bp-hatch-line{
  stroke:var(--bp-cyan); stroke-width:1; stroke-opacity:.5;
}
.bp-draw .bp-hatch-line.is-loose{ stroke:var(--bp-faint); stroke-width:.8; stroke-opacity:.75; }
.bp-draw .bp-door{
  fill:none; stroke:var(--bp-cyan); stroke-width:1.15; stroke-opacity:.78;
}
.bp-draw .bp-center{
  fill:none; stroke:var(--bp-faint); stroke-width:1;
  stroke-dasharray:5 4 1 4;
}
.bp-draw .bp-dim{
  fill:none; stroke:var(--bp-mute); stroke-width:1;
}
.bp-draw .bp-dim.is-heavy{ stroke:var(--bp-ink); stroke-width:1.6; }
.bp-draw .bp-brace{
  fill:none; stroke:var(--bp-faint); stroke-width:1;
}
.bp-draw .bp-shaft{
  fill:none; stroke:var(--bp-ink); stroke-width:1.8;
}
.bp-draw .bp-roll{
  fill:none; stroke:var(--bp-ink); stroke-width:1.35;
}
.bp-draw .bp-roll.is-hub{ fill:var(--bp-ink); stroke:none; }
.bp-draw .bp-bearing{
  fill:rgba(255,255,255,.05);
  stroke:var(--bp-ink);
  stroke-width:1.1;
}
.bp-draw .bp-ray{
  stroke:var(--bp-faint); stroke-width:.7;
}
.bp-draw .bp-ray.is-cardinal{ stroke:var(--bp-ink); stroke-width:1.2; }
.bp-draw .bp-tick{ fill:none; stroke:var(--bp-mute); stroke-width:1; }

.bp-draw text{ fill:var(--bp-ink); font-family:var(--mono); }
.bp-draw .bp-cap{ font-size:13px; letter-spacing:.32em; fill:var(--bp-mute); }
.bp-draw .bp-no{ font-size:18px; letter-spacing:.2em; fill:var(--bp-mute); }
.bp-draw .bp-lab{ font-size:12px; letter-spacing:.14em; }
.bp-draw .bp-at{ font-size:11px; letter-spacing:.1em; fill:var(--bp-mute); }
.bp-draw .bp-note{ font-size:10px; letter-spacing:.16em; fill:var(--bp-mute); }
.bp-draw .bp-dim-lab{ font-size:10px; letter-spacing:.2em; fill:var(--bp-mute); }
.bp-draw .bp-compass-lab{ font-size:12px; letter-spacing:.2em; }

/* title block — soft editorial cells */
.bp-grid{
  display:grid;
  grid-template-columns:minmax(240px, 320px) minmax(0, 1fr);
  gap:clamp(32px,6vw,88px);
  align-items:start;
  margin-top:clamp(8px,2vh,20px);
}
.bp-block{ padding:0; background:transparent; border:0; }
.bp-block-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  border:1px solid var(--bp-rule);
  border-radius:0;
  background:rgba(4,18,48,.22);
  overflow:hidden;
  gap:0;
}
.bp-cell{
  padding:14px 16px 16px;
  border-right:1px solid var(--bp-ghost);
  border-bottom:1px solid var(--bp-ghost);
  display:grid; gap:4px;
}
.bp-cell:nth-child(2n){ border-right:0; }
.bp-cell.is-span{ grid-column:1 / -1; border-right:0; }
.bp-block-k, .bp-letter-k, .bp-cell-k{
  margin:0; font-size:8.5px; letter-spacing:.32em; color:var(--bp-mute);
}
.bp-block-name{ margin:4px 0 0; font-size:clamp(26px,3.6vw,38px); line-height:1; font-weight:400; }
.bp-cell-v{ margin:0; font-size:11px; letter-spacing:.18em; color:var(--bp-ink); }
.bp-facts{ list-style:none; margin:4px 0 0; padding:0; display:grid; gap:6px; font-size:10px; letter-spacing:.14em; }
.bp-mast{ margin:4px 0 0; font-size:10px; line-height:1.55; letter-spacing:.05em; }
.bp-mast dt{ letter-spacing:.22em; color:var(--bp-mute); margin-top:12px; }
.bp-mast dt:first-child{ margin-top:0; }
.bp-mast dd{ margin:3px 0 0; color:var(--bp-ink); }
.bp-mast a{ color:var(--bp-ink); border-bottom:1px solid var(--bp-faint); }
.bp-mast a:hover{ border-bottom-color:var(--bp-ink); }

/* guides — quiet register lines on the wash, not product cards */
.bp-deck{
  position:relative;
  margin:clamp(20px,4vh,40px) 0 clamp(12px,2vh,22px);
  padding:clamp(8px,1.2vw,14px) 0 clamp(6px,1vw,12px);
  border-radius:0;
  background:transparent;
  box-shadow:none;
  border-top:1px solid var(--bp-ghost);
  opacity:0;
  transform:translateY(16px);
  filter:none;
  transition:
    opacity 1.1s var(--ease),
    transform 1.25s var(--ease);
}
.bp-deck.is-in{
  opacity:1;
  transform:none;
}
.bp-deck-k{
  margin:0 0 clamp(10px,1.8vh,16px);
  font-size:9px; letter-spacing:.28em; color:var(--bp-faint);
}
.bp-dicts{
  display:grid;
  gap:0;
  margin:0;
}
.bp-dicts-k{
  margin:0 0 4px;
  padding:0;
  font-size:9px; letter-spacing:.28em; color:var(--bp-faint);
}
.bp-dict{
  position:relative;
  border:0;
  border-bottom:1px solid var(--bp-ghost);
  background:transparent;
  padding:0;
  border-radius:0;
  box-shadow:none;
  opacity:0;
  transform:translateY(10px);
  filter:none;
  scroll-margin-top:calc(var(--nav-h, 64px) + 18px);
  transition:
    opacity .7s var(--ease) calc(var(--i, 0) * 90ms),
    transform .85s var(--ease) calc(var(--i, 0) * 90ms),
    border-color .4s var(--ease),
    background .4s var(--ease);
}
.bp-deck.is-in .bp-dict.is-in,
.bp-dict.is-in{
  opacity:1;
  transform:none;
  filter:none;
}
.bp-dict::before{ display:none; }
.bp-dict.is-focus{
  border-bottom-color:rgba(255,255,255,.32);
  background:transparent;
}
.bp-dict.is-open{
  border-bottom-color:rgba(255,255,255,.26);
  background:transparent;
}
.bp-dict-toggle{
  width:100%;
  display:flex; align-items:baseline; justify-content:space-between; gap:16px;
  margin:0; padding:clamp(12px,1.8vh,18px) 0;
  background:transparent; border:0; color:inherit; cursor:pointer;
  text-align:left; font:inherit;
  transition:opacity .35s var(--ease);
}
.bp-dict-toggle:hover{ background:transparent; opacity:.88; }
.bp-dict-toggle-main{ display:grid; gap:3px; min-width:0; }
.bp-dict-title{
  margin:0; font-weight:400; line-height:1.05;
  font-size:clamp(22px,3vw,32px); letter-spacing:-.018em;
  font-style:italic; color:var(--bp-chalk);
  text-shadow:var(--bp-press);
}
.bp-dict-hint{ margin:0; font-size:9.5px; letter-spacing:.18em; color:var(--bp-faint); }
.bp-dict-mark{
  flex:none;
  font-size:14px; letter-spacing:0; color:var(--bp-mute);
}
.bp-dict.is-open .bp-dict-mark{ color:var(--bp-chalk); }
.bp-dict-body{
  display:grid; gap:0;
  padding:0 0 clamp(14px,2vh,22px);
  overflow:hidden;
}
.bp-dict-body[hidden]{ display:none; }
.bp-dict.is-open .bp-dict-body{ animation:bp-open .55s var(--ease) both; }
@keyframes bp-open{
  from{ opacity:0; transform:translateY(-6px); }
  to{ opacity:1; transform:none; }
}
.bp-dict-row{
  display:grid;
  grid-template-columns:minmax(100px, 150px) minmax(0, 1fr);
  gap:clamp(10px,2vw,22px);
  padding:9px 0;
  border-top:1px solid var(--bp-ghost);
  align-items:baseline;
  transition:transform .35s var(--ease), border-color .35s var(--ease);
}
.bp-dict-row:hover{ transform:translateX(3px); border-top-color:rgba(255,255,255,.28); }
.bp-dict-row dt{ margin:0; }
.bp-dict-term{
  font-size:10.5px; letter-spacing:.12em; color:var(--bp-ink);
  border-bottom:1px solid transparent;
}
a.bp-dict-term{ border-bottom-color:var(--bp-faint); color:var(--bp-chalk); }
a.bp-dict-term:hover{ border-bottom-color:var(--bp-ink); color:var(--bp-ink); }
.bp-dict-row dd{
  margin:0; font-size:clamp(15px,1.4vw,17px); line-height:1.45;
  color:var(--bp-mute);
}
@media (max-width:759px){
  .bp-dict-row{ grid-template-columns:1fr; gap:4px; }
  .bp-dict-title{ font-style:normal; }
}

/* personal strip — typography only, no padded bed */
.bp-folio{
  position:relative;
  margin:clamp(18px,3.5vh,36px) 0 clamp(16px,3vh,28px);
  padding:clamp(8px,1.4vw,16px) 0;
  background:transparent;
  color:var(--bp-ink);
  border-radius:0;
  box-shadow:none;
  border-top:1px solid var(--bp-ghost);
  opacity:0;
  transform:translateY(18px);
  filter:none;
  transition:
    opacity 1.1s var(--ease),
    transform 1.25s var(--ease);
}
.bp-folio.is-strip{
  background:transparent;
  box-shadow:none;
  border-radius:0;
}
.bp-folio.is-in{
  opacity:1;
  transform:none;
  filter:none;
}
.bp-folio-k{
  margin:0 0 clamp(10px,1.6vh,16px);
  font-size:9px; letter-spacing:.28em; color:var(--bp-faint);
}

/* opt-in letter / details — press strip, not cards */
.bp-opt{
  display:grid;
  gap:0;
  margin:0;
  border-top:0;
}
.bp-more{
  border-bottom:1px solid var(--bp-ghost);
  background:transparent;
}
.bp-more.is-press,
.bp-more.is-peel{ padding:0; }
.bp-more-toggle{
  width:100%;
  display:flex; align-items:baseline; justify-content:space-between; gap:12px;
  margin:0; padding:clamp(14px,2.2vh,22px) 0;
  background:transparent; border:0; color:inherit; cursor:pointer;
  text-align:left; font:inherit;
}
.bp-more-toggle:hover{ background:transparent; opacity:.9; }
.bp-more-title{
  margin:0; font-weight:400; font-style:italic;
  font-size:clamp(22px,3vw,34px); letter-spacing:-.015em;
  color:var(--bp-chalk);
  text-shadow:var(--bp-press);
}
.bp-more-hint{ margin:0; font-size:9px; letter-spacing:.18em; color:var(--bp-faint); }
.bp-more-body{
  padding:0 0 clamp(20px,3vh,36px);
  color:var(--bp-ink);
}
.bp-more-body.is-press,
.bp-more-body.is-peel{ padding-top:4px; }
.bp-more-body[hidden]{ display:none; }
.bp-letter{ max-width:58ch; }
.bp-letter .reading{
  color:var(--bp-ink);
  font-size:clamp(17px,1.7vw,20px); line-height:1.6;
}
.bp-letter .reading + .reading{ margin-top:1.1em; }
.bp-letter .letter-salutation{ font-style:italic; margin:0 0 1.2em; color:var(--bp-graphite); }
.bp-letter .letter-sign{
  font-style:italic; font-size:clamp(36px,5.2vw,52px); margin-top:.6em;
  color:var(--bp-chalk);
  text-shadow:var(--bp-press);
}
/* P.S. — ordinary letter copy inside From P (no UV) */
.bp-letter .bp-ps{
  margin-top:1.6em;
  max-width:36ch;
  font-style:italic;
  font-size:clamp(15px,1.5vw,18px);
  line-height:1.6;
  color:var(--bp-graphite);
}
.bp-folio .bp-mast dt{ color:var(--bp-faint); }
.bp-folio .bp-mast dd, .bp-folio .bp-mast a{ color:var(--bp-ink); }
.bp-folio .bp-dict-mark{ color:var(--bp-mute); }
.bp-block-grid.is-soft{ border:0; background:transparent; border-radius:0; }
.bp-block-grid.is-soft .bp-cell{ border:0; padding:0; }

.bp-foot{
  margin-top:clamp(16px,3vh,28px);
  padding-top:12px;
  border-top:0;
  background-image:linear-gradient(90deg, transparent, var(--bp-ghost) 20%, var(--bp-ghost) 80%, transparent);
  background-size:100% 1px;
  background-repeat:no-repeat;
  background-position:top;
  display:flex; flex-wrap:wrap; align-items:end; justify-content:space-between; gap:16px;
}
.bp-foot-meta{ margin:0; font-size:9px; letter-spacing:.22em; color:var(--bp-faint); }
.bp-scales{ display:none; }
.bp.is-folio .bp-compass{ display:none; }
.bp.is-folio .bp-draw .bp-note{ opacity:.5; }

/* —— UX leap: ink the sheet, then read it —— */
.bp-fig{ position:relative; overflow:visible; }
.bp-fig.is-plan{
  padding:clamp(4px,0.8vw,10px) 0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  border-top:1px solid var(--bp-ghost);
  border-bottom:1px solid var(--bp-ghost);
  opacity:0;
  transform:translateY(24px);
  filter:none;
  transition:
    opacity 1.2s var(--ease),
    transform 1.35s var(--ease);
}
.bp-fig.is-plan.is-drawing,
.bp-fig.is-plan.is-inked{
  opacity:1;
  transform:none;
  filter:none;
}
.bp-cue{
  position:sticky; top:calc(var(--nav-h) + 8px); z-index:4;
  margin:0 0 clamp(12px,2vh,20px);
  font-size:9px; letter-spacing:.34em; color:var(--bp-mute);
  opacity:.55; transition:opacity .55s var(--ease), color .55s var(--ease), letter-spacing .55s var(--ease);
  pointer-events:none;
}
.bp-cue.is-flash{ opacity:1; color:var(--bp-chalk); letter-spacing:.4em; }

.bp-pen{
  position:absolute; inset:0; pointer-events:none; z-index:3; opacity:0;
  transition:opacity .55s var(--ease);
  --pen-x:4%; --pen-y:40%;
}
.bp-fig.is-drawing .bp-pen{ opacity:1; }
.bp-pen.is-done{ opacity:0; transition-delay:.2s; }
.bp-pen-v, .bp-pen-h{
  position:absolute; display:block;
  background:var(--bp-cyan);
  box-shadow:none;
}
.bp-pen-v{
  top:6%; bottom:10%; width:1px; left:var(--pen-x);
  background:linear-gradient(180deg, transparent, var(--bp-mute) 16%, var(--bp-chalk) 50%, var(--bp-mute) 84%, transparent);
}
.bp-pen-h{
  left:3%; right:3%; height:1px; top:var(--pen-y);
  background:linear-gradient(90deg, transparent, var(--bp-mute) 12%, var(--bp-chalk) 50%, var(--bp-mute) 88%, transparent);
  opacity:.45;
}
.bp-pen-dot{
  position:absolute; width:5px; height:5px; border-radius:50%;
  left:var(--pen-x); top:var(--pen-y);
  margin:-2.5px 0 0 -2.5px;
  background:var(--bp-chalk);
  box-shadow:0 0 0 1px rgba(15,52,82,.35);
}

.bp-draw [data-ink-text], .bp-draw [data-ink-fill]{ transition:opacity .9s var(--ease); }

.bp-room-link{ cursor:pointer; outline:none; }
.bp-room-link .bp-hit{
  fill:rgba(255,255,255,.025);
  transition:fill .5s var(--ease), stroke .5s var(--ease), stroke-width .5s var(--ease);
}
.bp-fig.is-hot .bp-room-link:hover .bp-hit,
.bp-fig.is-hot .bp-room-link:focus-visible .bp-hit{
  fill:rgba(255,255,255,.07);
  stroke:var(--bp-chalk);
  stroke-width:1.5;
}
.bp-fig.is-hot .bp-room-link:hover .bp-door,
.bp-fig.is-hot .bp-room-link:focus-visible .bp-door{
  stroke:var(--bp-ink);
  stroke-width:1.8;
  stroke-opacity:1;
}
.bp-fig.is-hot .bp-room-link:hover .bp-lab,
.bp-fig.is-hot .bp-room-link:focus-visible .bp-lab{ fill:var(--bp-chalk); }
.bp-fig.is-hot .bp-room-link:hover .bp-no,
.bp-fig.is-hot .bp-room-link:focus-visible .bp-no{ fill:var(--bp-chalk); }
.bp-fig.is-hot .bp-room-link:hover,
.bp-fig.is-hot .bp-room-link:focus-visible{
  filter:none;
}

.bp-fig.is-elev .bp-roll{
  transform-box:fill-box;
  transform-origin:center;
  transition:transform .08s linear;
}
.bp-fig.is-elev .bp-shaft{
  filter:drop-shadow(0 0 calc(8px * var(--shaft-glow, 0.2)) rgba(244,247,252,calc(0.35 * var(--shaft-glow, 0.2))));
}

.bp-ch{
  display:inline-block;
  opacity:0;
  transform:translateY(.35em);
  filter:blur(6px);
  transition:opacity .7s var(--ease), transform .7s var(--ease), filter .7s var(--ease);
}
.bp-ch.is-in{ opacity:1; transform:none; filter:none; }
.bp-title .bp-ch{ will-change:opacity, transform, filter; }

.bp-w{
  display:inline-block;
  opacity:0.08;
  will-change:opacity, transform, filter;
}

.bp-block{
  opacity:0;
  transform:translateY(16px);
  transition:opacity 1.1s var(--ease), transform 1.1s var(--swift);
}
.bp-block.is-in{ opacity:1; transform:none; }
.bp-block-grid{
  clip-path: inset(0 100% 0 0);
  transition:clip-path 1.2s var(--ease);
}
.bp-block.is-in .bp-block-grid{ clip-path: inset(0 0 0 0); }
.bp-block.is-in .bp-cell{
  animation:bp-cell-in .7s var(--ease) both;
}
.bp-block.is-in .bp-cell:nth-child(1){ animation-delay:.05s; }
.bp-block.is-in .bp-cell:nth-child(2){ animation-delay:.12s; }
.bp-block.is-in .bp-cell:nth-child(3){ animation-delay:.18s; }
.bp-block.is-in .bp-cell:nth-child(4){ animation-delay:.24s; }
.bp-block.is-in .bp-cell:nth-child(5){ animation-delay:.30s; }
.bp-block.is-in .bp-cell:nth-child(6){ animation-delay:.38s; }
.bp-block.is-in .bp-cell:nth-child(7){ animation-delay:.48s; }
@keyframes bp-cell-in{
  from{ opacity:0; transform:translateY(8px); }
  to{ opacity:1; transform:none; }
}
.bp-mast dt, .bp-mast dd{
  opacity:0;
  transform:translateX(-6px);
}
.bp-block.is-in .bp-mast dt,
.bp-block.is-in .bp-mast dd{
  animation:bp-mast-in .55s var(--ease) both;
}
.bp-block.is-in .bp-mast dt:nth-of-type(1), .bp-block.is-in .bp-mast dd:nth-of-type(1){ animation-delay:.55s; }
.bp-block.is-in .bp-mast dt:nth-of-type(2), .bp-block.is-in .bp-mast dd:nth-of-type(2){ animation-delay:.62s; }
.bp-block.is-in .bp-mast dt:nth-of-type(3), .bp-block.is-in .bp-mast dd:nth-of-type(3){ animation-delay:.69s; }
.bp-block.is-in .bp-mast dt:nth-of-type(4), .bp-block.is-in .bp-mast dd:nth-of-type(4){ animation-delay:.76s; }
.bp-block.is-in .bp-mast dt:nth-of-type(5), .bp-block.is-in .bp-mast dd:nth-of-type(5){ animation-delay:.83s; }
.bp-block.is-in .bp-mast dt:nth-of-type(6), .bp-block.is-in .bp-mast dd:nth-of-type(6){ animation-delay:.90s; }
.bp-block.is-in .bp-mast dt:nth-of-type(7), .bp-block.is-in .bp-mast dd:nth-of-type(7){ animation-delay:.97s; }
.bp-block.is-in .bp-mast dt:nth-of-type(8), .bp-block.is-in .bp-mast dd:nth-of-type(8){ animation-delay:1.04s; }
.bp-block.is-in .bp-mast dt:nth-of-type(9), .bp-block.is-in .bp-mast dd:nth-of-type(9){ animation-delay:1.11s; }
@keyframes bp-mast-in{
  from{ opacity:0; transform:translateX(-6px); }
  to{ opacity:1; transform:none; }
}

.bp-rim-t, .bp-rim-b{ animation:bp-rim-drift 48s linear infinite; }
.bp-rim-b{ animation-direction:reverse; animation-duration:56s; }
@keyframes bp-rim-drift{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}

.bp.is-live .bp-sheet{ animation:bp-sheet-in 1.1s var(--ease) both; }
@keyframes bp-sheet-in{
  from{ opacity:0; filter:blur(8px); }
  to{ opacity:1; filter:none; }
}

.bp-fig.is-inked .bp-stage .bp-roll.is-fill{
  animation:bp-roll-seat .9s var(--ease) both;
}
@keyframes bp-roll-seat{
  from{ opacity:0; transform:scale(.86); }
  to{ opacity:1; transform:none; }
}

.bp.is-live .bp-foot .bp-scale i{
  transform:scaleX(0);
  transform-origin:left center;
  animation:bp-scale-draw 1s var(--ease) .8s forwards;
}
.bp.is-live .bp-foot .bp-scale.is-lg i{ animation-delay:1.05s; }
@keyframes bp-scale-draw{ to{ transform:none; } }

/* slim exit — into Ledger without the tall doorway + site foot */
.bp-exit{
  position:relative;
  margin:0;
  padding:clamp(28px,6vh,56px) var(--gutter) clamp(36px,7vh,72px);
  background:
    linear-gradient(180deg, var(--bp-deep, #041018) 0%, #05080c 55%, #0a0a0a 100%);
  color:#ECE9E1;
  overflow:hidden;
}
.bp-exit::before{
  content:"";
  position:absolute; left:10%; right:10%; top:0; height:1px;
  background:linear-gradient(90deg, transparent, rgba(244,247,252,.35), transparent);
  transform:scaleX(0);
  transition:transform 1.1s var(--ease);
}
.bp-exit.is-in::before{ transform:none; }
.bp-exit-in{
  display:grid;
  grid-template-columns:1fr auto;
  gap:8px 24px;
  align-items:end;
  color:inherit;
  max-width:1100px;
  margin:0 auto;
  position:relative;
  z-index:1;
}
.bp-exit-k{
  grid-column:1 / -1;
  margin:0;
  font-size:9px; letter-spacing:.28em;
  color:rgba(236,233,225,.48);
  opacity:0; transform:translateY(8px);
  transition:opacity .7s var(--ease), transform .8s var(--ease);
}
.bp-exit.is-in .bp-exit-k{ opacity:1; transform:none; }
.bp-exit-name{
  display:block;
  margin:0;
  font-size:clamp(48px,9vw,120px);
  line-height:.9; letter-spacing:-.02em;
  color:#ECE9E1;
  transition:transform .7s var(--ease);
}
.bp-exit-ch{
  display:inline-block; font-style:normal;
  opacity:0; transform:translate3d(0,.35em,0) rotate(-4deg);
  filter:blur(6px);
  transition:
    opacity .65s var(--ease) calc(var(--k) * 45ms + 120ms),
    transform .85s var(--ease) calc(var(--k) * 45ms + 120ms),
    filter .7s var(--ease) calc(var(--k) * 45ms + 120ms);
}
.bp-exit.is-in .bp-exit-ch{
  opacity:1; transform:none; filter:none;
}
.bp-exit-line{
  grid-column:1;
  margin:0;
  font-size:clamp(15px,1.5vw,18px);
  color:rgba(236,233,225,.62);
  opacity:0; transform:translateY(10px);
  transition:opacity .8s var(--ease) .45s, transform .9s var(--ease) .45s;
}
.bp-exit.is-in .bp-exit-line{ opacity:1; transform:none; }
.bp-exit-go{
  font-size:clamp(22px,3vw,36px);
  color:rgba(236,233,225,.7);
  opacity:0; transform:translateX(-12px);
  transition:opacity .7s var(--ease) .55s, transform .7s var(--ease), color .4s var(--ease);
}
.bp-exit.is-in .bp-exit-go{ opacity:1; transform:none; }
.bp-exit-in:hover .bp-exit-name{ transform:translateX(10px); }
.bp-exit-in:hover .bp-exit-go{ transform:translateX(8px); color:#fff; }
.bp-exit-in:hover .bp-exit-ch{
  animation:bp-exit-lift .7s var(--ease) both;
  animation-delay:calc(var(--k) * 28ms);
}
@keyframes bp-exit-lift{
  0%{ transform:translateY(0); }
  45%{ transform:translateY(-.08em); }
  100%{ transform:translateY(0); }
}
@media (max-width:759px){
  .bp-exit-in{ grid-template-columns:1fr; }
  .bp-exit-go{ justify-self:start; }
}

@media (max-width:899px){
  .bp-draw .bp-lab{ font-size:9px; letter-spacing:.08em; }
  .bp-draw .bp-at, .bp-draw .bp-note, .bp-draw .bp-dim-lab{ font-size:8px; }
  .bp-draw .bp-no{ font-size:14px; }
}
@media (max-width:759px){
  .bp-grid{ grid-template-columns:1fr; }
  .bp-letter{ order:-1; }
  .bp-rim-l, .bp-rim-r{ display:none; }
  .bp-title{ font-size:clamp(40px,13vw,68px); }
  .bp-draw .bp-note{ display:none; }
  .bp-compass{ display:none; }
  .bp-pen-h{ display:none; }
  .bp::after{ border-radius:0; }
}
@media (prefers-reduced-motion: reduce){
  .bp-ch, .bp-w, .bp-block, .bp-block-grid, .bp-rim-t, .bp-rim-b, .bp-pen,
  .bp.is-live .bp-sheet, .bp-fig.is-inked .bp-stage .bp-roll.is-fill,
  .bp.is-live .bp-foot .bp-scale i, .bp-block.is-in .bp-cell,
  .bp-block.is-in .bp-mast dt, .bp-block.is-in .bp-mast dd,
  .bp-dict, .bp-dict.is-in .bp-dict-row, .bp-dict::before,
  .bp-deck, .bp-folio, .bp-fig.is-plan,
  .bp-exit-k, .bp-exit-ch, .bp-exit-line, .bp-exit-go, .bp-exit::before,
  .cp-w, .bp-press-k .cp-w, .bp-peel-k .cp-w, .bp-press-line .cp-w, .bp-peel-line .cp-w{
    animation:none !important; transition:none !important;
    opacity:1 !important; transform:none !important; filter:none !important;
    clip-path:none !important;
  }
  .cp-w.is-vinyl, .cp-press .cp-w:not(.is-glyph),
  .bp-press-k .cp-w, .bp-peel-k .cp-w{
    color:var(--bp-chalk) !important;
    -webkit-text-fill-color:var(--bp-chalk) !important;
    background:none !important;
    padding:0 !important;
    margin:0 !important;
    box-shadow:none !important;
    border-radius:0 !important;
    text-shadow:var(--bp-press) !important;
  }
  .bp-press-line .cp-w, .bp-peel-line .cp-w{
    color:var(--bp-chalk) !important;
    background:none !important;
    padding:0 !important;
    box-shadow:none !important;
  }
  .bp-draw [data-ink="1"]{ stroke-dashoffset:0 !important; }
  .bp-fig.is-elev .bp-roll{ transform:none !important; }
}
