.invitation-trigger {
    display:inline-block;
    width:max-content;
    padding:12px 22px;
    border:1px solid rgba(17,17,17,0.18);
    border-radius:999px;
    background:#fff;
    color:#39332b;
    cursor:pointer;
    font-size:13px;
    letter-spacing:2px;
    transition:background-color 240ms ease,color 240ms ease,border-color 240ms ease,transform 240ms ease;
}

.invitation-trigger:hover,
.invitation-trigger:focus-visible {
    transform:translateY(-1px);
    background:#f9f7f2;
    border-color:rgba(17,17,17,0.28);
    outline:0;
}

.route-meeting{
    display:flex;
    align-items:center;
    gap:14px;
    min-height:64px;
    margin-top:22px;
    padding:14px 16px;
    border:1px solid rgba(125,112,92,0.12);
    border-radius:18px;
    background:#fbfaf7;
}

.meeting-map{
    position:relative;
    flex:0 0 54px;
    width:54px;
    height:38px;
    overflow:hidden;
    border-radius:12px;
    background:
    linear-gradient(140deg,transparent 0 42%,rgba(156,137,103,0.22) 43% 45%,transparent 46%),
    linear-gradient(24deg,transparent 0 51%,rgba(156,137,103,0.18) 52% 54%,transparent 55%),
    linear-gradient(90deg,rgba(156,137,103,0.12) 1px,transparent 1px),
    linear-gradient(0deg,rgba(156,137,103,0.1) 1px,transparent 1px),
    #f3efe7;
    background-size:auto,auto,18px 18px,18px 18px,auto;
}

.meeting-map::after{
    content:"";
    position:absolute;
    left:50%;
    top:50%;
    width:9px;
    height:9px;
    border-radius:50%;
    background:#28231d;
    box-shadow:0 0 0 5px rgba(40,35,29,0.08);
    transform:translate(-50%,-50%);
}

.meeting-copy{
    min-width:0;
}

.meeting-label{
    margin-bottom:5px;
    color:#9a9286;
    font-size:11px;
    letter-spacing:3px;
}

.meeting-value{
    color:#4f493f;
    font-size:14px;
    line-height:1.6;
}

.route-actions{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:12px;
    width:100%;
}

.invitation-preview {
    position:fixed;
    inset:0;
    z-index:1100;
    display:none;
    align-items:center;
    justify-content:center;
    padding:28px;
    background:rgba(18,16,13,0.72);
}

.invitation-preview.open {
    display:flex;
}

.invitation-preview::before {
    content:"";
    position:absolute;
    inset:0;
    backdrop-filter:blur(8px);
}

.invitation-shell {
    position:relative;
    width:min(88vw,430px);
    max-height:92svh;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:18px;
}

.invitation-frame {
    width:min(88vw,430px);
    aspect-ratio:1080/1530;
    border-radius:0;
    overflow:hidden;
    background:#fff;
    box-shadow:0 32px 96px rgba(0,0,0,0.34);
}

.invitation-frame img {
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
}

.invitation-preparing {
    width:100%;
    height:100%;
    display:grid;
    place-items:center;
    padding:42px;
    color:#6f6458;
    font-size:15px;
    line-height:2;
    letter-spacing:0.12em;
    text-align:center;
}

.invitation-actions {
    display:flex;
    justify-content:center;
    gap:28px;
}

.invitation-actions button {
    border:0;
    background:transparent;
    color:rgba(250,247,239,0.82);
    cursor:pointer;
    font-size:14px;
    font-weight:300;
    letter-spacing:0.18em;
}

.invitation-actions button:hover,
.invitation-actions button:focus-visible {
    color:#fffaf0;
    outline:0;
}

.invitation-status {
    min-height:24px;
    margin:0;
    color:rgba(250,247,239,0.64);
    font-size:13px;
    line-height:1.8;
    letter-spacing:0.08em;
    text-align:center;
}

body.invitation-open .super-container,
body.invitation-open nav,
body.invitation-open footer {
    filter:blur(4px);
}

.invitation-vatican-card {
    box-sizing:border-box;
    width:100%;
    height:100%;
    display:flex;
    flex-direction:column;
    padding:6.4% 7.4% 4.8%;
    background:
        radial-gradient(circle at 50% 10%,rgba(221,207,178,0.08),transparent 26%),
        #fff;
    color:#14100c;
    font-family:"Times New Roman", "Noto Serif SC", "Songti SC", serif;
    text-align:center;
}

.iv-head {
    flex:0 0 auto;
    margin-bottom:3.8%;
}

.iv-title {
    color:#080706;
    font-size:clamp(27px,6.2vw,43px);
    font-weight:700;
    letter-spacing:0.18em;
    line-height:1;
    white-space:nowrap;
}

.iv-hairline {
    width:44px;
    height:1px;
    margin:3% auto 0;
    background:rgba(163,122,67,0.32);
}

.iv-hero {
    flex:0 0 auto;
    display:grid;
    grid-template-columns:1fr 0.94fr;
    align-items:center;
    gap:7.2%;
    min-height:0;
    margin-bottom:3.7%;
}

.iv-stamp {
    position:relative;
    aspect-ratio:0.78;
    padding:7px;
    background:#fff;
    filter:drop-shadow(0 8px 18px rgba(32,24,14,0.12));
}

.iv-stamp::before {
    content:"";
    position:absolute;
    inset:0;
    background:
        radial-gradient(circle at 0 0,transparent 0 6px,#fff 6.6px) top left/16px 16px repeat,
        radial-gradient(circle at 100% 0,transparent 0 6px,#fff 6.6px) top right/16px 16px repeat,
        radial-gradient(circle at 0 100%,transparent 0 6px,#fff 6.6px) bottom left/16px 16px repeat,
        radial-gradient(circle at 100% 100%,transparent 0 6px,#fff 6.6px) bottom right/16px 16px repeat;
    pointer-events:none;
}

.iv-stamp-photo {
    position:relative;
    width:100%;
    height:100%;
    overflow:hidden;
    border:1px solid rgba(24,18,12,0.12);
    background:
        radial-gradient(circle at 30% 24%,rgba(232,214,170,0.72),transparent 22%),
        linear-gradient(145deg,#f4efe4,#c9bdab);
}

.iv-stamp-photo img {
    width:100%;
    height:100%;
    object-fit:cover;
    display:block;
}

.iv-stamp-photo.is-empty {
    display:grid;
    place-items:center;
    padding:18px;
    color:rgba(32,27,22,0.48);
    font-size:12px;
    letter-spacing:0.18em;
    line-height:1.8;
}

.iv-postmark {
    position:absolute;
    right:-10%;
    bottom:10%;
    width:44%;
    aspect-ratio:1;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    border:2px solid rgba(47,48,54,0.48);
    border-radius:50%;
    color:rgba(47,48,54,0.58);
    font-family:"Courier New", monospace;
    transform:rotate(-14deg);
    mix-blend-mode:multiply;
}

.iv-postmark::before,
.iv-postmark::after {
    content:"";
    position:absolute;
    left:14%;
    right:14%;
    height:1px;
    background:rgba(47,48,54,0.4);
}

.iv-postmark::before {
    top:31%;
}

.iv-postmark::after {
    bottom:31%;
}

.iv-postmark span {
    font-size:clamp(10px,2.2vw,14px);
    font-weight:700;
    letter-spacing:0.12em;
}

.iv-postmark small {
    max-width:78%;
    margin-top:3px;
    font-size:clamp(5px,1.2vw,7px);
    letter-spacing:0.08em;
    line-height:1.1;
}

.iv-seal {
    display:flex;
    min-width:0;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:12px;
}

.iv-qr {
    width:min(66%,132px);
    aspect-ratio:1;
    display:grid;
    place-items:center;
    padding:8px;
    border:1px solid rgba(163,122,67,0.32);
    background:#fff;
}

.iv-qr img {
    width:100%;
    height:100%;
    object-fit:contain;
}

.iv-qr.is-empty {
    padding:14px;
    color:#6d6358;
    font-size:12px;
    line-height:1.6;
}

.iv-seal-copy span {
    display:block;
    color:#8b7860;
    font-size:10px;
    letter-spacing:0.18em;
    line-height:1.4;
}

.iv-seal-copy strong {
    display:block;
    margin-top:4px;
    font-size:17px;
    font-weight:400;
    letter-spacing:0.08em;
}

.iv-copy {
    flex:1 1 auto;
    min-height:0;
    margin-top:0;
}

.iv-location {
    margin:0 0 1.3%;
    color:#6f6458;
    font-size:clamp(13px,2.1vw,16px);
    letter-spacing:0.12em;
}

.iv-copy h1 {
    max-width:94%;
    margin:0 auto 2.8%;
    color:#111;
    font-size:clamp(23px,4.6vw,34px);
    font-weight:700;
    line-height:1.18;
    letter-spacing:0.02em;
}

.iv-description {
    max-width:92%;
    margin:0 auto 3.1%;
    color:#4c4740;
    font-size:clamp(12px,2vw,15px);
    line-height:1.58;
    display:-webkit-box;
    -webkit-line-clamp:3;
    -webkit-box-orient:vertical;
    overflow:hidden;
}

.iv-meta {
    display:grid;
    grid-template-columns:1fr;
    gap:5px;
    margin:0 auto 2.6%;
}

.iv-meta p {
    margin:0;
    font-variant:small-caps;
}

.iv-meta span {
    display:block;
    color:#8a7b68;
    font-size:clamp(9px,1.45vw,11px);
    font-weight:700;
    letter-spacing:0.14em;
}

.iv-meta strong {
    display:block;
    margin-top:1px;
    color:#15110d;
    font-size:clamp(13px,2.2vw,17px);
    font-weight:700;
    line-height:1.28;
}

.iv-route-line {
    width:92%;
    margin:2.7% auto 0;
    padding-top:2.5%;
    border-top:1px solid rgba(20,16,12,0.18);
    color:#26211c;
    font-size:clamp(11px,1.85vw,14px);
    font-weight:700;
    line-height:1.5;
}

.iv-foot {
    flex:0 0 auto;
    display:grid;
    grid-template-columns:1fr 1.2fr 1fr;
    align-items:end;
    gap:8px;
    margin-top:3.8%;
    color:#2a251f;
}

.iv-mini-seal {
    width:30px;
    height:30px;
    display:grid;
    place-items:center;
    justify-self:center;
    border:1px solid rgba(163,122,67,0.48);
    border-radius:50%;
    color:#a37a43;
    font-size:15px;
    font-weight:700;
}

.iv-walk-mark {
    color:#6f6458;
    font-size:clamp(9px,1.5vw,12px);
    line-height:1.5;
}

.iv-site {
    font-family:Arial, sans-serif;
    font-size:clamp(11px,1.8vw,14px);
    font-weight:700;
    letter-spacing:0.04em;
}

@media(max-width:620px) {
    .invitation-preview {
        padding:18px;
    }

    .invitation-shell,
    .invitation-frame {
        width:min(94vw,390px);
    }

    .invitation-vatican-card {
        padding:6.2% 6.8% 4.6%;
    }
}
