:root {
  --fosooli-primary: #2563eb;
  --fosooli-primary-dark: #1d4ed8;
  --fosooli-bg: #f4f7fb;
  --fosooli-panel: #ffffff;
  --fosooli-text: #172033;
  --fosooli-muted: #64748b;
  --fosooli-border: #e2e8f0;
  --fosooli-success: #15803d;
  --fosooli-danger: #b91c1c;
  --fosooli-warning: #a16207;
  --fosooli-radius: 16px;
  --fosooli-shadow: 0 12px 32px rgba(15, 23, 42, .08);
}

.fosooli-admin,
.fosooli-public { color: var(--fosooli-text); font-family: inherit; }
.fosooli-admin *, .fosooli-public * { box-sizing: border-box; }

.fosooli-admin {
  display: grid;
  grid-template-columns: 235px minmax(0, 1fr);
  gap: 22px;
  margin: 0 -8px;
  min-height: 650px;
}
.fosooli-admin-nav {
  background: #101827;
  color: #fff;
  border-radius: 20px;
  padding: 18px 12px;
  position: sticky;
  top: 18px;
  height: max-content;
  box-shadow: var(--fosooli-shadow);
}
.fosooli-admin-brand { padding: 8px 12px 22px; border-bottom: 1px solid rgba(255,255,255,.1); margin-bottom: 12px; }
.fosooli-admin-brand strong { display: block; font-size: 23px; }
.fosooli-admin-brand small { color: #a8b3c7; }
.fosooli-admin-nav nav { display: grid; gap: 4px; }
.fosooli-admin-nav nav a {
  color: #dbe4f2;
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 11px 12px;
  border-radius: 11px;
  text-decoration: none;
  font-weight: 700;
}
.fosooli-admin-nav nav a span { width: 22px; text-align: center; font-size: 18px; }
.fosooli-admin-nav nav a:hover,
.fosooli-admin-nav nav a.active { color: #fff; background: var(--fosooli-primary); }
.fosooli-admin-main { min-width: 0; padding: 4px 0 30px; }

.fosooli-page-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
.fosooli-page-head h1 { margin: 0 0 6px; font-size: 29px; line-height: 1.25; }
.fosooli-page-head p { margin: 0; color: var(--fosooli-muted); }
.fosooli-btn {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--fosooli-border);
  background: #fff;
  color: var(--fosooli-text);
  border-radius: 10px;
  padding: 10px 15px;
  text-decoration: none;
  cursor: pointer;
  font: inherit;
  font-weight: 800;
}
.fosooli-btn:hover { border-color: #bfcee2; background: #f8fafc; }
.fosooli-btn-primary { background: var(--fosooli-primary); color: #fff !important; border-color: var(--fosooli-primary); }
.fosooli-btn-primary:hover { background: var(--fosooli-primary-dark); }
.fosooli-btn-block { width: 100%; }

.fosooli-stats { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; margin-bottom: 18px; }
.fosooli-stat { background: var(--fosooli-panel); border: 1px solid var(--fosooli-border); border-radius: var(--fosooli-radius); padding: 20px; box-shadow: 0 5px 18px rgba(15,23,42,.04); }
.fosooli-stat strong { display: block; font-size: 30px; margin-bottom: 4px; }
.fosooli-stat span { color: var(--fosooli-muted); font-weight: 700; }
.fosooli-panel { background: var(--fosooli-panel); border: 1px solid var(--fosooli-border); border-radius: var(--fosooli-radius); padding: 20px; box-shadow: 0 5px 18px rgba(15,23,42,.04); margin-bottom: 18px; }
.fosooli-panel > h2 { margin: 0 0 18px; font-size: 19px; }
.fosooli-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.fosooli-panel-head h2 { margin: 0; font-size: 19px; }
.fosooli-panel-head a { color: var(--fosooli-primary); text-decoration: none; font-weight: 700; }
.fosooli-notice, .fosooli-alert { border-radius: 12px; padding: 14px 16px; margin-bottom: 18px; }
.fosooli-notice { background: #eff6ff; border: 1px solid #bfdbfe; color: #1e3a8a; }
.fosooli-alert.is-success { background: #f0fdf4; border: 1px solid #bbf7d0; color: var(--fosooli-success); }
.fosooli-alert.is-error { background: #fef2f2; border: 1px solid #fecaca; color: var(--fosooli-danger); }

.fosooli-table-wrap { overflow-x: auto; }
.fosooli-table { width: 100%; border-collapse: collapse; min-width: 650px; }
.fosooli-table th, .fosooli-table td { text-align: right; padding: 13px 10px; border-bottom: 1px solid var(--fosooli-border); vertical-align: middle; }
.fosooli-table th { color: var(--fosooli-muted); font-size: 13px; background: #f8fafc; }
.fosooli-table tr:last-child td { border-bottom: 0; }
.fosooli-table td strong { display: block; }
.fosooli-table td small { display: block; margin-top: 4px; color: var(--fosooli-muted); }
.fosooli-table a { color: var(--fosooli-primary); text-decoration: none; }
.fosooli-actions { display: flex; align-items: center; gap: 10px; white-space: nowrap; }
.fosooli-actions form { margin: 0; display: inline; }
.fosooli-actions button { border: 0; background: transparent; color: var(--fosooli-danger); padding: 0; cursor: pointer; font: inherit; }
.fosooli-empty { text-align: center !important; color: var(--fosooli-muted); padding: 32px !important; }
.fosooli-muted { color: var(--fosooli-muted); }
.fosooli-badge { display: inline-block; border-radius: 999px; padding: 4px 9px; font-size: 12px; font-weight: 800; }
.fosooli-badge.is-published { background: #dcfce7; color: #166534; }
.fosooli-badge.is-draft { background: #fef3c7; color: #92400e; }
.fosooli-badge.is-archived { background: #e2e8f0; color: #475569; }

.fosooli-tabs { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 18px; }
.fosooli-tabs a { text-decoration: none; color: var(--fosooli-text); border: 1px solid var(--fosooli-border); background: #fff; border-radius: 10px; padding: 9px 13px; font-weight: 700; }
.fosooli-tabs a.active { color: #fff; background: var(--fosooli-primary); border-color: var(--fosooli-primary); }
.fosooli-grid-structure { display: grid; grid-template-columns: 330px minmax(0,1fr); gap: 18px; align-items: start; }
.fosooli-form { display: grid; gap: 14px; }
.fosooli-field { display: grid; gap: 7px; }
.fosooli-field > span { font-weight: 800; font-size: 14px; }
.fosooli-field em { color: var(--fosooli-danger); font-style: normal; }
.fosooli-field input, .fosooli-field select, .fosooli-field textarea,
.fosooli-filter input, .fosooli-filter select, .fosooli-library-filter input, .fosooli-library-filter select {
  width: 100%; border: 1px solid #cbd5e1; background: #fff; color: var(--fosooli-text); border-radius: 10px; padding: 11px 12px; font: inherit; outline: none;
}
.fosooli-field textarea { resize: vertical; min-height: 90px; line-height: 1.7; }
.fosooli-field input:focus, .fosooli-field select:focus, .fosooli-field textarea:focus,
.fosooli-filter input:focus, .fosooli-filter select:focus, .fosooli-library-filter input:focus, .fosooli-library-filter select:focus { border-color: var(--fosooli-primary); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.fosooli-form-actions { display: flex; gap: 8px; padding-top: 4px; }
.fosooli-filter { display: grid; grid-template-columns: minmax(220px,1fr) 170px 180px auto; gap: 10px; background: #fff; border: 1px solid var(--fosooli-border); border-radius: var(--fosooli-radius); padding: 14px; margin-bottom: 18px; }

.fosooli-editor-grid { display: grid; grid-template-columns: minmax(0,1fr) 330px; gap: 18px; align-items: start; }
.fosooli-editor-main, .fosooli-editor-side { min-width: 0; }
.fosooli-editor-side { position: sticky; top: 18px; }
.fosooli-check { display: flex; gap: 8px; align-items: center; margin: 4px 0 14px; font-weight: 700; }
.fosooli-check input { width: 18px; height: 18px; }
.fosooli-upload { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; border: 2px dashed #bfcee2; background: #f8fafc; border-radius: 14px; min-height: 135px; cursor: pointer; text-align: center; padding: 18px; }
.fosooli-upload:hover { border-color: var(--fosooli-primary); background: #eff6ff; }
.fosooli-upload input { position: absolute; opacity: 0; pointer-events: none; }
.fosooli-upload span { color: var(--fosooli-primary); font-weight: 900; }
.fosooli-upload small { color: var(--fosooli-muted); }
.fosooli-help { color: var(--fosooli-muted); margin: 9px 0 0; font-size: 13px; }
.fosooli-current-file { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 11px 12px; margin-bottom: 12px; border-radius: 10px; background: #f0fdf4; border: 1px solid #bbf7d0; }
.fosooli-current-file span, .fosooli-current-file small { color: var(--fosooli-muted); }

.fosooli-library-hero { border-radius: 24px; background: linear-gradient(135deg,#0f3e8f,#2563eb); color: #fff; padding: 42px; margin-bottom: 28px; box-shadow: var(--fosooli-shadow); }
.fosooli-library-hero > span { display: inline-block; color: #dbeafe; font-weight: 800; margin-bottom: 8px; }
.fosooli-library-hero h1 { color: #fff; margin: 0 0 10px; font-size: clamp(30px,5vw,48px); }
.fosooli-library-hero p { color: #dbeafe; margin: 0 0 24px; font-size: 17px; }
.fosooli-library-filter { display: grid; grid-template-columns: minmax(220px,1.5fr) repeat(4,minmax(125px,1fr)) auto; gap: 9px; padding: 12px; border-radius: 14px; background: rgba(255,255,255,.13); backdrop-filter: blur(7px); }
.fosooli-library-filter input, .fosooli-library-filter select { border-color: transparent; }
.fosooli-section-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.fosooli-section-head h2 { margin: 0; font-size: 24px; }
.fosooli-section-head span { color: var(--fosooli-muted); }
.fosooli-resource-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 17px; }
.fosooli-resource-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--fosooli-border); border-radius: 17px; overflow: hidden; box-shadow: 0 7px 22px rgba(15,23,42,.05); transition: transform .18s, box-shadow .18s; }
.fosooli-resource-card:hover { transform: translateY(-3px); box-shadow: var(--fosooli-shadow); }
.fosooli-card-cover { height: 165px; display: grid; place-items: center; background: linear-gradient(135deg,#eff6ff,#e0e7ff); overflow: hidden; text-decoration: none; }
.fosooli-card-cover img { width: 100%; height: 100%; object-fit: cover; }
.fosooli-card-icon { font-size: 56px; }
.fosooli-card-body { padding: 17px; display: flex; flex-direction: column; flex: 1; }
.fosooli-type { color: var(--fosooli-primary); font-size: 13px; font-weight: 900; }
.fosooli-card-body h2 { margin: 8px 0; font-size: 18px; line-height: 1.55; }
.fosooli-card-body h2 a { color: var(--fosooli-text); text-decoration: none; }
.fosooli-card-body p { color: var(--fosooli-muted); line-height: 1.7; margin: 0 0 14px; }
.fosooli-card-meta { display: flex; flex-wrap: wrap; gap: 7px; margin-top: auto; }
.fosooli-card-meta span { background: #f1f5f9; color: #475569; border-radius: 999px; padding: 5px 9px; font-size: 12px; font-weight: 700; }
.fosooli-public-empty { grid-column: 1/-1; border: 1px dashed var(--fosooli-border); border-radius: 16px; background: #fff; }

.fosooli-resource-page { max-width: 1050px; margin: 0 auto; }
.fosooli-breadcrumb { display: flex; gap: 8px; flex-wrap: wrap; color: var(--fosooli-muted); margin-bottom: 18px; }
.fosooli-breadcrumb a { color: var(--fosooli-primary); text-decoration: none; }
.fosooli-resource-page > header { background: #fff; border: 1px solid var(--fosooli-border); border-radius: 20px; padding: 28px; box-shadow: 0 7px 22px rgba(15,23,42,.05); margin-bottom: 15px; }
.fosooli-resource-page > header h1 { margin: 10px 0; font-size: clamp(26px,4vw,38px); line-height: 1.45; }
.fosooli-resource-page > header p { color: var(--fosooli-muted); line-height: 1.8; font-size: 16px; }
.fosooli-resource-meta, .fosooli-resource-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.fosooli-resource-meta span { border-radius: 999px; background: #eff6ff; color: #1d4ed8; padding: 6px 10px; font-size: 13px; font-weight: 800; }
.fosooli-resource-actions { margin-top: 18px; }
.fosooli-resource-facts { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin-bottom: 15px; }
.fosooli-resource-facts div { background: #fff; border: 1px solid var(--fosooli-border); border-radius: 13px; padding: 14px; }
.fosooli-resource-facts span { display: block; color: var(--fosooli-muted); font-size: 12px; margin-bottom: 4px; }
.fosooli-resource-facts strong { font-size: 14px; }
.fosooli-pdf-viewer { background: #1e293b; border-radius: 18px; padding: 8px; min-height: 720px; margin-bottom: 18px; overflow: hidden; }
.fosooli-pdf-viewer object { display: block; width: 100%; min-height: 704px; border-radius: 12px; background: #fff; }
.fosooli-viewer-fallback { display: grid; place-items: center; min-height: 500px; text-align: center; }
.fosooli-resource-content { background: #fff; border: 1px solid var(--fosooli-border); border-radius: 18px; padding: 25px; line-height: 1.9; margin-bottom: 15px; }
.fosooli-resource-content h2 { margin-top: 0; }
.fosooli-rights { color: var(--fosooli-muted); background: #f8fafc; border-radius: 12px; padding: 13px; font-size: 13px; }

@media (max-width: 1000px) {
  .fosooli-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .fosooli-editor-grid, .fosooli-grid-structure { grid-template-columns: 1fr; }
  .fosooli-editor-side { position: static; }
  .fosooli-resource-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .fosooli-library-filter { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .fosooli-library-filter input { grid-column: 1/-1; }
}
@media (max-width: 760px) {
  .fosooli-admin { grid-template-columns: 1fr; margin: 0; }
  .fosooli-admin-nav { position: static; border-radius: 14px; }
  .fosooli-admin-nav nav { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .fosooli-page-head { align-items: flex-start; flex-direction: column; }
  .fosooli-stats, .fosooli-resource-facts { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .fosooli-filter { grid-template-columns: 1fr; }
  .fosooli-library-hero { padding: 26px 18px; border-radius: 18px; }
  .fosooli-library-filter { grid-template-columns: 1fr; }
  .fosooli-resource-grid { grid-template-columns: 1fr; }
  .fosooli-pdf-viewer { min-height: 560px; }
  .fosooli-pdf-viewer object { min-height: 544px; }
}
@media (max-width: 460px) {
  .fosooli-admin-nav nav { grid-template-columns: 1fr; }
  .fosooli-stats, .fosooli-resource-facts { grid-template-columns: 1fr; }
  .fosooli-panel { padding: 15px; }
}

/* Fosooli Core 0.2.0 — public education experience */
.fosooli-public {
  --fosooli-navy: #102a43;
  --fosooli-blue: #2563eb;
  --fosooli-blue-soft: #eff6ff;
  --fosooli-green: #0f9f6e;
  --fosooli-amber: #f59e0b;
  --fosooli-surface: #ffffff;
  --fosooli-page: #f7f9fc;
  --fosooli-line: #e5eaf2;
  --fosooli-copy: #172033;
  --fosooli-subtle: #64748b;
  color: var(--fosooli-copy);
}
.fosooli-public a { text-decoration: none; }
.fosooli-public .fosooli-btn { min-height: 44px; }
.fosooli-site-home,
.fosooli-taxonomy-page,
.fosooli-search-hero,
.fosooli-library-results { max-width: 1180px; margin-inline: auto; }

.fosooli-home-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(280px, .8fr);
  gap: 34px;
  align-items: center;
  overflow: hidden;
  border-radius: 30px;
  padding: clamp(32px, 6vw, 70px);
  margin-bottom: 38px;
  background: radial-gradient(circle at 14% 16%, rgba(255,255,255,.18), transparent 28%), linear-gradient(135deg, #102a43 0%, #174c92 54%, #2563eb 100%);
  color: #fff;
  box-shadow: 0 24px 65px rgba(15, 42, 67, .18);
}
.fosooli-home-hero:after {
  content: "";
  position: absolute;
  width: 360px;
  height: 360px;
  border: 70px solid rgba(255,255,255,.06);
  border-radius: 50%;
  left: -170px;
  bottom: -190px;
}
.fosooli-home-copy { position: relative; z-index: 2; }
.fosooli-eyebrow,
.fosooli-section-kicker {
  display: block;
  margin-bottom: 8px;
  color: #9bd8ff;
  font-size: 14px;
  font-weight: 900;
  letter-spacing: .02em;
}
.fosooli-home-copy h1 { margin: 0 0 13px; color: #fff; font-size: clamp(37px, 6vw, 65px); line-height: 1.15; }
.fosooli-home-copy > p { max-width: 720px; margin: 0 0 25px; color: #d9e9fb; font-size: clamp(16px, 2vw, 20px); line-height: 1.9; }
.fosooli-home-stats { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-top: 20px; }
.fosooli-home-stats span { color: #d9e9fb; font-size: 13px; }
.fosooli-home-stats strong { display: inline-block; margin-left: 4px; color: #fff; font-size: 18px; }
.fosooli-home-visual { position: relative; min-height: 275px; z-index: 2; }
.fosooli-visual-book {
  position: absolute;
  inset: 30px 40px 20px 25px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 34px;
  background: rgba(255,255,255,.14);
  box-shadow: inset 0 1px rgba(255,255,255,.24), 0 25px 70px rgba(0,0,0,.16);
  font-size: 112px;
  transform: rotate(-3deg);
}
.fosooli-visual-card {
  position: absolute;
  min-width: 94px;
  border: 1px solid rgba(255,255,255,.4);
  border-radius: 13px;
  padding: 10px 14px;
  background: rgba(255,255,255,.92);
  color: var(--fosooli-navy);
  box-shadow: 0 12px 28px rgba(0,0,0,.18);
  text-align: center;
  font-weight: 900;
}
.fosooli-visual-card.is-one { top: 5px; right: 0; transform: rotate(5deg); }
.fosooli-visual-card.is-two { left: 0; top: 100px; transform: rotate(-7deg); }
.fosooli-visual-card.is-three { right: 25px; bottom: 0; transform: rotate(3deg); }

.fosooli-library-filter.is-compact { grid-template-columns: minmax(0, 1fr) auto; max-width: 760px; padding: 9px; background: rgba(255,255,255,.14); }
.fosooli-search-input { position: relative; display: block; }
.fosooli-search-input > span { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); color: #64748b; font-size: 21px; z-index: 2; }
.fosooli-search-input input { padding-right: 44px; min-height: 47px; }
.fosooli-library-filter .fosooli-search-input { min-width: 0; }

.fosooli-home-section { margin: 42px 0; }
.fosooli-home-section > .fosooli-section-head > div > h2,
.fosooli-home-section > .fosooli-section-head > h2 { margin: 0; font-size: clamp(24px, 3vw, 32px); color: var(--fosooli-navy); }
.fosooli-home-section .fosooli-section-kicker { color: var(--fosooli-blue); margin-bottom: 4px; }
.fosooli-section-head > a { color: var(--fosooli-blue); font-weight: 900; }
.fosooli-stage-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.fosooli-stage-card { overflow: hidden; border: 1px solid var(--fosooli-line); border-radius: 22px; background: #fff; box-shadow: 0 10px 30px rgba(15,42,67,.06); }
.fosooli-stage-head { display: flex; gap: 14px; align-items: center; padding: 23px; background: linear-gradient(145deg, #f8fbff, #eef5ff); }
.fosooli-stage-head > span { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 17px; background: #fff; box-shadow: 0 8px 18px rgba(37,99,235,.12); font-size: 29px; }
.fosooli-stage-head h2 { margin: 0 0 3px; color: var(--fosooli-navy); font-size: 21px; }
.fosooli-stage-head p { margin: 0; color: var(--fosooli-subtle); font-size: 13px; }
.fosooli-grade-links { display: grid; padding: 8px 14px 14px; }
.fosooli-grade-links a { display: flex; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid #edf1f6; padding: 12px 7px; color: var(--fosooli-copy); }
.fosooli-grade-links a:last-child { border-bottom: 0; }
.fosooli-grade-links a:hover strong { color: var(--fosooli-blue); }
.fosooli-grade-links small { color: var(--fosooli-subtle); }

.fosooli-type-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; }
.fosooli-type-card { display: flex; flex-direction: column; align-items: center; gap: 5px; min-height: 135px; justify-content: center; border: 1px solid var(--fosooli-line); border-radius: 18px; background: #fff; color: var(--fosooli-copy); box-shadow: 0 8px 24px rgba(15,42,67,.04); transition: .18s ease; }
.fosooli-type-card:hover { transform: translateY(-4px); border-color: #bfd2f5; box-shadow: 0 14px 30px rgba(37,99,235,.1); }
.fosooli-type-card > span { font-size: 34px; }
.fosooli-type-card strong { font-size: 15px; }
.fosooli-type-card small { color: var(--fosooli-subtle); font-size: 12px; }

.fosooli-resource-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.fosooli-resource-grid.is-compact { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.fosooli-resource-card { border-radius: 19px; }
.fosooli-card-cover { position: relative; height: 190px; }
.fosooli-card-type { position: absolute; right: 12px; top: 12px; border-radius: 999px; padding: 5px 9px; background: rgba(255,255,255,.94); color: var(--fosooli-blue); box-shadow: 0 4px 12px rgba(15,42,67,.12); font-size: 12px; font-weight: 900; }
.fosooli-card-body { padding: 17px; }
.fosooli-card-body h3 { margin: 0 0 8px; min-height: 55px; font-size: 17px; line-height: 1.65; }
.fosooli-card-body h3 a { color: var(--fosooli-copy); }
.fosooli-card-body h3 a:hover { color: var(--fosooli-blue); }
.fosooli-card-meta a { border-radius: 999px; padding: 5px 9px; background: #f1f5f9; color: #475569; font-size: 11px; font-weight: 800; }
.fosooli-card-footer { display: flex; align-items: center; gap: 10px; border-top: 1px solid #edf1f6; padding-top: 12px; margin-top: 13px; color: var(--fosooli-subtle); font-size: 11px; }
.fosooli-card-footer > a { margin-right: auto; color: var(--fosooli-blue); font-size: 12px; font-weight: 900; }

.fosooli-search-hero { border: 1px solid var(--fosooli-line); border-radius: 24px; padding: 28px; margin-bottom: 25px; background: linear-gradient(145deg, #fff, #f5f9ff); }
.fosooli-search-hero h1 { margin: 8px 0; color: var(--fosooli-navy); font-size: clamp(27px, 4vw, 42px); }
.fosooli-search-hero > p { margin: 0 0 20px; color: var(--fosooli-subtle); }
.fosooli-search-hero .fosooli-library-filter { background: #fff; border: 1px solid var(--fosooli-line); box-shadow: 0 7px 20px rgba(15,42,67,.05); }
.fosooli-library-results .fosooli-section-head > div h2 { margin: 0; }
.fosooli-library-results .fosooli-section-head > div span { display: block; margin-top: 3px; }
.fosooli-sort-links { display: flex; gap: 5px; padding: 4px; border: 1px solid var(--fosooli-line); border-radius: 12px; background: #fff; }
.fosooli-sort-links a { border-radius: 8px; padding: 7px 10px; color: var(--fosooli-subtle); font-size: 12px; font-weight: 800; }
.fosooli-sort-links a.active { background: var(--fosooli-blue); color: #fff; }
.fosooli-pagination { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 6px; margin: 28px 0 8px; }
.fosooli-pagination a,
.fosooli-pagination span { display: grid; place-items: center; min-width: 39px; height: 39px; border: 1px solid var(--fosooli-line); border-radius: 10px; background: #fff; color: var(--fosooli-copy); font-weight: 800; }
.fosooli-pagination a.is-wide { width: auto; padding-inline: 14px; }
.fosooli-pagination a.active { border-color: var(--fosooli-blue); background: var(--fosooli-blue); color: #fff; }

.fosooli-taxonomy-hero,
.fosooli-subject-hero { display: flex; align-items: center; gap: 20px; border: 1px solid var(--fosooli-line); border-radius: 24px; padding: 28px; margin-bottom: 27px; background: linear-gradient(140deg, #fff, #eff6ff); box-shadow: 0 10px 32px rgba(15,42,67,.05); }
.fosooli-taxonomy-hero > span,
.fosooli-subject-hero-icon { display: grid; place-items: center; flex: 0 0 78px; height: 78px; border-radius: 23px; background: #fff; box-shadow: 0 10px 25px rgba(37,99,235,.12); font-size: 42px; }
.fosooli-taxonomy-hero > div,
.fosooli-subject-hero > div:not(.fosooli-subject-hero-icon) { min-width: 0; flex: 1; }
.fosooli-taxonomy-hero small,
.fosooli-subject-hero small { color: var(--fosooli-blue); font-weight: 900; }
.fosooli-taxonomy-hero h1,
.fosooli-subject-hero h1 { margin: 3px 0 5px; color: var(--fosooli-navy); font-size: clamp(28px, 4vw, 43px); }
.fosooli-taxonomy-hero p,
.fosooli-subject-hero p { margin: 0; color: var(--fosooli-subtle); }
.fosooli-semester-block { margin: 30px 0; }
.fosooli-subject-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; }
.fosooli-subject-card { display: flex; align-items: center; gap: 13px; min-height: 90px; border: 1px solid var(--fosooli-line); border-radius: 17px; padding: 14px; background: #fff; color: var(--fosooli-copy); box-shadow: 0 7px 20px rgba(15,42,67,.04); }
.fosooli-subject-card:hover { border-color: #bcd1f8; transform: translateY(-2px); }
.fosooli-subject-icon { display: grid; place-items: center; flex: 0 0 48px; height: 48px; border-radius: 14px; background: var(--fosooli-blue-soft); font-size: 25px; }
.fosooli-subject-card > div { min-width: 0; flex: 1; }
.fosooli-subject-card strong { display: block; margin-bottom: 3px; }
.fosooli-subject-card small { color: var(--fosooli-subtle); }
.fosooli-subject-card > b { color: var(--fosooli-blue); font-size: 22px; }

.fosooli-type-tabs { display: flex; gap: 8px; overflow-x: auto; padding: 0 0 13px; margin-bottom: 18px; scrollbar-width: thin; }
.fosooli-type-tabs a { display: flex; align-items: center; gap: 6px; white-space: nowrap; border: 1px solid var(--fosooli-line); border-radius: 999px; padding: 9px 13px; background: #fff; color: var(--fosooli-subtle); font-weight: 800; }
.fosooli-type-tabs a.active { border-color: var(--fosooli-blue); background: var(--fosooli-blue); color: #fff; }
.fosooli-type-tabs small { opacity: .75; }
.fosooli-subject-layout { display: grid; grid-template-columns: 235px minmax(0, 1fr); gap: 22px; align-items: start; }
.fosooli-unit-nav { position: sticky; top: 18px; overflow: hidden; border: 1px solid var(--fosooli-line); border-radius: 18px; padding: 12px; background: #fff; }
.fosooli-unit-nav h2 { margin: 5px 7px 12px; color: var(--fosooli-navy); font-size: 17px; }
.fosooli-unit-nav a { display: flex; justify-content: space-between; gap: 8px; border-radius: 10px; padding: 10px; color: var(--fosooli-subtle); font-size: 13px; font-weight: 800; }
.fosooli-unit-nav a:hover,
.fosooli-unit-nav a.active { background: var(--fosooli-blue-soft); color: var(--fosooli-blue); }

.fosooli-resource-page { max-width: 1120px; }
.fosooli-resource-header { display: grid !important; grid-template-columns: 180px minmax(0,1fr); gap: 24px; align-items: center; }
.fosooli-resource-cover { display: grid; place-items: center; overflow: hidden; min-height: 190px; border-radius: 18px; background: linear-gradient(145deg, #eff6ff, #dbeafe); }
.fosooli-resource-cover img { width: 100%; height: 210px; object-fit: cover; }
.fosooli-resource-cover > span { font-size: 72px; }
.fosooli-resource-intro { min-width: 0; }
.fosooli-resource-page > header.fosooli-resource-header h1 { margin-top: 10px; }
.fosooli-resource-facts { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.fosooli-resource-facts div { min-width: 0; }
.fosooli-resource-facts strong { overflow-wrap: anywhere; }
.fosooli-related { margin-top: 35px; }
.fosooli-multiselect { min-height: 180px; }

.fosooli-pdf-app { overflow: hidden; border: 1px solid #18263a; border-radius: 19px; margin: 18px 0; background: #18263a; box-shadow: 0 15px 35px rgba(15,23,42,.14); }
.fosooli-pdf-app:fullscreen { border-radius: 0; display: flex; flex-direction: column; width: 100vw; height: 100vh; margin: 0; }
.fosooli-pdf-app:fullscreen .fosooli-pdf-stage { flex: 1; min-height: 0; height: auto; }
.fosooli-pdf-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 9px 12px; background: #101827; color: #fff; }
.fosooli-pdf-group { display: flex; align-items: center; gap: 5px; }
.fosooli-pdf-toolbar button,
.fosooli-pdf-toolbar a { display: grid; place-items: center; min-width: 36px; height: 36px; border: 1px solid rgba(255,255,255,.14); border-radius: 8px; padding: 0 9px; background: #1d2939; color: #fff; cursor: pointer; font: inherit; font-size: 12px; font-weight: 800; }
.fosooli-pdf-toolbar button:hover,
.fosooli-pdf-toolbar a:hover { background: #334155; }
.fosooli-pdf-toolbar button:disabled { cursor: not-allowed; opacity: .35; }
.fosooli-pdf-toolbar label { display: flex; align-items: center; gap: 5px; color: #d4deec; font-size: 12px; }
.fosooli-pdf-toolbar input { width: 56px; height: 36px; border: 1px solid rgba(255,255,255,.18); border-radius: 8px; background: #fff; color: #111827; text-align: center; font: inherit; }
.fosooli-pdf-toolbar [data-pdf-zoom] { min-width: 50px; text-align: center; color: #d4deec; font-size: 12px; }
.fosooli-pdf-stage { position: relative; display: flex; align-items: flex-start; justify-content: center; overflow: auto; min-height: 720px; max-height: 85vh; padding: 18px; background: #334155; }
.fosooli-pdf-stage canvas { max-width: none; background: #fff; box-shadow: 0 10px 30px rgba(0,0,0,.28); }
.fosooli-pdf-stage iframe { width: 100%; min-height: 700px; border: 0; background: #fff; }
.fosooli-pdf-loading { position: absolute; inset: 0; display: flex; flex-direction: column; place-items: center; align-items: center; justify-content: center; color: #dce7f5; }
.fosooli-pdf-loading[hidden] { display: none; }
.fosooli-pdf-loading span { width: 44px; height: 44px; border: 4px solid rgba(255,255,255,.2); border-top-color: #fff; border-radius: 50%; animation: fosooli-spin .8s linear infinite; }
.fosooli-pdf-loading p { margin-top: 12px; }
.fosooli-pdf-status { padding: 7px 12px; background: #101827; color: #9fb0c6; font-size: 11px; text-align: center; }
.fosooli-pdf-app.is-fallback .fosooli-pdf-stage { padding: 0; }
.fosooli-pdf-app.is-fallback .fosooli-pdf-stage iframe { min-height: 720px; }
@keyframes fosooli-spin { to { transform: rotate(360deg); } }
.fosooli-standalone-viewer { max-width: 1450px; margin: 0 auto; }
.fosooli-viewer-title { display: flex; align-items: center; gap: 18px; border: 1px solid var(--fosooli-line); border-radius: 18px; padding: 15px 19px; background: #fff; }
.fosooli-viewer-title > a { flex: 0 0 auto; color: var(--fosooli-blue); font-weight: 900; }
.fosooli-viewer-title h1 { margin: 0 0 3px; font-size: 20px; }
.fosooli-viewer-title p { margin: 0; color: var(--fosooli-subtle); font-size: 12px; }
.fosooli-pdf-app.is-standalone .fosooli-pdf-stage { min-height: calc(100vh - 260px); max-height: none; }

@media (max-width: 1100px) {
  .fosooli-stage-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fosooli-type-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .fosooli-resource-grid,
  .fosooli-resource-grid.is-compact { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .fosooli-resource-facts { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (max-width: 900px) {
  .fosooli-home-hero { grid-template-columns: 1fr; }
  .fosooli-home-visual { display: none; }
  .fosooli-subject-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fosooli-subject-layout { grid-template-columns: 1fr; }
  .fosooli-unit-nav { position: static; display: flex; gap: 5px; overflow-x: auto; }
  .fosooli-unit-nav h2 { display: none; }
  .fosooli-unit-nav a { white-space: nowrap; }
  .fosooli-resource-header { grid-template-columns: 135px minmax(0,1fr); }
  .fosooli-resource-cover { min-height: 155px; }
  .fosooli-resource-cover img { height: 170px; }
}
@media (max-width: 760px) {
  .fosooli-home-hero { border-radius: 20px; padding: 29px 18px; }
  .fosooli-library-filter.is-compact { grid-template-columns: 1fr; }
  .fosooli-stage-grid,
  .fosooli-subject-grid { grid-template-columns: 1fr; }
  .fosooli-type-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .fosooli-resource-grid,
  .fosooli-resource-grid.is-compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fosooli-taxonomy-hero,
  .fosooli-subject-hero { align-items: flex-start; flex-wrap: wrap; padding: 20px; }
  .fosooli-taxonomy-hero .fosooli-btn { width: 100%; }
  .fosooli-resource-header { grid-template-columns: 1fr; }
  .fosooli-resource-cover { min-height: 170px; }
  .fosooli-resource-cover img { height: 230px; }
  .fosooli-pdf-toolbar { justify-content: center; }
  .fosooli-pdf-stage { min-height: 560px; padding: 8px; }
  .fosooli-pdf-app.is-fallback .fosooli-pdf-stage iframe { min-height: 560px; }
  .fosooli-sort-links { width: 100%; overflow-x: auto; }
  .fosooli-library-results > .fosooli-section-head { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 520px) {
  .fosooli-type-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fosooli-resource-grid,
  .fosooli-resource-grid.is-compact { grid-template-columns: 1fr; }
  .fosooli-card-cover { height: 205px; }
  .fosooli-resource-facts { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .fosooli-pdf-group:nth-child(2) { order: 3; width: 100%; justify-content: center; }
  .fosooli-pdf-toolbar button,
  .fosooli-pdf-toolbar a { min-width: 34px; padding-inline: 7px; }
  .fosooli-viewer-title { align-items: flex-start; flex-direction: column; gap: 8px; }
}
