/* ==========================================================================
   Growth Lab — landing (홈 / 소개 / 서비스 / 로그인)
   ========================================================================== */

body.landing{overflow:hidden}

.grain{
  position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;
  background:
    radial-gradient(900px 520px at 50% -10%,var(--accent-soft),transparent 70%),
    radial-gradient(700px 420px at 90% 110%,rgba(255,255,255,.035),transparent 70%);
}
:root[data-theme="light"] .grain{opacity:.75}

/* ---------------- top nav ---------------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.1rem clamp(1.1rem,4vw,2.6rem);
}
.brand{display:flex;align-items:center;gap:.55rem;font-weight:800;letter-spacing:-.02em;font-size:1.02rem}
.brand .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.nav-links{display:flex;align-items:center;gap:.25rem}
.nav-links button{
  height:36px;padding:0 .95rem;border-radius:10px;font-size:.875rem;font-weight:600;color:var(--text-2);
  transition:color var(--dur),background var(--dur);
}
.nav-links button:hover{color:var(--text);background:var(--hover)}
.nav-links button.on{color:var(--text);background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--border)}
.nav-links .who{
  display:flex;align-items:center;gap:.5rem;height:36px;padding:0 .4rem 0 .8rem;border-radius:10px;
  background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--border);font-size:.83rem;font-weight:600;
}
.nav-links .who .av{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:.72rem}

/* ---------------- pages ---------------- */
.page{
  position:relative;z-index:1;height:100vh;
  display:none;flex-direction:column;
  padding:5.5rem clamp(1.2rem,5vw,3rem) 2rem;
}
.page.on{display:flex;animation:rise .32s var(--ease)}

/* ── 홈 ── */
#page-home{align-items:center;justify-content:center;text-align:center;gap:2.6rem}
.home-eyebrow{
  display:inline-flex;align-items:center;gap:.45rem;padding:.32rem .8rem;border-radius:99px;
  border:1px solid var(--border);background:var(--panel);font-size:.76rem;color:var(--text-2);letter-spacing:.02em;
}
.home-eyebrow b{color:var(--accent);font-weight:700}
.home-title{
  font-size:clamp(1.5rem,3.6vw,2.5rem);font-weight:800;line-height:1.45;letter-spacing:-.03em;
  max-width:22ch;
}
.home-title .soft{color:var(--muted);font-weight:700}
.home-sub{color:var(--text-2);font-size:clamp(.9rem,1.5vw,1.02rem);line-height:1.9;max-width:46ch}
.home-cta{display:flex;flex-direction:column;align-items:center;gap:.9rem}
.start-btn{
  height:76px;min-width:290px;padding:0 2.6rem;border-radius:999px;
  background:var(--text);color:var(--bg);font-size:1.5rem;font-weight:800;letter-spacing:-.02em;
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),filter var(--dur);
  box-shadow:0 18px 44px -18px rgba(0,0,0,.6);
}
.start-btn:hover{transform:translateY(-2px);filter:brightness(.94)}
.start-btn:active{transform:translateY(0)}
.home-note{font-size:.78rem;color:var(--faint)}
.home-keys{
  position:absolute;bottom:2rem;left:0;right:0;display:flex;justify-content:center;gap:2.2rem;
  font-size:.74rem;color:var(--faint);letter-spacing:.14em;text-transform:uppercase;
}

/* ── 소개 (PPT) ── */
#page-about{align-items:center;justify-content:center}
.deck{width:min(1000px,100%);display:flex;flex-direction:column;gap:1.1rem}
.slide{
  position:relative;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-xl);
  padding:clamp(1.6rem,4vw,3rem);min-height:min(60vh,470px);
  display:none;box-shadow:var(--shadow);
}
.slide.on{display:block;animation:rise .3s var(--ease)}
.slide .num{position:absolute;top:1.4rem;right:1.8rem;font-size:.75rem;color:var(--faint);letter-spacing:.16em}
.slide h2{font-size:clamp(1.25rem,2.6vw,1.8rem);font-weight:800;letter-spacing:-.02em;margin-bottom:.5rem}
.slide .lead{color:var(--muted);font-size:.9rem;margin-bottom:1.7rem}
.slide .lead + .lead{margin-top:-1.25rem}
.slide .lead a{color:var(--muted);border-bottom:1px solid var(--border);transition:color var(--dur),border-color var(--dur)}
.slide .lead a:hover{color:var(--accent);border-color:var(--accent-line)}
.slide-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.9rem}
.slide-card{background:var(--bg-2);border:1px solid var(--border-soft);border-radius:var(--r-md);padding:1.1rem}
.slide-card .k{font-size:.78rem;color:var(--accent);font-weight:700;letter-spacing:.04em;margin-bottom:.45rem}
.slide-card .t{font-weight:700;margin-bottom:.35rem;font-size:.96rem}
.slide-card .d{font-size:.83rem;color:var(--text-2);line-height:1.75}
.steps{display:flex;flex-direction:column;gap:.65rem}
.step{display:flex;gap:.9rem;align-items:flex-start;background:var(--bg-2);border:1px solid var(--border-soft);border-radius:var(--r-md);padding:.9rem 1.1rem}
.step .n{flex:none;width:26px;height:26px;border-radius:8px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-size:.78rem;font-weight:800}
.step .t{font-weight:700;font-size:.92rem}
.step .d{font-size:.83rem;color:var(--text-2)}
.quote-big{font-size:clamp(1.1rem,2.4vw,1.5rem);line-height:1.75;font-weight:700;letter-spacing:-.02em;max-width:34ch}
.quote-big span{color:var(--accent)}
.maker{display:flex;gap:1rem;align-items:center;margin-top:1.6rem;padding-top:1.4rem;border-top:1px solid var(--border-soft)}
.maker .av{width:46px;height:46px;border-radius:14px;background:linear-gradient(140deg,var(--accent),#8b5cf6);display:grid;place-items:center;color:#fff;font-weight:800}
.deck-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.dots{display:flex;gap:.4rem}
.dots button{width:26px;height:5px;border-radius:99px;background:var(--border);transition:background var(--dur),width var(--dur)}
.dots button.on{background:var(--accent);width:40px}

/* ── 서비스 (설정) ── */
#page-service{align-items:center;justify-content:flex-start;overflow:auto}
.settings-wrap{width:min(900px,100%);padding-bottom:2rem}
.settings-head{margin-bottom:1.6rem}
.settings-head h2{font-size:1.5rem;font-weight:800;letter-spacing:-.02em}
.settings-head p{color:var(--muted);font-size:.88rem;margin-top:.3rem}
.set-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:1.3rem 1.4rem;margin-bottom:1rem}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:1.4rem;padding:.85rem 0;border-bottom:1px solid var(--border-soft)}
.set-row:last-child{border-bottom:0}
.set-row .lbl{font-weight:600;font-size:.92rem}
.set-row .sub{font-size:.78rem;color:var(--muted);margin-top:.15rem}
.seg{display:flex;gap:.3rem;background:var(--bg-2);border:1px solid var(--border);border-radius:11px;padding:3px}
.seg button{height:32px;padding:0 .85rem;border-radius:8px;font-size:.82rem;font-weight:600;color:var(--muted);transition:all var(--dur)}
.seg button.on{background:var(--panel-2);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.2),inset 0 0 0 1px var(--border)}
.swatches{display:flex;gap:.45rem}
.swatch{width:28px;height:28px;border-radius:9px;border:2px solid transparent;transition:transform var(--dur)}
.swatch.on{border-color:var(--text);transform:scale(1.06)}
input[type=range]{width:190px;accent-color:var(--accent)}
.preview-box{
  margin-top:.9rem;background:var(--bg-2);border:1px solid var(--border-soft);border-radius:var(--r-md);padding:1.1rem 1.2rem;
}
.preview-box h4{font-size:1rem;font-weight:700;margin-bottom:.3rem}
.preview-box p{font-size:.88rem;color:var(--text-2)}

/* ---------------- 게스트 로딩 화면 ---------------- */
.loader{
  position:fixed;inset:0;z-index:300;
  display:grid;place-items:center;padding:2rem;
  background:var(--bg);
  animation:fade .25s var(--ease);
  cursor:pointer;
}
.loader::before{
  content:'';position:absolute;inset:0;
  background:radial-gradient(760px 480px at 50% 42%,var(--accent-soft),transparent 72%);
}
.loader.out{opacity:0;transition:opacity .22s var(--ease)}
.loader-inner{position:relative;width:min(640px,100%);display:flex;flex-direction:column;align-items:center;gap:2.2rem;text-align:center}
.loader-brand{display:flex;align-items:center;gap:.55rem;font-weight:800;letter-spacing:-.02em;color:var(--text-2);font-size:.95rem}
.loader-brand .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px var(--accent-soft);animation:pulse 1.6s var(--ease) infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 4px var(--accent-soft)}50%{box-shadow:0 0 0 12px transparent}}

/* 문구가 서서히 나타났다 서서히 사라짐 */
.loader-tip{
  min-height:118px;display:flex;flex-direction:column;align-items:center;gap:.85rem;
  opacity:0;transform:translateY(10px);
  transition:opacity .48s var(--ease),transform .48s var(--ease);
}
.loader-tip.in{opacity:1;transform:none}
.loader-tip .k{
  display:inline-flex;align-items:center;height:26px;padding:0 .8rem;border-radius:99px;
  background:var(--accent-soft);border:1px solid var(--accent-line);
  font-size:.74rem;font-weight:700;letter-spacing:.06em;color:var(--text);
}
.loader-tip .v{font-size:clamp(1rem,2.1vw,1.25rem);line-height:1.85;color:var(--text-2);font-weight:500}
.loader-tip .v b{color:var(--text);font-weight:800}
.loader-bar{width:min(320px,80%);height:3px;border-radius:99px;background:var(--border);overflow:hidden}
.loader-bar i{display:block;height:100%;width:0;background:var(--accent);border-radius:99px}
.loader-skip{font-size:.74rem;color:var(--faint);letter-spacing:.04em}

/* ---------------- auth modal ---------------- */
.tabs{display:flex;gap:.3rem;background:var(--bg-2);border:1px solid var(--border);border-radius:11px;padding:3px;margin-bottom:1.4rem}
.tabs button{flex:1;height:34px;border-radius:8px;font-size:.85rem;font-weight:700;color:var(--muted)}
.tabs button.on{background:var(--panel-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--border)}
.auth-note{margin-top:1rem;font-size:.75rem;color:var(--faint);line-height:1.7;text-align:center}

@media(max-width:720px){
  .nav-links button{padding:0 .6rem;font-size:.82rem}
  .start-btn{height:64px;min-width:0;width:100%;font-size:1.25rem}
  .home-keys{display:none}
  .page{height:auto;min-height:100vh}
  body.landing{overflow:auto}
}
