/* ============================================================
   EDENIT — Compile  ·  main.css   (C안: 에디토리얼 / 벤토)
   토큰 → 베이스 → 버튼 → 네비 → 히어로 → 섹션 → 컴포넌트 → 반응형 → 접근성
   ============================================================ */

/* ---------- 1. Tokens ---------- */
:root{
  --paper:#f6f5f1; --ink:#15171c; --ink2:#5a606b; --card:#ffffff;
  --line:#e4e2da; --blue:#1f4dff; --blue2:#0a2bb5; --lime:#caf04a;
  --ok:#1a7f4b; --err:#c0362c;
  --r:16px; --container:1200px; --nav-h:70px;
  --shadow:0 22px 56px -28px rgba(0,0,0,.32);
}

/* ---------- 2. Base ---------- */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);
  font-family:"Inter","Pretendard","Malgun Gothic",sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,.display{font-family:"Archivo","Inter",sans-serif;letter-spacing:-.03em;font-weight:800}
.mono{font-family:"JetBrains Mono",monospace}
a{text-decoration:none;color:inherit}
img{max-width:100%;display:block}
.container-x{max-width:var(--container);margin:0 auto;padding:0 24px}
.eyebrow{font:700 12px/1 "JetBrains Mono",monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--blue)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:4px}

/* ---------- 3. Buttons (pill) ---------- */
.btn-ink{background:var(--ink);color:#fff;border-radius:999px;padding:11px 22px;font-weight:700;border:none;
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;transition:.18s;font-family:inherit;font-size:15px}
.btn-ink:hover{background:var(--blue);color:#fff}
.btn-line{border:1.5px solid var(--ink);color:var(--ink);border-radius:999px;padding:11px 22px;font-weight:700;background:transparent;
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;transition:.18s;font-family:inherit;font-size:15px}
.btn-line:hover{background:var(--ink);color:#fff}
.btn-lime{background:var(--lime);color:var(--ink);border-radius:999px;padding:11px 22px;font-weight:700;border:none;
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;transition:.18s;font-family:inherit;font-size:15px}
.btn-lime:hover{filter:brightness(.95)}

/* ---------- 4. Navbar ---------- */
.nav-x{position:fixed;inset:0 0 auto 0;z-index:1030;transition:.25s}
.nav-x .inner{display:flex;align-items:center;gap:26px;height:var(--nav-h)}
.nav-x.scrolled{background:rgba(246,245,241,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:9px;font:800 21px/1 "Archivo";color:var(--ink)}
.brand .dot{font:800 22px/1 "Archivo";color:var(--blue)}
.nav-links{display:flex;gap:4px;margin-left:auto;align-items:center}
.nav-links>a,.nav-links .navlink{color:var(--ink2);font-weight:600;padding:8px 14px;border-radius:8px;font-size:15px;background:none;border:none;cursor:pointer;font-family:inherit}
.nav-links>a:hover,.nav-links .navlink:hover{color:var(--ink);background:#ece9e1}
.nav-drop{position:relative}
.nav-drop .menu{position:absolute;top:calc(100% + 8px);left:0;min-width:240px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;box-shadow:var(--shadow);padding:8px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:.18s;list-style:none;margin:0}
.nav-drop:hover .menu,.nav-drop:focus-within .menu,.nav-drop .menu.open{opacity:1;visibility:visible;transform:none}
.nav-drop .menu a{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:9px;font-size:14px;font-weight:500;color:var(--ink)}
.nav-drop .menu a:hover{background:#f1eee6;color:var(--blue)}
.nav-drop .menu i{color:var(--blue);font-size:15px}
.navtoggle{margin-left:auto;border:none;background:none;font-size:26px;display:none;color:var(--ink);cursor:pointer}
.offcanvas-menu{padding:10px}
.offcanvas-menu a{display:block;padding:13px 14px;border-radius:9px;font-weight:700;color:var(--ink)}
.offcanvas-menu a:hover{background:#f1eee6}
.offcanvas-menu .grp{font:700 11px/1 "JetBrains Mono";letter-spacing:.14em;text-transform:uppercase;color:var(--ink2);padding:14px 14px 4px}
.offcanvas-menu .sub a{padding-left:28px;font-weight:500;color:var(--ink2)}

/* ---------- 5. Hero (markup headline · signature) ---------- */
.hero{padding:150px 0 64px}
.hero .tagline{font:700 13px/1 "JetBrains Mono";color:var(--ink2);margin-bottom:22px}
.hero .tagline .b{color:var(--blue)}
.hero h1{font-size:clamp(40px,8vw,104px);line-height:.92;font-weight:900;margin:0}
.hero h1 .mk{color:var(--blue);font-family:"JetBrains Mono";font-weight:700;font-size:.42em;vertical-align:middle}
.hero h1 .hl{background:var(--lime);padding:0 .08em;border-radius:4px}
.hero .sub{display:flex;gap:40px;flex-wrap:wrap;margin-top:34px;align-items:flex-end;justify-content:space-between}
.hero .sub p{font-size:19px;color:var(--ink2);max-width:460px;margin:0}
.hero .cta{display:flex;gap:10px;flex-wrap:wrap}

/* marquee strip */
.strip{border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);padding:14px 0;overflow:hidden;white-space:nowrap;margin-top:54px}
.strip .run{display:inline-flex;gap:0;animation:run 26s linear infinite;width:max-content}
.strip .run span{margin:0 24px;font:800 18px/1 "Archivo";text-transform:uppercase;color:var(--ink)}
.strip .run i{color:var(--blue);font-style:normal}
@keyframes run{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- 6. Statement band ---------- */
.value{background:var(--ink);color:#fff;padding:64px 0}
.value h2{font-size:clamp(24px,3.4vw,38px);margin:10px 0 14px;line-height:1.25}
.value h2 .hl{color:var(--lime)}
.value p{color:#aab2c0;margin:0;max-width:760px;font-size:17px}

/* ---------- 7. Section heads ---------- */
section{padding:92px 0}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;margin-bottom:42px}
.sec-head h2{font-size:clamp(30px,5vw,52px);margin:8px 0 0;line-height:1}
.sec-head p{color:var(--ink2);max-width:380px;margin:0}

/* ---------- 8. Bento solutions ---------- */
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}
.cell{background:var(--card);border:1.5px solid var(--line);border-radius:var(--r);padding:28px;transition:.2s;display:flex;flex-direction:column;position:relative;overflow:hidden}
.cell:hover{border-color:var(--ink);transform:translateY(-4px)}
.cell .no{font:700 13px/1 "JetBrains Mono";color:var(--ink2)}
.cell h3{font-size:23px;margin:14px 0 8px;font-weight:800}
.cell p{font-size:15px;color:var(--ink2);margin:0}
.cell .ic{font-size:30px;color:var(--blue);margin-top:auto;padding-top:18px}
.cell.big{grid-column:span 7;background:var(--ink);color:#fff;border-color:var(--ink)}
.cell.big .no,.cell.big p{color:#aab2c0}.cell.big .ic{color:var(--lime)}
.cell.c5{grid-column:span 5}.cell.c6{grid-column:span 6}
.cell .cmd{margin-top:16px;background:rgba(255,255,255,.08);border-radius:9px;padding:11px 13px;font:500 12.5px/1.5 "JetBrains Mono";color:#cdd6e6}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.chip{font:700 12px/1 "JetBrains Mono";padding:9px 13px;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;border:none;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:6px}
.chip:hover{background:var(--lime);color:var(--ink)}
.chip.dk{background:#eef0f4;color:var(--blue)}.chip.dk:hover{background:var(--blue);color:#fff}

/* ---------- 9. Works (editorial rows) ---------- */
.wlist{margin-top:4px}
.wrow{display:grid;grid-template-columns:60px 1fr auto;gap:20px;align-items:center;padding:22px 4px;border-top:1.5px solid var(--line);transition:.18s;width:100%;text-align:left}
.wrow:last-child{border-bottom:1.5px solid var(--line)}
.wrow:hover{padding-left:14px;background:linear-gradient(90deg,rgba(31,77,255,.05),transparent)}
.wrow .n{font:700 15px/1 "JetBrains Mono";color:var(--ink2)}
.wrow h4{font-size:22px;margin:0;font-weight:800}
.wrow .meta{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}
.wrow .tag{font:700 11px/1 "JetBrains Mono";color:var(--blue);letter-spacing:.06em}
.wrow .desc{font-size:14px;color:var(--ink2);margin:6px 0 0}
.wrow .go{font-size:22px;color:var(--ink2);transition:.18s}
.wrow:hover .go{color:var(--blue);transform:translateX(4px)}

/* ---------- 10. Clients marquee ---------- */
.clients{border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);padding:22px 0;overflow:hidden;white-space:nowrap}
.clients .run{display:inline-flex;animation:run 30s linear infinite;width:max-content}
.clients .run span{margin:0 30px;font:800 17px/1 "Archivo";color:#8b9075;letter-spacing:.01em}

/* ---------- 11. Contact + form (dark card) ---------- */
.contact{background:var(--ink);color:#fff;border-radius:24px;padding:60px;display:grid;grid-template-columns:1.05fr 1fr;gap:40px}
.contact h2{font-size:clamp(30px,4vw,46px);margin:0 0 14px;line-height:1}
.contact .lead{color:#aab2c0}
.cinfo{padding:0;margin:18px 0 0;list-style:none}
.cinfo li{display:flex;gap:12px;padding:10px 0;color:#cdd4df;font-size:15px;border-bottom:1px solid rgba(255,255,255,.08)}
.cinfo i{color:var(--lime)}
.cform .fld{margin-bottom:14px}
.cform label{display:block;font-size:13px;font-weight:700;margin-bottom:6px;color:#dbe1ea}
.cform label .req{color:var(--lime)}
.cform input,.cform textarea{width:100%;padding:12px 14px;border-radius:11px;border:1px solid #2c2f38;background:#0f1116;color:#fff;font:inherit;resize:vertical}
.cform input:focus,.cform textarea:focus{outline:2px solid var(--blue);outline-offset:-1px;border-color:transparent}
.cform input.invalid,.cform textarea.invalid{border-color:var(--err)}
.cform .err-msg{display:none;color:#ffb1a8;font-size:12px;margin-top:5px}
.cform .fld.has-error .err-msg{display:block}
.cform .send{width:100%;justify-content:center;margin-top:4px}
.cform .form-status{margin-top:10px;font-weight:700;font-size:13px;min-height:18px}
.cform .form-status.ok{color:var(--lime)}.cform .form-status.err{color:#ffb1a8}.cform .form-status.busy{color:#bcd6f2}

/* ---------- 12. Footer ---------- */
footer{padding:42px 0;color:var(--ink2);font-size:14px}
footer .brand{font-size:17px;color:var(--ink)}

/* ---------- 13. Demo modal ---------- */
.demo-modal .modal-content{border:none;border-radius:18px;overflow:hidden}
.demo-modal .modal-header{background:var(--ink);color:#fff;border:none;padding:14px 18px}
.demo-modal .modal-title{font:800 16px/1 "Archivo";display:flex;align-items:center;gap:8px}
.demo-modal .btn-close{filter:invert(1) grayscale(1) brightness(1.6)}
.demo-modal .modal-body{padding:0;background:var(--paper)}
.demo-modal iframe{display:block;width:100%;height:80vh;border:0}

/* ---------- 14. reveal / back-to-top ---------- */
.reveal{opacity:0;transform:translateY(20px);transition:.7s}
.reveal.in{opacity:1;transform:none}
#toTop{position:fixed;right:24px;bottom:24px;width:48px;height:48px;border-radius:50%;background:var(--ink);color:#fff;border:none;display:grid;place-items:center;font-size:18px;opacity:0;pointer-events:none;transition:.25s;z-index:1020;cursor:pointer}
#toTop.show{opacity:1;pointer-events:auto}

/* ---------- 15. Responsive ---------- */
@media(max-width:991px){
  .nav-links{display:none}.navtoggle{display:block}
  .cell.big,.cell.c5,.cell.c6{grid-column:span 12}
  .contact{grid-template-columns:1fr;padding:34px}
  .wrow{grid-template-columns:40px 1fr auto;gap:12px}
  .wrow h4{font-size:18px}
  .hero{padding:120px 0 50px}
  section{padding:64px 0}
}
@media(max-width:575px){ .contact{padding:24px} .hero .sub{gap:22px} }

/* ---------- 16. Reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .reveal{opacity:1;transform:none}
  .strip .run,.clients .run{animation:none}
}
