/* Prasasti — Romance Flagship 1.0.0
 * A wedding invitation cut as an inscription. Every other family in this
 * catalogue stacks cards with gaps between them; this one has no cards at all.
 * The document is ONE continuous face of stone from the gate to the closing,
 * divided into registers by chiselled rules, with the type cut INTO the surface
 * and the photographs sitting in recesses quarried out of the same face.
 *
 * Every surface declares its own stone AND its own ink in the same rule, so a
 * palette can never leave text the colour of what is behind it.
 *
 * Two things here are easy to get wrong and invisible in a stylesheet read. A
 * face that is secretly still a stack of cards — one stray background or margin
 * between registers and the continuity that is the whole point is gone, and the
 * CSS still looks correct. And carving drawn in the colour of the stone it is
 * cut into, which draws nothing at all: six earlier signatures in this catalogue
 * shipped that way. Both are measured in a browser, not assumed.
 */

/* Tokens ------------------------------------------------------------------- */
.uk-prasasti{
  --pr-stone:#DEDFD9;--pr-ink:#20251F;--pr-mist:#5A6259;--pr-moss:#4A5B49;--pr-ochre:#6A5C40;
  --pr-line:rgba(32,37,31,.16);--pr-recess:#CFD1C9;
  /* --pr-lit is the face catching light along the LOWER lip of a cut and
     --pr-shadow the dark along the upper lip. They are the only two colours
     that make a groove read as depth, and they must both differ from the stone
     they sit in or the carving draws nothing. */
  --pr-lit:#F2F3EE;--pr-shadow:#9CA096;
  --pr-radius:10px;--pr-radius-sm:6px;--pr-measure:58ch;
  --pr-cut:2px;            /* how deep the chisel goes */
  --pr-col-w:46px;         /* the mark rail's own gutter, reserved by every register */
  --pr-display:"Lora",Georgia,Cambria,"Times New Roman",serif;
  --pr-sans:"DM Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  position:relative;background:var(--pr-stone);color:var(--pr-ink);
  font-family:var(--pr-sans);font-size:16px;line-height:1.68;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
[hidden]{display:none !important}
.uk-prasasti *,.uk-prasasti *::before,.uk-prasasti *::after{box-sizing:border-box}
.uk-prasasti img{display:block;max-width:100%}
/* The UA stylesheet gives <figure> margin:1em 40px, and every gallery tile here
   is a figure. Unreset it eats 80px of each column — three shipped templates
   lost their phone galleries to exactly this. */
.uk-prasasti figure{margin:0}
.uk-prasasti h1,.uk-prasasti h2,.uk-prasasti h3,.uk-prasasti h4{font-family:var(--pr-display);font-weight:600;line-height:1.2;margin:0}
.uk-prasasti p{margin:0}
/* :where() so this stays a DEFAULT. As ".uk-prasasti button" it was (0,1,1)
   and outranked every button rule written as a single class, so 6 declared
   button colours in this file never applied and those buttons took the page
   ink instead — including the lightbox controls on their dark scrim. */
.uk-prasasti :where(button){font-family:inherit;color:inherit}
#uk-pr-content{padding-top:0}

/* Shared type and ornament ------------------------------------------------- */
.uk-pr-eyebrow{font-size:11px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:var(--pr-moss)}
.uk-pr-rule{display:block;width:min(100%,78px);height:1px;margin:10px 0;background:var(--pr-moss);opacity:.6}
.uk-pr-rule.is-center{margin-left:auto;margin-right:auto}
.uk-pr-copy{max-width:var(--pr-measure);margin-top:14px;color:var(--pr-mist);font-size:15px}
.uk-pr-lead{max-width:var(--pr-measure);margin-top:12px;font-family:var(--pr-display);font-size:20px;color:var(--pr-ink)}
.uk-pr-preline{white-space:pre-line}
.uk-pr-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.uk-pr-signature{margin-top:16px;font-family:var(--pr-display);font-size:22px;color:var(--pr-ink)}
.uk-pr-quote{max-width:var(--pr-measure);margin-top:20px;padding:16px 20px;border-left:2px solid var(--pr-moss);border-radius:0 3px 3px 0;color:var(--pr-ink);font-family:var(--pr-display);font-size:17px;font-style:italic}
.uk-pr-quote cite{display:block;margin-top:10px;font-family:var(--pr-sans);font-size:12px;font-style:normal;letter-spacing:.16em;text-transform:uppercase;color:var(--pr-mist)}
.uk-pr-occasions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;margin-top:12px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--pr-mist)}
.uk-pr-occasions span+span::before{content:"·";padding-right:6px;font-size:14px;color:var(--pr-ochre)}
.uk-pr-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border:1px solid var(--pr-moss);border-radius:999px;background:transparent;color:var(--pr-ink);font-size:13px;font-weight:600;letter-spacing:.06em;text-decoration:none;cursor:pointer;transition:transform .25s ease,background .25s ease}
.uk-pr-button:hover{transform:translateY(-1px);box-shadow:inset 0 calc(-1 * var(--pr-cut)) 0 var(--pr-lit)}
.uk-pr-button.is-solid{border-color:transparent;background:var(--pr-moss);color:#FBF6EA}
.uk-pr-button:focus-visible,.uk-prasasti button:focus-visible,.uk-prasasti a:focus-visible{outline:2px solid var(--pr-ochre);outline-offset:3px}

/* THE CARVED FACE --------------------------------------------------------
   The signature, and the thing that separates this family from every other one
   here: there are no cards. The registers sit directly on one continuous field
   of stone, with no background of their own and no gap between them, so the
   grain runs unbroken from the first line to the last.

   What divides them is a chiselled rule, and what marks a heading is the type
   being cut INTO the surface rather than printed on it: a dark inset above the
   glyph and a lit edge below, which is what a chisel leaves. Cut in the stone
   colour it would draw nothing — the trap six earlier signatures fell into. */
.uk-pr-face{position:relative;background:var(--pr-stone);
  /* The grain: fine horizontal bedding, uninterrupted down the whole face. */
  background-image:repeating-linear-gradient(180deg,rgba(32,37,31,.028) 0 1px,transparent 1px 6px)}
/* A chiselled rule between registers: a dark groove with a lit lower edge, the
   way a real cut catches the light from above. */
.uk-pr-rule-cut{position:relative;display:block;height:calc(var(--pr-cut) + 1px);margin:0;pointer-events:none;
  background:var(--pr-shadow);
  box-shadow:0 1px 0 var(--pr-lit)}
/* Incised type. The glyph keeps the stone's own colour and the depth comes from
   the two shadows, so the carving reads on any palette without a second ink. */
.uk-pr-incised{color:var(--pr-ink);
  text-shadow:0 calc(-1 * var(--pr-cut)) 0 var(--pr-shadow), 0 var(--pr-cut) 0 var(--pr-lit)}
/* A recess quarried out of the face, and EVERY block of content in the document
   is one: darker at the top where the cut is deepest, with a lit sill along the
   bottom. This is the single source of depth in the template. There is no rule
   anywhere that gives a content block a raised fill, because a raised fill is a
   card and a card would lift the block off the face. Sunk blocks only. */
.uk-pr-entry,.uk-pr-event,.uk-pr-count div,.uk-pr-streams a,
.uk-pr-accounts article,.uk-pr-contacts article,.uk-pr-faq details{
  position:relative;background:var(--pr-recess);
  box-shadow:inset 0 calc(var(--pr-cut) + 1px) 3px rgba(20,24,19,.34), inset 0 calc(-1 * var(--pr-cut)) 0 var(--pr-lit)}

/* GATE: the face of the stone -------------------------------------------
   The grain and the carved border are drawn BEHIND the plate and reach past it
   on all sides, so the stone the inscription is cut into is visible rather than
   hidden by the inscription. The button is cut into the plate, in flow. */
.uk-pr-gate{--pr-stone:#1A1D19;--pr-ink:#E6E9E2;--pr-mist:#A4ADA1;--pr-moss:#A8BFA4;--pr-ochre:#C8B184;--pr-line:rgba(230,233,226,.22);--pr-lit:#6E7A6B;--pr-shadow:#0C0E0B;
  position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:20px;background:#101512;color:var(--pr-ink);transition:opacity .7s ease,visibility .7s ease}
.uk-pr-gate.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.uk-pr-slab{position:relative;display:grid;grid-template-rows:auto auto;place-items:center;width:min(100%,460px)}
/* The stone the plate is cut into. Bedding grain and a chiselled border, drawn
   behind the plate and reaching well PAST it — a field no wider than the plate
   is hidden by the plate, which is how a signature ends up present in the DOM
   and invisible on the screen. */
.uk-pr-grain{position:absolute;left:50%;top:50%;z-index:0;width:min(168vw,780px);height:min(120vh,660px);
  transform:translate(-50%,-50%);pointer-events:none;overflow:hidden;
  background:repeating-linear-gradient(180deg,
    rgba(230,233,226,.14) 0 1px,
    transparent 1px 9px);
  -webkit-mask-image:radial-gradient(ellipse 72% 66% at 50% 50%,#000 58%,transparent 92%);
  mask-image:radial-gradient(ellipse 72% 66% at 50% 50%,#000 58%,transparent 92%)}
/* The carved border of the stele: three rules cut round the plate, each one
   further out, with a band of dressed stone between them.

   It is drawn as rings rather than as lines crossing behind the plate, because
   lines behind the plate are mostly hidden by it: measured at 1280 the two inner
   rules were covered completely and only 40px tips of the outermost escaped on
   either side. And every ring is cut TWICE — the dark lip and then the lit lip a
   pixel under it — because a cut drawn only in the shadow colour disappears on
   dark stone, which is what this gate is. Before both lips, 87% of the exposed
   face at 390px was one flat colour and the brightest thing on it was 0.4% of
   the pixels. Seventh time this catalogue has drawn a decoration in the colour
   of the thing behind it. */
.uk-pr-grain::after{content:"";position:absolute;left:50%;top:50%;z-index:0;
  width:min(86vw,432px);height:min(74vh,616px);transform:translate(-50%,-50%);
  border-radius:3px;
  box-shadow:
    0 0 0 1px var(--pr-shadow), 0 1px 0 1px var(--pr-lit),
    0 0 0 11px var(--pr-stone),
    0 0 0 12px var(--pr-shadow), 0 1px 0 12px var(--pr-lit),
    0 0 0 22px var(--pr-stone),
    0 0 0 23px var(--pr-shadow), 0 1px 0 23px var(--pr-lit)}
.uk-pr-plate{position:relative;z-index:2;grid-row:1;display:grid;grid-template-rows:auto auto;overflow:hidden;border:1px solid var(--pr-line);border-radius:var(--pr-radius);background:#1E2A21}
.uk-pr-portrait{position:relative;height:min(40svh,272px);overflow:hidden;background:#243024}
.uk-pr-portrait img{width:100%;height:100%;object-fit:cover;object-position:var(--pr-focus-mobile-x,50%) var(--pr-focus-mobile-y,38%)}
.uk-pr-gate-body{position:relative;padding:26px 22px 24px;text-align:center}
.uk-pr-gate-body h1{margin-top:8px;font-size:clamp(27px,7.6vw,42px)}
.uk-pr-gate-date{display:inline-flex;align-items:center;gap:7px;margin-top:14px;padding:7px 16px;border:1px solid var(--pr-line);border-radius:999px;font-size:12px;letter-spacing:.08em;color:var(--pr-mist)}
.uk-pr-couple-list{display:grid;gap:8px;margin-top:14px}
.uk-pr-couple-list span{display:grid;gap:2px}
.uk-pr-couple-list small{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--pr-mist)}
.uk-pr-couple-list strong{font-family:var(--pr-display);font-size:18px;font-weight:600}
/* The chisel. Its own line, always: the buttons here are inline-flex, so on a
   plate wide enough it came to rest beside the date chip instead of centred
   beneath it — seen at 1280, where the plate is 530px across. */
.uk-pr-gate-open{position:relative;display:flex;width:fit-content;margin:18px auto 0;padding:13px 26px;border-color:transparent;background:var(--pr-moss);color:#12160F;font-size:14px;
  box-shadow:0 0 0 4px rgba(168,191,164,.18)}
/* The chisel stroke the gate makes when it is opened: a cut that travels across
   the face and widens. */
.uk-pr-chisel{position:absolute;left:0;right:0;top:50%;z-index:1;height:2px;background:var(--pr-lit);opacity:0;pointer-events:none}
.uk-pr-gate.is-carved .uk-pr-chisel{animation:uk-pr-strike .85s ease-out forwards}
@keyframes uk-pr-strike{from{opacity:.75;transform:scaleX(.08)}to{opacity:0;transform:scaleX(1)}}

/* COVER -------------------------------------------------------------------- */
.uk-pr-cover{--pr-stone:#1C201B;--pr-ink:#E6E9E2;--pr-mist:#AEB7AB;--pr-moss:#A8BFA4;--pr-ochre:#C8B184;--pr-line:rgba(230,233,226,.24);--pr-lit:#6E7A6B;--pr-shadow:#0C0E0B;
  position:relative;display:grid;min-height:100svh;background:var(--pr-stone);color:var(--pr-ink)}
.uk-pr-cover-media{position:absolute;inset:0;overflow:hidden}
.uk-pr-cover-image{width:100%;height:100%;object-fit:cover;object-position:var(--pr-focus-mobile-x,50%) var(--pr-focus-mobile-y,38%)}
.uk-pr-cover-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(28,32,27,.3) 0%,rgba(28,32,27,.76) 60%,#18201A 100%)}
.uk-pr-cover-empty{position:absolute;inset:0;display:grid;place-items:center;background:#1B241C}
.uk-pr-cover-empty-grid{position:absolute;inset:0;background-image:repeating-radial-gradient(circle at 50% 42%,rgba(168,191,164,.14) 0 1px,transparent 1px 30px)}
.uk-pr-cover-empty-mark{position:relative;font-family:var(--pr-display);font-size:23px;letter-spacing:.2em;padding:10px 18px;border:1px solid var(--pr-line);border-radius:999px;color:#E6E9E2}
.uk-pr-cover-panel{position:relative;align-self:end;padding:40px calc(var(--pr-col-w) + 12px) 56px;text-align:center}
.uk-pr-cover-panel h1{margin-top:8px;font-size:clamp(29px,8.4vw,52px)}
.uk-pr-cover-date{display:inline-flex;align-items:center;gap:7px;margin-top:14px;padding:7px 16px;border:1px solid var(--pr-line);border-radius:999px;font-size:12px;letter-spacing:.08em;color:var(--pr-mist)}

/* THE INSCRIPTION: registers cut into one continuous face ------------------
   The mason-mark rail owns the LEFT gutter and every register reserves it, at
   every breakpoint, so no line of text can run underneath the marks.

   A register. No background and no margin: it is a stretch of the face, not a
   thing sitting on it. The only thing between two registers is the cut. */
.uk-pr-register{position:relative;margin:0;padding:26px 14px 26px calc(var(--pr-col-w) + 10px);background:transparent;scroll-margin-top:16px}
/* The reading column. A width and nothing else: no card, no border, no
   shadow — anything here would lift the register off the face and put the
   gaps back. */
.uk-pr-column{position:relative;width:min(100%,780px);margin-inline:auto;color:var(--pr-ink)}
.uk-pr-mark{position:absolute;right:18px;top:16px;font-family:var(--pr-display);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--pr-mist)}
.uk-pr-head{position:relative;z-index:1;margin-bottom:14px}
/* The reading column is capped so a line never runs too long, and centred so a
   wide panel is not left with an empty half beside it. */
.uk-pr-head,.uk-pr-body{max-width:min(100%,620px);margin-inline:auto}
.uk-pr-body{position:relative;z-index:1}
.uk-pr-body h2{font-size:clamp(22px,5.2vw,32px)}
.uk-pr-body h3{font-size:18px}
.uk-pr-body h4{font-size:17px}
.uk-pr-narrow{width:min(100%,600px);margin-inline:auto;text-align:center}

/* Entries (story, agenda) -------------------------------------------------- */
.uk-pr-entries{position:relative;list-style:none;display:grid;gap:14px;margin:22px 0 0;padding:0}
.uk-pr-entry{position:relative;padding:15px 18px 15px 26px;border-radius:3px}
.uk-pr-entry-mark{position:absolute;left:10px;top:20px;width:8px;height:8px;border-radius:50%;background:var(--pr-moss)}
.uk-pr-entry-label{font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--pr-moss)}
.uk-pr-entry h3{margin-top:4px}
.uk-pr-entry p{margin-top:6px;color:var(--pr-mist);font-size:15px}

/* People ------------------------------------------------------------------- */
.uk-pr-people{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:26px;margin-top:22px}
.uk-pr-person{text-align:center}
.uk-pr-portrait-round{width:134px;height:134px;margin:0 auto 12px;overflow:hidden;border-radius:50%;background:var(--pr-recess);box-shadow:inset 0 3px 4px rgba(20,24,19,.34),inset 0 -2px 0 var(--pr-lit)}
.uk-pr-portrait-round img{width:100%;height:100%;object-fit:cover}
.uk-pr-portrait-round.is-empty{display:grid;place-items:center}
.uk-pr-portrait-round.is-empty span{font-family:var(--pr-display);font-size:34px;color:var(--pr-moss)}
.uk-pr-person h4{margin-top:8px;font-size:21px}
.uk-pr-person>strong{display:block;margin-top:2px;font-size:14px;font-weight:600;color:var(--pr-mist)}
.uk-pr-parents{margin-top:8px;color:var(--pr-mist);font-size:14px}
.uk-pr-parents em{font-style:normal;padding:0 5px;color:var(--pr-ochre)}
.uk-pr-bio{margin-top:8px;color:var(--pr-mist);font-size:14px}
.uk-pr-couples{display:grid;gap:26px;margin-top:20px}
.uk-pr-couple{margin-top:26px}
.uk-pr-couple header{text-align:center;margin-bottom:14px}
.uk-pr-couple header span{font-family:var(--pr-display);font-size:25px;color:var(--pr-ochre)}
.uk-pr-couple-index{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px}
.uk-pr-couple-index button{padding:7px 14px;border:1px solid var(--pr-line);border-radius:999px;background:transparent;cursor:pointer}
.uk-pr-couple-index button span{font-size:11px;letter-spacing:.12em;color:var(--pr-ochre)}

/* Events ------------------------------------------------------------------- */
.uk-pr-events{display:grid;gap:16px;margin-top:20px}
.uk-pr-event{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;padding:20px;border-radius:3px}
.uk-pr-event-mark{display:grid;place-items:center;width:34px;height:34px;border:2px solid var(--pr-moss);border-radius:50%;color:var(--pr-moss)}
.uk-pr-event-body{min-width:0}
.uk-pr-event h3{margin-top:4px;font-size:21px}
.uk-pr-when{margin-top:6px;font-weight:600}
.uk-pr-address{margin-top:4px;color:var(--pr-mist);font-size:14px}
.uk-pr-scope{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:12px;color:var(--pr-mist)}
.uk-pr-scope strong{padding:3px 9px;border:1px solid var(--pr-line);border-radius:999px;font-weight:600;color:var(--pr-ink)}
.uk-pr-map{width:100%;height:190px;margin-top:12px;border:1px solid var(--pr-line);border-radius:var(--pr-radius-sm)}
.uk-pr-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}

/* Countdown ---------------------------------------------------------------- */
.uk-pr-count{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:20px}
.uk-pr-count div{padding:14px 8px;border-radius:3px;text-align:center}
.uk-pr-count strong{display:block;font-family:var(--pr-display);font-size:29px;line-height:1.1}
.uk-pr-count span{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--pr-mist)}

/* GALLERY: recesses quarried from the face --------------------------------
   The widest recess heads each group and the two below it share the next row — a
   cycle of three that fills exactly two rows, every time. A cycle of four leaves
   three half-width recesses to pair off two at a time, and the third is laid out
   alone beside an empty half. Each recess carries the same cut as the rest of
   the face: dark at the top of the quarry, lit along the sill. */
.uk-pr-gallery-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--pr-mist)}
.uk-pr-gallery-tools div{display:flex;gap:8px}
.uk-pr-gallery-tools button{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--pr-line);border-radius:var(--pr-radius-sm);background:transparent;cursor:pointer}
.uk-pr-gallery{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:22px}
.uk-pr-niche{position:relative;grid-column:span 2;margin:0;overflow:hidden;border-radius:var(--pr-radius-sm);background:var(--pr-recess)}
/* The head recess takes the full width; the two below it share the next row. */
.uk-pr-niche:nth-child(3n+1){grid-column:1/-1}
.uk-pr-niche img{width:100%;aspect-ratio:4/5;object-fit:cover}
/* The lip of the quarry, drawn ON TOP of the photograph. An inset box-shadow on
   the figure is painted beneath its own content, so the photo covers it and the
   recess reads as a flat print laid on the stone instead of sunk into it. */
.uk-pr-niche::after{content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 calc(var(--pr-cut) + 1px) 4px rgba(20,24,19,.5), inset 0 calc(-1 * var(--pr-cut)) 0 var(--pr-lit)}
.uk-pr-niche:nth-child(3n+1) img{aspect-ratio:16/9}
.uk-pr-niche button{position:absolute;right:8px;bottom:8px;display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:50%;background:rgba(26,29,25,.74);color:#DEDFD9;cursor:pointer}
/* The one position a group can end on and leave a recess alone: the first of the
   two below the head. It takes the full width instead, with the head's wide
   crop — at its own 4/5 portrait a full-width recess came out three times the
   height of everything above it. */
.uk-pr-niche:last-child:nth-child(3n+2){grid-column:1/-1}
.uk-pr-niche:last-child:nth-child(3n+2) img{aspect-ratio:16/9}

/* Gift, contacts, FAQ ------------------------------------------------------ */
.uk-pr-streams{display:grid;gap:10px;margin-top:18px}
.uk-pr-streams a{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:3px;color:var(--pr-ink);text-decoration:none}
.uk-pr-streams a span{display:grid;flex:1}
.uk-pr-streams a strong{font-size:14px}
.uk-pr-streams a small{font-size:12px;color:var(--pr-mist)}
.uk-pr-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.uk-pr-tabs button{display:inline-flex;align-items:center;gap:7px;padding:9px 15px;border:1px solid var(--pr-line);border-radius:999px;background:transparent;font-size:12px;font-weight:600;cursor:pointer}
.uk-pr-tabs button.is-active{border-color:var(--pr-moss);box-shadow:inset 0 calc(var(--pr-cut) + 1px) 3px rgba(20,24,19,.26)}
.uk-pr-gift-panel{margin-top:16px}
.uk-pr-accounts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.uk-pr-accounts>*:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:min(100%,400px)}
.uk-pr-accounts article{padding:16px;border-radius:3px;text-align:center}
.uk-pr-accounts strong{display:block;margin-top:6px;font-family:var(--pr-display);font-size:20px;letter-spacing:.05em}
.uk-pr-accounts article p{margin-top:4px;font-size:13px;color:var(--pr-mist)}
.uk-pr-accounts article .uk-pr-button{margin-top:12px}
.uk-pr-address-card{padding:18px;border:1px dashed var(--pr-moss);border-radius:3px;text-align:center}
.uk-pr-address-card strong{display:block;margin-top:6px;font-family:var(--pr-display);font-size:18px}
.uk-pr-address-card p{margin-top:6px;font-size:14px;color:var(--pr-mist)}
.uk-pr-contacts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}
.uk-pr-contacts>*:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:min(100%,400px)}
.uk-pr-contacts article{padding:16px;border-radius:3px;text-align:center}
.uk-pr-contacts strong{display:block;margin-top:6px;font-size:15px}
.uk-pr-contacts article p{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:6px;font-size:13px;color:var(--pr-mist)}
.uk-pr-contacts article .uk-pr-button{margin-top:12px}
.uk-pr-hashtags{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:18px}
.uk-pr-hashtags button{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border:1px solid var(--pr-line);border-radius:999px;background:transparent;font-size:12px;cursor:pointer}
.uk-pr-faq{display:grid;gap:10px;margin-top:18px}
.uk-pr-faq details{padding:14px 16px;border-radius:3px}
.uk-pr-faq summary{display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;font-weight:600;list-style:none}
.uk-pr-faq summary::-webkit-details-marker{display:none}
.uk-pr-faq p{margin-top:8px;color:var(--pr-mist);font-size:15px}
.uk-pr-engagement .uk-pr-body{margin-top:4px}
.uk-pr-feedback{position:relative;z-index:24;display:flex;align-items:center;gap:10px;width:min(100%,680px);margin:16px auto 0;padding:13px 16px;border:1px solid rgba(74,91,73,.32);border-radius:var(--pr-radius-sm);background:#E4E7DE;color:#22291F;font-size:14px}

/* CLOSING: the last register -------------------------------------------------- */
.uk-pr-closing{--pr-stone:#1A1D19;--pr-ink:#E6E9E2;--pr-mist:#A9B2A6;--pr-moss:#A8BFA4;--pr-ochre:#C8B184;--pr-line:rgba(230,233,226,.22);--pr-recess:#0E100D;--pr-lit:#6E7A6B;--pr-shadow:#080A07;
  position:relative;padding:72px calc(var(--pr-col-w) + 12px) 88px;
  background:var(--pr-stone);color:var(--pr-ink);text-align:center;scroll-margin-top:16px}
.uk-pr-closing h2{font-size:clamp(24px,6vw,36px)}
.uk-pr-closing-mark{display:grid;place-items:center;width:64px;height:64px;margin:20px auto 0;border:2px solid var(--pr-moss);border-radius:50%;font-family:var(--pr-display);font-size:14px;letter-spacing:.16em;color:var(--pr-moss);
  box-shadow:0 0 0 5px rgba(168,191,164,.16)}
.uk-pr-closing-share{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:20px}

/* THE MARKS: chapters as mason's marks down the left edge -----------------
   Each register is one mark cut into the margin of the face, the way a mason
   signs the course he set. The mark is drawn INSIDE the rail's own width, never
   by widening it, so the chrome always fits the gutter the registers reserved. */
.uk-pr-marks-rail{position:fixed;left:0;top:50%;transform:translateY(-50%);z-index:26;display:flex;flex-direction:column;align-items:center;
  width:var(--pr-col-w);max-width:var(--pr-col-w);max-height:88svh;
  padding:8px 0;background:rgba(26,29,25,.92);border-right:1px solid rgba(168,191,164,.4);color:#E6E9E2}
.uk-pr-marks-rail-line{position:absolute;left:50%;top:0;bottom:0;width:1px;background:rgba(168,191,164,.42);transform:translateX(-50%)}
.uk-pr-marks{position:relative;list-style:none;display:grid;gap:0;margin:0;padding:0;width:100%;
  /* The strokes are what gives way when the index runs out of room, so
     min-height:0 lets this shrink below its content and scroll instead. */
  flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:none}
.uk-pr-marks::-webkit-scrollbar{display:none}
.uk-pr-mark-item button{display:grid;place-items:center;width:100%;height:44px;border:0;background:transparent;color:inherit;cursor:pointer;padding:0}
/* A mark: a small chiselled notch. Cut with the same two shadows as everything
   else on the face, so it reads as incised rather than printed. */
.uk-pr-mark-item button i{display:block;width:11px;height:11px;background:rgba(230,233,226,.3);
  clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);
  transition:transform .3s ease,background .3s ease}
.uk-pr-mark-item button.is-active i{transform:scale(1.45);background:#A8BFA4}
.uk-pr-mark-item button:hover i{transform:scale(1.2)}
/* The chapter being read, named in standing type inside the index's own width
   so the chrome is never wider than the gutter the sections reserved. */
.uk-pr-standing{display:none;
  /* flex:0 0 auto, never flex:1. A vertical line of type has no height of its
     own to grow from, and the index shrink-wraps its strokes, so a name asking
     for leftover space is drawn a few pixels wide and none tall. */
  flex:0 0 auto;min-width:0;margin:6px 0 0;padding:0;
  writing-mode:vertical-rl;text-orientation:mixed;text-align:center;
  font-family:var(--pr-display);font-size:13px;letter-spacing:.26em;text-transform:uppercase;color:#A8BFA4;
  pointer-events:none;white-space:nowrap;max-height:52svh;overflow:hidden}

/* Controls rail, share sheet, lightbox, toast ----------------------------- */
.uk-pr-rail{position:fixed;right:14px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:24;display:grid;gap:8px;justify-items:center}
.uk-pr-rail-toggle,.uk-pr-rail-panel button{display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(168,191,164,.42);border-radius:50%;background:rgba(26,29,25,.9);color:#E6E9E2;cursor:pointer}
.uk-pr-rail-panel{display:grid;gap:8px;justify-items:center}
.uk-pr-sheet,.uk-pr-lightbox{position:fixed;inset:0;z-index:46;display:grid;place-items:center;padding:20px 16px;background:rgba(18,20,17,.86);opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}
.uk-pr-sheet.is-open,.uk-pr-lightbox.is-open{opacity:1;visibility:visible}
.uk-pr-sheet-panel{width:min(100%,430px);padding:22px;border:1px solid var(--pr-moss);border-radius:var(--pr-radius);background:#DEDFD9;color:#20251F}
.uk-pr-share-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:16px}
.uk-pr-share-grid button{display:flex;align-items:center;gap:8px;padding:11px 13px;border:1px solid rgba(32,37,31,.16);border-radius:var(--pr-radius-sm);background:transparent;color:inherit;cursor:pointer;font-size:13px}
.uk-pr-sheet-close{width:100%;margin-top:14px}
.uk-pr-lightbox-panel{position:relative;width:min(100%,780px)}
.uk-pr-lightbox-panel img{width:100%;max-height:76svh;object-fit:contain;border-radius:var(--pr-radius);transition:opacity .2s ease}
.uk-pr-lightbox.is-switching .uk-pr-lightbox-panel img{opacity:0}
.uk-pr-lightbox-counter{margin-top:12px;color:#E6E9E2;font-size:12px;letter-spacing:.16em;text-align:center}
.uk-pr-lightbox-close,.uk-pr-lightbox-prev,.uk-pr-lightbox-next{position:absolute;display:grid;place-items:center;width:42px;height:42px;border:0;border-radius:50%;background:rgba(26,29,25,.8);color:#E6E9E2;cursor:pointer}
.uk-pr-lightbox-close{top:-52px;right:0}
.uk-pr-lightbox-prev{left:6px;top:50%;transform:translateY(-50%)}
.uk-pr-lightbox-next{right:6px;top:50%;transform:translateY(-50%)}
.uk-pr-toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));z-index:48;transform:translate(-50%,14px);opacity:0;padding:11px 18px;border-radius:999px;background:#20251F;color:#DEDFD9;font-size:13px;pointer-events:none;transition:opacity .3s ease,transform .3s ease}
.uk-pr-toast.is-visible{opacity:1;transform:translate(-50%,0)}

/* Reveals: the chisel cut, then the dust settling ---------------------------------------- */
.uk-pr-reveal{opacity:0;transform:translateY(var(--pr-lift));transition:opacity .7s ease,transform .7s cubic-bezier(.22,.78,.2,1)}
.uk-pr-reveal.is-visible{opacity:1;transform:none}
.uk-pr-reveal-item{opacity:0;transform:translateY(12px);
  /* The cut travels down the piece: it is revealed from the top edge, the way a
     chisel takes a line, then settles. */
  clip-path:inset(0 0 100% 0);
  transition:opacity .58s ease .08s,transform .58s ease .08s,clip-path .62s cubic-bezier(.2,.8,.2,1) .08s}
.uk-pr-reveal.is-visible .uk-pr-reveal-item{opacity:1;transform:none;clip-path:inset(0)}

/* Design controls ---------------------------------------------------------- */
.uk-design-palette-template.uk-prasasti{--pr-stone:#DEDFD9;--pr-ink:#20251F;--pr-mist:#5A6259;--pr-moss:#4A5B49;--pr-ochre:#6A5C40;--pr-recess:#CFD1C9;--pr-lit:#F2F3EE;--pr-shadow:#9CA096}
.uk-design-palette-warm.uk-prasasti{--pr-stone:#E8DFCC;--pr-ink:#2A2418;--pr-mist:#655C46;--pr-moss:#6E5A33;--pr-ochre:#7A5B24;--pr-recess:#DAD0B9;--pr-lit:#F7F1E2;--pr-shadow:#A79C82}
.uk-design-palette-warm .uk-pr-closing{--pr-stone:#2A2418;--pr-ink:#F6F0E2;--pr-mist:#BDB49A;--pr-moss:#CFC08C;--pr-ochre:#D3B184;--pr-recess:#191509;--pr-lit:#70684F;--pr-shadow:#0D0B05}
.uk-design-palette-romantic.uk-prasasti{--pr-stone:#E8DAD8;--pr-ink:#2B1F20;--pr-mist:#655053;--pr-moss:#8C4351;--pr-ochre:#7E5744;--pr-recess:#DCCBC9;--pr-lit:#F7EDEC;--pr-shadow:#A5918F}
.uk-design-palette-romantic .uk-pr-closing{--pr-stone:#2B1F20;--pr-ink:#F6E7E8;--pr-mist:#C0A5A8;--pr-moss:#DDA3AE;--pr-ochre:#D2A294;--pr-recess:#1A1213;--pr-lit:#6E585A;--pr-shadow:#0C0809}
.uk-design-palette-sage.uk-prasasti{--pr-stone:#DCE4DA;--pr-ink:#1E2620;--pr-mist:#556056;--pr-moss:#3D5C42;--pr-ochre:#655E3C;--pr-recess:#CDD6CA;--pr-lit:#F0F4EE;--pr-shadow:#98A196}
.uk-design-palette-sage .uk-pr-closing{--pr-stone:#1E2620;--pr-ink:#E9F0E6;--pr-mist:#AFBCAD;--pr-moss:#AEC7A8;--pr-ochre:#C9BB8E;--pr-recess:#121710;--pr-lit:#68735F;--pr-shadow:#080B07}
.uk-design-palette-midnight.uk-prasasti{--pr-stone:#191B18;--pr-ink:#E6E9E2;--pr-mist:#A0A99D;--pr-moss:#A8BFA4;--pr-ochre:#C8B184;--pr-line:rgba(230,233,226,.2);--pr-recess:#0E100D;--pr-lit:#6B756A;--pr-shadow:#070806}
.uk-design-palette-midnight .uk-pr-closing{--pr-stone:#191B18;--pr-ink:#E6E9E2;--pr-mist:#A0A99D;--pr-moss:#A8BFA4;--pr-ochre:#C8B184;--pr-recess:#0A0C09;--pr-lit:#6B756A;--pr-shadow:#070806}
.uk-design-type-classic .uk-pr-body h2,.uk-design-type-classic .uk-pr-gate-body h1{font-family:var(--pr-display)}
.uk-design-type-modern .uk-pr-body h2,.uk-design-type-modern .uk-pr-gate-body h1,.uk-design-type-modern .uk-pr-cover-panel h1{font-family:var(--pr-sans);letter-spacing:.02em}
.uk-design-type-editorial .uk-pr-body h2{font-size:clamp(26px,6.4vw,40px);letter-spacing:-.01em}
.uk-design-type-editorial .uk-pr-cover-panel h1{font-size:clamp(33px,9.4vw,60px);letter-spacing:-.02em}
/* The carving is the signature, so "surface" changes how DEEP the chisel goes
   rather than flattening it away: --pr-cut is read by the cut rules, the incised
   type, the recesses and the marks alike, so one token moves all of them. */
.uk-design-surface-soft .uk-prasasti{--pr-cut:1px;--pr-radius:10px;--pr-radius-sm:6px}
.uk-design-surface-balanced .uk-prasasti{--pr-cut:2px;--pr-radius:5px;--pr-radius-sm:3px}
.uk-design-surface-sharp .uk-prasasti{--pr-cut:3px;--pr-radius:0px;--pr-radius-sm:0px}
.uk-design-gallery-grid .uk-pr-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow-x:visible}
.uk-design-gallery-filmstrip .uk-pr-gallery{display:flex;grid-template-columns:none;gap:12px;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x mandatory}
.uk-design-gallery-filmstrip .uk-pr-niche,
.uk-design-gallery-filmstrip .uk-pr-niche:nth-child(3n+1),
.uk-design-gallery-filmstrip .uk-pr-niche:nth-child(3n+2),
.uk-design-gallery-filmstrip .uk-pr-niche:nth-child(3n+3),
.uk-design-gallery-filmstrip .uk-pr-niche:last-child:nth-child(3n+2){flex:0 0 auto;grid-column:auto;width:min(62vw,240px);scroll-snap-align:center}
.uk-design-gallery-filmstrip .uk-pr-niche img,
.uk-design-gallery-filmstrip .uk-pr-niche:nth-child(3n+1) img,
.uk-design-gallery-filmstrip .uk-pr-niche:last-child:nth-child(3n+2) img{aspect-ratio:4/5}
.uk-design-gallery-editorial .uk-pr-gallery{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;overflow-x:visible}
.uk-design-gallery-editorial .uk-pr-niche,
.uk-design-gallery-editorial .uk-pr-niche:nth-child(3n+1),
.uk-design-gallery-editorial .uk-pr-niche:last-child:nth-child(3n+2){grid-column:1/-1}
.uk-design-gallery-editorial .uk-pr-niche img,
.uk-design-gallery-editorial .uk-pr-niche:nth-child(3n+1) img,
.uk-design-gallery-editorial .uk-pr-niche:last-child:nth-child(3n+2) img{aspect-ratio:3/2}
.uk-design-motion-soft .uk-prasasti{--pr-lift:22px}
.uk-design-motion-cinematic .uk-prasasti{--pr-lift:36px}
.uk-design-motion-minimal .uk-prasasti{--pr-lift:0px}
.uk-design-motion-minimal .uk-pr-reveal,.uk-design-motion-minimal .uk-pr-reveal-item{opacity:1;transform:none;clip-path:none;transition:none}
.uk-design-motion-minimal .uk-pr-gate.is-carved .uk-pr-chisel{animation:none}

/* Wider viewports ---------------------------------------------------------- */
@media(min-width:760px){
.uk-prasasti{font-size:17px;--pr-col-w:56px}
.uk-pr-register{padding:34px 28px 34px calc(var(--pr-col-w) + 22px)}
.uk-pr-column{width:min(100%,780px)}
.uk-pr-portrait{height:min(38svh,296px)}
.uk-pr-portrait img,.uk-pr-cover-media .uk-pr-cover-image{object-position:var(--pr-focus-desktop-x,50%) var(--pr-focus-desktop-y,42%)}
.uk-pr-cover-panel{padding:56px calc(var(--pr-col-w) + 24px) 74px}
.uk-pr-slab{width:min(100%,540px)}
.uk-pr-event{grid-template-columns:42px minmax(0,1fr);gap:16px;padding:24px}
.uk-pr-closing{padding:96px calc(var(--pr-col-w) + 24px) 112px}
.uk-pr-mark-item button{height:48px}
.uk-pr-standing{display:block;font-size:14px}
/* The presets are restated at every width where the base grid changes, because
   a preset declared once at base width is silently replaced by the breakpoint
   underneath it — two shipped templates lost their photos to exactly that. */
.uk-design-gallery-grid .uk-pr-gallery{grid-template-columns:repeat(4,minmax(0,1fr))}
.uk-design-gallery-editorial .uk-pr-gallery{grid-template-columns:minmax(0,1fr)}
.uk-design-gallery-filmstrip .uk-pr-gallery{grid-template-columns:none}
}
@media(min-width:1100px){
.uk-pr-column{width:min(100%,900px)}
.uk-pr-register{padding:42px 40px 42px calc(var(--pr-col-w) + 38px)}
.uk-pr-closing{padding:112px calc(var(--pr-col-w) + 38px) 124px}
.uk-design-gallery-grid .uk-pr-gallery{grid-template-columns:repeat(4,minmax(0,1fr))}
.uk-design-gallery-editorial .uk-pr-gallery{grid-template-columns:minmax(0,1fr)}
.uk-design-gallery-filmstrip .uk-pr-gallery{grid-template-columns:none}
}

/* Narrow phones ------------------------------------------------------------ */
@media(max-width:560px){
.uk-pr-count{grid-template-columns:repeat(2,minmax(0,1fr))}
.uk-pr-people{grid-template-columns:minmax(0,1fr);gap:24px}
.uk-pr-accounts,.uk-pr-contacts{grid-template-columns:minmax(0,1fr)}
.uk-pr-share-grid{grid-template-columns:minmax(0,1fr)}
.uk-pr-lightbox-close{top:auto;bottom:-52px;right:50%;transform:translateX(50%)}
}
@media(max-width:360px){
.uk-prasasti{--pr-col-w:36px}
.uk-pr-register{padding:20px 10px 20px calc(var(--pr-col-w) + 6px)}
.uk-pr-closing{padding:52px calc(var(--pr-col-w) + 6px) 66px}

.uk-pr-event{grid-template-columns:minmax(0,1fr);gap:10px}
.uk-pr-mark-item button{height:38px}
.uk-design-gallery-grid .uk-pr-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
.uk-design-gallery-editorial .uk-pr-gallery{grid-template-columns:minmax(0,1fr)}
.uk-design-gallery-filmstrip .uk-pr-gallery{grid-template-columns:none}
}

/* Short viewports: a landscape phone and a short laptop window are different
   rooms, so every height rule names the width it means. */
@media(max-height:620px) and (max-width:1024px){
.uk-pr-cover{min-height:100svh}
.uk-pr-cover-panel{padding:22px calc(var(--pr-col-w) + 10px) 30px}
.uk-pr-cover-panel h1{font-size:clamp(22px,5.2vw,30px)}
.uk-pr-cover-empty-mark{font-size:17px;padding:8px 14px}
.uk-pr-gate{padding:12px}
.uk-pr-portrait{height:min(23svh,136px)}
.uk-pr-gate-body{padding:16px 16px 14px}
.uk-pr-gate-body h1{font-size:clamp(20px,4.4vw,26px)}
.uk-pr-grain{width:min(150vh,620px);height:min(96vh,420px)}
.uk-pr-mark-item button{height:38px}
.uk-pr-standing{font-size:11px;letter-spacing:.18em;max-height:66svh}
.uk-pr-rail{bottom:calc(10px + env(safe-area-inset-bottom))}
}
@media(max-height:620px) and (min-width:1025px){
.uk-pr-portrait{height:min(28svh,190px)}
.uk-pr-mark-item button{height:38px}
}

/* Reduced motion ----------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
.uk-prasasti *,.uk-prasasti *::before,.uk-prasasti *::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;transition-delay:0ms !important;scroll-behavior:auto !important}
.uk-pr-reveal,.uk-pr-reveal-item{opacity:1;transform:none;clip-path:none}
}
