/* ═══════════════════════════════════════════════════════════════ 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; } .topnav .nav-right { gap: 6px; min-width: 0; } .topnav .badge, .nav-tier-badge, #cezen-online-pill, .nav-user-info { display: none !important; } .nav-user-chip { border-left: 0; margin-left: 0; padding: 0; gap: 4px; flex-shrink: 0; } .nav-user-avatar { width: 26px; height: 26px; } .nav-logout-btn { padding: 4px 0; font-size: .6875rem; } .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; } }