/* Kemenhub repository theme — base styles (design: "Institusional Klasik"). Loads after EPrints core CSS. */

:root {
  --a-brand-primary: #0a2e5c;
  --a-brand-accent: #f2b705;
  --a-surface-page: #f5f7fa;
  --a-surface-card: #ffffff;
  --a-surface-subtle: #e8eef6;
  --a-surface-inverse: #061d3b;
  --a-text-primary: #0f172a;
  --a-text-secondary: #475569;
  --a-text-on-brand: #ffffff;
  --a-text-on-accent: #061d3b;
  --a-border: #d5dde8;
  --a-radius-sm: 4px;
  --a-radius-md: 6px;
  --a-radius-lg: 8px;
  --a-gutter: 64px;
  --a-sans: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --a-serif: "Source Serif 4", Georgia, "Times New Roman", serif;
}

/* ---------- Base ---------- */
body.ka {
  margin: 0;
  background: var(--a-surface-page);
  color: var(--a-text-primary);
  font: 400 14px/1.55 var(--a-sans);
}
body.ka #wrapper { width: auto; max-width: none; margin: 0; padding: 0; border: 0; box-shadow: none; background: none; }
body.ka a { color: var(--a-brand-primary); }
body.ka a:focus-visible, body.ka button:focus-visible, body.ka input:focus-visible, body.ka select:focus-visible, body.ka textarea:focus-visible {
  outline: 2px solid var(--a-brand-accent); outline-offset: 2px;
}
.ka-container { box-sizing: border-box; width: 100%; max-width: 1440px; margin: 0 auto; padding-left: var(--a-gutter); padding-right: var(--a-gutter); }
/* [hidden] always wins over component display rules (optional blocks stay hidden until they have data). */
body.ka [hidden] { display: none !important; }
.ka-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ka-skip { position: absolute; left: -999px; top: 8px; z-index: 10; background: var(--a-brand-accent); color: var(--a-text-on-accent) !important; padding: 8px 16px; border-radius: var(--a-radius-md); font-weight: 600; }
.ka-skip:focus { left: 8px; }

.ka-overline { margin: 0; font: 700 11px/1.4 var(--a-sans); letter-spacing: .08em; color: var(--a-brand-accent); }
body.ka .ka-h2 { margin: 0; font: 700 24px/1.3 var(--a-sans); letter-spacing: -0.005em; color: var(--a-text-primary); }
body.ka .ka-h3 { margin: 0; font: 600 18px/1.4 var(--a-sans); color: var(--a-text-primary); }
.ka-body { font: 400 14px/1.55 var(--a-sans); color: var(--a-text-secondary); }
.ka-small { font: 500 12px/1.5 var(--a-sans); color: var(--a-text-secondary); }
body.ka .ka-link { font: 600 14px/1.4 var(--a-sans); color: var(--a-brand-primary); }
.ka-empty { margin: 0; padding: 24px; border: 1px dashed var(--a-border); border-radius: var(--a-radius-lg); background: var(--a-surface-card); color: var(--a-text-secondary); }

/* ---------- Buttons ---------- */
body.ka .ka-btn, body.ka .ep_form_action_button, body.ka .ep_form_internal_button, body.ka input[type="submit"], body.ka button.ep_form_action_button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  box-sizing: border-box; padding: 12px 24px; border: 1px solid transparent; border-radius: var(--a-radius-md);
  font: 600 14px/1.4 var(--a-sans); text-decoration: none; cursor: pointer; white-space: nowrap;
  background: var(--a-brand-primary); color: var(--a-text-on-brand) !important;
}
/* EPrints core caps buttons at 145-200px with ad-hoc margins; buttons size to their label (or their container) instead. */
body.ka .ep_form_action_button, body.ka .ep_form_internal_button, body.ka .ep_tm_searchbarbutton { min-width: 0; max-width: none; margin: 0; white-space: nowrap; }
body.ka .ka-btn:hover, body.ka .ep_form_action_button:hover, body.ka input[type="submit"]:hover { background: #0d3a74; }
body.ka .ka-btn--ghost { background: transparent; color: var(--a-brand-primary) !important; padding-left: 0; padding-right: 0; }
body.ka .ka-btn--ghost:hover { background: transparent; text-decoration: underline; }
body.ka .ka-btn--secondary, body.ka .ep_form_internal_button {
  background: var(--a-surface-card); color: var(--a-text-primary) !important; border-color: var(--a-border);
}
body.ka .ka-btn--secondary:hover, body.ka .ep_form_internal_button:hover { background: var(--a-surface-subtle); }

/* ---------- Header ---------- */
.ka-utility { background: var(--a-surface-inverse); color: var(--a-text-on-brand); font: 500 12px/1.5 var(--a-sans); }
.ka-utility .ka-container { display: flex; justify-content: space-between; gap: 16px; padding-top: 8px; padding-bottom: 8px; }
.ka-utility__links { display: flex; gap: 12px; }
body.ka .ka-utility a { color: var(--a-text-on-brand); text-decoration: none; }
body.ka .ka-utility a:hover { text-decoration: underline; }

.ka-header { background: var(--a-surface-card); border-bottom: 1px solid var(--a-border); }
.ka-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-top: 16px; padding-bottom: 16px; }

body.ka .ka-logo { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; flex-shrink: 0; }
.ka-logo__mark { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: var(--a-radius-md); background: var(--a-brand-primary); }
.ka-logo__word { display: flex; flex-direction: column; line-height: 1.4; white-space: nowrap; }
.ka-logo__over { font: 700 11px/1.4 var(--a-sans); letter-spacing: .08em; color: var(--a-text-secondary); }
.ka-logo__name { font: 600 18px/1.4 var(--a-sans); color: var(--a-text-primary); }
.ka-logo--inverse .ka-logo__over { color: var(--a-brand-accent); }
.ka-logo--inverse .ka-logo__name { color: var(--a-text-on-brand); }

.ka-menu { flex: 1; display: flex; justify-content: flex-end; }
.ka-menu__toggle { display: none; }
.ka-menu__panel { flex: 1; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.ka-nav { display: flex; gap: 4px; margin: 0 auto; padding: 0; list-style: none; }
body.ka .ka-nav a { display: block; padding: 8px 12px; border-radius: var(--a-radius-sm); font: 600 14px/1.4 var(--a-sans); color: var(--a-text-primary); text-decoration: none; white-space: nowrap; }
body.ka .ka-nav a:hover { background: var(--a-surface-page); }
body.ka .ka-nav a.is-active { background: var(--a-surface-subtle); color: var(--a-brand-primary); }

.ka-actions { display: flex; align-items: center; gap: 8px; }
/* EPrints login_status toolbar: logged-out shows a single Login link, styled as the secondary button. */
.ka-tools ul, .ka-tools .ep_tm_key_tools { display: flex; flex-wrap: wrap; gap: 4px; margin: 0; padding: 0; list-style: none; }
.ka-tools li { margin: 0; padding: 0; border: 0; background: none; }
.ka-tools li::before { content: none !important; }
body.ka .ka-tools a {
  display: inline-flex; padding: 12px 24px; border: 1px solid var(--a-border); border-radius: var(--a-radius-md);
  background: var(--a-surface-card); color: var(--a-text-primary) !important; font: 600 14px/1.4 var(--a-sans); text-decoration: none; white-space: nowrap;
}
body.ka .ka-tools a:hover { background: var(--a-surface-subtle); }
body.ka .ka-tools li + li a { padding: 12px; border-color: transparent; }

/* ---------- Page heading band ---------- */
.ka-pagehead { background: var(--a-brand-primary); color: var(--a-text-on-brand); }
.ka-pagehead .ka-container { padding-top: 48px; padding-bottom: 48px; }
body.ka h1.ep_tm_pagetitle { margin: 0; padding: 0; border: 0; background: none; text-align: left; font: 600 36px/1.25 var(--a-serif); color: var(--a-text-on-brand); }
/* Item pages use the light band from the "Detail Item" frame. */
body.ka:has(.ep_summary_content) .ka-pagehead { background: var(--a-surface-subtle); }
body.ka:has(.ep_summary_content) h1.ep_tm_pagetitle { color: var(--a-text-primary); }
/* Homepage brings its own hero. */
body.ka:has(.ka-home) .ka-pagehead { display: none; }

body.ka .ep_tm_page_content { width: auto; max-width: 1440px; margin: 0 auto; padding-top: 40px; padding-bottom: 64px; min-height: 0; background: none; border: 0; }
body.ka:has(.ka-home) .ep_tm_page_content { max-width: none; padding: 0; }

/* ---------- Footer ---------- */
.ka-footer { background: var(--a-surface-inverse); color: var(--a-text-on-brand); }
.ka-footer .ka-container { display: flex; flex-direction: column; gap: 32px; padding-top: 48px; padding-bottom: 48px; }
.ka-footer__top { display: flex; gap: 48px; align-items: flex-start; }
.ka-footer__top > .ka-logo { flex: 1; }
.ka-footer__col { display: flex; flex-direction: column; gap: 8px; width: 220px; font: 400 14px/1.55 var(--a-sans); }
body.ka .ka-footer__col a, .ka-footer__col span { color: var(--a-text-on-brand); opacity: .85; text-decoration: none; }
body.ka .ka-footer__col a:hover { opacity: 1; text-decoration: underline; }
.ka-footer__copy { margin: 0; font: 500 12px/1.5 var(--a-sans); opacity: .6; }
body.ka .ka-footer__copy a { color: inherit !important; }

/* ---------- Homepage ---------- */
.ka-hero { background: var(--a-brand-primary); color: var(--a-text-on-brand); }
.ka-hero .ka-container { display: flex; flex-direction: column; align-items: flex-start; gap: 24px; padding-top: 80px; padding-bottom: 80px; }
.ka-hero .ka-overline { white-space: pre; }
body.ka .ka-hero__title { margin: 0; max-width: 880px; font: 800 48px/1.2 var(--a-sans); letter-spacing: -0.02em; color: var(--a-text-on-brand); }
.ka-hero__lead { margin: 0; max-width: 720px; font: 400 16px/1.6 var(--a-sans); opacity: .8; }

.ka-search { transition: border-color 150ms ease, box-shadow 150ms ease; box-sizing: border-box; display: flex; align-items: center; gap: 12px; width: 100%; max-width: 880px; padding: 8px 8px 8px 16px; border: 1px solid var(--a-border); border-radius: var(--a-radius-lg); background: var(--a-surface-card); }
.ka-search img { flex-shrink: 0; }
.ka-search input[type="text"] { flex: 1; min-width: 0; padding: 0; border: 0; background: none; font: 400 16px/1.6 var(--a-sans); color: var(--a-text-primary); box-shadow: none; }
.ka-search input[type="text"]::placeholder { color: var(--a-text-secondary); }
.ka-search input[type="text"]:focus { outline: none; }
.ka-search:focus-within { border-color: var(--a-brand-accent); box-shadow: 0 0 0 3px rgba(242, 183, 5, .35); }

.ka-hero__links { display: flex; flex-wrap: wrap; gap: 8px 24px; font-size: 14px; }
body.ka .ka-hero__adv { font-weight: 600; color: var(--a-brand-accent) !important; text-decoration: none; }
body.ka .ka-hero__adv:hover { text-decoration: underline; }
.ka-hero__tip { opacity: .7; }

.ka-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ka-chips__label { font-size: 14px; opacity: .8; }
body.ka .ka-chip { display: inline-flex; padding: 8px 16px; border-radius: 999px; background: var(--a-surface-subtle); color: var(--a-text-primary) !important; font: 600 14px/1.4 var(--a-sans); text-decoration: none; white-space: nowrap; }
body.ka .ka-chip:hover { background: #d8e2ef; }

.ka-section { display: flex; flex-direction: column; gap: 24px; padding-top: 32px; padding-bottom: 32px; }
.ka-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.ka-grid { display: grid; gap: 24px; }
.ka-grid--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.ka-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.ka-card { box-sizing: border-box; border: 1px solid var(--a-border); border-radius: var(--a-radius-lg); background: var(--a-surface-card); text-decoration: none; color: inherit; }
body.ka a.ka-card { color: inherit; text-decoration: none; }

.ka-stats { flex-direction: row; }
.ka-stat { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; padding: 24px; border: 1px solid var(--a-border); border-radius: var(--a-radius-lg); background: var(--a-surface-card); }
.ka-stat p { margin: 0; }
.ka-stat__value { font: 700 32px/1.25 var(--a-sans); letter-spacing: -0.01em; color: var(--a-brand-primary); }
.ka-stat__label { font: 400 14px/1.55 var(--a-sans); color: var(--a-text-secondary); }

/* "Akses cepat": EPrints homepage_menu() markup, styled as Quick Link Cards.
   Options come from $c->{homepage}->{menu}; ids without an icon below get the info icon. */
body.ka #ep-homepage-menu ul.ep_block_menu { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 24px; margin: 0; padding: 0; list-style: none; border: 0; background: none; }
body.ka #ep-homepage-menu li {
  position: relative; display: flex; flex-direction: column; gap: 12px; margin: 0; padding: 24px;
  border: 1px solid var(--a-border); border-radius: var(--a-radius-lg); background: var(--a-surface-card);
}
body.ka #ep-homepage-menu li::before {
  content: ""; width: 48px; height: 48px; border-radius: var(--a-radius-md);
  background: var(--a-surface-subtle) url(../../images/kemenhub/info.svg) center / 24px no-repeat;
}
body.ka #ep-hp-menu-opt-latest::before { background-image: url(../../images/kemenhub/clock.svg); }
body.ka #ep-hp-menu-opt-search::before { background-image: url(../../images/kemenhub/search.svg); }
body.ka #ep-hp-menu-opt-browse::before { background-image: url(../../images/kemenhub/folder.svg); }
body.ka #ep-hp-menu-opt-policies::before { background-image: url(../../images/kemenhub/shield.svg); }
body.ka #ep-homepage-menu p { margin: 0; padding: 0; border: 0; }
body.ka #ep-homepage-menu .ep_block_menu_option_title a { font: 600 18px/1.4 var(--a-sans); color: var(--a-text-primary); text-decoration: none; }
/* Whole card is the link's hit area. */
body.ka #ep-homepage-menu .ep_block_menu_option_title a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
body.ka #ep-homepage-menu .ep_block_menu_option_desc { flex: 1; font: 400 14px/1.55 var(--a-sans); color: var(--a-text-secondary); }
body.ka #ep-homepage-menu li::after { content: "Buka →"; font: 600 14px/1.4 var(--a-sans); color: var(--a-brand-primary); }
body.ka #ep-homepage-menu li:focus-within { outline: 2px solid var(--a-brand-accent); outline-offset: 2px; }
body.ka #ep-homepage-menu a:focus-visible { outline: none; }

.ka-feeds { margin-left: 8px; }
.ka-feeds a { margin-right: 8px; }

/* Quick search in the page heading band (replaces the EPrints header search bar). */
.ka-pagehead__inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.ka-quicksearch { display: flex; flex: 0 1 360px; gap: 8px; }
body.ka .ka-quicksearch input { flex: 1; min-width: 0; border-color: transparent; }
body.ka .ka-quicksearch button { padding: 10px 16px; border: 0; border-radius: var(--a-radius-md); background: var(--a-brand-accent); color: var(--a-text-on-accent); font: 600 14px/1.4 var(--a-sans); cursor: pointer; }
body.ka:has(.ep_summary_content) .ka-quicksearch input { border-color: var(--a-border); }

/* Language switcher (only rendered by EPrints when more than one language is configured). */
.ka-languages:empty { display: none; }
.ka-languages ul { display: flex; gap: 2px; margin: 0; padding: 2px; list-style: none; border: 1px solid var(--a-border); border-radius: 999px; }
.ka-languages a, .ka-languages span { display: inline-block; padding: 4px 12px; border-radius: 999px; font: 600 14px/1.4 var(--a-sans); text-decoration: none; }

.ka-series { display: flex; flex-direction: column; overflow: hidden; }
.ka-series__cover { display: flex; flex-direction: column; gap: 8px; padding: 24px; background: var(--a-brand-primary); }
.ka-series__name { font: 600 18px/1.4 var(--a-sans); color: var(--a-text-on-brand); }
.ka-series__body { display: flex; flex-direction: column; gap: 8px; padding: 16px 24px; }

.ka-content { flex-direction: row; align-items: flex-start; gap: 32px; padding-top: 48px; padding-bottom: 48px; }
.ka-content__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.ka-content__main > .ka-small { margin: 0; }
.ka-content__side { flex: 0 0 400px; display: flex; flex-direction: column; gap: 24px; }
.ka-doclist { display: flex; flex-direction: column; gap: 16px; }

/* Doc Card */
.ka-doc { display: flex; flex-direction: column; gap: 12px; padding: 24px; }
.ka-doc__top, .ka-doc__bottom { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.ka-doc__top { gap: 8px; }
.ka-doc__title { font: 600 18px/1.4 var(--a-serif); color: var(--a-text-primary); }
.ka-doc__meta { flex: 1 0 240px; }
.ka-badge { display: inline-flex; padding: 4px 8px; border-radius: var(--a-radius-sm); background: var(--a-surface-subtle); color: var(--a-brand-primary); font: 700 11px/1.4 var(--a-sans); letter-spacing: .08em; }
.ka-badge--oa { background: var(--a-brand-accent); color: var(--a-text-on-accent); }

/* Sidebar */
.ka-browse { display: flex; flex-direction: column; gap: 4px; padding: 24px; }
.ka-browse__mode { display: flex; flex-direction: column; gap: 8px; padding: 12px 4px; border-bottom: 1px solid var(--a-border); }
.ka-browse__mode .ka-body { color: var(--a-text-primary); }
body.ka .ka-browse__row { display: flex; align-items: center; gap: 8px; padding: 12px 4px; border-bottom: 1px solid var(--a-border); color: var(--a-text-primary) !important; text-decoration: none; font-size: 14px; }
body.ka .ka-browse__row .ka-small { flex: 1; text-align: right; }
body.ka .ka-browse__row:hover { background: var(--a-surface-page); }
.ka-oai { display: flex; flex-direction: column; gap: 8px; padding: 24px; border-radius: var(--a-radius-lg); background: var(--a-surface-subtle); }
.ka-oai p { margin: 0; }
.ka-oai__title { display: flex; align-items: center; gap: 8px; font: 600 18px/1.4 var(--a-sans); }
.ka-oai__url { display: block; padding: 8px 12px; border: 1px solid var(--a-border); border-radius: var(--a-radius-sm); background: var(--a-surface-card); color: var(--a-brand-primary); font: 500 12px/1.5 var(--a-sans); word-break: break-all; user-select: all; }

/* ---------- EPrints core components ---------- */
body.ka .ep_tm_page_content h2:not([class*="ka-"]) { font: 700 24px/1.3 var(--a-sans); color: var(--a-text-primary); }
body.ka .ep_tm_page_content h3:not([class*="ka-"]) { font: 600 18px/1.4 var(--a-sans); color: var(--a-text-primary); }

body.ka input[type="text"], body.ka input[type="password"], body.ka input[type="email"], body.ka input[type="search"], body.ka select, body.ka textarea, body.ka .ep_form_text {
  box-sizing: border-box; max-width: 100%; padding: 10px 12px; border: 1px solid var(--a-border); border-radius: var(--a-radius-md);
  background: var(--a-surface-card); color: var(--a-text-primary); font: 400 14px/1.55 var(--a-sans);
}
body.ka .ka-search input[type="text"] { border: 0; padding: 0; }

/* Boxes, toolboxes, messages */
body.ka .ep_toolbox_content, body.ka .ep_block, body.ka .ep_summary_box, body.ka .ep_sr_component, body.ka .ep_upload_doc, body.ka .ep_form_field_input {
  border-color: var(--a-border); border-radius: var(--a-radius-lg);
}
body.ka .ep_toolbox_content, body.ka .ep_summary_box_body { background: var(--a-surface-card); }

/* Search & listing results: each row becomes a Doc Card */
body.ka .ep_search_controls, body.ka .ep_search_controls_bottom, body.ka .ep_view_page .ep_view_menu {
  border: 1px solid var(--a-border); border-radius: var(--a-radius-lg); background: var(--a-surface-card); padding: 12px 16px;
}
body.ka table.ep_paginate_list, body.ka .ep_paginate_list { width: 100%; border-collapse: separate; border-spacing: 0 16px; }
body.ka tr.ep_search_result > td { padding: 20px 24px; background: var(--a-surface-card); border-top: 1px solid var(--a-border); border-bottom: 1px solid var(--a-border); vertical-align: top; }
body.ka tr.ep_search_result > td:first-child { border-left: 1px solid var(--a-border); border-radius: var(--a-radius-lg) 0 0 var(--a-radius-lg); }
body.ka tr.ep_search_result > td:last-child { border-right: 1px solid var(--a-border); border-radius: 0 var(--a-radius-lg) var(--a-radius-lg) 0; }
body.ka tr.ep_search_result > td:only-child { border-radius: var(--a-radius-lg); }
body.ka .ep_search_result a, body.ka .ep_view_page p > a:first-of-type, body.ka .ep_latest_result a { font-family: var(--a-serif); font-weight: 600; }
body.ka .ep_view_page p, body.ka .ep_latest_result { padding: 16px 20px; margin: 0 0 12px; border: 1px solid var(--a-border); border-radius: var(--a-radius-lg); background: var(--a-surface-card); }
body.ka .ep_view_page .ep_view_timestamp, body.ka .ep_view_page .ep_view_cols p, body.ka .ep_view_page .ep_view_menu p { padding: 0; border: 0; background: none; }
body.ka .ep_view_page h2 { margin-top: 32px; }
body.ka .ep_view_cols ul, body.ka .ep_view_menu ul { list-style: none; padding: 0; }
body.ka .ep_view_cols li, body.ka .ep_view_menu li { padding: 10px 4px; border-bottom: 1px solid var(--a-border); }

/* Pagination */
body.ka .ep_search_paginate, body.ka .ep_paginate_bar { font-weight: 600; }
body.ka .ep_search_paginate a, body.ka .ep_paginate_bar a { display: inline-block; min-width: 20px; padding: 6px 10px; border: 1px solid var(--a-border); border-radius: var(--a-radius-md); background: var(--a-surface-card); text-align: center; text-decoration: none; }

/* Forms (advanced search, login, register, deposit) */
body.ka .ep_form_field_name, body.ka th.ep_multi_heading { font: 600 14px/1.4 var(--a-sans); color: var(--a-text-primary); }
body.ka .ep_form_field_help, body.ka .ep_multi_help { color: var(--a-text-secondary); }
body.ka table.ep_search_fields, body.ka table.ep_multi, body.ka .ep_form_field_input { border-color: var(--a-border); }
body.ka table.ep_multi th, body.ka table.ep_multi td { padding: 12px; border-bottom: 1px solid var(--a-border); }
body.ka .ep_form_button_bar { margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--a-border); }

/* Tabs (user area, deposit workflow) */
body.ka .ep_tab_bar { border-bottom: 1px solid var(--a-border); }
body.ka .ep_tab_bar li a { border: 0; border-bottom: 3px solid transparent; background: none; font: 600 14px/1.4 var(--a-sans); color: var(--a-text-secondary); padding: 10px 16px; }
body.ka .ep_tab_bar li.ep_tab_selected a { border-bottom-color: var(--a-brand-primary); color: var(--a-brand-primary); }
body.ka .ep_tab_panel { border: 1px solid var(--a-border); border-top: 0; border-radius: 0 0 var(--a-radius-lg) var(--a-radius-lg); background: var(--a-surface-card); padding: 24px; }

/* Item (abstract) page */
body.ka .ep_summary_content_main h2 { font: 600 20px/1.3 var(--a-sans); }
body.ka .ep_summary_content_main > p.ep_block, body.ka .ep_summary_content .ep_block { padding: 24px; background: var(--a-surface-card); border: 1px solid var(--a-border); border-radius: var(--a-radius-lg); }
body.ka .ep_summary_content table { border-collapse: collapse; width: 100%; }
body.ka .ep_summary_content table th, body.ka .ep_summary_content table td { padding: 12px 8px; border-bottom: 1px solid var(--a-border); text-align: left; vertical-align: top; }
body.ka .ep_summary_content table th { width: 220px; font-weight: 500; color: var(--a-text-secondary); }
body.ka .ep_summary_page_actions { display: flex; flex-wrap: wrap; gap: 8px; }
body.ka .ep_document_citation, body.ka .ep_summary_content .ep_document_link { font-weight: 600; }

/* ---------- Responsive ---------- */
@media (max-width: 1200px) {
  :root { --a-gutter: 32px; }
  body.ka .ka-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.ka .ka-content__side { flex-basis: 340px; }
}

@media (max-width: 1024px) {
  body.ka .ka-menu__toggle {
    display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px;
    border: 0; border-radius: var(--a-radius-md); background: var(--a-brand-primary); cursor: pointer;
  }
  body.ka .ka-menu__bars, body.ka .ka-menu__bars::before, body.ka .ka-menu__bars::after { display: block; width: 20px; height: 2px; background: #fff; border-radius: 2px; position: relative; }
  body.ka .ka-menu__bars::before, body.ka .ka-menu__bars::after { content: ""; position: absolute; left: 0; }
  body.ka .ka-menu__bars::before { top: -6px; }
  body.ka .ka-menu__bars::after { top: 6px; }
  body.ka .ka-menu { position: static; flex: 0 0 auto; }
  body.ka .ka-header { position: relative; }
  body.ka .ka-menu__panel {
    position: absolute; left: 0; right: 0; top: 100%; z-index: 20;
    flex-direction: column; align-items: stretch; gap: 16px; padding: 16px var(--a-gutter) 24px;
    background: var(--a-surface-card); border-bottom: 1px solid var(--a-border); box-shadow: 0 12px 24px rgba(6, 29, 59, .12);
  }
  /* Closed state stays in the DOM so it can transition; visibility removes it from the tab order. */
  .ka-js body.ka .ka-menu__panel { visibility: hidden; opacity: 0; transform: translateY(-8px); pointer-events: none; }
  .ka-js body.ka .ka-menu--open .ka-menu__panel { visibility: visible; opacity: 1; transform: none; pointer-events: auto; }
  body.ka .ka-nav { flex-direction: column; margin: 0; }
  body.ka .ka-nav a { padding: 12px; }
  body.ka .ka-actions { flex-direction: column; align-items: stretch; }
  body.ka .ka-actions .ka-btn { justify-content: center; }
  body.ka .ka-tools ul { flex-wrap: nowrap; }
  body.ka .ka-tools li { flex: 1; }
  body.ka .ka-tools a { width: 100%; box-sizing: border-box; justify-content: center; }
}

@media (max-width: 860px) {
  body.ka .ka-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
  body.ka .ka-content { flex-direction: column; }
  body.ka .ka-content__side { flex-basis: auto; width: 100%; }
  body.ka .ka-footer__top { flex-wrap: wrap; gap: 32px; }
  body.ka .ka-footer__top > .ka-logo { flex-basis: 100%; }
  body.ka .ka-pagehead__inner { flex-direction: column; align-items: stretch; }
  body.ka .ka-quicksearch { flex-basis: auto; }
}

@media (max-width: 640px) {
  :root { --a-gutter: 16px; }
  body.ka .ka-utility__links { display: none; }
  body.ka .ka-logo__mark { width: 40px; height: 40px; }
  body.ka .ka-logo__name { font-size: 16px; }
  body.ka .ka-hero .ka-container { padding-top: 40px; padding-bottom: 40px; gap: 16px; }
  body.ka .ka-hero__title { font-size: 32px; line-height: 1.2; }
  body.ka .ka-hero__tip { display: none; }
  body.ka .ka-search .ka-btn { padding: 10px 16px; }
  body.ka .ka-grid--4 { grid-template-columns: minmax(0, 1fr); }
  /* Quick links collapse to a list, as in the "A · Mobile" frame. */
  body.ka #ep-homepage-menu ul.ep_block_menu { grid-template-columns: minmax(0, 1fr); gap: 0; border: 1px solid var(--a-border); border-radius: var(--a-radius-lg); background: var(--a-surface-card); overflow: hidden; }
  body.ka #ep-homepage-menu li { flex-direction: row; align-items: center; gap: 12px; padding: 14px 16px; border: 0; border-radius: 0; border-bottom: 1px solid var(--a-border); }
  body.ka #ep-homepage-menu li:last-child { border-bottom: 0; }
  body.ka #ep-homepage-menu li::before { width: 24px; height: 24px; background-color: transparent; background-size: 20px; }
  body.ka #ep-homepage-menu .ep_block_menu_option_title { flex: 1; }
  body.ka #ep-homepage-menu .ep_block_menu_option_title a { font-size: 14px; }
  body.ka #ep-homepage-menu .ep_block_menu_option_desc { display: none; }
  body.ka #ep-homepage-menu li::after { content: "›"; font-size: 20px; color: var(--a-text-secondary); }
  body.ka .ka-stat { padding: 16px; }
  body.ka .ka-stat__value { font-size: 28px; }
  body.ka .ka-pagehead .ka-container { padding-top: 32px; padding-bottom: 32px; }
  body.ka h1.ep_tm_pagetitle { font-size: 26px; }
  body.ka .ka-footer__col { width: 100%; }
  body.ka .ep_summary_content table th { width: auto; }
  /* EPrints div-tables (advanced search, deposit, profile forms) stack into one column. */
  body.ka .ep_table_row, body.ka .ep_table_cell, body.ka .ep_search_fields { display: block; width: auto !important; }
  body.ka .ep_table_cell { padding: 4px 0; text-align: left; }
  body.ka .ep_table_row { padding: 12px 0; border-bottom: 1px solid var(--a-border); }
  body.ka .ep_form_text, body.ka .ep_tm_page_content input[type="text"], body.ka .ep_tm_page_content select, body.ka .ep_tm_page_content textarea { width: 100% !important; }
  body.ka .ep_tm_page_content table { display: block; overflow-x: auto; }
}

/* ---------- Motion ---------- */
:root {
  --a-ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --a-dur-fast: 150ms;
  --a-dur: 200ms;
}

/* Feedback: hover/press. Colour, shadow and transform only, never layout properties. */
body.ka a.ka-card, body.ka #ep-homepage-menu li, body.ka .ka-stat, body.ka .ka-oai {
  transition: border-color var(--a-dur-fast) ease, box-shadow var(--a-dur) ease, transform var(--a-dur) var(--a-ease-out);
}
body.ka .ka-btn, body.ka .ep_form_action_button, body.ka .ep_form_internal_button, body.ka input[type="submit"],
body.ka .ka-chip, body.ka .ka-nav a, body.ka .ka-tools a, body.ka .ka-quicksearch button, body.ka .ka-browse__row {
  transition: background-color var(--a-dur-fast) ease, border-color var(--a-dur-fast) ease, color var(--a-dur-fast) ease, transform 120ms var(--a-ease-out);
}
body.ka .ka-btn:active, body.ka .ep_form_action_button:active, body.ka .ep_form_internal_button:active,
body.ka input[type="submit"]:active, body.ka .ka-chip:active, body.ka .ka-tools a:active, body.ka .ka-quicksearch button:active { transform: scale(0.97); }
body.ka .ka-search, body.ka input[type="text"], body.ka input[type="search"], body.ka input[type="password"], body.ka select, body.ka textarea {
  transition: border-color var(--a-dur-fast) ease, box-shadow var(--a-dur-fast) ease;
}
body.ka .ka-browse__row img { transition: transform var(--a-dur) var(--a-ease-out); }

@media (hover: hover) and (pointer: fine) {
  body.ka a.ka-card:hover, body.ka #ep-homepage-menu li:hover { transform: translateY(-2px); border-color: var(--a-brand-primary); box-shadow: 0 8px 24px rgba(10, 46, 92, .10); }
  body.ka .ka-browse__row:hover img { transform: translateX(3px); }
}

/* State: mobile menu panel and hamburger. Transitions (not keyframes) so rapid toggling retargets. */
@media (max-width: 1024px) {
  .ka-js body.ka .ka-menu__panel {
    transition: opacity var(--a-dur) var(--a-ease-out), transform var(--a-dur) var(--a-ease-out), visibility 0s linear var(--a-dur);
  }
  .ka-js body.ka .ka-menu--open .ka-menu__panel {
    transition: opacity var(--a-dur) var(--a-ease-out), transform var(--a-dur) var(--a-ease-out), visibility 0s;
  }
  body.ka .ka-menu__bars, body.ka .ka-menu__bars::before, body.ka .ka-menu__bars::after { transition: transform var(--a-dur) var(--a-ease-out), background-color var(--a-dur-fast) ease; }
  body.ka .ka-menu--open .ka-menu__bars { background-color: transparent; }
  body.ka .ka-menu--open .ka-menu__bars::before { transform: translateY(6px) rotate(45deg); }
  body.ka .ka-menu--open .ka-menu__bars::after { transform: translateY(-6px) rotate(-45deg); }
}

/* Preventing a jarring change: homepage blocks fade up as they scroll in (classes set by theme.js). */
.ka-reveal { opacity: 0; transform: translateY(12px); }
.ka-reveal.is-in {
  opacity: 1; transform: none;
  transition: opacity 400ms var(--a-ease-out) var(--ka-delay, 0ms), transform 400ms var(--a-ease-out) var(--ka-delay, 0ms), border-color var(--a-dur-fast) ease, box-shadow var(--a-dur) ease;
}
.ka-reveal.is-in:hover { transition-delay: 0ms; }
body.ka .ka-stat__value.is-loaded { animation: ka-fade-in 300ms var(--a-ease-out); }
@keyframes ka-fade-in { from { opacity: 0; } to { opacity: 1; } }

html:has(body.ka) { scroll-behavior: smooth; }

@media (prefers-reduced-motion: reduce) {
  html:has(body.ka) { scroll-behavior: auto; }
  body.ka a.ka-card:hover, body.ka #ep-homepage-menu li:hover, body.ka .ka-btn:active, body.ka input[type="submit"]:active,
  body.ka .ka-chip:active, body.ka .ka-tools a:active, body.ka .ka-browse__row:hover img { transform: none; }
  .ka-js body.ka .ka-menu__panel { transform: none; }
}
