// ─── SVG Icons ─────────────────────────────────────────────────────────────── const IconShield = () => (); const IconMail = () => (); const IconNetwork = () => (); const IconAI = () => (); const IconChat = () => (); const IconClose = () => (); const IconArrow = () => (); const IconMenu = () => (); const IconCheck = () => (); const IconPlay = () => (); const IconUpload = () => (); const IconTrend = () => (); const IconPrivacy = () => (); // ─── 3ES Soft Brand Logo (Strong · Stable · Satisfied) — 컬러 S 글리프 3개 ── const Logo3ES = ({ size = 32, showText = true, showTagline = false, dark = false, compact = false, onClick }) => { const h = size * 1.2; return (
3ES Soft
{!compact && ( Strong / Stable / Satisfied )} {showTagline && ( ㈜삼에스소프트 )}
); }; const IconSpamOut = () => (); const IconCheckOut = () => (); const IconArch5 = () => (); const IconEDR = () => (); const IconMDR = () => (); const IconSniper = () => (); const IconInsight = () => (); const IconNac = () => (); const IconCce = () => (); const IconCve = () => (); const solIcons = { system:, email:, network:, ai:, privacy:, mailinsight:, genian:, cce:, cve:, spamout:, checkout:, arch5:, edr:, mdr:, sniper: }; // ─── Utility ────────────────────────────────────────────────────────────────── const useScrollReveal = () => { React.useEffect(() => { const els = document.querySelectorAll('.reveal'); const obs = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('revealed'); }); }, { threshold: 0.1 }); els.forEach(el => obs.observe(el)); return () => obs.disconnect(); }); }; // ─── Global Styles ──────────────────────────────────────────────────────────── const globalStyles = ` .reveal{opacity:0;transform:translateY(28px);transition:opacity 0.6s ease,transform 0.6s ease;animation:revealFallback 0.6s ease 0.9s forwards} .reveal.revealed{opacity:1;transform:none;animation:none} @keyframes revealFallback{to{opacity:1;transform:none}} .reveal-d1{transition-delay:0.1s}.reveal-d2{transition-delay:0.2s}.reveal-d3{transition-delay:0.3s}.reveal-d4{transition-delay:0.4s} /* NAV */ .nav-wrap{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(10,18,38,0.72);backdrop-filter:blur(26px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border-bottom:1px solid rgba(255,255,255,0.06);transition:background .4s ease,border-color .4s ease,box-shadow .4s ease} .nav-wrap::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,rgba(103,232,249,0.35),rgba(37,99,235,0.28),transparent);opacity:0;transition:opacity .4s ease} .nav-wrap.scrolled{background:rgba(4,9,22,0.94);border-bottom-color:rgba(255,255,255,0.09);box-shadow:0 8px 32px -12px rgba(0,0,0,0.7)} .nav-wrap.scrolled::after{opacity:1} .nav-inner{max-width:1180px;margin:0 auto;padding:0 22px;display:flex;align-items:center;height:56px;transition:height .35s cubic-bezier(.2,.7,.3,1)} .nav-wrap.scrolled .nav-inner{height:52px} .nav-inner > div:first-child{display:flex;align-items:center;height:100%;overflow:visible} .logo3es{line-height:1.1} .nav-logo{font-family:'DM Sans',sans-serif;font-weight:700;font-size:22px;color:#fff;letter-spacing:-0.5px;cursor:pointer;flex-shrink:0;display:flex;align-items:center;gap:8px} .nav-logo span{color:#06B6D4} .nav-links{display:flex;align-items:center;gap:0;margin:0 16px;flex:1;justify-content:center} .nav-link{flex-shrink:0;color:rgba(255,255,255,0.78);font-size:12.5px;font-weight:400;letter-spacing:0;padding:8px 14px;border-radius:6px;cursor:pointer;transition:color .2s ease;white-space:nowrap;position:relative} .nav-link:hover{color:#fff} .nav-link.active{color:#fff;font-weight:500} .nav-link.has-sub:hover .nav-sub{display:block} .nav-sub{display:none;position:absolute;top:100%;left:0;background:#1A3260;border-radius:8px;min-width:160px;box-shadow:0 8px 32px rgba(0,0,0,0.3);padding:8px;margin-top:4px;z-index:200} .nav-sub::before{content:'';position:absolute;top:-14px;left:-10px;right:-10px;height:14px} .nav-sub-item{padding:8px 12px;color:rgba(255,255,255,0.8);font-size:13px;border-radius:5px;cursor:pointer;transition:all 0.15s} .nav-sub-item:hover{background:rgba(255,255,255,0.08);color:#fff} .nav-sub-group{position:relative} .nav-sub-parent{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:600;color:#fff} .nav-sub-parent svg{opacity:0.5;flex-shrink:0} .nav-flyout{display:none;position:absolute;top:-8px;left:100%;margin-left:6px;background:#1A3260;border-radius:10px;min-width:250px;box-shadow:0 12px 40px rgba(0,0,0,0.4);padding:8px;z-index:210;border:1px solid rgba(255,255,255,0.07)} .nav-sub-group:hover .nav-flyout{display:block} .nav-flyout::before{content:'';position:absolute;left:-14px;top:0;bottom:0;width:14px} .nav-flyout-item{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;border-radius:7px;cursor:pointer;transition:all 0.15s} .nav-flyout-item:hover{background:rgba(255,255,255,0.08)} .nav-flyout-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex-shrink:0} .nav-flyout-label{font-size:13px;font-weight:600;color:#fff;line-height:1.3} .nav-flyout-sub{font-size:11px;color:rgba(255,255,255,0.5);margin-top:2px} @media(max-width:640px){.nav-flyout{position:static;margin-left:0;box-shadow:none;padding:4px 0 4px 12px;min-width:0;border:none;background:transparent}.nav-sub-group:hover .nav-flyout{display:block}} .nav-right{display:flex;align-items:center;gap:10px;margin-left:auto;flex-shrink:0} .btn-lang{padding:6px 14px;border:1px solid rgba(255,255,255,0.25);background:transparent;color:#fff;font-size:12px;font-weight:600;border-radius:20px;cursor:pointer;transition:all 0.2s;font-family:inherit} .lang-seg{display:inline-flex;border:1px solid rgba(255,255,255,0.1);background:rgba(255,255,255,0.03);border-radius:100px;overflow:hidden;padding:1.5px} .lang-seg-btn{padding:3px 10px;border-radius:100px;background:transparent;color:rgba(255,255,255,0.5);font-size:11px;font-weight:700;border:none;cursor:pointer;font-family:inherit;transition:all 0.25s;letter-spacing:0.5px} .lang-seg-btn:hover{color:#fff;background:rgba(255,255,255,0.07)} .lang-seg-btn.active{background:rgba(255,255,255,0.94);color:#0B1730;box-shadow:0 2px 8px -2px rgba(0,0,0,.5)} .btn-lang:hover{background:rgba(255,255,255,0.1)} .btn-cta-nav{padding:6px 15px;background:linear-gradient(135deg,#2563EB,#0891B2);color:#fff;font-size:12.5px;font-weight:500;letter-spacing:0;border-radius:100px;cursor:pointer;border:none;transition:transform .25s cubic-bezier(.2,.7,.3,1),box-shadow .25s ease,filter .25s ease;font-family:inherit;box-shadow:none} .btn-cta-nav:hover{transform:translateY(-1px);filter:brightness(1.08);box-shadow:0 8px 26px -6px rgba(37,99,235,.95)} .btn-cta-nav:active{transform:translateY(0)} .nav-mobile-btn{display:none;background:none;border:none;color:#fff;cursor:pointer;padding:4px} .nav-mobile-menu{display:none} /* FLOATING CTA BAR */ .floating-cta{position:fixed;bottom:0;left:0;right:0;z-index:90;background:rgba(15,30,60,0.97);backdrop-filter:blur(12px);border-top:1px solid rgba(255,255,255,0.1);padding:12px 24px;display:flex;align-items:center;justify-content:center;gap:12px;transform:translateY(100%);transition:transform 0.3s ease} .floating-cta.visible{transform:translateY(0)} .floating-cta-text{color:rgba(255,255,255,0.7);font-size:14px;font-weight:500;margin-right:8px} /* HERO */ .hero{min-height:auto;background:linear-gradient(135deg,#0a1628 0%,#0F1E3C 50%,#0d2a4a 100%);display:flex;flex-direction:column;justify-content:center;padding-top:68px;position:relative;overflow:hidden} .hero-bg-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(37,99,235,0.08)1px,transparent 1px),linear-gradient(90deg,rgba(37,99,235,0.08)1px,transparent 1px);background-size:60px 60px} .hero-bg-glow{position:absolute;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,0.18)0%,transparent 70%);top:-100px;right:-100px;pointer-events:none} .hero-bg-glow2{position:absolute;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,rgba(6,182,212,0.12)0%,transparent 70%);bottom:0;left:10%;pointer-events:none} .hero-content{max-width:1280px;width:100%;margin:0 auto;padding:88px 24px 96px;display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;position:relative} .hero-badge{display:inline-flex;align-items:center;gap:8px;background:rgba(6,182,212,0.12);border:1px solid rgba(6,182,212,0.3);color:#06B6D4;font-size:13px;font-weight:600;padding:6px 14px;border-radius:20px;margin-bottom:24px;letter-spacing:0.5px} .hero-badge::before{content:'';width:6px;height:6px;border-radius:50%;background:#06B6D4;animation:pulse 2s infinite} @keyframes pulse{0%,100%{opacity:1}50%{opacity:0.4}} .hero-kicker{display:inline-flex;align-items:center;gap:9px;font-size:12.5px;font-weight:600;letter-spacing:.02em;color:rgba(255,255,255,.55);margin-bottom:26px} .hero-kicker i{width:5px;height:5px;border-radius:50%;background:#22D3EE;box-shadow:0 0 10px #22D3EE;animation:pulse 2.4s ease-in-out infinite;flex:none} .hero-title{font-size:clamp(38px,4.4vw,60px);font-weight:700;color:#fff;line-height:1.18;letter-spacing:-1.8px;margin-bottom:26px} .hero-title-soft{color:rgba(255,255,255,.42);font-weight:600} /* HERO VISUAL — 방어 계층 */ .hero-layers{width:min(420px,100%);aspect-ratio:1;position:relative} .hero-layers svg{width:100%;height:100%;display:block;overflow:visible} .hl-lab{font-size:9.5px;font-weight:600;letter-spacing:.4px;fill:rgba(255,255,255,.45)} .hl-scan{transform-origin:180px 180px;animation:hlSpin 14s linear infinite} .hl-dot{animation:hlBlink 3.6s ease-in-out infinite} @keyframes hlSpin{to{transform:rotate(360deg)}} @keyframes hlBlink{0%,100%{opacity:.2}50%{opacity:.9}} @media(prefers-reduced-motion:reduce){.hl-scan,.hl-dot{animation:none}} .hero-title-accent{color:#06B6D4} .hero-sub{font-size:17.5px;color:rgba(255,255,255,0.6);line-height:1.75;margin-bottom:40px;white-space:pre-line;max-width:520px} .hero-ctas{display:flex;gap:12px;flex-wrap:wrap} /* 버튼·칩 라벨은 줄바꿈 금지 (좁은 폭에서 글자 깨짐 방지) */ .btn-primary,.btn-outline,.btn-ghost,.btn-demo,.btn-cta-nav,.btn-lang,.lang-seg-btn,.news-badge,.news-hot-badge,.nav-link,.footer-link,.f-grp-h,.f-item{white-space:nowrap} @media(max-width:520px){.btn-primary,.btn-outline,.btn-ghost,.btn-demo{white-space:normal}} .btn-primary,.btn-outline,.btn-ghost,.btn-demo{flex:0 0 auto} .section-badge{white-space:nowrap} /* 문의 솔루션 선택 칩 */ /* 전담 모니터링 카드 */ .mon-flow{margin-bottom:20px} .mon-flow svg{width:100%;max-width:520px;margin:0 auto;aspect-ratio:520/210;height:auto;display:block;overflow:visible} .mf-t{font-size:10.5px;font-weight:600;fill:rgba(255,255,255,.82);font-family:'Pretendard',sans-serif} .mf-t.on{fill:#7DD3FC;font-size:12px;font-weight:700} .mf-t.amber{fill:#FBBF24} .mf-t.green{fill:#34D399} .mf-s{font-size:9px;fill:rgba(255,255,255,.45);font-family:'Pretendard',sans-serif} .mf-s.amber{fill:rgba(251,191,36,.8)} .mf-s.green{fill:rgba(52,211,153,.8)} .mf-dash{animation:mfFlow 1.8s linear infinite} @keyframes mfFlow{to{stroke-dashoffset:-16}} .mf-blink{animation:pulse 1.8s ease-in-out infinite} @media(prefers-reduced-motion:reduce){.mf-dash,.mf-blink{animation:none}} .mon-live{background:rgba(0,0,0,.24);border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:14px 17px} .mon-live-h{display:flex;justify-content:space-between;align-items:center;font-size:10.5px;letter-spacing:1.4px;font-weight:700;color:rgba(255,255,255,.45)} .mon-live-h span:first-child{display:inline-flex;align-items:center;gap:6px;color:#34D399} .mon-live-h s{width:6px;height:6px;border-radius:50%;background:#34D399;display:block;text-decoration:none;animation:pulse 1.8s ease-in-out infinite} .mon-live-f{display:flex;gap:18px;flex-wrap:wrap;margin-top:12px;padding-top:11px;border-top:1px solid rgba(255,255,255,.07); font-size:11.5px;color:rgba(255,255,255,.45)} .mon-live-f b{color:#fff;font-weight:700;margin-left:3px} .contact-kinds{display:flex;flex-direction:column;gap:9px;margin-bottom:24px} .contact-kind{display:flex;align-items:flex-start;gap:13px;text-align:left;padding:15px 17px;border-radius:13px;cursor:pointer; font-family:inherit;background:#fff;border:1.5px solid #E2E8F0;color:#475569;transition:all .16s ease} .contact-kind:hover{border-color:#94A3B8} .contact-kind.on{border-color:#2563EB;background:rgba(37,99,235,.04);color:#2563EB} .contact-kind .ck-t{font-size:14px;font-weight:700;color:#0F1E3C} .contact-kind.on .ck-t{color:#2563EB} .contact-kind .ck-d{font-size:11.5px;color:#94A3B8;margin-top:3px;line-height:1.45} .contact-kind .ck-m{font-size:11.5px;color:#94A3B8;margin-top:6px;font-family:'DM Mono',monospace} .contact-kind.on .ck-m{color:#2563EB} .sol-pick{display:flex;flex-wrap:wrap;gap:7px} .sol-chip{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:100px;cursor:pointer; font-family:inherit;font-size:13px;font-weight:500;white-space:nowrap; background:#fff;border:1.5px solid #E2E8F0;color:#475569;transition:all .16s ease} .sol-chip:hover{border-color:#94A3B8;color:#0F1E3C} .sol-chip.on{font-weight:600} .sol-chip s{width:7px;height:7px;border-radius:50%;display:block;text-decoration:none;flex:none} .sol-pick-count{font-size:11.5px;color:#2563EB;font-weight:600;margin-top:9px} .btn-primary{padding:14px 28px;background:#2563EB;color:#fff;font-size:15px;font-weight:600;border-radius:8px;border:none;cursor:pointer;transition:all 0.2s;font-family:inherit;display:inline-flex;align-items:center;gap:8px} .btn-primary:hover{background:#1D4ED8;transform:translateY(-1px);box-shadow:0 8px 24px rgba(37,99,235,0.4)} .btn-outline{padding:14px 24px;background:transparent;color:#fff;font-size:15px;font-weight:600;border-radius:8px;border:1px solid rgba(255,255,255,0.3);cursor:pointer;transition:all 0.2s;font-family:inherit} .btn-outline:hover{background:rgba(255,255,255,0.08);border-color:rgba(255,255,255,0.5)} .btn-ghost{padding:14px 24px;background:transparent;color:#06B6D4;font-size:15px;font-weight:600;border-radius:8px;border:1px solid rgba(6,182,212,0.4);cursor:pointer;transition:all 0.2s;font-family:inherit} .btn-ghost:hover{background:rgba(6,182,212,0.1)} .btn-demo{padding:12px 22px;background:linear-gradient(135deg,#7C3AED,#2563EB);color:#fff;font-size:14px;font-weight:600;border-radius:8px;border:none;cursor:pointer;transition:all 0.2s;font-family:inherit;display:inline-flex;align-items:center;gap:8px} .btn-demo:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(124,58,237,0.4)} .hero-stats{display:flex;gap:48px;margin-top:56px;padding-top:34px;border-top:1px solid rgba(255,255,255,0.1)} .hero-stat-num{font-family:'DM Sans',sans-serif;font-size:32px;font-weight:700;color:#fff;letter-spacing:-1px} .hero-stat-label{font-size:12px;color:rgba(255,255,255,0.5);margin-top:2px;font-weight:500} .hero-visual{position:relative;display:flex;justify-content:center;align-items:center} .hero-shield-outer{width:280px;height:280px;border-radius:50%;background:rgba(37,99,235,0.08);border:1px solid rgba(37,99,235,0.2);display:flex;align-items:center;justify-content:center;animation:rotateSlow 20s linear infinite} .hero-shield-inner{width:200px;height:200px;border-radius:50%;background:rgba(37,99,235,0.12);border:1px solid rgba(37,99,235,0.3);display:flex;align-items:center;justify-content:center;animation:rotateSlow 15s linear infinite reverse} .hero-shield-core{width:120px;height:120px;border-radius:50%;background:linear-gradient(135deg,#1D4ED8,#06B6D4);display:flex;align-items:center;justify-content:center;box-shadow:0 0 40px rgba(37,99,235,0.5)} @keyframes rotateSlow{from{transform:rotate(0deg)}to{transform:rotate(360deg)}} .hero-card-float{position:absolute;background:rgba(255,255,255,0.06);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.12);border-radius:10px;padding:10px 14px;color:#fff;font-size:12px;font-weight:600;white-space:nowrap} .hero-card-float.c1{top:20px;right:-10px;color:#06B6D4;border-color:rgba(6,182,212,0.3)} .hero-card-float.c2{bottom:60px;left:-20px;color:#86EFAC;border-color:rgba(134,239,172,0.3)} .hero-card-float.c3{bottom:10px;right:10px;color:#FCA5A5;border-color:rgba(252,165,165,0.3)} /* SECTIONS */ .section{padding:96px 24px} .section-inner{max-width:1280px;margin:0 auto} .section-header{text-align:center;margin-bottom:60px} .section-badge{display:inline-block;background:rgba(37,99,235,0.08);color:#2563EB;font-size:12px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:5px 14px;border-radius:20px;margin-bottom:16px;border:1px solid rgba(37,99,235,0.15)} .section-title{font-size:clamp(28px,3vw,42px);font-weight:700;color:#0F1E3C;letter-spacing:-0.5px;line-height:1.25;margin-bottom:16px} .section-sub{font-size:16px;color:#64748B;max-width:560px;margin:0 auto;line-height:1.7} /* VALUES */ .values-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px} .value-card{background:#fff;border:1px solid #E2E8F0;border-radius:16px;padding:32px 28px;transition:all 0.3s} .value-card:hover{border-color:#2563EB;box-shadow:0 8px 32px rgba(37,99,235,0.12);transform:translateY(-4px)} .value-icon{font-size:28px;margin-bottom:16px} .value-title{font-size:17px;font-weight:700;color:#0F1E3C;margin-bottom:10px} .value-desc{font-size:14px;color:#64748B;line-height:1.65} /* SOLUTIONS */ .solutions-section{background:#F8FAFC} .solutions-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px} .sol-card{background:#fff;border-radius:16px;padding:32px 28px;border:1px solid #E2E8F0;cursor:pointer;transition:all 0.3s} .sol-card:hover{transform:translateY(-6px);box-shadow:0 16px 48px rgba(0,0,0,0.1)} .sol-icon{width:52px;height:52px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:20px} .sol-title{font-size:20px;font-weight:700;color:#0F1E3C;margin-bottom:4px} .sol-eng{font-family:'DM Sans',sans-serif;font-size:12px;color:#94A3B8;margin-bottom:14px;font-weight:500} .sol-desc{font-size:14px;color:#64748B;line-height:1.65;margin-bottom:20px} .sol-tags{display:flex;gap:6px;flex-wrap:wrap} .sol-tag{font-size:11px;font-weight:600;padding:4px 10px;border-radius:20px} .sol-arrow{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;margin-top:20px;transition:gap 0.2s} .sol-card:hover .sol-arrow{gap:10px} /* OPS */ .ops-section{background:#0F1E3C} .ops-section .section-badge{background:rgba(6,182,212,0.1);color:#06B6D4;border-color:rgba(6,182,212,0.2)} .ops-section .section-title{color:#fff;white-space:pre-line} .ops-section .section-sub{color:rgba(255,255,255,0.6)} .ops-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:60px;position:relative} .ops-steps::before{content:'';position:absolute;top:32px;left:calc(12.5%);width:75%;height:2px;background:linear-gradient(90deg,#2563EB,#06B6D4);opacity:0.3} .ops-step{text-align:center;position:relative} .ops-step-num{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#2563EB,#06B6D4);display:flex;align-items:center;justify-content:center;font-family:'DM Sans',sans-serif;font-size:18px;font-weight:700;color:#fff;margin:0 auto 20px;position:relative;z-index:1;box-shadow:0 0 0 8px rgba(37,99,235,0.15)} .ops-step-title{font-size:16px;font-weight:700;color:#fff;margin-bottom:8px} .ops-step-desc{font-size:13px;color:rgba(255,255,255,0.5);line-height:1.6} /* PARTNERS */ .partners-grid{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:8px} .partner-chip{padding:12px 24px;background:#fff;border:1px solid #E2E8F0;border-radius:8px;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;color:#475569;transition:all 0.2s;cursor:default} .partner-chip:hover{border-color:#2563EB;color:#2563EB;background:rgba(37,99,235,0.03)} /* NEWS */ .news-section{background:#F8FAFC} .news-trend-bar{background:linear-gradient(135deg,#0F1E3C,#1A3260);border-radius:12px;padding:20px 24px;margin-bottom:32px;display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap} .news-trend-label{font-size:11px;font-weight:700;color:#06B6D4;letter-spacing:1px;text-transform:uppercase;margin-bottom:6px} .news-trend-text{font-size:13px;color:rgba(255,255,255,0.8);line-height:1.6;max-width:500px} .news-keywords{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px} .news-kw{padding:4px 12px;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.12);border-radius:20px;font-size:12px;font-weight:600;color:rgba(255,255,255,0.7);cursor:default;transition:all 0.2s} .news-kw:hover{background:rgba(6,182,212,0.15);border-color:rgba(6,182,212,0.3);color:#06B6D4} .news-cats{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:40px} .news-cat{padding:7px 18px;border-radius:20px;font-size:13px;font-weight:600;cursor:pointer;transition:all 0.2s;border:1px solid #E2E8F0;background:#fff;color:#64748B} .news-cat.active{background:#2563EB;color:#fff;border-color:#2563EB} .news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px} .news-card{background:#fff;border-radius:12px;border:1px solid #E2E8F0;overflow:hidden;cursor:pointer;transition:all 0.2s} .news-card:hover{box-shadow:0 8px 24px rgba(0,0,0,0.08);transform:translateY(-2px)} .news-card.hot{border-color:rgba(239,68,68,0.3)} .news-card-body{padding:24px} .news-meta{display:flex;align-items:center;gap:10px;margin-bottom:12px} .news-badge{font-size:10px;font-weight:700;padding:3px 10px;border-radius:20px;background:rgba(37,99,235,0.08);color:#2563EB;letter-spacing:0.5px} .news-hot-badge{font-size:10px;font-weight:700;padding:3px 10px;border-radius:20px;background:rgba(239,68,68,0.1);color:#EF4444;display:inline-flex;align-items:center;gap:4px} .news-date{font-size:12px;color:#94A3B8} .news-title{font-size:16px;font-weight:700;color:#0F1E3C;margin-bottom:8px;line-height:1.45} .news-desc{font-size:13px;color:#64748B;line-height:1.6} /* REFERENCES */ .ref-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px} .ref-card{background:#fff;border:1px solid #E2E8F0;border-radius:14px;padding:24px;transition:all 0.2s} .ref-card:hover{border-color:#2563EB;box-shadow:0 8px 24px rgba(37,99,235,0.1);transform:translateY(-2px)} .ref-name{font-size:17px;font-weight:700;color:#0F1E3C;margin-bottom:6px} .ref-industry{display:inline-block;font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;background:rgba(37,99,235,0.08);color:#2563EB;margin-bottom:12px} .ref-solution{font-size:13px;color:#64748B;margin-bottom:8px} .ref-size{font-size:12px;color:#94A3B8;margin-bottom:12px} .ref-result{font-size:13px;font-weight:700;color:#0F9650;display:flex;align-items:center;gap:6px} /* PRICE GUIDE */ .price-guide{background:linear-gradient(135deg,rgba(37,99,235,0.05),rgba(6,182,212,0.05));border:1px solid rgba(37,99,235,0.15);border-radius:16px;padding:28px 32px;margin:32px 0} .price-guide-title{font-size:16px;font-weight:700;color:#0F1E3C;margin-bottom:20px;display:flex;align-items:center;gap:8px} .price-options{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px} .price-opt{background:#fff;border:1px solid #E2E8F0;border-radius:10px;padding:16px 20px} .price-opt-label{font-size:11px;font-weight:700;color:#94A3B8;letter-spacing:0.5px;text-transform:uppercase;margin-bottom:6px} .price-opt-value{font-family:'DM Sans',sans-serif;font-size:22px;font-weight:700;color:#0F1E3C;margin-bottom:2px} .price-opt-per{font-size:12px;color:#64748B} .price-saving{background:rgba(15,150,80,0.08);border:1px solid rgba(15,150,80,0.15);border-radius:8px;padding:10px 16px;font-size:13px;font-weight:600;color:#0F9650;display:flex;align-items:center;gap:8px} /* QUOTE CALCULATOR */ .quote-calc{background:#F8FAFC;border-radius:12px;padding:20px;margin-bottom:20px;border:1px solid #E2E8F0} .quote-calc-title{font-size:13px;font-weight:700;color:#0F1E3C;margin-bottom:16px;display:flex;align-items:center;gap:6px;letter-spacing:-0.2px} .qspec-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px} @media(max-width:560px){.qspec-grid{grid-template-columns:1fr}} /* 조달 등재 정보 박스 */ .g2b-box{margin-top:14px;border:1px solid #D9E3F0;background:#F7FAFF;border-radius:12px;padding:14px 16px} .g2b-head{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:8px} .g2b-badge{font-size:10.5px;font-weight:800;letter-spacing:.3px;color:#fff;background:#1D4ED8;border-radius:5px;padding:3px 8px;white-space:nowrap} .g2b-badge.alt{background:#047857} .g2b-vendor{font-size:12.5px;font-weight:700;color:#0F1E3C} .g2b-meta{font-size:11.5px;color:#64748B;line-height:1.6;margin-bottom:10px} .g2b-table{width:100%;border-collapse:collapse;font-size:12px} .g2b-table th{text-align:left;font-weight:700;color:#475569;background:#EAF0FA;padding:6px 9px;border-bottom:1px solid #D9E3F0;white-space:nowrap} .g2b-table td{padding:6px 9px;border-bottom:1px solid #E6EDF7;color:#334155;vertical-align:top} .g2b-table tr:last-child td{border-bottom:none} .g2b-id{font-family:'DM Sans',sans-serif;font-weight:600;color:#1D4ED8;white-space:nowrap} .g2b-tiers{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:9px;font-size:11.5px;color:#475569} .g2b-tiers b{font-weight:700;color:#0F1E3C;margin-right:2px} .g2b-tiers span{background:#fff;border:1px solid #D9E3F0;border-radius:100px;padding:2px 9px;white-space:nowrap} .g2b-foot{font-size:12px;color:#64748B;line-height:1.65;margin-top:10px} @media(max-width:560px){ .g2b-table{font-size:11.5px} .g2b-table th,.g2b-table td{padding:5px 7px} } .qspec-chips{display:flex;flex-wrap:wrap;gap:6px} .qspec-chip{padding:7px 13px;border-radius:100px;border:1px solid #D9E0EA;background:#fff;color:#475569;font-size:12.5px;font-weight:500;font-family:inherit;cursor:pointer;transition:all .18s ease;white-space:nowrap} .qspec-chip:hover{border-color:#94A3B8;color:#0F1E3C} .qspec-chip.on{background:#0F1E3C;border-color:#0F1E3C;color:#fff;font-weight:600} .qspec-note{margin-top:14px;padding-top:12px;border-top:1px solid #E2E8F0;font-size:12px;line-height:1.6;color:#64748B} .quote-result{background:linear-gradient(135deg,#0F1E3C,#1A3260);border-radius:10px;padding:16px 20px;margin-top:16px} .quote-result-label{font-size:11px;font-weight:700;color:#06B6D4;letter-spacing:0.5px;margin-bottom:8px} .quote-result-price{font-family:'DM Sans',sans-serif;font-size:28px;font-weight:700;color:#fff;margin-bottom:4px} .quote-result-saving{font-size:13px;color:#86EFAC;font-weight:600} /* DEMO MODAL */ .demo-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.8);backdrop-filter:blur(8px);z-index:300;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn 0.2s ease} .demo-box{background:#0a0f1e;border:1px solid rgba(255,255,255,0.1);border-radius:20px;width:100%;max-width:860px;max-height:90vh;overflow:hidden;animation:slideUp 0.3s ease} .demo-topbar{background:#0F1E3C;padding:14px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,0.08)} .demo-dots{display:flex;gap:6px} .demo-dot{width:12px;height:12px;border-radius:50%} .demo-title-bar{font-family:'DM Sans',sans-serif;font-size:13px;color:rgba(255,255,255,0.5)} .demo-body{padding:0;min-height:420px;position:relative;overflow:hidden} .demo-screen{padding:32px;min-height:420px;display:flex;flex-direction:column} .demo-step-nav{display:flex;gap:8px;padding:16px 32px;background:rgba(255,255,255,0.03);border-top:1px solid rgba(255,255,255,0.06);justify-content:space-between;align-items:center} .demo-step-dots{display:flex;gap:8px} .demo-step-dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,0.2);transition:all 0.2s} .demo-step-dot.active{background:#06B6D4;width:24px;border-radius:4px} /* MODALS */ .modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.6);backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn 0.2s ease} @keyframes fadeIn{from{opacity:0}to{opacity:1}} .modal-box{background:#fff;border-radius:20px;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px rgba(0,0,0,0.3);animation:slideUp 0.3s ease} @keyframes slideUp{from{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}} .modal-header{padding:28px 28px 0;display:flex;align-items:center;justify-content:space-between} .modal-header h2{font-size:22px;font-weight:700;color:#0F1E3C} .modal-close{background:none;border:none;cursor:pointer;color:#94A3B8;padding:4px;border-radius:6px;transition:all 0.2s} .modal-close:hover{color:#1E293B;background:#F1F5F9} .modal-body{padding:24px 28px 28px} .modal-body .form-field label{color:#475569} .modal-body .form-field input,.modal-body .form-field textarea,.modal-body .form-field select{background:#F8FAFC;border-color:#E2E8F0;color:#1E293B} .modal-body .form-field input:focus,.modal-body .form-field textarea:focus,.modal-body .form-field select:focus{border-color:#2563EB} .modal-body .form-field select option{background:#fff;color:#1E293B} .success-banner{background:rgba(15,150,80,0.08);border:1px solid rgba(15,150,80,0.2);border-radius:10px;padding:16px 20px;color:#0F9650;font-size:14px;font-weight:600;text-align:center} /* FORMS */ /* 필수 입력 표시 · 오류 상태 */ .req-mark{color:#DC2626;font-weight:700;margin-left:3px} .field-err-msg{display:block;font-size:12px;color:#DC2626;line-height:1.5;margin-top:5px} .form-field input.err,.form-field textarea.err,.form-field select.err{border-color:#DC2626!important;background:#FEF2F2!important} .form-field input.err:focus,.form-field textarea.err:focus{box-shadow:0 0 0 3px rgba(220,38,38,.12)!important} .form-hint{font-size:12.5px;color:#64748B;line-height:1.6;margin-bottom:14px} .form-hint .req-mark{margin-left:0;margin-right:3px} .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px} .form-field{display:flex;flex-direction:column;gap:6px} .form-field label{font-size:13px;font-weight:600;color:#475569} .form-field input,.form-field textarea,.form-field select{padding:12px 14px;background:#F8FAFC;border:1px solid #E2E8F0;border-radius:8px;color:#1E293B;font-size:14px;font-family:inherit;transition:border-color 0.2s;outline:none} .form-field input::placeholder,.form-field textarea::placeholder{color:#94A3B8} .form-field input:focus,.form-field textarea:focus,.form-field select:focus{border-color:#2563EB} .form-field textarea{resize:vertical;min-height:100px} /* CUSTOM */ .custom-section{background:linear-gradient(135deg,#1A3260,#0F1E3C)} .custom-section .section-title{color:#fff} .custom-section .section-sub{color:rgba(255,255,255,0.6)} .custom-form{max-width:640px;margin:0 auto} .custom-section .form-field label{color:rgba(255,255,255,0.7)} .custom-section .form-field input{background:rgba(255,255,255,0.07);border-color:rgba(255,255,255,0.15);color:#fff} .custom-section .form-field input::placeholder{color:rgba(255,255,255,0.3)} .custom-section .form-field input:focus{border-color:#06B6D4} /* CONTACT */ .contact-section{background:#fff} .contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start} .contact-info-title{font-size:28px;font-weight:700;color:#0F1E3C;margin-bottom:16px} .contact-info-sub{font-size:15px;color:#64748B;line-height:1.7;margin-bottom:32px} .contact-detail{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px} .contact-detail-icon{width:36px;height:36px;background:rgba(37,99,235,0.08);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px} .contact-detail-text{font-size:14px;color:#475569;line-height:1.6} .contact-form{background:#F8FAFC;border-radius:16px;padding:36px} /* CHATBOT */ .chat-btn{position:fixed;bottom:28px;right:28px;z-index:150;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#2563EB,#06B6D4);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 8px 24px rgba(37,99,235,0.4);transition:all 0.2s} .chat-btn:hover{transform:scale(1.08)} .chat-window{position:fixed;bottom:96px;right:28px;z-index:149;width:360px;background:#fff;border-radius:16px;box-shadow:0 16px 64px rgba(0,0,0,0.2);display:flex;flex-direction:column;overflow:hidden;animation:slideUp 0.3s ease;height:min(560px,72dvh);max-height:520px} .chat-header{background:linear-gradient(135deg,#0F1E3C,#1A3260);padding:16px 20px;display:flex;align-items:center;gap:12px} .chat-header-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#2563EB,#06B6D4);display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px} .chat-header-info h4{font-size:14px;font-weight:700;color:#fff} .chat-header-info span{font-size:11px;color:#06B6D4;display:flex;align-items:center;gap:4px} .chat-header-info span::before{content:'';width:6px;height:6px;border-radius:50%;background:#06B6D4} .chat-close-btn{margin-left:auto;background:none;border:none;color:rgba(255,255,255,0.6);cursor:pointer;padding:4px;border-radius:4px} .chat-messages{flex:1 1 0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;min-height:0} .chat-msg{max-width:80%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.55} .chat-msg.bot{background:#F1F5F9;color:#1E293B;border-radius:4px 12px 12px 12px;align-self:flex-start} .chat-msg.user{background:#2563EB;color:#fff;border-radius:12px 4px 12px 12px;align-self:flex-end} .chat-suggestion{background:rgba(37,99,235,0.08);border:1px solid rgba(37,99,235,0.2);border-radius:8px;padding:8px 12px;font-size:12px;color:#2563EB;font-weight:600;cursor:pointer;transition:all 0.2s;margin-top:6px;text-align:left;width:100%;font-family:inherit} .chat-suggestion:hover{background:rgba(37,99,235,0.15)} /* 상담 전환 카드 */ .chat-suggestion.talk{display:flex;align-items:center;justify-content:center;gap:7px;background:#0F1E3C;border-color:#0F1E3C;color:#fff;margin-top:4px} .chat-suggestion.talk:hover{background:#13294F} .chat-talk-btn{display:flex;align-items:center;justify-content:center;gap:8px;margin:0 12px 10px;padding:11px 12px;border-radius:9px; border:1px solid #E2E8F0;background:#fff;color:#0F1E3C;font-family:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:all .18s} .chat-talk-btn:hover{border-color:#2563EB;color:#2563EB} .chat-handoff{margin:2px 0 0;padding:15px 16px;flex:none;border-radius:12px;background:#F8FAFC;border:1px solid #E2E8F0} .ch-t{font-size:14px;font-weight:700;color:#0F1E3C} .ch-d{font-size:12.5px;color:#64748B;line-height:1.6;margin-top:5px} .ch-off{font-size:11.5px;color:#B45309;background:#FFFBEB;border:1px solid #FDE68A;border-radius:8px;padding:8px 10px;margin-top:10px;line-height:1.55} .ch-kakao{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;padding:13px 14px;border-radius:10px; background:#FEE500;color:#191600;font-size:14px;font-weight:700;text-decoration:none;min-height:46px;transition:filter .18s} .ch-kakao:hover{filter:brightness(.96);color:#191600} .ch-kakao.off{background:#F1F5F9;color:#94A3B8;border:1px dashed #CBD5E1;font-size:12.5px;cursor:not-allowed} .ch-alt{display:flex;gap:7px;margin-top:9px} .ch-alt button{flex:1;padding:10px 8px;border-radius:9px;border:1px solid #E2E8F0;background:#fff;color:#475569; font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;transition:all .18s;min-height:40px} .ch-alt button:hover{border-color:#94A3B8;color:#0F1E3C} @media(max-width:640px){ .chat-window{width:calc(100vw - 16px);right:8px;height:78dvh;max-height:78dvh} .ch-kakao{min-height:52px;font-size:15px} .ch-alt button{min-height:44px} } .chat-input-area{padding:12px;border-top:1px solid #E2E8F0;display:flex;gap:8px} .chat-input{flex:1;padding:10px 14px;border:1px solid #E2E8F0;border-radius:8px;font-size:13px;font-family:inherit;outline:none;color:#1E293B} .chat-input:focus{border-color:#2563EB} .chat-send{padding:10px 16px;background:#2563EB;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:background 0.2s} .chat-send:hover{background:#1D4ED8} /* ICON SYSTEM */ .ico-frame{display:inline-flex;align-items:center;justify-content:center;border-radius:26%;flex:none; border:1px solid rgba(103,232,249,0.28);background:linear-gradient(145deg,rgba(103,232,249,0.10),rgba(37,99,235,0.05))} .ico-frame svg{display:block} /* FOOTER */ .footer{background:#070F20;padding:52px 24px calc(88px + env(safe-area-inset-bottom))} .footer-inner{max-width:1180px;margin:0 auto} /* 01 정책 링크 */ .ft-links{display:flex;flex-wrap:wrap;gap:6px 26px;margin-bottom:20px} .ft-link{font-size:13.5px;font-weight:700;color:#67E8F9;cursor:pointer;transition:color .18s} .ft-link:hover{color:#A5F3FC} /* 02 로고 + 회사명 */ .ft-brand{display:flex;align-items:center;gap:13px;margin-bottom:14px} .ft-cname{font-size:21px;font-weight:800;color:#fff;letter-spacing:-.4px} /* 03 주소 */ .ft-addr{font-size:14px;color:rgba(255,255,255,.62);line-height:1.5;margin-bottom:7px} /* 04 연락처 */ .ft-contact{display:flex;flex-wrap:wrap;gap:3px 22px;font-size:13.5px;color:rgba(255,255,255,.62);line-height:1.55} .ft-contact b{color:#67E8F9;font-weight:700;margin-right:5px;letter-spacing:.3px} .ft-contact a{color:inherit;text-decoration:none} .ft-contact a:hover{color:#fff} /* 05 저작권 */ .ft-copy{font-size:12.5px;color:rgba(255,255,255,.55);line-height:1.5;margin-top:16px} @media(max-width:640px){ .footer{padding:40px 20px calc(84px + env(safe-area-inset-bottom))} .ft-links{gap:6px 18px;margin-bottom:16px} .ft-cname{font-size:18px} .ft-addr{font-size:13.5px} .ft-contact{flex-direction:column;gap:2px} .ft-copy{margin-top:14px} } /* SOL DETAIL */ .sol-detail-hero{background:#0F1E3C;padding:120px 24px 80px;position:relative;overflow:hidden} .sol-detail-hero-inner{max-width:1280px;margin:0 auto;position:relative;z-index:1;display:grid;grid-template-columns:1fr auto;gap:48px;align-items:center} .sol-hero-copy{min-width:0} .sol-hero-visual{width:340px;height:300px;position:relative;animation:shvIn .9s cubic-bezier(.2,.7,.3,1) both} .sol-hero-visual svg{width:100%;height:100%;overflow:visible} .sol-hero-glow{position:absolute;inset:-40px;border-radius:50%;filter:blur(60px);opacity:.28;animation:shvGlow 5s ease-in-out infinite} .shv-float{animation:shvFloat 6s ease-in-out infinite} .shv-orbit{transform-origin:center;animation:shvOrbit 18s linear infinite} .shv-orbit2{transform-origin:center;animation:shvOrbit 26s linear infinite reverse} .shv-pulse{transform-origin:center;animation:shvPulse 2.6s ease-in-out infinite} .shv-dash{stroke-dasharray:6 10;animation:shvDash 2.2s linear infinite} .shv-ring{transform-origin:center;animation:shvRing 3.2s ease-out infinite} .shv-blink{animation:shvBlink 2.4s ease-in-out infinite} @keyframes shvIn{from{opacity:0;transform:translateY(26px) scale(.92)}to{opacity:1;transform:none}} @keyframes shvGlow{0%,100%{opacity:.2;transform:scale(.95)}50%{opacity:.38;transform:scale(1.06)}} @keyframes shvFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}} @keyframes shvOrbit{to{transform:rotate(360deg)}} @keyframes shvPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.07);opacity:.85}} @keyframes shvDash{to{stroke-dashoffset:-32}} @keyframes shvRing{0%{transform:scale(.55);opacity:.75}100%{transform:scale(1.25);opacity:0}} @keyframes shvBlink{0%,100%{opacity:.25}50%{opacity:1}} @media(max-width:960px){.sol-detail-hero-inner{grid-template-columns:1fr}.sol-hero-visual{display:none}} @media(prefers-reduced-motion:reduce){.sol-hero-visual,.sol-hero-visual *{animation:none!important}} .prod-hero-visual{position:absolute;right:0;top:110px;pointer-events:none;z-index:0} @media(max-width:1200px){.prod-hero-visual{display:none}} .sol-back{display:inline-flex;align-items:center;gap:8px;color:rgba(255,255,255,0.5);font-size:14px;cursor:pointer;margin-bottom:32px;transition:color 0.2s} .sol-back:hover{color:#fff} .sol-back svg{transform:rotate(180deg)} .sol-detail-badge{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;padding:6px 14px;border-radius:20px;margin-bottom:20px} .sol-detail-title{font-size:clamp(36px,4vw,52px);font-weight:700;color:#fff;margin-bottom:16px} .sol-detail-sub{font-size:18px;color:rgba(255,255,255,0.65);max-width:600px;line-height:1.65} .sol-detail-section{padding:80px 24px} .sol-detail-section.alt{background:#F8FAFC} .sol-detail-inner{max-width:1280px;margin:0 auto} .sol-why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px} .sol-why-card{background:#fff;border:1px solid #E2E8F0;border-radius:14px;padding:28px} .sol-why-num{font-family:'DM Sans',sans-serif;font-size:40px;font-weight:700;color:#E2E8F0;margin-bottom:12px} .sol-why-title{font-size:16px;font-weight:700;color:#0F1E3C;margin-bottom:8px} .sol-why-desc{font-size:13px;color:#64748B;line-height:1.65} .features-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px} .feature-card{border-radius:12px;padding:24px;text-align:center} .feature-icon{font-size:32px;margin-bottom:12px} .feature-title{font-size:15px;font-weight:700;color:#0F1E3C;margin-bottom:6px} .feature-desc{font-size:13px;color:#64748B;line-height:1.6} .faq-item{border:1px solid #E2E8F0;border-radius:10px;overflow:hidden;margin-bottom:12px} .faq-question{padding:18px 20px;background:#fff;font-size:15px;font-weight:600;color:#0F1E3C;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background 0.15s} .faq-question:hover{background:#F8FAFC} .faq-answer{padding:16px 20px;background:#F8FAFC;font-size:14px;color:#64748B;line-height:1.7;border-top:1px solid #E2E8F0} /* ABOUT */ .about-hero{background:linear-gradient(135deg,#0a1628,#0F1E3C);padding:140px 24px 100px} .about-content{max-width:1280px;margin:0 auto} .timeline{position:relative;padding-left:32px} .timeline::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:linear-gradient(180deg,#2563EB,#06B6D4)} .timeline-item{position:relative;margin-bottom:32px} .timeline-dot{position:absolute;left:-37px;top:4px;width:12px;height:12px;border-radius:50%;background:#2563EB;border:2px solid #fff;box-shadow:0 0 0 3px rgba(37,99,235,0.2)} .timeline-year{font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;color:#2563EB;margin-bottom:4px} .timeline-text{font-size:15px;color:#1E293B;font-weight:600;margin-bottom:4px} .timeline-sub{font-size:13px;color:#64748B} /* ADMIN */ .admin-layout{display:flex;min-height:100vh} .admin-sidebar{width:240px;background:#0F1E3C;flex-shrink:0;display:flex;flex-direction:column;padding:24px 0} .admin-logo{padding:0 20px 24px;font-family:'DM Sans',sans-serif;font-size:18px;font-weight:700;color:#fff;border-bottom:1px solid rgba(255,255,255,0.1)} .admin-logo span{color:#06B6D4} .admin-nav-item{padding:12px 20px;color:rgba(255,255,255,0.6);font-size:14px;font-weight:500;cursor:pointer;transition:all 0.2s;display:flex;align-items:center;gap:10px} .admin-nav-item:hover,.admin-nav-item.active{background:rgba(255,255,255,0.07);color:#fff} .admin-nav-item.active{border-left:3px solid #06B6D4} .admin-main{flex:1;background:#F8FAFC;overflow-y:auto} .admin-topbar{background:#fff;padding:16px 32px;border-bottom:1px solid #E2E8F0;display:flex;align-items:center;justify-content:space-between} .admin-title{font-size:20px;font-weight:700;color:#0F1E3C} .admin-body{padding:32px} .admin-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:32px} .admin-stat-card{background:#fff;border:1px solid #E2E8F0;border-radius:12px;padding:24px} .admin-stat-num{font-family:'DM Sans',sans-serif;font-size:32px;font-weight:700;color:#0F1E3C} .admin-stat-label{font-size:13px;color:#94A3B8;margin-top:4px} .admin-stat-change{font-size:12px;font-weight:600;color:#0F9650;margin-top:8px} .admin-table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;border:1px solid #E2E8F0} .admin-table th{background:#F8FAFC;padding:12px 20px;text-align:left;font-size:12px;font-weight:700;color:#94A3B8;letter-spacing:0.5px;text-transform:uppercase} .admin-table td{padding:14px 20px;font-size:14px;color:#475569;border-top:1px solid #F1F5F9} .admin-badge{padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;white-space:nowrap} .admin-badge.ai{background:rgba(124,58,237,0.1);color:#7C3AED} .admin-badge.kakao{background:#FEF3C7;color:#92400E} .admin-badge.new{background:rgba(37,99,235,0.1);color:#2563EB} .admin-badge.done{background:rgba(15,150,80,0.1);color:#0F9650} .admin-badge.pending{background:rgba(234,179,8,0.1);color:#D97706} .admin-form-section{background:#fff;border:1px solid #E2E8F0;border-radius:12px;padding:24px;margin-bottom:24px} .admin-form-title{font-size:16px;font-weight:700;color:#0F1E3C;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid #F1F5F9} .upload-zone{border:2px dashed #E2E8F0;border-radius:10px;padding:32px;text-align:center;cursor:pointer;transition:all 0.2s} .upload-zone:hover{border-color:#2563EB;background:rgba(37,99,235,0.02)} .upload-zone input{display:none} .upload-text{font-size:14px;color:#64748B;margin-top:10px} .ai-result{background:#F8FAFC;border:1px solid #E2E8F0;border-radius:8px;padding:16px;margin-top:16px;font-size:13px;color:#475569;line-height:1.7;white-space:pre-wrap} /* RESPONSIVE */ @media(max-width:1024px){ .values-grid,.solutions-grid,.ops-steps,.features-grid{grid-template-columns:repeat(2,1fr)} .hero-content{grid-template-columns:1fr} .hero-visual{display:none} .contact-grid{grid-template-columns:1fr} .admin-stats{grid-template-columns:repeat(2,1fr)} .ref-grid{grid-template-columns:repeat(2,1fr)} } @media(max-width:960px){ .nav-links,.nav-right{display:none} .nav-mobile-btn{display:block;margin-left:auto} .nav-mobile-menu.open{display:flex;flex-direction:column;background:#0F1E3C;padding:16px;gap:4px} .nav-mobile-item{padding:12px 16px;color:rgba(255,255,255,0.8);font-size:15px;font-weight:500;cursor:pointer;border-radius:8px;transition:all 0.2s} .nav-mobile-item:hover{background:rgba(255,255,255,0.07);color:#fff} .values-grid,.solutions-grid,.ops-steps,.sol-why-grid,.features-grid,.ref-grid{grid-template-columns:1fr} .hero-stats{gap:24px;flex-wrap:wrap} .news-grid{grid-template-columns:1fr} /* 필수 입력 표시 · 오류 상태 */ .req-mark{color:#DC2626;font-weight:700;margin-left:3px} .field-err-msg{display:block;font-size:12px;color:#DC2626;line-height:1.5;margin-top:5px} .form-field input.err,.form-field textarea.err,.form-field select.err{border-color:#DC2626!important;background:#FEF2F2!important} .form-field input.err:focus,.form-field textarea.err:focus{box-shadow:0 0 0 3px rgba(220,38,38,.12)!important} .form-hint{font-size:12.5px;color:#64748B;line-height:1.6;margin-bottom:14px} .form-hint .req-mark{margin-left:0;margin-right:3px} .form-grid{grid-template-columns:1fr} .admin-sidebar{width:60px} .admin-logo,.admin-nav-text{display:none} .chat-window{width:calc(100vw - 40px);right:20px} .ops-steps::before{display:none} .price-options{grid-template-columns:1fr} } /* ════════ RESPONSIVE HARDENING (global, non-destructive) ════════ */ html,body{max-width:100%;overflow-x:hidden} *{min-width:0} img,video,canvas{max-width:100%;height:auto} svg{max-width:100%} h1,h2,h3,p,li,td,th,div,span,button,a{overflow-wrap:break-word} :is(h1,h2,h3){word-break:keep-all;text-wrap:pretty} table{width:100%} div:has(> table){overflow-x:auto;-webkit-overflow-scrolling:touch} button,a[role="button"]{min-height:40px} /* ── TABLET: 2-up grids ── */ @media(max-width:1024px){ [style*="grid-template-columns"]:not(.nav-sub-grid):not(.keep-cols){grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))!important} .section,section[style*="padding"]{padding-left:24px!important;padding-right:24px!important} } /* ── MOBILE: single column, tighter rhythm ── */ @media(max-width:960px){ [style*="grid-template-columns"]:not(.nav-sub-grid):not(.keep-cols){grid-template-columns:1fr!important} [style*="display: flex"]{flex-wrap:wrap} .section{padding:72px 18px!important} section[style*="padding"]{padding-top:72px!important;padding-bottom:72px!important;padding-left:18px!important;padding-right:18px!important} div[style*="padding: 80px 24px"],div[style*="padding:80px 24px"]{padding:64px 18px!important} h1,[style*="clamp(36px"],[style*="clamp(40px"],[style*="clamp(34px"]{font-size:clamp(28px,7.4vw,38px)!important;letter-spacing:-0.6px!important} h2,[style*="clamp(28px"],[style*="clamp(30px"],[style*="clamp(32px"]{font-size:clamp(22px,5.6vw,30px)!important} button,a[role="button"]{min-height:44px} /* buttons full width in CTA rows */ [style*="display: flex"] > button,[style*="display: flex"] > a[href]{flex:1 1 100%!important;justify-content:center!important;text-align:center} /* tables scroll instead of squeeze (조달 정보 표는 좁은 폭에서도 맞춰 들어감) */ table:not(.g2b-table){min-width:540px;font-size:12.5px} table:not(.g2b-table) th,table:not(.g2b-table) td{padding:10px 12px!important;white-space:nowrap} .g2b-table{min-width:0;font-size:11.5px} .g2b-table th,.g2b-table td{padding:5px 7px;white-space:normal} .g2b-id{white-space:nowrap} /* inline-styled modal overlays (detail pages) */ div[style*="position: fixed"][style*="inset"]{padding:12px!important;align-items:flex-start!important;padding-top:16px!important} div[style*="position: fixed"][style*="inset"] > div{max-height:88dvh!important;overflow-y:auto!important;width:100%!important} .modal-overlay{padding:12px;align-items:flex-start;padding-top:16px} .modal-box{max-height:88dvh} .modal-header{padding:20px 20px 0} .modal-body{padding:18px 20px 24px} /* timelines / pipelines vertical */ .timeline{padding-left:26px} .timeline-dot{left:-31px} /* decorative absolute blobs must not cover content */ [style*="border-radius: 50%"][style*="position: absolute"][style*="filter"]{opacity:.55!important} /* hero visuals de-emphasised */ .hero-visual{display:none} .hero-stats{gap:20px} /* FAQ answer indent */ [style*="padding: 0 24px 22px 60px"]{padding:0 18px 20px 18px!important} [style*="padding: 0 24px 22px 56px"]{padding:0 18px 20px 18px!important} /* ── 모바일 콘텐츠 다이어트 ────────────────────────────────────── PC에서 읽히는 보조 설명을 모바일에서는 접는다. 핵심 흐름만 남김: 무엇을 하는 회사인가 → 어떤 솔루션이 있나 → 문의 */ .section{padding:52px 18px!important} section[style*="padding"]{padding-top:52px!important;padding-bottom:52px!important} .section-header{margin-bottom:24px!important} .section-sub{font-size:14px;line-height:1.65; display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden} .hero{padding-top:96px!important;padding-bottom:56px!important} .hero-sub{font-size:15px;line-height:1.7;margin-bottom:26px; display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden} .hero-ctas{gap:9px} /* 제품 상세 — 긴 보조 문단·장식 카피 접기 */ .sol-detail-hero{padding:96px 20px 52px!important} /* 솔루션 목록 — 카드 설명 생략, 제목+태그만 (2열) */ .solutions-grid{grid-template-columns:1fr 1fr!important;gap:10px} .sol-card{padding:16px 15px} .sol-desc{display:none} .sol-icon{width:38px;height:38px;border-radius:9px;margin-bottom:12px} .sol-title{font-size:15px;margin-bottom:2px} .sol-eng{font-size:10.5px;margin-bottom:9px} .sol-tags{gap:4px} .sol-tag{font-size:10px;padding:3px 8px} .sol-arrow{display:none} /* 제품 상세 — 히어로 보조 설명과 카드 설명을 줄인다 */ .sol-detail-hero .sol-desc,.value-desc,.feature-desc{ display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden} /* 제품 페이지의 긴 리드 문단 (인라인 스타일) */ p[style*="font-size: 17"],p[style*="font-size: 18"],p[style*="font-size:17"],p[style*="font-size:18"]{ font-size:14.5px!important;line-height:1.7!important} } /* ── SMALL MOBILE ── */ @media(max-width:380px){ .section{padding:60px 16px!important} .hero-stat-num{font-size:26px} table{min-width:480px} } /* ── FLOATING UI: safe-area + no overlap ── */ .floating-cta{padding-bottom:calc(12px + env(safe-area-inset-bottom))} .chat-btn{bottom:calc(28px + env(safe-area-inset-bottom))} .chat-window{bottom:calc(96px + env(safe-area-inset-bottom))} body.modal-open .floating-cta,body.nav-open .floating-cta,body.modal-open .chat-btn{display:none!important} @media(max-width:960px){ .floating-cta{padding:10px 16px calc(10px + env(safe-area-inset-bottom))} .floating-cta button.btn-primary{width:100%;justify-content:center;font-size:13.5px!important;padding:12px 16px!important} .chat-btn{width:50px;height:50px;bottom:calc(76px + env(safe-area-inset-bottom));right:16px} .chat-window{width:calc(100vw - 24px);right:12px;height:70dvh;max-height:70dvh;bottom:calc(136px + env(safe-area-inset-bottom))} } /* ── MOBILE NAV: scrollable, accordion-friendly ── */ @media(max-width:960px){ .nav-mobile-menu.open{max-height:calc(100dvh - 68px);overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(20px + env(safe-area-inset-bottom))} .nav-mobile-group-title{padding:12px 16px 6px;font-size:11px;font-weight:700;letter-spacing:1.4px;color:rgba(255,255,255,.4);text-transform:uppercase} .nav-mobile-item{min-height:44px;display:flex;align-items:center} .nav-mobile-item.sub{padding-left:28px;font-size:14px;color:rgba(255,255,255,.66)} } /* ── ADMIN on small screens ── */ @media(max-width:960px){ .admin-layout{flex-direction:column} .admin-sidebar{width:100%!important;flex-direction:row;overflow-x:auto;padding:10px 8px;gap:4px} .admin-sidebar .admin-logo{display:none} .admin-nav-item{white-space:nowrap;border-left:none!important;border-radius:8px;padding:10px 12px} .admin-nav-item .admin-nav-text{display:inline} .admin-topbar{padding:14px 18px} .admin-body{padding:18px} .admin-table{display:block} } /* ══════ 로고 — 스윕 라이트 + 가운데 S 회전 ══════ */ .logo3es-sheen{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen; background:linear-gradient(100deg,transparent 34%,rgba(103,232,249,.85) 46%,rgba(255,255,255,.95) 50%,rgba(167,139,250,.8) 54%,transparent 66%); background-size:260% 100%;background-position:150% 0; animation:logoSweep 4.6s cubic-bezier(.5,0,.3,1) infinite} @keyframes logoSweep{0%{background-position:150% 0}55%{background-position:-60% 0}100%{background-position:-60% 0}} .logo3es-mark:hover .logo3es-sheen{animation-duration:1.5s} @media (prefers-reduced-motion:reduce){.logo3es-sheen{animation:none;opacity:0}} .logo3es:hover .logo3es-mid{transform:rotate(-14deg) scale(1.04)} @media (hover:none){.logo3es-mid{transform:none!important}} @media (prefers-reduced-motion:reduce){.logo3es-mid{transition:none!important;transform:none!important}} `; Object.assign(window, { IconShield, IconMail, IconNetwork, IconAI, IconChat, IconClose, IconArrow, IconMenu, IconCheck, IconPlay, IconUpload, IconTrend, solIcons, useScrollReveal, globalStyles });