/* Homepage only: shared theme and other portal pages remain independent. */
.zf-home {
  --home-accent: #087f70;
  --home-ink: #203d37;
  --home-muted: #687c76;
  --home-line: #e3ece7;
  background: #f6f8f6;
  color: var(--home-ink);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif;
}
.zf-home .home-main { padding: 36px 24px 0; }
.zf-home .zf-navbar { box-shadow: 0 1px 0 var(--home-line); }
.zf-home .zf-navbar .button { border-radius: 8px; }
.zf-home .zf-navbar .button.is-primary { background: var(--home-accent); }
.zf-home .home-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  align-items: center;
  gap: 24px;
  padding: 48px;
  overflow: hidden;
  border: 1px solid #dfebe3;
  border-radius: 24px;
  background: radial-gradient(ellipse at 95% 20%, #dcebd4 0, transparent 55%), linear-gradient(115deg, #edf4ed, #f5f7ee);
}
.zf-home .home-hero-copy { position: relative; z-index: 1; min-width: 0; }
.zf-home .home-eyebrow { display: flex; align-items: center; gap: 9px; font-size: 12px; font-weight: 600; letter-spacing: 3px; color: var(--home-accent); }
.zf-home .home-status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--home-accent); box-shadow: 0 0 0 4px #087f7010; }
.zf-home .home-hero h1 { margin: 20px 0; font-size: clamp(30px, 3.35vw, 48px); font-weight: 750; line-height: 1.4; letter-spacing: -1.5px; }
.zf-home .home-hero h1 > span { color: var(--home-accent); }
.zf-home .home-intro { color: var(--home-muted); font-size: 13px; line-height: 1.95; }
.zf-home .home-search { display: flex; align-items: center; gap: 12px; margin-top: 28px; padding: 6px 6px 6px 17px; border: 1px solid #d9e5dc; border-radius: 12px; background: #fff; box-shadow: 0 6px 20px #234a3710; }
.zf-home .home-search:focus-within { outline: 2px solid var(--home-accent); outline-offset: 3px; }
.zf-home .home-search-icon { flex: 0 0 auto; color: #82968d; }
.zf-home .home-search input[type="search"] { width: 100%; min-width: 0; padding: 8px 0; border: 0; outline: 0; background: transparent; color: var(--home-ink); font: inherit; font-size: 13px; }
.zf-home .home-search input::placeholder { color: #7a8b83; }
.zf-home .home-search-submit { height: 42px; flex: 0 0 auto; gap: 14px; padding: 0 18px; border: 0; border-radius: 8px; background: var(--home-accent); color: #fff; font-size: 13px; font-weight: 600; }
.zf-home .home-search-submit:hover { background: #066b5e; color: #fff; }
.zf-home .home-search-submit > span { font-size: 18px; font-weight: 400; }
.zf-home .home-search-hint { margin-top: 11px; color: #71857a; font-size: 11px; }

/* Decorative resource stack, drawn locally without remote assets. */
.zf-home .home-visual { position: relative; height: 330px; pointer-events: none; }
.zf-home .home-orbit { position: absolute; top: 50%; left: 50%; border: 1px solid #aac4a957; border-radius: 50%; transform: translate(-50%, -50%); }
.zf-home .home-orbit-outer { width: 340px; height: 340px; }
.zf-home .home-orbit-inner { width: 240px; height: 240px; }
.zf-home .home-visual-card { position: absolute; border: 1px solid #ffffffc4; border-radius: 14px; box-shadow: 0 14px 36px #243f3415; }
.zf-home .home-visual-card-back { width: 198px; height: 122px; top: 22px; right: 20px; padding: 20px; transform: rotate(12deg); background: #fbfcf4; }
.zf-home .home-visual-card-back > span { color: #8a9a81; font-size: 9px; letter-spacing: 2px; }
.zf-home .home-visual-swatches { display: flex; margin-top: 14px; }
.zf-home .home-visual-swatches i { width: 44px; height: 44px; border: 3px solid #fbfcf4; border-radius: 50%; background: #0d796a; }
.zf-home .home-visual-swatches i + i { margin-left: -9px; background: #b3ca9e; }
.zf-home .home-visual-swatches i:last-child { background: #ebc792; }
.zf-home .home-visual-card-code { width: 260px; top: 68px; left: 16px; padding: 19px 21px 23px; transform: rotate(-7deg); background: #203e35; border-color: #39594d; box-shadow: 0 20px 35px #18392c30; }
.zf-home .home-window-dots { display: flex; align-items: center; gap: 5px; margin-bottom: 18px; }
.zf-home .home-window-dots i { width: 6px; height: 6px; border-radius: 50%; background: #f0aa8c; }
.zf-home .home-window-dots i:nth-child(2) { background: #e3cf91; }
.zf-home .home-window-dots i:nth-child(3) { background: #91c5a5; }
.zf-home .home-window-dots > span { margin-left: auto; color: #a6bdb1; font: 9px monospace; }
.zf-home .home-code { color: #dbe6df; font: 12px/1.95 Consolas, monospace; }
.zf-home .home-code > span { color: #acbfe9; }
.zf-home .home-code > em { color: #c3d8a3; font-style: normal; }
.zf-home .home-code > b { color: #e4c28f; font-weight: 400; }
.zf-home .home-visual-card-note { display: flex; align-items: center; gap: 11px; right: 0; bottom: 16px; padding: 17px 20px; transform: rotate(5deg); background: #fffffff5; }
.zf-home .home-note-icon { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; background: #eaf2e4; color: var(--home-accent); font-size: 25px; }
.zf-home .home-visual-card-note strong { display: block; margin-bottom: 4px; font-size: 12px; }
.zf-home .home-visual-card-note div > span { color: #809185; font-size: 10px; }
.zf-home .home-visual-spark { position: absolute; color: #6b9468; }
.zf-home .home-visual-spark-one { top: 16px; left: 13px; font-size: 38px; }
.zf-home .home-visual-spark-two { top: 160px; right: -6px; font-size: 30px; font-weight: 300; }
.zf-home .home-visual-caption { position: absolute; left: 21px; bottom: -12px; font-size: 8px; color: #7c9380; letter-spacing: 2px; }

.zf-home .home-guide { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 24px 12px; margin: 0 16px; border-bottom: 1px solid var(--home-line); }
.zf-home .home-guide > div { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 0 14px; }
.zf-home .home-guide > div + div { border-left: 1px solid var(--home-line); }
.zf-home .home-guide-number { color: #9bb5a7; font: italic 24px/1 Georgia, serif; }
.zf-home .home-guide strong { display: block; margin-bottom: 4px; color: #405a4e; font-size: 12px; font-weight: 600; }
.zf-home .home-guide p > span { display: block; color: var(--home-muted); font-size: 11px; }
.zf-home .home-resources { padding-top: 42px; }
.zf-home .home-section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; }
.zf-home .home-section-kicker { margin-bottom: 7px; color: #73897b; font-size: 9px; font-weight: 600; letter-spacing: 2px; }
.zf-home .home-section-heading h2 { font-size: 25px; font-weight: 700; letter-spacing: -.5px; line-height: 1.3; }
.zf-home .home-heading-dot { margin-left: 4px; color: var(--home-accent); }
.zf-home .home-sort { display: flex; flex-wrap: wrap; gap: 5px; padding: 5px; border: 1px solid var(--home-line); border-radius: 10px; background: #eef2ee; }
.zf-home .home-sort .button { padding: 0 14px; height: 32px; border: 0; border-radius: 6px; background: transparent; color: #677b6e; font-size: 12px; }
.zf-home .home-sort .button:hover { color: var(--home-accent); background: #ffffff90; }
.zf-home .home-sort .button.is-selected { color: var(--home-accent); background: #fff; box-shadow: 0 2px 5px #1a3a2e0c; font-weight: 600; }
.zf-home .home-browse-context { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin: 20px 0; font-size: 11px; color: var(--home-muted); }
.zf-home .home-browse-context .breadcrumb { margin: 0; font-size: inherit; }
.zf-home .home-browse-context a { color: var(--home-muted); }
.zf-home .home-browse-context .is-active a { color: #405a4e; }
.zf-home .home-search-result { overflow-wrap: anywhere; }
.zf-home .home-search-result strong { color: var(--home-accent); }
.zf-home .home-clear-search { margin-left: 12px; padding: 4px 8px; border: 1px solid var(--home-line); border-radius: 5px; background: #fff; color: var(--home-muted); font: inherit; cursor: pointer; }
.zf-home .home-resource-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px; }
.zf-home .home-resource-card { display: flex; flex-direction: column; min-width: 0; overflow: hidden; border: 1px solid var(--home-line); border-radius: 14px; background: #fff; box-shadow: 0 3px 10px #163a2b03; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.zf-home .home-resource-card:hover { transform: translateY(-5px); border-color: #c1d5c8; box-shadow: 0 12px 28px #234a3710; }
.zf-home .home-card-image { position: relative; display: block; padding-top: 75%; overflow: hidden; background: #e8efe7; }
.zf-home .home-card-image > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.zf-home .home-card-image > img[hidden] { display: none; }
.zf-home .home-resource-card:hover .home-card-image > img { transform: scale(1.035); }
.zf-home .home-image-placeholder { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; color: #91ac9a; font: 16px Georgia, serif; letter-spacing: 3px; background: radial-gradient(circle at 80% 10%, #d7e4d0, transparent 70%); }
.zf-home .home-image-placeholder > span { font: 11px "Microsoft YaHei", sans-serif; letter-spacing: 2px; }
.zf-home .home-image-arrow { position: absolute; right: 12px; bottom: 12px; display: grid; place-items: center; width: 29px; height: 29px; border: 1px solid #ffffff80; border-radius: 50%; background: #ffffffe8; color: var(--home-accent); font-size: 18px; opacity: 0; transform: translateY(4px); transition: opacity .2s ease, transform .2s ease; }
.zf-home .home-resource-card:hover .home-image-arrow { opacity: 1; transform: translateY(0); }
.zf-home .home-card-content { display: flex; flex: 1; flex-direction: column; padding: 18px; }
.zf-home .home-card-title { min-height: 44px; margin-bottom: 12px; font-size: 15px; font-weight: 600; line-height: 1.5; overflow-wrap: anywhere; }
.zf-home .home-card-title a { color: #2b4238; }
.zf-home .home-card-title a:hover { color: var(--home-accent); }
.zf-home .home-card-tags { display: flex; flex-wrap: wrap; align-content: flex-start; gap: 5px; min-height: 52px; margin-bottom: 12px; }
.zf-home .home-card-tags .tag { max-width: 100%; height: 23px; padding: 0 7px; overflow: hidden; border: 0; border-radius: 4px; background: #edf4ef; color: #4b7863; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.zf-home .home-card-tags .tag:hover { background: #dcece1; color: #215b42; }
.zf-home .home-card-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: auto; margin-bottom: 13px; color: #6f8175; font-size: 10px; }
.zf-home .home-card-meta > span { display: inline-flex; align-items: center; gap: 4px; }
.zf-home .home-card-actions { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 13px; border-top: 1px solid #edf1ed; }
.zf-home .home-card-actions .home-favorite { display: inline-flex; gap: 5px; height: 29px; padding: 0 9px; border: 1px solid #e2e9e3; border-radius: 6px; background: #fff; color: #6b7c70; font-size: 11px; }
.zf-home .home-favorite:hover { border-color: #b9d0be; background: #f0f6ef; color: var(--home-accent); }
.zf-home .home-details { display: inline-flex; align-items: center; gap: 8px; color: var(--home-accent); font-size: 11px; font-weight: 600; }
.zf-home .home-details > span[aria-hidden] { font-size: 17px; }
.zf-home .home-empty { grid-column: 1 / -1; padding: 65px 24px; text-align: center; border: 1px dashed #cfddd1; border-radius: 16px; background: #fff; }
.zf-home .home-empty-icon { display: inline-grid; place-items: center; width: 64px; height: 64px; margin-bottom: 18px; border-radius: 20px; background: #edf4e8; color: var(--home-accent); font-size: 42px; }
.zf-home .home-empty h3 { margin-bottom: 10px; font-size: 20px; font-weight: 600; }
.zf-home .home-empty p { color: var(--home-muted); font-size: 13px; }
.zf-home .home-empty .button { margin-top: 22px; }
.zf-home .home-pagination { margin: 36px 0 30px; }
.zf-home .home-pagination .pagination-link { min-width: 36px; height: 36px; border-color: var(--home-line); border-radius: 8px; background: #fff; color: var(--home-muted); font-size: 12px; }
.zf-home .home-pagination .pagination-link.is-current { border-color: var(--home-accent); background: var(--home-accent); color: #fff; }
.zf-home .home-closing { display: flex; align-items: center; gap: 12px; padding: 24px 0 30px; border-top: 1px solid var(--home-line); color: var(--home-muted); font-size: 12px; }
.zf-home .home-closing > span { color: #87a77f; font-size: 24px; }
.zf-home .home-closing > a { margin-left: auto; flex-shrink: 0; color: var(--home-accent); font-size: 11px; }
.zf-home .zf-footer { padding: 40px 24px; background: #203e35; font-size: 12px; line-height: 1.9; }
.zf-home .zf-footer .columns { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
.zf-home .zf-footer .column { width: auto; }
.zf-home .zf-footer .column.is-12 { grid-column: 1 / -1; }
.zf-home .zf-footer .image { width: 88px; height: 88px; padding: 5px; border-radius: 8px; background: #fff; }
.zf-home .home-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.zf-home button:focus-visible, .zf-home a:focus-visible { outline: 2px solid var(--home-accent); outline-offset: 4px; }
#home-title, #home-resources-title { scroll-margin-top: 85px; }

@media (max-width: 1215px) {
  .zf-home .home-hero { padding: 34px; }
  .zf-home .home-visual-card-code { left: 0; width: 235px; }
  .zf-home .home-visual-card-note { right: -8px; padding: 14px; }
  .zf-home .home-resource-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
}
@media (max-width: 1023px) {
  .zf-home .home-main { padding: 24px 24px 0; }
  .zf-home .home-hero { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 16px; padding: 30px; }
  .zf-home .home-visual { height: 290px; }
  .zf-home .home-visual-card-code { width: 210px; padding: 16px; }
  .zf-home .home-visual-card-back { right: -10px; width: 165px; }
  .zf-home .home-code { font-size: 10px; }
  .zf-home .home-visual-card-note { bottom: 4px; right: -15px; }
  .zf-home .home-visual-card-note strong { font-size: 10px; }
  .zf-home .home-visual-caption { display: none; }
  .zf-home .home-guide { margin: 0; padding: 20px 0; }
  .zf-home .home-guide > div { padding: 0 10px; gap: 10px; }
  .zf-home .home-guide p > span { font-size: 10px; }
}
@media (max-width: 767px) {
  .zf-home .home-main { padding: 18px 16px 0; }
  .zf-home .home-hero { display: block; padding: 28px 22px; border-radius: 18px; }
  .zf-home .home-hero h1 { margin: 17px 0; font-size: 32px; letter-spacing: -1px; }
  .zf-home .home-intro { font-size: 12px; line-height: 1.9; }
  .zf-home .home-desktop-break { display: none; }
  .zf-home .home-visual { display: none; }
  .zf-home .home-search { gap: 8px; margin-top: 22px; padding-left: 11px; }
  .zf-home .home-search input[type="search"] { font-size: 16px; }
  .zf-home .home-search input::placeholder { font-size: 12px; }
  .zf-home .home-search-submit { height: 40px; gap: 6px; padding: 0 12px; font-size: 12px; }
  .zf-home .home-search-submit > span { display: none; }
  .zf-home .home-guide { padding: 20px 0; }
  .zf-home .home-guide > div { justify-content: flex-start; gap: 7px; padding: 0 9px; }
  .zf-home .home-guide > div:first-child { padding-left: 4px; }
  .zf-home .home-guide-number { font-size: 18px; }
  .zf-home .home-guide strong { font-size: 11px; margin: 0; }
  .zf-home .home-guide p > span { display: none; }
  .zf-home .home-resources { padding-top: 28px; }
  .zf-home .home-section-heading { align-items: stretch; flex-direction: column; gap: 18px; }
  .zf-home .home-section-heading h2 { font-size: 23px; }
  .zf-home .home-sort { gap: 3px; }
  .zf-home .home-sort .button { flex: 1; padding: 0 4px; min-width: 0; height: 36px; font-size: 11px; }
  .zf-home .home-browse-context { flex-wrap: wrap; gap: 8px; margin: 16px 0; }
  .zf-home .home-browse-tip { display: none; }
  .zf-home .home-resource-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; }
  .zf-home .home-resource-card { border-radius: 10px; }
  .zf-home .home-card-content { padding: 12px; }
  .zf-home .home-card-title { font-size: 13px; min-height: 39px; margin-bottom: 10px; }
  .zf-home .home-card-tags { gap: 4px; }
  .zf-home .home-card-tags .tag { padding: 0 5px; font-size: 9px; }
  .zf-home .home-card-meta { gap: 4px; font-size: 9px; }
  .zf-home .home-card-actions { flex-wrap: wrap; gap: 8px; padding-top: 10px; }
  .zf-home .home-card-actions .home-favorite { font-size: 10px; padding: 0 7px; }
  .zf-home .home-details { margin-left: auto; font-size: 10px; gap: 3px; }
  .zf-home .home-closing { gap: 8px; padding-bottom: 24px; font-size: 10px; }
  .zf-home .home-closing > span { font-size: 19px; }
  .zf-home .home-closing > a { font-size: 10px; }
  .zf-home .zf-footer { padding: 30px 16px; font-size: 11px; }
}
@media (max-width: 359px) {
  .zf-home .home-hero { padding: 24px 16px; }
  .zf-home .home-hero h1 { font-size: 28px; }
  .zf-home .home-search-icon { display: none; }
  .zf-home .home-resource-grid { grid-template-columns: minmax(0, 1fr); }
  .zf-home .home-closing { flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) {
  .zf-home .home-resource-card, .zf-home .home-card-image > img, .zf-home .home-image-arrow { transition: none; }
  .zf-home .home-resource-card:hover, .zf-home .home-resource-card:hover .home-card-image > img { transform: none; }
}
