:root{--color-primary:#1a1a1a;--color-primary-dark:#000;--color-primary-light:#fff;--color-accent:#c9a14d;--color-bg:#fafafa;--color-card:#fff;--color-text:#1a1a1a;--color-text-muted:#6e6e6e;--color-border:#e5e5e5;--color-border-soft:#f0f0f0;--color-hadir-bg:#e8f5e9;--color-hadir-text:#2e7d32;--color-tidak-hadir-bg:#e1f5fe;--color-tidak-hadir-text:#0277bd;--color-mungkin-bg:#fff3e0;--color-mungkin-text:#e65100;--color-error:#c62828;--color-linkedin:#0a66c2;--color-linkedin-hover:#004182;--color-github-bg:#21262d;--color-github-bg-hover:#30363d;--color-github-border:#30363d;--color-footer-bg:#0d1117;--color-footer-text:#c9d1d9;--color-footer-text-muted:#8b949e;--font-serif:"Cormorant Garamond", Georgia, "Times New Roman", serif;--font-sans:"Montserrat", system-ui, -apple-system, "Segoe UI", sans-serif;--font-arabic:"Amiri", "Scheherazade New", "Traditional Arabic", serif;--font-script:"Bonheur Royale", cursive;--text-xs:.7rem;--text-sm:.8rem;--text-base:.95rem;--text-lg:1.1rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.5rem;--leading-snug:1.25;--leading-normal:1.5;--leading-relaxed:1.65;--leading-loose:1.7;--tracking-tight:.02em;--tracking-wide:.08em;--tracking-wider:.15em;--tracking-widest:.25em;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-sm:4px;--radius-md:6px;--radius-card:12px;--radius-button:9999px;--shell-max-width:100%;--content-max:100%}@media (width>=768px){:root{--text-xs:.75rem;--text-sm:.8rem;--text-base:1rem;--text-lg:1.2rem;--text-xl:1.4rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--text-4xl:3.5rem;--shell-max-width:700px;--content-max:460px}}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-serif);font-weight:500;line-height:var(--leading-normal);margin:0;padding:0}h1,h2,h3{font-family:var(--font-serif);color:var(--color-text);margin:0;font-weight:600}p{margin:0}a{color:var(--color-primary)}hr{border:none;margin:0}.app-shell{max-width:var(--shell-max-width);padding:var(--space-md);margin:0 auto;position:relative}@media (width>=768px){.app-shell{padding:var(--space-lg)}}.section{min-height:100dvh;margin-bottom:var(--space-sm);flex-direction:column;justify-content:center;display:flex}.section-body{text-align:center;padding:var(--space-xl) var(--space-md)}@media (width>=768px){.section-body{padding:var(--space-xl) var(--space-lg)}}.floating-nav-group{z-index:1000;flex-direction:column;align-items:stretch;gap:6px;display:flex;position:fixed;top:50%;left:12px;transform:translateY(-50%)}.floating-nav{gap:var(--space-sm);padding:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:.5;background:#fffffff2;flex-direction:column;transition:opacity .3s,transform .3s;display:flex;box-shadow:0 4px 12px #00000014}.floating-nav:hover{opacity:1;transform:scale(1.05)}.nav-link{border-radius:var(--radius-sm);justify-content:center;align-items:center;width:20px;height:20px;text-decoration:none;transition:all .2s;display:flex;position:relative}.nav-link img{object-fit:contain;opacity:.6;width:12px;height:12px;transition:opacity .2s}.nav-link:hover img{opacity:1}.nav-link.is-active{background:var(--color-primary)}.nav-link.is-active img{opacity:1;filter:brightness(0)invert()}.music-control{padding:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:.5;background:#fffffff2;justify-content:center;align-items:center;transition:opacity .3s;display:flex;box-shadow:0 4px 12px #00000014}.music-control:hover{opacity:1}.music-btn{cursor:pointer;width:20px;height:20px;color:var(--color-primary);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.music-btn svg{width:12px;height:12px;display:block}.section-title{font-size:var(--text-2xl);margin-bottom:var(--space-sm)}.section-subtitle{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--color-text-muted);margin-bottom:var(--space-sm);font-style:italic}.plain-capital-text{font-family:var(--font-sans);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--color-text-muted);margin:0;font-weight:500}.salam{font-family:var(--font-serif);font-size:var(--text-lg);color:var(--color-primary);letter-spacing:.05em;margin-bottom:var(--space-sm)}.long-text{font-size:var(--text-base);line-height:var(--leading-loose);max-width:var(--content-max);margin-left:auto;margin-right:auto}@media (width>=768px){.long-text{font-size:var(--text-lg)}}.body-italic{font-family:var(--font-serif);font-style:italic}.divider{background:var(--color-accent);width:40px;height:1px;margin:var(--space-md) auto}.text-center{text-align:center}.card{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:var(--space-lg) var(--space-md)}@media (width>=768px){.card{padding:var(--space-xl) var(--space-lg)}}.card-snug{padding:var(--space-md)}@media (width>=768px){.card-snug{padding:var(--space-md) var(--space-lg)}}.card-tight{padding:var(--space-sm) var(--space-xs)}@media (width>=768px){.card-tight{padding:var(--space-sm) var(--space-lg)}}.button{background:var(--color-primary);color:#fff;border-radius:var(--radius-button);font-family:var(--font-sans);font-size:var(--text-sm);letter-spacing:var(--tracking-wide);text-transform:uppercase;cursor:pointer;border:none;padding:14px 28px;font-weight:500;text-decoration:none;transition:background .2s,opacity .2s,color .2s;display:inline-block}@media (width>=768px){.button{padding:12px 24px}}.button:hover:not(:disabled){background:var(--color-primary-dark)}.button:disabled{opacity:.6;cursor:not-allowed}.button-gold{background:var(--color-accent);color:var(--color-primary-light)}.button-gold:hover:not(:disabled){background:#b88e3a}.form-stack{gap:var(--space-md);flex-direction:column;display:flex}@media (width>=768px){.form-stack{gap:var(--space-lg)}}.field{gap:var(--space-xs);font-size:var(--text-sm);color:var(--color-text-muted);flex-direction:column;display:flex}.input,.select,.textarea{border-radius:var(--radius-md);border:1px solid var(--color-border);width:100%;color:var(--color-text);background:var(--color-card);padding:12px 14px;font-family:inherit;font-size:16px}@media (width>=768px){.input,.select,.textarea{font-size:var(--text-base);padding:10px 12px}}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-primary);outline:none}.textarea{resize:vertical}.form-error{color:var(--color-error);font-size:var(--text-sm);margin:0}.badge{border-radius:var(--radius-sm);padding:2px 8px;font-size:12px}.badge-hadir{background:var(--color-hadir-bg);color:var(--color-hadir-text)}.badge-tidak-hadir{background:var(--color-tidak-hadir-bg);color:var(--color-tidak-hadir-text)}.badge-mungkin{background:var(--color-mungkin-bg);color:var(--color-mungkin-text)}.avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:14px;font-weight:700;display:flex}.section-cover{min-height:100dvh;margin:calc(-1 * var(--space-md));text-align:center;flex-direction:column;align-items:center;padding:32px 20px;display:flex;position:relative;overflow:hidden}@media (width>=768px){.section-cover{margin:calc(-1 * var(--space-lg));padding:var(--space-2xl) var(--space-lg)}}.cover-botanical-wrap{z-index:0;width:100%;height:100%;position:absolute;inset:0}.cover-botanical-svg{width:100%;height:100%;position:absolute;inset:0}@keyframes cover-falling{0%{opacity:0;transform:translateY(-18px)}12%{opacity:.85}88%{opacity:.7}to{opacity:0;transform:translate(10px,60px)}}@keyframes cover-sway{0%{transform:translate(0)}28%{transform:translate(2px,-7px)}58%{transform:translate(-1.5px,-10px)}80%{transform:translate(1px,-5px)}to{transform:translate(0)}}.cover-fall{animation:cover-falling var(--t,6s) ease-in-out infinite}.cover-float-corner{animation:cover-sway var(--ct,8s) ease-in-out infinite var(--cd,0s)}.cover-t-43{--t:4.3s}.cover-t-46{--t:4.6s}.cover-t-48{--t:4.8s}.cover-t-51{--t:5.1s}.cover-t-52{--t:5.2s}.cover-t-55{--t:5.5s}.cover-t-57{--t:5.7s}.cover-t-58{--t:5.8s}.cover-t-60{--t:6s}.cover-t-61{--t:6.1s}.cover-t-64{--t:6.4s}.cover-t-72{--t:7.2s}.cover-t-73{--t:7.3s}.cover-ct-9{--ct:9s}.cover-ct-10{--ct:10s}.cover-cd-n14{--cd:-1.4s}.cover-cd-n38{--cd:-3.8s}.cover-top{z-index:1;justify-content:center;align-items:center;gap:var(--space-md);flex-direction:column;flex:1;width:100%;display:flex;position:relative}.cover-bottom{z-index:1;align-items:center;gap:var(--space-md);flex-direction:column;width:100%;display:flex;position:relative}.couple-names{align-items:center;gap:var(--space-xs);margin:var(--space-md) 0;flex-direction:column;display:flex}.couple-name-cover{font-family:var(--font-script);font-size:var(--text-4xl);color:var(--color-primary);overflow-wrap:break-word;max-width:100%;font-weight:400;line-height:1.1}.couple-ampersand{font-family:var(--font-serif);font-size:var(--text-4xl);color:var(--color-accent);padding:0 var(--space-xs);font-style:italic;font-weight:400;line-height:1}.event-date-cover{font-family:var(--font-serif);font-size:var(--text-lg);letter-spacing:var(--tracking-wide);color:var(--color-text)}.invited-guest{align-items:center;gap:var(--space-xs);flex-direction:column;display:flex}.invited-guest-name{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--color-text)}.section-quote{padding:var(--space-xl) var(--space-md);justify-content:center;align-items:center;gap:var(--space-md);flex-direction:column;display:flex}@media (width>=768px){.section-quote{padding:var(--space-2xl) var(--space-lg);gap:var(--space-lg)}.section-quote>.card{width:100%}}.arabic{font-family:var(--font-arabic);font-size:var(--text-xl);color:var(--color-primary);direction:rtl;line-height:2}.arabic.bismillah{font-size:var(--text-lg);margin-bottom:var(--space-md)}@media (width>=768px){.arabic{font-size:var(--text-2xl)}.arabic.bismillah{font-size:var(--text-xl)}}.quote-source{font-family:var(--font-serif);font-size:var(--text-base);letter-spacing:var(--tracking-wide);color:var(--color-text-muted)}.couple-image{z-index:2;width:auto;max-width:100%;height:auto;max-height:240px;margin:0 auto;display:block;position:relative}@media (width>=768px){.couple-image{max-height:320px}}.couple-grid{gap:var(--space-md);margin-top:var(--space-lg);flex-direction:column;align-items:center;display:flex}.couple-grid>.couple-ampersand{display:none}.couple-card{flex-direction:column;width:100%;display:flex}@media (width>=768px){.couple-grid{align-items:center;gap:var(--space-xs);margin-top:var(--space-lg);z-index:1;grid-template-columns:1fr auto 1fr;display:grid;position:relative}.couple-grid>.couple-ampersand{display:inline}.couple-card{padding:var(--space-xl) var(--space-lg)}}.couple-name{font-family:var(--font-serif);font-size:var(--text-lg);margin-bottom:var(--space-sm);line-height:var(--leading-snug);overflow-wrap:break-word}.couple-parents{font-size:var(--text-base);color:var(--color-text);line-height:var(--leading-snug);overflow-wrap:break-word;margin:2px 0}.linkedin{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--color-linkedin);color:#fff;border-radius:var(--radius-md);font-size:var(--text-xs);margin-top:var(--space-md);align-self:center;font-weight:500;text-decoration:none;transition:background .15s;display:inline-flex}.linkedin:hover{background:var(--color-linkedin-hover)}.github{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);background:var(--color-github-bg);color:#fff;border:1px solid var(--color-github-border);border-radius:var(--radius-md);font-size:var(--text-xs);margin-top:var(--space-sm);align-self:center;font-weight:500;text-decoration:none;transition:background .15s;display:inline-flex}.github:hover{background:var(--color-github-bg-hover)}.timeline{text-align:left;max-width:var(--content-max);margin:0 auto;padding:0 0 0 36px;list-style:none;position:relative}@media (width>=768px){.timeline{padding:0 0 0 48px}}.timeline-entry{padding-bottom:var(--space-lg);position:relative}@media (width>=768px){.timeline-entry{padding-bottom:var(--space-xl)}}.timeline-entry:last-child{padding-bottom:0}.timeline-entry:not(:last-child):before{content:"";background:var(--color-accent);width:1px;position:absolute;top:26px;bottom:-2px;left:-24px}@media (width>=768px){.timeline-entry:not(:last-child):before{left:-36px}}.timeline-marker{background:var(--color-bg);border:1.5px solid var(--color-accent);border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;display:flex;position:absolute;top:2px;left:-36px}@media (width>=768px){.timeline-marker{left:-48px}}.timeline-marker-dot{background:var(--color-accent);border-radius:50%;width:7px;height:7px}.timeline-marker-final{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-size:12px;line-height:1}.timeline-date{font-family:var(--font-serif);font-style:italic;font-size:var(--text-base);color:var(--color-primary);margin:0 0 var(--space-xs)}@media (width>=768px){.timeline-date{font-size:var(--text-lg)}}.timeline-description{font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-text);margin:0}.timeline-entry-final .timeline-date{color:var(--color-primary-dark)}.timeline-entry-final .timeline-description{font-family:var(--font-serif);color:var(--color-primary);font-style:italic}@media (width>=768px){.timeline-entry-final .timeline-description{font-size:var(--text-lg)}}.countdown-section{align-items:center;gap:var(--space-md);padding-bottom:var(--space-xl);flex-direction:column;display:flex}.countdown-grid{gap:var(--space-xs);grid-template-columns:repeat(4,1fr);width:100%;margin:0 auto;display:grid}@media (width>=768px){.countdown-grid{gap:var(--space-sm);max-width:360px}}.countdown-box{align-items:center;gap:var(--space-xs);flex-direction:column;display:flex}.countdown-number{font-family:var(--font-serif);font-size:var(--text-2xl);color:var(--color-primary);font-variant-numeric:tabular-nums;font-weight:500;line-height:1}.venue-card{max-width:var(--content-max);margin:0 auto var(--space-md);text-align:center}.venue-map{border-radius:var(--radius-md);width:100%;height:300px;margin-bottom:var(--space-sm);border:0;display:block}.venue-name{font-size:var(--text-xl);margin-bottom:var(--space-sm)}.venue-address{font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.schedule-grid{gap:var(--space-sm);max-width:var(--content-max);text-align:center;grid-template-columns:1fr 1fr;margin:0 auto;display:grid}@media (width>=768px){.schedule-grid{gap:var(--space-lg)}}.schedule-event{font-size:var(--text-lg);margin-bottom:var(--space-sm)}.schedule-time{font-family:var(--font-serif);font-style:italic;font-size:var(--text-base);color:var(--color-text)}.section-form{max-width:var(--content-max);margin:0 var(--space-xl);padding:var(--space-xl) 0}.rsvp-feed{margin-top:var(--space-sm);padding-top:var(--space-xl);border-top:1px solid var(--color-border-soft)}.rsvp-item{gap:var(--space-md);margin-bottom:var(--space-sm);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border-soft);display:flex}@media (width>=768px){.rsvp-item{gap:var(--space-lg);padding-bottom:var(--space-xl)}}.rsvp-item-content{flex:1;min-width:0}.rsvp-item-header{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm);flex-wrap:wrap;display:flex}.rsvp-message{margin:var(--space-sm) 0;word-wrap:break-word;font-size:14px}.rsvp-date{color:var(--color-text-muted);margin:0;font-size:12px}.section-thanks{padding:var(--space-xl) var(--space-md);flex-direction:column;justify-content:center;align-items:center;display:flex}@media (width>=768px){.section-thanks{padding:var(--space-2xl) var(--space-lg)}}.parents-group{margin-top:var(--space-md)}.site-footer{align-items:center;gap:var(--space-xs);padding:var(--space-md);margin:var(--space-lg) calc(-1 * var(--space-md)) calc(-1 * var(--space-md));background:var(--color-footer-bg);color:var(--color-footer-text);text-align:center;flex-direction:column;display:flex}@media (width>=768px){.site-footer{padding:var(--space-lg);margin:var(--space-lg) calc(-1 * var(--space-lg)) calc(-1 * var(--space-lg))}}.footer-credit{font-family:var(--font-serif);font-size:var(--text-base);letter-spacing:var(--tracking-tight);margin:0}.footer-line{font-size:var(--text-sm);color:var(--color-footer-text-muted);margin:0}
