*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --white: #ffffff; --bg: #f8fafc; --border: #e2e8f0; --border-subtle: #f1f5f9; --text: #475569; --text-strong: #1e293b; --text-muted: #94a3b8; --accent: #0077cc; --accent-dark: #005fa3; --accent-light: #eff6ff; --accent-border: #bfdbfe; --cyan: #00c8f0; --green: #16a34a; --dark: #0f172a; --radius-sm: 6px; --radius: 12px; --radius-lg: 16px; --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); --shadow: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06); --shadow-md: 0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.06); --t: 0.15s ease; --sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', Menlo, monospace; } html { scroll-behavior: smooth; } body { font-family: var(--sans); background: var(--white); color: var(--text); line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } img { max-width: 100%; display: block; } a { color: inherit; } /* ── CONTAINER ── */ .container { max-width: 1100px; margin: 0 auto; padding: 0 1.5rem; } /* ── BUTTONS ── */ .btn { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.625rem 1.25rem; border-radius: var(--radius-sm); font-size: 0.9rem; font-weight: 600; font-family: var(--sans); text-decoration: none; cursor: pointer; border: none; transition: all var(--t); white-space: nowrap; line-height: 1; } .btn--primary { background: var(--accent); color: #fff; } .btn--primary:hover { background: var(--accent-dark); } .btn--ghost { background: transparent; color: var(--text); padding: 0.625rem 0.875rem; } .btn--ghost:hover { color: var(--text-strong); background: var(--bg); } .btn--sm { padding: 0.4rem 0.875rem; font-size: 0.8125rem; } /* ── NAV ── */ .nav { position: sticky; top: 0; z-index: 100; background: rgba(255,255,255,0.95); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid var(--border); } .nav__inner { display: flex; align-items: center; height: 60px; gap: 1rem; } .nav__logo { display: flex; align-items: center; gap: 0.5rem; font-size: 1rem; font-weight: 700; color: var(--text-strong); text-decoration: none; flex-shrink: 0; letter-spacing: -0.01em; } .nav__logo svg { flex-shrink: 0; } .nav__docs-badge { font-size: 0.7rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); background: var(--accent-light); border: 1px solid var(--accent-border); border-radius: 100px; padding: 0.2em 0.6em; text-decoration: none; flex-shrink: 0; } .nav__search-wrap { flex: 1; max-width: 360px; position: relative; } .nav__search { width: 100%; font-family: var(--sans); font-size: 0.875rem; color: var(--text-strong); background: var(--bg); border: 1.5px solid var(--border); border-radius: var(--radius-sm); padding: 0.45rem 0.875rem; outline: none; transition: border-color var(--t), box-shadow var(--t); } .nav__search::placeholder { color: var(--text-muted); } .nav__search:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(0,119,204,0.12); background: var(--white); } .nav__actions { display: flex; gap: 0.5rem; margin-left: auto; align-items: center; } .nav__hamburger { display: none; flex-direction: column; gap: 5px; background: none; border: none; cursor: pointer; padding: 6px; margin-left: auto; flex-shrink: 0; } .nav__hamburger span { display: block; width: 22px; height: 2px; background: var(--text-strong); border-radius: 2px; transition: all 0.2s; } .nav__mobile { display: none; flex-direction: column; position: fixed; top: 60px; left: 0; right: 0; z-index: 99; background: var(--white); border-top: 1px solid var(--border); padding: 0.75rem 1.5rem 1.25rem; gap: 0; box-shadow: 0 4px 16px rgba(0,0,0,0.08); max-height: calc(100vh - 60px); overflow-y: auto; } .nav__mobile.open { display: flex; } .nav__mobile-section { font-size: 0.675rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); padding: 1rem 0 0.375rem; } .nav__mobile a { font-size: 0.9rem; font-weight: 500; color: var(--text-strong); text-decoration: none; padding: 0.625rem 0; border-bottom: 1px solid var(--border-subtle); display: block; } .nav__mobile a.active { color: var(--accent); font-weight: 600; } .nav__mobile-actions { display: flex; gap: 0.75rem; padding-top: 1rem; } .nav__mobile-actions .btn { flex: 1; justify-content: center; } /* ── BREADCRUMB ── */ .breadcrumb { display: flex; align-items: center; gap: 0.375rem; font-size: 0.8rem; font-weight: 500; color: var(--text-muted); margin-bottom: 1.75rem; } .breadcrumb a { color: var(--text-muted); text-decoration: none; transition: color var(--t); } .breadcrumb a:hover { color: var(--accent); } .breadcrumb__sep { color: var(--border); font-weight: 400; } /* ── FOOTER ── */ .footer { background: var(--dark); border-top: 1px solid rgba(255,255,255,0.06); padding: 3.5rem 0 2rem; margin-top: auto; } .footer__grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 3rem; margin-bottom: 2.5rem; } .footer__brand { max-width: 280px; } .footer__logo { display: flex; align-items: center; gap: 0.5rem; color: #f1f5f9; font-weight: 700; font-size: 0.9375rem; margin-bottom: 0.875rem; text-decoration: none; letter-spacing: -0.01em; } .footer__tagline { font-size: 0.8125rem; color: #475569; line-height: 1.65; margin-bottom: 1.125rem; } .footer__status { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.75rem; font-weight: 600; color: #22c55e; text-decoration: none; } .footer__status::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 2px rgba(34,197,94,0.2); } .footer__col-title { font-size: 0.675rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #475569; margin-bottom: 1rem; } .footer__links { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; } .footer__link { font-size: 0.8125rem; color: #475569; text-decoration: none; transition: color var(--t); } .footer__link:hover { color: #94a3b8; } .footer__bottom { border-top: 1px solid rgba(255,255,255,0.06); padding-top: 1.5rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; } .footer__copy { font-size: 0.75rem; color: #475569; } .footer__legal { display: flex; gap: 1.25rem; } .footer__legal a { font-size: 0.75rem; color: #475569; text-decoration: none; } .footer__legal a:hover { color: #64748b; } /* ── RESPONSIVE ── */ @media (max-width: 960px) { @media (max-width: 768px) { .nav__actions { display: none; } .nav__search-wrap { display: none; } .nav__docs-menu { display: none; } .nav__hamburger { display: flex; } } .footer__grid { grid-template-columns: 1fr 1fr; gap: 2rem; } } @media (max-width: 768px) { .nav__actions { display: none; } .nav__search-wrap { display: none; } .nav__hamburger { display: flex; } } @media (max-width: 600px) { .footer__grid { grid-template-columns: 1fr 1fr; gap: 1.5rem; } } ======= /* ============================================================ base.css — Arcline design system base ============================================================ */ /* ── ROOT ── */ :root { --sans: 'Inter', -apple-system, 'Segoe UI', Roboto, sans-serif; --mono: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace; --accent: #0ea5e9; --accent-dark: #0284c7; --accent-light: #e0f2fe; --accent-border:#bae6fd; --bg: #f8fafc; --white: #ffffff; --text: #334155; --text-strong: #0f172a; --text-muted: #64748b; --border: #e2e8f0; --border-subtle:#f1f5f9; --radius: 8px; --radius-sm: 6px; --shadow-md: 0 4px 12px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.04); --t: 0.15s ease; } /* ── RESET ── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { -webkit-text-size-adjust: 100%; } body { font-family: var(--sans); font-size: 1rem; color: var(--text); background: var(--white); line-height: 1.6; min-height: 100vh; } img, svg { max-width: 100%; height: auto; display: block; } /* ── UTILITIES ── */ .container { max-width: 1200px; margin: 0 auto; padding: 0 1.5rem; } /* ── BUTTONS ── */ .btn { display: inline-flex; align-items: center; gap: 0.375rem; font-family: var(--sans); font-weight: 600; font-size: 0.875rem; padding: 0.625rem 1.25rem; border-radius: var(--radius-sm); border: 1px solid transparent; text-decoration: none; cursor: pointer; transition: background var(--t), border-color var(--t), color var(--t), box-shadow var(--t); line-height: 1.3; } .btn--primary { background: var(--accent); color: #fff; } .btn--primary:hover { background: var(--accent-dark); box-shadow: 0 2px 8px rgba(14,165,233,0.3); } .btn--ghost { background: transparent; border-color: var(--border); color: var(--text); } .btn--ghost:hover { border-color: #cbd5e1; background: var(--bg); color: var(--text-strong); } .btn--danger { background: transparent; border-color: #fecaca; color: #dc2626; } .btn--danger:hover { background: #fef2f2; border-color: #f87171; } .btn--sm { font-size: 0.775rem; padding: 0.4rem 0.875rem; } /* ── NAV ── */ .nav { background: var(--white); border-bottom: 1px solid var(--border); position: sticky; top: 0; z-index: 100; height: 60px; display: flex; align-items: center; } .nav__inner { display: flex; align-items: center; gap: 1rem; width: 100%; } .nav__logo { display: flex; align-items: center; gap: 0.5rem; font-size: 1.05rem; font-weight: 800; color: var(--text-strong); text-decoration: none; letter-spacing: -0.03em; } .nav__docs-badge { font-size: 0.775rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--accent); text-decoration: none; background: var(--accent-light); padding: 0.2rem 0.5rem; border-radius: 3px; transition: color var(--t), background var(--t); } .nav__docs-badge:hover { color: var(--accent-dark); background: var(--accent-border); } .nav__actions { display: flex; gap: 0.5rem; margin-left: auto; white-space: nowrap; } .nav__search-wrap { flex: 0 1 320px; margin-left: auto; } .nav__search { width: 100%; font-family: var(--sans); font-size: 0.875rem; padding: 0.5rem 0.75rem; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--bg); color: var(--text-strong); outline: none; transition: border-color var(--t), box-shadow var(--t); } .nav__search:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(14,165,233,0.15); } .nav__search::placeholder { color: var(--text-muted); } /* ── HAMBURGER ── */ .nav__hamburger { display: none; flex-direction: column; gap: 4px; background: none; border: none; cursor: pointer; padding: 0.375rem; } .nav__hamburger span { display: block; width: 20px; height: 2px; background: var(--text); border-radius: 1px; transition: transform var(--t), opacity var(--t); } /* ── MOBILE NAV ── */ .nav__mobile { display: none; background: var(--white); border-bottom: 1px solid var(--border); padding: 1rem 1.5rem 1.5rem; position: sticky; top: 60px; z-index: 99; max-height: calc(100vh - 60px); overflow-y: auto; } .nav__mobile.open { display: block; } .nav__mobile-section { font-size: 0.675rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); margin: 1rem 0 0.375rem; } .nav__mobile-section:first-child { margin-top: 0; } .nav__mobile a { display: block; font-size: 0.875rem; color: var(--text); text-decoration: none; padding: 0.4rem 0.5rem; border-radius: var(--radius-sm); transition: color var(--t), background var(--t); } .nav__mobile a:hover { color: var(--text-strong); background: var(--border-subtle); } .nav__mobile a.active { color: var(--accent); font-weight: 600; background: var(--accent-light); } .nav__mobile-actions { display: flex; gap: 0.5rem; margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--border); } /* ── BREADCRUMB ── */ .breadcrumb { display: flex; align-items: center; gap: 0.375rem; font-size: 0.8125rem; color: var(--text-muted); margin-bottom: 1.75rem; } .breadcrumb a { color: var(--text-muted); text-decoration: none; } .breadcrumb a:hover { color: var(--accent); } .breadcrumb__sep { color: var(--border); font-size: 0.75rem; } /* ── FOOTER ── */ .footer { background: #0f172a; color: #94a3b8; padding: 3rem 1.5rem; margin-top: 3rem; font-size: 0.875rem; } .footer__grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 3rem; margin-bottom: 2rem; } .footer__logo { display: flex; align-items: center; gap: 0.5rem; font-size: 1.125rem; font-weight: 800; color: #f1f5f9; text-decoration: none; margin-bottom: 0.75rem; } .footer__tagline { font-size: 0.8125rem; line-height: 1.65; margin-bottom: 0.75rem; } .footer__status { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.8125rem; font-weight: 600; color: #22c55e; text-decoration: none; } .footer__status::before { content: ''; display: block; width: 8px; height: 8px; border-radius: 50%; background: #22c55e; } .footer__col-title { font-size: 0.675rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #475569; margin-bottom: 1rem; } .footer__links { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; } .footer__link { font-size: 0.8125rem; color: #475569; text-decoration: none; transition: color var(--t); } .footer__link:hover { color: #94a3b8; } .footer__bottom { border-top: 1px solid rgba(255,255,255,0.06); padding-top: 1.5rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; } .footer__copy { font-size: 0.75rem; color: #475569; } .footer__legal { display: flex; gap: 1.25rem; } .footer__legal a { font-size: 0.75rem; color: #475569; text-decoration: none; } .footer__legal a:hover { color: #64748b; } /* ── RESPONSIVE ── */ @media (max-width: 960px) { .footer__grid { grid-template-columns: 1fr 1fr; gap: 2rem; } } @media (max-width: 768px) { .nav__actions { display: none; } .nav__search-wrap { display: none; } .nav__docs-menu { display: none; } .nav__hamburger { display: flex; } } @media (max-width: 600px) { .footer__grid { grid-template-columns: 1fr 1fr; gap: 1.5rem; } } ============================================================ */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --white: #ffffff; --bg: #f8fafc; --border: #e2e8f0; --border-subtle: #f1f5f9; --text: #475569; --text-strong: #1e293b; --text-muted: #94a3b8; --accent: #0077cc; --accent-dark: #005fa3; --accent-light: #eff6ff; --accent-border: #bfdbfe; --cyan: #00c8f0; --green: #16a34a; --dark: #0f172a; --radius-sm: 6px; --radius: 12px; --radius-lg: 16px; --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); --shadow: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06); --shadow-md: 0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.06); --t: 0.15s ease; --sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', Menlo, monospace; } html { scroll-behavior: smooth; } body { font-family: var(--sans); background: var(--white); color: var(--text); line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } img { max-width: 100%; display: block; } a { color: inherit; } /* ── CONTAINER ── */ .container { max-width: 1100px; margin: 0 auto; padding: 0 1.5rem; } /* ── BUTTONS ── */ .btn { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.625rem 1.25rem; border-radius: var(--radius-sm); font-size: 0.9rem; font-weight: 600; font-family: var(--sans); text-decoration: none; cursor: pointer; border: none; transition: all var(--t); white-space: nowrap; line-height: 1; } .btn--primary { background: var(--accent); color: #fff; } .btn--primary:hover { background: var(--accent-dark); } .btn--ghost { background: transparent; color: var(--text); padding: 0.625rem 0.875rem; } .btn--ghost:hover { color: var(--text-strong); background: var(--bg); } .btn--sm { padding: 0.4rem 0.875rem; font-size: 0.8125rem; } /* ── NAV ── */ .nav { position: sticky; top: 0; z-index: 100; background: rgba(255,255,255,0.95); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid var(--border); } .nav__inner { display: flex; align-items: center; height: 60px; gap: 1rem; } .nav__logo { display: flex; align-items: center; gap: 0.5rem; font-size: 1rem; font-weight: 700; color: var(--text-strong); text-decoration: none; flex-shrink: 0; letter-spacing: -0.01em; } .nav__logo svg { flex-shrink: 0; } .nav__docs-badge { font-size: 0.7rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); background: var(--accent-light); border: 1px solid var(--accent-border); border-radius: 100px; padding: 0.2em 0.6em; text-decoration: none; flex-shrink: 0; } .nav__search-wrap { flex: 1; max-width: 360px; position: relative; } .nav__search { width: 100%; font-family: var(--sans); font-size: 0.875rem; color: var(--text-strong); background: var(--bg); border: 1.5px solid var(--border); border-radius: var(--radius-sm); padding: 0.45rem 0.875rem; outline: none; transition: border-color var(--t), box-shadow var(--t); } .nav__search::placeholder { color: var(--text-muted); } .nav__search:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(0,119,204,0.12); background: var(--white); } .nav__actions { display: flex; gap: 0.5rem; margin-left: auto; align-items: center; } .nav__hamburger { display: none; flex-direction: column; gap: 5px; background: none; border: none; cursor: pointer; padding: 6px; margin-left: auto; flex-shrink: 0; } .nav__hamburger span { display: block; width: 22px; height: 2px; background: var(--text-strong); border-radius: 2px; transition: all 0.2s; } .nav__mobile { display: none; flex-direction: column; position: fixed; top: 60px; left: 0; right: 0; z-index: 99; background: var(--white); border-top: 1px solid var(--border); padding: 0.75rem 1.5rem 1.25rem; gap: 0; box-shadow: 0 4px 16px rgba(0,0,0,0.08); max-height: calc(100vh - 60px); overflow-y: auto; } .nav__mobile.open { display: flex; } .nav__mobile-section { font-size: 0.675rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); padding: 1rem 0 0.375rem; } .nav__mobile a { font-size: 0.9rem; font-weight: 500; color: var(--text-strong); text-decoration: none; padding: 0.625rem 0; border-bottom: 1px solid var(--border-subtle); display: block; } .nav__mobile a.active { color: var(--accent); font-weight: 600; } .nav__mobile-actions { display: flex; gap: 0.75rem; padding-top: 1rem; } .nav__mobile-actions .btn { flex: 1; justify-content: center; } /* ── BREADCRUMB ── */ .breadcrumb { display: flex; align-items: center; gap: 0.375rem; font-size: 0.8rem; font-weight: 500; color: var(--text-muted); margin-bottom: 1.75rem; } .breadcrumb a { color: var(--text-muted); text-decoration: none; transition: color var(--t); } .breadcrumb a:hover { color: var(--accent); } .breadcrumb__sep { color: var(--border); font-weight: 400; } /* ── FOOTER ── */ .footer { background: var(--dark); border-top: 1px solid rgba(255,255,255,0.06); padding: 3.5rem 0 2rem; margin-top: auto; } .footer__grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 3rem; margin-bottom: 2.5rem; } .footer__brand { max-width: 280px; } .footer__logo { display: flex; align-items: center; gap: 0.5rem; color: #f1f5f9; font-weight: 700; font-size: 0.9375rem; margin-bottom: 0.875rem; text-decoration: none; letter-spacing: -0.01em; } .footer__tagline { font-size: 0.8125rem; color: #475569; line-height: 1.65; margin-bottom: 1.125rem; } .footer__status { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.75rem; font-weight: 600; color: #22c55e; text-decoration: none; } .footer__status::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 2px rgba(34,197,94,0.2); } .footer__col-title { font-size: 0.675rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #475569; margin-bottom: 1rem; } .footer__links { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; } .footer__link { font-size: 0.8125rem; color: #475569; text-decoration: none; transition: color var(--t); } .footer__link:hover { color: #94a3b8; } .footer__bottom { border-top: 1px solid rgba(255,255,255,0.06); padding-top: 1.5rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; } .footer__copy { font-size: 0.75rem; color: #475569; } .footer__legal { display: flex; gap: 1.25rem; } .footer__legal a { font-size: 0.75rem; color: #475569; text-decoration: none; } .footer__legal a:hover { color: #64748b; } /* ── RESPONSIVE ── */ @media (max-width: 960px) { @media (max-width: 768px) { .nav__actions { display: none; } .nav__search-wrap { display: none; } .nav__docs-menu { display: none; } .nav__hamburger { display: flex; } } .footer__grid { grid-template-columns: 1fr 1fr; gap: 2rem; } } @media (max-width: 768px) { .nav__actions { display: none; } .nav__search-wrap { display: none; } .nav__hamburger { display: flex; } } @media (max-width: 600px) { .footer__grid { grid-template-columns: 1fr 1fr; gap: 1.5rem; } }