/* Explain: Base reset, site-wide typography, layout, and scroll behavior styles. */
* {
    box-sizing: border-box;
}

html {
    background: var(--background-color);
    text-rendering: optimizeLegibility;
    /* Perpindahan halaman dan lompatan ke suatu bagian halaman langsung
       sampai di tujuan tanpa animasi gulir, baik lewat tombol maupun
       tautan navigasi. */
    scroll-behavior: auto;
    /* Ruang aman setinggi navbar di atas setiap bagian yang dituju.
       Navbar menempel (sticky) di atas konten, jadi tanpa jarak ini judul
       bagian seperti hero, jam layanan, atau pengaduan bisa tergeser ke
       bawah navbar saat dituju lewat tautan menu. */
    scroll-padding-top: 5.5rem;
}

body {
    margin: 0;
    overflow-x: hidden;
    background: linear-gradient(180deg, var(--cream-color) 0%, var(--background-color) 100%);
}

/* Judul bagian dan judul kartu memakai ketebalan lebih ringan.
   Bobot display (900) hanya dipertahankan pada judul hero (h1). */
:is(h2, h3, h4).font-black {
    font-weight: 700;
}

::selection {
    background: var(--secondary-color);
    color: var(--charcoal-color);
}

button,
a {
    cursor: pointer;
}

/* Tombol yang sedang memproses: tampil redup, tidak bisa diklik ulang,
   dan ikon spinner di dalamnya tetap berputar. */
.btn[aria-busy="true"],
button[aria-busy="true"] {
    pointer-events: none;
    opacity: 0.85;
}

input,
button,
textarea,
select {
    font: inherit;
}

:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--accent-color) 72%, transparent);
    outline-offset: 3px;
}
