/*
Theme Name: Ngundang.in
Theme URI: https://ngundang.in
Author: Ngundang.in
Author URI: https://ngundang.in
Description: Tema WordPress ringan, cepat, dan sepenuhnya bisa dikustom untuk platform undangan digital Ngundang.in. Terinspirasi dari kartu undangan bergaya letterpress — dengan panel Customizer lengkap untuk warna, tipografi, dan layout, tanpa page builder yang memberatkan.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Tested up to: 6.6
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: ngundangin
Tags: custom-colors, custom-logo, custom-menu, editor-style, featured-images, full-width-template, threaded-comments, translation-ready, wide-blocks

Ngundang.in adalah tema turunan (tidak menggunakan kode tema lain). Semua kode asli.
*/

/* =========================================================
   0. DESIGN TOKENS
   Ini adalah nilai DEFAULT. Semua token ini bisa diubah live
   lewat Customizer (lihat inc/customizer.php) — nilai baru
   dikirim sebagai inline CSS custom properties di <head>.
   ========================================================= */
:root{
	/* Palet "kartu undangan letterpress": tinta hijau tua di atas kertas gading, dengan aksen emas foil dan mawar pudar */
	--ngi-ink:        #1B2B22; /* teks judul / header */
	--ngi-paper:       #FBF6EC; /* latar halaman */
	--ngi-card:        #FFFFFF; /* latar kartu konten */
	--ngi-gold:        #B08D57; /* aksen / border / link hover */
	--ngi-rose:        #C97B84; /* aksen sekunder */
	--ngi-text:        #2A2A28; /* teks paragraf */
	--ngi-muted:       #7C8B7A; /* teks sekunder, meta */
	--ngi-border:      #E4DCC8; /* garis tipis */
	--ngi-link:        #1B2B22;
	--ngi-link-hover:  #B08D57;

	--ngi-font-display: "Cormorant Garamond", Georgia, "Times New Roman", serif;
	--ngi-font-body:     "Jost", -apple-system, "Segoe UI", sans-serif;
	--ngi-font-size-base: 17px;
	--ngi-line-height: 1.7;
	--ngi-heading-weight: 600;

	--ngi-container: 1140px;
	--ngi-radius: 2px;
	--ngi-space: 1.6rem;
}

/* =========================================================
   1. RESET DASAR
   ========================================================= */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
	margin:0;
	background:var(--ngi-paper);
	color:var(--ngi-text);
	font-family:var(--ngi-font-body);
	font-size:var(--ngi-font-size-base);
	line-height:var(--ngi-line-height);
	-webkit-font-smoothing:antialiased;
}
img{ max-width:100%; height:auto; display:block; }
figure{ margin:0; }
ul,ol{ padding-left:1.2em; }
a{ color:var(--ngi-link); text-decoration:none; transition:color .18s ease; }
a:hover, a:focus{ color:var(--ngi-link-hover); }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
	outline:2px solid var(--ngi-gold);
	outline-offset:2px;
}

h1,h2,h3,h4,h5,h6{
	font-family:var(--ngi-font-display);
	font-weight:var(--ngi-heading-weight);
	color:var(--ngi-ink);
	line-height:1.25;
	margin:0 0 .6em;
	letter-spacing:.2px;
}
h1{ font-size:clamp(2.1rem,4vw,3rem); }
h2{ font-size:clamp(1.6rem,3vw,2.2rem); }
h3{ font-size:1.4rem; }
p{ margin:0 0 1.2em; }

.screen-reader-text{
	border:0; clip:rect(1px,1px,1px,1px); clip-path:inset(50%);
	height:1px; width:1px; overflow:hidden; position:absolute!important; word-wrap:normal!important;
}
.skip-link{
	position:absolute; left:-9999px; top:0; background:var(--ngi-ink); color:#fff;
	padding:.8em 1.2em; z-index:999999;
}
.skip-link:focus{ left:1rem; top:1rem; }

/* =========================================================
   2. LAYOUT — WRAPPERS
   ========================================================= */
.ngi-container{
	max-width:var(--ngi-container);
	margin-inline:auto;
	padding-inline:1.25rem;
}
.ngi-site{ display:flex; flex-direction:column; min-height:100vh; }
.ngi-main-wrap{ flex:1; padding-block:3rem; }
.ngi-layout{ display:grid; gap:3rem; }
.ngi-layout.has-sidebar-right{ grid-template-columns:minmax(0,1fr) 300px; }
.ngi-layout.has-sidebar-left{ grid-template-columns:300px minmax(0,1fr); }
.ngi-layout.has-sidebar-left .ngi-primary{ order:2; }
.ngi-layout.no-sidebar{ grid-template-columns:1fr; max-width:800px; margin-inline:auto; }
@media (max-width:820px){
	.ngi-layout.has-sidebar-right,
	.ngi-layout.has-sidebar-left{ grid-template-columns:1fr; }
	.ngi-layout.has-sidebar-left .ngi-primary{ order:0; }
}

/* =========================================================
   3. HEADER — gaya "kop surat undangan": garis emas tipis
   membingkai nama situs, logo/judul tersusun rapi di tengah
   atau kiri sesuai pilihan Customizer.
   ========================================================= */
.ngi-header{
	background:var(--ngi-card);
	border-bottom:1px solid var(--ngi-border);
	padding-block:1.4rem;
}
.ngi-header::before{
	content:"";
	display:block;
	height:3px;
	background:linear-gradient(90deg,transparent,var(--ngi-gold) 20%,var(--ngi-gold) 80%,transparent);
	margin-bottom:1.4rem;
}
.ngi-header-inner{
	display:flex; align-items:center; justify-content:space-between; gap:1.5rem; flex-wrap:wrap;
}
.ngi-header.layout-centered .ngi-header-inner{ flex-direction:column; text-align:center; }
.ngi-branding{ display:flex; align-items:center; gap:.9rem; }
.ngi-branding img.custom-logo{ max-height:52px; width:auto; }
.ngi-site-title{
	font-family:var(--ngi-font-display);
	font-size:1.7rem;
	font-weight:700;
	margin:0;
	letter-spacing:.5px;
}
.ngi-site-title a{ color:var(--ngi-ink); }
.ngi-site-description{
	margin:.2rem 0 0;
	font-size:.8rem;
	letter-spacing:2px;
	text-transform:uppercase;
	color:var(--ngi-muted);
}
.ngi-header.layout-minimal .ngi-site-description{ display:none; }

/* Navigasi */
.ngi-primary-nav ul{
	list-style:none; margin:0; padding:0; display:flex; gap:1.8rem; flex-wrap:wrap;
}
.ngi-primary-nav a{
	font-size:.92rem; text-transform:uppercase; letter-spacing:1px; color:var(--ngi-ink); font-weight:500;
}
.ngi-primary-nav ul ul{
	position:absolute; background:var(--ngi-card); border:1px solid var(--ngi-border); padding:.6rem 0;
	flex-direction:column; gap:0; min-width:200px; box-shadow:0 8px 24px rgba(27,43,34,.08); z-index:50;
}
.ngi-primary-nav li{ position:relative; }
.ngi-primary-nav ul ul{ display:none; }
.ngi-primary-nav li:hover > ul,
.ngi-primary-nav li:focus-within > ul{ display:flex; }
.ngi-primary-nav ul ul a{ display:block; padding:.5rem 1.2rem; }
.menu-toggle{
	display:none; background:none; border:1px solid var(--ngi-ink); color:var(--ngi-ink);
	padding:.5rem .9rem; border-radius:var(--ngi-radius); cursor:pointer; font-size:.85rem;
}
@media (max-width:780px){
	.menu-toggle{ display:inline-flex; align-items:center; gap:.4rem; }
	.ngi-primary-nav{ width:100%; display:none; }
	.ngi-primary-nav.is-open{ display:block; }
	.ngi-primary-nav ul{ flex-direction:column; gap:0; padding-top:1rem; }
	.ngi-primary-nav ul ul{ position:static; border:none; box-shadow:none; padding-left:1rem; }
	.ngi-primary-nav li:hover > ul, .ngi-primary-nav li:focus-within > ul{ display:none; }
	.ngi-primary-nav li.submenu-open > ul{ display:flex; }
}
.ngi-header.sticky{ position:sticky; top:0; z-index:200; }

/* =========================================================
   4. KARTU KONTEN — motif "kartu undangan" dengan ornamen
   sudut kecil di keempat pojok, ala segel foil.
   ========================================================= */
.ngi-card{
	background:var(--ngi-card);
	border:1px solid var(--ngi-border);
	border-radius:var(--ngi-radius);
	padding:2.2rem clamp(1.2rem,4vw,3rem);
	position:relative;
	margin-bottom:2.5rem;
}
.ngi-card::before,.ngi-card::after{
	content:""; position:absolute; width:9px; height:9px; border:1px solid var(--ngi-gold);
	transform:rotate(45deg);
}
.ngi-card::before{ top:-5px; left:-5px; }
.ngi-card::after{ bottom:-5px; right:-5px; }

.entry-header{ margin-bottom:1.4rem; }
.entry-meta{
	font-size:.82rem; letter-spacing:1px; text-transform:uppercase; color:var(--ngi-muted); margin-bottom:.6rem;
}
.entry-meta a{ color:var(--ngi-muted); }
.entry-title a{ color:var(--ngi-ink); }
.entry-thumbnail{ margin:0 0 1.6rem; overflow:hidden; border-radius:var(--ngi-radius); }
.entry-content > *:last-child{ margin-bottom:0; }
.entry-footer{
	margin-top:1.8rem; padding-top:1rem; border-top:1px dashed var(--ngi-border);
	font-size:.85rem; color:var(--ngi-muted);
}

/* =========================================================
   5. TOMBOL — bergaya "segel lilin": lingkaran cincin emas
   yang mengetat saat hover.
   ========================================================= */
.wp-block-button__link,
button, .button, input[type="submit"], input[type="button"]{
	display:inline-flex; align-items:center; justify-content:center;
	background:var(--ngi-ink); color:#fff!important; border:1px solid var(--ngi-ink);
	padding:.75em 1.7em; border-radius:999px; font-family:var(--ngi-font-body);
	font-size:.85rem; text-transform:uppercase; letter-spacing:1.5px; cursor:pointer;
	box-shadow:0 0 0 0 var(--ngi-gold); transition:box-shadow .2s ease, transform .2s ease, background .2s ease;
}
.wp-block-button__link:hover, button:hover, .button:hover,
input[type="submit"]:hover, input[type="button"]:hover{
	box-shadow:0 0 0 4px rgba(176,141,87,.35); transform:translateY(-1px); background:var(--ngi-gold); border-color:var(--ngi-gold);
}

/* =========================================================
   6. FORM & WIDGET
   ========================================================= */
input[type="text"],input[type="email"],input[type="url"],input[type="password"],
input[type="search"],input[type="tel"],input[type="number"],textarea,select{
	width:100%; padding:.7em .9em; border:1px solid var(--ngi-border); border-radius:var(--ngi-radius);
	background:var(--ngi-paper); color:var(--ngi-text); font-family:var(--ngi-font-body);
}
.widget{ margin-bottom:2.2rem; }
.widget-title{ font-size:1.1rem; margin-bottom:1rem; position:relative; padding-bottom:.5rem; }
.widget-title::after{ content:""; position:absolute; left:0; bottom:0; width:36px; height:2px; background:var(--ngi-gold); }

/* =========================================================
   7. FOOTER
   ========================================================= */
.ngi-footer{
	background:var(--ngi-ink); color:#EDE7D6; padding-block:3rem 1.5rem; margin-top:auto;
}
.ngi-footer a{ color:#EDE7D6; }
.ngi-footer a:hover{ color:var(--ngi-gold); }
.ngi-footer-widgets{
	display:grid; gap:2rem; grid-template-columns:repeat(var(--ngi-footer-cols,3),1fr); margin-bottom:2rem;
}
.ngi-footer-widgets .widget-title::after{ background:var(--ngi-gold); }
@media (max-width:780px){ .ngi-footer-widgets{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .ngi-footer-widgets{ grid-template-columns:1fr; } }
.ngi-footer-bottom{
	border-top:1px solid rgba(255,255,255,.12); padding-top:1.2rem; font-size:.82rem; color:#B9C1AE;
	display:flex; justify-content:space-between; flex-wrap:wrap; gap:.6rem;
}

/* =========================================================
   8. UTIL / GUTENBERG
   ========================================================= */
.alignwide{ width:100%; max-width:calc(var(--ngi-container) + 4rem); margin-inline:auto; }
.alignfull{ width:100vw; max-width:100vw; margin-left:calc(50% - 50vw); }
.alignleft{ float:left; margin:.4em 1.4em 1em 0; }
.alignright{ float:right; margin:.4em 0 1em 1.4em; }
.aligncenter{ margin-left:auto; margin-right:auto; }

.ngi-pagination{ display:flex; gap:.6rem; margin-top:2rem; flex-wrap:wrap; }
.ngi-pagination a, .ngi-pagination span{
	padding:.5em 1em; border:1px solid var(--ngi-border); border-radius:var(--ngi-radius); color:var(--ngi-ink);
}
.ngi-pagination .current{ background:var(--ngi-ink); color:#fff; border-color:var(--ngi-ink); }

.ngi-cover{
	min-height:70vh; display:flex; align-items:center; justify-content:center; text-align:center;
	background:var(--ngi-ink); color:#fff; padding:4rem 1.5rem; position:relative;
}
.ngi-cover::before, .ngi-cover::after{
	content:""; position:absolute; left:50%; transform:translateX(-50%); width:80px; height:1px; background:var(--ngi-gold);
}
.ngi-cover::before{ top:2.5rem; } .ngi-cover::after{ bottom:2.5rem; }
.ngi-cover h1{ color:#fff; }

/* =========================================================
   9. HOMEPAGE (front-page.php)
   ========================================================= */
.ngi-site{ overflow-x:hidden; }
.home .ngi-main-wrap{ padding-block:0; }
.ngi-bleed{ width:100vw; max-width:100vw; margin-left:calc(50% - 50vw); }
.ngi-section-title{
	text-align:center; margin-bottom:2.6rem; font-size:clamp(1.6rem,3vw,2.1rem);
}
.ngi-btn-primary, .ngi-btn-ghost{
	display:inline-flex; align-items:center; justify-content:center; gap:.5em;
	padding:.85em 1.9em; border-radius:999px; font-size:.85rem; text-transform:uppercase;
	letter-spacing:1.5px; transition:box-shadow .2s ease, transform .2s ease, background .2s ease, color .2s ease;
}
.ngi-btn-primary{ background:var(--ngi-gold); color:var(--ngi-ink)!important; border:1px solid var(--ngi-gold); }
.ngi-btn-primary:hover{ box-shadow:0 0 0 4px rgba(176,141,87,.3); transform:translateY(-1px); }
.ngi-btn-ghost{ border:1px solid rgba(255,255,255,.5); color:inherit; }
.ngi-btn-ghost:hover{ background:rgba(255,255,255,.12); }

/* --- Hero --- */
.ngi-hero{
	background:
		radial-gradient(circle, var(--ngi-gold) 1.5px, transparent 1.5px) 0 0/28px 28px,
		var(--ngi-ink);
	background-blend-mode:normal;
	position:relative;
	color:#F4EFE1;
	padding-block:clamp(3rem,7vw,6rem);
}
.ngi-hero::after{
	content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(27,43,34,.15),var(--ngi-ink) 85%);
}
.ngi-hero-grid{
	position:relative; z-index:1; display:grid; grid-template-columns:1.1fr .9fr; gap:3rem; align-items:center;
}
@media (max-width:860px){ .ngi-hero-grid{ grid-template-columns:1fr; text-align:center; } }
.ngi-eyebrow{
	display:inline-block; font-size:.78rem; letter-spacing:2px; text-transform:uppercase; color:var(--ngi-gold);
	border:1px solid rgba(176,141,87,.5); padding:.35em 1em; border-radius:999px; margin-bottom:1.2rem;
}
.ngi-hero h1{ color:#fff; font-size:clamp(2.2rem,4.4vw,3.2rem); }
.ngi-hero-sub{ color:#D8D6C4; font-size:1.08rem; max-width:46ch; }
@media (max-width:860px){ .ngi-hero-sub{ margin-inline:auto; } }
.ngi-hero-actions{ display:flex; gap:1rem; flex-wrap:wrap; margin:1.6rem 0 2.2rem; }
@media (max-width:860px){ .ngi-hero-actions{ justify-content:center; } }
.ngi-hero-stats{ display:flex; gap:2.4rem; }
@media (max-width:860px){ .ngi-hero-stats{ justify-content:center; } }
.ngi-hero-stats strong{ display:block; font-family:var(--ngi-font-display); font-size:1.6rem; color:var(--ngi-gold); }
.ngi-hero-stats span{ font-size:.8rem; color:#B9C1AE; text-transform:uppercase; letter-spacing:1px; }

.ngi-hero-visual{ display:flex; justify-content:center; }
.ngi-hero-visual img{ border-radius:16px; box-shadow:0 30px 60px rgba(0,0,0,.35); }
.ngi-phone-mock{
	background:#0F1810; border-radius:32px; padding:14px; width:min(270px,80vw);
	transform:rotate(-4deg); box-shadow:0 30px 70px rgba(0,0,0,.4);
}
.ngi-phone-mock__screen{
	background:var(--ngi-paper); border-radius:20px; padding:2.4rem 1.4rem; text-align:center; position:relative;
}
.ngi-phone-mock__screen::before{
	content:""; display:block; width:40px; height:4px; background:var(--ngi-border); border-radius:2px; margin:0 auto 1.6rem;
}
.ngi-phone-mock__label{ font-size:.68rem; letter-spacing:2px; text-transform:uppercase; color:var(--ngi-muted); }
.ngi-phone-mock__names{ font-family:var(--ngi-font-display); font-size:1.7rem; color:var(--ngi-ink); margin:.7rem 0 .3rem; }
.ngi-phone-mock__date{ font-size:.82rem; color:var(--ngi-muted); }
.ngi-phone-mock__seal{
	width:46px; height:46px; border-radius:50%; border:2px solid var(--ngi-gold); display:flex; align-items:center;
	justify-content:center; margin:1.4rem auto 0; color:var(--ngi-gold); font-family:var(--ngi-font-display); font-size:1.15rem;
}

/* --- Steps --- */
.ngi-steps{ padding-block:clamp(3rem,6vw,5rem); }
.ngi-steps-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:2.4rem; }
@media (max-width:780px){ .ngi-steps-grid{ grid-template-columns:1fr; } }
.ngi-step{ text-align:center; padding:0 .5rem; }
.ngi-step-num{
	display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:50%;
	border:1px solid var(--ngi-gold); color:var(--ngi-gold); font-family:var(--ngi-font-display); font-size:1.2rem;
	margin-bottom:1rem;
}
.ngi-step h3{ margin-bottom:.5rem; }
.ngi-step p{ color:var(--ngi-muted); font-size:.95rem; margin-bottom:0; }

/* --- Features --- */
.ngi-features{ padding-block:clamp(3rem,6vw,5rem); }
.ngi-features-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:1.6rem; }
.ngi-feature-card{
	background:var(--ngi-card); border:1px solid var(--ngi-border); border-radius:var(--ngi-radius);
	padding:2rem 1.6rem; margin:0!important; position:relative;
}
.ngi-feature-card::before{
	content:""; width:34px; height:34px; border-radius:50%; background:rgba(176,141,87,.14); display:block; margin-bottom:1rem;
}
.ngi-feature-title{ font-size:1.15rem; margin-bottom:.5rem; }
.ngi-feature-card p{ color:var(--ngi-muted); font-size:.94rem; margin-bottom:0; }

/* --- Testimonials --- */
.ngi-testimonials{ background:#F1EADA; padding-block:clamp(3rem,6vw,5rem); }
.ngi-testimonials-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:1.6rem; }
.ngi-testimonial-card{
	background:var(--ngi-card); border-radius:var(--ngi-radius); padding:2rem; margin:0!important; position:relative;
}
.ngi-testimonial-card::before{
	content:"“"; font-family:var(--ngi-font-display); font-size:3.4rem; color:var(--ngi-gold); line-height:0;
	display:block; margin-bottom:1rem;
}
.ngi-testimonial-card p{ color:var(--ngi-text); margin-bottom:.8rem; }
.ngi-testimonial-name{ font-family:var(--ngi-font-display); color:var(--ngi-ink); font-weight:600; margin:0; }

/* --- CTA banner --- */
.ngi-cta-banner{ background:var(--ngi-ink); color:#fff; text-align:center; padding-block:clamp(3rem,6vw,4.5rem); }
.ngi-cta-banner h2{ color:#fff; }
.ngi-cta-banner p{ color:#D8D6C4; margin-bottom:1.6rem; }
