/* ============================================================================
   kerjasama.css — Kerjasama / Partnership info page
   ----------------------------------------------------------------------------
   Ported from the delivered mockup `kerjsama_ulinmahoni/final_kerjasama.html`,
   with the Build-to-Rent and "Layanan Ulin Mahoni" sections restored from
   `tes10.html` / `investor.html`.

   Used by: pages/info/indonesia/kerjasama.blade.php
            pages/info/english/partnership.blade.php

   SCOPING CONTRACT — read before editing
   - `body.um-kerjasama-body` carries ONLY page background / text colour. The
     portal header and footer are also children of <body>, so anything more
     invasive here would restyle them.
   - `.um-kerjasama` is the scope root. It sits on <main> AND on each modal root
     (modals live outside <main> so they escape its stacking context).
   - Every mockup class is prefixed `km-`. The originals (.container, .btn,
     .card, .section-title, .hidden) collide with Tailwind utilities and with
     the portal's own stylesheet.
   - Every mockup custom property is prefixed `--km-` and hangs off the scope
     class, not :root, so it cannot leak site-wide.
   - Two-class selectors (0,2,0) beat Tailwind Play CDN utilities (0,1,0)
     regardless of source order. That is why almost nothing here needs
     !important. See um-info-reset.css for the few places that do.

   This is a plain .css file — it cannot contain Blade, so url() paths are
   root-relative.
   ========================================================================== */


/* ---------------------------------------------------------------------------
   TOKENS
   The mockup used a single --white token for both card SURFACES and button INK
   on the green CTA, and --text-dark for both headings and dark green fills.
   Those are split here into surface vs ink tokens, which is what makes the
   dark-mode block at the bottom a simple token flip instead of a rule-by-rule
   override war.
   ------------------------------------------------------------------------- */
.um-kerjasama {
    --km-primary-green: #2d6a4f;
    --km-light-green:   #40916c;
    --km-main-green:    #2f6f55;

    --km-page-bg:       #f8fafc;   /* was --bg-light  */
    --km-surface:       #ffffff;   /* was --white, in its SURFACE role */
    --km-surface-alt:   #f8fafc;   /* contact-option resting state */
    --km-surface-input: #fafafa;

    --km-heading:       #1b4332;   /* was --text-dark, in its INK role */
    --km-body-ink:      #1e293b;
    --km-text-muted:    #64748b;

    --km-border:        #f1f5f9;
    --km-border-input:  #e2e8f0;
    --km-check:         #10b981;   /* emerald checkmarks */
    --km-whatsapp:      #25d366;
    --km-mail:          #ea4335;

    --km-shadow: 0 10px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);
}

/* Mockup reset, scoped. The original was a bare `*` selector, which would have
   stripped the portal header/footer margins and forced Inter onto them.

   font-family is deliberately NOT in this universal rule. `.um-kerjasama *` has
   the same specificity (0,1,0) as Font Awesome's own `.fa` / `.fas` / `.fab`
   declarations but is loaded later, so it would win and swap the icon font for
   Inter — every Font Awesome glyph on the page would silently vanish. Since
   font-family inherits, declaring it once on the scope root below reaches all
   the text without touching the icon elements. */
.um-kerjasama,
.um-kerjasama * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

.um-kerjasama { font-family: 'Inter', sans-serif; }

body.um-kerjasama-body {
    background: #f8fafc;
    color: #1e293b;
    line-height: 1.6;
    overflow-x: hidden;
}

.um-kerjasama .km-container {
    max-width: 1140px;
    margin: auto;
    padding: 0 20px 60px;
    width: 100%;
}


/* ---------------------------------------------------------------------------
   BUTTONS
   ------------------------------------------------------------------------- */
.um-kerjasama .km-btn {
    /* Buttons do not inherit font-family either — see the note on the reset. */
    font-family: inherit;
    background: var(--km-main-green);
    color: #fff;
    padding: 12px 24px;
    border: none;
    border-radius: 10px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all .3s ease;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}
.um-kerjasama .km-btn:hover {
    background: var(--km-primary-green);
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(47, 111, 85, .3);
}
.um-kerjasama .km-btn-secondary { background: #e2e8f0; color: #475569; }
.um-kerjasama .km-btn-secondary:hover { background: #cbd5e1; }
.um-kerjasama .km-btn-block { width: 100%; }
.um-kerjasama .km-btn-wa { background: var(--km-whatsapp); }
.um-kerjasama .km-btn-wa:hover { background: #1eb955; }


/* ---------------------------------------------------------------------------
   HERO
   ------------------------------------------------------------------------- */
.um-kerjasama .km-hero {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 50px;
    align-items: center;
    margin-bottom: 60px;
    padding-top: 40px;
}
.um-kerjasama .km-hero-copy { text-align: left; }
.um-kerjasama .km-hero h1 {
    font-size: 42px;
    line-height: 1.2;
    color: var(--km-heading);
    margin-bottom: 15px;
}
/* Was an inline style="color:var(--main-green)". Moved into the stylesheet so
   dark mode can recolour it without !important. */
.um-kerjasama .km-accent-word { color: var(--km-main-green); }
.um-kerjasama .km-hero p {
    font-size: 18px;
    color: var(--km-text-muted);
    margin-bottom: 30px;
}
.um-kerjasama .km-hero-btns { display: flex; gap: 15px; justify-content: flex-start; }
.um-kerjasama .km-hero-img {
    width: 100%;
    height: auto;
    border-radius: 24px;
    box-shadow: var(--km-shadow);
}


/* ---------------------------------------------------------------------------
   AUDIENCE CARDS
   ------------------------------------------------------------------------- */
.um-kerjasama .km-card-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 50px;
}
.um-kerjasama .km-card {
    background: var(--km-surface);
    padding: 30px;
    border-radius: 20px;
    box-shadow: var(--km-shadow);
    border: 1px solid var(--km-border);
}
.um-kerjasama .km-card h3 { color: var(--km-heading); font-size: 18px; }
.um-kerjasama .km-card-icon {
    color: var(--km-main-green);
    font-size: 24px;
    margin-bottom: 20px;
}
.um-kerjasama .km-card-list {
    list-style: none;
    margin: 15px 0 25px;
    font-size: 14px;
    color: var(--km-text-muted);
}
.um-kerjasama .km-card-list li { display: flex; align-items: center; gap: 8px; }
.um-kerjasama .km-check { color: var(--km-check); }


/* ---------------------------------------------------------------------------
   LIVE STATS
   Three boxes (was four hardcoded ones in the mockup). Values now come from the
   database via PartnershipController — see the blade for the query sources.
   ------------------------------------------------------------------------- */
.um-kerjasama .km-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin: 60px 0;
}
.um-kerjasama .km-stat-box {
    background: var(--km-surface);
    padding: 30px;
    border-radius: 20px;
    text-align: center;
    box-shadow: var(--km-shadow);
}
.um-kerjasama .km-stat-box h2 { color: var(--km-heading); font-size: 32px; }
.um-kerjasama .km-stat-box p { color: var(--km-text-muted); font-size: 14px; }


/* ---------------------------------------------------------------------------
   SECTION TITLE
   Renamed from .section-title, which collides with BOTH the portal's
   homepage/styles.blade.php and components/property/styles.blade.php.
   ------------------------------------------------------------------------- */
.um-kerjasama .km-section-title {
    text-align: center;
    margin: 60px 0 30px;
    font-size: 24px;
    color: var(--km-heading);
    font-weight: 700;
}


/* ---------------------------------------------------------------------------
   BUILD-TO-RENT  (restored from tes10.html / investor.html)
   The mockup's final_kerjasama.html deleted this section but kept the two
   buttons that scroll to it, which threw a TypeError. Restoring it repairs
   both buttons.
   ------------------------------------------------------------------------- */
.um-kerjasama .km-btr-card {
    background: linear-gradient(135deg, #2d6a4f 0%, #1b4332 100%);
    border-radius: 24px;
    padding: 60px 40px;
    color: #fff;
    text-align: center;
    margin-bottom: 60px;
    scroll-margin-top: 6rem;   /* clears the fixed portal header when scrolled to */
}
.um-kerjasama .km-btr-card h2 { margin-bottom: 30px; font-size: 28px; color: #fff; }
.um-kerjasama .km-btr-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 40px;
}
.um-kerjasama .km-btr-stat i { font-size: 22px; margin-bottom: 10px; display: block; }
.um-kerjasama .km-btr-stat p { font-size: 14px; opacity: .85; color: #fff; }
.um-kerjasama .km-btr-stat strong { font-size: 22px; display: block; margin-top: 4px; color: #fff; }
.um-kerjasama .km-btr-note {
    font-size: 13px;
    opacity: .8;
    margin-bottom: 28px;
    color: #fff;
}
.um-kerjasama .km-btr-action { max-width: 500px; margin: 0 auto; }


/* ---------------------------------------------------------------------------
   LAYANAN GRID  (restored; longer copy taken from investor.html)
   ------------------------------------------------------------------------- */
.um-kerjasama .km-layanan-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    margin-bottom: 60px;
}
.um-kerjasama .km-layanan-card {
    background: var(--km-surface);
    padding: 25px 15px;
    border-radius: 15px;
    text-align: center;
    box-shadow: var(--km-shadow);
}
.um-kerjasama .km-layanan-card i {
    font-size: 26px;
    color: var(--km-main-green);
    margin-bottom: 12px;
    display: block;
}
.um-kerjasama .km-layanan-card h4 { color: var(--km-heading); margin-bottom: 6px; }
.um-kerjasama .km-layanan-card p { font-size: 13px; color: var(--km-text-muted); }


/* ---------------------------------------------------------------------------
   CTA BANNER
   ------------------------------------------------------------------------- */
.um-kerjasama .km-footer-cta {
    background: linear-gradient(135deg, var(--km-primary-green) 0%, var(--km-main-green) 100%);
    border-radius: 24px;
    padding: 60px 20px;
    text-align: center;
    margin-bottom: 60px;
    box-shadow: var(--km-shadow);
    position: relative;
    overflow: hidden;
}
.um-kerjasama .km-footer-cta h2 { font-size: 32px; color: #fff; margin-bottom: 12px; font-weight: 700; }
.um-kerjasama .km-footer-cta p { color: #fff; font-size: 16px; margin-bottom: 30px; }
.um-kerjasama .km-footer-cta .km-btn { background: #fff; color: var(--km-primary-green); }
.um-kerjasama .km-footer-cta .km-btn:hover {
    background: #f0fdf4;
    color: var(--km-heading);
    transform: translateY(-3px);
}


/* ---------------------------------------------------------------------------
   MODALS
   The scope class sits on the modal root itself (`.um-kerjasama.km-popup`)
   because modals are rendered outside <main>. z-index is raised to 10000 in
   um-info-reset.css so they clear the fixed portal header (z-index 9999).
   ------------------------------------------------------------------------- */
.um-kerjasama.km-popup {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, .6);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    justify-content: center;
    align-items: center;
    opacity: 0;
    visibility: hidden;
    transition: all .4s cubic-bezier(.4, 0, .2, 1);
    padding: 20px;
    overflow-y: auto;
}
.um-kerjasama.km-popup.km-active { opacity: 1; visibility: visible; }

.um-kerjasama .km-popup-content {
    background: var(--km-surface);
    width: 460px;
    max-width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    padding: 35px;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, .25);
    transform: scale(.9) translateY(20px);
    transition: all .4s cubic-bezier(.34, 1.56, .64, 1);
    position: relative;
}
.um-kerjasama.km-popup.km-active .km-popup-content { transform: scale(1) translateY(0); }
.um-kerjasama .km-popup-content h3,
.um-kerjasama .km-popup-content h4 { color: var(--km-heading); }
.um-kerjasama .km-popup-lead {
    font-size: 13px;
    color: var(--km-text-muted);
    margin-bottom: 20px;
}
.um-kerjasama .km-popup-center { text-align: center; }

.um-kerjasama .km-progress-container {
    width: 100%;
    height: 6px;
    background: #eee;
    border-radius: 10px;
    margin-bottom: 20px;
    overflow: hidden;
}
.um-kerjasama .km-progress-bar {
    height: 100%;
    width: 0;
    background: var(--km-main-green);
    transition: width .4s ease;
}

.um-kerjasama .km-close-icon {
    font-family: inherit;
    position: absolute;
    right: 25px;
    top: 25px;
    cursor: pointer;
    color: var(--km-text-muted);
    font-size: 20px;
    transition: .2s;
    background: none;
    border: none;
    line-height: 1;
}
.um-kerjasama .km-close-icon:hover { color: #ef4444; }


/* ---------------------------------------------------------------------------
   FORM CONTROLS
   The mockup styled bare `input, select, textarea`, which would also have hit
   the portal header's search field. Scoped here.
   ------------------------------------------------------------------------- */
.um-kerjasama .km-form-title {
    font-weight: 700;
    margin-bottom: 20px;
    color: var(--km-main-green);
    font-size: 18px;
    border-bottom: 2px solid var(--km-border);
    padding-bottom: 10px;
}
.um-kerjasama .km-form-group { margin-bottom: 15px; text-align: left; }
.um-kerjasama .km-form-group label {
    display: block;
    margin-bottom: 5px;
    font-size: 13px;
    font-weight: 600;
    color: var(--km-heading);
}

.um-kerjasama input,
.um-kerjasama select,
.um-kerjasama textarea {
    /* Form controls do not inherit font-family — the universal reset used to
       supply it. Explicit `inherit` keeps them on Inter with the body copy. */
    font-family: inherit;
    width: 100%;
    padding: 11px;
    border-radius: 10px;
    border: 1px solid var(--km-border-input);
    font-size: 14px;
    transition: .2s;
    background: var(--km-surface-input);
    color: var(--km-body-ink);
}
.um-kerjasama input:focus,
.um-kerjasama select:focus,
.um-kerjasama textarea:focus {
    border-color: var(--km-main-green);
    outline: none;
    background: var(--km-surface);
    box-shadow: 0 0 0 3px rgba(47, 111, 85, .1);
}
.um-kerjasama textarea { height: 80px; resize: none; }

/* Server-side validation feedback */
.um-kerjasama .km-field-error { color: #dc2626; font-size: 12px; margin-top: 4px; }
.um-kerjasama .km-input-error { border-color: #dc2626; }
.um-kerjasama .km-form-note {
    font-size: 12px;
    color: var(--km-text-muted);
    margin-bottom: 12px;
}

/* Honeypot — visually hidden but still submitted. Kept out of the accessibility
   tree with aria-hidden + tabindex="-1" in the markup. Not display:none, which
   some bots detect. */
.um-kerjasama .km-hp {
    position: absolute !important;
    left: -9999px !important;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.um-kerjasama .km-flex-gap { display: flex; gap: 10px; margin-top: 15px; }
.um-kerjasama .km-hidden { display: none; }

.um-kerjasama .km-loading { display: none; margin-top: 15px; text-align: center; }
.um-kerjasama .km-loading.km-active { display: block; }
.um-kerjasama .km-loader {
    border: 4px solid #f3f3f3;
    border-top: 4px solid var(--km-main-green);
    border-radius: 50%;
    width: 30px;
    height: 30px;
    animation: km-spin 1s linear infinite;
    margin: 10px auto;
}
@keyframes km-spin { 100% { transform: rotate(360deg); } }


/* ---------------------------------------------------------------------------
   CONTACT MODAL  (WhatsApp + Email only — the Telepon option was removed)
   ------------------------------------------------------------------------- */
.um-kerjasama .km-contact-options-wrapper { display: flex; flex-direction: column; gap: 12px; }
.um-kerjasama .km-contact-option {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 16px 20px;
    background: var(--km-surface-alt);
    border-radius: 14px;
    text-decoration: none;
    color: var(--km-heading);
    font-weight: 600;
    transition: all .2s ease;
    border: 1px solid var(--km-border-input);
}
.um-kerjasama .km-contact-option:hover {
    background: var(--km-surface);
    border-color: var(--km-main-green);
    transform: translateX(5px);
}
.um-kerjasama .km-ico-wa { color: var(--km-whatsapp); font-size: 20px; }
.um-kerjasama .km-ico-mail { color: var(--km-mail); font-size: 20px; }
.um-kerjasama .km-ico-confirm { font-size: 50px; color: var(--km-main-green); margin-bottom: 20px; }


/* ---------------------------------------------------------------------------
   RESPONSIVE
   ------------------------------------------------------------------------- */
@media (max-width: 992px) {
    .um-kerjasama .km-layanan-grid,
    .um-kerjasama .km-stats { grid-template-columns: repeat(2, 1fr); }
    .um-kerjasama .km-card-grid { grid-template-columns: 1fr; }
    .um-kerjasama .km-hero { grid-template-columns: 1fr; text-align: center; }
    .um-kerjasama .km-hero-copy { text-align: center; }
    .um-kerjasama .km-hero-btns { justify-content: center; }
    .um-kerjasama .km-btr-stats { grid-template-columns: 1fr; }
}
@media (max-width: 576px) {
    .um-kerjasama .km-stats,
    .um-kerjasama .km-layanan-grid { grid-template-columns: 1fr; }
    .um-kerjasama .km-hero h1 { font-size: 32px; }
    .um-kerjasama .km-popup-content { padding: 25px; }
}


/* ===========================================================================
   DARK MODE
   Mostly a token flip, which is only possible because the ink/surface tokens
   were split at the top of this file. Below the flip are the few surfaces that
   hardcode a colour in the mockup and so cannot be token-driven.
   =========================================================================== */
html.dark body.um-kerjasama-body { background: #0f1a16; color: #e5e7eb; }

html.dark .um-kerjasama {
    --km-page-bg:       #0f1a16;
    --km-surface:       #14231d;
    --km-surface-alt:   #14231d;
    --km-surface-input: #0f1a16;
    --km-heading:       #e8f3ee;
    --km-body-ink:      #e8f3ee;
    --km-text-muted:    #9fb3ab;
    --km-border:        rgba(255, 255, 255, .08);
    --km-border-input:  #2b4239;
    --km-shadow: 0 10px 25px -5px rgba(0, 0, 0, .6), 0 8px 10px -6px rgba(0, 0, 0, .5);
}

/* Accent green is too dark to read as ink on a dark ground — lighten it. */
html.dark .um-kerjasama .km-accent-word { color: #4ade80; }
html.dark .um-kerjasama .km-form-title { color: #4ade80; }
html.dark .um-kerjasama .km-card-icon,
html.dark .um-kerjasama .km-layanan-card i,
html.dark .um-kerjasama .km-ico-confirm { color: #4ade80; }

html.dark .um-kerjasama .km-card,
html.dark .um-kerjasama .km-stat-box,
html.dark .um-kerjasama .km-layanan-card,
html.dark .um-kerjasama .km-popup-content { border: 1px solid rgba(255, 255, 255, .08); }

html.dark .um-kerjasama .km-btn-secondary { background: #243b33; color: #cbd5e1; }
html.dark .um-kerjasama .km-btn-secondary:hover { background: #2e4a40; }

/* Deepen the two green panels so white text keeps its contrast ratio. */
html.dark .um-kerjasama .km-btr-card,
html.dark .um-kerjasama .km-footer-cta {
    background: linear-gradient(135deg, #1b4332 0%, #0d2419 100%);
}
html.dark .um-kerjasama .km-footer-cta .km-btn { background: #e8f3ee; color: #0d2419; }
html.dark .um-kerjasama .km-footer-cta .km-btn:hover { background: #fff; color: #0d2419; }

html.dark .um-kerjasama .km-progress-container { background: #243b33; }
html.dark .um-kerjasama .km-loader { border-color: #243b33; border-top-color: #4ade80; }
html.dark .um-kerjasama .km-contact-option { border-color: #2b4239; }
html.dark .um-kerjasama .km-contact-option:hover { background: #1b2f27; }

/* Form fields need !important here: the portal sets
   `html.dark input { background: … !important }` (homepage/styles.blade.php:802).
   um-info-reset.css reverts that to the browser default; this restores the
   mockup's own dark styling on top. */
html.dark .um-kerjasama input,
html.dark .um-kerjasama select,
html.dark .um-kerjasama textarea {
    background: #0f1a16 !important;
    border-color: #2b4239 !important;
    color: #e8f3ee !important;
}
html.dark .um-kerjasama input:focus,
html.dark .um-kerjasama select:focus,
html.dark .um-kerjasama textarea:focus {
    border-color: #4ade80 !important;
    box-shadow: 0 0 0 3px rgba(74, 222, 128, .12);
}
html.dark .um-kerjasama input::placeholder,
html.dark .um-kerjasama textarea::placeholder { color: #6b8079 !important; }
