@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400;1,600&family=Crimson+Pro:ital,wght@0,300;0,400;0,600;1,300;1,400&family=Cormorant+Garamond:ital,wght@0,300;0,400;1,300;1,400&display=swap');

/* =====================================================
   CONDOLENCE BOOK – BLACK / WHITE / #070f50 BLUE
   ===================================================== */

.condolence-book-wrapper *,
.condolence-book-wrapper *::before,
.condolence-book-wrapper *::after { box-sizing: border-box; }

.condolence-book-wrapper {
    --blue:       #070f50;
    --blue-mid:   #0d1a6e;
    --blue-light: #1a2d8f;
    --blue-faint: rgba(7,15,80,0.08);
    --blue-glow:  rgba(7,15,80,0.3);
    --black:      #000000;
    --off-black:  #0a0a0a;
    --charcoal:   #1c1c1c;
    --white:      #ffffff;
    --off-white:  #f4f4f4;
    --silver:     #e0e0e0;
    --mid-grey:   #999999;
    --ink:        #111111;
    --ink-mid:    #333333;

    background:
        radial-gradient(ellipse at 15% 0%,   rgba(7,15,80,0.22) 0%, transparent 55%),
        radial-gradient(ellipse at 85% 100%, rgba(7,15,80,0.14) 0%, transparent 55%),
        linear-gradient(180deg, #000000 0%, #080808 50%, #0d0d0d 100%);
    color: var(--off-white);
    font-family: 'Crimson Pro', serif;
    border-radius: 6px;
    overflow: hidden;
    padding-bottom: 4rem;
    min-height: 700px;
}

/* HEADER */
.cb-header {
    text-align: center;
    padding: 3rem 1.5rem 1.8rem;
    border-bottom: 1px solid rgba(255,255,255,0.05);
}

.cb-crest {
    width: 96px; height: 96px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.15);
    margin: 0 auto 1.2rem;
    display: flex; align-items: center; justify-content: center;
    background: radial-gradient(circle, rgba(7,15,80,0.7) 0%, transparent 70%);
    box-shadow: 0 0 0 1px rgba(7,15,80,0.95), 0 0 35px rgba(7,15,80,0.6), inset 0 0 20px rgba(7,15,80,0.5);
    position: relative;
}
.cb-crest::before { content:''; position:absolute; inset:-7px; border-radius:50%; border:1px solid rgba(255,255,255,0.07); }
.cb-crest::after  { content:''; position:absolute; inset:-14px; border-radius:50%; border:1px solid rgba(255,255,255,0.03); }
.cb-crest-icon { font-size:2.8rem; line-height:1; color:var(--white); filter:drop-shadow(0 0 10px rgba(255,255,255,0.3)); }

.cb-crest-logo {
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 50%;
    padding: 4px;
    filter: drop-shadow(0 0 8px rgba(255,255,255,0.2));
}

.cb-interpol-tag { font-family:'Cormorant Garamond',serif; font-size:0.67rem; letter-spacing:0.22em; text-transform:uppercase; color:rgba(255,255,255,0.7); margin-bottom:0.5rem; }

.cb-title {
    font-family:'Playfair Display',serif;
    font-size:clamp(1.6rem,4.5vw,2.6rem);
    font-weight:700;
    color:var(--white);
    letter-spacing:0.03em;
    line-height:1.15;
    text-shadow:0 2px 30px rgba(7,15,80,0.9);
    margin:0 0 0.35rem;
}

.cb-subtitle { font-family:'Cormorant Garamond',serif; font-size:1.05rem; font-style:italic; color:rgba(255,255,255,0.8); letter-spacing:0.06em; margin:0; }

.cb-gold-rule {
    width:220px; height:1px;
    background:linear-gradient(90deg, transparent, rgba(255,255,255,0.1), rgba(7,15,80,0.95), rgba(255,255,255,0.1), transparent);
    margin:1.4rem auto 0;
}

/* NAV */
.cb-nav { display:flex; justify-content:center; gap:0; margin:2rem auto 0; max-width:480px; border:1px solid rgba(255,255,255,0.1); border-radius:2px; overflow:hidden; background:rgba(255,255,255,0.02); }
.cb-nav-tab { flex:1; padding:0.75rem 1.2rem; background:transparent; color:rgba(255,255,255,0.75); border:none; cursor:pointer; font-family:'Cormorant Garamond',serif; font-size:0.88rem; letter-spacing:0.13em; text-transform:uppercase; transition:all 0.25s ease; }
.cb-nav-tab:first-child { border-right:1px solid rgba(255,255,255,0.1); }
.cb-nav-tab.active { background:var(--blue); color:var(--white); letter-spacing:0.14em; }
.cb-nav-tab:hover:not(.active) { background:rgba(255,255,255,0.04); color:rgba(255,255,255,0.95); }

/* STATUS */
.cb-status { max-width:680px; margin:1.4rem auto 0; padding:0.72rem 1.6rem; text-align:center; font-family:'Cormorant Garamond',serif; font-size:0.9rem; font-style:italic; letter-spacing:0.06em; border-radius:1px; }
.cb-status.open   { background:rgba(7,15,80,0.55); border:1px solid rgba(255,255,255,0.4); color:#ffffff; }
.cb-status.closed { background:rgba(255,255,255,0.04); border:1px solid rgba(255,255,255,0.12); color:rgba(255,255,255,0.95); }

/* MAIN */
.cb-main { max-width:860px; margin:0 auto; padding:0 1.2rem 2rem; }

/* BOOK */
.cb-book {
    margin-top:2.2rem;
    background:var(--white);
    border-radius:2px 6px 6px 2px;
    box-shadow:-6px 0 16px rgba(0,0,0,0.85), 0 20px 60px rgba(0,0,0,0.75), 0 0 0 1px rgba(0,0,0,0.5);
    position:relative; overflow:hidden;
}

.cb-book::before {
    content:''; position:absolute; left:0; top:0; bottom:0; width:26px;
    background:linear-gradient(90deg, #000 0%, var(--blue) 45%, #0d1a6e 75%, #050c3a 100%);
    box-shadow:inset -3px 0 8px rgba(0,0,0,0.6), 2px 0 5px rgba(0,0,0,0.5);
    z-index:2;
}

.cb-book-inner {
    padding:2.5rem 2.5rem 2.5rem 3.4rem;
    min-height:460px;
    background:
        repeating-linear-gradient(transparent, transparent 27px, rgba(7,15,80,0.06) 28px);
    background-size:100% 28px;
    position:relative;
}

.cb-book-inner::after { content:'✦ ✦ ✦'; position:absolute; bottom:1rem; right:1.5rem; font-size:0.55rem; color:rgba(7,15,80,0.15); letter-spacing:0.4em; }

.cb-book-heading { text-align:center; margin-bottom:1.5rem; padding-bottom:1rem; border-bottom:1px solid rgba(7,15,80,0.12); }
.cb-book-heading h2 { font-family:'Playfair Display',serif; font-size:1.25rem; font-weight:700; color:var(--ink); letter-spacing:0.03em; margin:0 0 0.2rem; }
.cb-book-heading p  { font-family:'Cormorant Garamond',serif; font-size:0.84rem; font-style:italic; color:var(--ink-mid); opacity:0.55; margin:0; }

/* PREVIEW */
.cb-preview { min-height:95px; margin-bottom:1.5rem; padding-bottom:1rem; border-bottom:1px dashed rgba(7,15,80,0.1); }
.cb-preview-text { font-family:'Crimson Pro',serif; font-size:1.1rem; color:var(--ink); line-height:1.8; white-space:pre-wrap; word-break:break-word; }
.cb-preview-text.placeholder { opacity:0.2; font-style:italic; }
.cb-cursor { display:inline-block; width:2px; height:1.1em; background:var(--blue); vertical-align:text-bottom; animation:cb-blink 1s step-end infinite; }
@keyframes cb-blink { 0%,100%{opacity:1;} 50%{opacity:0;} }

/* FORM */
.cb-form-group { margin-bottom:1rem; }
.cb-label { display:block; font-family:'Cormorant Garamond',serif; font-size:0.76rem; text-transform:uppercase; letter-spacing:0.14em; color:var(--blue); margin-bottom:0.3rem; opacity:1; font-weight:600; }

.cb-input,
.cb-textarea {
    width:100%; background:var(--off-white); border:1px solid var(--silver); border-radius:1px;
    padding:0.52rem 0.75rem; font-family:'Crimson Pro',serif; font-size:1rem; color:var(--ink);
    outline:none; transition:border-color 0.2s, background 0.2s, box-shadow 0.2s; resize:none;
}
.cb-input:focus,
.cb-textarea:focus { border-color:var(--blue); background:var(--white); box-shadow:0 0 0 3px rgba(7,15,80,0.09); }
.cb-textarea { line-height:1.75; min-height:120px; }

.cb-form-row { display:grid; grid-template-columns:1fr 1fr; gap:0.8rem; }
@media(max-width:520px){ .cb-form-row{grid-template-columns:1fr;} }

.cb-word-count { text-align:right; font-size:0.75rem; font-family:'Cormorant Garamond',serif; color:var(--ink-mid); opacity:0.48; margin-top:0.2rem; }
.cb-word-count.warn { color:#8b0000; opacity:1; font-weight:bold; }

.cb-submit {
    display:block; width:100%; padding:0.9rem;
    background:var(--blue); color:var(--white); border:none; border-radius:1px;
    font-family:'Cormorant Garamond',serif; font-size:1rem; letter-spacing:0.14em; text-transform:uppercase;
    cursor:pointer; transition:all 0.25s ease; margin-top:0.6rem; position:relative; overflow:hidden;
}
.cb-submit:hover:not(:disabled) { background:var(--blue-mid); box-shadow:0 4px 20px rgba(7,15,80,0.45); }
.cb-submit:disabled { opacity:0.32; cursor:not-allowed; }

/* SUCCESS */
.cb-success { text-align:center; padding:2.5rem 1.5rem; font-family:'Playfair Display',serif; font-style:italic; color:var(--ink); font-size:1.05rem; animation:cb-fade 0.5s ease; }
.cb-success .star { font-size:2.2rem; display:block; margin-bottom:0.8rem; color:var(--blue); font-style:normal; }
.cb-success small { display:block; margin-top:0.5rem; font-size:0.85rem; opacity:0.52; font-family:'Cormorant Garamond',serif; }

/* CLOSED */
.cb-closed { text-align:center; padding:3.5rem 2rem; }
.cb-closed h3 { font-family:'Playfair Display',serif; font-size:1.2rem; color:var(--ink); margin:0 0 0.6rem; }
.cb-closed p  { font-family:'Crimson Pro',serif; font-size:1rem; color:var(--ink-mid); opacity:0.68; line-height:1.75; margin:0 auto; max-width:480px; }

/* FLY ANIMATION */
.cb-fly-overlay { position:fixed; inset:0; pointer-events:none; z-index:99999; }
.cb-fly-card {
    position:absolute; background:var(--white); padding:0.85rem 1.2rem;
    border-left:3px solid var(--blue); border-radius:1px;
    font-family:'Crimson Pro',serif; font-size:0.88rem; color:var(--ink);
    max-width:280px; box-shadow:0 6px 24px rgba(0,0,0,0.35);
    animation:cb-fly 1.9s ease-in-out forwards;
}
.cb-fly-card em   { display:block; font-style:italic; margin-bottom:0.3rem; color:var(--ink); }
.cb-fly-card span { font-family:'Playfair Display',serif; font-size:0.78rem; color:var(--blue); }
@keyframes cb-fly {
    0%   { opacity:1;   transform:scale(1)    translateY(0);                 }
    30%  { opacity:0.9; transform:scale(0.95) translateY(-25px);             }
    100% { opacity:0;   transform:scale(0.25) translateY(-260px) translateX(220px); }
}

/* HISTORY */
.cb-history { margin-top:2.2rem; }
.cb-history-header { text-align:center; margin-bottom:2rem; }
.cb-history-header h2 { font-family:'Playfair Display',serif; font-size:1.7rem; color:#ffffff; letter-spacing:0.04em; margin:0 0 0.3rem; }
.cb-history-header p  { font-family:'Cormorant Garamond',serif; font-style:italic; color:rgba(255,255,255,0.75); font-size:0.92rem; margin:0; }

.cb-filters { display:flex; flex-wrap:wrap; gap:0.4rem; justify-content:center; margin-bottom:1.6rem; }
.cb-filter { padding:0.28rem 0.9rem; border:1px solid rgba(255,255,255,0.3); background:transparent; color:rgba(255,255,255,0.8); font-family:'Cormorant Garamond',serif; font-size:0.82rem; letter-spacing:0.1em; text-transform:uppercase; cursor:pointer; border-radius:1px; transition:all 0.2s; }
.cb-filter.active,
.cb-filter:hover { background:var(--blue); border-color:var(--blue); color:var(--white); }

.cb-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(265px, 1fr)); gap:1.1rem; }
@media(max-width:400px){ .cb-grid{grid-template-columns:1fr;} }

.cb-card { background:var(--white); border-radius:1px; padding:1.4rem 1.4rem 2rem; color:var(--ink); position:relative; box-shadow:0 2px 16px rgba(0,0,0,0.45); overflow:hidden; animation:cb-fade 0.35s ease; border-top:3px solid var(--charcoal); }
.cb-card.vip { border-top:3px solid var(--blue); background:linear-gradient(160deg,#ffffff 0%,#f2f4ff 100%); }

.cb-card-badge { display:inline-block; padding:0.14rem 0.55rem; background:var(--blue); color:var(--white); font-family:'Cormorant Garamond',serif; font-size:0.66rem; letter-spacing:0.14em; text-transform:uppercase; font-weight:700; border-radius:1px; margin-bottom:0.55rem; }

.cb-card-msg  { font-family:'Crimson Pro',serif; font-size:0.97rem; line-height:1.78; font-style:italic; color:var(--ink); margin-bottom:1rem; }
.cb-card-footer { display:flex; justify-content:space-between; align-items:flex-end; gap:0.4rem; }
.cb-card-name { font-family:'Playfair Display',serif; font-size:0.87rem; font-weight:600; color:var(--blue); }
.cb-card-dept { font-family:'Cormorant Garamond',serif; font-size:0.74rem; opacity:0.58; font-style:italic; color:var(--ink-mid); }
.cb-card-date { font-family:'Cormorant Garamond',serif; font-size:0.72rem; opacity:0.42; white-space:nowrap; color:var(--ink-mid); }
.cb-page-tag  { position:absolute; bottom:0.45rem; right:0.8rem; font-family:'Cormorant Garamond',serif; font-size:0.68rem; opacity:0.28; font-style:italic; color:var(--blue); }

.cb-empty   { text-align:center; padding:3rem; color:rgba(255,255,255,0.75); font-family:'Cormorant Garamond',serif; font-style:italic; font-size:1.05rem; }
.cb-loading { text-align:center; padding:4rem 1rem; color:rgba(255,255,255,0.85); font-family:'Cormorant Garamond',serif; font-size:1rem; font-style:italic; letter-spacing:0.14em; }
.cb-error   { color:#8b0000; font-family:'Crimson Pro',serif; font-size:0.9rem; margin:0.4rem 0; }

@keyframes cb-fade { from{opacity:0;transform:translateY(10px);} to{opacity:1;transform:translateY(0);} }

/* ─────────────────────────────────────────────────────
   EMOJI PICKER BAR
───────────────────────────────────────────────────── */
.cb-emoji-bar {
    background: rgba(7,15,80,0.04);
    border: 1px solid rgba(7,15,80,0.1);
    border-radius: 2px;
    padding: 0.65rem 0.85rem;
    margin-bottom: 1rem;
}

.cb-emoji-label {
    display: block;
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.74rem;
    text-transform: uppercase;
    letter-spacing: 0.13em;
    color: var(--ink-mid);
    opacity: 0.55;
    margin-bottom: 0.5rem;
}

.cb-emoji-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
}

.cb-emoji-btn {
    width: 36px;
    height: 36px;
    background: var(--white);
    border: 1px solid var(--silver);
    border-radius: 2px;
    cursor: pointer;
    font-size: 1.15rem;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.18s ease;
    padding: 0;
    line-height: 1;
}

.cb-emoji-btn:hover {
    background: var(--off-white);
    border-color: var(--blue);
    transform: scale(1.18);
    box-shadow: 0 2px 8px rgba(7,15,80,0.18);
    z-index: 2;
    position: relative;
}

.cb-emoji-btn:active {
    transform: scale(0.96);
}

/* ═══════════════════════════════════════════════════════
   OFFICIALS TRACKER (pre-opening state inside the book)
═══════════════════════════════════════════════════════ */
.cb-officials-stage {
    background: linear-gradient(135deg, #070f50 0%, #030820 100%);
    border-radius: 3px;
    padding: 1.8rem 1.5rem 1.8rem;
    margin-bottom: 1rem;
    animation: cb-fade 0.5s ease;
    border: 1px solid rgba(255,255,255,0.08);
    box-shadow: 0 4px 24px rgba(0,0,0,0.5);
    color: #ffffff !important;
}

.cb-officials-title {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.cb-officials-icon {
    font-size: 2.2rem;
    line-height: 1;
    flex-shrink: 0;
}

.cb-officials-title h3 {
    font-family: 'Playfair Display', serif;
    font-size: 1.2rem;
    font-weight: 700;
    color: #ffffff !important;
    margin: 0 0 0.3rem;
}

.cb-officials-title p {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.9rem;
    color: rgba(255,255,255,0.75) !important;
    opacity: 1;
    margin: 0;
    font-style: italic;
}

/* Progress bar */
.cb-officials-progress-wrap { margin-bottom: 1.6rem; }

.cb-officials-progress-bar {
    height: 6px;
    background: rgba(255,255,255,0.12);
    border-radius: 3px;
    overflow: hidden;
    margin-bottom: 0.4rem;
}

.cb-officials-progress-fill {
    height: 100%;
    background: linear-gradient(90deg, rgba(255,255,255,0.6), #fff);
    border-radius: 3px;
    transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

.cb-officials-progress-label {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.85rem;
    color: rgba(255,255,255,0.8) !important;
    opacity: 1;
    font-style: italic;
}

/* Slot grid */
.cb-official-slots {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.cb-official-slot {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.75rem 1rem;
    border-radius: 2px;
    border: 1px solid rgba(255,255,255,0.15);
    background: rgba(255,255,255,0.06);
    min-width: 200px;
    flex: 1;
    transition: all 0.4s ease;
    animation: cb-fade 0.5s ease;
}

.cb-official-slot.is-signed {
    border-color: rgba(255,255,255,0.45);
    background: rgba(255,255,255,0.13);
    box-shadow: 0 2px 12px rgba(0,0,0,0.3);
}

.cb-official-circle {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 1rem;
    border: 2px solid rgba(255,255,255,0.25);
    background: rgba(255,255,255,0.08);
    transition: all 0.4s ease;
}

.is-signed .cb-official-circle {
    background: #ffffff;
    border-color: #ffffff;
}

.cb-official-check {
    color: var(--blue) !important;
    font-size: 1.1rem;
    font-weight: 700;
    animation: cb-pop 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

@keyframes cb-pop {
    0%   { transform: scale(0) rotate(-30deg); opacity: 0; }
    60%  { transform: scale(1.3) rotate(5deg); }
    100% { transform: scale(1) rotate(0); opacity: 1; }
}

.cb-official-num {
    color: rgba(255,255,255,0.5) !important;
    font-family: 'Playfair Display', serif;
    font-size: 1.1rem;
    font-weight: 700;
}

.cb-official-info { flex: 1; min-width: 0; }

.cb-official-name {
    font-family: 'Playfair Display', serif;
    font-size: 0.88rem;
    font-weight: 600;
    color: #ffffff !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cb-official-dept {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.75rem;
    color: rgba(255,255,255,0.65) !important;
    opacity: 1;
    font-style: italic;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cb-official-pending {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.82rem;
    font-style: italic;
    color: rgba(255,255,255,0.4) !important;
}

.cb-officials-note {
    text-align: center;
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.82rem;
    font-style: italic;
    color: rgba(255,255,255,0.55) !important;
    opacity: 1;
    padding-top: 0.8rem;
    margin-top: 0.5rem;
    border-top: 1px dashed rgba(255,255,255,0.12);
}

/* ═══════════════════════════════════════════════════════
   GRAND OPENING CEREMONY OVERLAY
═══════════════════════════════════════════════════════ */
.cb-ceremony-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    min-height: 100vh !important;
    z-index: 2147483647 !important;
    background: radial-gradient(ellipse at 50% 35%, rgba(7,15,80,1) 0%, #000 70%) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    animation: cb-overlay-in 0.8s ease !important;
    overflow: hidden !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
}

/* Force escape any WordPress container */
body.cb-ceremony-active {
    overflow: hidden !important;
}

@keyframes cb-overlay-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

.cb-ceremony-box {
    text-align: center;
    color: var(--white);
    padding: 3rem 2rem;
    position: relative;
    z-index: 2;
    max-width: 780px;
    width: 94%;
}

.cb-ceremony-hidden { opacity: 0; }
.cb-ceremony-visible { opacity: 1; }

/* Seal */
.cb-ceremony-seal {
    margin: 0 auto 2.5rem;
    width: 200px;
    height: 200px;
    position: relative;
}

.cb-seal-spin {
    animation: cb-seal-reveal 1.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes cb-seal-reveal {
    0%   { transform: scale(0) rotate(-180deg); opacity: 0; }
    60%  { transform: scale(1.1) rotate(10deg); opacity: 1; }
    100% { transform: scale(1) rotate(0deg);    opacity: 1; }
}

.cb-seal-outer {
    width: 200px;
    height: 200px;
    border-radius: 50%;
    border: 3px solid rgba(255,255,255,0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    animation: cb-seal-rotate 20s linear infinite;
    box-shadow: 0 0 50px rgba(255,255,255,0.15), inset 0 0 30px rgba(7,15,80,0.5);
}

.cb-seal-outer::before {
    content: '· · · · · · · · · · · · · · · · · · · ·';
    position: absolute;
    font-size: 0.5rem;
    letter-spacing: 0.35em;
    width: 100%;
    text-align: center;
    color: rgba(255,255,255,0.8);
    border-radius: 50%;
}

@keyframes cb-seal-rotate {
    from { transform: rotate(0); }
    to   { transform: rotate(360deg); }
}

.cb-seal-inner {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255,255,255,0.12) 0%, rgba(7,15,80,0.4) 100%);
    border: 1px solid rgba(255,255,255,0.3);
    display: flex;
    align-items: center;
    justify-content: center;
    animation: cb-seal-rotate 8s linear infinite reverse;
}

.cb-seal-star {
    font-size: 2.4rem;
    color: var(--white);
    filter: drop-shadow(0 0 12px rgba(255,255,255,0.6));
    animation: cb-seal-pulse 2s ease-in-out infinite;
}

@keyframes cb-seal-pulse {
    0%, 100% { transform: scale(1); filter: drop-shadow(0 0 12px rgba(255,255,255,0.6)); }
    50%       { transform: scale(1.1); filter: drop-shadow(0 0 20px rgba(255,255,255,0.9)); }
}

/* Text reveal */
.cb-ceremony-text {
    animation: cb-text-in 0.8s ease forwards;
}

@keyframes cb-text-in {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
}

.cb-ceremony-top {
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.25rem;
    font-style: italic;
    letter-spacing: 0.12em;
    color: rgba(255,255,255,0.9);
    margin: 0 0 0.5rem;
}

.cb-ceremony-headline {
    font-family: 'Playfair Display', serif;
    font-weight: 700;
    margin: 0 0 0.3rem;
    line-height: 1.15;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.cb-ceremony-headline span {
    display: block;
    font-size: clamp(2.2rem, 6vw, 4.4rem);
    color: var(--white);
    text-shadow: 0 0 60px rgba(255,255,255,0.25);
}

.cb-ceremony-year {
    font-size: clamp(1.2rem, 3.5vw, 2rem) !important;
    color: rgba(255,255,255,0.75) !important;
    letter-spacing: 0.3em;
    font-weight: 400 !important;
}

.cb-ceremony-subtitle {
    font-family: 'Cormorant Garamond', serif;
    font-size: clamp(1.4rem, 3.5vw, 2.2rem);
    font-style: italic;
    color: rgba(255,255,255,0.8);
    letter-spacing: 0.1em;
    margin: 0.3rem 0 0;
}

/* Ribbons / confetti */
.cb-ribbons {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
}

.cb-ribbon {
    position: absolute;
    top: -20px;
    width: 6px;
    height: 20px;
    border-radius: 2px;
    opacity: 0;
    animation: cb-ribbon-fall 2.5s ease-in forwards;
}

.cb-ribbon:nth-child(1)  { left:5%;  background:#fff;   animation-duration:2.2s; width:4px;  }
.cb-ribbon:nth-child(2)  { left:12%; background:rgba(255,255,255,0.5); animation-duration:2.8s; }
.cb-ribbon:nth-child(3)  { left:20%; background:#c8d4ff; animation-duration:2.4s; width:8px;  }
.cb-ribbon:nth-child(4)  { left:28%; background:#fff;   animation-duration:2.1s; }
.cb-ribbon:nth-child(5)  { left:36%; background:rgba(255,255,255,0.7); animation-duration:2.6s; width:4px; }
.cb-ribbon:nth-child(6)  { left:45%; background:#e0e8ff; animation-duration:2.3s; width:5px;  }
.cb-ribbon:nth-child(7)  { left:54%; background:#fff;   animation-duration:2.7s; }
.cb-ribbon:nth-child(8)  { left:62%; background:rgba(255,255,255,0.6); animation-duration:2.0s; width:8px; }
.cb-ribbon:nth-child(9)  { left:70%; background:#c8d4ff; animation-duration:2.5s; }
.cb-ribbon:nth-child(10) { left:78%; background:#fff;   animation-duration:2.9s; width:4px;  }
.cb-ribbon:nth-child(11) { left:86%; background:rgba(255,255,255,0.5); animation-duration:2.2s; }
.cb-ribbon:nth-child(12) { left:93%; background:#e0e8ff; animation-duration:2.6s; width:6px;  }

@keyframes cb-ribbon-fall {
    0%   { top: -20px; opacity: 0;   transform: rotate(0deg)   translateX(0); }
    10%  { opacity: 0.9; }
    80%  { opacity: 0.7; }
    100% { top: 110vh;  opacity: 0;   transform: rotate(540deg) translateX(60px); }
}

/* Invite text + button */
.cb-ceremony-invite {
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.2rem;
    font-style: italic;
    color: rgba(255,255,255,0.95);
    letter-spacing: 0.06em;
    margin: 1.6rem 0 1.2rem;
    animation: cb-fade 0.8s ease;
    line-height: 1.6;
}

.cb-ceremony-btn {
    display: inline-block;
    padding: 1.1rem 3rem;
    background: var(--white);
    color: var(--blue);
    border: none;
    border-radius: 2px;
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.05rem;
    letter-spacing: 0.1em;
    cursor: pointer;
    transition: all 0.25s ease;
    font-weight: 700;
    animation: cb-fade 0.6s ease;
    box-shadow: 0 4px 20px rgba(255,255,255,0.2);
}

.cb-ceremony-btn:hover {
    background: var(--off-white);
    transform: translateY(-2px);
    box-shadow: 0 8px 30px rgba(255,255,255,0.3);
}



/* ═══════════════════════════════════════════════════════
   SIGN AS SIGNATORY BUTTON (on book page)
═══════════════════════════════════════════════════════ */
.cb-signatory-cta {
    text-align: center;
    margin-bottom: 1.6rem;
    padding-bottom: 1.4rem;
    border-bottom: 1px dashed rgba(7,15,80,0.12);
}

.cb-signatory-cta-label {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.85rem;
    font-style: italic;
    color: #333333 !important;
    opacity: 1;
    margin: 0 0 0.5rem;
    letter-spacing: 0.06em;
}

.cb-signatory-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.85rem 2rem;
    background: var(--blue);
    color: var(--white);
    border: none;
    border-radius: 2px;
    font-family: 'Cormorant Garamond', serif;
    font-size: 1rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    cursor: pointer;
    transition: all 0.25s ease;
    box-shadow: 0 3px 16px rgba(7,15,80,0.35);
}

.cb-signatory-btn:hover {
    background: var(--blue-mid);
    transform: translateY(-1px);
    box-shadow: 0 5px 20px rgba(7,15,80,0.5);
}

.cb-sig-btn-icon {
    font-size: 1.1rem;
}

/* ═══════════════════════════════════════════════════════
   PASSCODE MODAL OVERLAY
═══════════════════════════════════════════════════════ */
.cb-modal-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    z-index: 2147483646 !important;
    background: radial-gradient(ellipse at 50% 30%, rgba(7,15,80,0.98) 0%, #000 80%) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    animation: cb-fade 0.35s ease !important;
    padding: 0 !important;
    margin: 0 !important;
}

.cb-modal-overlay.cb-modal-leaving {
    animation: cb-fade-out 0.4s ease forwards !important;
}

@keyframes cb-fade-out {
    from { opacity: 1; }
    to   { opacity: 0; }
}

.cb-modal {
    background: transparent;
    border: none;
    border-radius: 0;
    width: 100%;
    max-width: 480px;
    padding: 2.5rem 2rem 2.5rem;
    position: relative;
    box-shadow: none;
    animation: cb-modal-in 0.45s cubic-bezier(0.4, 0, 0.2, 1);
    max-height: 100vh;
    overflow-y: auto;
}

@keyframes cb-modal-in {
    from { opacity:0; transform: translateY(30px) scale(0.97); }
    to   { opacity:1; transform: translateY(0)    scale(1); }
}

.cb-modal-close {
    position: fixed;
    top: 1.2rem;
    right: 1.4rem;
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.12);
    color: rgba(255,255,255,0.8);
    width: 36px;
    height: 36px;
    border-radius: 50%;
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s;
}

.cb-modal-close:hover { color: var(--white); background: rgba(255,255,255,0.12); }

/* Modal header */
.cb-modal-header { text-align: center; margin-bottom: 1.6rem; }

.cb-modal-seal {
    font-size: 2.4rem;
    display: block;
    margin-bottom: 0.7rem;
    filter: drop-shadow(0 0 12px rgba(255,255,255,0.2));
}

.cb-modal-logo-wrap {
    width: 130px;
    height: 130px;
    margin: 0 auto 1.2rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid rgba(255,255,255,0.18);
    box-shadow: 0 0 40px rgba(7,15,80,0.8), 0 0 0 6px rgba(255,255,255,0.04);
    background: radial-gradient(circle, rgba(7,15,80,0.6) 0%, rgba(0,0,0,0.5) 100%);
    animation: cb-seal-reveal 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

.cb-modal-logo-wrap.cb-modal-logo-small {
    width: 80px;
    height: 80px;
    margin-bottom: 0.8rem;
}

.cb-modal-logo {
    width: 90%;
    height: 90%;
    object-fit: contain;
    border-radius: 50%;
    filter: drop-shadow(0 0 10px rgba(255,255,255,0.3));
}

.cb-modal-logo-small .cb-modal-logo {
    filter: drop-shadow(0 0 6px rgba(255,255,255,0.25));
}

.cb-modal-verified-badge {
    display: inline-block;
    padding: 0.25rem 0.9rem;
    border: 1px solid rgba(255,255,255,0.25);
    border-radius: 20px;
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.78rem;
    letter-spacing: 0.15em;
    color: rgba(255,255,255,0.7);
    text-transform: uppercase;
    margin-bottom: 0.6rem;
    background: rgba(255,255,255,0.06);
    animation: cb-fade 0.5s ease;
}

.cb-modal-seal-ok {
    color: rgba(255,255,255,0.9);
    font-size: 2rem;
    filter: drop-shadow(0 0 15px rgba(255,255,255,0.5));
    animation: cb-pop 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.cb-modal-title {
    font-family: 'Playfair Display', serif !important;
    font-size: 1.3rem !important;
    font-weight: 700 !important;
    color: #ffffff !important;
    margin: 0 0 0.25rem !important;
    text-transform: none !important;
    letter-spacing: 0.02em !important;
    line-height: 1.2 !important;
    background: none !important;
    border: none !important;
    padding: 0 !important;
}

.cb-modal-subtitle {
    font-family: 'Cormorant Garamond', serif !important;
    font-size: 0.9rem !important;
    font-style: italic !important;
    color: rgba(255,255,255,0.85) !important;
    margin: 0 !important;
    letter-spacing: 0.04em !important;
}

.cb-modal-invite {
    color: rgba(255,255,255,0.65) !important;
    margin-top: 0.4rem !important;
}

/* PIN display boxes */
.cb-pin-display {
    display: flex;
    gap: 0.8rem;
    justify-content: center;
    margin-bottom: 0.8rem;
}

.cb-pin-box {
    width: 52px;
    height: 60px;
    background: rgba(255,255,255,0.05);
    border: 2px solid rgba(255,255,255,0.15);
    border-radius: 3px;
    text-align: center;
    font-size: 1.6rem;
    color: var(--white);
    outline: none;
    caret-color: transparent;
    transition: border-color 0.2s;
    cursor: pointer;
}

.cb-pin-box:focus {
    border-color: rgba(255,255,255,0.5);
    background: rgba(255,255,255,0.08);
}

.cb-pin-box.filled {
    border-color: var(--white);
    background: rgba(255,255,255,0.1);
    font-size: 0.9rem;
    letter-spacing: 0;
}

.cb-pin-error {
    text-align: center;
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.88rem;
    color: #ff8080;
    margin: 0.5rem 0 0.8rem;
    font-style: italic;
}

.cb-pin-checking {
    text-align: center;
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.88rem;
    color: rgba(255,255,255,0.4);
    font-style: italic;
    margin-top: 0.5rem;
}

/* Number pad */
.cb-numpad {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.5rem;
    margin-top: 0.8rem;
}

.cb-numpad-btn {
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.1);
    color: var(--white);
    border-radius: 3px;
    padding: 0.9rem 0;
    font-size: 1.3rem;
    font-family: 'Playfair Display', serif;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s ease;
    user-select: none;
}

.cb-numpad-btn:hover:not(:disabled) {
    background: rgba(255,255,255,0.12);
    border-color: rgba(255,255,255,0.8);
    transform: scale(1.04);
}

.cb-numpad-btn:active:not(:disabled) {
    transform: scale(0.96);
    background: rgba(255,255,255,0.18);
}

.cb-numpad-btn:disabled { opacity: 0.3; cursor: not-allowed; }

.cb-numpad-clear {
    font-size: 1rem !important;
    color: rgba(255,255,255,0.6) !important;
}

.cb-numpad-spacer { /* empty grid cell */ }

/* Locked state */
.cb-modal-locked {
    text-align: center;
    padding: 1.5rem 0;
}

.cb-locked-icon {
    font-size: 3rem;
    display: block;
    margin-bottom: 0.8rem;
    filter: grayscale(1) opacity(0.5);
}

.cb-modal-locked h3 {
    font-family: 'Playfair Display', serif;
    color: var(--white);
    margin: 0 0 0.5rem;
}

.cb-modal-locked p {
    font-family: 'Cormorant Garamond', serif;
    color: rgba(255,255,255,0.8);
    font-style: italic;
    font-size: 0.95rem;
    margin: 0 0 1.2rem;
}

.cb-modal-btn {
    padding: 0.7rem 1.8rem;
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.15);
    color: var(--white);
    border-radius: 2px;
    cursor: pointer;
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.95rem;
    letter-spacing: 0.08em;
}

/* Signatory message form in modal */
.cb-modal-form { margin-top: 0.5rem; }

.cb-modal-preview {
    background: rgba(255,255,255,0.07) !important;
    border: 1px dashed rgba(255,255,255,0.3) !important;
    border-radius: 2px !important;
    padding: 0.75rem 1rem !important;
    margin-bottom: 0.8rem !important;
    min-height: 65px !important;
}

.cb-modal-preview .cb-preview-text {
    color: rgba(255,255,255,0.92) !important;
    font-size: 1rem !important;
    font-family: 'Crimson Pro', serif !important;
    font-style: italic !important;
    line-height: 1.7 !important;
}

.cb-modal-preview .cb-preview-text.placeholder {
    color: rgba(255,255,255,0.35) !important;
}

.cb-modal-preview .cb-cursor {
    background: rgba(255,255,255,0.6);
}

.cb-modal-textarea {
    width: 100% !important;
    background: rgba(255,255,255,0.08) !important;
    border: 1px solid rgba(255,255,255,0.3) !important;
    border-radius: 2px !important;
    padding: 0.75rem 0.9rem !important;
    color: #ffffff !important;
    font-family: 'Crimson Pro', serif !important;
    font-size: 1rem !important;
    line-height: 1.75 !important;
    outline: none !important;
    resize: none !important;
    min-height: 130px !important;
    transition: border-color 0.2s !important;
    box-shadow: none !important;
    -webkit-text-fill-color: #ffffff !important;
}

.cb-modal-textarea:focus {
    border-color: rgba(255,255,255,0.5) !important;
    background: rgba(255,255,255,0.12) !important;
    -webkit-text-fill-color: #ffffff !important;
}

.cb-modal-textarea::placeholder { color: rgba(255,255,255,0.45) !important; opacity: 1 !important; }

.cb-modal-form .cb-word-count {
    color: rgba(255,255,255,0.65) !important;
}

.cb-modal-sign-btn {
    display: block;
    width: 100%;
    padding: 0.9rem;
    background: var(--white);
    color: var(--blue);
    border: none;
    border-radius: 2px;
    font-family: 'Cormorant Garamond', serif;
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    cursor: pointer;
    transition: all 0.25s;
    margin-top: 0.8rem;
}

.cb-modal-sign-btn:hover:not(:disabled) {
    background: var(--off-white);
    box-shadow: 0 4px 20px rgba(255,255,255,0.2);
}

.cb-modal-sign-btn:disabled { opacity: 0.5 !important; cursor: not-allowed !important; background: rgba(255,255,255,0.85) !important; color: #070f50 !important; }

/* Seal logo in ceremony */
.cb-seal-logo {
    width: 120px;
    height: 120px;
    object-fit: contain;
    border-radius: 50%;
    filter: brightness(1.2) drop-shadow(0 0 14px rgba(255,255,255,0.5));
    animation: cb-seal-pulse 2.5s ease-in-out infinite;
}

/* ═══════════════════════════════════════════════════════
   WELCOME SPLASH SCREEN
═══════════════════════════════════════════════════════ */
.cb-splash-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    z-index: 2147483647 !important;
    background: #000 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 1rem !important;
    margin: 0 !important;
    opacity: 0;
    transition: opacity 0.7s ease;
    cursor: pointer;
    overflow: hidden;
}

.cb-splash-overlay.cb-splash-visible {
    opacity: 1;
}

.cb-splash-overlay.cb-splash-leaving {
    opacity: 0 !important;
    transition: opacity 0.7s ease !important;
}

/* Animated dots background */
.cb-splash-bg-dots {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.cb-splash-dot {
    position: absolute;
    background: rgba(255,255,255,0.6);
    border-radius: 50%;
    animation: cb-splash-twinkle 3s ease-in-out infinite;
}

@keyframes cb-splash-twinkle {
    0%, 100% { opacity: 0.1; transform: scale(1); }
    50%       { opacity: 0.7; transform: scale(1.6); }
}

/* Main splash card */
.cb-splash-box {
    position: relative;
    z-index: 2;
    text-align: center;
    max-width: 640px;
    width: 100%;
    padding: 3rem 2.5rem;
    cursor: default;
    animation: cb-text-in 0.8s ease 0.3s both;
}

/* Logo */
.cb-splash-logo-wrap {
    width: 150px;
    height: 150px;
    margin: 0 auto 2rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid rgba(255,255,255,0.2);
    box-shadow:
        0 0 60px rgba(7,15,80,0.9),
        0 0 0 8px rgba(255,255,255,0.03),
        0 0 0 16px rgba(255,255,255,0.015);
    background: radial-gradient(circle, rgba(7,15,80,0.7) 0%, rgba(0,0,0,0.5) 100%);
    animation: cb-splash-logo-in 1.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes cb-splash-logo-in {
    0%   { transform: scale(0.5) rotate(-20deg); opacity: 0; }
    60%  { transform: scale(1.08) rotate(3deg); opacity: 1; }
    100% { transform: scale(1) rotate(0deg); opacity: 1; }
}

.cb-splash-logo {
    width: 88%;
    height: 88%;
    object-fit: contain;
    border-radius: 50%;
    filter: drop-shadow(0 0 12px rgba(255,255,255,0.3));
}

/* Rule */
.cb-splash-rule {
    width: 80px;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
    margin: 1.2rem auto;
}

/* Title */
.cb-splash-title {
    font-family: 'Playfair Display', serif;
    font-size: clamp(2.4rem, 7vw, 5rem);
    font-weight: 700;
    color: #ffffff;
    margin: 0 0 0.5rem;
    line-height: 1.1;
    text-shadow: 0 0 60px rgba(255,255,255,0.15);
    letter-spacing: -0.01em;
}

/* Subtitle */
.cb-splash-subtitle {
    font-family: 'Cormorant Garamond', serif;
    font-size: clamp(1rem, 2.5vw, 1.4rem);
    font-style: italic;
    color: rgba(255,255,255,0.8);
    margin: 0 0 1.2rem;
    letter-spacing: 0.05em;
    line-height: 1.5;
}

/* Date/Org badge */
.cb-splash-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.35rem 1.1rem;
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 20px;
    background: rgba(255,255,255,0.05);
    margin-bottom: 0.5rem;
}

.cb-splash-date {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.9);
}

.cb-splash-sep {
    color: rgba(255,255,255,0.3);
    font-size: 0.7rem;
}

.cb-splash-org {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.85rem;
    letter-spacing: 0.08em;
    color: rgba(255,255,255,0.7);
}

/* Welcome message */
.cb-splash-message {
    font-family: 'Crimson Pro', serif;
    font-size: clamp(0.95rem, 2vw, 1.15rem);
    line-height: 1.8;
    color: rgba(255,255,255,0.65);
    font-style: italic;
    max-width: 520px;
    margin: 1.2rem auto 1.8rem;
    padding: 0 0.5rem;
}

/* Enter button */
.cb-splash-enter {
    display: inline-block;
    padding: 1rem 2.8rem;
    background: #ffffff;
    color: var(--blue);
    border: none;
    border-radius: 2px;
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    cursor: pointer;
    transition: all 0.25s ease;
    box-shadow: 0 4px 24px rgba(255,255,255,0.18);
    text-transform: uppercase;
    margin-bottom: 1rem;
}

.cb-splash-enter:hover {
    background: var(--off-white);
    transform: translateY(-2px);
    box-shadow: 0 8px 32px rgba(255,255,255,0.28);
}

/* Tap hint */
.cb-splash-tap {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.75rem;
    color: rgba(255,255,255,0.3);
    letter-spacing: 0.1em;
    margin: 0;
}

/* ═══════════════════════════════════════════════════════
   WRITING PEN ANIMATION
═══════════════════════════════════════════════════════ */
.cb-pen-wrap {
    position: relative;
    /* sits alongside the preview / textarea area */
}

/* The pen floats above the preview box */
.cb-pen {
    position: absolute;
    pointer-events: none;
    z-index: 10;
    transition: left 0.12s ease-out, top 0.12s ease-out;
    transform: rotate(-38deg);
    transform-origin: bottom center;
    filter: drop-shadow(1px 2px 4px rgba(0,0,0,0.25));
    opacity: 0;
    transition: left 0.1s ease-out, top 0.1s ease-out, opacity 0.3s ease;
}

.cb-pen.active {
    opacity: 1;
}

.cb-pen svg {
    width: 38px;
    height: 38px;
}

/* Tiny ink-drop that pulses where the pen nib sits */
.cb-pen-dot {
    position: absolute;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #1a1a1a;
    bottom: 1px;
    left: 50%;
    transform: translateX(-50%);
    animation: cb-ink-pulse 0.5s ease-in-out infinite;
    opacity: 0;
    transition: opacity 0.3s;
}

.cb-pen.active .cb-pen-dot {
    opacity: 1;
}

@keyframes cb-ink-pulse {
    0%, 100% { transform: translateX(-50%) scale(1); opacity: 0.8; }
    50%       { transform: translateX(-50%) scale(1.5); opacity: 0.3; }
}

/* Pen bob — subtle bounce while typing */
.cb-pen.typing {
    animation: cb-pen-bob 0.18s ease-in-out;
}

@keyframes cb-pen-bob {
    0%   { transform: rotate(-38deg) translateY(0); }
    40%  { transform: rotate(-40deg) translateY(-4px); }
    100% { transform: rotate(-38deg) translateY(0); }
}

/* Modal pen */
.cb-modal-pen-wrap {
    position: relative;
}

.cb-modal-pen {
    position: absolute;
    pointer-events: none;
    z-index: 10;
    transform: rotate(-38deg);
    transform-origin: bottom center;
    filter: drop-shadow(1px 2px 6px rgba(255,255,255,0.15));
    opacity: 0;
    transition: left 0.1s ease-out, top 0.1s ease-out, opacity 0.3s ease;
}

.cb-modal-pen.active { opacity: 1; }
.cb-modal-pen.typing { animation: cb-pen-bob 0.18s ease-in-out; }

/* ── Green pen for first signatory (slot 0) ── */
.cb-modal-pen.pen-green .cb-pen-dot {
    background: #00a550 !important;
    box-shadow: 0 0 6px rgba(0, 165, 80, 0.8);
}

@keyframes cb-ink-pulse-green {
    0%, 100% { transform: translateX(-50%) scale(1); opacity: 0.9; box-shadow: 0 0 4px rgba(0,165,80,0.6); }
    50%       { transform: translateX(-50%) scale(1.6); opacity: 0.4; box-shadow: 0 0 10px rgba(0,165,80,0.9); }
}

.cb-modal-pen.pen-green.active .cb-pen-dot {
    animation: cb-ink-pulse-green 0.5s ease-in-out infinite !important;
}


/* ── Rose on Wreath ─────────────────────────────── */
.cb-rose-wreath {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 1.6rem;
    position: relative;
    width: 140px;
    height: 140px;
    animation: cb-wreath-float 4s ease-in-out infinite;
}

@keyframes cb-wreath-float {
    0%, 100% { transform: translateY(0px); }
    50%       { transform: translateY(-5px); }
}

.cb-wreath-glow {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(180,40,40,0.12) 0%, transparent 70%);
    animation: cb-wreath-pulse 3s ease-in-out infinite;
}

@keyframes cb-wreath-pulse {
    0%, 100% { opacity: 0.6; transform: scale(0.95); }
    50%       { opacity: 1;   transform: scale(1.05); }
}

.cb-rose-wreath svg {
    width: 140px;
    height: 140px;
    filter: drop-shadow(0 4px 14px rgba(150,30,30,0.45));
}

/* ── Submission Counter Strip ─────────────────────── */
.cb-counter-strip {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    background: #070f50;
    border: none;
    border-radius: 6px;
    margin: 0 0 1.4rem;
    padding: 0.8rem 1.4rem;
}

.cb-counter-lbl {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: rgba(255,255,255,0.75);
    font-weight: 600;
}

.cb-counter-sep {
    color: rgba(255,255,255,0.2);
    font-size: 1rem;
}

.cb-counter-num {
    font-family: 'Playfair Display', serif;
    font-size: 1.5rem;
    font-weight: 700;
    color: #ffffff;
    line-height: 1;
    letter-spacing: -0.01em;
    animation: cb-counter-in 0.6s cubic-bezier(0.175,0.885,0.32,1.275) both;
}

@keyframes cb-counter-in {
    from { transform: scale(0.5); opacity: 0; }
    to   { transform: scale(1);   opacity: 1; }
}
