/* Shared presentation refinements for NexusLite-rendered pages. */
[hidden] { display: none !important; }
.reveal { opacity: 1; transform: none; }
.hero { min-height: auto; padding: var(--hero-offset) 0 var(--space-3xl); }
.hero-content { max-width: var(--hero-measure); padding: 0; }
.hero-title { font-size: var(--type-display); letter-spacing: -.055em; margin-bottom: 16px; }
.hero-greeting { margin-top: 0; }
.hero-description { max-width: 680px; font-size: 1.125rem; line-height: 1.8; margin: 24px auto 32px; }
.hero-buttons { margin-top: 24px; }
.hero-proof { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px 28px; margin: 32px 0 0; color: var(--text-muted); font-size: .875rem; }
.hero-proof a { text-decoration: underline; text-underline-offset: 4px; }
.hero-scroll { display: none; }
.section { padding-top: var(--space-section); padding-bottom: var(--space-section); }
.section-header { margin-bottom: 36px; }
.project-card { min-width: 0; }
.project-card-link { height: 100%; }
.project-card-cover { height: var(--card-cover-height); }
.project-card-cover-name { font-size: 1rem; letter-spacing: .06em; }
.project-card-body { flex: 1; }
.project-title { overflow-wrap: anywhere; }
.project-description { line-height: 1.7; }
.project-tags { gap: 6px; }
.project-header { display: block; }
.project-header-meta { margin: 20px 0; }
.page-header:has(.project-header) { text-align: left; padding-bottom: 48px; }
.page-header:has(.project-header) .page-header-subtitle { margin-left: 0; max-width: 760px; }
.project-header .page-header-title { font-size: var(--type-page); line-height: 1.12; overflow-wrap: anywhere; }
.project-demo { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
.demo-empty { padding: 36px; text-align: left; border-left: 3px solid var(--accent-red); }
.demo-empty-icon { display: none; }
.demo-empty p { margin-left: 0; }
.demo-frame iframe { width: 100%; min-height: 600px; background: #fafaf7; }
.filter-details { border-top: 1px solid var(--border-default); padding: 18px 0 0; margin-top: 20px; }
.filter-details summary { cursor: pointer; font-weight: 500; color: var(--text-secondary); padding: 8px 0; }
.filter-details[open] summary { margin-bottom: 16px; }
.filter-tag { min-height: var(--control-min); }
.filter-clear { min-height: 40px; }
.projects-filter-input { min-height: 52px; }
.projects-filter-meta { margin-top: 20px; }
.project-pager-name, .code-block { overflow-wrap: anywhere; }
.code-block { max-width: 100%; overflow-x: auto; }
:focus-visible { outline: var(--focus-ring); outline-offset: 5px; }
.navbar-theme-btn, .navbar-lang-link { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
@media (max-width: 767px) {
  .hero { padding: var(--hero-offset-mobile) 0 var(--space-2xl); }
  .hero-greeting { margin-top: 24px; }
  .hero-description { font-size: 1rem; margin-top: 20px; }
  .hero-proof { font-size: .8rem; gap: 12px; }
  .section { padding-top: var(--space-section-mobile); padding-bottom: var(--space-section-mobile); }
  .hero-buttons { display: grid; grid-template-columns: 1fr; gap: 12px; }
  .hero-buttons .btn { width: 100%; justify-content: center; }
  .page-header { padding-top: var(--hero-offset-mobile); }
  .project-demo { padding: 0 16px; }
  .demo-empty { padding: 24px; }
  .demo-frame iframe { min-height: 680px; }
  .filter-tag { min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

.hero-badge { margin-bottom: 24px; }
.hero-description { color: var(--text-secondary); }
.hero-subtitle { margin-bottom: 16px; }
.btn:disabled { opacity: .55; cursor: not-allowed; transform: none; }
:target { scroll-margin-top: 112px; }
html { scroll-padding-top:112px; }
.project-dialog { scroll-padding-block:80px 24px; }
.animate-fade-in-up { animation: none; opacity: 1; transform: none; }

.project-card-action { display:block; margin-top:20px; color:var(--text-primary); font-size:var(--type-small); font-weight:600; }
.footer-credit-link { text-decoration: underline; text-underline-offset: 3px; }
.page-header { padding-bottom: var(--space-2xl); }
.timeline-description a { text-decoration: underline; text-underline-offset: 3px; }
.blog-post-body :not(pre) > code { overflow-wrap: anywhere; }
.demo-empty h2 { font-size: 1.35rem; margin-bottom: var(--space-md); }
.blog-post-header { padding-top: var(--hero-offset); }
