/* Shared motion and typography. Presentation remains owned by each template. */
.invite-font-scope { min-height:100%; }
.invite-font-scope:not([data-font-style="template"]) .invite .invite-body :is(h1,h2,.invite-custom-final-accent,[class$="-names"],[class$="-name"]) { font-family:var(--invite-selected-font); }
.invite-font-scope .invite :is(h1,h2,[class$="-names"],[class$="-name"]) { overflow-wrap:anywhere;text-wrap:balance;min-width:0; }
.invite-font-scope .invite :is(p,a) { overflow-wrap:anywhere; }
.invite-font-scope .invite :is([class*="-kicker"],[class*="-event-label"]) { text-wrap:balance;max-width:100%; }
.invite-font-scope .invite .countdown { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(5px,1.6vw,14px);width:100%;max-width:700px;margin-inline:auto; }
.invite-font-scope .invite .countdown>div { min-width:0;padding-inline:4px; }
.invite-font-scope .invite .countdown strong { display:block;font-variant-numeric:tabular-nums;line-height:1.2;font-size:clamp(27px,6.8vw,62px); }
.invite-font-scope .invite .countdown span { display:block;font-family:'Noto Sans',sans-serif;font-size:clamp(10px,2.5vw,12px);line-height:1.5;letter-spacing:.04em;white-space:normal; }
.invite-font-scope .invite .invite-body { outline:none; }
.invite-reveal { opacity:1;transform:none; }
[data-ti-motion] { transition:opacity .72s ease var(--ti-delay,0ms),transform .72s cubic-bezier(.2,.7,.25,1) var(--ti-delay,0ms),clip-path .9s cubic-bezier(.2,.7,.25,1) var(--ti-delay,0ms); }
.ti-pending[data-ti-motion] { opacity:0;transform:translateY(22px); }
.ti-pending[data-ti-motion="photo"] { transform:translateY(12px);clip-path:inset(0 0 16% 0 round 4px); }
[data-ti-motion="photo"] { clip-path:inset(0 round 4px); }
.ti-pending[data-ti-motion="calendar"] { transform:scale(.96); }
.ti-pending[data-ti-motion="line"] { transform:scaleX(.08);transform-origin:center; }
.ti-pending[data-ti-motion="cinema"] { transform:translateY(12px); }
[data-ti-motion="cinema"] { transition-duration:1.15s; }
.ti-typewriter { display:inline-grid;vertical-align:baseline; }
.ti-typewriter__full,.ti-typewriter__visual { grid-area:1/1; }
.ti-typewriter__full { color:transparent;pointer-events:none;user-select:none; }
.ti-typewriter__visual { color:inherit; }
.invite-font-scope .invite .audio-fab { right:max(16px,env(safe-area-inset-right));bottom:calc(18px + env(safe-area-inset-bottom));width:44px;height:44px;z-index:30; }
.template-demo-page .invite-font-scope .invite .audio-fab { bottom:calc(94px + env(safe-area-inset-bottom)); }
.invite-body> :last-child { padding-bottom:calc(72px + env(safe-area-inset-bottom)); }
.invite :is(button,a):focus-visible { outline:3px solid currentColor;outline-offset:4px; }
/* Existing individual compositions are retained. Protect portrait framing and image ratios. */
.invite .invite-body figure { min-width:0; }
.invite .invite-body figure img { max-width:100%; }
@media(max-width:600px) {
  .invite-font-scope .invite :is(.art-couple-names,.person-name-wrap) { flex-wrap:wrap;justify-content:center;min-width:0; }
  .invite-font-scope .invite :is(.art-section,.invite-section) { padding-top:clamp(42px,12vw,66px);padding-bottom:clamp(42px,12vw,66px); }
  .invite-font-scope .invite .art-date-parts { gap:14px;max-width:100%; }
  .invite-font-scope .invite .art-date-words { min-width:0; }
  .invite-font-scope .invite .art-month { font-size:clamp(22px,6vw,34px); }
}
@media(prefers-reduced-motion:reduce) {
  .invite-font-scope .invite *, .invite-font-scope .invite *::before,.invite-font-scope .invite *::after { animation:none!important;transition:none!important;scroll-behavior:auto!important; }
  .ti-pending[data-ti-motion] { opacity:1;transform:none;clip-path:none; }
  .invite-font-scope .ti-opening--active { animation:ti-scene-fade .16s linear both!important; }
}
body.invite-gate-locked { touch-action:pan-y; }
.invite-font-trigger { display:flex;align-items:center;justify-content:space-between;min-height:64px;padding:14px 18px;gap:16px; }
.invite-font-trigger-copy { padding:0;border:0; }
/* Count-specific track correction; frames, colours and captions retain template identity. */
.invite-font-scope .invite [data-ti-gallery-count] { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;gap:clamp(12px,2vw,22px);max-width:1000px;margin-inline:auto; }
.invite-font-scope .invite [data-ti-gallery-count="1"] { grid-template-columns:minmax(0,1fr);max-width:540px; }
.invite-font-scope .invite [data-ti-gallery-count]>figure { grid-column:auto!important;grid-row:auto!important;min-height:0;height:auto;align-self:start; }
.invite-font-scope .invite [data-ti-gallery-count="3"]>figure:last-child { grid-column:1/-1!important;width:min(540px,100%);justify-self:center; }
.invite-font-scope .invite [data-ti-gallery-count]>figure img { display:block;width:100%;height:auto!important;min-height:0!important;max-height:640px;aspect-ratio:4/5;object-fit:contain!important;object-position:center; }
@media(max-width:600px) {
 .invite-font-scope .invite [data-ti-gallery-count] { grid-template-columns:minmax(0,1fr); }
 .invite-font-scope .invite [data-ti-gallery-count]>figure { width:100%; }
 .invite-font-scope .invite [data-ti-gallery-count]>figure img { max-height:72svh; }
}
@media(prefers-reduced-motion:no-preference) {
 .ti-decor-playing { animation:ti-decor-drift 9s ease-in-out infinite; }
 @keyframes ti-decor-drift { 0%,100%{translate:0 0;rotate:-2deg}50%{translate:0 -5px;rotate:2deg} }
}
