/*
Theme Name: Java Journey
Theme URI: https://example.test/java-journey
Author: Java Journey
Description: Calm, evidence-first block theme for a public Java Backend learning journey.
Version: 0.4.0
Requires at least: 6.7
Requires PHP: 8.3
Text Domain: java-journey
*/

:root { --jj-ink:#172b3a; --jj-muted:#60707c; --jj-line:#d9e0e4; --jj-soft:#f1f4f4; --jj-accent:#176f68; --jj-accent-dark:#10534e; --jj-done:#24704d; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; }
a { text-underline-offset:.18em; }
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible { outline:3px solid #d48716; outline-offset:3px; }
.site-shell { display:flex; min-height:100vh; flex-direction:column; }
.site-main { flex:1; }
.journey-site-header { position:relative; background:#fafbfa; border-bottom:1px solid var(--jj-line); }
.journey-header__inner { display:flex; width:100%; min-width:0; align-items:center; justify-content:space-between; }
.journey-brand { display:flex; min-width:0; align-items:center; flex:0 1 auto; }
.journey-brand .wp-block-site-logo { flex:0 0 auto; line-height:0; }
.journey-brand .custom-logo-link { display:inline-flex; align-items:center; max-width:min(15rem,42vw); line-height:0; }
.journey-brand .custom-logo { display:block; width:auto; max-width:100%; max-height:2.125rem; object-fit:contain; }
.journey-brand-title { margin:0; font-weight:750; line-height:1.1; }
.journey-brand-title a { color:var(--jj-ink); text-decoration:none; }
body.wp-custom-logo .journey-brand-title { display:none; }
.journey-header__inner > .wp-block-navigation { margin-left:auto; }
.journey-site-header .wp-block-site-title a { color:var(--jj-ink); text-decoration:none; }
.journey-header-github { color:var(--jj-ink); font-size:.9rem; font-weight:700; text-decoration:none; }
.wp-block-navigation a { text-underline-offset:.3em; }
.wp-block-navigation .current-menu-item > a { text-decoration-thickness:2px; }
.journey-hero { display:grid; gap:2rem; max-width:none; padding-block:clamp(3rem,6vw,5.5rem) clamp(3.25rem,6vw,5.5rem); border-bottom:1px solid var(--jj-line); }
.journey-hero__copy { max-width:72rem; }
.journey-eyebrow { margin:0 0 .75rem; color:var(--jj-accent); font-size:.78rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.journey-hero h1 { max-width:18ch; margin:.25rem 0 1.25rem; color:var(--jj-ink); font-size:clamp(2.7rem,5.8vw,5.2rem); letter-spacing:-.045em; line-height:1; }
.journey-lead { max-width:48rem; color:#3f5361; font-size:clamp(1.12rem,2.4vw,1.45rem); line-height:1.55; }
.journey-actions { display:flex; align-items:center; flex-wrap:wrap; gap:1rem 1.5rem; margin-top:1.5rem; }
.journey-actions > * { min-width:0; max-width:100%; }
.journey-button { display:inline-flex; min-height:2.85rem; align-items:center; justify-content:center; padding:.65rem 1rem; border:1px solid var(--jj-accent); border-radius:.25rem; color:#fff; background:var(--jj-accent); font-weight:750; text-decoration:none; }
.journey-button:hover { color:#fff; background:var(--jj-accent-dark); }
.journey-text-link { color:var(--jj-ink); font-weight:750; text-decoration-color:#9aabb4; }
.journey-external-link { white-space:nowrap; }
.journey-hero__facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); max-width:43rem; margin:2.25rem 0 0; border-top:1px solid var(--jj-line); }
.journey-hero__facts div { padding:1rem 1rem 0 0; }
.journey-hero__facts dt,.journey-status__grid dt,.journey-status dt,.journey-now dt { color:var(--jj-muted); font-size:.78rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.journey-hero__facts dd,.journey-status__grid dd,.journey-status dd,.journey-now dd { margin:.25rem 0 0; color:var(--jj-ink); font-weight:700; }
.journey-hero__photo img { display:block; width:min(100%,24rem); height:auto; border-radius:.35rem; }
.journey-section,.journey-page-intro { margin-block:clamp(3.5rem,7vw,6rem); }
.journey-section__heading,.journey-page-intro { max-width:48rem; }
.journey-section__heading h2,.journey-page-intro h2,.journey-about h2,.journey-now h2 { margin:.4rem 0 .8rem; color:var(--jj-ink); font-size:clamp(1.75rem,4vw,3rem); letter-spacing:-.035em; }
.journey-current { padding-block:clamp(2rem,4.5vw,3.25rem); border-block:1px solid var(--jj-line); }
.journey-track { display:grid; grid-template-columns:repeat(6,1fr); margin:2rem 0 1.6rem; padding:0; list-style:none; }
.journey-track li { position:relative; display:flex; min-width:0; flex-direction:column; gap:.25rem; padding:1.15rem .75rem 0 0; border-top:2px solid var(--jj-line); color:var(--jj-muted); font-size:.78rem; font-weight:750; }
.journey-track li::before { position:absolute; top:-.42rem; left:0; width:.72rem; height:.72rem; border:2px solid #fafbfa; border-radius:50%; background:#aab5bb; content:""; }
.journey-track li small { color:var(--jj-muted); font-size:.66rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.journey-track li.is-completed { border-color:#b9d4c6; color:var(--jj-done); }
.journey-track li.is-completed::before { background:var(--jj-done); }
.journey-track li.is-current { border-color:var(--jj-accent); color:var(--jj-ink); }
.journey-track li.is-current::before { background:var(--jj-accent); box-shadow:0 0 0 .28rem #dcecea; }
.journey-track li.is-current small { color:var(--jj-accent-dark); }
.journey-track li.is-future { border-style:dashed; }
.journey-progress { max-width:54rem; margin:0 0 1.4rem; }
.journey-progress--wide { margin-top:2rem; }
.journey-progress__meta { display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; margin-bottom:.55rem; color:#40535f; font-size:.9rem; }
.journey-progress__meta strong { color:var(--jj-ink); }
.journey-progress__track { overflow:hidden; height:.5rem; background:#dfe5e7; }
.journey-progress__track span { display:block; height:100%; background:var(--jj-accent); }
.journey-status__grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; margin:0; border-top:0; }
.journey-status__grid div { min-width:0; padding:1rem 1rem 1.1rem; border:1px solid var(--jj-line); background:#fff; }
.journey-status__grid dd { overflow-wrap:anywhere; }
.journey-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.journey-grid--three { grid-template-columns:repeat(3,minmax(0,1fr)); }
.journey-roadmap-preview { display:grid; grid-template-columns:repeat(7,minmax(min(17rem,100%),1fr)); overflow-x:auto; gap:.75rem; padding-bottom:.75rem; }
.journey-card { padding:1.3rem; border:1px solid var(--jj-line); border-radius:.25rem; background:#fff; }
.journey-card h3 { margin:.8rem 0 .55rem; color:var(--jj-ink); font-size:1.22rem; line-height:1.25; }
.journey-card p { color:#50626e; overflow-wrap:anywhere; word-break:normal; }
.journey-card a { overflow-wrap:anywhere; }
.journey-card__meta { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.75rem; color:var(--jj-muted); font-size:.7rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.journey-roadmap-preview .journey-card__meta { align-items:flex-start; flex-direction:column; justify-content:flex-start; gap:.4rem; }
.journey-badge { display:inline-flex; min-height:1.6rem; align-items:center; padding:0 .55rem; border-radius:999px; background:#e7ebed; color:#5b6972; font-size:.65rem; font-weight:850; letter-spacing:.06em; }
.journey-badge--current,.journey-badge--active { background:#dcecea; color:var(--jj-accent-dark); }
.journey-badge--done,.journey-badge--released,.journey-badge--completed { background:#e0eee5; color:var(--jj-done); }
.journey-milestone--current { border-color:var(--jj-accent); }
.journey-milestone--done { border-left:4px solid var(--jj-done); }
.journey-project__stack { font-size:.82rem; font-weight:750; }
.journey-links { display:flex; flex-wrap:wrap; gap:.75rem 1.2rem; margin:1rem 0 0; padding:0; list-style:none; }
.journey-card__actions { display:flex; align-items:center; flex-wrap:wrap; gap:.65rem 1.2rem; margin-top:1rem; }
.journey-week--current { border-color:var(--jj-accent); }
.journey-week--completed { border-left:4px solid var(--jj-done); }
.journey-week--future { border-style:dashed; }
.journey-empty { max-width:52rem; padding:1.4rem; border-left:3px solid #aeb9bf; background:var(--jj-soft); color:#4b5e69; }
.journey-empty p:last-child { margin-bottom:0; }
.journey-empty--after { margin-top:1.25rem; }
.journey-timeline { position:relative; display:grid; gap:1rem; max-width:52rem; padding:0 0 0 2rem; list-style:none; }
.journey-timeline::before { position:absolute; top:0; bottom:0; left:.45rem; width:1px; background:var(--jj-line); content:""; }
.journey-timeline li { position:relative; }
.journey-timeline li::before { position:absolute; top:1.3rem; left:-1.9rem; width:.6rem; height:.6rem; border-radius:50%; background:#aab5bb; content:""; }
.journey-history { margin-block:clamp(3rem,7vw,6rem); }
.journey-history__timeline { max-width:58rem; margin-top:2rem; }
.journey-history__event--milestone::before { background:var(--jj-done) !important; }
.journey-history__event--milestone .journey-card { background:var(--jj-soft); }
.journey-history__scope { margin-top:1.5rem; }
.journey-week-navigation { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:1rem; margin-top:3rem; padding-block:1.25rem; border-block:1px solid var(--jj-line); }
.journey-week-navigation span:last-child { text-align:right; }
.journey-week-navigation a { font-weight:750; }
.journey-post-list { display:grid; gap:0; margin:0; padding:0; list-style:none; border-top:1px solid var(--jj-line); }
.journey-post-list li { padding:1.4rem 0; border-bottom:1px solid var(--jj-line); }
.journey-post-list time,.journey-muted,.wp-block-post-date { color:var(--jj-muted); font-size:.85rem; }
.journey-post-list h3 { margin:.3rem 0; }
.journey-cta { padding:clamp(1.5rem,4vw,3rem); border-top:3px solid var(--jj-accent); background:#eaf1f0; }
.journey-about { max-width:48rem; }
.journey-about section { padding-block:2.2rem; border-bottom:1px solid var(--jj-line); }
.journey-about section:first-child { padding-top:0; }
.journey-now { max-width:48rem; margin-block:2rem 6rem; }
.journey-now dl { margin-top:2rem; border-top:1px solid var(--jj-line); }
.journey-now dl div { display:grid; grid-template-columns:minmax(8rem,.7fr) minmax(0,1.5fr); gap:1rem; padding:1rem 0; border-bottom:1px solid var(--jj-line); }
.journey-privacy-note { margin-top:2rem; color:var(--jj-muted); font-size:.88rem; }
.journey-blog-list .wp-block-post { padding-block:2rem; border-bottom:1px solid var(--jj-line); }
.journey-blog-list .wp-block-post-title { margin:.4rem 0; }
.journey-article-header { margin-bottom:2.5rem; padding-bottom:2rem; border-bottom:1px solid var(--jj-line); }
.journey-article-footer { margin-top:3rem; padding-top:1.5rem; border-top:1px solid var(--jj-line); }
.journey-article-feedback { margin-block:3rem; padding:1.5rem; border-left:3px solid var(--jj-accent); background:#eaf1f0; }
.journey-site-footer { border-top:1px solid var(--jj-line); color:var(--jj-muted); font-size:.88rem; }

@media (min-width:56rem) { .journey-hero:has(.journey-hero__photo) { grid-template-columns:minmax(0,1fr) minmax(16rem,.42fr); align-items:center; } }
@media (max-width:48rem) {
  html.has-modal-open,html.has-modal-open body { overflow:hidden; overscroll-behavior:none; }
  .site-main,.journey-home,.journey-hero,.journey-hero__copy,.journey-section,.journey-page-intro,.journey-history { min-width:0; }
  .journey-header__inner { display:flex; width:100%; min-width:0; align-items:center; justify-content:space-between; }
  .journey-header__inner > .wp-block-navigation,.journey-header__inner .wp-block-navigation__responsive-container-open { margin-left:auto; }
  .journey-brand .custom-logo-link { max-width:min(12rem,52vw); }
  .journey-brand .custom-logo { max-height:1.875rem; }
  .journey-section,.journey-page-intro { margin-block:clamp(2.5rem,12vw,3.5rem); }
  .journey-hero { padding-block:clamp(2.35rem,11vw,3.5rem) clamp(2.5rem,11vw,3.75rem); }
  .journey-hero h1 { max-width:100%; font-size:clamp(1.65rem,9.4vw,2.45rem); overflow-wrap:normal; word-break:normal; }
  .journey-hero .journey-eyebrow { max-width:100%; font-size:clamp(.68rem,2.8vw,.78rem); letter-spacing:clamp(.04em,.7vw,.12em); line-height:1.5; overflow-wrap:anywhere; }
  .journey-hero__facts { margin-top:1.75rem; }
  .journey-hero__facts,.journey-status__grid { grid-template-columns:1fr; }
  .journey-hero__facts div,.journey-status__grid div { padding:1rem 0; border-bottom:1px solid var(--jj-line); }
  .journey-status__grid { gap:.75rem; }
  .journey-status__grid div { padding:1rem; border:1px solid var(--jj-line); }
  .journey-track { grid-template-columns:repeat(3,1fr); row-gap:1.5rem; margin-top:1.75rem; }
  .journey-grid,.journey-grid--three { grid-template-columns:minmax(0,1fr); }
  .journey-now dl div { grid-template-columns:1fr; gap:.2rem; }
  .journey-header__github-slot,.journey-header-github { display:none; }
  .wp-block-navigation__responsive-container.is-menu-open { position:fixed; inset:0; width:100%; max-width:none; height:100dvh; min-height:100dvh; margin:0; padding:0 !important; overflow-y:auto; background:#fafbfa !important; }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-close { width:100%; max-width:none; }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog { position:relative; width:100%; min-height:100dvh; padding:4.5rem max(1rem,env(safe-area-inset-right)) 1.5rem max(1rem,env(safe-area-inset-left)); }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close { position:absolute; top:max(1rem,env(safe-area-inset-top)); right:max(1rem,env(safe-area-inset-right)); margin:0; }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { display:flex; align-items:flex-start; justify-content:flex-start; padding-top:0; }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { align-items:flex-start; justify-content:flex-start; gap:.35rem; }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item { align-items:flex-start; justify-content:flex-start; width:100%; font-size:1.1rem; }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { align-self:flex-start; padding:.45rem 0; }
  .journey-history__timeline { padding-left:1.5rem; }
  .journey-timeline li::before { left:-1.4rem; }
  .journey-week-navigation { grid-template-columns:1fr; align-items:start; }
  .journey-week-navigation span:last-child { text-align:left; }
}
@media (max-width:25rem) {
  .journey-track { grid-template-columns:repeat(2,1fr); }
  .journey-page-intro h2,.journey-section__heading h2 { font-size:clamp(1.4rem,8.2vw,1.75rem); }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
