/* =========================================================================
   Gemeingut Boden – Publikationsbibliothek (Beaver Builder Module)
   Server-Side-Rendering + Progressive Enhancement.
   Ohne JS: Checkbox-Filter + "Anwenden"-Button (GET-Formular).
   Mit JS  (.is-enhanced): Chip-Dropdowns + AJAX.
   ========================================================================= */

.gbpub-app,
.gbpub-single,
.gbpub-login,
.gbpub-logout {
    --gbpub-accent:     #ce3f77;
    --gbpub-accent-dark:#a82c5e;
    --gbpub-accent-black: #062204;
    --gbpub-ink:        #2E302E;
    --gbpub-text:       #2E302E;
    --gbpub-muted:      #2E302E;
    --gbpub-card-bg:    #F0EBE8;
    --gbpub-panel-bg:   #F0EBE8;
    --gbpub-chip-bg:    #E3D7D0;
    --gbpub-themen-bg:  #F2DD7D;
    --gbpub-region-bg:  #B3C534;
    --gbpub-chip-text:  #2E302E;
    --gbpub-lang-bg:    #e2e8d6;
    --gbpub-lang-text:  #3b5018;
    --gbpub-border:     #AEA6A2;
    --gbpub-border-soft:#F0EBE8;
    --gbpub-radius:     0px;
    --gbpub-cols:       3;
}
.gbpub-app {
    color: var(--gbpub-text);
    font-size: 15px;
    line-height: 1.5;
}
.gbpub-app *, .gbpub-app *::before, .gbpub-app *::after { 
    box-sizing: border-box; 
}
.gbpub-ic { 
    width: 18px; height: 18px; flex: none; 
}

/* ---------- Controls / Formular ---------- */
.gbpub-controls {
    display:flex;
    flex-direction: column;
    background: var(--gbpub-panel-bg);
    border: 0px solid var(--gbpub-border-soft);
    border-radius: var(--gbpub-radius);
    padding: 30px;
    margin-bottom: 3rem;
}
.gbpub-search { 
    position: relative; 
    margin-bottom: 16px; 
}
.gbpub-search .gbpub-ic {
    position: absolute;
    left: 13px; 
    top: 50%; 
    transform: translateY(-50%);
    color: var(--gbpub-muted); pointer-events: none;
}
body .gbpub-search input {
    width: 100%; 
    padding: 12px 14px 12px 40px; 
    font-size: 16px;
    border: 1px solid var(--gbpub-border); border-radius: var(--gbpub-radius);
    background: #fff; color: var(--gbpub-ink);
}
body .gbpub-search input:focus { 
    outline: 0px solid var(--gbpub-accent-black); 
    outline-offset: 0px; 
    border-color: var(--gbpub-accent-black); 
}

.gbpub-filters { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
@media (max-width: 700px) { .gbpub-filters { grid-template-columns: 1fr; } }

.gbpub-submit {
    margin-top: 14px; padding: 10px 18px; font-size: 14px; cursor: pointer;
    background: var(--gbpub-ink); color: #fff; border: 0; border-radius: var(--gbpub-radius);
}
.gbpub-submit:hover { background: #000; }
/* Mit JS wird live gefiltert – der "Anwenden"-Button ist dann überflüssig. */
.gbpub-app.is-enhanced .gbpub-submit { display: none; }

/* ---------- Anmeldung ([gbpub_login] / [gbpub_logout]) ---------- */
/* Schriftart, -grösse und -farbe kommen bewusst vom Theme (font: inherit),
   damit das Formular sich in die übrigen Formulare der Website einfügt.
   Hier stehen nur Raster, Rahmen und die Zustände. */

/* Etwas Luft über der Sprungmarke, falls die Website eine feste Kopfzeile hat. */
.gbpub-login { scroll-margin-top: 2rem; }
.gbpub-login-error {
    margin-bottom: 20px;
    padding: 12px 16px;
    border-left: 4px solid var(--gbpub-accent);
    background: var(--gbpub-panel-bg);
}
.gbpub-login form {
    display: grid;
    grid-template-columns: 1fr 1fr;   /* E-Mail und Passwort nebeneinander */
    gap: 18px 20px;
}
.gbpub-login .login-remember,
.gbpub-login .login-submit { grid-column: 1 / -1; }
.gbpub-login p { margin: 0; }
.gbpub-login label { 
  display: block;
  padding-bottom: 0.3em;
  font-weight: 400;
  margin-left: 0.875rem;
  margin-bottom: 2px;
  font-size: 16px;
}

@media (max-width: 700px) {
    .gbpub-login form { grid-template-columns: 1fr; }
}

body .gbpub-login input[type="text"],
body .gbpub-login input[type="password"] {
    font: inherit;
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--gbpub-border);
    border-radius: var(--gbpub-radius);
    background: #fff;
    color: var(--gbpub-ink);
}
body .gbpub-login input[type="text"]:focus,
body .gbpub-login input[type="password"]:focus {
    outline: 0;
    border-color: var(--gbpub-accent-black);
}

/* "Angemeldet bleiben": wie die Radio-Buttons der Website aufgebaut,
   die Füllung ist ein Quadrat statt eines Punktes. */
.gbpub-login .login-remember label {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
}
body .gbpub-login input[type="checkbox"] {
    appearance: none;
    flex: none;
    width: 20px;
    height: 20px;
    margin: 0;
    border: 1px solid var(--gbpub-border);
    border-radius: 0;
    background: #fff;
    display: inline-grid;
    place-content: center;
    cursor: pointer;
}
body .gbpub-login input[type="checkbox"]::before {
    content: "";
    width: 12px;
    height: 12px;
    background: var(--gbpub-ink);
    transform: scale(0);
}
body .gbpub-login input[type="checkbox"]:checked::before { transform: scale(1); }
body .gbpub-login input[type="checkbox"]:focus-visible {
    outline: 2px solid var(--gbpub-accent);
    outline-offset: 2px;
}

/* Absenden: Textknopf mit Akzentbalken, wie die Formulare der Website.
   Der Balken hängt am umschliessenden <p> und nicht am Knopf selbst –
   <input> ist ein ersetztes Element und rendert keine Pseudoelemente.
   Das <p> schrumpft dafür per justify-self auf Knopfbreite.
   Die Keyframes "butonslide" kommen aus dem Theme-Stylesheet. */
.gbpub-login .login-submit {
    position: relative;
    display: flex;
    justify-self: start;
    overflow: hidden;
    padding-bottom: 5px;
}
.gbpub-login .login-submit::before {
    content: "";
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 5px;
    background: #D42F77;
}
.gbpub-login .login-submit:hover::before {
    animation-duration: 0.65s;
    animation-name: butonslide;
    animation-iteration-count: 1;
    animation-timing-function: cubic-bezier(0.93, 0.01, 0, 0.98);
}
/* Fokusring am Wrapper, sonst würde ihn dessen overflow: hidden beschneiden. */
.gbpub-login .login-submit:focus-within {
    outline: 2px solid var(--gbpub-accent);
    outline-offset: 3px;
}
body .gbpub-login input[type="submit"] {
    font: inherit;
    font-weight: 700;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: none;
    color: var(--gbpub-ink);
    cursor: pointer;
}
body .gbpub-login input[type="submit"]:focus { outline: 0; }
.gbpub-login-link { display:block; margin-top:24px; }
.gbpub-login-link,
.gbpub-logout-link { color: var(--gbpub-accent); }

/* Abmelde-Link: inline, damit er auch in einen Header passt. */
.gbpub-logout {
    display: inline-flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 8px;
}
.gbpub-logout-sep { color: var(--gbpub-muted); }

/* ---------- Multiselect ---------- */
.gbpub-ms-label { display: block; 
    font-size: 16px; 
    color: var(--gbpub-muted); 
    margin-bottom: 5px; 
}
.gbpub-ms { position: relative; }

/* Chip-Leiste: ohne JS verborgen, mit JS sichtbar. */
.gbpub-ms-control { display: none; }
.gbpub-app.is-enhanced .gbpub-ms-control {
    min-height: 42px; border: 1px solid var(--gbpub-border); border-radius: var(--gbpub-radius);
    background: #fff; padding: 5px 30px 5px 7px;
    display: flex; flex-wrap: wrap; gap: 5px; align-items: center; cursor: text; position: relative;
}
.gbpub-app.is-enhanced .gbpub-ms-control.open { 
    outline: 0px solid var(--gbpub-accent-black); 
    outline-offset: 0px; 
    border-color: var(--gbpub-accent-black);
}
.gbpub-ms-caret { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); width: 14px; height: 14px; color: var(--gbpub-muted); pointer-events: none; transition: transform .15s ease; }
.gbpub-ms-control.open .gbpub-ms-caret { transform: translateY(-50%) rotate(180deg); }

.gbpub-ms-chip {
    display: inline-flex; 
    align-items: center; 
    gap: 5px;
    background: var(--gbpub-chip-bg); 
    color: var(--gbpub-chip-text);
    border-radius: 15px; 
    padding: 4px 6px 4px 9px; 
    font-size: 14px; 
    line-height: 1.3; 
    max-width: 100%;
}
.gbpub-ms[data-facet="themenbereiche"] .gbpub-ms-chip { background: var(--gbpub-themen-bg); }
.gbpub-ms[data-facet="regionen"] .gbpub-ms-chip { background: var(--gbpub-region-bg); }
.gbpub-ms-chip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gbpub-ms-chip button { border: 0; background: none; padding: 0; cursor: pointer; color: inherit; opacity: .65; display: inline-flex; }
.gbpub-ms-chip button:hover { opacity: 1; }
.gbpub-ms-chip svg { width: 13px; height: 13px; }
.gbpub-ms-input { border: 0; outline: 0; background: transparent; flex: 1; min-width: 60px; font-size: 14px; padding: 5px 2px; color: var(--gbpub-ink); }
.gbpub-ms-placeholder { 
    color: var(--gbpub-muted); 
    font-size: 15px; 
    padding: 5px 2px; 
    pointer-events: none; 
}
/* Einzelauswahl zeigt den Wert als Text, nicht als Chip. */
.gbpub-ms-value { 
    color: var(--gbpub-ink); 
    font-size: 15px; 
    padding: 5px 2px; 
}

/* Zusammengehoerige Felder (Von/Bis) unter einer gemeinsamen Ueberschrift. */
.gbpub-pair-row { display: flex; align-items: center; gap: 8px; }
.gbpub-pair-row .gbpub-ms { flex: 1; min-width: 0; }
.gbpub-pair-row .gbpub-ms-label { display: none; }
.gbpub-pair-sep { flex: none; color: var(--gbpub-muted); }

/* Dropdown / Optionsliste. Ohne JS dauerhaft offen, mit JS einklappbar. */
.gbpub-ms-dropdown {
    border: 1px solid var(--gbpub-border); border-radius: var(--gbpub-radius);
    background: #fff; max-height: 240px; overflow-y: auto; padding: 5px;
}
.gbpub-app.is-enhanced .gbpub-ms-dropdown {
    position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 50;
    box-shadow: 0 6px 20px rgba(0,0,0,.12); display: none;
}
.gbpub-app.is-enhanced .gbpub-ms-dropdown.open { display: block; }

.gbpub-ms-opt {
    display: flex; 
    align-items: center; 
    justify-content: space-between; 
    gap: 8px;
    padding: 9px 10px; 
    font-size: 15px; 
    font-weight:400;
    border-radius: 5px; 
    cursor: pointer; color: 
    var(--gbpub-text);
}
.gbpub-ms-opt:hover { 
    background: var(--gbpub-chip-bg);
    color: var(--gbpub-ink); 
}
.gbpub-ms[data-facet="themenbereiche"]  .gbpub-ms-opt:hover { 
    background: var(--gbpub-themen-bg);
    color: var(--gbpub-ink); 
}
.gbpub-ms[data-facet="regionen"]  .gbpub-ms-opt:hover { 
    background: var(--gbpub-region-bg); 
    color: var(--gbpub-ink); 
}
.gbpub-ms-opt input { 
    position: absolute; 
    opacity: 0; 
    width: 0; height: 0; 
}
.gbpub-ms-opt-label { 
    display: inline-flex; 
    align-items: 
    center; gap: 7px; 
}
.gbpub-cnt { font-size: 12px; color: var(--gbpub-muted); }
.gbpub-check { 
    width: 15px; 
    height: 15px; 
    color: var(--gbpub-text);
     visibility: hidden; 
     flex: none; 
    }
.gbpub-ms-opt.is-sel .gbpub-check,
.gbpub-ms-opt input:checked ~ .gbpub-ms-opt-label .gbpub-check { visibility: visible; }
.gbpub-ms-opt.is-sel { color: var(--gbpub-ink); font-weight: 500; }
.gbpub-ms-opt input:focus-visible ~ .gbpub-ms-opt-label { outline: 2px solid var(--gbpub-accent); outline-offset: 2px; border-radius: 3px; }
.gbpub-ms-empty { padding: 12px; font-size: 13px; color: var(--gbpub-muted); text-align: center; }

/* ---------- Toolbar ---------- */
.gbpub-toolbar { 
    display: flex; 
    align-items: center; 
    justify-content: space-between; 
    gap: 12px; 
    flex-wrap: wrap;
    margin-bottom: 3rem; 
}
.gbpub-toolbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.gbpub-count { 
    font-size: 16px; 
    font-weight: 600; 
    color: var(--gbpub-ink);
}
.gbpub-reset { 
    font-size: 16px; 
    color: var(--gbpub-accent); 
    background: none; 
    border: 0; 
    cursor: pointer; 
    display: inline-flex; 
    align-items: center; 
    gap: 5px; 
    padding: 0; 
    text-decoration: none; 
    align-self: flex-end;
}
.gbpub-reset[hidden] { display: none; }
.gbpub-controls .gbpub-reset { margin-top: 16px; }
.gbpub-reset:hover { color: var(--gbpub-accent-dark); text-decoration: underline; }
.gbpub-reset .gbpub-ic { width: 14px; height: 14px; }
.gbpub-sort { 
    display: inline-flex; 
    align-items: center; 
    gap: 7px; 
    font-size: 16px; 
    color: var(--gbpub-muted); 
}
.gbpub-sort label { 
    margin-bottom: 0px;
}
.gbpub-sort select {
    padding: 7px 26px 7px 9px; 
    font-size: 16px; 
    color: var(--gbpub-ink);
    border: 1px solid var(--gbpub-border); border-radius: var(--gbpub-radius);
    background-color: #fff; cursor: pointer; appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237a7a6e' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 8px center;
}

/* ---------- Results / Loading ---------- */
.gbpub-results { position: relative; transition: opacity .15s ease; }
.gbpub-results.is-loading { opacity: .5; pointer-events: none; }

/* ---------- Grid ---------- */
.gbpub-grid { display: grid; grid-template-columns: repeat(var(--gbpub-cols), 1fr); gap: 22px; }
@media (max-width: 980px) { .gbpub-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px) { .gbpub-grid { grid-template-columns: 1fr; } }

/* ---------- Card ---------- */
.gbpub-card { 
    background: var(--gbpub-card-bg); 
    border-radius: var(--gbpub-radius); 
    display: flex; 
    flex-direction: column; 
    text-decoration: none;
}
.gbpub-card-link { 
    padding: 22px 22px 20px; 
    display: flex; 
    flex-direction: column; 
    height:100%;
    text-decoration: none;
}
.gbpub-card:hover, .gbpub-card-link:hover, .gbpub-card:focus, .gbpub-card-link:focus { 
    text-decoration: none;
}
.gbpub-card-meta { 
    font-size: 15px; 
    color: var(--gbpub-muted); 
    letter-spacing: .02em; 
    margin-bottom: 16px; 
    display: flex; 
    align-items: center; 
    gap: 8px; 
}
.gbpub-card-meta .gbpub-lang { 
    color: var(--gbpub-text); 
    font-size: 15px; 
}
/* Nur für Vereinsmitglieder sichtbar: Publikation ist nicht öffentlich. */
.gbpub-intern {
    flex: none;
    display: inline-block;
    vertical-align: middle;
    background: var(--gbpub-accent);
    color: #fff;
    font-size: 12px;
    line-height: 1;
    letter-spacing: .04em;
    padding: 5px 9px;
    border-radius: 15px;
}
h4.gbpub-card-title { 
    font-size: 24px;
    font-weight: 700; 
    line-height: 1.3; 
    color: var(--gbpub-ink); 
    margin: 0 0 10px; 
}
.gbpub-card-authors { 
    font-size: 15px; 
    color: var(--gbpub-text);
     margin-bottom: 12px; 
    }
.gbpub-card-authors .gbpub-sep { color: var(--gbpub-muted); margin: 0 6px; }
.gbpub-card-type {
    font-size: 15px;
    color: var(--gbpub-text);
    margin-bottom: 12px;
}
.gbpub-card-abstract { 
    font-size: 16px; 
    line-height: 1.6; 
    color: var(--gbpub-text); 
    margin-bottom: 16px; 
    display: -webkit-box; 
    -webkit-box-orient: vertical; 
    overflow: hidden; 
}
.gbpub-card-cats { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 18px; }
.gbpub-card-cats .gbpub-chip {
    background: var(--gbpub-chip-bg);
    color: var(--gbpub-chip-text);
    font-size: 14px;
    padding: 3px 10px;
    border-radius: 15px;
}
.gbpub-card-cats .gbpub-chip-themen { background: var(--gbpub-themen-bg); }
.gbpub-card-cats .gbpub-chip-region { background: var(--gbpub-region-bg); }
.gbpub-card-foot { 
    margin-top: auto; 
}
.gbpub-pdf-link { 
    position: relative;
    display: inline-flex; 
    align-items: center; 
    gap: 7px; 
    font-size: 16px; 
    font-weight: 700; 
    color: var(--gbpub-ink); 
    text-decoration: none; 
    padding-bottom: 10px;  
}
.gbpub-pdf-link:before {
  content: "";
  position: absolute;
  bottom: 0px;
  width: 100%;
  height: 5px;
  background: var(--gbpub-accent)
}
.gbpub-card-link:hover .gbpub-pdf-link:before {
  animation-duration: 0.65s;
  animation-name: butonslide;
  animation-iteration-count: 1;
  animation-timing-function: cubic-bezier(0.93, 0.01, 0, 0.98);
}

.gbpub-pdf-link .gbpub-ic { 
    width: 16px; height: 16px; }
.gbpub-pdf-disabled { font-size: 13px; color: var(--gbpub-muted); font-style: italic; }

/* ---------- Empty ---------- */
.gbpub-empty { grid-column: 1 / -1; text-align: center; padding: 48px 16px; color: var(--gbpub-muted); }
.gbpub-empty .gbpub-ic { width: 34px; height: 34px; opacity: .4; margin-bottom: 10px; }
.gbpub-empty-hint { font-size: 13px; margin-top: 4px; }

/* ---------- Pagination ---------- */
.gbpub-pagination { 
    display: flex; 
    justify-content: center; 
    align-items: center; 
    gap: 6px; 
    margin-top: 32px; 
    flex-wrap: wrap; 
}
.gbpub-pagination a, .gbpub-pagination span {
    min-width: 24px; 
    height: 24px; 
    padding: 0 10px; 
    display: inline-flex; 
    align-items: center; 
    justify-content: center;
    font-size: 16px; 
    color: var(--gbpub-text); 
    border-radius: 5px; 
    text-decoration: none; 
    cursor: pointer;
}
.gbpub-pagination a:hover { 
  text-decoration:none;
}
.pagination-forward .gbpub-ic {
transform: rotate(-90deg);
}
.pagination-back .gbpub-ic {
transform: rotate(90deg);
}
.gbpub-pagination .is-current { 
    font-weight: 700; color: 
    var(--gbpub-ink); 
    border-bottom: 2px solid var(--gbpub-accent); 
    border-radius: 0; 
    cursor: default; 
}
.gbpub-pagination .is-disabled { opacity: .35; cursor: default; }
.gbpub-pagination .gbpub-ellipsis { 
    color: var(--gbpub-muted); 
    padding: 0 4px; 
    min-width: 0; 
}
