{
    "id": 37,
    "slug": "speech",
    "name": "Speech",
    "page_content": "{{-- ============================================================================\r\n     PAGE CONTENT — Teks Ucapan\r\n     Site  : nres  ·  Page slug: speech  ·  Page ID: auto (dicipta oleh apply-speech.php)\r\n\r\n     Sumber: modul content-speech → content_speeches\r\n       · Terjemahan self-referencing: baris INDUK (speech_parent_id NULL) + baris anak\r\n         mengikut speech_parent_id (tajuk & fail boleh berbeza ikut bahasa)\r\n       · Pecahan penyampai: speech_speaker_category (ref SPEECH_SPEAKER)\r\n         MENTERI (YBM) · TIMBALAN_MENTERI (YBTM) · KETUA_SETIAUSAHA (KSU)\r\n       · Kategori ucapan: speech_category (ref SPEECH_CATEGORY) — UCAPAN\/PERASMIAN\/MAJLIS\/KENYATAAN\r\n       · Dokumen: speech_file (PDF) · Imej: speech_img\r\n\r\n     Parameter URL:\r\n       penyampai  MENTERI | TIMBALAN_MENTERI | KETUA_SETIAUSAHA   (kosong = semua)\r\n       tahun      tahun ucapan (cth 2026) atau 'lain'\r\n       q          carian tajuk\r\n       id         speech_id → papar butiran\r\n\r\n     Nota:\r\n     · SEMUA logik + markup + CSS ada dalam fail ini — tiada komponen, tiada partial.\r\n     · Warna guna CSS variable tema (--teal\/--green\/--fade\/--line\/--ink) → dark mode.\r\n     ============================================================================ --}}\r\n\r\n@php\r\n    \/* --------------------------------------------------------------------\r\n     | 1. Parameter & konteks\r\n     -------------------------------------------------------------------- *\/\r\n    $spBase = url(trim(((string) ($siteSlug ?? '')).'\/speech', '\/'));\r\n    $spLang = ($lang ?? session('locale', 'ms')) === 'en' ? 'en' : 'ms';\r\n    $spToday = now()->toDateString();\r\n\r\n    \/\/ Senarai penyampai (ref SPEECH_SPEAKER) — susunan ikut ref.sort\r\n    $spSpeakers = [];\r\n\r\n    foreach (DB::table('ref')->where('cat', 'SPEECH_SPEAKER')->orderBy('sort')->get() as $spRef) {\r\n        $spSpeakers[(string) $spRef->code] = $spLang === 'en'\r\n            ? ((string) ($spRef->descr_en ?: $spRef->descr))\r\n            : ((string) $spRef->descr ?: $spRef->descr_en);\r\n    }\r\n\r\n    \/\/ Label kategori ucapan (ref SPEECH_CATEGORY)\r\n    $spCategories = [];\r\n\r\n    foreach (DB::table('ref')->where('cat', 'SPEECH_CATEGORY')->orderBy('sort')->get() as $spRef) {\r\n        $spCategories[(string) $spRef->code] = $spLang === 'en'\r\n            ? ((string) ($spRef->descr_en ?: $spRef->descr))\r\n            : ((string) $spRef->descr ?: $spRef->descr_en);\r\n    }\r\n\r\n    \/\/ Label ringkas untuk tab (YBM \/ YBTM \/ KSU)\r\n    $spSpeakerShort = [\r\n        'MENTERI'          => 'YBM',\r\n        'TIMBALAN_MENTERI' => 'YBTM',\r\n        'KETUA_SETIAUSAHA' => 'KSU',\r\n    ];\r\n\r\n    $spSpeakerLabel = function ($code) use ($spSpeakers, $spLang, $spSpeakerShort) {\r\n        $code = (string) $code;\r\n\r\n        if (isset($spSpeakers[$code])) {\r\n            return $spSpeakers[$code];\r\n        }\r\n\r\n        return $code !== '' ? $code : ($spLang === 'en' ? 'Not stated' : 'Tiada');\r\n    };\r\n\r\n    \/\/ Tab penyampai: label panjang untuk tab + kod\r\n    $spTabLabel = function ($code) use ($spSpeakers, $spSpeakerShort, $spLang) {\r\n        $code = (string) $code;\r\n\r\n        if ($code === '') {\r\n            return $spLang === 'en' ? 'All' : 'Semua';\r\n        }\r\n\r\n        $name = $spSpeakers[$code] ?? $code;\r\n        $short = $spSpeakerShort[$code] ?? null;\r\n\r\n        if ($spLang === 'en') {\r\n            return $short ? $name.' ('.$short.')' : $name;\r\n        }\r\n\r\n        \/\/ BM: \"Menteri (YBM)\" — tambah \"Ucapan\" di hadapan untuk kejelasan\r\n        return ($spLang === 'en' ? '' : 'Ucapan ').($short ? $name.' ('.$short.')' : $name);\r\n    };\r\n\r\n    $spPenyampai = strtoupper((string) request()->query('penyampai', ''));\r\n    $spPenyampai = isset($spSpeakers[$spPenyampai]) ? $spPenyampai : '';\r\n\r\n    $spTahun = (string) request()->query('tahun', '');\r\n    $spTahun = ($spTahun === 'lain' || preg_match('\/^\\d{4}$\/', $spTahun)) ? $spTahun : '';\r\n\r\n    $spCari = mb_substr(trim((string) request()->query('q', '')), 0, 60);\r\n\r\n    $spId = (int) request()->query('id', 0);\r\n\r\n    $spUrl = function (array $params = []) use ($spBase, $spPenyampai, $spTahun, $spCari, $spId) {\r\n        $current = ['penyampai' => $spPenyampai, 'tahun' => $spTahun, 'q' => $spCari, 'id' => $spId ?: null];\r\n        $query = array_filter(array_merge($current, $params), fn ($v) => $v !== null && $v !== '');\r\n\r\n        return $query ? $spBase.'?'.http_build_query($query) : $spBase;\r\n    };\r\n\r\n    $spFile = function ($path) {\r\n        $path = trim((string) $path);\r\n\r\n        if ($path === '') {\r\n            return '';\r\n        }\r\n\r\n        if (str_starts_with($path, 'http:\/\/') || str_starts_with($path, 'https:\/\/')) {\r\n            return $path;\r\n        }\r\n\r\n        if (str_starts_with($path, 'dynaweb4\/')) {\r\n            return asset($path);\r\n        }\r\n\r\n        return asset('storage\/'.ltrim($path, '\/'));\r\n    };\r\n\r\n    $spDate = function ($value) use ($spLang) {\r\n        if (blank($value)) {\r\n            return '';\r\n        }\r\n\r\n        $months = $spLang === 'en'\r\n            ? [1 => 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\r\n            : [1 => 'Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', 'November', 'Disember'];\r\n\r\n        try {\r\n            $date = \\Carbon\\Carbon::parse($value);\r\n\r\n            return $date->day.' '.$months[(int) $date->month].' '.$date->year;\r\n        } catch (\\Throwable $e) {\r\n            return (string) $value;\r\n        }\r\n    };\r\n\r\n    \/* --------------------------------------------------------------------\r\n     | 2. Muat ucapan (induk + terjemahan)\r\n     -------------------------------------------------------------------- *\/\r\n    $spRows = DB::table('content_speeches')\r\n        ->whereIn('speech_status', ['PUBLISHED', 'ACTIVE'])\r\n        ->where(function ($q) use ($spToday) {\r\n            $q->whereNull('speech_start_date')->orWhere('speech_start_date', '')->orWhere('speech_start_date', '<=', $spToday);\r\n        })\r\n        ->where(function ($q) use ($spToday) {\r\n            $q->whereNull('speech_end_date')->orWhere('speech_end_date', '')->orWhere('speech_end_date', '>=', $spToday);\r\n        })\r\n        ->orderByDesc('speech_date')\r\n        ->orderByDesc('speech_id')\r\n        ->get();\r\n\r\n    $spParents  = $spRows->filter(fn ($r) => blank($r->speech_parent_id))->values();\r\n    $spChildren = $spRows->filter(fn ($r) => filled($r->speech_parent_id))->groupBy('speech_parent_id');\r\n\r\n    $spItems = [];\r\n\r\n    foreach ($spParents as $spRow) {\r\n        $spKids = $spChildren[$spRow->speech_id] ?? collect();\r\n        $spTr   = $spKids->firstWhere('speech_language', $spLang);\r\n\r\n        if (! $spTr || blank($spTr->speech_title)) {\r\n            $spTr = $spRow;\r\n        }\r\n\r\n        $spFileRaw = (string) ($spTr->speech_file ?: $spRow->speech_file);\r\n\r\n        $spItems[] = [\r\n            'id'          => (int) $spRow->speech_id,\r\n            'date'        => (string) ($spRow->speech_date ?? ''),\r\n            'title'       => (string) ($spTr->speech_title ?? ''),\r\n            'file'        => $spFile($spFileRaw),\r\n            'file_name'   => $spFileRaw !== '' ? basename($spFileRaw) : '',\r\n            'img'         => $spFile($spRow->speech_img),\r\n            'speaker'     => (string) ($spRow->speech_speaker ?? ''),\r\n            'position'    => (string) ($spRow->speech_position ?? ''),\r\n            'speaker_cat' => (string) ($spRow->speech_speaker_category ?? ''),\r\n            'category'    => (string) ($spRow->speech_category ?? ''),\r\n            'event'       => (string) ($spRow->speech_event ?? ''),\r\n            'location'    => (string) ($spRow->speech_location ?? ''),\r\n        ];\r\n    }\r\n\r\n    $spItems = array_values(array_filter($spItems, fn ($i) => $i['title'] !== ''));\r\n\r\n    \/\/ Kiraan ikut penyampai (untuk tab)\r\n    $spCounts = ['' => count($spItems)];\r\n\r\n    foreach (array_keys($spSpeakers) as $spCode) {\r\n        $spCounts[$spCode] = count(array_filter($spItems, fn ($i) => $i['speaker_cat'] === $spCode));\r\n    }\r\n\r\n    \/\/ Senarai ikut tab penyampai\r\n    $spTabItems = $spPenyampai === ''\r\n        ? $spItems\r\n        : array_values(array_filter($spItems, fn ($i) => $i['speaker_cat'] === $spPenyampai));\r\n\r\n    \/* --------------------------------------------------------------------\r\n     | 3. Tab tahun, carian & butiran\r\n     -------------------------------------------------------------------- *\/\r\n    $spYears   = [];\r\n    $spUndated = 0;\r\n\r\n    foreach ($spTabItems as $spItem) {\r\n        $spYear = $spItem['date'] !== '' ? substr($spItem['date'], 0, 4) : '';\r\n\r\n        if (preg_match('\/^\\d{4}$\/', $spYear)) {\r\n            $spYears[$spYear] = ($spYears[$spYear] ?? 0) + 1;\r\n        } else {\r\n            $spUndated++;\r\n        }\r\n    }\r\n\r\n    krsort($spYears);\r\n\r\n    if ($spTahun !== '' && $spTahun !== 'lain' && ! isset($spYears[$spTahun])) {\r\n        $spTahun = '';\r\n    }\r\n\r\n    if ($spTahun === 'lain' && $spUndated === 0) {\r\n        $spTahun = '';\r\n    }\r\n\r\n    $spList = array_values(array_filter($spTabItems, function ($spItem) use ($spTahun) {\r\n        if ($spTahun === '') {\r\n            return true;\r\n        }\r\n\r\n        $spYear = $spItem['date'] !== '' ? substr($spItem['date'], 0, 4) : '';\r\n\r\n        return $spTahun === 'lain' ? ! preg_match('\/^\\d{4}$\/', $spYear) : $spYear === $spTahun;\r\n    }));\r\n\r\n    if ($spCari !== '') {\r\n        $spList = array_values(array_filter($spList, fn ($i) => mb_stripos($i['title'], $spCari) !== false));\r\n    }\r\n\r\n    $spIsFiltered = $spTahun !== '' || $spCari !== '';\r\n\r\n    $spDetail = null;\r\n\r\n    if ($spId) {\r\n        foreach ($spItems as $spItem) {\r\n            if ($spItem['id'] === $spId) {\r\n                $spDetail = $spItem;\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    $spSpeakerLabelText = $spPenyampai !== '' ? ($spSpeakers[$spPenyampai] ?? $spPenyampai) : '';\r\n@endphp\r\n\r\n<style>\r\n\/* ==========================================================================\r\n   TEKS UCAPAN — gaya skop .sp (warna ikut tema, sokong dark mode)\r\n   ========================================================================== *\/\r\n.sp{padding:34px 0 64px;color:var(--ink);font-family:\"Inter\",\"Segoe UI\",system-ui,-apple-system,Roboto,Arial,sans-serif}\r\n.sp *,.sp *::before,.sp *::after{box-sizing:border-box}\r\n.sp__container{width:min(100% - 32px,1120px);margin:0 auto}\r\n\r\n\/* --- breadcrumb & tajuk -------------------------------------------------- *\/\r\n.sp__breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;color:var(--bs-secondary-color);font-size:.85rem}\r\n.sp__breadcrumb a{color:var(--teal);font-weight:600;text-decoration:none}\r\n.sp__breadcrumb a:hover{text-decoration:underline}\r\n.sp__header{margin-bottom:20px}\r\n.sp__header h1{margin:0 0 8px;color:var(--green);font-size:clamp(1.45rem,3vw,2.05rem);font-weight:800;line-height:1.2}\r\n.sp__header p{margin:0;max-width:76ch;color:var(--bs-secondary-color);font-size:.95rem;line-height:1.65}\r\n\r\n\/* --- tab penyampai ------------------------------------------------------ *\/\r\n.sp__tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;padding-bottom:14px;border-bottom:2px solid var(--line)}\r\n.sp__tab{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border:1px solid var(--line);border-radius:999px;background:var(--bs-body-bg);color:var(--ink);font-size:.82rem;font-weight:700;text-decoration:none;transition:.18s}\r\n.sp__tab:hover{border-color:var(--teal);color:var(--teal)}\r\n.sp__tab.is-active{border-color:var(--teal);background:var(--teal);color:#fff}\r\n.sp__tab-count{padding:1px 8px;border-radius:999px;background:var(--fade);color:var(--teal);font-size:.68rem;font-weight:800}\r\n.sp__tab.is-active .sp__tab-count{background:rgba(255,255,255,.25);color:#fff}\r\n\r\n\/* --- penapis & carian ---------------------------------------------------- *\/\r\n.sp__filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;margin:0 0 16px}\r\n.sp__filter{display:flex;flex-wrap:wrap;align-items:center;gap:6px}\r\n.sp__filter-label{color:var(--bs-secondary-color);font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}\r\n.sp__chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid var(--line);border-radius:999px;background:var(--bs-body-bg);color:var(--ink);font-size:.75rem;font-weight:600;text-decoration:none;transition:.15s}\r\n.sp__chip:hover{border-color:var(--teal);color:var(--teal)}\r\n.sp__chip.is-active{border-color:var(--teal);background:var(--teal);color:#fff}\r\n.sp__search{display:flex;align-items:center;gap:8px;margin-left:auto}\r\n.sp__search input{min-width:210px;padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:var(--bs-body-bg);color:var(--ink);font-size:.8rem;font-family:inherit}\r\n.sp__search input:focus{outline:0;border-color:var(--teal)}\r\n.sp__search button{padding:7px 14px;border:1px solid var(--teal);border-radius:999px;background:var(--teal);color:#fff;font-size:.78rem;font-weight:700;cursor:pointer;font-family:inherit}\r\n.sp__search button:hover{background:var(--green);border-color:var(--green)}\r\n.sp__summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;color:var(--bs-secondary-color);font-size:.84rem}\r\n.sp__summary strong{color:var(--ink)}\r\n.sp__pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;background:var(--fade);color:var(--teal);font-size:.73rem;font-weight:700}\r\n\r\n\/* --- jadual ucapan ------------------------------------------------------- *\/\r\n.sp__table-card{border:1px solid var(--line);border-radius:16px;background:var(--bs-body-bg);overflow:hidden}\r\n.sp__table{width:100%;border-collapse:collapse;font-size:.88rem}\r\n.sp__table thead th{padding:12px 14px;border-bottom:2px solid var(--line);background:var(--fade);color:var(--green);font-size:.72rem;font-weight:800;letter-spacing:.05em;text-align:left;text-transform:uppercase;white-space:nowrap}\r\n.sp__table tbody td{padding:14px;border-bottom:1px solid var(--line);vertical-align:top}\r\n.sp__table tbody tr:last-child td{border-bottom:0}\r\n.sp__table tbody tr:hover{background:color-mix(in srgb,var(--fade) 45%,transparent)}\r\n.sp__table tbody td:last-child{min-width:134px}\r\n.sp__no{width:44px;color:var(--bs-secondary-color);font-variant-numeric:tabular-nums;font-weight:700}\r\n.sp__date{width:118px;color:var(--ink);font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}\r\n.sp__title{margin:0;font-size:.95rem;font-weight:700;line-height:1.45}\r\n.sp__title a{color:var(--ink);text-decoration:none}\r\n.sp__title a:hover{color:var(--teal);text-decoration:underline}\r\n.sp__meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}\r\n.sp__badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;border:1px solid transparent;background:var(--fade);color:var(--teal);font-size:.7rem;font-weight:700;white-space:nowrap}\r\n.sp__badge--speaker{border-color:var(--line);background:transparent;color:var(--bs-secondary-color)}\r\n.sp__source{color:var(--ink);font-size:.82rem;font-weight:600}\r\n.sp__source small{display:block;margin-top:3px;color:var(--bs-secondary-color);font-weight:500}\r\n.sp__acts{display:flex;flex-wrap:wrap;gap:6px;white-space:nowrap}\r\n.sp__btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border:1px solid var(--teal);border-radius:999px;background:var(--teal);color:#fff;font-size:.76rem;font-weight:700;text-decoration:none;transition:.18s}\r\n.sp__btn:hover{background:var(--green);border-color:var(--green);color:#fff}\r\n.sp__btn--ghost{background:transparent;color:var(--teal)}\r\n.sp__btn--ghost:hover{background:var(--teal);color:#fff}\r\n.sp__none{color:var(--bs-secondary-color)}\r\n\r\n\/* --- butiran ucapan ------------------------------------------------------ *\/\r\n.sp__detail{border:1px solid var(--line);border-radius:16px;background:var(--bs-body-bg);overflow:hidden}\r\n.sp__detail-head{padding:22px 24px;border-bottom:1px solid var(--line);background:var(--fade)}\r\n.sp__detail-head h2{margin:0 0 10px;color:var(--green);font-size:clamp(1.15rem,2.4vw,1.5rem);font-weight:800;line-height:1.35}\r\n.sp__detail-meta{display:flex;flex-wrap:wrap;gap:8px 18px;color:var(--bs-secondary-color);font-size:.82rem}\r\n.sp__detail-meta strong{color:var(--ink)}\r\n.sp__detail-body{padding:22px 24px}\r\n.sp__detail-list{list-style:none;margin:0 0 18px;padding:0}\r\n.sp__detail-list li{display:flex;flex-wrap:wrap;gap:6px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:.88rem}\r\n.sp__detail-list li:last-child{border-bottom:0}\r\n.sp__detail-list span:first-child{min-width:120px;color:var(--bs-secondary-color);font-weight:600}\r\n.sp__file{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:6px;padding:14px 16px;border:1px dashed var(--line);border-radius:12px;background:color-mix(in srgb,var(--fade) 40%,transparent)}\r\n.sp__file-name{flex:1 1 220px;color:var(--bs-secondary-color);font-size:.8rem;word-break:break-all}\r\n\r\n\/* --- kosong & nota ------------------------------------------------------- *\/\r\n.sp__empty{padding:52px 24px;border:1px dashed var(--line);border-radius:16px;color:var(--bs-secondary-color);text-align:center}\r\n.sp__empty strong{display:block;margin-bottom:6px;color:var(--ink);font-size:1rem}\r\n.sp__empty a{color:var(--teal);font-weight:700;text-decoration:none}\r\n.sp__empty a:hover{text-decoration:underline}\r\n.sp__note{margin-top:22px;padding:14px 16px;border:1px solid var(--line);border-left:4px solid var(--teal);border-radius:12px;background:color-mix(in srgb,var(--fade) 45%,transparent);color:var(--bs-secondary-color);font-size:.82rem;line-height:1.7}\r\n.sp__note strong{color:var(--ink)}\r\n\r\n\/* --- responsif ----------------------------------------------------------- *\/\r\n@media (max-width:860px){\r\n  .sp__hide-sm{display:none}\r\n  .sp__search{margin-left:0;width:100%}\r\n  .sp__search input{flex:1;min-width:0}\r\n}\r\n@media (max-width:680px){\r\n  .sp__table thead{display:none}\r\n  .sp__table,.sp__table tbody,.sp__table tr,.sp__table td{display:block;width:100%}\r\n  .sp__table tbody tr{margin:0 0 14px;padding:14px;border:1px solid var(--line);border-radius:14px}\r\n  .sp__table tbody td{padding:0 0 10px;border-bottom:0;min-width:0}\r\n  .sp__table tbody td:last-child{padding-bottom:0;min-width:0}\r\n  .sp__no{display:none}\r\n  .sp__date{width:auto;font-size:.78rem}\r\n  .sp__detail-head,.sp__detail-body{padding:18px 16px}\r\n}\r\n<\/style>\r\n\r\n<section class=\"sp\">\r\n    <div class=\"sp__container\">\r\n\r\n        {{-- ============================ BREADCRUMB ============================ --}}\r\n        <nav class=\"sp__breadcrumb\" aria-label=\"breadcrumb\">\r\n            <a href=\"{{ url('\/') }}\">{{ $spLang === 'en' ? 'Home' : 'Utama' }}<\/a>\r\n            <span>\/<\/span>\r\n\r\n            @if ($spDetail)\r\n                <a href=\"{{ $spUrl(['id' => '']) }}\">{{ $spLang === 'en' ? 'Speeches' : 'Teks Ucapan' }}<\/a>\r\n                <span>\/<\/span>\r\n                <span>{{ $spDetail['title'] }}<\/span>\r\n            @else\r\n                <span>{{ $spLang === 'en' ? 'Speeches' : 'Teks Ucapan' }}<\/span>\r\n            @endif\r\n        <\/nav>\r\n\r\n        {{-- ============================== TAJUK ============================== --}}\r\n        <header class=\"sp__header\">\r\n            <h1>{{ $spDetail ? $spDetail['title'] : ($spLang === 'en' ? 'Speeches' : 'Teks Ucapan') }}<\/h1>\r\n\r\n            @if ($spDetail)\r\n                <p>{{ $spLang === 'en' ? 'Speech details and document.' : 'Butiran ucapan dan dokumen.' }}<\/p>\r\n            @else\r\n                <p>\r\n                    @if ($spLang === 'en')\r\n                        Official speeches, opening addresses and event remarks by the Minister, Deputy Minister\r\n                        and the Secretary-General of the Ministry of Natural Resources and Environmental Sustainability.\r\n                    @else\r\n                        Teks ucapan rasmi, perasmian dan ucapan majlis oleh Menteri, Timbalan Menteri dan\r\n                        Ketua Setiausaha Kementerian Sumber Asli dan Kelestarian Alam.\r\n                    @endif\r\n                <\/p>\r\n            @endif\r\n        <\/header>\r\n\r\n        @if ($spDetail)\r\n            {{-- ============================= BUTIRAN ============================= --}}\r\n            <article class=\"sp__detail\">\r\n                <div class=\"sp__detail-head\">\r\n                    <div class=\"sp__meta\" style=\"margin:0 0 10px\">\r\n                        @if ($spDetail['speaker_cat'] !== '')\r\n                            <span class=\"sp__badge\">{{ $spSpeakerLabel($spDetail['speaker_cat']) }}<\/span>\r\n                        @endif\r\n\r\n                        @if ($spDetail['category'] !== '')\r\n                            <span class=\"sp__badge sp__badge--speaker\">\r\n                                {{ $spCategories[$spDetail['category']] ?? $spDetail['category'] }}\r\n                            <\/span>\r\n                        @endif\r\n                    <\/div>\r\n\r\n                    <h2>{{ $spDetail['title'] }}<\/h2>\r\n\r\n                    <div class=\"sp__detail-meta\">\r\n                        <span>\r\n                            <strong>{{ $spLang === 'en' ? 'Date' : 'Tarikh' }}:<\/strong>\r\n                            {{ $spDetail['date'] !== '' ? $spDate($spDetail['date']) : ($spLang === 'en' ? 'No date' : 'Tiada tarikh') }}\r\n                        <\/span>\r\n                        <span>\r\n                            <strong>{{ $spLang === 'en' ? 'Speaker' : 'Penyampai' }}:<\/strong>\r\n                            {{ $spDetail['speaker'] !== '' ? $spDetail['speaker'] : ($spLang === 'en' ? 'Not stated' : 'Tiada') }}\r\n                        <\/span>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"sp__detail-body\">\r\n                    <ul class=\"sp__detail-list\">\r\n                        @if ($spDetail['position'] !== '')\r\n                            <li>\r\n                                <span>{{ $spLang === 'en' ? 'Position' : 'Jawatan' }}<\/span>\r\n                                <span>{{ $spDetail['position'] }}<\/span>\r\n                            <\/li>\r\n                        @endif\r\n\r\n                        @if ($spDetail['event'] !== '')\r\n                            <li>\r\n                                <span>{{ $spLang === 'en' ? 'Event' : 'Majlis \/ Program' }}<\/span>\r\n                                <span>{{ $spDetail['event'] }}<\/span>\r\n                            <\/li>\r\n                        @endif\r\n\r\n                        @if ($spDetail['location'] !== '')\r\n                            <li>\r\n                                <span>{{ $spLang === 'en' ? 'Location' : 'Lokasi' }}<\/span>\r\n                                <span>{{ $spDetail['location'] }}<\/span>\r\n                            <\/li>\r\n                        @endif\r\n\r\n                        @if ($spDetail['category'] !== '')\r\n                            <li>\r\n                                <span>{{ $spLang === 'en' ? 'Category' : 'Kategori' }}<\/span>\r\n                                <span>{{ $spCategories[$spDetail['category']] ?? $spDetail['category'] }}<\/span>\r\n                            <\/li>\r\n                        @endif\r\n                    <\/ul>\r\n\r\n                    @if ($spDetail['file'] !== '')\r\n                        <div class=\"sp__file\">\r\n                            <span class=\"sp__file-name\">{{ $spDetail['file_name'] }}<\/span>\r\n                            <a class=\"sp__btn\" href=\"{{ $spDetail['file'] }}\" target=\"_blank\" rel=\"noopener\">\r\n                                {{ $spLang === 'en' ? 'Download document' : 'Muat turun dokumen' }}\r\n                            <\/a>\r\n                        <\/div>\r\n                    @else\r\n                        <p class=\"sp__none\">\r\n                            {{ $spLang === 'en' ? 'No document is attached to this speech.' : 'Tiada dokumen dilampirkan pada ucapan ini.' }}\r\n                        <\/p>\r\n                    @endif\r\n                <\/div>\r\n            <\/article>\r\n        @else\r\n\r\n            {{-- ============================ TAB PENYAMPAI ============================ --}}\r\n            <nav class=\"sp__tabs\" aria-label=\"{{ $spLang === 'en' ? 'Speaker' : 'Penyampai' }}\">\r\n                <a class=\"sp__tab {{ $spPenyampai === '' ? 'is-active' : '' }}\"\r\n                   href=\"{{ $spUrl(['penyampai' => '', 'tahun' => '', 'q' => '']) }}\">\r\n                    {{ $spLang === 'en' ? 'All' : 'Semua' }}\r\n                    <span class=\"sp__tab-count\">{{ $spCounts[''] ?? 0 }}<\/span>\r\n                <\/a>\r\n\r\n                @foreach ($spSpeakers as $spCode => $spName)\r\n                    <a class=\"sp__tab {{ $spPenyampai === $spCode ? 'is-active' : '' }}\"\r\n                       href=\"{{ $spUrl(['penyampai' => $spCode, 'tahun' => '', 'q' => '']) }}\">\r\n                        {{ $spTabLabel($spCode) }}\r\n                        <span class=\"sp__tab-count\">{{ $spCounts[$spCode] ?? 0 }}<\/span>\r\n                    <\/a>\r\n                @endforeach\r\n            <\/nav>\r\n\r\n            {{-- --------------------------- PENAPIS --------------------------- --}}\r\n            <div class=\"sp__filters\">\r\n                <div class=\"sp__filter\">\r\n                    <span class=\"sp__filter-label\">{{ $spLang === 'en' ? 'Year' : 'Tahun' }}<\/span>\r\n\r\n                    <a class=\"sp__chip {{ $spTahun === '' ? 'is-active' : '' }}\" href=\"{{ $spUrl(['tahun' => '']) }}\">\r\n                        {{ $spLang === 'en' ? 'All' : 'Semua' }}\r\n                    <\/a>\r\n\r\n                    @foreach ($spYears as $spYearKey => $spYearCount)\r\n                        <a class=\"sp__chip {{ $spTahun === (string) $spYearKey ? 'is-active' : '' }}\"\r\n                           href=\"{{ $spUrl(['tahun' => (string) $spYearKey]) }}\">\r\n                            {{ $spYearKey }} <span>({{ $spYearCount }})<\/span>\r\n                        <\/a>\r\n                    @endforeach\r\n\r\n                    @if ($spUndated > 0)\r\n                        <a class=\"sp__chip {{ $spTahun === 'lain' ? 'is-active' : '' }}\"\r\n                           href=\"{{ $spUrl(['tahun' => 'lain']) }}\">\r\n                            {{ $spLang === 'en' ? 'Others' : 'Lain-lain' }} <span>({{ $spUndated }})<\/span>\r\n                        <\/a>\r\n                    @endif\r\n                <\/div>\r\n\r\n                <form class=\"sp__search\" method=\"get\" action=\"{{ $spBase }}\" role=\"search\">\r\n                    <input type=\"hidden\" name=\"penyampai\" value=\"{{ $spPenyampai }}\">\r\n\r\n                    @if ($spTahun !== '')\r\n                        <input type=\"hidden\" name=\"tahun\" value=\"{{ $spTahun }}\">\r\n                    @endif\r\n\r\n                    <input type=\"search\" name=\"q\" value=\"{{ $spCari }}\"\r\n                           placeholder=\"{{ $spLang === 'en' ? 'Search title…' : 'Cari tajuk…' }}\"\r\n                           aria-label=\"{{ $spLang === 'en' ? 'Search title' : 'Cari tajuk' }}\">\r\n\r\n                    <button type=\"submit\">{{ $spLang === 'en' ? 'Search' : 'Cari' }}<\/button>\r\n                <\/form>\r\n            <\/div>\r\n\r\n            {{-- --------------------------- KIRAAN --------------------------- --}}\r\n            <div class=\"sp__summary\">\r\n                @if ($spIsFiltered)\r\n                    <span>\r\n                        {{ $spLang === 'en' ? 'Showing' : 'Menunjukkan' }}\r\n                        <strong>{{ count($spList) }}<\/strong>\r\n                        {{ $spLang === 'en' ? 'of' : 'daripada' }}\r\n                        <strong>{{ count($spTabItems) }}<\/strong>\r\n                        {{ $spLang === 'en' ? 'speeches' : 'ucapan' }}\r\n                    <\/span>\r\n                @else\r\n                    <span>\r\n                        {{ $spLang === 'en' ? 'Total' : 'Jumlah' }}\r\n                        <strong>{{ count($spList) }}<\/strong>\r\n                        {{ $spLang === 'en' ? 'speeches' : 'ucapan' }}\r\n                    <\/span>\r\n                @endif\r\n\r\n                @if ($spSpeakerLabelText !== '')\r\n                    <span class=\"sp__pill\">{{ $spSpeakerLabelText }}<\/span>\r\n                @endif\r\n\r\n                @if ($spTahun !== '')\r\n                    <span class=\"sp__pill\">{{ $spTahun === 'lain' ? ($spLang === 'en' ? 'Others' : 'Lain-lain') : $spTahun }}<\/span>\r\n                @endif\r\n\r\n                @if ($spCari !== '')\r\n                    <span class=\"sp__pill\">&ldquo;{{ $spCari }}&rdquo;<\/span>\r\n                @endif\r\n            <\/div>\r\n\r\n            {{-- --------------------------- JADUAL --------------------------- --}}\r\n            @if (count($spList) > 0)\r\n                <div class=\"sp__table-card\">\r\n                    <table class=\"sp__table\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th class=\"sp__no\">#<\/th>\r\n                                <th>{{ $spLang === 'en' ? 'Date' : 'Tarikh' }}<\/th>\r\n                                <th>{{ $spLang === 'en' ? 'Title' : 'Tajuk' }}<\/th>\r\n                                <th class=\"sp__hide-sm\">{{ $spLang === 'en' ? 'Speaker' : 'Penyampai' }}<\/th>\r\n                                <th class=\"sp__hide-sm\">{{ $spLang === 'en' ? 'Category' : 'Kategori' }}<\/th>\r\n                                <th>{{ $spLang === 'en' ? 'Document' : 'Dokumen' }}<\/th>\r\n                            <\/tr>\r\n                        <\/thead>\r\n\r\n                        <tbody>\r\n                            @foreach ($spList as $spIndex => $spItem)\r\n                                <tr>\r\n                                    <td class=\"sp__no\">{{ $spIndex + 1 }}<\/td>\r\n\r\n                                    <td class=\"sp__date\">\r\n                                        {{ $spItem['date'] !== '' ? $spDate($spItem['date']) : ($spLang === 'en' ? 'No date' : 'Tiada tarikh') }}\r\n                                    <\/td>\r\n\r\n                                    <td>\r\n                                        <p class=\"sp__title\">\r\n                                            <a href=\"{{ $spUrl(['id' => $spItem['id']]) }}\">{{ $spItem['title'] }}<\/a>\r\n                                        <\/p>\r\n\r\n                                        @if ($spItem['speaker_cat'] !== '')\r\n                                            <div class=\"sp__meta\">\r\n                                                <span class=\"sp__badge\">{{ $spSpeakerLabel($spItem['speaker_cat']) }}<\/span>\r\n                                            <\/div>\r\n                                        @endif\r\n                                    <\/td>\r\n\r\n                                    <td class=\"sp__hide-sm\">\r\n                                        <span class=\"sp__source\">{{ $spItem['speaker'] !== '' ? $spItem['speaker'] : '—' }}<\/span>\r\n\r\n                                        @if ($spItem['position'] !== '')\r\n                                            <small>{{ $spItem['position'] }}<\/small>\r\n                                        @endif\r\n                                    <\/td>\r\n\r\n                                    <td class=\"sp__hide-sm\">\r\n                                        {{ $spItem['category'] !== '' ? ($spCategories[$spItem['category']] ?? $spItem['category']) : '—' }}\r\n                                    <\/td>\r\n\r\n                                    <td>\r\n                                        <div class=\"sp__acts\">\r\n                                            @if ($spItem['file'] !== '')\r\n                                                <a class=\"sp__btn\" href=\"{{ $spItem['file'] }}\" target=\"_blank\" rel=\"noopener\">\r\n                                                    {{ $spLang === 'en' ? 'Download' : 'Muat turun' }}\r\n                                                <\/a>\r\n                                            @else\r\n                                                <span class=\"sp__none\">—<\/span>\r\n                                            @endif\r\n                                        <\/div>\r\n                                    <\/td>\r\n                                <\/tr>\r\n                            @endforeach\r\n                        <\/tbody>\r\n                    <\/table>\r\n                <\/div>\r\n            @else\r\n                <div class=\"sp__empty\">\r\n                    <strong>{{ $spLang === 'en' ? 'No speeches found' : 'Tiada ucapan ditemui' }}<\/strong>\r\n                    <p style=\"margin:0 0 10px\">\r\n                        @if ($spIsFiltered)\r\n                            {{ $spLang === 'en'\r\n                                ? 'No speeches match this year or search. Try another filter.'\r\n                                : 'Tiada ucapan sepadan dengan tahun atau carian ini. Cuba penapis lain.' }}\r\n                        @else\r\n                            {{ $spLang === 'en'\r\n                                ? 'No speeches have been published for this selection yet.'\r\n                                : 'Belum ada ucapan diterbitkan untuk pilihan ini.' }}\r\n                        @endif\r\n                    <\/p>\r\n\r\n                    @if ($spIsFiltered || $spPenyampai !== '')\r\n                        <a href=\"{{ $spUrl(['penyampai' => '', 'tahun' => '', 'q' => '']) }}\">\r\n                            {{ $spLang === 'en' ? 'Reset filters' : 'Set semula penapis' }}\r\n                        <\/a>\r\n                    @endif\r\n                <\/div>\r\n            @endif\r\n        @endif\r\n\r\n        {{-- =============================== NOTA ============================== --}}\r\n        <div class=\"sp__note\">\r\n            <strong>{{ $spLang === 'en' ? 'Note' : 'Nota' }}:<\/strong>\r\n            @if ($spLang === 'en')\r\n                Speech documents are provided in PDF format. For a document that cannot be opened or for any enquiry,\r\n                please contact the Corporate Communications Division at +603 8091 7000.\r\n            @else\r\n                Dokumen ucapan disediakan dalam format PDF. Bagi dokumen yang tidak dapat dibuka atau sebarang pertanyaan,\r\n                sila hubungi Bahagian Komunikasi Korporat di talian +603 8091 7000.\r\n            @endif\r\n        <\/div>\r\n\r\n    <\/div>\r\n<\/section>\r\n"
}