
:root{
  --paper:#FBFAF6; --panel:#F2EDF8; --ink:#2E2542; --ink-soft:#6E6486;
  --violet:#7A63A8; --gold:#BE9540; --line:rgba(46,37,66,.16);
  --rose:#D9789E; --sky:#6FA8B5; --leaf:#6FAE8C; --amber:#D19A3D;
  --teal:#2F8F8A; --teal-soft:#CFEDE8; --indigo:#3D348A; --indigo-deep:#241C4E;
  --coral:#E8896A; --skyblue:#4E85C4; --gold-deep:#B9852A; --gold-soft:#F6E9C4;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
body{font-family:'Mulish',sans-serif;background:var(--paper);color:var(--ink);line-height:1.7;font-size:16.5px}
h1,h2,h3{font-family:'Marcellus',serif;font-weight:400}
a{color:var(--violet)}
a:focus-visible,button:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.wrap{max-width:1060px;margin:0 auto;padding:0 24px}

.blocktag{display:none;position:absolute;top:10px;right:12px;z-index:9;font-size:11px;letter-spacing:.08em;text-transform:uppercase;background:var(--ink);color:#fff;padding:4px 10px;border-radius:99px;opacity:.85}
body.show-blocks .blocktag{display:inline-block}
.blockmap-btn{position:fixed;bottom:18px;right:18px;z-index:99;background:var(--ink);color:#fff;border:0;padding:10px 16px;border-radius:99px;font-size:13px;cursor:pointer;font-family:'Mulish',sans-serif;box-shadow:0 4px 14px rgba(46,37,66,.3)}

/* header */
header{border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:50}
.nav{display:flex;align-items:center;justify-content:space-between;padding:18px 0;gap:16px;flex-wrap:wrap}
.brand{font-family:'Marcellus',serif;font-size:1.15rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);text-decoration:none}
nav ul{display:flex;gap:30px;list-style:none;flex-wrap:wrap}
nav a{text-decoration:none;color:var(--ink-soft);font-size:.85rem;letter-spacing:.1em;text-transform:uppercase;font-weight:600}
nav a:hover{color:var(--ink)}
.nav-order{color:var(--gold)!important;border-bottom:1.5px solid var(--gold);padding-bottom:2px}

/* hero */
.hero{position:relative;text-align:center;padding:104px 24px 48px;overflow:hidden;background:
  radial-gradient(120% 85% at 18% 8%, rgba(207,237,232,.85) 0%, rgba(207,237,232,0) 52%),
  radial-gradient(100% 80% at 85% 15%, rgba(246,233,196,.75) 0%, rgba(246,233,196,0) 50%),
  radial-gradient(90% 90% at 50% 105%, rgba(217,120,158,.28) 0%, rgba(217,120,158,0) 55%),
  var(--paper)}
.geometry{width:100%;height:100%;opacity:.5}
.geometry .spin{transform-origin:300px 300px;animation:slowspin 240s linear infinite}
@keyframes slowspin{to{transform:rotate(360deg)}}
.hero-eyebrow{font-size:.78rem;letter-spacing:.34em;text-transform:uppercase;color:var(--gold-deep);font-weight:700;margin-bottom:26px}
.hero-wheel{position:absolute;top:35px;left:50%;transform:translateX(-50%);width:min(539px,90vw);aspect-ratio:1/1;z-index:0;pointer-events:none}
.hero-inner{position:relative;z-index:1;max-width:720px;margin:0 auto}
.hero-cta{margin-top:105px;text-align:center}
.hero h1{font-size:clamp(2.5rem,6vw,4.4rem);line-height:1.08;margin-bottom:20px;background:linear-gradient(100deg,var(--teal) 0%,var(--gold-deep) 32%,var(--coral) 55%,var(--rose) 72%,var(--violet) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
@supports not (background-clip:text){.hero h1{color:var(--indigo)}}
.hero-sub{font-size:1.08rem;color:var(--ink-soft);max-width:52ch;margin:0 auto 40px}
.rule{width:64px;height:1.5px;background:var(--gold);margin:0 auto 34px}
.btn{display:inline-block;text-decoration:none;font-weight:700;font-size:.85rem;letter-spacing:.14em;text-transform:uppercase;padding:15px 34px;transition:background .15s ease,color .15s ease}
.btn-solid{background:var(--ink);color:#fff}
.btn-solid:hover{background:var(--violet)}
.btn-line{border:1.5px solid var(--ink);color:var(--ink);margin-left:12px}
.btn-line:hover{background:var(--ink);color:#fff}

/* rainbow ribbon divider — small colour note between calm sections */
.ribbon{height:5px;background:linear-gradient(90deg,var(--leaf) 0 25%,var(--gold) 25% 50%,var(--rose) 50% 75%,var(--violet) 75% 100%);opacity:.85}

/* four living beings strip */
.beings{padding:70px 0;background:
  radial-gradient(70% 60% at 90% 0%, rgba(185,133,42,.14) 0%, rgba(185,133,42,0) 55%),
  radial-gradient(70% 60% at 5% 100%, rgba(61,52,138,.10) 0%, rgba(61,52,138,0) 55%),
  linear-gradient(180deg,#fff 0%,var(--panel) 100%)}
.beings .eyebrow{text-align:center;display:block}
.beings h2{text-align:center;max-width:640px;margin:0 auto 12px}
.beings > .wrap > p{text-align:center;max-width:58ch;margin:0 auto 44px;color:#4A415F}
.being-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.being{border-radius:14px;overflow:hidden;box-shadow:0 12px 32px rgba(46,37,66,.16);text-align:center;border-top:5px solid var(--gold-deep);background:#fff}
.being:nth-child(2){border-top-color:var(--coral)}
.being:nth-child(3){border-top-color:var(--skyblue)}
.being:nth-child(4){border-top-color:var(--teal)}
.being img{width:100%;display:block;aspect-ratio:3/4;object-fit:cover;object-position:center 22%}
.being figcaption{padding:14px 10px 18px;font-size:.85rem;color:var(--ink-soft);background:transparent}
.being figcaption b{display:block;font-family:'Marcellus',serif;font-size:1.05rem;color:var(--ink);margin-bottom:2px}
.being.lamb img{object-position:center 30%}
.being.angel img{object-position:center 12%}

/* united banner */
.united{margin-top:26px;display:grid;grid-template-columns:.8fr 1.2fr;align-items:center;border-radius:16px;overflow:hidden;box-shadow:0 14px 40px rgba(46,37,66,.18);background:linear-gradient(135deg,var(--indigo-deep),var(--indigo))}
.united-art{display:flex;align-items:center;justify-content:center;padding:32px}
.united-art img{width:100%;max-width:360px;display:block;filter:drop-shadow(0 10px 26px rgba(0,0,0,.35))}
.united-copy{padding:34px 38px 34px 8px;background:transparent;color:#EDE7FA}
.united-copy b{font-family:'Marcellus',serif;font-size:1.3rem;color:#fff;display:block;margin-bottom:8px}
.united-copy p{font-size:.92rem;color:#D8CFEF}

/* inline artwork accents dropped between sections */
.art-inline{display:flex;align-items:center;gap:26px;margin:38px 0}
.art-inline img{width:120px;border-radius:10px;flex:none;box-shadow:0 8px 22px rgba(46,37,66,.16)}
.art-inline p{font-size:.92rem;color:var(--ink-soft);font-style:italic}
.art-inline.right{flex-direction:row-reverse;text-align:right}

/* resources / how-to-use section */
.howto{background:var(--panel);padding:90px 0}
.howto .intro{max-width:66ch;margin:0 0 48px}
.howto .intro p{color:#4A415F;margin-bottom:14px}
.res-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin-top:8px}
.res-card{background:#fff;border-radius:14px;padding:24px 26px;box-shadow:0 8px 24px rgba(46,37,66,.09);border-left:4px solid var(--violet)}
.res-card:nth-child(3n+2){border-left-color:var(--gold)}
.res-card:nth-child(3n+3){border-left-color:var(--rose)}
.res-card h3{font-size:1.15rem;margin-bottom:8px;color:var(--ink)}
.res-card p{font-size:.9rem;color:var(--ink-soft)}
.res-note{margin-top:36px;font-size:.85rem;color:var(--ink-soft);max-width:60ch}

/* gallery presentation */
.gallery{padding:76px 0 96px;border-top:1px solid var(--line);background:
  linear-gradient(180deg, rgba(207,237,232,.35) 0%, rgba(251,250,246,0) 30%),
  linear-gradient(0deg, rgba(246,233,196,.3) 0%, rgba(251,250,246,0) 30%)}
.gal-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.frame{background:#fff;padding:14px;border-radius:22px;box-shadow:0 18px 46px rgba(46,37,66,.18), 0 0 0 1px var(--line);position:relative}
.frame::before{content:"";position:absolute;inset:-10px;border-radius:30px;background:linear-gradient(135deg,var(--teal),var(--gold-deep) 45%,var(--rose) 100%);z-index:-1;opacity:.28;filter:blur(6px)}
.frame img{width:100%;display:block;border-radius:12px}
.frame figcaption{font-size:.8rem;color:var(--ink-soft);text-align:center;padding-top:14px;letter-spacing:.06em}
.gal-copy .eyebrow{font-size:.75rem;letter-spacing:.3em;text-transform:uppercase;color:var(--violet);font-weight:700;margin-bottom:16px}
.gal-copy h2{font-size:clamp(1.8rem,3.2vw,2.5rem);line-height:1.2;margin-bottom:20px}
.gal-copy p{color:#4A415F;margin-bottom:16px;max-width:52ch}
.speclist{margin-top:26px;border-top:1px solid var(--line)}
.speclist div{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);font-size:.92rem}
.speclist dt{color:var(--ink-soft)}
.speclist dd{font-weight:700;color:var(--teal)}
.speclist div:nth-child(2) dd{color:var(--gold-deep)}
.speclist div:nth-child(3) dd{color:var(--rose)}
.speclist div:nth-child(4) dd{color:var(--violet)}

/* verse */
.verse{background:
  radial-gradient(90% 140% at 15% 0%, rgba(47,143,138,.22) 0%, rgba(47,143,138,0) 55%),
  radial-gradient(90% 140% at 85% 100%, rgba(217,120,158,.22) 0%, rgba(217,120,158,0) 55%),
  linear-gradient(165deg, #F2EDF8 0%, #E9E0F2 100%);
  padding:100px 24px;text-align:center;position:relative}
.verse-inner{max-width:560px;margin:0 auto}
.verse-num{font-family:'Marcellus',serif;font-size:.9rem;letter-spacing:.4em;text-transform:uppercase;color:var(--violet);margin-bottom:30px}
.verse-text{font-family:'Marcellus',serif;font-size:clamp(1.3rem,2.4vw,1.65rem);line-height:1.7;color:var(--ink)}
.verse-attr{margin-top:30px;font-size:.85rem;color:var(--ink-soft);font-style:italic}

/* shop */
.shop{padding:96px 0}
.shop-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.shop-copy h2{font-size:clamp(1.9rem,3.4vw,2.6rem);margin-bottom:14px}
.price{font-family:'Marcellus',serif;font-size:2rem;color:var(--gold);margin:18px 0 8px}
.price small{font-family:'Mulish',sans-serif;font-size:.9rem;color:var(--ink-soft)}
.shop-note{font-size:.88rem;color:var(--ink-soft);max-width:46ch;margin-bottom:30px}

/* collections */
.collection{padding:80px 0;border-top:1px solid var(--line)}
.col-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap;margin-bottom:36px}
.col-head h2{font-size:1.9rem}
.col-head a{font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;text-decoration:none}
.list{border-top:1px solid var(--line)}
.item{display:grid;grid-template-columns:110px 1fr auto;gap:24px;align-items:baseline;padding:22px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink);transition:background .15s ease}
.item:hover{background:#fff}
.item .kind{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);font-weight:700}
.item h3{font-size:1.2rem}
.item .go{color:var(--violet);font-size:1.1rem}

/* footer */
footer{border-top:1px solid var(--line);padding:70px 0 40px;text-align:center;position:relative}
footer .brand{display:block;margin-bottom:18px}
.foot-links{display:flex;gap:30px;justify-content:center;list-style:none;flex-wrap:wrap;margin-bottom:30px}
.foot-links a{font-size:.82rem;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;color:var(--ink-soft);font-weight:600}
.fine{font-size:.8rem;color:var(--ink-soft)}

@media(max-width:820px){
  .gal-grid,.shop-grid{grid-template-columns:1fr}
  .item{grid-template-columns:1fr auto}
  .item .kind{grid-column:1/-1}
  .hero{padding:80px 24px 64px}
}

/* ============================================================
   MOBILE RESPONSIVENESS — appended block
   Covers every section added after the original two breakpoints.
   Ordered widest-to-narrowest; each block only overrides what
   needs to change at that width.
   ============================================================ */

/* ---- Tablet / narrow desktop (≤ 900px) ---- */
@media (max-width: 900px) {
  .being-grid { grid-template-columns: repeat(2, 1fr) !important; }
  .res-grid { grid-template-columns: 1fr !important; }
}

/* ---- Phones (≤ 640px) ---- */
@media (max-width: 640px) {
  .wrap { padding: 0 18px; }

  /* Header / nav: stop the 6-item nav from overflowing or wrapping mid-word */
  .nav { flex-direction: column; align-items: flex-start; gap: 12px; padding: 14px 0; }
  nav ul { gap: 14px 18px; flex-wrap: wrap; width: 100%; }
  nav a { font-size: .82rem; }

  /* Hero */
  .hero { padding: 56px 18px 48px; }
  .hero h1 { font-size: clamp(2rem, 9vw, 2.8rem); line-height: 1.12; }
  .hero-sub { font-size: 1rem; }
  .hero-actions, .hero p:has(.btn) { flex-direction: column; align-items: stretch; }
  .btn { text-align: center; }
  .btn-line { margin-left: 0 !important; margin-top: 10px; }
  /* .hero-wheel max-width already handles mobile sizing responsively */

  /* About/gallery section */
  .gal-grid { grid-template-columns: 1fr !important; gap: 32px; }

  /* Verse panel */
  .verse { padding: 56px 18px; }
  .verse-text { font-size: 1.15rem; }

  /* Four-being & studio galleries */
  .being-grid { grid-template-columns: 1fr !important; max-width: 320px; margin: 0 auto; }
  .beings { padding: 48px 0; }

  /* United around the Lamb banner */
  .united { grid-template-columns: 1fr !important; }
  .united-art { padding: 24px; }
  .united-art img { max-width: 240px; }
  .united-copy { padding: 8px 24px 28px !important; text-align: center; }

  /* Shop section */
  .shop-grid { grid-template-columns: 1fr !important; gap: 32px; }
  .shop { padding: 56px 0; }
  .price { font-size: 1.7rem; }

  /* Downloads / Research lists */
  .item { grid-template-columns: 1fr auto !important; gap: 6px 16px; padding: 16px 0; }
  .item .kind { grid-column: 1 / -1; }
  .col-head { flex-direction: column; align-items: flex-start; gap: 8px; }

  /* Resources / how-to-use */
  .howto { padding: 56px 0; }
  .res-card { padding: 22px 20px; }

  /* Footer */
  .foot-links { flex-direction: column; gap: 14px; align-items: center; }

  /* Safety net: nothing should ever force horizontal scroll */
  img { max-width: 100%; height: auto; }
  body { overflow-x: hidden; }
}

/* ---- Very small phones (≤ 380px) ---- */
@media (max-width: 380px) {
  .hero h1 { font-size: 1.85rem; }
  .price { font-size: 1.5rem; }
}

/* ============================================================
   MOBILE PASS 2 — hamburger nav + compact being-cards
   Append to the very end of static/css/main.css, after the
   first mobile block already there. Later rules win ties,
   so this safely refines what's already in place.
   ============================================================ */

/* ---- Hamburger nav: hidden checkbox drives it, no JS needed ---- */
.nav-toggle { position: absolute; opacity: 0; pointer-events: none; }
.nav-burger { display: none; }

@media (max-width: 640px) {
  .nav { flex-wrap: wrap; flex-direction: row; align-items: center; gap: 0; }
  .brand { order: 1; }

  .nav-burger {
    order: 2;
    display: flex; flex-direction: column; justify-content: center;
    gap: 5px; width: 30px; height: 24px; cursor: pointer;
  }
  .nav-burger span {
    display: block; height: 2px; background: var(--ink); border-radius: 2px;
    transition: transform .2s ease, opacity .2s ease;
  }

  nav[aria-label="Main"] { order: 3; width: 100%; }
  nav[aria-label="Main"] ul {
    display: none; flex-direction: column; width: 100%;
    padding-top: 10px; gap: 0;
  }
  nav[aria-label="Main"] ul li { width: 100%; border-top: 1px solid var(--line); }
  nav[aria-label="Main"] ul li a { display: block; padding: 13px 2px; font-size: .92rem; }
  .nav-order { border-bottom: none !important; }

  /* Open state, driven purely by :checked + :has() */
  header:has(.nav-toggle:checked) nav[aria-label="Main"] ul { display: flex; }
  header:has(.nav-toggle:checked) .nav-burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  header:has(.nav-toggle:checked) .nav-burger span:nth-child(2) { opacity: 0; }
  header:has(.nav-toggle:checked) .nav-burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
}

/* ---- Compact being-cards: 2-up grid, square crop instead of tall portrait ---- */
@media (max-width: 640px) {
  .being-grid { grid-template-columns: repeat(2, 1fr) !important; max-width: 100%; gap: 14px; }
  .being img { aspect-ratio: 1/1 !important; }
  .being figcaption { padding: 10px 8px 14px; font-size: .78rem; }
  .being figcaption b { font-size: .9rem; }
}

/* Even narrower phones: drop to single column so cards don't get too cramped */
@media (max-width: 380px) {
  .being-grid { grid-template-columns: 1fr !important; max-width: 280px; margin: 0 auto; }
  .being img { aspect-ratio: 4/3 !important; }
}

/* ============================================================
   MOBILE PASS 3 — fix: .nav padding shorthand was overwriting
   .wrap's horizontal padding (both set the `padding` property,
   this one loaded last, so it silently zeroed left/right).
   ============================================================ */
@media (max-width: 640px) {
  .nav { padding: 14px 18px; }
}
/* ============================================================
   BANK TRANSFER PANEL — toggle-reveal, pure CSS (same pattern
   as the mobile nav), styled to match the site's existing tokens.
   ============================================================ */
.bank-toggle { position: absolute; opacity: 0; pointer-events: none; }
.bank-panel { display: none; margin-top: 24px; padding: 24px 26px; background: var(--panel); border-radius: 14px; border: 1px solid var(--line); }
.bank-toggle:checked ~ .bank-panel { display: block; }
.bank-panel h3 { font-family: 'Marcellus', serif; font-size: 1.15rem; margin-bottom: 14px; color: var(--ink); }
.bank-list { margin-bottom: 16px; }
.bank-list > div { display: flex; justify-content: space-between; gap: 16px; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: .92rem; }
.bank-list dt { color: var(--ink-soft); }
.bank-list dd { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-weight: 600; color: var(--ink); letter-spacing: .02em; }
.bank-note { font-size: .85rem; color: var(--ink-soft); margin-bottom: 8px; }
.bank-email { color: var(--gold-deep); font-weight: 600; }
.bank-abn { font-size: .78rem; color: var(--ink-soft); margin-top: 12px; opacity: .8; }
 
@media (max-width: 640px) {
  .bank-list > div { flex-direction: column; gap: 2px; }
}
/* ============================================================
   COPY BUTTONS — small, discrete, one per bank detail row
   ============================================================ */
.bank-list dd { display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
.copy-btn {
  font-family: inherit; font-size: .7rem; font-weight: 600; letter-spacing: .04em;
  color: var(--ink-soft); background: transparent; border: 1px solid var(--line);
  border-radius: 99px; padding: 3px 11px; cursor: pointer; flex: none;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.copy-btn:hover { background: #fff; color: var(--ink); border-color: var(--ink-soft); }
.copy-btn.copied { color: var(--teal); border-color: var(--teal); background: var(--teal-soft); }

@media (max-width: 640px) {
  .bank-list dd { justify-content: space-between; }
}

