/* Web Awesome is the design system. Legacy form controls stay native so CakePHP
   validation, jQuery serialization and editor autosave retain their contracts. */
:root {
    --wa-font-family-body: 'Roboto', system-ui, sans-serif;
    --wa-font-family-heading: var(--wa-font-family-body);
    --wa-color-brand-fill-loud: #237447;
    --wa-color-brand-on-loud: #ffffff;
    --admin-navigation-width: calc(var(--wa-space-3xl) * 5);
    --admin-header-height: calc(var(--wa-space-3xl) + var(--wa-space-l));
}
html, body.admin-ui { min-height: 100%; height: auto; padding: 0; margin: 0; }
body.admin-ui { background: var(--wa-color-surface-lowered); color: var(--wa-color-text-normal); font: var(--wa-font-size-m)/var(--wa-line-height-normal) var(--wa-font-family-body); }
.admin-ui *, .admin-ui *::before, .admin-ui *::after { box-sizing: border-box; }
.admin-ui :is(h1,h2,h3,h4,h5,h6) { font-family: var(--wa-font-family-heading); line-height: var(--wa-line-height-condensed); font-weight: var(--wa-font-weight-semibold); }
.admin-ui blockquote { font-family: inherit; }
.admin-ui h1 { font-size: var(--wa-font-size-2xl); }
.admin-ui h2 { font-size: var(--wa-font-size-xl); }
.admin-ui h3 { font-size: var(--wa-font-size-l); }
.admin-ui a { text-underline-offset: .2em; }
.admin-ui :focus-visible { outline: var(--wa-focus-ring); outline-offset: var(--wa-focus-ring-offset); }
.admin-ui wa-page { --menu-width: var(--admin-navigation-width); --main-width: 1fr; }
.admin-ui wa-page[view='mobile'], .admin-auth wa-page { --menu-width: auto; }
/* Collapse the desktop column as well as its contents; mobile keeps its drawer. */
.admin-navigation-hidden .admin-ui wa-page[view='desktop'] { --menu-width: auto; }
.admin-navigation-hidden .admin-ui wa-page[view='desktop']::part(navigation) { display: none; }
.admin-ui wa-page::part(header) { padding: 0; background: var(--wa-color-surface-raised); border-bottom: var(--wa-border-width-s) solid var(--wa-color-surface-border); }
.admin-ui wa-page::part(navigation) { padding: 0; }
.admin-ui wa-page::part(menu) { padding: 0; }
/* W3's element reset is unlayered; restore WA utilities on semantic elements. */
.admin-ui :is(.wa-stack,.wa-split,.wa-cluster) { display: flex; }
.admin-ui .wa-grid { display: grid; }
.admin-header { width: 100%; padding: var(--wa-space-m) var(--wa-space-l); }
.admin-desktop-navigation-toggle { display: none; }
.admin-ui wa-page[view='desktop'] .admin-desktop-navigation-toggle { display: inline-flex; }
.admin-brand { color: var(--wa-color-text-normal); text-decoration: none; font-size: var(--wa-font-size-l); font-weight: var(--wa-font-weight-bold); white-space: nowrap; }
.admin-brand-mark { padding: var(--wa-space-s); border-radius: var(--wa-border-radius-m); color: var(--wa-color-brand-on-loud); background: var(--wa-color-brand-fill-loud); letter-spacing: -.04em; }
.admin-brand-caption { display: block; color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-xs); font-weight: var(--wa-font-weight-normal); }
.admin-context { justify-content: flex-end; min-width: 0; max-width: 100%; gap: var(--wa-space-m); }
.admin-context wa-select { width: calc(var(--wa-space-3xl) * 7); max-width: 100%; }
.admin-context #admin-language { width: calc(var(--wa-space-3xl) * 6); }
.admin-context wa-select::part(start), .admin-context wa-button::part(start) { margin-inline-end: var(--wa-space-xs); }
.admin-context wa-select::part(listbox) { max-height: min(60dvh, 24rem); overflow-y: auto; }
.admin-context :is(wa-option,wa-dropdown-item) { min-height: 44px; padding: var(--wa-space-s) var(--wa-space-m); font-size: var(--wa-font-size-m); }
.admin-context wa-dropdown::part(menu) { min-width: 15rem; }
.admin-navigation { padding: var(--wa-space-l) var(--wa-space-s); background: var(--wa-color-surface-raised); min-height: calc(100dvh - var(--admin-header-height)); border-right: var(--wa-border-width-s) solid var(--wa-color-surface-border); }
.admin-navigation .admin-nav-heading { margin: 0; padding: var(--wa-space-2xs) var(--wa-space-s); font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet); text-transform: uppercase; letter-spacing: .09em; text-align: left; }
.admin-nav-link { width: 100%; padding: var(--wa-space-xs) var(--wa-space-s); border: 0; border-radius: var(--wa-border-radius-m); background: transparent; color: var(--wa-color-text-normal); text-decoration: none; text-align: left; font: inherit; font-size: var(--wa-font-size-s); cursor: pointer; }
.admin-nav-link:hover { background: var(--wa-color-neutral-fill-quiet); color: var(--wa-color-text-normal); }
.admin-nav-link[aria-current='page'] { background: var(--wa-color-brand-fill-quiet); color: var(--wa-color-brand-on-quiet); font-weight: var(--wa-font-weight-semibold); box-shadow: inset var(--wa-border-width-l) 0 var(--wa-color-brand-fill-loud); }
.admin-nav-link wa-icon { flex: 0 0 auto; font-size: var(--wa-font-size-m); }
.admin-nav-group { border: 0; background: transparent; padding: 0; }
.admin-nav-group summary { padding: var(--wa-space-xs) var(--wa-space-s); cursor: pointer; font-weight: var(--wa-font-weight-semibold); font-size: var(--wa-font-size-s); }
.admin-nav-group[open] summary { margin-bottom: var(--wa-space-xs); }
.admin-nav-note { margin: var(--wa-space-xs) var(--wa-space-s); font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet); }
.admin-nav-help { padding-top: var(--wa-space-m); border-top: var(--wa-border-width-s) solid var(--wa-color-surface-border); }
.admin-main.container { min-width: 0; width: 100%; height: auto; padding: var(--wa-space-xl); }
.admin-main #book { position: relative; inset: auto; width: 100%; height: auto; text-align: left; padding: 0 !important; }
.admin-main :is(.w3-content,.analysis-shell,.publication-editor,.publications-page) { width: 100%; max-width: none; margin: 0; }
.admin-main > #book > .w3-content { margin-top: 0 !important; }
.admin-main > #book > .w3-content > .w3-container { padding: 0; }
.admin-main .w3-card-4, .admin-main .w3-card { border: var(--wa-border-width-s) solid var(--wa-color-surface-border); border-radius: var(--wa-border-radius-l); box-shadow: var(--wa-shadow-s); background: var(--wa-color-surface-raised); }
.admin-main .w3-card-4 > .w3-container:first-child { border-radius: var(--wa-border-radius-l) var(--wa-border-radius-l) 0 0; padding: var(--wa-space-m) var(--wa-space-l); }
.admin-main .w3-card-4 > .w3-container:first-child h2 { margin: 0; }
.admin-main .w3-card-4 > .w3-container:first-child:is(.w3-gray,.w3-grey) { background: var(--wa-color-surface-raised) !important; color: var(--wa-color-text-normal) !important; border-bottom: var(--wa-border-width-s) solid var(--wa-color-surface-border); }
.admin-main .w3-card-4 > .w3-container:first-child:is(.w3-gray,.w3-grey):has(+ :is(.admin-table-scroll,table.w3-table,table.w3-table-all)) { border-bottom: 0; }
.admin-ui :is(.w3-white) { background-color: var(--wa-color-surface-raised) !important; color: var(--wa-color-text-normal) !important; }
.admin-ui :is(.w3-light-gray,.w3-light-grey) { background-color: var(--wa-color-surface-lowered) !important; color: var(--wa-color-text-normal) !important; }
/* Tags and badges carry distinct meaning (Q/F/D/T/C/L); retain their W3 colors. */
.admin-ui :is(.w3-blue,.w3-teal,.w3-green):not(.w3-tag,.w3-badge) { background-color: var(--wa-color-brand-fill-loud) !important; color: var(--wa-color-brand-on-loud) !important; }
.admin-ui :is(.w3-gray,.w3-grey,.w3-dark-gray,.w3-dark-grey) { background-color: var(--wa-color-neutral-fill-normal) !important; color: var(--wa-color-neutral-on-normal) !important; }
.admin-ui .w3-red:not(.w3-tag,.w3-badge) { background-color: var(--wa-color-danger-fill-loud) !important; color: var(--wa-color-danger-on-loud) !important; }
.admin-ui :is(.w3-yellow,.w3-orange):not(.w3-tag,.w3-badge) { background-color: var(--wa-color-warning-fill-normal) !important; color: var(--wa-color-warning-on-normal) !important; }
.admin-ui :is(.w3-pale-red,.w3-pale-yellow,.w3-pale-green) { border-radius: var(--wa-border-radius-m); }
.admin-ui :is(.w3-text-blue,.w3-text-teal,.w3-text-green) { color: var(--wa-color-brand-on-quiet) !important; }
.admin-ui .w3-text-red { color: var(--wa-color-danger-on-quiet) !important; }
.admin-ui :is(.w3-button,.w3-btn) { padding: var(--wa-space-xs) var(--wa-space-m); border-radius: var(--wa-border-radius-m); font-weight: var(--wa-font-weight-semibold); text-decoration: none; box-shadow: none; white-space: normal; }
.admin-ui :is(.w3-button,.w3-btn):hover { filter: brightness(.96); }
.admin-ui .review-language-heading > .w3-button { margin-inline-start: var(--wa-space-xs); margin-block: var(--wa-space-2xs); max-width: 100%; }
.admin-ui :is(.w3-tag,.w3-badge) { border-radius: var(--wa-border-radius-s); font-size: var(--wa-font-size-xs); font-weight: var(--wa-font-weight-semibold); }
.admin-ui :is(input:not([type='hidden']):not([type='checkbox']):not([type='radio']):not([type='color']):not([type='file']),select,textarea):not(.gjs-field input):not(.trumbowyg-modal input):not(.trumbowyg-textarea) { max-width: 100%; border: var(--wa-border-width-s) solid var(--wa-color-neutral-border-normal); border-radius: var(--wa-border-radius-m); background-color: var(--wa-color-surface-raised); color: var(--wa-color-text-normal); padding: var(--wa-space-xs) var(--wa-space-s); font: inherit; min-height: calc(var(--wa-space-xl) + var(--wa-space-xs)); }
.admin-ui :is(input[type='checkbox'],input[type='radio']) { accent-color: var(--wa-color-brand-fill-loud); vertical-align: middle; }
/* Keep native controls consistent in old forms and prevent flex shrinking.
   Hidden inputs behind the existing approval switch keep their own layout. */
.admin-ui input:is([type='checkbox'],[type='radio']):not(.onoffswitch-checkbox) {
    width: 20px;
    height: 20px;
    min-width: 20px;
    min-height: 20px;
    max-width: 20px;
    max-height: 20px;
    flex: 0 0 20px;
    padding: 0;
    margin: 0 var(--wa-space-xs) 0 0;
    top: 0;
}
.admin-ui label { font-size: var(--wa-font-size-s); font-weight: var(--wa-font-weight-semibold); }
.admin-ui .input { margin-bottom: var(--wa-space-m); }
.admin-ui .input > label { display: block; margin-bottom: var(--wa-space-2xs); }
.admin-ui .error-message { color: var(--wa-color-danger-on-quiet); font-size: var(--wa-font-size-s); margin-block: var(--wa-space-2xs); }
.admin-ui .searchInput { min-width: 0; font-weight: var(--wa-font-weight-normal); }
.admin-ui th.search { padding: var(--wa-space-xs); text-align: center; }
.admin-table-scroll { max-width: 100%; overflow-x: auto; border-radius: inherit; }
.admin-ui :is(.w3-table,.w3-table-all) { border-collapse: collapse; border: 0; font-size: var(--wa-font-size-s); }
.admin-ui :is(.w3-table,.w3-table-all) th { color: var(--wa-color-text-quiet); background: var(--wa-color-surface-lowered); font-weight: var(--wa-font-weight-semibold); }
.admin-ui :is(.w3-table,.w3-table-all) :is(th,td) { padding: var(--wa-space-s) var(--wa-space-m); border-bottom: var(--wa-border-width-s) solid var(--wa-color-surface-border); }
.admin-ui tr.admin-collapsible-row > td { border-top-style: hidden; border-bottom: 0; }
.admin-ui tr.admin-collapsible-row > td > [style*="max-height:0"] { border-width: 0; }
.admin-ui .w3-table-all tr:nth-child(even) { background: var(--wa-color-surface-raised); }
.admin-ui .w3-table-all tr:nth-child(odd) { background: var(--wa-color-surface-lowered); }
.admin-ui .w3-table-all tr:hover { background: var(--wa-color-brand-fill-quiet); }
.admin-ui .w3-border { border-color: var(--wa-color-surface-border) !important; }
.admin-ui .w3-panel { padding: var(--wa-space-m); border-radius: var(--wa-border-radius-m); }
.admin-editor-toolbar { padding: var(--wa-space-s) var(--wa-space-m); border-bottom: var(--wa-border-width-s) solid var(--wa-color-surface-border); background: var(--wa-color-surface-raised); }
.admin-editor-toolbar #content-actions { display: none; }
.admin-editor-toolbar #book-search-form { flex: 0 1 24rem; min-width: min(100%, 12rem); margin: 0; }
#book-search::part(form-control-label) { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
#book-search-status { color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-s); }
#book-contents mark.book-search-highlight { background: #ffe082; color: #1b1b1b; padding: 0; }
#book-contents .book-search-result { cursor: pointer; }
#book-contents .book-search-result:focus-visible { outline: 3px solid var(--wa-color-brand-fill-loud); outline-offset: -3px; }
.admin-eyebrow { color: var(--wa-color-brand-on-quiet); font-size: var(--wa-font-size-xs); font-weight: var(--wa-font-weight-semibold); text-transform: uppercase; letter-spacing: .08em; }
/* The reader's own content styles and chapter colors belong to the publication.
   Scope editor chrome separately from the rich text itself. */
.admin-main:has(#book-content-column) { padding: 0; }
.admin-main #book:has(#book-content-column) { height: calc(100dvh - var(--admin-header-height) - var(--admin-toolbar-height, 0px)); }
.admin-main #book-content-column { min-width: 0; gap: 0; }
.admin-main #book-nav { background: var(--wa-color-surface-raised); font-size: var(--wa-font-size-s); min-width: 0; }
.admin-main #book-nav-top-buttons { height: auto; background: var(--wa-color-surface-raised); padding: var(--wa-space-s); border-bottom: var(--wa-border-width-s) solid var(--wa-color-surface-border); position: sticky; top: 0; z-index: 1; }
.admin-main #book-nav-main-level { padding: var(--wa-space-xs); }
.admin-main #book-nav-main-level li { border-radius: var(--wa-border-radius-s); margin-block: var(--wa-space-3xs); }
.admin-main #book-nav-main-level a.selected { border-left-color: var(--wa-color-brand-fill-loud); outline: var(--wa-border-width-m) solid var(--wa-color-brand-fill-loud); outline-offset: calc(-1 * var(--wa-border-width-m)); }
.admin-main #book-contents { background: var(--wa-color-surface-lowered); min-width: 0; }
.admin-main #book-edit { background: var(--wa-color-surface-raised) !important; padding: var(--wa-space-m); min-width: 0; }
.admin-main .gutter { background: var(--wa-color-surface-border); }
.admin-main .gutter:hover { background: var(--wa-color-brand-border-normal); }
.admin-empty { padding: var(--wa-space-3xl) var(--wa-space-xl); text-align: center; color: var(--wa-color-text-quiet); }
.admin-empty wa-icon { font-size: var(--wa-font-size-3xl); color: var(--wa-color-brand-on-quiet); }
.admin-empty h2 { color: var(--wa-color-text-normal); margin-block: var(--wa-space-m) var(--wa-space-xs); }
.admin-empty p { max-width: 38ch; margin-inline: auto; font-size: var(--wa-font-size-s); }
.admin-ui wa-dialog { --width: min(90vw, calc(var(--wa-space-3xl) * 14)); }
.admin-ui wa-dialog::part(body) { padding: var(--wa-space-l); }
.admin-ui wa-dialog #pop { position: static; inset: auto; transform: none; display: block; width: 100%; min-width: 0; max-width: none; max-height: none; padding: 0; margin: 0; background: transparent; box-shadow: none; overflow: visible; }
.admin-ui wa-dialog #pop > :is(div,form) { max-width: 100%; }
.admin-ui wa-dialog #pop .w3-card-4 { box-shadow: none; }
.admin-ui .admin-dialog-loading { padding: var(--wa-space-3xl); text-align: center; }
.admin-page-heading { margin-bottom: var(--wa-space-xl); }
.admin-page-heading h1 { margin: var(--wa-space-xs) 0; }
.admin-page-heading p { margin: 0; color: var(--wa-color-text-quiet); }
.publications-grid { --min-column-size: calc(var(--wa-space-3xl) * 6); grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--min-column-size)), 1fr)); }
.admin-ui wa-card.publication-card { min-width: 0; --spacing: var(--wa-space-m); }
.publication-card-cover { display: block; aspect-ratio: 3 / 4; overflow: hidden; background: var(--wa-color-surface-lowered); }
.publication-card-cover img { display: block; width: 100%; height: 100%; object-fit: cover; }
.publication-card-title { font-weight: var(--wa-font-weight-semibold); text-decoration: none; color: var(--wa-color-text-normal); overflow-wrap: anywhere; }
.publication-card-actions { width: 100%; }
.publication-card-actions form { margin: 0; }
.admin-ui .publication-editor { padding: 0; }
.admin-ui .publication-column { border-color: var(--wa-color-surface-border); border-radius: var(--wa-border-radius-m); background: var(--wa-color-surface-lowered); }
.admin-ui .publication-column-heading { background: var(--wa-color-neutral-fill-normal); color: var(--wa-color-neutral-on-normal); }
.admin-ui .publication-details { border-color: var(--wa-color-surface-border); border-radius: var(--wa-border-radius-m); background: var(--wa-color-surface-lowered); }
.admin-ui .publication-intro { color: var(--wa-color-text-quiet); }
.admin-ui .analysis-shell { --analysis-ink: var(--wa-color-text-normal); --analysis-muted: var(--wa-color-text-quiet); --analysis-line: var(--wa-color-surface-border); --analysis-surface: var(--wa-color-surface-raised); --analysis-soft: var(--wa-color-surface-lowered); --analysis-accent: var(--wa-color-brand-fill-loud); --analysis-accent-dark: var(--wa-color-brand-on-quiet); padding: 0; }
.admin-ui .analysis-page-header h1 { font-size: var(--wa-font-size-2xl); }
.admin-ui .analysis-card { border-radius: var(--wa-border-radius-l); box-shadow: var(--wa-shadow-s); }
.admin-auth .admin-main { min-height: 100dvh; padding: var(--wa-space-xl); align-content: center; }
.admin-ui #login-container { width: 100%; max-width: calc(var(--wa-space-3xl) * 7); margin: auto; }
.admin-ui #login-container wa-card { width: 100%; --spacing: var(--wa-space-xl); }
.admin-ui #login-logo { display: block; width: calc(var(--wa-space-3xl) * 2.5); height: auto; margin: 0; }
.admin-ui #login-container .input > label { margin-bottom: var(--wa-space-xs); }
.admin-ui #login-container input { width: 100%; }
.admin-ui .admin-auth-note { color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-s); }
.admin-ui .admin-flash { --width: min(30rem, calc(100vw - (2 * var(--wa-space-m)))); }
.admin-ui[data-controller='LandingEditor'] .actionBar { position: relative; inset: auto; width: 100%; }
.admin-ui[data-controller='LandingEditor'] #gjs { position: relative; inset: auto; height: calc(100dvh - var(--admin-header-height) - var(--wa-space-3xl)) !important; }
@media (max-width: 1100px) {
    .admin-main.container { padding: var(--wa-space-m); }
    .admin-main:has(#book-content-column) { padding: 0; }
    .admin-main #book:has(#book-content-column) { height: auto; }
    .admin-main #book-content-column { flex-direction: column; height: auto; }
    .admin-main #book-content-column > :is(#book-nav,#book-contents,#book-edit) { display: block; width: 100% !important; height: auto; min-height: 0; overflow: auto; }
    .admin-main #book-content-column > #book-nav { max-height: 35dvh; }
    .admin-main #book-content-column > #book-contents { min-height: 40dvh; }
    .admin-main #book-content-column > #book-edit { min-height: 30dvh; }
    .admin-main #book-content-column > .gutter { display: none; }
}
@media (max-width: 640px) {
    .admin-header { padding: var(--wa-space-s); gap: var(--wa-space-s); }
    .admin-context { width: 100%; justify-content: flex-start; }
    .admin-context wa-select, .admin-context #admin-language { flex: 1 1 100%; width: 100%; min-width: 0; }
    .admin-main .publication-columns { grid-template-columns: 1fr; }
    .admin-page-heading { align-items: flex-start; }
    .admin-ui .analysis-page-header { align-items: flex-start; }
}
@media (prefers-reduced-motion: reduce) {
    .admin-ui *, .admin-ui *::before, .admin-ui *::after { animation-duration: 0s !important; transition-duration: 0s !important; scroll-behavior: auto !important; }
}

.admin-ui .trumbowyg-button-pane button { color: var(--wa-color-text-normal); }
.admin-ui .trumbowyg-button-pane button svg { color: inherit; fill: currentColor; }
/* Long navigation labels and native select affordances remain usable. */
.admin-navigation, .admin-nav-group { min-width: 0; }
.admin-nav-link { flex-wrap: nowrap; }
.admin-nav-link span { min-width: 0; overflow-wrap: anywhere; }
.admin-ui :is(.admin-main,wa-dialog) select { appearance: auto; background-image: none; }
.admin-ui[data-controller='LandingEditor'] .gjs-one-bg { background: var(--wa-color-surface-lowered); }
.admin-ui[data-controller='LandingEditor'] .gjs-two-color { color: var(--wa-color-text-normal); }
.admin-ui[data-controller='LandingEditor'] .gjs-three-bg { background: var(--wa-color-brand-fill-quiet); }
.admin-ui[data-controller='LandingEditor'] :is(.gjs-four-color,.gjs-four-color-h:hover) { color: var(--wa-color-brand-on-quiet); }
.admin-ui[data-controller='LandingEditor'] .actionBar { background: var(--wa-color-surface-raised); border-bottom: var(--wa-border-width-s) solid var(--wa-color-surface-border); height: auto; gap: var(--wa-space-s); flex-wrap: wrap; }
.admin-ui[data-controller='LandingEditor'] :is(.saveButton,.publishButton) { background: transparent; padding: 0; }
.admin-ui[data-controller='LandingEditor'] .saveButton.disabled { opacity: .5; }
.admin-ui wa-dialog #pop > .w3-card-4 > .w3-container:first-child:has(> h2:only-child):not(:has(a,button,input,wa-button)) { display: none; }
.admin-nav-group summary { margin-inline: 0; margin-top: 0; }
