/* MEDIABROWSER Design System — Advanced Studio Edition High-End Obsidian Dark Theme · Machined Double-Bezel Architecture Spotlight Card Borders · Multi-Tab Workstation · Responsive Mechanics Typography: Wanted Sans Variable + System Fallbacks */ :root { /* Surface Ladder (Linear Obsidian Aesthetic) */ --bg-canvas: #08090d; --bg-subtle: #0d1017; --surface-1: #121622; --surface-2: #181e2e; --surface-3: #20273c; --surface-glass: rgba(18, 22, 34, 0.75); --surface-glass-strong: rgba(18, 22, 34, 0.92); /* Borders & Hairlines */ --border-subtle: rgba(255, 255, 255, 0.07); --border-medium: rgba(255, 255, 255, 0.12); --border-highlight: rgba(255, 255, 255, 0.22); /* Typography Colors */ --text-primary: #f8fafc; --text-secondary: #94a3b8; --text-muted: #64748b; --text-inverse: #08090d; /* Single Vibrant Accent & Glows */ --accent: #3b82f6; --accent-hover: #2563eb; --accent-soft: rgba(59, 130, 246, 0.12); --accent-glow: rgba(59, 130, 246, 0.28); --accent-border: rgba(59, 130, 246, 0.35); /* Semantic Highlights */ --success: #10b981; --success-soft: rgba(16, 185, 129, 0.14); --warning: #f59e0b; --warning-soft: rgba(245, 158, 11, 0.14); --danger: #ef4444; --danger-soft: rgba(239, 68, 68, 0.14); /* Shadows */ --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.35); --shadow-md: 0 12px 32px -8px rgba(0, 0, 0, 0.55); --shadow-lg: 0 24px 60px -16px rgba(0, 0, 0, 0.75); --shadow-glow: 0 0 40px -10px var(--accent-glow); /* Radii */ --radius-pill: 9999px; --radius-bezel-outer: 24px; --radius-bezel-inner: 18px; --radius-card: 20px; --radius-chip: 10px; /* Layout */ --nav-h: 68px; --container-max: 1180px; } /* ── Reset & Base ────────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; color-scheme: dark; background-color: var(--bg-canvas); } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } } body { font-family: "Wanted Sans Variable", "Wanted Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif; background-color: var(--bg-canvas); color: var(--text-primary); line-height: 1.65; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; position: relative; min-height: 100dvh; } ::selection { background: var(--accent); color: #ffffff; } a { color: inherit; text-decoration: none; } /* ── Typography Scale & Weights ──────────────────────────────── */ h1, h2, h3, h4 { color: var(--text-primary); line-height: 1.15; letter-spacing: -0.03em; font-weight: 800; text-wrap: balance; } p { color: var(--text-secondary); font-weight: 400; } .sub { font-size: 1.125rem; color: var(--text-secondary); line-height: 1.7; max-width: 60ch; } .text-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-variant-numeric: tabular-nums; } /* Keyboard Shortcut Tag */ kbd { display: inline-flex; align-items: center; justify-content: center; padding: 3px 7px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.75rem; font-weight: 700; color: var(--text-primary); background: linear-gradient(180deg, var(--surface-2), var(--surface-1)); border: 1px solid var(--border-medium); border-bottom: 2px solid rgba(255, 255, 255, 0.2); border-radius: 6px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); line-height: 1; } /* ── Icons ───────────────────────────────────────────────────── */ .icon { width: 1.25em; height: 1.25em; fill: currentColor; flex: none; display: inline-block; vertical-align: -0.2em; } /* ── Ambient Background ──────────────────────────────────────── */ .ambient-lighting { position: fixed; inset: 0; pointer-events: none; z-index: 0; overflow: hidden; } .ambient-spotlight { position: absolute; top: -260px; left: 50%; transform: translateX(-50%); width: 1100px; height: 700px; background: radial-gradient(ellipse 60% 50% at 50% 30%, rgba(59, 130, 246, 0.18) 0%, rgba(37, 99, 235, 0.05) 50%, transparent 80%); filter: blur(64px); opacity: 0.95; } .ambient-grid { position: absolute; inset: 0; background-image: linear-gradient(to right, rgba(255, 255, 255, 0.02) 1px, transparent 1px), linear-gradient(to bottom, rgba(255, 255, 255, 0.02) 1px, transparent 1px); background-size: 56px 56px; mask-image: radial-gradient(ellipse 75% 55% at 50% 25%, #000 20%, transparent 80%); -webkit-mask-image: radial-gradient(ellipse 75% 55% at 50% 25%, #000 20%, transparent 80%); opacity: 0.65; } /* ── Container Layout ────────────────────────────────────────── */ .wrap { width: min(var(--container-max), calc(100% - 48px)); margin-inline: auto; position: relative; z-index: 1; } section { position: relative; z-index: 1; } .section-pad { padding: 128px 0; } .section-head { margin-bottom: 56px; } .section-head--center { text-align: center; margin-inline: auto; max-width: 720px; } .section-head h2 { font-size: clamp(2rem, 3.8vw, 2.75rem); margin-top: 12px; } .section-head .sub { margin-top: 16px; margin-inline: auto; } /* ── Eyebrow Badge ───────────────────────────────────────────── */ .eyebrow { display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px; border-radius: var(--radius-pill); background: var(--surface-1); border: 1px solid var(--border-medium); font-size: 0.78rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08); } .eyebrow-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px var(--accent); } /* ── Double-Bezel (Doppelrand) Architecture ───────────────────── */ .bezel-shell { background: linear-gradient(145deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.015)); border: 1px solid var(--border-subtle); padding: 6px; border-radius: var(--radius-bezel-outer); box-shadow: var(--shadow-md); transition: border-color 0.3s cubic-bezier(0.16, 1, 0.3, 1), transform 0.3s cubic-bezier(0.16, 1, 0.3, 1); position: relative; } .bezel-inner { background: var(--surface-1); border: 1px solid var(--border-subtle); border-radius: var(--radius-bezel-inner); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08); height: 100%; } .bezel-shell:hover { border-color: var(--border-highlight); } /* Spotlight Card (Cursor Responsive Glow) */ .spotlight-card { position: relative; overflow: hidden; } .spotlight-card::before { content: ""; position: absolute; inset: 0; background: radial-gradient(400px circle at var(--mouse-x, 50%) var(--mouse-y, 50%), rgba(59, 130, 246, 0.15), transparent 80%); opacity: 0; transition: opacity 0.3s ease; pointer-events: none; z-index: 1; border-radius: inherit; } .spotlight-card:hover::before { opacity: 1; } /* ── Glassmorphism ───────────────────────────────────────────── */ .glass { background: var(--surface-glass); backdrop-filter: blur(20px) saturate(170%); -webkit-backdrop-filter: blur(20px) saturate(170%); border: 1px solid var(--border-medium); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), var(--shadow-md); } @media (prefers-reduced-transparency: reduce) { .glass { background: var(--surface-1); backdrop-filter: none; -webkit-backdrop-filter: none; } } /* ── Navigation (Fluid Island) ────────────────────────────────── */ .nav-wrapper { position: fixed; top: 18px; left: 0; right: 0; z-index: 100; display: flex; justify-content: center; pointer-events: none; } .nav { pointer-events: auto; width: min(var(--container-max), calc(100% - 36px)); height: var(--nav-h); border-radius: var(--radius-pill); display: flex; align-items: center; justify-content: space-between; padding: 0 24px; } .nav__brand { display: flex; align-items: center; gap: 12px; font-weight: 800; font-size: 1.05rem; letter-spacing: 0.02em; color: var(--text-primary); } .nav__logo-badge { width: 34px; height: 34px; border-radius: 10px; background: linear-gradient(135deg, var(--accent), #1d4ed8); display: grid; place-items: center; color: #ffffff; box-shadow: 0 4px 14px var(--accent-glow); } .nav__logo-badge .icon { width: 18px; height: 18px; } .nav__links { display: flex; align-items: center; gap: 28px; } .nav__link { color: var(--text-secondary); font-size: 0.93rem; font-weight: 600; transition: color 0.2s ease; position: relative; padding: 6px 0; } .nav__link:hover { color: var(--text-primary); } .nav__link[aria-current="page"] { color: var(--text-primary); } .nav__link[aria-current="page"]::after { content: ""; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background: var(--accent); border-radius: var(--radius-pill); } .nav__actions { display: flex; align-items: center; gap: 14px; } .nav__hamburger { display: none; background: transparent; border: 0; color: var(--text-primary); cursor: pointer; padding: 8px; } .nav__hamburger .icon { width: 24px; height: 24px; } /* Mobile Nav Drawer */ .mobile-menu-overlay { position: fixed; inset: 0; background: rgba(8, 9, 13, 0.88); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); z-index: 90; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 32px; opacity: 0; pointer-events: none; transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1); } .mobile-menu-overlay.is-active { opacity: 1; pointer-events: auto; } .mobile-menu-links { display: flex; flex-direction: column; align-items: center; gap: 24px; text-align: center; } .mobile-menu-link { font-size: 1.5rem; font-weight: 700; color: var(--text-secondary); transition: color 0.2s ease; } .mobile-menu-link:hover, .mobile-menu-link[aria-current="page"] { color: var(--text-primary); } /* ── Buttons (Nested Button-in-Button Architecture) ───────────── */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; border-radius: var(--radius-pill); font-weight: 700; font-size: 0.95rem; cursor: pointer; border: 0; white-space: nowrap; transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1); position: relative; user-select: none; } .btn:active { transform: translateY(1px) scale(0.98); } .btn--primary { background: var(--accent); color: #ffffff; padding: 10px 14px 10px 22px; box-shadow: 0 6px 20px -4px var(--accent-glow), inset 0 1px 0 rgba(255, 255, 255, 0.25); } .btn--primary:hover { background: var(--accent-hover); box-shadow: 0 10px 28px -4px rgba(59, 130, 246, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.3); } .btn__icon-badge { width: 28px; height: 28px; border-radius: 50%; background: rgba(255, 255, 255, 0.18); display: inline-flex; align-items: center; justify-content: center; transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1); } .btn--primary:hover .btn__icon-badge { transform: translate(2px, -2px); } .btn--ghost { background: var(--surface-1); color: var(--text-primary); border: 1px solid var(--border-medium); padding: 12px 22px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); } .btn--ghost:hover { background: var(--surface-2); border-color: var(--border-highlight); color: #ffffff; } .btn--sm { padding: 8px 12px 8px 18px; font-size: 0.88rem; } .btn--sm .btn__icon-badge { width: 24px; height: 24px; } /* ── Hero Section ────────────────────────────────────────────── */ .hero { padding-top: calc(var(--nav-h) + 72px); padding-bottom: 96px; min-height: 90dvh; display: flex; align-items: center; } .hero__grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 56px; align-items: center; } /* 그리드 자식의 min-width:auto 가 긴 mono 문자열로 열 최소폭을 밀어내 모바일 가로 오버플로를 만든다 — 축소 허용 */ .hero__grid > * { min-width: 0; } .hero__copy { display: flex; flex-direction: column; gap: 24px; } .hero h1 { font-size: clamp(2.5rem, 4.6vw, 4rem); letter-spacing: -0.04em; line-height: 1.12; } .hero .sub { font-size: 1.125rem; line-height: 1.7; } .hero__cta-group { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 8px; } .hero__trust-strip { display: flex; align-items: center; gap: 20px; margin-top: 14px; padding-top: 24px; border-top: 1px solid var(--border-subtle); flex-wrap: wrap; } .hero__trust-item { display: flex; align-items: center; gap: 8px; font-size: 0.85rem; font-weight: 600; color: var(--text-muted); } .hero__trust-item .icon { color: var(--accent); } /* ── Multi-Tab Interactive Hero Workstation ──────────────────── */ .simulator-window { background: var(--surface-1); border-radius: var(--radius-bezel-inner); overflow: hidden; border: 1px solid var(--border-medium); box-shadow: var(--shadow-lg), 0 0 60px -15px var(--accent-glow); } .simulator-topbar { background: var(--bg-subtle); padding: 12px 18px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--border-subtle); gap: 12px; } .window-dots { display: flex; gap: 6px; } .window-dot { width: 10px; height: 10px; border-radius: 50%; background: rgba(255, 255, 255, 0.15); } .window-dot:nth-child(1) { background: #ef4444; opacity: 0.8; } .window-dot:nth-child(2) { background: #f59e0b; opacity: 0.8; } .window-dot:nth-child(3) { background: #10b981; opacity: 0.8; } .simulator-tabs { display: flex; gap: 4px; background: var(--surface-2); padding: 3px; border-radius: var(--radius-pill); border: 1px solid var(--border-subtle); } .sim-tab-btn { background: transparent; border: 0; color: var(--text-muted); font-size: 0.75rem; font-weight: 700; padding: 4px 12px; border-radius: var(--radius-pill); cursor: pointer; transition: all 0.2s ease; white-space: nowrap; } .sim-tab-btn:hover { color: var(--text-primary); } .sim-tab-btn.is-active { background: var(--accent); color: #ffffff; box-shadow: 0 2px 8px var(--accent-glow); } .simulator-content { padding: 20px; min-height: 290px; } .sim-tab-panel { display: none; flex-direction: column; gap: 16px; animation: fadeIn 0.3s ease; } .sim-tab-panel.is-active { display: flex; } @keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } } /* Detection Banner */ .detection-banner { background: var(--accent-soft); border: 1px solid var(--accent-border); border-radius: var(--radius-chip); padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; } .detection-info { display: flex; align-items: center; gap: 10px; } .detection-pulse { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 10px var(--accent); animation: pulse-ring 2s infinite ease-out; } @keyframes pulse-ring { 0% { transform: scale(0.95); opacity: 0.9; } 50% { transform: scale(1.3); opacity: 0.5; } 100% { transform: scale(0.95); opacity: 0.9; } } .detection-title { font-size: 0.85rem; font-weight: 700; color: var(--text-primary); } .detection-specs { font-size: 0.75rem; color: var(--text-secondary); } .active-download-card { background: var(--surface-2); border: 1px solid var(--border-medium); border-radius: var(--radius-chip); padding: 16px; display: flex; flex-direction: column; gap: 12px; } .download-head { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 8px; min-width: 0; } .download-head .download-name { overflow-wrap: anywhere; } .download-name { font-size: 0.92rem; font-weight: 700; color: var(--text-primary); } .download-format-chip { padding: 3px 8px; background: rgba(255, 255, 255, 0.08); border-radius: var(--radius-pill); font-size: 0.72rem; font-weight: 700; color: var(--accent); } .progress-track { width: 100%; height: 8px; background: var(--surface-3); border-radius: var(--radius-pill); overflow: hidden; position: relative; } .progress-fill { height: 100%; width: 72%; background: linear-gradient(90deg, var(--accent), #60a5fa); border-radius: var(--radius-pill); transition: width 0.4s ease; position: relative; } .progress-fill::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); animation: progress-shimmer 2s infinite linear; } @keyframes progress-shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(200%); } } .segment-visualizer { display: grid; grid-template-columns: repeat(16, 1fr); gap: 3px; margin-top: 4px; } .seg-block { height: 6px; border-radius: 2px; background: var(--surface-3); } .seg-block.done { background: var(--accent); } .seg-block.active { background: #93c5fd; animation: blink 1s infinite alternate; } @keyframes blink { from { opacity: 0.4; } to { opacity: 1; } } .download-meta-row { display: flex; justify-content: space-between; align-items: center; font-size: 0.78rem; color: var(--text-secondary); } /* ── Section: Comparison Matrix (Problem vs Solution) ────────── */ .compare-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 48px; } .compare-card { padding: 36px 32px; display: flex; flex-direction: column; gap: 24px; } .compare-card--legacy { border-color: rgba(239, 68, 68, 0.2); background: linear-gradient(180deg, rgba(239, 68, 68, 0.03), transparent); } .compare-card--modern { border-color: rgba(59, 130, 246, 0.35); background: linear-gradient(180deg, rgba(59, 130, 246, 0.06), transparent); box-shadow: 0 0 50px -15px var(--accent-glow); } .compare-head { display: flex; align-items: center; gap: 12px; padding-bottom: 18px; border-bottom: 1px solid var(--border-subtle); } .compare-title { font-size: 1.25rem; font-weight: 800; } .compare-list { list-style: none; display: flex; flex-direction: column; gap: 18px; } .compare-item { display: flex; align-items: flex-start; gap: 14px; font-size: 0.95rem; } .compare-item-icon { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; flex: none; margin-top: 2px; } .compare-card--legacy .compare-item-icon { background: var(--danger-soft); color: var(--danger); } .compare-card--modern .compare-item-icon { background: var(--success-soft); color: var(--success); } .compare-item strong { display: block; color: var(--text-primary); margin-bottom: 2px; } .compare-item p { font-size: 0.88rem; color: var(--text-secondary); } /* ── Section: 3-Step Flow Pipeline ───────────────────────────── */ /* 3단계 파이프라인: 분리 카드가 아니라 하나의 머신드 레일(헤어라인 분할) */ .pipeline-rail { display: grid; grid-template-columns: repeat(3, 1fr); } .pipeline-rail .pipeline-card + .pipeline-card { border-left: 1px solid var(--border-subtle); } .pipeline-card { padding: 32px 28px; display: flex; flex-direction: column; gap: 18px; position: relative; } .pipeline-step-badge { width: 36px; height: 36px; border-radius: 10px; background: var(--surface-2); border: 1px solid var(--border-medium); display: grid; place-items: center; font-size: 0.95rem; font-weight: 800; color: var(--accent); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08); } .pipeline-step-badge .icon { width: 18px; height: 18px; } /* 히어로 시뮬레이터 정직성 캡션 */ .sim-caption { margin-top: 12px; font-size: 0.78rem; color: var(--text-muted); text-align: center; } /* 접근성: 본문 바로가기 + 키보드 포커스 링 */ .skip-link { position: fixed; top: -48px; left: 16px; z-index: 200; padding: 10px 16px; border-radius: var(--radius-chip); background: var(--accent); color: #ffffff; font-weight: 700; transition: top 0.2s cubic-bezier(0.16, 1, 0.3, 1); } .skip-link:focus-visible { top: 16px; } a:focus-visible, button:focus-visible, summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 6px; } .pipeline-card h3 { font-size: 1.25rem; margin-top: 4px; } .pipeline-card p { font-size: 0.95rem; line-height: 1.6; } .pipeline-card__visual { margin-top: auto; padding-top: 14px; border-top: 1px solid var(--border-subtle); font-size: 0.82rem; color: var(--text-muted); display: flex; align-items: center; gap: 8px; } /* ── Section: Asymmetric Feature Bento ───────────────────────── */ .bento-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 24px; } .bento-cell { padding: 36px; display: flex; flex-direction: column; justify-content: space-between; position: relative; overflow: hidden; } .bento-cell--span-7 { grid-column: span 7; } .bento-cell--span-5 { grid-column: span 5; } .bento-icon-wrapper { width: 48px; height: 48px; border-radius: 12px; background: var(--accent-soft); border: 1px solid var(--accent-border); display: grid; place-items: center; color: var(--accent); margin-bottom: 24px; } .bento-icon-wrapper .icon { width: 24px; height: 24px; } .bento-cell h3 { font-size: 1.35rem; margin-bottom: 10px; } .bento-cell p { font-size: 0.95rem; color: var(--text-secondary); line-height: 1.65; } .bento-chips-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 20px; } .badge-chip { padding: 4px 12px; border-radius: var(--radius-pill); background: var(--surface-2); border: 1px solid var(--border-medium); font-size: 0.78rem; font-weight: 700; color: var(--text-primary); } .badge-chip--accent { background: var(--accent-soft); border-color: var(--accent-border); color: var(--accent); } .bento-spec-box { margin-top: 24px; background: var(--bg-subtle); border: 1px solid var(--border-subtle); border-radius: var(--radius-chip); padding: 14px 18px; display: flex; flex-direction: column; gap: 8px; } .spec-line { display: flex; justify-content: space-between; font-size: 0.82rem; } .spec-line span:first-child { color: var(--text-muted); } .spec-line span:last-child { color: var(--text-primary); font-weight: 600; } /* ── Section: Companion & Mobile Ecosystem ───────────────────── */ .mobile-showcase { display: grid; grid-template-columns: 1fr 1.15fr; gap: 56px; align-items: center; } .mobile-cards-stage { position: relative; display: flex; flex-direction: column; gap: 16px; } .feature-stack-card { padding: 20px 24px; display: flex; align-items: center; gap: 18px; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1); } .feature-stack-card:hover { transform: translateX(6px); } .feature-stack-icon { width: 44px; height: 44px; border-radius: 12px; background: var(--accent-soft); border: 1px solid var(--accent-border); display: grid; place-items: center; color: var(--accent); flex: none; } .feature-stack-icon .icon { width: 22px; height: 22px; } .feature-stack-card strong { display: block; font-size: 1.05rem; color: var(--text-primary); margin-bottom: 2px; } .feature-stack-card span { font-size: 0.88rem; color: var(--text-secondary); } /* ── Section: Cross-Platform Matrix ──────────────────────────── */ .platform-matrix { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-top: 36px; } .platform-card { padding: 28px 24px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 14px; } .platform-icon { width: 52px; height: 52px; border-radius: 14px; background: var(--surface-2); border: 1px solid var(--border-medium); display: grid; place-items: center; color: var(--text-primary); margin-bottom: 4px; } .platform-icon .icon { width: 28px; height: 28px; } .platform-card h3 { font-size: 1.15rem; } .platform-card p { font-size: 0.85rem; color: var(--text-muted); } .platform-status-badge { padding: 3px 10px; border-radius: var(--radius-pill); font-size: 0.72rem; font-weight: 800; margin-top: auto; } .status--stable { background: var(--success-soft); color: var(--success); border: 1px solid rgba(16, 185, 129, 0.3); } .status--preview { background: var(--warning-soft); color: var(--warning); border: 1px solid rgba(245, 158, 11, 0.3); } /* ── CTA Banner ──────────────────────────────────────────────── */ .cta-banner { padding: 72px 48px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 24px; position: relative; overflow: hidden; } .cta-banner h2 { font-size: clamp(2rem, 3.5vw, 3rem); } .cta-banner .sub { margin-inline: auto; } /* ── Footer ──────────────────────────────────────────────────── */ footer { padding: 64px 0 80px; border-top: 1px solid var(--border-subtle); position: relative; z-index: 1; } .footer__row { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 24px; } .footer__brand { font-weight: 800; letter-spacing: 0.04em; font-size: 1rem; color: var(--text-primary); display: flex; align-items: center; gap: 10px; } .footer__links { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; } .footer__links a { color: var(--text-secondary); font-size: 0.9rem; font-weight: 500; transition: color 0.2s ease; } .footer__links a:hover { color: var(--text-primary); } .footer__copy { color: var(--text-muted); font-size: 0.85rem; } /* ── Guide Page Layout ───────────────────────────────────────── */ .guide-layout { display: grid; grid-template-columns: 260px 1fr; gap: 56px; align-items: start; padding-bottom: 120px; } .guide-toc { position: sticky; top: calc(var(--nav-h) + 36px); padding: 24px; display: flex; flex-direction: column; gap: 6px; } .guide-toc-title { font-size: 0.82rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); margin-bottom: 12px; } .guide-toc-link { display: block; padding: 8px 12px; border-radius: var(--radius-chip); color: var(--text-secondary); font-size: 0.92rem; font-weight: 600; transition: all 0.2s ease; } .guide-toc-link:hover { color: var(--text-primary); background: var(--surface-2); } .guide-toc-link.is-active { color: var(--accent); background: var(--accent-soft); font-weight: 700; } .guide-step-card { padding: 44px; margin-bottom: 32px; display: flex; flex-direction: column; gap: 20px; } .guide-step-card:last-child { margin-bottom: 0; } .guide-step-head { display: flex; align-items: center; gap: 16px; } .guide-step-num { width: 38px; height: 38px; border-radius: 10px; background: var(--accent-soft); border: 1px solid var(--accent-border); display: grid; place-items: center; color: var(--accent); font-weight: 800; font-size: 1.1rem; } .guide-step-head h2 { font-size: 1.6rem; } .guide-step-card p { font-size: 1.02rem; line-height: 1.7; } .guide-list { list-style: none; display: flex; flex-direction: column; gap: 14px; margin-top: 8px; } .guide-list li { display: flex; gap: 14px; font-size: 0.96rem; color: var(--text-secondary); align-items: flex-start; } .guide-list li .icon { color: var(--accent); margin-top: 3px; width: 18px; height: 18px; } .guide-list li strong { color: var(--text-primary); } .guide-tip-box { background: var(--surface-2); border: 1px solid var(--border-medium); border-left: 3px solid var(--accent); border-radius: var(--radius-chip); padding: 16px 20px; margin-top: 12px; font-size: 0.9rem; color: var(--text-secondary); } .guide-tip-box strong { color: var(--text-primary); } /* Shortcuts Table */ .shortcut-table { width: 100%; border-collapse: collapse; margin-top: 14px; font-size: 0.92rem; } .shortcut-table th, .shortcut-table td { padding: 12px 14px; border-bottom: 1px solid var(--border-subtle); text-align: left; } .shortcut-table th { color: var(--text-muted); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700; } .shortcut-table td:first-child { width: 35%; } /* FAQ Accordion */ .faq-stack { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; } .faq-item { border: 1px solid var(--border-medium); border-radius: var(--radius-chip); background: var(--surface-1); overflow: hidden; transition: border-color 0.2s ease; } .faq-item:hover { border-color: var(--border-highlight); } .faq-item summary { padding: 18px 22px; font-weight: 700; font-size: 1rem; color: var(--text-primary); cursor: pointer; display: flex; align-items: center; justify-content: space-between; list-style: none; user-select: none; } .faq-item summary::-webkit-details-marker { display: none; } .faq-chevron { transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1); color: var(--text-muted); } .faq-item[open] .faq-chevron { transform: rotate(180deg); color: var(--accent); } .faq-content { padding: 0 22px 20px; color: var(--text-secondary); font-size: 0.95rem; line-height: 1.65; } /* ── Releases Page Layout ────────────────────────────────────── */ .rel-layout { display: grid; grid-template-columns: 280px 1fr; gap: 48px; align-items: start; padding-bottom: 120px; } .rel-rail { position: sticky; top: calc(var(--nav-h) + 36px); display: flex; flex-direction: column; gap: 16px; } .rel-rail__box { padding: 24px; } .rel-rail__box h3 { font-size: 0.88rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-muted); margin-bottom: 14px; } .rel-rail__os { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-radius: var(--radius-chip); color: var(--text-secondary); font-size: 0.92rem; font-weight: 600; transition: all 0.2s ease; } .rel-rail__os:hover { background: var(--surface-2); color: var(--text-primary); } .rel-rail__os .icon { width: 20px; height: 20px; color: var(--text-muted); } .rel-featured { padding: 40px; } .rel-featured__meta { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; } .rel-featured__tag { font-size: 1.85rem; font-weight: 800; letter-spacing: -0.02em; } .rel-pill { display: inline-flex; padding: 4px 12px; border-radius: var(--radius-pill); font-size: 0.78rem; font-weight: 800; background: var(--accent-soft); color: var(--accent); border: 1px solid var(--accent-border); } .rel-pill--pre { background: var(--warning-soft); color: var(--warning); border-color: rgba(245, 158, 11, 0.3); } .rel-featured__date { color: var(--text-muted); font-size: 0.9rem; } .rel-featured__notes { margin-top: 18px; color: var(--text-secondary); font-size: 0.96rem; line-height: 1.7; white-space: pre-line; } .dl-groups { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; margin-top: 32px; } .dl-group { border-radius: var(--radius-chip); background: var(--surface-2); border: 1px solid var(--border-medium); padding: 22px; display: flex; flex-direction: column; gap: 12px; } .dl-group__head { display: flex; align-items: center; gap: 10px; font-weight: 800; font-size: 1.05rem; color: var(--text-primary); } .dl-group__sub { font-size: 0.82rem; color: var(--text-muted); } .dl-asset { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 0; border-top: 1px solid var(--border-subtle); } .dl-asset:first-of-type { border-top: 0; } .dl-asset__name { font-size: 0.88rem; font-weight: 600; color: var(--text-primary); overflow-wrap: anywhere; } .dl-asset__size { color: var(--text-muted); font-size: 0.78rem; margin-top: 2px; } .dl-reco { box-shadow: 0 0 0 2px var(--accent), 0 6px 20px var(--accent-glow) !important; } .rel-old { margin-top: 36px; display: flex; flex-direction: column; gap: 16px; } .rel-old details { border-radius: var(--radius-chip); border: 1px solid var(--border-medium); background: var(--surface-1); } .rel-old summary { cursor: pointer; padding: 18px 24px; font-weight: 700; display: flex; align-items: center; gap: 14px; list-style: none; } .rel-old summary::-webkit-details-marker { display: none; } .rel-old summary .rel-featured__date { margin-left: auto; } .rel-old__body { padding: 0 24px 24px; } .rel-empty { padding: 72px 40px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 16px; } .rel-empty .icon { width: 48px; height: 48px; color: var(--accent); } .rel-empty h2 { font-size: 1.5rem; } /* ── Reveal Animations ───────────────────────────────────────── */ html.js .reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), transform 0.7s cubic-bezier(0.16, 1, 0.3, 1); } html.js .reveal.in { opacity: 1; transform: none; } @media (prefers-reduced-motion: reduce) { html.js .reveal { opacity: 1; transform: none; transition: none; } } /* ── Responsive Mechanics ────────────────────────────────────── */ @media (max-width: 1024px) { .hero__grid { grid-template-columns: 1fr; gap: 48px; } .bento-cell--span-7, .bento-cell--span-5 { grid-column: span 12; } .pipeline-rail { grid-template-columns: 1fr; } .pipeline-rail .pipeline-card + .pipeline-card { border-left: 0; border-top: 1px solid var(--border-subtle); } .compare-grid { grid-template-columns: 1fr; gap: 24px; } .mobile-showcase { grid-template-columns: 1fr; gap: 40px; } .platform-matrix { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 860px) { .nav__links { display: none; } .nav__hamburger { display: block; } .rel-layout, .guide-layout { grid-template-columns: 1fr; gap: 32px; } .rel-rail, .guide-toc { position: static; } .dl-groups { grid-template-columns: 1fr; } .section-pad { padding: 80px 0; } .hero { padding-top: calc(var(--nav-h) + 40px); padding-bottom: 64px; min-height: auto; } .guide-step-card { padding: 28px 20px; } .rel-featured { padding: 28px 20px; } } @media (max-width: 640px) { .wrap { width: calc(100% - 32px); } .platform-matrix { grid-template-columns: 1fr; } .hero__cta-group { flex-direction: column; align-items: stretch; } .btn { width: 100%; } .simulator-topbar { flex-direction: column; align-items: flex-start; } .simulator-tabs { width: 100%; justify-content: space-between; } .sim-tab-btn { padding: 4px 8px; font-size: 0.7rem; } }