/* Connple — shared type scale (loaded last on every page).
   One tier per role so every page reads with the same rhythm.
   Special, measured elements (hero headline, timeline years, stat counters,
   team-culture clipped headline/values) are intentionally left alone. */

:root{
  --t-page:clamp(36px,4.2vw,56px);
  --t-section:clamp(28px,3vw,40px);
  --t-sub:clamp(22px,2.1vw,28px);
  --t-card:19px;
  --t-lead:18px;
  --t-body:16px;
  --t-caption:13px;
}

/* T1 — page titles */
.svc-intro__title,
.careers-head__title,
.news-head__title{
  font-size:var(--t-page);
  font-weight:800;
  line-height:1.3;
  letter-spacing:-0.025em;
}
/* article / job detail titles (long, so one step down) */
.detail-title,
.article-title{
  font-size:clamp(28px,3vw,40px);
  font-weight:700;
  line-height:1.38;
  letter-spacing:-0.02em;
}

/* T2 — section titles */
.stats__title,
.history__title,
.home-news__title,
.techs__title,
.sec-title,
.ts-title{
  font-size:var(--t-section);
  font-weight:800;
  line-height:1.4;
  letter-spacing:-0.02em;
}

/* T3 — sub-headings / item names */
.pv__name,
.we-title,
.tech__title--lg,
.jobs-guide .sec__title,
.modal__title{
  font-size:var(--t-sub);
  font-weight:700;
  line-height:1.4;
  letter-spacing:-0.015em;
}

/* T4 — card & list titles */
.tech__title,
.benefit__title,
.hn-card__title,
.news-card__title,
.value__title,
.step__name,
.pv__spec-title{
  font-size:var(--t-card);
  font-weight:700;
  line-height:1.45;
  letter-spacing:-0.01em;
}
.job-row__title{ font-size:clamp(19px,1.8vw,22px); font-weight:700; letter-spacing:-0.01em; }

/* Lead — the sentence under a title */
.svc-intro__sub,
.sec-head__sub,
.sec-sub,
.ts-desc,
.sec__sub{
  font-size:var(--t-lead);
  font-weight:500;
  line-height:1.6;
  letter-spacing:-0.01em;
}
.pv__lead{ font-size:17px; font-weight:600; }
/* muted colour only for leads on white — photo heroes keep their own colour */
.sec-head__sub, .sec-sub, .ts-desc, .sec__sub{ color:var(--text-secondary); }

/* Body */
.tech__desc,
.benefit__desc,
.value__desc,
.step__desc,
.pv__desc,
.we-desc,
.svc__desc,
.nf__desc,
.sec__body p,
.list li{
  font-size:var(--t-body);
  line-height:1.7;
  letter-spacing:-0.005em;
}

/* Captions / eyebrows */
.tech__label,
.svc__label,
.sec__eyebrow,
.job-group__label,
.stat__label{
  font-size:var(--t-caption);
  font-weight:600;
  letter-spacing:0.04em;
}

@media (max-width:768px){
  :root{
    --t-page:34px;
    --t-section:26px;
    --t-sub:22px;
    --t-card:18px;
    --t-lead:16px;
  }
  .detail-title, .article-title{ font-size:28px; }
  .job-row__title{ font-size:19px; }
}

/* line breaking: no orphaned last words, keep Korean words whole */
h1, h2, h3, h4,
.svc-intro__sub, .sec-head__sub, .sec-sub, .ts-desc, .sec__sub,
.tch__title, .tch__desc, .pv__lead{
  text-wrap:balance;
  word-break:keep-all;
}
p, li, dd{ text-wrap:pretty; word-break:keep-all; }

/* same breathing room between the last content block and the footer, every page */
main:not(.nf) > :last-child{ padding-bottom:200px !important; margin-bottom:0; }
@media (max-width:768px){ main:not(.nf) > :last-child{ padding-bottom:120px !important; } }

/* shared reveal — hidden from first paint (html.js-rv), shown with .rv-in */
html:not(.js-rv) :is(.reveal, .stat, .tl-year, .tl-list, .tl-icons, .mission__actions, .we-reveal, .gallery__item, .careers-hero img){
  opacity:1 !important; transform:none !important; transition:none !important;
}
html:not(.js-rv) .careers-hero::after{ opacity:1; transition:none; }
@media (prefers-reduced-motion:no-preference){
  html.js-rv :is(.hstats, .news-filter, .filter-count, .pagination, .svc-intro__title, .svc-intro__sub, .careers-head__title, .news-head__title, .news-head__sub, .detail-title, .article-title,
    .tch__head, .tstats, .prods .sec-head, .pills, .pv__media, .pv__info, .home-news__head, .jobs-guide .sec, .article-body, .detail-body,
    .tch__grid > *, .news-grid > *, .news-list > *, .job-board > *, .hn-grid > *, .home-news__grid > *):not(.rv-in){
    opacity:0; transform:translateY(16px);
  }
  .rv{ transition:opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1); }
  .pv__info.rv{ transition-delay:.12s; }
  /* page-specific load animations give way to the shared reveal */
  html.js-rv .news-card, html.js-rv .job-row, html.js-rv .job-group{ animation:none !important; }
  html.js-rv .rv.rv-in{ opacity:1 !important; transform:none !important; }
}

/* article pages: no reveal — show immediately */
html.js-rv .article-title, html.js-rv .article-body{ opacity:1 !important; transform:none !important; transition:none !important; }

/* job detail / apply header: no entrance animation */
html.js-rv .jd-head, html.js-rv .jd-head *{ opacity:1 !important; transform:none !important; transition:none !important; }
