1401 lines
74 KiB
CSS
1401 lines
74 KiB
CSS
/* ═══════════════════════════════════════════════════════════════
|
|
Nexus One AI Portal — Enterprise Design System v5
|
|
ui-ux-pro-max: Enterprise SaaS / Internal Tool / Clean Minimal
|
|
Color: Violet-600 primary on white. Spacing: 4px grid.
|
|
Icons: Lucide SVG (no emojis). Typography: Inter.
|
|
═══════════════════════════════════════════════════════════════ */
|
|
|
|
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
|
|
|
|
/* ── Design Tokens ─────────────────────────────────────────────── */
|
|
:root {
|
|
/* Brand */
|
|
--brand: #7C3AED;
|
|
--brand-hover: #6D28D9;
|
|
--brand-lt: #F5F3FF;
|
|
--brand-border: #DDD6FE;
|
|
--brand-text: #6D28D9;
|
|
|
|
/* Page surfaces */
|
|
--bg: #F8FAFC;
|
|
--surface: #FFFFFF;
|
|
--surface-hover:#F8FAFC;
|
|
--surface-raised:#FFFFFF;
|
|
--surface2: #F1F5F9;
|
|
|
|
/* Borders */
|
|
--border: #E2E8F0;
|
|
--border-strong:#CBD5E1;
|
|
--border-brand: rgba(124,58,237,.3);
|
|
|
|
/* Text */
|
|
--text-primary: #0F172A;
|
|
--text-secondary: #475569;
|
|
--text-tertiary: #94A3B8;
|
|
--text-disabled: #CBD5E1;
|
|
|
|
/* Status */
|
|
--green: #16A34A;
|
|
--green-lt: #F0FDF4;
|
|
--green-border: #BBF7D0;
|
|
--amber: #D97706;
|
|
--amber-lt: #FFFBEB;
|
|
--amber-border: #FDE68A;
|
|
--red: #DC2626;
|
|
--red-lt: #FEF2F2;
|
|
--red-border: #FECACA;
|
|
|
|
/* Shadows (enterprise: very subtle) */
|
|
--shadow-xs: 0 1px 2px rgba(0,0,0,.05);
|
|
--shadow-sm: 0 1px 3px rgba(0,0,0,.07), 0 1px 2px rgba(0,0,0,.04);
|
|
--shadow-md: 0 4px 8px rgba(0,0,0,.06), 0 2px 4px rgba(0,0,0,.04);
|
|
--shadow-lg: 0 10px 24px rgba(0,0,0,.08), 0 4px 8px rgba(0,0,0,.04);
|
|
--shadow-focus: 0 0 0 3px rgba(124,58,237,.15);
|
|
|
|
/* Radius */
|
|
--radius-sm: 4px;
|
|
--radius-md: 8px;
|
|
--radius-lg: 12px;
|
|
--radius-xl: 16px;
|
|
--radius-pill:9999px;
|
|
|
|
/* Transitions */
|
|
--ease: cubic-bezier(.16,1,.3,1);
|
|
--t-fast: 100ms;
|
|
--t-base: 150ms;
|
|
--t-slow: 220ms;
|
|
|
|
/* Legacy page token aliases.
|
|
Several older portal pages still use the pre-v5 dark-theme token names.
|
|
Keep these mapped so their local page styles render as proper light-theme
|
|
panels instead of dropping borders/backgrounds entirely. */
|
|
--navy: var(--bg);
|
|
--navy2: var(--surface);
|
|
--bdr: var(--border);
|
|
--ink: var(--text-primary);
|
|
--med: var(--text-secondary);
|
|
--lt: var(--text-tertiary);
|
|
--xlt: var(--text-disabled);
|
|
--purple: var(--brand);
|
|
--teal: var(--brand);
|
|
--pink: #EC4899;
|
|
--reveal-delay:0ms;
|
|
}
|
|
|
|
/* ── Reset ─────────────────────────────────────────────────────── */
|
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
|
|
body {
|
|
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
background: var(--bg);
|
|
color: var(--text-primary);
|
|
font-size: 14px;
|
|
line-height: 1.6;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
/* ── Typography scale ──────────────────────────────────────────── */
|
|
h1 { font-size: 2rem; font-weight: 700; letter-spacing: -.03em; line-height: 1.1; }
|
|
h2 { font-size: 1.5rem; font-weight: 700; letter-spacing: -.025em; }
|
|
h3 { font-size: 1rem; font-weight: 600; letter-spacing: -.01em; }
|
|
h4 { font-size: .8125rem; font-weight: 600; }
|
|
p { font-size: .875rem; line-height: 1.65; color: var(--text-secondary); }
|
|
|
|
a { color: inherit; text-decoration: none; }
|
|
|
|
/* ── Utility ───────────────────────────────────────────────────── */
|
|
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
|
|
|
|
.icon {
|
|
display: inline-flex; align-items: center; justify-content: center;
|
|
width: 16px; height: 16px; flex-shrink: 0;
|
|
}
|
|
.icon svg { width: 100%; height: 100%; stroke: currentColor; fill: none;
|
|
stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
|
|
.badge-pill {
|
|
display: inline-flex; align-items: center;
|
|
padding: 2px 8px; border-radius: var(--radius-pill);
|
|
font-size: .6875rem; font-weight: 600; letter-spacing: .02em;
|
|
line-height: 1.6;
|
|
}
|
|
.badge-pill.violet { background: var(--brand-lt); color: var(--brand-text); border: 1px solid var(--brand-border); }
|
|
.badge-pill.green { background: var(--green-lt); color: var(--green); border: 1px solid var(--green-border); }
|
|
.badge-pill.amber { background: var(--amber-lt); color: var(--amber); border: 1px solid var(--amber-border); }
|
|
.badge-pill.red { background: var(--red-lt); color: var(--red); border: 1px solid var(--red-border); }
|
|
.badge-pill.slate { background: #F1F5F9; color: #64748B; border: 1px solid var(--border); }
|
|
|
|
/* ── Navigation ────────────────────────────────────────────────── */
|
|
.topnav {
|
|
position: sticky; top: 0; z-index: 200;
|
|
height: 56px;
|
|
background: rgba(255,255,255,.60);
|
|
backdrop-filter: blur(20px) saturate(1.8);
|
|
-webkit-backdrop-filter: blur(20px) saturate(1.8);
|
|
border-bottom: 1px solid var(--border);
|
|
display: flex; align-items: center;
|
|
padding: 0 24px;
|
|
gap: 0;
|
|
}
|
|
|
|
.topnav .brand {
|
|
display: flex; align-items: center; gap: 8px;
|
|
font-size: .9375rem; font-weight: 700; letter-spacing: -.02em;
|
|
color: var(--text-primary);
|
|
margin-right: 24px; flex-shrink: 0;
|
|
}
|
|
.topnav .brand span { color: var(--brand); font-style: normal; }
|
|
|
|
/* brand dot */
|
|
.topnav .brand::before {
|
|
content: '';
|
|
display: block; width: 8px; height: 8px; border-radius: 50%;
|
|
background: var(--brand); flex-shrink: 0;
|
|
}
|
|
|
|
.topnav nav {
|
|
display: flex; align-items: center; gap: 2px;
|
|
flex: 1; overflow: visible;
|
|
}
|
|
|
|
.topnav nav a,
|
|
.nav-drop-btn {
|
|
display: inline-flex; align-items: center; gap: 4px;
|
|
padding: 5px 10px; border-radius: 6px;
|
|
font-size: .8125rem; font-weight: 500; color: var(--text-secondary);
|
|
transition: color var(--t-base), background var(--t-base);
|
|
white-space: nowrap; cursor: pointer;
|
|
background: none; border: none; font-family: inherit;
|
|
}
|
|
.topnav nav a:hover,
|
|
.nav-drop-btn:hover { color: var(--text-primary); background: var(--bg); }
|
|
.topnav nav a.active { color: var(--brand); background: var(--brand-lt); font-weight: 600; }
|
|
|
|
.nav-sep { width: 1px; height: 16px; background: var(--border); margin: 0 8px; flex-shrink: 0; }
|
|
|
|
/* right side of nav */
|
|
.topnav .nav-right {
|
|
display: flex; align-items: center; gap: 8px;
|
|
margin-left: auto; flex-shrink: 0;
|
|
}
|
|
|
|
.topnav .badge {
|
|
display: inline-flex; align-items: center;
|
|
padding: 3px 10px; border-radius: var(--radius-pill);
|
|
font-size: .6875rem; font-weight: 600; letter-spacing: .04em;
|
|
text-transform: uppercase;
|
|
background: var(--brand-lt); color: var(--brand-text);
|
|
border: 1px solid var(--brand-border);
|
|
}
|
|
|
|
.nav-icon-btn {
|
|
display: flex; align-items: center; justify-content: center;
|
|
width: 32px; height: 32px; border-radius: 6px;
|
|
color: var(--text-tertiary);
|
|
transition: color var(--t-base), background var(--t-base);
|
|
}
|
|
.nav-icon-btn:hover { color: var(--text-primary); background: var(--bg); }
|
|
.nav-icon-btn svg { width: 16px; height: 16px; stroke: currentColor; fill: none;
|
|
stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
|
|
/* user chip */
|
|
.nav-user-chip {
|
|
display: flex; align-items: center; gap: 8px;
|
|
padding: 4px 4px 4px 12px;
|
|
border-left: 1px solid var(--border);
|
|
margin-left: 4px;
|
|
}
|
|
.nav-user-avatar {
|
|
width: 28px; height: 28px; border-radius: 50%;
|
|
background: var(--brand); color: #fff;
|
|
font-size: .75rem; font-weight: 700;
|
|
display: flex; align-items: center; justify-content: center;
|
|
}
|
|
.nav-user-info { display: flex; flex-direction: column; line-height: 1.2; }
|
|
.nav-user-name { font-size: .75rem; font-weight: 600; color: var(--text-primary); }
|
|
.nav-user-role { font-size: .625rem; font-weight: 500; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: .05em; }
|
|
.nav-logout-btn {
|
|
font-size: .75rem; font-weight: 500; color: var(--text-tertiary);
|
|
background: none; border: none; cursor: pointer; font-family: inherit;
|
|
padding: 4px 8px; border-radius: 4px; transition: color var(--t-base), background var(--t-base);
|
|
}
|
|
.nav-logout-btn:hover { color: var(--text-primary); background: var(--bg); }
|
|
|
|
.nav-org-logo { display: flex; align-items: center; height: 32px; }
|
|
.nav-org-logo img { max-height: 28px; max-width: 100px; object-fit: contain; border-radius: 4px; }
|
|
|
|
/* Dropdown */
|
|
.nav-dropdown { position: relative; }
|
|
|
|
/* Invisible bridge fills the gap between button and menu so hover isn't lost */
|
|
.nav-dropdown::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: 100%; left: -8px; right: -8px;
|
|
height: 12px;
|
|
display: none;
|
|
}
|
|
.nav-dropdown:hover::after { display: block; }
|
|
|
|
.nav-drop-menu {
|
|
display: none;
|
|
position: absolute; top: calc(100% + 8px); left: 50%;
|
|
transform: translateX(-50%);
|
|
min-width: 200px; z-index: 300;
|
|
background: var(--surface);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 6px;
|
|
box-shadow: var(--shadow-lg);
|
|
}
|
|
.nav-dropdown:nth-last-child(-n+3) .nav-drop-menu { left: auto; right: 0; transform: none; }
|
|
.nav-dropdown:hover .nav-drop-menu { display: block; }
|
|
|
|
.nav-drop-cat {
|
|
display: block;
|
|
font-size: .625rem; font-weight: 700; letter-spacing: .1em;
|
|
text-transform: uppercase; color: var(--text-tertiary);
|
|
padding: 8px 8px 4px;
|
|
}
|
|
.nav-drop-cat:not(:first-child) { padding-top: 12px; border-top: 1px solid var(--border); margin-top: 4px; }
|
|
|
|
.nav-drop-menu a {
|
|
display: flex; align-items: center; gap: 8px;
|
|
padding: 6px 8px; border-radius: 6px;
|
|
font-size: .8125rem; font-weight: 500; color: var(--text-secondary);
|
|
transition: color var(--t-fast), background var(--t-fast);
|
|
}
|
|
.nav-drop-menu a:hover { color: var(--text-primary); background: var(--bg); }
|
|
.nav-drop-menu a.active { color: var(--brand); background: var(--brand-lt); font-weight: 600; }
|
|
|
|
.nav-drop-menu-wide { min-width: 360px; columns: 2; column-gap: 0; }
|
|
.nav-drop-menu-wide .nav-drop-cat,
|
|
.nav-drop-menu-wide a { break-inside: avoid; display: block; }
|
|
|
|
/* ── Buttons ───────────────────────────────────────────────────── */
|
|
.btn-primary {
|
|
display: inline-flex; align-items: center; gap: 6px;
|
|
padding: 9px 18px; border-radius: var(--radius-md);
|
|
font-size: .875rem; font-weight: 600; font-family: inherit;
|
|
color: #fff; background: var(--brand);
|
|
border: 1px solid var(--brand);
|
|
box-shadow: 0 1px 2px rgba(0,0,0,.1), 0 0 0 1px rgba(124,58,237,.2) inset;
|
|
transition: background var(--t-base) var(--ease), box-shadow var(--t-base), transform var(--t-fast);
|
|
cursor: pointer;
|
|
}
|
|
.btn-primary:hover {
|
|
background: var(--brand-hover);
|
|
box-shadow: 0 2px 6px rgba(124,58,237,.35), 0 0 0 1px rgba(124,58,237,.3) inset;
|
|
transform: translateY(-1px);
|
|
}
|
|
.btn-primary:active { transform: translateY(0); }
|
|
|
|
.btn-secondary {
|
|
display: inline-flex; align-items: center; gap: 6px;
|
|
padding: 9px 18px; border-radius: var(--radius-md);
|
|
font-size: .875rem; font-weight: 500; font-family: inherit;
|
|
color: var(--text-primary); background: var(--surface);
|
|
border: 1px solid var(--border-strong);
|
|
box-shadow: var(--shadow-xs);
|
|
transition: background var(--t-base), border-color var(--t-base), transform var(--t-fast);
|
|
cursor: pointer;
|
|
}
|
|
.btn-secondary:hover {
|
|
background: var(--bg); border-color: var(--border-strong);
|
|
transform: translateY(-1px);
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
.btn-secondary:active { transform: translateY(0); }
|
|
|
|
.btn-ghost {
|
|
display: inline-flex; align-items: center; gap: 6px;
|
|
padding: 7px 14px; border-radius: var(--radius-md);
|
|
font-size: .8125rem; font-weight: 500; font-family: inherit;
|
|
color: var(--text-secondary); background: transparent; border: none;
|
|
transition: color var(--t-base), background var(--t-base); cursor: pointer;
|
|
}
|
|
.btn-ghost:hover { color: var(--text-primary); background: var(--bg); }
|
|
|
|
/* ── Hero ──────────────────────────────────────────────────────── */
|
|
.page-hero {
|
|
background: var(--surface);
|
|
border-bottom: 1px solid var(--border);
|
|
padding: 56px 64px 52px;
|
|
position: relative; overflow: hidden;
|
|
}
|
|
.page-hero::after {
|
|
content: '';
|
|
position: absolute; inset: 0; pointer-events: none;
|
|
background:
|
|
radial-gradient(ellipse 60% 100% at -5% 110%, rgba(124,58,237,.20) 0%, transparent 60%),
|
|
radial-gradient(ellipse 55% 80% at 110% -10%, rgba(99,102,241,.18) 0%, transparent 55%),
|
|
radial-gradient(ellipse 40% 60% at 75% 80%, rgba(167,139,250,.14) 0%, transparent 55%);
|
|
}
|
|
|
|
.page-hero .eyebrow {
|
|
display: inline-flex; align-items: center; gap: 6px;
|
|
padding: 3px 10px 3px 8px;
|
|
background: var(--brand-lt); border: 1px solid var(--brand-border);
|
|
border-radius: var(--radius-pill);
|
|
font-size: .6875rem; font-weight: 600; letter-spacing: .06em;
|
|
color: var(--brand-text); text-transform: uppercase;
|
|
margin-bottom: 20px;
|
|
}
|
|
.page-hero .eyebrow svg { width: 10px; height: 10px; stroke: var(--brand); fill: none;
|
|
stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
|
|
|
|
/* compat: .label used in other pages */
|
|
.page-hero .label {
|
|
display: inline-flex; align-items: center; gap: 6px;
|
|
padding: 3px 10px 3px 8px;
|
|
background: var(--brand-lt); border: 1px solid var(--brand-border);
|
|
border-radius: var(--radius-pill);
|
|
font-size: .6875rem; font-weight: 600; letter-spacing: .06em;
|
|
color: var(--brand-text); text-transform: uppercase;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.page-hero h1 {
|
|
font-size: 2.25rem; font-weight: 700; letter-spacing: -.04em;
|
|
color: var(--text-primary); margin-bottom: 14px; max-width: 540px;
|
|
line-height: 1.12;
|
|
}
|
|
.page-hero h1 em { font-style: normal; color: var(--brand); }
|
|
|
|
.page-hero p {
|
|
font-size: .9375rem; color: var(--text-secondary);
|
|
max-width: 480px; line-height: 1.7; margin-bottom: 0;
|
|
}
|
|
|
|
.hero-ctas {
|
|
display: flex; align-items: center; gap: 10px;
|
|
margin-top: 28px; flex-wrap: wrap;
|
|
}
|
|
|
|
/* tool-hero for inner pages */
|
|
.tool-hero {
|
|
background: var(--surface); border-bottom: 1px solid var(--border);
|
|
padding: 40px 64px;
|
|
display: flex; align-items: flex-start; gap: 20px;
|
|
}
|
|
.tool-hero .tool-icon {
|
|
width: 52px; height: 52px;
|
|
background: var(--brand-lt); border: 1px solid var(--brand-border);
|
|
border-radius: var(--radius-lg);
|
|
display: flex; align-items: center; justify-content: center;
|
|
color: var(--brand); flex-shrink: 0;
|
|
}
|
|
.tool-hero .tool-icon svg { width: 24px; height: 24px; }
|
|
.tool-hero .tool-meta { flex: 1; }
|
|
.tool-hero .back-link { font-size: .75rem; color: var(--text-tertiary); display: block; margin-bottom: 6px; }
|
|
.tool-hero .back-link:hover { color: var(--brand); }
|
|
.tool-hero h1 { font-size: 1.625rem; font-weight: 700; letter-spacing: -.03em; margin-bottom: 6px; }
|
|
.tool-hero .tagline { font-size: .875rem; color: var(--text-secondary); }
|
|
.hero-actions { display: flex; align-items: center; gap: 10px; margin-top: 18px; flex-wrap: wrap; }
|
|
.access-pill {
|
|
display: inline-flex; align-items: center; gap: 4px;
|
|
padding: 3px 10px; border-radius: var(--radius-pill);
|
|
background: var(--brand-lt); border: 1px solid var(--brand-border);
|
|
font-size: .75rem; font-weight: 500; color: var(--brand-text); margin-top: 10px;
|
|
}
|
|
|
|
/* ── Stats strip ───────────────────────────────────────────────── */
|
|
.stats-strip {
|
|
display: flex; background: var(--surface);
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
.stat-item {
|
|
flex: 1; text-align: center;
|
|
padding: 18px 24px;
|
|
border-right: 1px solid var(--border);
|
|
min-width: 0;
|
|
}
|
|
.stat-item:last-child { border-right: none; }
|
|
.stat-num {
|
|
font-size: 1.5rem; font-weight: 700;
|
|
letter-spacing: -.03em; color: var(--text-primary);
|
|
line-height: 1; margin-bottom: 4px;
|
|
}
|
|
.stat-label {
|
|
font-size: .6875rem; font-weight: 500;
|
|
color: var(--text-tertiary); text-transform: uppercase; letter-spacing: .06em;
|
|
}
|
|
|
|
/* ── Content layout ────────────────────────────────────────────── */
|
|
.content {
|
|
max-width: 1160px; margin: 0 auto;
|
|
padding: 40px 64px 80px;
|
|
}
|
|
|
|
/* ── Section header ────────────────────────────────────────────── */
|
|
.section-title {
|
|
font-size: .6875rem; font-weight: 700;
|
|
letter-spacing: .1em; color: var(--text-tertiary);
|
|
text-transform: uppercase;
|
|
margin-top: 48px; margin-bottom: 16px;
|
|
padding-bottom: 12px;
|
|
border-bottom: 1px solid var(--border);
|
|
display: flex; align-items: center; gap: 8px;
|
|
}
|
|
.section-title:first-child { margin-top: 0; }
|
|
.section-title .section-count {
|
|
font-size: .625rem; font-weight: 600;
|
|
color: var(--text-disabled);
|
|
background: var(--bg); border: 1px solid var(--border);
|
|
border-radius: var(--radius-pill); padding: 1px 6px;
|
|
}
|
|
|
|
/* ── Status bar ────────────────────────────────────────────────── */
|
|
.status-bar {
|
|
background: var(--surface);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 18px 20px;
|
|
margin-bottom: 40px;
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
.status-bar-header {
|
|
display: flex; align-items: center; justify-content: space-between;
|
|
margin-bottom: 16px;
|
|
}
|
|
.status-bar-title {
|
|
display: flex; align-items: center; gap: 8px;
|
|
font-size: .875rem; font-weight: 600; color: var(--text-primary);
|
|
}
|
|
|
|
.overall-dot {
|
|
width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
|
|
}
|
|
.overall-dot.up { background: #16A34A; box-shadow: 0 0 0 3px rgba(22,163,74,.12); }
|
|
.overall-dot.down { background: #DC2626; box-shadow: 0 0 0 3px rgba(220,38,38,.12); }
|
|
.overall-dot.warn { background: #D97706; box-shadow: 0 0 0 3px rgba(217,119,6,.12); }
|
|
.overall-dot.checking { background: #CBD5E1; animation: pulse 1.4s ease-in-out infinite; }
|
|
|
|
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.3} }
|
|
@keyframes shimmer { 0%{background-position:-200% 0} 100%{background-position:200% 0} }
|
|
|
|
.status-bar-right { display: flex; align-items: center; gap: 10px; }
|
|
.status-ts { font-size: .75rem; color: var(--text-tertiary); }
|
|
.status-refresh-btn {
|
|
display: inline-flex; align-items: center; gap: 4px;
|
|
padding: 5px 12px; border-radius: 6px;
|
|
font-size: .75rem; font-weight: 500; font-family: inherit;
|
|
color: var(--text-secondary); background: var(--bg);
|
|
border: 1px solid var(--border); cursor: pointer;
|
|
transition: all var(--t-base);
|
|
}
|
|
.status-refresh-btn:hover { color: var(--text-primary); border-color: var(--border-strong); }
|
|
|
|
.status-cards {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.s-card {
|
|
background: var(--bg);
|
|
border: 1px solid var(--border);
|
|
border-left: 3px solid transparent;
|
|
border-radius: var(--radius-md);
|
|
padding: 12px 14px;
|
|
display: flex; align-items: flex-start; gap: 10px;
|
|
cursor: pointer; position: relative;
|
|
transition: border-color var(--t-base), box-shadow var(--t-base);
|
|
}
|
|
.s-card:hover { border-color: var(--border-strong); box-shadow: var(--shadow-sm); }
|
|
.s-card.up { border-left-color: var(--green); }
|
|
.s-card.down { border-left-color: var(--red); }
|
|
.s-card.warn { border-left-color: var(--amber); }
|
|
.s-card.checking { border-left-color: var(--border); }
|
|
|
|
.s-card-icon {
|
|
width: 32px; height: 32px; border-radius: 6px;
|
|
display: flex; align-items: center; justify-content: center;
|
|
background: var(--surface); border: 1px solid var(--border);
|
|
flex-shrink: 0; color: var(--text-tertiary);
|
|
}
|
|
.s-card-icon svg { width: 15px; height: 15px; stroke: currentColor; fill: none;
|
|
stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
.s-card.up .s-card-icon { background: var(--green-lt); border-color: var(--green-border); color: var(--green); }
|
|
.s-card.down .s-card-icon { background: var(--red-lt); border-color: var(--red-border); color: var(--red); }
|
|
.s-card.warn .s-card-icon { background: var(--amber-lt); border-color: var(--amber-border); color: var(--amber); }
|
|
|
|
.s-card-body { flex: 1; min-width: 0; }
|
|
.s-card-name { font-size: .8125rem; font-weight: 600; color: var(--text-primary); margin-bottom: 2px; }
|
|
.s-card-desc { font-size: .6875rem; color: var(--text-tertiary); margin-bottom: 6px;
|
|
white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
.s-card-status { display: flex; align-items: center; gap: 5px; }
|
|
|
|
.s-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
|
|
.s-dot.up { background: var(--green); }
|
|
.s-dot.down { background: var(--red); }
|
|
.s-dot.warn { background: var(--amber); }
|
|
.s-dot.checking { background: var(--border); animation: pulse 1.4s infinite; }
|
|
|
|
.s-state { font-size: .6875rem; font-weight: 600; }
|
|
.s-state.up { color: var(--green); }
|
|
.s-state.down { color: var(--red); }
|
|
.s-state.warn { color: var(--amber); }
|
|
.s-state.checking { color: var(--text-tertiary); }
|
|
|
|
.s-open-btn {
|
|
position: absolute; top: 8px; right: 8px;
|
|
padding: 2px 8px; border-radius: 4px;
|
|
font-size: .625rem; font-weight: 600;
|
|
color: var(--brand); background: var(--brand-lt);
|
|
border: 1px solid var(--brand-border);
|
|
text-decoration: none; transition: background var(--t-fast);
|
|
}
|
|
.s-open-btn:hover { background: var(--brand-border); }
|
|
|
|
/* ── System Info ───────────────────────────────────────────────── */
|
|
.sysinfo-wrap {
|
|
display: grid;
|
|
grid-template-columns: 300px 1fr;
|
|
gap: 16px; margin-bottom: 8px;
|
|
}
|
|
.sysinfo-specs,
|
|
.sysinfo-metrics {
|
|
background: var(--surface);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
box-shadow: var(--shadow-sm);
|
|
overflow: hidden;
|
|
}
|
|
.sysinfo-specs-header,
|
|
.sysinfo-metrics-header {
|
|
display: flex; align-items: center; justify-content: space-between;
|
|
padding: 14px 18px;
|
|
border-bottom: 1px solid var(--border);
|
|
background: var(--bg);
|
|
}
|
|
.sysinfo-specs-title {
|
|
font-size: .6875rem; font-weight: 700;
|
|
text-transform: uppercase; letter-spacing: .08em;
|
|
color: var(--text-tertiary);
|
|
}
|
|
.sysinfo-updated { font-size: .6875rem; color: var(--text-tertiary); }
|
|
|
|
.sysinfo-spec-row {
|
|
display: flex; justify-content: space-between; align-items: center;
|
|
padding: 10px 18px; border-bottom: 1px solid var(--border); gap: 12px;
|
|
}
|
|
.sysinfo-spec-row:last-child { border-bottom: none; }
|
|
.sysinfo-spec-label { font-size: .8125rem; color: var(--text-tertiary); flex-shrink: 0; }
|
|
.sysinfo-spec-value { font-size: .8125rem; font-weight: 600; color: var(--text-primary); text-align: right; }
|
|
.sysinfo-tier-pill {
|
|
display: inline-flex; align-items: center;
|
|
padding: 2px 8px; border-radius: var(--radius-pill);
|
|
background: var(--brand); color: white;
|
|
font-size: .625rem; font-weight: 700; letter-spacing: .03em;
|
|
}
|
|
|
|
.sysinfo-metric-grid {
|
|
display: grid; grid-template-columns: repeat(3, 1fr);
|
|
gap: 1px; background: var(--border);
|
|
}
|
|
.sysinfo-metric-card {
|
|
background: var(--surface); padding: 16px 18px;
|
|
}
|
|
.sysinfo-metric-icon {
|
|
width: 28px; height: 28px;
|
|
background: var(--brand-lt); border: 1px solid var(--brand-border);
|
|
border-radius: 6px;
|
|
display: flex; align-items: center; justify-content: center;
|
|
color: var(--brand); margin-bottom: 10px;
|
|
}
|
|
.sysinfo-metric-icon svg { width: 14px; height: 14px; stroke: currentColor; fill: none;
|
|
stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
.sysinfo-metric-label { font-size: .625rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--text-tertiary); margin-bottom: 4px; }
|
|
.sysinfo-metric-val { font-size: 1.125rem; font-weight: 700; color: var(--text-primary); margin-bottom: 8px; min-height: 28px; font-variant-numeric: tabular-nums; }
|
|
.sysinfo-uptime { font-size: .8125rem; }
|
|
.sysinfo-bar-wrap { height: 3px; background: var(--border); border-radius: 99px; overflow: hidden; }
|
|
.sysinfo-bar { height: 100%; width: 0%; background: var(--brand); border-radius: 99px; transition: width .6s var(--ease); }
|
|
.sysinfo-bar.warn { background: var(--amber); }
|
|
.sysinfo-bar.crit { background: var(--red); }
|
|
|
|
.sysinfo-notice {
|
|
margin: 0; padding: 12px 18px;
|
|
background: var(--amber-lt); border-top: 1px solid var(--amber-border);
|
|
font-size: .8125rem; color: var(--amber);
|
|
display: flex; align-items: center; gap: 8px;
|
|
}
|
|
.sysinfo-notice svg { width: 14px; height: 14px; stroke: currentColor; fill: none; flex-shrink: 0; }
|
|
|
|
/* ── Task cards ─────────────────────────────────────────────────── */
|
|
.task-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.task-card {
|
|
display: flex; align-items: flex-start; gap: 14px;
|
|
background: var(--surface);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 18px 20px;
|
|
text-decoration: none; color: inherit;
|
|
box-shadow: var(--shadow-xs);
|
|
transition: border-color var(--t-slow) var(--ease),
|
|
box-shadow var(--t-slow) var(--ease),
|
|
transform var(--t-slow) var(--ease);
|
|
}
|
|
.task-card:hover {
|
|
border-color: var(--brand-border);
|
|
box-shadow: var(--shadow-md), 0 0 0 1px rgba(124,58,237,.06);
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
.task-icon {
|
|
width: 40px; height: 40px;
|
|
background: var(--brand-lt); border: 1px solid var(--brand-border);
|
|
border-radius: var(--radius-md);
|
|
display: flex; align-items: center; justify-content: center;
|
|
color: var(--brand); flex-shrink: 0; margin-top: 1px;
|
|
}
|
|
.task-icon svg { width: 18px; height: 18px; stroke: currentColor; fill: none;
|
|
stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
|
|
.task-card h3 { font-size: .875rem; font-weight: 600; color: var(--text-primary); margin-bottom: 4px; }
|
|
.task-card p { font-size: .8125rem; color: var(--text-secondary); line-height: 1.55; }
|
|
|
|
.tools-used { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 10px; }
|
|
.tag {
|
|
padding: 2px 7px; border-radius: 4px;
|
|
font-size: .6875rem; font-weight: 500;
|
|
background: var(--bg); border: 1px solid var(--border);
|
|
color: var(--text-tertiary);
|
|
}
|
|
.tag.teal {
|
|
background: #F0FDFA; border-color: #99F6E4; color: #0F766E;
|
|
}
|
|
|
|
/* ── Feature grid ───────────────────────────────────────────────── */
|
|
.feature-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.feature-card {
|
|
display: flex; align-items: flex-start; gap: 12px;
|
|
background: var(--surface); border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg); padding: 14px 16px;
|
|
text-decoration: none; color: inherit;
|
|
box-shadow: var(--shadow-xs);
|
|
transition: border-color var(--t-slow) var(--ease),
|
|
box-shadow var(--t-slow) var(--ease),
|
|
transform var(--t-slow) var(--ease);
|
|
}
|
|
.feature-card:hover {
|
|
border-color: var(--brand-border);
|
|
box-shadow: var(--shadow-sm), 0 0 0 1px rgba(124,58,237,.04);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.feature-card-icon {
|
|
width: 34px; height: 34px;
|
|
background: var(--brand-lt); border: 1px solid var(--brand-border);
|
|
border-radius: 8px;
|
|
display: flex; align-items: center; justify-content: center;
|
|
color: var(--brand); flex-shrink: 0;
|
|
}
|
|
.feature-card-icon svg { width: 16px; height: 16px; stroke: currentColor; fill: none;
|
|
stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
|
|
.feature-card-title { font-size: .8125rem; font-weight: 600; color: var(--text-primary); }
|
|
.feature-card-desc { font-size: .75rem; color: var(--text-tertiary); margin-top: 2px; line-height: 1.5; }
|
|
|
|
/* ── Tool grid ──────────────────────────────────────────────────── */
|
|
.tool-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(228px, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.tool-card {
|
|
display: flex; gap: 12px; align-items: flex-start;
|
|
background: var(--surface); border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg); padding: 16px;
|
|
text-decoration: none; color: inherit;
|
|
box-shadow: var(--shadow-xs);
|
|
transition: border-color var(--t-slow) var(--ease),
|
|
box-shadow var(--t-slow) var(--ease),
|
|
transform var(--t-slow) var(--ease);
|
|
}
|
|
.tool-card:hover {
|
|
border-color: var(--brand-border);
|
|
box-shadow: var(--shadow-sm), 0 0 0 1px rgba(124,58,237,.04);
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
.t-icon {
|
|
width: 36px; height: 36px;
|
|
background: var(--bg); border: 1px solid var(--border);
|
|
border-radius: 8px;
|
|
display: flex; align-items: center; justify-content: center;
|
|
color: var(--text-secondary); flex-shrink: 0;
|
|
}
|
|
.t-icon svg { width: 16px; height: 16px; stroke: currentColor; fill: none;
|
|
stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
|
|
.tool-card h3 { font-size: .8125rem; font-weight: 600; color: var(--text-primary); margin-bottom: 3px; }
|
|
.tool-card p { font-size: .75rem; color: var(--text-tertiary); line-height: 1.5; }
|
|
.tool-card .cat { font-size: .625rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-disabled); margin-bottom: 4px; }
|
|
|
|
/* Port badge */
|
|
.port-badge {
|
|
display: inline-flex; align-items: center;
|
|
margin-top: 8px; padding: 2px 8px; border-radius: 4px;
|
|
font-size: .6875rem; font-weight: 600; font-family: 'SF Mono', Consolas, monospace;
|
|
background: var(--bg); border: 1px solid var(--border);
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
/* ── Info card / access box / steps ────────────────────────────── */
|
|
.info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; }
|
|
.info-card {
|
|
background: var(--surface); border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg); padding: 20px 22px;
|
|
box-shadow: var(--shadow-xs);
|
|
}
|
|
.info-card h4 { font-size: .6875rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-tertiary); margin-bottom: 10px; }
|
|
.info-card p, .info-card li { font-size: .875rem; color: var(--text-secondary); line-height: 1.7; }
|
|
.info-card ul { padding-left: 18px; }
|
|
.info-card li { margin-bottom: 4px; }
|
|
|
|
.access-box {
|
|
background: var(--brand-lt); border: 1px solid var(--brand-border);
|
|
border-radius: var(--radius-lg); padding: 20px 22px; margin-bottom: 12px;
|
|
}
|
|
.access-box h4 { font-size: .6875rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--brand-text); margin-bottom: 14px; }
|
|
.access-row { display: flex; align-items: baseline; gap: 10px; margin-bottom: 8px; }
|
|
.access-row .label { font-size: .75rem; color: var(--text-tertiary); width: 80px; flex-shrink: 0; }
|
|
.access-row .value {
|
|
font-family: 'SF Mono', Consolas, monospace; font-size: .8125rem;
|
|
color: var(--brand); background: rgba(124,58,237,.08);
|
|
padding: 2px 8px; border-radius: 4px; border: 1px solid var(--brand-border);
|
|
}
|
|
|
|
.steps { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-xs); }
|
|
.step { display: flex; gap: 14px; padding: 14px 18px; border-bottom: 1px solid var(--border); align-items: flex-start; }
|
|
.step:last-child { border-bottom: none; }
|
|
.step-num { width: 24px; height: 24px; background: var(--brand); color: white; font-size: .75rem; font-weight: 700; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 1px; }
|
|
.step h4 { font-size: .875rem; font-weight: 600; margin-bottom: 2px; color: var(--text-primary); }
|
|
.step p { font-size: .8125rem; color: var(--text-secondary); }
|
|
|
|
code {
|
|
font-family: 'SF Mono', Consolas, monospace; font-size: .8em;
|
|
background: var(--bg); border: 1px solid var(--border);
|
|
padding: 1px 5px; border-radius: 4px; color: var(--brand);
|
|
}
|
|
|
|
.notice {
|
|
background: var(--brand-lt); border-left: 3px solid var(--brand);
|
|
border-radius: 0 var(--radius-md) var(--radius-md) 0; padding: 12px 16px;
|
|
font-size: .8125rem; color: var(--brand-text); margin-bottom: 12px;
|
|
}
|
|
|
|
.works-with { display: flex; flex-wrap: wrap; gap: 8px; }
|
|
.works-with a {
|
|
background: var(--surface); border: 1px solid var(--border);
|
|
border-radius: 6px; padding: 5px 12px;
|
|
font-size: .8125rem; color: var(--text-secondary); transition: all var(--t-base);
|
|
box-shadow: var(--shadow-xs);
|
|
}
|
|
.works-with a:hover { border-color: var(--brand-border); color: var(--text-primary); }
|
|
|
|
/* ── Quick Start ────────────────────────────────────────────────── */
|
|
.qs-track { max-width: 760px; }
|
|
.qs-step { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 20px 22px; box-shadow: var(--shadow-xs); }
|
|
.qs-step.qs-done { border-color: var(--green-border); background: var(--green-lt); }
|
|
.qs-step-header { display: flex; align-items: flex-start; gap: 14px; flex-wrap: wrap; }
|
|
.qs-num { width: 30px; height: 30px; background: var(--brand); color: white; font-size: .8125rem; font-weight: 700; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 2px; }
|
|
.qs-num.done { background: var(--green); }
|
|
.qs-step-header h2 { font-size: 1rem; font-weight: 700; margin-bottom: 4px; color: var(--text-primary); }
|
|
.qs-sub { font-size: .8125rem; color: var(--text-tertiary); }
|
|
.qs-body { margin-top: 14px; padding-left: 44px; }
|
|
.qs-tip { background: var(--brand-lt); border: 1px solid var(--brand-border); border-radius: 6px; padding: 10px 14px; font-size: .875rem; color: var(--text-secondary); margin-bottom: 12px; }
|
|
.qs-connector { width: 2px; height: 16px; background: var(--border); margin-left: 14px; }
|
|
|
|
.model-quick-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 8px; margin-top: 12px; }
|
|
.mq-card { background: var(--bg); border: 1px solid var(--border); border-radius: 8px; padding: 12px 14px; }
|
|
.mq-card.recommended { border-color: var(--brand-border); background: var(--brand-lt); }
|
|
.mq-badge { font-size: .625rem; font-weight: 700; letter-spacing: .05em; color: var(--brand); text-transform: uppercase; margin-bottom: 5px; }
|
|
.mq-name { font-size: .8125rem; font-weight: 700; color: var(--text-primary); margin-bottom: 3px; font-family: monospace; }
|
|
.mq-desc { font-size: .75rem; color: var(--text-tertiary); }
|
|
|
|
.prompt-examples { margin-top: 12px; }
|
|
.pe-label { font-size: .625rem; font-weight: 700; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 8px; }
|
|
.pe-grid { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
|
|
.pe-chip {
|
|
background: var(--surface); border: 1px solid var(--border);
|
|
border-radius: 6px; padding: 6px 12px;
|
|
font-size: .8125rem; color: var(--text-secondary); cursor: pointer;
|
|
transition: all var(--t-base); font-family: inherit; box-shadow: var(--shadow-xs);
|
|
}
|
|
.pe-chip:hover { border-color: var(--brand-border); color: var(--text-primary); }
|
|
.pe-chip.copied { background: var(--green); border-color: var(--green); color: white; }
|
|
.pe-hint { font-size: .6875rem; color: var(--text-disabled); }
|
|
|
|
.next-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; }
|
|
.next-card {
|
|
display: flex; gap: 12px; align-items: flex-start;
|
|
background: var(--surface); border: 1px solid var(--border);
|
|
border-radius: var(--radius-md); padding: 14px;
|
|
text-decoration: none; color: inherit;
|
|
transition: all var(--t-slow); box-shadow: var(--shadow-xs);
|
|
}
|
|
.next-card:hover { border-color: var(--brand-border); transform: translateY(-1px); box-shadow: var(--shadow-md); }
|
|
.next-icon { font-size: 18px; flex-shrink: 0; }
|
|
.next-card h4 { font-size: .8125rem; font-weight: 600; margin-bottom: 2px; color: var(--text-primary); }
|
|
.next-card p { font-size: .75rem; color: var(--text-tertiary); }
|
|
|
|
/* ── Troubleshoot ───────────────────────────────────────────────── */
|
|
.ts-search-wrap { margin-bottom: 20px; }
|
|
.ts-search {
|
|
width: 100%; padding: 10px 16px; border: 1px solid var(--border);
|
|
border-radius: var(--radius-md); font-size: .875rem; font-family: inherit;
|
|
background: var(--surface); color: var(--text-primary); outline: none;
|
|
transition: border-color var(--t-base), box-shadow var(--t-base);
|
|
}
|
|
.ts-search::placeholder { color: var(--text-tertiary); }
|
|
.ts-search:focus { border-color: var(--brand); box-shadow: var(--shadow-focus); }
|
|
|
|
.ts-issue { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); margin-bottom: 6px; overflow: hidden; box-shadow: var(--shadow-xs); }
|
|
.ts-issue-header { display: flex; align-items: center; gap: 12px; padding: 13px 16px; cursor: pointer; transition: background var(--t-fast); user-select: none; }
|
|
.ts-issue-header:hover { background: var(--bg); }
|
|
.ts-issue.open .ts-issue-header { background: var(--brand-lt); border-bottom: 1px solid var(--brand-border); }
|
|
.ts-issue-icon { width: 28px; height: 28px; border-radius: 6px; background: var(--bg); border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--text-tertiary); }
|
|
.ts-issue-icon svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
.ts-issue-title { font-size: .875rem; font-weight: 600; flex: 1; color: var(--text-primary); }
|
|
.ts-chevron { font-size: 16px; color: var(--text-tertiary); transition: transform .2s; }
|
|
.ts-issue.open .ts-chevron { transform: rotate(180deg); }
|
|
.ts-issue-body { display: none; padding: 16px 18px; }
|
|
.ts-issue.open .ts-issue-body { display: block; }
|
|
.ts-fix-list { display: flex; flex-direction: column; gap: 12px; }
|
|
.ts-fix { display: flex; gap: 12px; align-items: flex-start; font-size: .875rem; color: var(--text-secondary); line-height: 1.6; }
|
|
.ts-fix-num { width: 20px; height: 20px; background: var(--brand); color: white; font-size: .6875rem; font-weight: 700; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 2px; }
|
|
|
|
.support-box { background: var(--brand-lt); border: 1px solid var(--brand-border); border-radius: var(--radius-lg); padding: 22px 24px; display: flex; gap: 16px; align-items: flex-start; }
|
|
.support-icon { width: 36px; height: 36px; background: var(--brand); border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
|
.support-icon svg { width: 18px; height: 18px; stroke: white; fill: none; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
.support-body h3 { font-size: .9375rem; font-weight: 700; color: var(--text-primary); margin-bottom: 8px; }
|
|
.support-body p { font-size: .875rem; color: var(--text-secondary); margin-bottom: 10px; }
|
|
.support-body ul { padding-left: 18px; }
|
|
.support-body li { font-size: .8125rem; color: var(--text-tertiary); margin-bottom: 4px; }
|
|
.support-body a { color: var(--brand); }
|
|
|
|
/* ── FAQ ─────────────────────────────────────────────────────────── */
|
|
.faq-item { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); margin-bottom: 6px; overflow: hidden; box-shadow: var(--shadow-xs); }
|
|
.faq-q { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; cursor: pointer; font-size: .875rem; font-weight: 600; color: var(--text-primary); gap: 12px; user-select: none; transition: background var(--t-fast); }
|
|
.faq-q:hover { background: var(--bg); }
|
|
.faq-item.open .faq-q { background: var(--brand-lt); border-bottom: 1px solid var(--brand-border); }
|
|
.faq-arrow { font-size: 16px; color: var(--text-tertiary); flex-shrink: 0; transition: transform .2s; }
|
|
.faq-item.open .faq-arrow { transform: rotate(180deg); }
|
|
.faq-a { display: none; padding: 14px 18px; font-size: .875rem; color: var(--text-secondary); line-height: 1.75; }
|
|
.faq-item.open .faq-a { display: block; }
|
|
.faq-a p { margin-bottom: 8px; }
|
|
.faq-a p:last-child { margin-bottom: 0; }
|
|
.faq-a a { color: var(--brand); }
|
|
|
|
/* ── Model Table ─────────────────────────────────────────────────── */
|
|
.model-table { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); }
|
|
.mt-header { display: grid; grid-template-columns: 200px 1fr 120px 80px 100px; padding: 10px 18px; background: var(--bg); color: var(--text-tertiary); font-size: .6875rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; gap: 12px; border-bottom: 1px solid var(--border); }
|
|
.mt-row { display: grid; grid-template-columns: 200px 1fr 120px 80px 100px; padding: 13px 18px; gap: 12px; border-bottom: 1px solid var(--border); align-items: center; transition: background var(--t-fast); }
|
|
.mt-row:last-child { border-bottom: none; }
|
|
.mt-row:hover { background: var(--bg); }
|
|
.mt-row.recommended { background: var(--brand-lt); }
|
|
.mt-name { font-size: .8125rem; font-weight: 700; font-family: monospace; color: var(--text-primary); margin-bottom: 2px; }
|
|
.mt-sub { font-size: .6875rem; color: var(--text-tertiary); }
|
|
.mt-badge { font-size: .6875rem; font-weight: 600; color: var(--brand); text-transform: uppercase; letter-spacing: .05em; }
|
|
.mt-cell { font-size: .8125rem; color: var(--text-secondary); }
|
|
.speed-bar { display: inline-block; height: 4px; border-radius: 2px; margin-right: 6px; vertical-align: middle; background: var(--brand); }
|
|
.s5{width:50px}.s4{width:40px}.s3{width:30px}.s2{width:20px;opacity:.5}.s1{width:10px;opacity:.3}
|
|
|
|
.choose-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
|
|
.choose-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 14px 16px; box-shadow: var(--shadow-xs); }
|
|
.choose-task { font-size: .75rem; color: var(--text-tertiary); margin-bottom: 6px; }
|
|
.choose-model { font-size: .9375rem; font-weight: 700; font-family: monospace; color: var(--brand); margin-bottom: 4px; }
|
|
.choose-reason { font-size: .75rem; color: var(--text-tertiary); line-height: 1.5; }
|
|
|
|
/* ── Glossary ────────────────────────────────────────────────────── */
|
|
.gloss-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 10px; }
|
|
.gloss-item { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 16px 18px; box-shadow: var(--shadow-xs); }
|
|
.gloss-term { font-size: .875rem; font-weight: 700; color: var(--text-primary); margin-bottom: 6px; padding-bottom: 8px; border-bottom: 1px solid var(--border); display: block; }
|
|
.gloss-def { font-size: .8125rem; color: var(--text-secondary); line-height: 1.7; }
|
|
|
|
/* ── Help grid ───────────────────────────────────────────────────── */
|
|
.help-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
|
|
.help-card {
|
|
background: var(--surface); border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg); padding: 18px;
|
|
text-decoration: none; color: inherit;
|
|
display: flex; flex-direction: column; gap: 8px;
|
|
box-shadow: var(--shadow-xs);
|
|
transition: border-color var(--t-slow), transform var(--t-slow), box-shadow var(--t-slow);
|
|
}
|
|
.help-card:hover { border-color: var(--brand-border); transform: translateY(-2px); box-shadow: var(--shadow-md); }
|
|
.help-card .h-icon { width: 32px; height: 32px; background: var(--brand-lt); border: 1px solid var(--brand-border); border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--brand); }
|
|
.help-card .h-icon svg { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
.help-card h3 { font-size: .8125rem; font-weight: 600; color: var(--text-primary); }
|
|
.help-card p { font-size: .75rem; color: var(--text-tertiary); line-height: 1.5; }
|
|
|
|
/* ── Footer ──────────────────────────────────────────────────────── */
|
|
footer {
|
|
background: var(--surface); border-top: 1px solid var(--border);
|
|
padding: 18px 64px;
|
|
display: flex; align-items: center; justify-content: space-between;
|
|
}
|
|
footer p { font-size: .75rem; color: var(--text-tertiary); }
|
|
footer a { color: var(--brand); }
|
|
footer a:hover { text-decoration: underline; }
|
|
|
|
/* ── Prompt Library ──────────────────────────────────────────────── */
|
|
.pl-controls { display: flex; flex-direction: column; gap: 10px; margin-bottom: 18px; }
|
|
.pl-filters { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
.pl-filter {
|
|
display: inline-flex; align-items: center; gap: 5px; padding: 5px 12px;
|
|
border-radius: 6px; border: 1px solid var(--border); background: var(--surface);
|
|
color: var(--text-secondary); font-size: .8125rem; font-weight: 500;
|
|
cursor: pointer; transition: all var(--t-base); box-shadow: var(--shadow-xs);
|
|
}
|
|
.pl-filter:hover { border-color: var(--brand-border); color: var(--text-primary); }
|
|
.pl-filter.active { background: var(--brand); border-color: var(--brand); color: white; box-shadow: 0 2px 6px rgba(124,58,237,.25); }
|
|
.pl-count { background: rgba(255,255,255,.2); border-radius: var(--radius-pill); padding: 0 5px; font-size: .625rem; }
|
|
.pl-filter:not(.active) .pl-count { background: var(--bg); color: var(--text-tertiary); }
|
|
|
|
.pl-tip { display: flex; align-items: flex-start; gap: 10px; background: var(--brand-lt); border: 1px solid var(--brand-border); border-radius: var(--radius-md); padding: 12px 14px; font-size: .8125rem; color: var(--brand-text); margin-bottom: 20px; line-height: 1.6; }
|
|
.upload-badge-inline { display: inline-flex; align-items: center; gap: 4px; background: var(--amber-lt); border: 1px solid var(--amber-border); border-radius: 4px; padding: 1px 6px; font-size: .75rem; font-weight: 600; color: var(--amber); }
|
|
.placeholder-eg { font-family: 'SF Mono', Consolas, monospace; background: var(--brand-lt); padding: 1px 5px; border-radius: 4px; font-size: .75rem; color: var(--text-primary); }
|
|
|
|
.pl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; margin-bottom: 28px; }
|
|
.pl-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 18px; display: flex; flex-direction: column; gap: 10px; transition: border-color var(--t-base); box-shadow: var(--shadow-xs); }
|
|
.pl-card:hover { border-color: var(--brand-border); }
|
|
.pl-card-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px; }
|
|
|
|
.pl-cat-tag { font-size: .6875rem; font-weight: 600; letter-spacing: .02em; padding: 2px 8px; border-radius: 4px; }
|
|
.pl-cat-tag.procurement { background: var(--brand-lt); color: var(--brand-text); }
|
|
.pl-cat-tag.hr { background: #DCFCE7; color: #15803D; }
|
|
.pl-cat-tag.legal { background: #FEFCE8; color: #854D0E; }
|
|
.pl-cat-tag.operations { background: #FEF2F2; color: #B91C1C; }
|
|
.pl-cat-tag.citizen { background: #EFF6FF; color: #1D4ED8; }
|
|
.pl-cat-tag.finance { background: var(--amber-lt); color: #92400E; }
|
|
.pl-cat-tag.comms { background: #FAF5FF; color: #7E22CE; }
|
|
.pl-cat-tag.management { background: #F0FDFA; color: #115E59; }
|
|
|
|
.upload-badge { font-size: .6875rem; font-weight: 600; color: #92400E; background: var(--amber-lt); border: 1px solid var(--amber-border); border-radius: 4px; padding: 2px 8px; }
|
|
.pl-title { font-size: .9375rem; font-weight: 600; color: var(--text-primary); line-height: 1.4; }
|
|
.pl-prompt { font-size: .8125rem; color: var(--text-secondary); line-height: 1.6; background: var(--bg); border-radius: 6px; padding: 10px 12px; flex: 1; border: 1px solid var(--border); font-family: inherit; }
|
|
.pl-copy-btn { align-self: flex-start; background: var(--brand); color: white; border: none; border-radius: 6px; padding: 6px 14px; font-size: .8125rem; font-weight: 600; cursor: pointer; transition: all var(--t-base); font-family: inherit; box-shadow: 0 1px 2px rgba(124,58,237,.2); }
|
|
.pl-copy-btn:hover { background: var(--brand-hover); box-shadow: 0 4px 10px rgba(124,58,237,.25); }
|
|
.pl-copy-btn.copied { background: var(--green); }
|
|
.pl-empty { text-align: center; padding: 60px 20px; color: var(--text-tertiary); font-size: .9375rem; }
|
|
|
|
/* ── Admin ───────────────────────────────────────────────────────── */
|
|
.adm-quick-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 8px; margin-bottom: 32px; }
|
|
.adm-quick-card { background: var(--brand-lt); border: 1px solid var(--brand-border); border-radius: var(--radius-md); padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
|
|
.adm-quick-title { font-size: .6875rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-tertiary); }
|
|
.adm-section { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; margin-bottom: 32px; box-shadow: var(--shadow-sm); }
|
|
.adm-row { display: flex; align-items: flex-start; gap: 20px; padding: 14px 18px; border-bottom: 1px solid var(--border); }
|
|
.adm-row:last-child { border-bottom: none; }
|
|
.adm-row:hover { background: var(--bg); }
|
|
.adm-row-label { flex: 1; min-width: 0; }
|
|
.adm-row-title { font-size: .875rem; font-weight: 600; color: var(--text-primary); margin-bottom: 3px; }
|
|
.adm-row-desc { font-size: .8125rem; color: var(--text-tertiary); line-height: 1.6; }
|
|
.adm-row-right { display: flex; align-items: center; gap: 8px; flex-shrink: 0; max-width: 55%; }
|
|
.adm-cmd { font-family: 'SF Mono', Consolas, monospace; font-size: .75rem; color: var(--brand); background: var(--brand-lt); border-radius: 6px; padding: 7px 10px; flex: 1; word-break: break-all; line-height: 1.5; border: 1px solid var(--brand-border); }
|
|
.adm-copy { background: var(--bg); color: var(--text-secondary); border: 1px solid var(--border); border-radius: 6px; padding: 5px 12px; font-size: .75rem; font-weight: 600; cursor: pointer; white-space: nowrap; transition: all var(--t-base); flex-shrink: 0; }
|
|
.adm-copy:hover { background: var(--brand); color: white; border-color: var(--brand); }
|
|
.adm-copy.copied { background: var(--green); border-color: var(--green); color: white; }
|
|
.adm-ports-wrap { overflow-x: auto; margin-bottom: 32px; border-radius: var(--radius-lg); border: 1px solid var(--border); box-shadow: var(--shadow-sm); }
|
|
.adm-procedure { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; margin-bottom: 12px; box-shadow: var(--shadow-xs); }
|
|
.adm-proc-title { display: flex; align-items: center; gap: 10px; background: var(--bg); padding: 12px 18px; font-size: .875rem; font-weight: 700; color: var(--text-primary); border-bottom: 1px solid var(--border); }
|
|
.adm-proc-icon { font-size: 14px; }
|
|
.adm-proc-body { padding: 16px 18px; }
|
|
.adm-proc-body > p { font-size: .8125rem; color: var(--text-secondary); margin-bottom: 12px; line-height: 1.6; }
|
|
.adm-proc-steps { padding-left: 18px; display: flex; flex-direction: column; gap: 8px; }
|
|
.adm-proc-steps li { font-size: .8125rem; color: var(--text-secondary); line-height: 1.6; }
|
|
.adm-inline-cmd { font-family: 'SF Mono', Consolas, monospace; font-size: .75rem; color: var(--brand); background: var(--brand-lt); border-radius: 4px; padding: 1px 6px; word-break: break-all; }
|
|
.adm-copy-sm { background: transparent; color: var(--brand); border: 1px solid var(--brand-border); border-radius: 4px; padding: 2px 7px; font-size: .6875rem; font-weight: 600; cursor: pointer; transition: all var(--t-base); vertical-align: middle; margin-left: 4px; }
|
|
.adm-copy-sm:hover { background: var(--brand); color: white; border-color: var(--brand); }
|
|
.adm-copy-sm.copied { background: var(--green); border-color: var(--green); color: white; }
|
|
|
|
/* ── Use Cases ───────────────────────────────────────────────────── */
|
|
.uc-impact-bar { display: flex; align-items: center; justify-content: center; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 22px 24px; margin-bottom: 28px; flex-wrap: wrap; box-shadow: var(--shadow-sm); }
|
|
.uc-impact-item { text-align: center; padding: 0 28px; flex: 1; min-width: 110px; }
|
|
.uc-impact-num { font-size: 2rem; font-weight: 700; letter-spacing: -.04em; color: var(--brand); line-height: 1; margin-bottom: 5px; }
|
|
.uc-impact-label { font-size: .6875rem; font-weight: 600; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: .06em; }
|
|
.uc-impact-divider { width: 1px; height: 40px; background: var(--border); flex-shrink: 0; }
|
|
.uc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; margin-bottom: 32px; }
|
|
.uc-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 18px 20px; display: flex; flex-direction: column; gap: 10px; box-shadow: var(--shadow-xs); transition: border-color var(--t-base); }
|
|
.uc-card:hover { border-color: var(--brand-border); }
|
|
.uc-card-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px; }
|
|
.uc-dept-tag { font-size: .6875rem; font-weight: 600; padding: 2px 8px; border-radius: 4px; }
|
|
.uc-dept-tag.procurement { background: var(--brand-lt); color: var(--brand-text); }
|
|
.uc-dept-tag.hr { background: #DCFCE7; color: #15803D; }
|
|
.uc-dept-tag.legal { background: #FEFCE8; color: #854D0E; }
|
|
.uc-dept-tag.operations { background: #FEF2F2; color: #B91C1C; }
|
|
.uc-dept-tag.citizen { background: #EFF6FF; color: #1D4ED8; }
|
|
.uc-dept-tag.finance { background: var(--amber-lt); color: #92400E; }
|
|
.uc-dept-tag.comms { background: #FAF5FF; color: #7E22CE; }
|
|
.uc-dept-tag.management { background: #F0FDFA; color: #115E59; }
|
|
.uc-time-saved { font-size: .75rem; font-weight: 600; color: var(--brand); background: var(--brand-lt); border-radius: 4px; padding: 2px 8px; }
|
|
.uc-title { font-size: .9375rem; font-weight: 700; color: var(--text-primary); line-height: 1.4; }
|
|
.uc-scenario { font-size: .8125rem; color: var(--text-secondary); line-height: 1.7; flex: 1; }
|
|
.uc-outcome { background: var(--green-lt); border-left: 3px solid var(--green); border-radius: 0 6px 6px 0; padding: 8px 12px; font-size: .8125rem; color: #15803D; line-height: 1.6; }
|
|
.uc-outcome-label { display: block; font-size: .625rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--green); margin-bottom: 3px; }
|
|
.uc-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px; padding-top: 8px; border-top: 1px solid var(--border); }
|
|
.uc-tools { display: flex; gap: 5px; flex-wrap: wrap; }
|
|
.uc-prompt-link { font-size: .8125rem; font-weight: 600; color: var(--brand); text-decoration: none; }
|
|
.uc-prompt-link:hover { text-decoration: underline; }
|
|
.uc-cta { background: var(--brand-lt); border: 1px solid var(--brand-border); border-radius: var(--radius-lg); padding: 32px; text-align: center; margin-top: 40px; }
|
|
.uc-cta h3 { font-size: 1.25rem; font-weight: 700; color: var(--text-primary); margin-bottom: 8px; }
|
|
.uc-cta p { font-size: .875rem; color: var(--text-secondary); max-width: 460px; margin: 0 auto 18px; line-height: 1.7; }
|
|
|
|
/* ── Security ────────────────────────────────────────────────────── */
|
|
.sec-trust-bar { display: flex; gap: 10px; flex-wrap: wrap; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 20px 24px; margin-bottom: 32px; justify-content: space-around; box-shadow: var(--shadow-sm); }
|
|
.sec-trust-item { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; min-width: 90px; }
|
|
.sec-trust-icon { width: 36px; height: 36px; background: var(--brand-lt); border: 1px solid var(--brand-border); border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--brand); }
|
|
.sec-trust-icon svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
.sec-trust-label { font-size: .8125rem; font-weight: 700; color: var(--text-primary); }
|
|
.sec-trust-sub { font-size: .6875rem; color: var(--text-tertiary); }
|
|
.sec-answer-block { display: flex; gap: 20px; align-items: flex-start; background: var(--green-lt); border: 1px solid var(--green-border); border-radius: var(--radius-lg); padding: 22px 24px; margin-bottom: 32px; }
|
|
.sec-answer-icon { width: 36px; height: 36px; background: var(--green); border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
|
.sec-answer-icon svg { width: 18px; height: 18px; stroke: white; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
|
|
.sec-answer-text h3 { font-size: 1rem; font-weight: 700; color: #15803D; margin-bottom: 8px; }
|
|
.sec-answer-text p { font-size: .875rem; color: #166534; line-height: 1.7; }
|
|
.sec-arch-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; margin-bottom: 32px; }
|
|
.sec-arch-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 18px 20px; box-shadow: var(--shadow-xs); }
|
|
.sec-arch-num { font-size: .6875rem; font-weight: 700; letter-spacing: .1em; color: var(--brand); margin-bottom: 6px; }
|
|
.sec-arch-card h4 { font-size: .875rem; font-weight: 700; color: var(--text-primary); margin-bottom: 6px; }
|
|
.sec-arch-card p { font-size: .8125rem; color: var(--text-secondary); line-height: 1.7; }
|
|
.sec-compare-wrap { overflow-x: auto; margin-bottom: 32px; border-radius: var(--radius-lg); border: 1px solid var(--border); box-shadow: var(--shadow-sm); }
|
|
.sec-compare { width: 100%; border-collapse: collapse; font-size: .8125rem; }
|
|
.sec-compare thead tr { background: var(--bg); }
|
|
.sec-compare th { padding: 10px 14px; text-align: left; font-size: .6875rem; font-weight: 700; letter-spacing: .06em; color: var(--text-tertiary); text-transform: uppercase; }
|
|
.sec-compare th.col-cezen { color: var(--brand); }
|
|
.sec-compare th.col-cloud { color: var(--red); }
|
|
.sec-compare tbody tr:nth-child(even) { background: var(--bg); }
|
|
.sec-compare tbody tr:hover { background: var(--surface2); }
|
|
.sec-compare td { padding: 10px 14px; color: var(--text-secondary); border-bottom: 1px solid var(--border); line-height: 1.5; }
|
|
.sec-compare td:first-child { font-weight: 600; color: var(--text-primary); width: 30%; }
|
|
.sec-compare td.col-cezen { color: #15803D; background: var(--green-lt); }
|
|
.sec-compare td.col-cloud { color: #B91C1C; background: var(--red-lt); }
|
|
.sec-contact { background: var(--brand-lt); border: 1px solid var(--brand-border); border-radius: var(--radius-lg); padding: 28px; text-align: center; margin-top: 40px; }
|
|
.sec-contact-icon { width: 44px; height: 44px; background: var(--brand); border-radius: 10px; display: flex; align-items: center; justify-content: center; margin: 0 auto 12px; }
|
|
.sec-contact-icon svg { width: 22px; height: 22px; stroke: white; fill: none; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
|
|
.sec-contact h3 { font-size: 1.0625rem; font-weight: 700; color: var(--text-primary); margin-bottom: 8px; }
|
|
.sec-contact p { font-size: .875rem; color: var(--text-secondary); max-width: 480px; margin: 0 auto; line-height: 1.7; }
|
|
|
|
/* ── What's New ──────────────────────────────────────────────────── */
|
|
.wn-current-banner { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 20px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 24px 28px; margin-bottom: 32px; box-shadow: var(--shadow-sm); }
|
|
.wn-version-pill { font-size: .625rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--brand); background: var(--brand-lt); border: 1px solid var(--brand-border); border-radius: var(--radius-pill); padding: 2px 10px; display: inline-block; margin-bottom: 6px; }
|
|
.wn-current-version { font-size: 1.5rem; font-weight: 700; color: var(--text-primary); line-height: 1.1; margin-bottom: 3px; letter-spacing: -.03em; }
|
|
.wn-current-date { font-size: .8125rem; color: var(--text-tertiary); }
|
|
.wn-current-right { display: flex; gap: 28px; flex-wrap: wrap; }
|
|
.wn-stat { text-align: center; }
|
|
.wn-stat-num { font-size: 1.75rem; font-weight: 700; color: var(--brand); line-height: 1; margin-bottom: 3px; letter-spacing: -.03em; }
|
|
.wn-stat-label { font-size: .6875rem; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: .05em; }
|
|
.wn-entry { display: flex; gap: 24px; margin-bottom: 20px; align-items: flex-start; }
|
|
.wn-upcoming { opacity: .55; }
|
|
.wn-entry-meta { flex-shrink: 0; width: 100px; text-align: right; padding-top: 2px; }
|
|
.wn-entry-version { font-size: .8125rem; font-weight: 700; color: var(--brand); margin-bottom: 2px; }
|
|
.wn-entry-date { font-size: .75rem; color: var(--text-tertiary); margin-bottom: 6px; }
|
|
.wn-entry-badge { display: inline-block; font-size: .625rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; padding: 2px 7px; border-radius: 4px; }
|
|
.wn-entry-badge.initial { background: var(--green-lt); color: var(--green); border: 1px solid var(--green-border); }
|
|
.wn-entry-badge.upcoming { background: var(--brand-lt); color: var(--brand-text); border: 1px solid var(--brand-border); }
|
|
.wn-entry-badge.update { background: #EFF6FF; color: #1D4ED8; border: 1px solid #BFDBFE; }
|
|
.wn-entry-body { flex: 1; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 18px 20px; position: relative; box-shadow: var(--shadow-xs); }
|
|
.wn-entry-body::before { content: ''; position: absolute; left: -14px; top: 14px; width: 7px; height: 7px; border-radius: 50%; background: var(--brand); border: 2px solid var(--bg); }
|
|
.wn-entry-title { font-size: .9375rem; font-weight: 700; color: var(--text-primary); margin-bottom: 5px; }
|
|
.wn-entry-desc { font-size: .8125rem; color: var(--text-secondary); line-height: 1.7; margin-bottom: 14px; }
|
|
.wn-change-group { margin-bottom: 12px; }
|
|
.wn-change-group-title { font-size: .6875rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--text-tertiary); margin-bottom: 6px; }
|
|
.wn-change-list { padding-left: 16px; display: flex; flex-direction: column; gap: 5px; }
|
|
.wn-change-list li { font-size: .8125rem; color: var(--text-secondary); line-height: 1.6; }
|
|
.wn-change-list.wn-planned li { color: var(--text-tertiary); }
|
|
|
|
/* ── Sysinfo extra (dashboard) ───────────────────────────────────── */
|
|
@media (max-width: 900px) {
|
|
.sysinfo-wrap { grid-template-columns: 1fr; }
|
|
.sysinfo-metric-grid { grid-template-columns: repeat(2, 1fr); }
|
|
}
|
|
|
|
/* ── Responsive ──────────────────────────────────────────────────── */
|
|
@media (max-width: 768px) {
|
|
.page-hero { padding: 40px 24px 36px; }
|
|
.page-hero h1 { font-size: 1.75rem; }
|
|
.tool-hero, .content { padding-left: 20px; padding-right: 20px; }
|
|
.info-grid { grid-template-columns: 1fr; }
|
|
.topnav { padding: 0 16px; }
|
|
.topnav nav { display: none; }
|
|
.pl-grid { grid-template-columns: 1fr; }
|
|
footer { padding: 16px 24px; flex-direction: column; gap: 6px; text-align: center; }
|
|
.mt-header, .mt-row { grid-template-columns: 1fr 1fr; }
|
|
.stats-strip { flex-wrap: wrap; }
|
|
.stat-item { min-width: 50%; }
|
|
}
|
|
|
|
/* ═══════════════════════════════════════════════════════════════
|
|
Glassmorphism + Animation Layer — v6
|
|
ui-ux-pro-max: spring easing, transform/opacity only,
|
|
40ms stagger, prefers-reduced-motion respected.
|
|
═══════════════════════════════════════════════════════════════ */
|
|
|
|
/* Glass tokens */
|
|
:root {
|
|
--glass-bg: rgba(255,255,255,0.48);
|
|
--glass-border: rgba(255,255,255,0.72);
|
|
--glass-blur: blur(20px) saturate(1.8);
|
|
--glass-shadow: 0 4px 24px rgba(124,58,237,.10), 0 1px 4px rgba(0,0,0,.06);
|
|
--glass-shadow-hover: 0 12px 40px rgba(124,58,237,.18), 0 4px 12px rgba(0,0,0,.08);
|
|
}
|
|
|
|
/* Rich gradient mesh — glass needs color to blur against */
|
|
body {
|
|
background:
|
|
radial-gradient(ellipse 80% 55% at 10% 0%, rgba(124,58,237,.18) 0%, transparent 60%),
|
|
radial-gradient(ellipse 60% 50% at 90% 100%, rgba(99,102,241,.15) 0%, transparent 60%),
|
|
radial-gradient(ellipse 50% 45% at 80% 15%, rgba(167,139,250,.12) 0%, transparent 55%),
|
|
radial-gradient(ellipse 45% 40% at 20% 80%, rgba(196,181,253,.10) 0%, transparent 55%),
|
|
radial-gradient(ellipse 35% 30% at 55% 50%, rgba(139,92,246,.07) 0%, transparent 50%),
|
|
linear-gradient(160deg, #f0eeff 0%, #f8f7ff 35%, #eef2ff 65%, #f5f0ff 100%);
|
|
min-height: 100vh;
|
|
}
|
|
|
|
/* Make hero, stats, content surfaces let the mesh show through */
|
|
.page-hero {
|
|
background: rgba(255,255,255,0.38) !important;
|
|
backdrop-filter: blur(2px);
|
|
}
|
|
.stats-strip {
|
|
background: rgba(255,255,255,0.50) !important;
|
|
backdrop-filter: blur(12px) saturate(1.4);
|
|
-webkit-backdrop-filter: blur(12px) saturate(1.4);
|
|
}
|
|
.status-bar {
|
|
background: rgba(255,255,255,0.55) !important;
|
|
backdrop-filter: blur(16px) saturate(1.5);
|
|
-webkit-backdrop-filter: blur(16px) saturate(1.5);
|
|
}
|
|
.sysinfo-specs,
|
|
.sysinfo-metrics {
|
|
background: rgba(255,255,255,0.52) !important;
|
|
backdrop-filter: blur(16px) saturate(1.5);
|
|
-webkit-backdrop-filter: blur(16px) saturate(1.5);
|
|
}
|
|
|
|
/* ── Hero animated orbs ─────────────────────────────────────── */
|
|
.hero-orb {
|
|
position: absolute; border-radius: 50%; pointer-events: none;
|
|
will-change: transform;
|
|
}
|
|
.hero-orb-1 {
|
|
width: 520px; height: 520px;
|
|
background: radial-gradient(circle, rgba(124,58,237,.12) 0%, transparent 70%);
|
|
top: -160px; left: -100px;
|
|
animation: orb-drift-1 9s ease-in-out infinite;
|
|
}
|
|
.hero-orb-2 {
|
|
width: 320px; height: 320px;
|
|
background: radial-gradient(circle, rgba(99,102,241,.09) 0%, transparent 70%);
|
|
bottom: -80px; right: 8%;
|
|
animation: orb-drift-2 11s ease-in-out infinite 1.5s;
|
|
}
|
|
.hero-orb-3 {
|
|
width: 200px; height: 200px;
|
|
background: radial-gradient(circle, rgba(167,139,250,.11) 0%, transparent 70%);
|
|
top: 15%; right: 22%;
|
|
animation: orb-drift-3 13s ease-in-out infinite 3s;
|
|
}
|
|
|
|
@keyframes orb-drift-1 {
|
|
0%,100% { transform: translate(0,0) scale(1); }
|
|
33% { transform: translate(28px,-18px) scale(1.04); }
|
|
66% { transform: translate(-12px,22px) scale(0.97); }
|
|
}
|
|
@keyframes orb-drift-2 {
|
|
0%,100% { transform: translate(0,0) scale(1); }
|
|
50% { transform: translate(-22px,-28px) scale(1.07); }
|
|
}
|
|
@keyframes orb-drift-3 {
|
|
0%,100% { transform: translate(0,0); }
|
|
40% { transform: translate(18px,14px); }
|
|
70% { transform: translate(-8px,-18px); }
|
|
}
|
|
|
|
/* ── Glassmorphism cards ────────────────────────────────────── */
|
|
.task-card,
|
|
.feature-card,
|
|
.tool-card,
|
|
.help-card {
|
|
background: var(--glass-bg) !important;
|
|
backdrop-filter: var(--glass-blur);
|
|
-webkit-backdrop-filter: var(--glass-blur);
|
|
box-shadow: var(--glass-shadow) !important;
|
|
/* gradient shimmer border via background-clip trick */
|
|
border: none !important;
|
|
position: relative;
|
|
}
|
|
/* Shimmer border using ::before */
|
|
.task-card::before,
|
|
.feature-card::before,
|
|
.tool-card::before,
|
|
.help-card::before {
|
|
content: '';
|
|
position: absolute; inset: 0;
|
|
border-radius: inherit;
|
|
padding: 1px;
|
|
background: linear-gradient(
|
|
135deg,
|
|
rgba(255,255,255,0.90) 0%,
|
|
rgba(196,181,253,0.55) 30%,
|
|
rgba(255,255,255,0.60) 55%,
|
|
rgba(167,139,250,0.50) 80%,
|
|
rgba(255,255,255,0.85) 100%
|
|
);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
transition: opacity var(--t-slow) var(--ease);
|
|
}
|
|
.task-card:hover::before,
|
|
.feature-card:hover::before,
|
|
.tool-card:hover::before,
|
|
.help-card:hover::before {
|
|
background: linear-gradient(
|
|
135deg,
|
|
rgba(255,255,255,1.0) 0%,
|
|
rgba(167,139,250,0.80) 30%,
|
|
rgba(255,255,255,0.75) 55%,
|
|
rgba(124,58,237,0.65) 80%,
|
|
rgba(255,255,255,1.0) 100%
|
|
);
|
|
}
|
|
.task-card:hover,
|
|
.feature-card:hover,
|
|
.tool-card:hover,
|
|
.help-card:hover {
|
|
box-shadow: var(--glass-shadow-hover) !important;
|
|
}
|
|
|
|
/* ── Lock primary button colour (overrides branding.js) ─────── */
|
|
.btn-primary,
|
|
a.btn-primary {
|
|
background: #7C3AED !important;
|
|
border-color: #7C3AED !important;
|
|
color: #fff !important;
|
|
}
|
|
.btn-primary:hover,
|
|
a.btn-primary:hover {
|
|
background: #6D28D9 !important;
|
|
border-color: #6D28D9 !important;
|
|
box-shadow: 0 4px 16px rgba(124,58,237,.40) !important;
|
|
}
|
|
|
|
/* ── Nav right layout ───────────────────────────────────────── */
|
|
.topnav .nav-right {
|
|
display: flex; align-items: center; gap: 8px;
|
|
margin-left: auto; flex-shrink: 0;
|
|
}
|
|
|
|
/* ── Tier badge — color-coded by tier ──────────────────────── */
|
|
.nav-tier-badge {
|
|
display: inline-flex; align-items: center; gap: 5px;
|
|
padding: 4px 10px; border-radius: var(--radius-pill);
|
|
font-size: .6875rem; font-weight: 700; letter-spacing: .05em;
|
|
text-transform: uppercase; cursor: default;
|
|
white-space: nowrap;
|
|
position: relative;
|
|
}
|
|
/* dot before tier name */
|
|
.nav-tier-badge::before {
|
|
content: '';
|
|
width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0;
|
|
}
|
|
|
|
/* starter — slate */
|
|
.nav-tier-badge[data-tier-slug="starter"] {
|
|
background: #F1F5F9; color: #475569; border: 1px solid #CBD5E1;
|
|
}
|
|
.nav-tier-badge[data-tier-slug="starter"]::before { background: #94A3B8; }
|
|
|
|
/* basic — violet (default) */
|
|
.nav-tier-badge[data-tier-slug="basic"],
|
|
.nav-tier-badge:not([data-tier-slug]) {
|
|
background: var(--brand-lt); color: var(--brand-text);
|
|
border: 1px solid var(--brand-border);
|
|
box-shadow: 0 0 0 3px rgba(124,58,237,.08);
|
|
}
|
|
.nav-tier-badge[data-tier-slug="basic"]::before,
|
|
.nav-tier-badge:not([data-tier-slug])::before { background: var(--brand); }
|
|
|
|
/* pro — indigo glow */
|
|
.nav-tier-badge[data-tier-slug="pro"] {
|
|
background: linear-gradient(135deg, #EEF2FF 0%, #E0E7FF 100%);
|
|
color: #4338CA; border: 1px solid #C7D2FE;
|
|
box-shadow: 0 0 0 3px rgba(99,102,241,.10), 0 2px 8px rgba(99,102,241,.15);
|
|
}
|
|
.nav-tier-badge[data-tier-slug="pro"]::before { background: #6366F1; box-shadow: 0 0 4px rgba(99,102,241,.6); }
|
|
|
|
/* max — gold premium */
|
|
.nav-tier-badge[data-tier-slug="max"] {
|
|
background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);
|
|
color: #92400E; border: 1px solid #FDE68A;
|
|
box-shadow: 0 0 0 3px rgba(245,158,11,.10), 0 2px 8px rgba(245,158,11,.18);
|
|
}
|
|
.nav-tier-badge[data-tier-slug="max"]::before { background: #F59E0B; box-shadow: 0 0 6px rgba(245,158,11,.7); }
|
|
|
|
/* ── Scroll-reveal ──────────────────────────────────────────── */
|
|
@keyframes reveal-up {
|
|
from { opacity: 0; transform: translateY(18px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
@keyframes reveal-fade {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
|
|
.reveal { opacity: 0; }
|
|
.reveal.is-visible {
|
|
animation: reveal-up 480ms cubic-bezier(.16,1,.3,1) both;
|
|
}
|
|
|
|
/* Per-child stagger (applied by JS via --stagger-i custom prop) */
|
|
.reveal.is-visible { animation-delay: var(--reveal-delay, 0ms); }
|
|
|
|
/* ── Hero entrance stagger ──────────────────────────────────── */
|
|
.hero-animate {
|
|
opacity: 0;
|
|
animation: reveal-up 560ms cubic-bezier(.16,1,.3,1) both;
|
|
}
|
|
.hero-animate.d1 { animation-delay: 80ms; }
|
|
.hero-animate.d2 { animation-delay: 180ms; }
|
|
.hero-animate.d3 { animation-delay: 270ms; }
|
|
.hero-animate.d4 { animation-delay: 360ms; }
|
|
|
|
/* ── Stat count-up flash ────────────────────────────────────── */
|
|
@keyframes stat-pop {
|
|
0% { opacity: 0; transform: translateY(6px) scale(.96); }
|
|
60% { transform: translateY(-2px) scale(1.02); }
|
|
100% { opacity: 1; transform: translateY(0) scale(1); }
|
|
}
|
|
.stat-num { opacity: 0; }
|
|
.stat-num.stat-done {
|
|
animation: stat-pop 500ms cubic-bezier(.16,1,.3,1) both;
|
|
}
|
|
|
|
/* ── prefers-reduced-motion ─────────────────────────────────── */
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.hero-orb-1, .hero-orb-2, .hero-orb-3 { animation: none; }
|
|
.reveal.is-visible { animation: reveal-fade 200ms ease both; }
|
|
.hero-animate { animation: reveal-fade 200ms ease both; }
|
|
.stat-num.stat-done { animation: none; opacity: 1; }
|
|
.task-card, .feature-card, .tool-card, .help-card,
|
|
.btn-primary, .btn-secondary { transition: none; }
|
|
}
|