/* NextStep Education — dynamic guide library and text-guide reader */

.guide-live-library.hidden,
.guide-featured-card.hidden,
.guide-clear-filter.hidden,
[data-guide-static-fallback].hidden,
.guide-detail-shell.hidden,
.guide-detail-loading.hidden,
.guide-detail-error.hidden,
[data-guide-detail-toc].hidden { display: none !important; }

.guide-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.guide-featured-card {
  --guide-color: #2563eb;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 36px;
  align-items: center;
  overflow: hidden;
  margin-bottom: 34px;
  padding: 38px 40px;
  border: 1px solid color-mix(in srgb, var(--guide-color) 30%, #e2e8f0);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(circle at 87% 25%, color-mix(in srgb, var(--guide-color) 20%, transparent), transparent 34%),
    linear-gradient(135deg, color-mix(in srgb, var(--guide-color) 8%, #ffffff), #ffffff 66%);
  box-shadow: 0 18px 46px rgba(15, 23, 42, .07);
}

.guide-featured-card::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 5px;
  background: var(--guide-color);
}

.guide-featured-copy { position: relative; z-index: 1; max-width: 680px; }
.guide-featured-label { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 11px; color: #92400e; font-size: .72rem; font-weight: 800; letter-spacing: .045em; text-transform: uppercase; }
.guide-featured-label > span:first-child { color: #d97706; font-size: .95rem; }
.guide-featured-card h2 { margin: 10px 0 10px; color: var(--dark); font-size: clamp(1.45rem, 3vw, 2.15rem); line-height: 1.18; }
.guide-featured-card p { max-width: 640px; margin: 0 0 22px; color: var(--text-secondary); font-size: .94rem; line-height: 1.75; }
.guide-featured-mark { display: grid; place-items: center; width: 126px; height: 126px; border: 1px solid color-mix(in srgb, var(--guide-color) 30%, #fff); border-radius: 34px; color: #fff; background: linear-gradient(145deg, color-mix(in srgb, var(--guide-color) 80%, #fff), var(--guide-color)); box-shadow: 0 18px 38px color-mix(in srgb, var(--guide-color) 24%, transparent); transform: rotate(3deg); }
.guide-featured-mark span { font-size: 2rem; font-weight: 800; letter-spacing: -.07em; }
.guide-featured-mark small { margin-top: -27px; font-size: .56rem; font-weight: 800; letter-spacing: .22em; opacity: .85; }

.guide-card-badges { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.guide-card-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 5px 10px;
  border-radius: 999px;
  color: #334155;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  font-size: .67rem;
  font-weight: 750;
  line-height: 1.2;
}
.guide-card-badge.category::before { content: ''; width: 7px; height: 7px; flex: 0 0 7px; border-radius: 50%; background: var(--guide-color, #2563eb); }
.guide-card-badge.kind { color: #1e40af; border-color: #bfdbfe; background: #eff6ff; }

.guide-library-controls { display: flex; align-items: center; gap: 14px; margin-bottom: 30px; }
.guide-public-search { display: flex; align-items: center; gap: 9px; width: min(310px, 100%); flex: 0 0 min(310px, 100%); padding-left: 13px; border: 1.5px solid var(--border); border-radius: 999px; color: var(--text-secondary); background: #fff; transition: border-color .18s ease, box-shadow .18s ease; }
.guide-public-search:focus-within { border-color: var(--primary-light); box-shadow: 0 0 0 4px rgba(37, 99, 235, .09); }
.guide-public-search input { width: 100%; min-width: 0; padding: 10px 14px 10px 0; border: 0; outline: 0; color: var(--text); background: transparent; font: 500 .82rem/1.4 inherit; }
.guide-public-filters { display: flex; gap: 8px; min-width: 0; flex: 1; flex-wrap: wrap; }
.guide-public-filter { display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border: 1.5px solid var(--border); border-radius: 999px; color: var(--text-secondary); background: #fff; font: 700 .75rem/1.2 inherit; cursor: pointer; transition: color .18s ease, border-color .18s ease, background .18s ease; }
.guide-public-filter::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--guide-color, #94a3b8); }
.guide-public-filter[data-category="all"]::before { background: linear-gradient(135deg, #2563eb 0 50%, #d97706 50%); }
.guide-public-filter:hover { color: var(--primary); border-color: #93c5fd; }
.guide-public-filter.active { color: #1e3a8a; border-color: color-mix(in srgb, var(--guide-color, #2563eb) 45%, #bfdbfe); background: color-mix(in srgb, var(--guide-color, #2563eb) 9%, #fff); }

.guide-results-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 18px; }
.guide-results-heading h2 { margin: 0 0 4px; font-size: 1.35rem; }
.guide-results-heading p { margin: 0; color: var(--text-secondary); font-size: .76rem; }
.guide-clear-filter { border: 0; padding: 5px; color: var(--primary); background: none; font: 700 .72rem/1.2 inherit; cursor: pointer; }
.guide-clear-filter:hover { text-decoration: underline; }

.guide-public-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.guide-public-card {
  --guide-color: #2563eb;
  position: relative;
  display: flex;
  min-height: 300px;
  flex-direction: column;
  overflow: hidden;
  padding: 24px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fff;
  box-shadow: 0 5px 18px rgba(15, 23, 42, .025);
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.guide-public-card::before { content: ''; position: absolute; top: 0; right: 0; left: 0; height: 4px; background: var(--guide-color); }
.guide-public-card:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--guide-color) 40%, #cbd5e1); box-shadow: 0 15px 34px rgba(15, 23, 42, .09); }
.guide-public-card h3 { margin: 16px 0 9px; color: var(--dark); font-size: 1rem; line-height: 1.4; }
.guide-public-card > p { flex: 1; margin: 0 0 20px; color: var(--text-secondary); font-size: .82rem; line-height: 1.68; }
.guide-public-card-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: auto; }
.guide-public-card-footer .btn { align-self: auto; }
.guide-link-domain { min-width: 0; overflow: hidden; color: var(--text-secondary); font-size: .62rem; text-overflow: ellipsis; white-space: nowrap; }
.guide-action-link { display: inline-flex; align-items: center; gap: 7px; }
.guide-action-link .external-glyph { font-size: .72em; opacity: .75; }
.guide-action-link:focus-visible { outline: 3px solid rgba(37,99,235,.2); outline-offset: 3px; }
.guide-public-status:empty { display: none; }
.guide-public-status { margin-top: 22px; padding: 16px; border: 1px solid #fecaca; border-radius: var(--radius-sm); color: #991b1b; background: #fef2f2; text-align: center; font-size: .8rem; }
.guide-public-empty { grid-column: 1 / -1; display: grid; justify-items: center; gap: 10px; padding: 54px 20px; border: 1px dashed #cbd5e1; border-radius: var(--radius); color: var(--text-secondary); text-align: center; }
.guide-public-empty span[aria-hidden="true"] { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 16px; color: var(--primary); background: var(--primary-bg); font-size: 1.1rem; }
.guide-public-empty strong { color: var(--dark); }
.guide-public-empty p { margin: 0; font-size: .8rem; }

/* Plain-text guide reader */
.guide-reader-hero { position: relative; overflow: hidden; padding: 128px 0 62px; border-bottom: 1px solid var(--border); background: linear-gradient(145deg, #f8fafc, #fff 55%, #eff6ff); }
.guide-reader-hero::after { content: ''; position: absolute; top: 75px; right: -100px; width: 320px; height: 320px; border-radius: 50%; background: color-mix(in srgb, var(--guide-color, #2563eb) 12%, transparent); filter: blur(2px); }
.guide-reader-inner { position: relative; z-index: 1; max-width: 850px; }
.guide-reader-back { display: inline-flex; align-items: center; gap: 7px; margin-bottom: 26px; color: var(--text-secondary); font-size: .75rem; font-weight: 700; }
.guide-reader-back:hover { color: var(--primary); }
.guide-reader-badges { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 15px; }
.guide-reader-hero h1 { max-width: 800px; margin-bottom: 16px; font-size: clamp(2rem, 5vw, 3.45rem); line-height: 1.12; letter-spacing: -.035em; }
.guide-reader-summary { max-width: 760px; color: var(--text-secondary); font-size: 1.02rem; line-height: 1.8; }
.guide-reader-meta { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 24px; color: var(--text-secondary); font-size: .7rem; }
.guide-reader-meta span { display: inline-flex; align-items: center; gap: 6px; }
.guide-detail-loading,
.guide-detail-error { display: grid; min-height: 440px; place-items: center; padding: 130px 24px 70px; text-align: center; }
.guide-detail-state-card { max-width: 520px; }
.guide-detail-state-icon { display: grid; place-items: center; width: 56px; height: 56px; margin: 0 auto 16px; border-radius: 18px; color: var(--primary); background: var(--primary-bg); font-size: 1.25rem; }
.guide-detail-state-card h1 { margin-bottom: 9px; font-size: 1.65rem; }
.guide-detail-state-card p { margin-bottom: 22px; color: var(--text-secondary); }
.guide-reader-body { padding: 54px 0 90px; }
.guide-reader-layout { display: grid; grid-template-columns: minmax(0, 1fr) 235px; gap: 58px; align-items: start; }
.guide-reader-article { min-width: 0; }
.guide-reader-section { scroll-margin-top: 100px; padding: 0 0 38px; margin-bottom: 38px; border-bottom: 1px solid var(--border); }
.guide-reader-section:last-child { margin-bottom: 0; border-bottom: 0; }
.guide-reader-section h2 { margin: 0 0 15px; color: var(--dark); font-size: 1.35rem; line-height: 1.35; }
.guide-reader-section-content { color: var(--text); font-size: .96rem; line-height: 1.88; white-space: pre-line; overflow-wrap: anywhere; }
.guide-reader-section-content p { margin: 0 0 1em; }
.guide-reader-toc { position: sticky; top: 100px; padding: 17px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; }
.guide-reader-toc h2 { margin: 0 0 12px; font-size: .75rem; letter-spacing: .05em; text-transform: uppercase; }
.guide-reader-toc nav { display: grid; gap: 5px; }
.guide-reader-toc a { display: block; padding: 7px 9px; border-left: 2px solid #e2e8f0; color: var(--text-secondary); font-size: .72rem; line-height: 1.4; }
.guide-reader-toc a:hover,
.guide-reader-toc a.active { color: var(--primary); border-left-color: var(--guide-color, var(--primary)); background: #f8fafc; }
.guide-reader-cta { margin-top: 48px; padding: 26px; border: 1px solid #bfdbfe; border-radius: var(--radius-lg); background: linear-gradient(135deg, #eff6ff, #fff); text-align: center; }
.guide-reader-cta h2 { margin-bottom: 7px; font-size: 1.2rem; }
.guide-reader-cta p { margin-bottom: 18px; color: var(--text-secondary); font-size: .82rem; }

@media (max-width: 1000px) {
  .guide-public-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .guide-reader-layout { grid-template-columns: minmax(0, 1fr) 210px; gap: 34px; }
}

@media (max-width: 760px) {
  .guide-featured-card { grid-template-columns: 1fr; padding: 30px 26px; }
  .guide-featured-mark { display: none; }
  .guide-library-controls { align-items: stretch; flex-direction: column; }
  .guide-public-search { width: 100%; flex-basis: auto; }
  .guide-public-filters { flex-wrap: nowrap; overflow-x: auto; padding: 2px 1px 8px; scrollbar-width: thin; }
  .guide-public-filter { flex: 0 0 auto; }
  .guide-public-grid { grid-template-columns: 1fr; }
  .guide-public-card { min-height: 260px; }
  .guide-reader-hero { padding-top: 108px; }
  .guide-reader-layout { grid-template-columns: 1fr; }
  .guide-reader-toc { position: static; grid-row: 1; }
}

@media (max-width: 480px) {
  .guide-featured-card { padding: 25px 20px; border-radius: var(--radius); }
  .guide-results-heading { align-items: flex-start; flex-direction: column; }
  .guide-public-card { padding: 21px 19px; }
  .guide-public-card-footer { align-items: flex-start; flex-direction: column; }
  .guide-reader-hero { padding-bottom: 45px; }
  .guide-reader-body { padding-top: 38px; }
  .guide-reader-section { padding-bottom: 30px; margin-bottom: 30px; }
}

@media (prefers-reduced-motion: reduce) {
  .guide-public-card { transition: none; }
  .guide-public-card:hover { transform: none; }
}
