/* ══════════════════════════════════════════════════════
   TimeLink — Apple Theme (Premium / Minimal / Dark)
   ══════════════════════════════════════════════════════ */

:root{
  /* 배경 */
  --bg:#000000;
  --bg2:#0a0a0c;
  --bg3:#131316;
  --card:#1c1c1e;
  --card2:#2c2c2e;
  --card3:#3a3a3c;

  /* 텍스트 */
  --t1:#f5f5f7;
  --t2:rgba(245,245,247,.72);
  --t3:rgba(245,245,247,.45);
  --t4:rgba(245,245,247,.25);

  /* 경계 */
  --bd:rgba(255,255,255,.08);
  --bd2:rgba(255,255,255,.15);
  --bd3:rgba(255,255,255,.22);

  /* 애플 액센트 */
  --accent:#0071E3;
  --accent-hover:#2997FF;
  --accent-soft:rgba(0,113,227,.12);
  --accent-glow:rgba(0,113,227,.35);

  /* 보조 */
  --green:#30D158;
  --red:#FF453A;
  --orange:#FF9F0A;
  --yellow:#FFD60A;
  --purple:#BF5AF2;
  --pink:#FF375F;
  --teal:#64D2FF;

  /* 폰트 */
  --fn:'Pretendard','-apple-system','BlinkMacSystemFont','Noto Sans KR',sans-serif;
  --fm:'SF Mono','JetBrains Mono','Consolas',monospace;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:var(--fn);
  background:var(--bg);
  color:var(--t1);
  line-height:1.5;
  letter-spacing:-.01em;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
img{max-width:100%;display:block}
::selection{background:var(--accent);color:#fff}

/* ── 스크롤바 ── */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.25)}

/* ── 컨테이너 ── */
.tl-wrap{max-width:980px;margin:0 auto;padding:0 22px}
.tl-wrap-wide{max-width:1200px;margin:0 auto;padding:0 22px}

/* ── 타이포 ── */
.tl-h1{font-size:clamp(38px,7vw,80px);font-weight:700;line-height:1.05;letter-spacing:-.03em}
.tl-h2{font-size:clamp(28px,4.5vw,48px);font-weight:700;line-height:1.1;letter-spacing:-.025em}
.tl-h3{font-size:clamp(20px,2.8vw,32px);font-weight:600;line-height:1.15;letter-spacing:-.02em}
.tl-h4{font-size:clamp(17px,2vw,22px);font-weight:600;line-height:1.25;letter-spacing:-.015em}
.tl-lead{font-size:clamp(16px,1.8vw,21px);color:var(--t2);line-height:1.55;letter-spacing:-.01em}
.tl-body{font-size:15px;color:var(--t2);line-height:1.6}
.tl-small{font-size:13px;color:var(--t3);line-height:1.5}
.tl-eyebrow{
  font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--accent);
}

/* ── 버튼 ── */
.tl-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 22px;border-radius:980px;border:none;
  font-size:15px;font-weight:500;letter-spacing:-.01em;
  transition:all .2s ease;cursor:pointer;white-space:nowrap;
}
.tl-btn-primary{background:var(--accent);color:#fff}
.tl-btn-primary:hover{background:var(--accent-hover);transform:scale(1.02)}
.tl-btn-secondary{background:var(--card2);color:var(--t1)}
.tl-btn-secondary:hover{background:var(--card3)}
.tl-btn-ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}
.tl-btn-ghost:hover{background:var(--accent-soft)}
.tl-btn-large{padding:16px 32px;font-size:17px}
.tl-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}

/* ── 카드 ── */
.tl-card{
  background:var(--card);
  border-radius:20px;
  padding:32px;
  border:1px solid var(--bd);
  transition:all .3s ease;
}
.tl-card:hover{border-color:var(--bd2)}
.tl-card-elevated{
  background:linear-gradient(180deg,var(--card) 0%,var(--bg2) 100%);
  box-shadow:0 20px 60px rgba(0,0,0,.4);
}

/* ── 인풋 ── */
.tl-input{
  width:100%;padding:14px 16px;
  background:var(--card2);
  border:1px solid var(--bd2);
  border-radius:12px;
  color:var(--t1);font-size:15px;font-family:var(--fn);
  outline:none;transition:all .2s;
}
.tl-input:focus{border-color:var(--accent);background:rgba(0,113,227,.05);box-shadow:0 0 0 4px var(--accent-soft)}
.tl-input::placeholder{color:var(--t4)}
textarea.tl-input{resize:vertical;min-height:120px;line-height:1.6}
select.tl-input{cursor:pointer}
select.tl-input option{background:var(--card);color:var(--t1)}

/* ── 배지 ── */
.tl-badge{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 14px;border-radius:980px;
  font-size:12px;font-weight:500;letter-spacing:.02em;
}
.tl-badge-accent{background:var(--accent-soft);color:var(--accent);border:1px solid rgba(0,113,227,.3)}
.tl-badge-green{background:rgba(48,209,88,.12);color:var(--green);border:1px solid rgba(48,209,88,.3)}
.tl-badge-red{background:rgba(255,69,58,.12);color:var(--red);border:1px solid rgba(255,69,58,.3)}
.tl-badge-neutral{background:var(--card2);color:var(--t2);border:1px solid var(--bd)}

/* ── 구분선 ── */
.tl-hr{height:1px;background:var(--bd);border:none;margin:0}

/* ── 네비게이션 ── */
.tl-nav{
  position:sticky;top:0;z-index:100;height:52px;
  display:flex;align-items:center;justify-content:space-between;
  padding:0 max(22px,4%);
  background:rgba(0,0,0,.72);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid var(--bd);
}
.tl-nav-logo{
  font-size:20px;font-weight:600;letter-spacing:-.02em;color:var(--t1);
}
.tl-nav-links{display:flex;gap:4px;align-items:center}
.tl-nav-links a{
  padding:7px 14px;border-radius:980px;font-size:13px;font-weight:400;
  color:var(--t2);transition:all .15s;
}
.tl-nav-links a:hover{color:var(--t1);background:rgba(255,255,255,.06)}
.tl-nav-links a.primary{
  background:var(--accent);color:#fff;font-weight:500;
  padding:7px 16px;
}
.tl-nav-links a.primary:hover{background:var(--accent-hover)}

@media(max-width:768px){
  .tl-nav-links a:not(.primary){display:none}
}

/* ── 푸터 ── */
.tl-footer{
  border-top:1px solid var(--bd);
  padding:44px max(22px,4%) 28px;
  margin-top:80px;
  font-size:12px;
  color:var(--t3);
}
.tl-footer-inner{max-width:1200px;margin:0 auto}
.tl-footer-grid{
  display:grid;grid-template-columns:2fr 1fr 1fr 1fr;
  gap:40px;margin-bottom:32px;
}
@media(max-width:768px){.tl-footer-grid{grid-template-columns:1fr 1fr;gap:24px}}
@media(max-width:480px){.tl-footer-grid{grid-template-columns:1fr}}
.tl-footer-brand{font-size:22px;font-weight:600;color:var(--t1);margin-bottom:10px;letter-spacing:-.02em}
.tl-footer-col-title{font-size:11px;font-weight:600;color:var(--t2);margin-bottom:12px;letter-spacing:.03em;text-transform:uppercase}
.tl-footer-col a{display:block;padding:4px 0;color:var(--t3);font-size:12px}
.tl-footer-col a:hover{color:var(--t1)}
.tl-footer-bottom{
  padding-top:24px;border-top:1px solid var(--bd);
  text-align:center;color:var(--t4);font-size:11px;
}

/* ── 섹션 ── */
.tl-section{padding:90px 0}
.tl-section-sm{padding:60px 0}
.tl-section-head{text-align:center;margin-bottom:60px}
.tl-section-head .tl-h2{margin-bottom:16px}
.tl-section-head .tl-lead{max-width:640px;margin:0 auto}

/* ── 그리드 ── */
.tl-grid{display:grid;gap:16px}
.tl-grid-2{grid-template-columns:repeat(2,1fr)}
.tl-grid-3{grid-template-columns:repeat(3,1fr)}
.tl-grid-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){
  .tl-grid-3,.tl-grid-4{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .tl-grid-2,.tl-grid-3,.tl-grid-4{grid-template-columns:1fr}
}

/* ── 애니메이션 ── */
.tl-fade{opacity:0;transform:translateY(20px);transition:opacity .7s ease,transform .7s ease}
.tl-fade.visible{opacity:1;transform:translateY(0)}

@keyframes tl-pulse{0%,100%{opacity:1}50%{opacity:.5}}
.tl-dot-live{
  display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--green);box-shadow:0 0 8px var(--green);
  animation:tl-pulse 2s infinite;
}

/* ── 토스트 ── */
.tl-toast-box{
  position:fixed;bottom:24px;right:24px;z-index:9999;
  display:flex;flex-direction:column;gap:8px;pointer-events:none;
}
.tl-toast{
  padding:12px 18px;border-radius:12px;
  background:rgba(28,28,30,.95);
  backdrop-filter:blur(20px);
  border:1px solid var(--bd2);
  font-size:13px;font-weight:500;
  max-width:340px;
  animation:tl-slide-in .3s ease;
}
.tl-toast.success{border-color:rgba(48,209,88,.4);color:var(--green)}
.tl-toast.error{border-color:rgba(255,69,58,.4);color:var(--red)}
.tl-toast.info{border-color:rgba(0,113,227,.4);color:var(--accent)}
@keyframes tl-slide-in{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

/* ── 유틸 ── */
.tl-text-center{text-align:center}
.tl-text-right{text-align:right}
.tl-mt-1{margin-top:8px}.tl-mt-2{margin-top:16px}.tl-mt-3{margin-top:24px}.tl-mt-4{margin-top:32px}
.tl-mb-1{margin-bottom:8px}.tl-mb-2{margin-bottom:16px}.tl-mb-3{margin-bottom:24px}.tl-mb-4{margin-bottom:32px}
.tl-accent{color:var(--accent)}
.tl-muted{color:var(--t2)}
.tl-dim{color:var(--t3)}
