/* _lantern-full/base.css — the full-format upgrade shared by every look on the Lantern Palace engine
   (Crystal Ballroom first, 2026-10-08). Loaded after the look's own styles.css and before its skin.css.
   Colours and pictures come from the skin (skin.css sets the --gc-* and --fx-* tokens). */

/* ---------- readable for elders: nothing a guest must read under ~13px ---------- */
.eyebrow,.beat-kicker,.guest-h,.know-h,.roll-h,.grp-h{font-size:13px}
.func-meta{font-size:14px}
.venue-city,.fam-s{font-size:13px}
.hero-eyebrow{font-size:12px}
.hero-date{font-size:15px}
.hint-pill{font-size:12px}
.count-l{font-size:11px}
.scr-lbl{font-size:11px}
.scr-sub,.scr-place{font-size:13px}
.btn,a.btn,button.btn,.mini,a.mini,button.mini{font-size:14px}
.host-s,.fam-l{font-size:16px}
.func-dress,.func-avoid,.hotel-m{font-size:16px}
.roll-b,.know-b{font-size:16.5px;line-height:1.6}
label,.rsvp-note{font-size:15px}
.gal-cap{font-size:14px}
.lede{font-size:clamp(19px,4.8vw,22px)}

/* ---------- the floating controls stop covering the page ---------- */
.mobcta{left:auto;right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));transform:translateY(160%);
  padding:12px 20px;font-size:13px;letter-spacing:.14em;background:var(--gc-deep,#6E1B2B);color:#FBF9F4;
  box-shadow:0 6px 18px rgba(26,16,20,.35),inset 0 0 0 1px rgba(201,162,74,.6)}
.mobcta.is-in{transform:translateY(0)}
.mobcta.is-hid{transform:translateY(160%)}
.audio-btn{padding:0;width:40px;height:40px;justify-content:center;gap:0;top:calc(12px + env(safe-area-inset-top,0px));right:12px}
.audio-btn .audio-lbl{display:none}
.fx-langs{z-index:71}

/* ---------- the kit's rooms inside this engine's rooms ---------- */
.brx .wrap{position:relative;z-index:2}
.brx .fx-h{margin-bottom:6px}
.fx-btn{font-family:var(--caps);letter-spacing:.16em;font-size:13px}
.fx-lnk{font-size:12px;letter-spacing:.14em}
.fx-invoc{display:flex;flex-direction:column;align-items:center;gap:8px;margin:0 0 18px}
.fx-invoc img{width:84px;height:auto}
.fx-invL{margin:0;font:500 20px/1.3 Georgia,"Noto Serif Devanagari",serif;color:var(--gc-deep,#6E1B2B)}
.fx-invV{margin:0;font:italic 400 17px/1.45 var(--serif);color:var(--ink-soft)}
.fx-cal{margin-top:22px;display:flex;flex-direction:column;align-items:center;gap:10px}
#countdown .fx-lnk{color:var(--on-dark);border-bottom-color:rgba(251,249,244,.5)}
#countdown .fx-btn{background:transparent;color:var(--on-dark);box-shadow:inset 0 0 0 1px rgba(251,249,244,.7)}
#fxRForm{margin-top:10px}
#fxRForm .fx-q,#fxRForm li{font-size:16px}
#rsvp .rsvp-done-h{font-family:var(--serif)}
#fxInviteSec .fx-inviters,#fxContactSec .fx-cards{text-align:left}
.lang-nonlatin .eyebrow,.lang-nonlatin .room-title,.lang-nonlatin .mobcta,.lang-nonlatin .btn{letter-spacing:.02em;text-transform:none}
.lang-nonlatin{--serif:Georgia,"Noto Serif Devanagari",serif}

/* ---------- switched off = gone ---------- */
.br-no-rsvp #rsvp,.br-no-rsvp .mobcta,.br-no-rsvp a[href="#rsvp"]{display:none!important}
.br-no-families #hostList,.br-no-families #invite [data-slot="blessing"],.br-no-families #famList,.br-no-families #fxContactSec{display:none!important}
.br-no-scratch #scratch{display:none!important}
.br-no-travel #route{display:none!important}
.br-no-countdown #countdown{display:none!important}
.br-no-wishes #wishes{display:none!important}

/* ---------- a phone: less empty paper, the doors fill the screen, nothing wider than the screen ---------- */
@media (max-width:759px){
  .room{padding-top:calc(var(--edge-h) * .55 + 40px);padding-bottom:48px}
  .room-head{margin-bottom:26px}
  #functions{padding-top:calc(var(--edge-h) * .55 + 112px)}
  .orn-garland-band{height:96px}.orn-garland{max-height:96px}
  #invite .piece--peacock{display:none}
  #invite .wrap{padding-bottom:0}
  .portrait{margin-top:20px}
  #invite .cta-row{margin-top:18px}
  .journey{height:210vh;background:var(--gc-journey-bg,#E9D9B8)}
  .stage{height:100vh;height:100lvh}
  .hero-plate::before{inset:-14% -10%;background:radial-gradient(closest-side,rgba(30,12,20,.6) 0%,rgba(30,12,20,.4) 55%,rgba(30,12,20,0) 100%)}
  .hero-names,.hero-date,.hero-venue,.hero-eyebrow{text-shadow:0 2px 14px rgba(20,8,14,.85),0 1px 3px rgba(20,8,14,.7)}
  .hero-eyebrow{opacity:1;color:#FBF3DE}
  /* getting there: one composed scene — the skin's picture behind, the vehicle parked in front */
  .drive{height:auto;margin:0}
  .drive-stage{position:relative;height:min(84vh,760px);background-color:var(--gc-deep,#5a1624);background-position:center 70%;background-size:cover;background-repeat:no-repeat;overflow:hidden}
  .drive-stage::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
    background:linear-gradient(180deg,var(--gc-drive-top,rgba(78,18,32,.96)) 0%,var(--gc-drive-top2,rgba(78,18,32,.78)) 24%,rgba(0,0,0,0) 46%,rgba(0,0,0,0) 78%,rgba(20,10,14,.35) 100%)}
  .drive-band{display:none}
  .drive-head{top:7%;z-index:3}
  .drive-head .room-sub{font-size:16px;line-height:1.55;color:#F6EBDD}
  .drive-rig{left:50%;bottom:2.5%;width:auto;margin-left:calc(min(78vw,360px) / -2);z-index:2}
  .drive-car{height:auto;width:min(78vw,360px);max-height:none;filter:drop-shadow(0 18px 18px rgba(26,16,20,.45))}
}
#fxLookSec{overflow-x:clip}
html,body{overflow-x:clip}

/* ---------- the front page: the skin's picture, an ivory arched card with its gold, the guest's name ---------- */
.gate-lanterns{display:block}
.gate-sri,.gate-note,.gate-mono{display:none}
.env.opengate{display:block}
.gate-bg{filter:saturate(1.05) brightness(.9);animation:gate-drift 26s ease-in-out infinite alternate}
.env.opengate .gate-shade,.gate-shade{background:linear-gradient(180deg,rgba(20,10,16,.45) 0%,rgba(20,10,16,.12) 30%,rgba(20,10,16,.10) 60%,rgba(20,10,16,.5) 100%)}
.gate-body{position:absolute;left:0;right:0;top:calc(70px + env(safe-area-inset-top,0px));margin:0 auto;max-width:30rem;padding:0 16px;
  display:flex;flex-direction:column;align-items:center;gap:22px;z-index:2;animation:gate-calm 1.8s cubic-bezier(.2,.7,.2,1) both}
@keyframes gate-calm{from{opacity:0}to{opacity:1}}
.gate-card{position:relative;width:min(80vw,320px);text-align:center;color:var(--gc-ink,#3A1520);isolation:isolate;
  padding:calc(34px + min(80vw,320px) * .62 * var(--gc-swag-ar,.657) + 6px) 24px 34px;
  border:3px solid transparent;border-radius:min(40vw,160px) min(40vw,160px) 10px 10px;
  background:radial-gradient(ellipse at 50% 28%,#FFFDF6 0%,#FBF3E0 55%,#F3E3C2 100%) padding-box,
    linear-gradient(135deg,#8E6420 0%,#E9C877 22%,#FFF1C4 38%,#C79A43 55%,#F4D98F 72%,#8E6420 100%) border-box;
  box-shadow:0 26px 60px rgba(10,4,6,.55),0 0 0 1px rgba(255,236,190,.35),0 0 38px rgba(233,200,119,.28)}
.gate-card::before,.gate-card::after{content:"";position:absolute;pointer-events:none;border:1px solid rgba(176,132,52,.9);border-radius:min(40vw,160px) min(40vw,160px) 6px 6px}
.gate-card::before{inset:9px}
.gate-card::after{inset:13px;border-color:rgba(176,132,52,.45)}
.gc-crown{position:absolute;left:50%;top:-58px;width:var(--gc-crown-w,118px);transform:translateX(-50%);z-index:4;filter:drop-shadow(0 6px 8px rgba(40,16,0,.45))}
.gc-swag{position:absolute;left:50%;top:34px;width:62%;transform:translateX(-50%);z-index:1;pointer-events:none;filter:drop-shadow(0 4px 6px rgba(80,40,10,.25))}
.gc-mark{position:absolute;left:50%;top:56%;width:72%;transform:translate(-50%,-50%);opacity:var(--gc-mark-op,.07);z-index:0;pointer-events:none}
.gc-c{position:absolute;bottom:-12px;width:112px;z-index:3;filter:drop-shadow(0 3px 5px rgba(40,20,0,.3))}
.gc-bl{left:-14px;transform:scaleY(-1)}
.gc-br{right:-14px;transform:scale(-1,-1)}
.gc-sheen{position:absolute;inset:0;border-radius:inherit;overflow:hidden;z-index:3;pointer-events:none}
.gc-sheen::before{content:"";position:absolute;top:-20%;bottom:-20%;width:40%;left:-60%;transform:skewX(-18deg);
  background:linear-gradient(90deg,transparent,rgba(255,246,214,.35),transparent);animation:gc-sweep 6s ease-in-out 1.6s infinite}
@keyframes gc-sweep{0%{left:-60%}35%{left:130%}100%{left:130%}}
.gate-card > p,.gate-card > span{position:relative;z-index:2}
.gate-card .gate-to{margin:0;font:italic 500 clamp(24px,6.6vw,28px)/1.2 var(--serif);color:var(--gc-deep,#5E1424);text-shadow:none}
.gate-card .gate-rule{display:block;width:118px;height:30px;margin:6px auto 8px;background-position:center;background-size:contain;background-repeat:no-repeat;opacity:1}
.gate-card .gate-names{margin:0;font-family:var(--serif);font-weight:500;line-height:1.02;font-size:clamp(36px,10.4vw,46px);letter-spacing:.01em;
  display:flex;flex-direction:column;align-items:center;text-shadow:none;
  background:linear-gradient(180deg,#9A6A1C 0%,#D9A944 38%,#F4D58A 50%,#B07B26 62%,#6E4710 100%);-webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 1px 0 rgba(255,250,235,.9)) drop-shadow(0 2px 3px rgba(90,50,10,.25))}
.gate-card .gate-names span{white-space:nowrap}
.gate-card .gate-names em{font-style:italic;font-size:.5em;margin:.12em 0;-webkit-text-fill-color:#9A6A1C}
.gate-card .gate-date{margin:0;font-family:var(--caps);font-weight:600;letter-spacing:.32em;font-size:12.5px;color:#8A5E1E}
.gate-card .gate-place{margin:10px 0 26px;font-family:var(--caps);letter-spacing:.3em;font-size:10.5px;color:#8A6A44;opacity:1;text-shadow:none}
.lang-nonlatin .gate-card .gate-names{background:none;color:#7A4E12;filter:none;font-family:Georgia,"Noto Serif Devanagari",serif}
.lang-nonlatin .gate-card .gate-date,.lang-nonlatin .gate-card .gate-place,.lang-nonlatin .gate-cta span{letter-spacing:.05em}
.gate-cta{margin:0}
.gate-cta span{display:inline-block;padding:1em 2.4em;border-radius:999px;border:1px solid rgba(217,180,95,.9);background:rgba(26,12,16,.55);color:#F6E6BC;
  font-family:var(--caps);font-weight:500;font-size:12px;letter-spacing:.3em;text-transform:uppercase;box-shadow:none;text-shadow:none;animation:none;
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.gate-couple{position:absolute;left:50%;bottom:-1vh;width:auto;transform:translateX(-50%);z-index:1;pointer-events:none;
  filter:drop-shadow(0 14px 18px rgba(26,16,20,.55));animation:gate-couple 1.6s .5s cubic-bezier(.2,.7,.2,1) both}
@keyframes gate-couple{from{opacity:0;transform:translate(-50%,24px)}to{opacity:1;transform:translate(-50%,0)}}
@media (prefers-reduced-motion:reduce){.gc-sheen::before{animation:none;display:none}}

/* ---------- the opening film's words ---------- */
.intro{overflow:hidden}
.intro-type{overflow:hidden;padding-left:18px;padding-right:18px;text-shadow:0 2px 18px rgba(20,8,12,.8),0 1px 2px rgba(20,8,12,.6)}
.intro-type::before{content:"";position:absolute;left:0;right:0;bottom:0;height:46%;pointer-events:none;
  background:linear-gradient(180deg,rgba(20,8,12,0) 0%,rgba(20,8,12,.55) 40%,rgba(20,8,12,.75) 100%)}
.intro-line{position:relative;max-width:calc(100vw - 36px)}
.intro-line.gone{opacity:0!important}
.bx-greet{display:flex;align-items:center;justify-content:center;gap:14px;font:italic 400 clamp(24px,6.4vw,34px)/1.2 var(--serif);color:#FBF0D6;flex-wrap:nowrap;white-space:nowrap;max-width:calc(100vw - 36px)}
.bx-greet .bx-hair{flex:0 0 36px;height:1px;background:linear-gradient(90deg,transparent,#E9C877);transform:scaleX(0);transition:transform 1.2s cubic-bezier(.2,.7,.2,1) .25s}
.bx-greet .bx-hair:last-child{background:linear-gradient(90deg,#E9C877,transparent)}
.bx-greet.on .bx-hair{transform:scaleX(1)}
.bx-greet span{letter-spacing:.14em;transition:letter-spacing 1.6s cubic-bezier(.2,.7,.2,1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bx-greet.on span{letter-spacing:.01em}
.bx-title{gap:0!important}
.intro:not(.is-scene):not(.is-still) .intro-line--title.bx-title{font-size:min(7vh,13.5vw,64px)}
.bx-name{display:block;white-space:nowrap;font-family:var(--serif);font-weight:400;line-height:1.05}
.bx-name .ch{display:inline-block;opacity:0;transform:translateY(.35em);
  background:linear-gradient(180deg,#FFF3CC 0%,#F2D488 40%,#D4A74C 62%,#F7E2A6 100%);-webkit-background-clip:text;background-clip:text;color:transparent;
  text-shadow:none;filter:blur(6px) drop-shadow(0 2px 6px rgba(20,8,12,.7))}
.bx-name .ch.sp{width:.28em}
.bx-title.on .ch{animation:bx-ch .9s cubic-bezier(.2,.7,.2,1) calc(var(--i) * 55ms + .1s) both}
@keyframes bx-ch{to{opacity:1;transform:none;filter:blur(0) drop-shadow(0 2px 6px rgba(20,8,12,.7))}}
.bx-amp{display:block;font:italic 400 .42em/1.1 var(--serif)!important;color:#E9C877!important;opacity:0!important;margin:.04em 0;transition:opacity 1s .5s}
.bx-title.on .bx-amp{opacity:1!important}
.bx-orn{display:block;width:150px;margin:10px auto 0;opacity:0;transform:scale(.6);transition:opacity 1s 1.1s,transform 1.2s cubic-bezier(.2,.7,.2,1) 1.1s;filter:drop-shadow(0 3px 6px rgba(20,8,12,.6))}
.bx-title.on .bx-orn{opacity:1;transform:none}
.bx-detail{display:flex;flex-direction:column;align-items:center;gap:8px;letter-spacing:0!important;text-transform:none!important}
.bx-detail .bx-rule{display:block;width:150px;height:1px;background:linear-gradient(90deg,transparent,#E9C877,transparent);transform:scaleX(0);transition:transform 1s cubic-bezier(.2,.7,.2,1) .15s}
.bx-detail.on .bx-rule{transform:scaleX(1)}
.bx-date{font:500 clamp(14px,3.9vw,18px)/1.5 var(--caps);letter-spacing:.12em;text-transform:uppercase;color:#F6E2AE;white-space:normal;max-width:100%;text-align:center}
.bx-venue{font:italic 400 clamp(20px,5.6vw,28px)/1.25 var(--serif);color:#FBF0D6;white-space:normal;max-width:100%;text-align:center}
.bx-tag span{color:#F6E2AE;font-size:clamp(20px,5.4vw,28px);letter-spacing:.16em;opacity:0;transform:scale(.92);display:inline-block;transition:opacity 1s,transform 1.4s cubic-bezier(.2,.7,.2,1)}
.bx-tag.on span{opacity:1;transform:none}
.lang-nonlatin .bx-greet span,.lang-nonlatin .bx-date{letter-spacing:.02em}
@media (prefers-reduced-motion:reduce){.bx-name .ch{opacity:1;transform:none;filter:none;animation:none!important}}
/* a two-language greeting (the look's own sample can carry one): the guest's language first, the second one smaller */
.gate-card .gate-to span{display:block}
.gate-card .gate-to span:first-child{font-size:.8em;font-style:normal;line-height:1.3}
.gate-card .gate-to span+span{font-size:.74em;margin-top:2px}
/* the kit's blessing inside a dark room of the look (Penthouse Nights' navy invitation) */
.br-dark .fx-invL{color:#F3E2B4}
.br-dark .fx-invV{color:rgba(255,250,240,.82)}

/* ---------- a painted front page (skin "front"): the picture is the whole page, the guest's words sit on it.
   The stage keeps the picture's own shape and covers the screen, so the words stay on the plaque on every phone. ---------- */
.has-art .gate-bg,.has-art .gate-shade,.has-art .gate-couple{display:none!important}
.gate-art{position:absolute;inset:0;overflow:hidden;z-index:1;background:#1a1014;container-type:size}
.ga-stage{position:absolute;left:50%;top:50%;width:max(100cqw,calc(100cqh * var(--fa-r)));aspect-ratio:var(--fa-r);transform:translate(-50%,-50%);container-type:inline-size;
  animation:ga-in 1.6s cubic-bezier(.2,.7,.2,1) both}
@keyframes ga-in{from{opacity:0;transform:translate(-50%,-50%) scale(1.04)}to{opacity:1;transform:translate(-50%,-50%)}}
.ga-img{position:absolute;inset:0;width:100%;height:100%;display:block}
.ga-words{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:1.4cqw;padding:0 3cqw;z-index:2}
.ga-words p{margin:0;text-shadow:none;opacity:1}
.ga-words .gate-to{font:italic 500 calc(var(--s) * 5.6cqw)/1.2 var(--serif);color:var(--ga-to,#6a1625)}
.ga-words .gate-to span{display:block}
.ga-words .gate-to span+span{font-size:.8em}
.ga-words .gate-names{display:block;font:600 calc(var(--s) * 12cqw)/1 var(--serif);color:var(--ga-name,#5E1424);letter-spacing:.01em;background:none;filter:none}
.ga-words .gate-names span{display:block;white-space:nowrap}
.ga-words .gate-names em{display:block;font:italic 500 .45em/1.3 var(--serif);color:var(--ga-amp,#9A6A1C)}
.ga-words.inl .gate-names{white-space:nowrap}
.ga-words.inl .gate-names span{display:inline}
.ga-words.inl .gate-names em{display:inline;margin:0 .2em}
.ga-words .gate-date{font:600 calc(var(--s) * 3.6cqw)/1.3 var(--caps);letter-spacing:.3em;color:var(--ga-ink,#8A5E1E)}
.ga-words .gate-place{font:500 calc(var(--s) * 3.2cqw)/1.3 var(--caps);letter-spacing:.22em;text-transform:uppercase;color:var(--ga-ink,#8A5E1E)}
.lang-nonlatin .ga-words .gate-names,.lang-nonlatin .ga-words .gate-to{font-family:Georgia,"Noto Serif Devanagari",serif;font-style:normal}
.lang-nonlatin .ga-words .gate-date,.lang-nonlatin .ga-words .gate-place{letter-spacing:.05em}
.gate-body--art{top:auto!important;bottom:calc(5.5vh + env(safe-area-inset-bottom,0px))!important;animation:gate-calm 1.8s .6s cubic-bezier(.2,.7,.2,1) both}
.ga-words .gate-place{max-width:100%;overflow-wrap:anywhere}
.has-art .gate-cta span{background:var(--gc-deep,#6E1B2B);border-color:#E9C877;color:#FBF3DE;box-shadow:0 8px 22px rgba(60,20,10,.35);-webkit-backdrop-filter:none;backdrop-filter:none}
/* the shade behind the film's words comes up with the first line, not over the opening scene */
.intro-type::before{opacity:0;transition:opacity 1.2s ease}
.intro-type:has(.on)::before{opacity:1}

/* the second language of a two-line film greeting, a little smaller */
.bx-greet small{font-size:.78em;letter-spacing:.04em}

/* a small panel never makes the guest squint: every line keeps a readable minimum, the panel's own size permitting or not */
.ga-words .gate-to{font-size:max(12.5px,calc(var(--s) * 5.6cqw))}
.ga-words .gate-names{font-size:max(21px,calc(var(--s) * 12cqw))}
.ga-words .gate-date{font-size:max(10.5px,calc(var(--s) * 3.6cqw));letter-spacing:.2em}
.ga-words .gate-place{font-size:max(10px,calc(var(--s) * 3.2cqw));letter-spacing:.14em}

/* parts a couple has not added (the editor's switches; INVITE.prefs.show*) are gone, not empty */
.br-no-know #know,.br-no-story #story,.br-no-photos #fxGalSec,.br-no-photos #fxFilmSec,.br-no-gifts #gifts,.br-no-inviters #fxInviteSec,.br-no-live #live{display:none!important}
