diff --git a/src/assets/css/about.css b/src/assets/css/about.css index e05370e..f638ae1 100644 --- a/src/assets/css/about.css +++ b/src/assets/css/about.css @@ -33,7 +33,7 @@ display: inline-flex; align-items: center; margin-bottom: 0.7rem; - color: var(--accent-medtech); + color: var(--about-accent, var(--accent-ai)); font-size: 11px; font-weight: 850; letter-spacing: 0.16em; @@ -71,20 +71,48 @@ .about__panel, .about__section-card { + --about-accent: var(--accent-ai); + --about-soft: var(--accent-ai-soft); + --about-glow-x: 100%; + --about-glow-y: 0; + position: relative; overflow: hidden; padding: 1.15rem 1.15rem 1rem; - border: 1px solid var(--system-border); + border: 1px solid color-mix(in srgb, var(--about-accent) 24%, var(--system-border)); border-radius: var(--radius); background: linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), + radial-gradient(520px 220px at var(--about-glow-x) var(--about-glow-y), var(--about-soft), transparent 66%), linear-gradient(180deg, rgba(255,255,255,0.84), rgba(255,255,255,0.62)), var(--panel); - background-size: 28px 28px, 28px 28px, auto, auto; + background-size: 28px 28px, 28px 28px, auto, auto, auto; box-shadow: var(--shadow); } +.about__section-card--implementation { + --about-accent: var(--accent-medtech); + --about-soft: var(--accent-medtech-soft); +} + +.about__section-card--cool { + --about-accent: var(--accent-ai); + --about-soft: var(--accent-ai-soft); +} + +.about__section-card--warm { + --about-accent: var(--accent-fullstack); + --about-soft: var(--accent-fullstack-soft); +} + +.about__section-card--foundation { + --about-accent: var(--accent-fullstack); + --about-soft: var(--accent-fullstack-soft); + --about-glow-x: 0; + --about-glow-y: 100%; +} + .about__panel::before, .about__section-card::before, .about__cta::before, @@ -93,7 +121,7 @@ position: absolute; inset: 0 auto 0 0; width: 3px; - background: linear-gradient(180deg, var(--accent-medtech), transparent); + background: linear-gradient(180deg, var(--about-accent, var(--accent-ai)), transparent); } .about__panel { @@ -137,6 +165,10 @@ gap: 0.5rem; } +.about__icon { + color: var(--about-accent, var(--accent-ai)); +} + .about__subtitle { font-size: 1.5rem; color: var(--accent-medtech); @@ -199,7 +231,7 @@ } .about__check-list svg { - color: var(--accent-medtech); + color: var(--about-accent, var(--accent-ai)); flex-shrink: 0; margin-top: 3px; } @@ -286,35 +318,106 @@ } .about__value-card { + --about-card-accent: var(--accent-ai); + --about-card-soft: var(--accent-ai-soft); + position: relative; padding: 1.15rem; - border: 1px solid var(--system-border); + border: 1px solid color-mix(in srgb, var(--about-card-accent) 26%, var(--system-border)); border-radius: var(--radius); - background: color-mix(in srgb, var(--panel) 88%, transparent); + background: + radial-gradient(340px 160px at 100% 0, var(--about-card-soft), transparent 68%), + color-mix(in srgb, var(--panel) 88%, transparent); box-shadow: none; } +.about__value-card::before, +.about__role-card::before { + content: ""; + position: absolute; + inset: 12px auto 12px 0; + width: 3px; + border-radius: 999px; + background: linear-gradient(180deg, var(--about-card-accent), transparent); +} + +.about__value-card--1 { + --about-card-accent: var(--accent-ai); + --about-card-soft: var(--accent-ai-soft); +} + +.about__value-card--2 { + --about-card-accent: var(--brand-2); + --about-card-soft: var(--surface-cool); +} + +.about__value-card--3 { + --about-card-accent: var(--accent-medtech); + --about-card-soft: var(--accent-medtech-soft); +} + .about__value-card h4, .about__role-card h4 { margin: 0 0 8px; - color: var(--text); + color: color-mix(in srgb, var(--about-card-accent, var(--about-accent, var(--accent-ai))) 20%, var(--text)); } .about__role-card { + --about-card-accent: var(--accent-ai); + --about-card-soft: var(--accent-ai-soft); + position: relative; display: grid; gap: 12px; align-content: start; padding: 1.15rem; - border: 1px solid var(--system-border); + border: 1px solid color-mix(in srgb, var(--about-card-accent) 26%, var(--system-border)); border-radius: var(--radius); - background: color-mix(in srgb, var(--panel) 88%, transparent); + background: + radial-gradient(340px 160px at 100% 0, var(--about-card-soft), transparent 68%), + color-mix(in srgb, var(--panel) 88%, transparent); +} + +.about__role-card:nth-child(1) { + --about-card-accent: var(--accent-ai); + --about-card-soft: var(--accent-ai-soft); +} + +.about__role-card:nth-child(2) { + --about-card-accent: var(--accent-fullstack); + --about-card-soft: var(--accent-fullstack-soft); +} + +.about__role-card:nth-child(3) { + --about-card-accent: var(--accent-medtech); + --about-card-soft: var(--accent-medtech-soft); } .about__role-card .btn { width: fit-content; } +.about__foundation-list { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin-top: 12px; +} + +.about__foundation-item { + display: inline-flex; + align-items: center; + min-height: 32px; + padding: 7px 10px; + border: 1px solid color-mix(in srgb, var(--accent-fullstack) 26%, var(--tag-border)); + border-radius: 999px; + background: color-mix(in srgb, var(--accent-fullstack-soft) 72%, var(--panel)); + color: var(--muted-strong); + font-size: 12px; + font-weight: 760; + line-height: 1.35; +} + .about__proof-links { display: grid; gap: 10px; @@ -341,6 +444,9 @@ } .about__cta { + --about-accent: var(--accent-ai); + --about-soft: var(--accent-ai-soft); + position: relative; overflow: hidden; display: flex; @@ -348,14 +454,15 @@ justify-content: space-between; gap: 18px; padding: 1.15rem; - border: 1px solid var(--system-border); + border: 1px solid color-mix(in srgb, var(--about-accent) 28%, var(--system-border)); border-radius: var(--radius); background: linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), + radial-gradient(520px 220px at 100% 0, var(--about-soft), transparent 66%), linear-gradient(180deg, rgba(255,255,255,0.84), rgba(255,255,255,0.62)), var(--panel); - background-size: 28px 28px, 28px 28px, auto, auto; + background-size: 28px 28px, 28px 28px, auto, auto, auto; box-shadow: var(--shadow); } @@ -441,7 +548,7 @@ background: linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), - radial-gradient(520px 220px at 100% 0, var(--accent-medtech-soft), transparent 66%), + radial-gradient(520px 220px at var(--about-glow-x, 100%) var(--about-glow-y, 0), var(--about-soft, var(--accent-ai-soft)), transparent 66%), var(--card-bg); } diff --git a/src/assets/css/contact.css b/src/assets/css/contact.css index 3570272..51632c4 100644 --- a/src/assets/css/contact.css +++ b/src/assets/css/contact.css @@ -17,6 +17,47 @@ pointer-events: none; } +.contact-hero__extra .artifact-map { + --system-accent: var(--accent-ai); + --system-accent-2: var(--accent-medtech); + --system-accent-soft: var(--accent-ai-soft); + border-color: color-mix(in srgb, var(--accent-ai) 24%, var(--system-border)); + background: + linear-gradient(var(--grid-line) 1px, transparent 1px), + linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), + radial-gradient(440px 180px at 0 0, var(--accent-ai-soft), transparent 68%), + radial-gradient(420px 180px at 100% 0, var(--accent-medtech-soft), transparent 68%), + radial-gradient(360px 160px at 100% 100%, var(--accent-fullstack-soft), transparent 70%), + linear-gradient(180deg, rgba(255,255,255,0.88), rgba(255,255,255,0.66)), + var(--panel); + background-size: 28px 28px, 28px 28px, auto, auto, auto, auto, auto; +} + +.contact-hero__extra .artifact-map__rail { + background-image: linear-gradient(90deg, transparent, var(--accent-ai) 16%, var(--accent-medtech) 58%, var(--accent-fullstack) 86%, transparent); + opacity: 0.32; +} + +.contact-hero__extra .artifact-map__group:first-of-type .artifact-map__label { + color: var(--accent-ai); +} + +.contact-hero__extra .artifact-map__group--output .artifact-map__label { + color: var(--accent-medtech); +} + +.contact-hero__extra .artifact-map__transform { + color: var(--accent-medtech); +} + +.contact-hero__extra .artifact-map__transform span:first-child { + background-image: linear-gradient(180deg, var(--accent-ai) 45%, transparent 0); +} + +.contact-hero__extra .artifact-map__transform span:last-child { + background-image: linear-gradient(180deg, var(--accent-medtech) 45%, transparent 0); +} + .contact__grid { display: grid; grid-template-columns: 1fr 1.1fr; @@ -39,6 +80,7 @@ .contact__path { --contact-path-accent: var(--accent-ai); + --contact-path-accent-2: var(--accent-ai-2); --contact-path-soft: var(--accent-ai-soft); position: relative; overflow: hidden; @@ -50,25 +92,29 @@ background: linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), - linear-gradient(180deg, rgba(255,255,255,0.84), rgba(255,255,255,0.62)), + radial-gradient(360px 170px at 100% 0, var(--contact-path-soft), transparent 68%), + linear-gradient(180deg, rgba(255,255,255,0.88), rgba(255,255,255,0.66)), var(--panel); - background-size: 28px 28px, 28px 28px, auto, auto; + background-size: 28px 28px, 28px 28px, auto, auto, auto; box-shadow: var(--shadow); transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease; } .contact__path--ai { --contact-path-accent: var(--accent-ai); + --contact-path-accent-2: var(--accent-ai-2); --contact-path-soft: var(--accent-ai-soft); } .contact__path--medtech { --contact-path-accent: var(--accent-medtech); + --contact-path-accent-2: var(--accent-medtech-2); --contact-path-soft: var(--accent-medtech-soft); } .contact__path--fullstack { --contact-path-accent: var(--accent-fullstack); + --contact-path-accent-2: var(--accent-fullstack-2); --contact-path-soft: var(--accent-fullstack-soft); } @@ -78,7 +124,7 @@ position: absolute; inset: 0 auto 0 0; width: 3px; - background: linear-gradient(180deg, var(--contact-path-accent, var(--accent-ai)), transparent); + background: linear-gradient(180deg, var(--contact-path-accent, var(--accent-ai)), var(--contact-path-accent-2, var(--accent-ai-2)), transparent); } .contact__path::after { @@ -98,6 +144,16 @@ color: var(--contact-path-accent); } +.contact__path > svg { + width: 34px; + height: 34px; + padding: 8px; + border: 1px solid color-mix(in srgb, var(--contact-path-accent) 34%, var(--system-border)); + border-radius: 10px; + background: color-mix(in srgb, var(--contact-path-soft) 78%, var(--panel)); + box-shadow: 0 0 0 4px color-mix(in srgb, var(--contact-path-soft) 54%, transparent); +} + .contact__path strong { color: var(--text); } @@ -134,21 +190,30 @@ } .contact__panel, .contact__form { + --contact-panel-accent: var(--accent-medtech); + --contact-panel-accent-2: var(--accent-ai); + --contact-panel-soft: var(--accent-medtech-soft); position: relative; overflow: hidden; background: linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), - linear-gradient(180deg, rgba(255,255,255,0.84), rgba(255,255,255,0.62)), + radial-gradient(420px 190px at 100% 0, var(--contact-panel-soft), transparent 68%), + radial-gradient(300px 150px at 0 100%, color-mix(in srgb, var(--accent-fullstack-soft) 70%, transparent), transparent 70%), + linear-gradient(180deg, rgba(255,255,255,0.88), rgba(255,255,255,0.66)), var(--panel); - background-size: 28px 28px, 28px 28px, auto, auto; + background-size: 28px 28px, 28px 28px, auto, auto, auto, auto; border: 1px solid var(--system-border); border-radius: var(--radius); padding: 18px; box-shadow: var(--shadow); } -.contact__subtitle { color: var(--accent-ai); margin: 0 0 8px; } +.contact__panel::before { + background: linear-gradient(180deg, var(--contact-panel-accent), var(--contact-panel-accent-2), transparent); +} + +.contact__subtitle { color: var(--contact-panel-accent); margin: 0 0 8px; } .contact__text { color: var(--muted); margin: 0 0 12px; } .contact__best-for { margin: -4px 0 16px 18px; @@ -157,11 +222,39 @@ display: grid; gap: 8px; } +.contact__best-for li::marker { + color: var(--contact-panel-accent); +} .contact__best-for .contact__text { margin: 0; } .contact__info { display: grid; gap: 10px; } -.contact__row { display: grid; grid-template-columns: 120px 1fr; align-items: center; gap: 8px; } -.contact__label { color: var(--muted); } +.contact__row { + --contact-row-accent: var(--accent-ai); + --contact-row-soft: var(--accent-ai-soft); + display: grid; + grid-template-columns: 120px 1fr; + align-items: center; + gap: 8px; + padding: 10px; + border: 1px solid color-mix(in srgb, var(--contact-row-accent) 22%, var(--system-border)); + border-radius: 10px; + background: color-mix(in srgb, var(--contact-row-soft) 66%, var(--panel)); +} +.contact__row:nth-child(2) { + --contact-row-accent: var(--accent-medtech); + --contact-row-soft: var(--accent-medtech-soft); +} +.contact__row:nth-child(3) { + --contact-row-accent: var(--accent-fullstack); + --contact-row-soft: var(--accent-fullstack-soft); +} +.contact__label { + color: color-mix(in srgb, var(--contact-row-accent) 38%, var(--muted)); + font-weight: 760; +} +.contact__label .icon { + color: var(--contact-row-accent); +} .contact__value { display: flex; align-items: center; gap: 10px; } .link-like { color: var(--accent-ai); text-decoration: underline; background: none; border: 0; padding: 0; cursor: pointer; } .contact__copied { opacity: 0; transform: translateY(2px); transition: .2s; color: #7ed321; font-size: 12px; } @@ -169,11 +262,25 @@ .contact__socials { display: flex; flex-wrap: wrap; gap: 8px; } .contact__social { + --contact-social-accent: var(--accent-fullstack); + --contact-social-soft: var(--accent-fullstack-soft); display: inline-flex; align-items: center; gap: 6px; padding: 8px 10px; border-radius: 10px; - border: 1px solid var(--system-border); background: var(--panel); color: var(--text); + border: 1px solid color-mix(in srgb, var(--contact-social-accent) 28%, var(--system-border)); + background: color-mix(in srgb, var(--contact-social-soft) 68%, var(--panel)); + color: var(--text); +} +.contact__social:first-child { + --contact-social-accent: var(--accent-ai); + --contact-social-soft: var(--accent-ai-soft); +} +.contact__social svg { + color: var(--contact-social-accent); +} +.contact__social:hover { + background: color-mix(in srgb, var(--contact-social-soft) 88%, var(--panel-hover)); + border-color: color-mix(in srgb, var(--contact-social-accent) 44%, var(--border-hover)); } -.contact__social:hover { background: var(--panel-hover); border-color: var(--border-hover); } .field { display: grid; gap: 6px; margin-bottom: 12px; } .field label { color: var(--text); font-weight: 600; } @@ -218,7 +325,18 @@ background: linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), - radial-gradient(520px 220px at 100% 0, var(--contact-path-soft, var(--accent-ai-soft)), transparent 66%), + radial-gradient(520px 220px at 100% 0, var(--contact-path-soft, var(--contact-panel-soft, var(--accent-ai-soft))), transparent 66%), + radial-gradient(320px 170px at 0 100%, color-mix(in srgb, var(--contact-path-accent-2, var(--contact-panel-accent-2, var(--accent-ai-2))) 10%, transparent), transparent 72%), + var(--card-bg); +} + +[data-theme="dark"] .contact-hero__extra .artifact-map { + background: + linear-gradient(var(--grid-line) 1px, transparent 1px), + linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), + radial-gradient(460px 190px at 0 0, var(--accent-ai-soft), transparent 70%), + radial-gradient(420px 190px at 100% 0, var(--accent-medtech-soft), transparent 70%), + radial-gradient(360px 170px at 100% 100%, var(--accent-fullstack-soft), transparent 72%), var(--card-bg); } @@ -241,6 +359,14 @@ width: 100%; justify-content: center; } + + .contact-hero__extra .artifact-map__transform span:first-child { + background-image: linear-gradient(90deg, var(--accent-ai) 45%, transparent 0); + } + + .contact-hero__extra .artifact-map__transform span:last-child { + background-image: linear-gradient(90deg, var(--accent-medtech) 45%, transparent 0); + } } @media (prefers-reduced-motion: reduce) { diff --git a/src/assets/css/market-pages.css b/src/assets/css/market-pages.css index 9fc2613..d877b10 100644 --- a/src/assets/css/market-pages.css +++ b/src/assets/css/market-pages.css @@ -1512,13 +1512,48 @@ } .fullstack-hero-map__node { + --fullstack-flow-accent: var(--accent-fullstack); + --fullstack-flow-soft: var(--accent-fullstack-soft); + position: relative; z-index: 1; min-width: 0; padding: 12px 10px; - border: 1px solid var(--system-border); + border: 1px solid color-mix(in srgb, var(--fullstack-flow-accent) 30%, var(--system-border)); border-radius: 12px; - background: color-mix(in srgb, var(--panel) 90%, transparent); + background: + radial-gradient(180px 100px at 100% 0, var(--fullstack-flow-soft), transparent 68%), + color-mix(in srgb, var(--panel) 90%, transparent); +} + +.fullstack-hero-map__step:nth-child(1) .fullstack-hero-map__node { + --fullstack-flow-accent: var(--brand-2); + --fullstack-flow-soft: var(--surface-cool); +} + +.fullstack-hero-map__step:nth-child(2) .fullstack-hero-map__node { + --fullstack-flow-accent: var(--accent-ai); + --fullstack-flow-soft: var(--accent-ai-soft); +} + +.fullstack-hero-map__step:nth-child(3) .fullstack-hero-map__node { + --fullstack-flow-accent: var(--accent-fullstack); + --fullstack-flow-soft: var(--accent-fullstack-soft); +} + +.fullstack-hero-map__step:nth-child(4) .fullstack-hero-map__node { + --fullstack-flow-accent: var(--accent-medtech); + --fullstack-flow-soft: var(--accent-medtech-soft); +} + +.fullstack-hero-map__step:nth-child(5) .fullstack-hero-map__node { + --fullstack-flow-accent: var(--brand-warm); + --fullstack-flow-soft: var(--surface-warm); +} + +.fullstack-hero-map__step:nth-child(6) .fullstack-hero-map__node { + --fullstack-flow-accent: var(--accent-fullstack-2); + --fullstack-flow-soft: var(--surface-cool); } .fullstack-hero-map__node span { @@ -1528,8 +1563,8 @@ height: 28px; margin-bottom: 9px; border-radius: 999px; - background: var(--accent-fullstack-soft); - color: var(--accent-fullstack); + background: var(--fullstack-flow-soft); + color: var(--fullstack-flow-accent); font-size: 11px; font-weight: 900; } @@ -1561,15 +1596,21 @@ .fullstack-workflow-card, .fullstack-project-card, .fullstack-capability-card { + --fullstack-card-accent: var(--accent-fullstack); + --fullstack-card-soft: var(--accent-fullstack-soft); + --fullstack-card-glow-x: 100%; + --fullstack-card-glow-y: 0; + position: relative; overflow: hidden; - border: 1px solid var(--system-border); + border: 1px solid color-mix(in srgb, var(--fullstack-card-accent) 24%, var(--system-border)); border-radius: 14px; background: linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), + radial-gradient(360px 170px at var(--fullstack-card-glow-x) var(--fullstack-card-glow-y), var(--fullstack-card-soft), transparent 70%), color-mix(in srgb, var(--panel) 90%, transparent); - background-size: 24px 24px, 24px 24px, auto; + background-size: 24px 24px, 24px 24px, auto, auto; box-shadow: var(--shadow); } @@ -1581,13 +1622,38 @@ position: absolute; inset: 0 auto 0 0; width: 3px; - background: linear-gradient(180deg, var(--accent-fullstack), transparent); + background: linear-gradient(180deg, var(--fullstack-card-accent), transparent); } .fullstack-stack-card { padding: 18px; } +.fullstack-stack-card:nth-child(1) { + --fullstack-card-accent: var(--accent-fullstack); + --fullstack-card-soft: var(--accent-fullstack-soft); +} + +.fullstack-stack-card:nth-child(2) { + --fullstack-card-accent: var(--brand-2); + --fullstack-card-soft: var(--surface-cool); +} + +.fullstack-stack-card:nth-child(3) { + --fullstack-card-accent: var(--accent-medtech); + --fullstack-card-soft: var(--accent-medtech-soft); +} + +.fullstack-stack-card:nth-child(4) { + --fullstack-card-accent: var(--brand-warm); + --fullstack-card-soft: var(--surface-warm); +} + +.fullstack-stack-card:nth-child(5) { + --fullstack-card-accent: var(--accent-ai); + --fullstack-card-soft: var(--accent-ai-soft); +} + .fullstack-stack-card h3, .fullstack-workflow-card h3, .fullstack-project-card h3, @@ -1599,6 +1665,7 @@ .fullstack-stack-card h3 { margin-bottom: 12px; + color: color-mix(in srgb, var(--fullstack-card-accent) 22%, var(--text)); font-size: 16px; } @@ -1610,6 +1677,13 @@ gap: 8px; } +.fullstack-stack-card .feature-pill, +.fullstack-project-card__stack .feature-pill { + --system-accent: var(--fullstack-card-accent); + --system-accent-soft: var(--fullstack-card-soft); + border-color: color-mix(in srgb, var(--fullstack-card-accent) 26%, var(--tag-border)); +} + .fullstack-workflow-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); @@ -1618,11 +1692,26 @@ .fullstack-workflow-card { padding: 18px; - background: - linear-gradient(var(--grid-line) 1px, transparent 1px), - linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), - radial-gradient(260px 150px at 100% 0, var(--accent-fullstack-soft), transparent 70%), - color-mix(in srgb, var(--panel) 90%, transparent); +} + +.fullstack-workflow-card:nth-child(1) { + --fullstack-card-accent: var(--brand-2); + --fullstack-card-soft: var(--surface-cool); +} + +.fullstack-workflow-card:nth-child(2) { + --fullstack-card-accent: var(--accent-fullstack); + --fullstack-card-soft: var(--accent-fullstack-soft); +} + +.fullstack-workflow-card:nth-child(3) { + --fullstack-card-accent: var(--accent-medtech); + --fullstack-card-soft: var(--accent-medtech-soft); +} + +.fullstack-workflow-card:nth-child(4) { + --fullstack-card-accent: var(--brand-warm); + --fullstack-card-soft: var(--surface-warm); } .fullstack-workflow-card span, @@ -1630,7 +1719,7 @@ .fullstack-project-card__status { display: inline-flex; width: fit-content; - color: var(--accent-fullstack); + color: var(--fullstack-card-accent); font-size: 10px; font-weight: 900; letter-spacing: 0.14em; @@ -1639,6 +1728,7 @@ .fullstack-workflow-card h3 { margin-top: 10px; + color: color-mix(in srgb, var(--fullstack-card-accent) 20%, var(--text)); font-size: 18px; } @@ -1660,20 +1750,36 @@ padding: 20px; } -.fullstack-project-card:nth-child(2n) { - background: - linear-gradient(var(--grid-line) 1px, transparent 1px), - linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), - radial-gradient(360px 170px at 100% 0, color-mix(in srgb, var(--accent-fullstack-2) 12%, transparent), transparent 70%), - color-mix(in srgb, var(--panel) 91%, transparent); +.fullstack-project-card:nth-child(1) { + --fullstack-card-accent: var(--accent-fullstack); + --fullstack-card-soft: var(--accent-fullstack-soft); } -.fullstack-project-card:nth-child(3n) { - background: - linear-gradient(var(--grid-line) 1px, transparent 1px), - linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), - radial-gradient(360px 170px at 0 100%, var(--accent-fullstack-soft), transparent 70%), - color-mix(in srgb, var(--panel) 91%, transparent); +.fullstack-project-card:nth-child(2) { + --fullstack-card-accent: var(--brand-2); + --fullstack-card-soft: var(--surface-cool); +} + +.fullstack-project-card:nth-child(3) { + --fullstack-card-accent: var(--accent-medtech); + --fullstack-card-soft: var(--accent-medtech-soft); +} + +.fullstack-project-card:nth-child(4) { + --fullstack-card-accent: var(--accent-ai); + --fullstack-card-soft: var(--accent-ai-soft); +} + +.fullstack-project-card:nth-child(5) { + --fullstack-card-accent: var(--brand-warm); + --fullstack-card-soft: var(--surface-warm); +} + +.fullstack-project-card:nth-child(6) { + --fullstack-card-accent: var(--accent-fullstack-2); + --fullstack-card-soft: var(--surface-cool); + --fullstack-card-glow-x: 0; + --fullstack-card-glow-y: 100%; } .fullstack-project-card--compact { @@ -1688,13 +1794,14 @@ .fullstack-project-card__status { padding: 5px 8px; - border: 1px solid color-mix(in srgb, var(--accent-fullstack) 34%, var(--border)); + border: 1px solid color-mix(in srgb, var(--fullstack-card-accent) 34%, var(--border)); border-radius: 999px; - background: var(--accent-fullstack-soft); + background: var(--fullstack-card-soft); letter-spacing: 0.08em; } .fullstack-project-card h3 { + color: color-mix(in srgb, var(--fullstack-card-accent) 18%, var(--text)); font-size: 21px; } @@ -1727,9 +1834,9 @@ gap: 6px; min-height: 32px; padding: 7px 10px; - border: 1px solid color-mix(in srgb, var(--accent-fullstack) 30%, var(--border)); + border: 1px solid color-mix(in srgb, var(--fullstack-card-accent) 30%, var(--border)); border-radius: 999px; - background: var(--accent-fullstack-soft); + background: var(--fullstack-card-soft); color: var(--text); font-size: 13px; font-weight: 850; @@ -1737,8 +1844,8 @@ } .fullstack-project-card__links a:hover { - border-color: color-mix(in srgb, var(--accent-fullstack) 56%, var(--border-hover)); - background: color-mix(in srgb, var(--accent-fullstack-soft) 78%, var(--panel-hover)); + border-color: color-mix(in srgb, var(--fullstack-card-accent) 56%, var(--border-hover)); + background: color-mix(in srgb, var(--fullstack-card-soft) 78%, var(--panel-hover)); } .fullstack-capability-grid { @@ -1749,7 +1856,38 @@ padding: 18px; } +.fullstack-capability-card:nth-child(1) { + --fullstack-card-accent: var(--accent-fullstack); + --fullstack-card-soft: var(--accent-fullstack-soft); +} + +.fullstack-capability-card:nth-child(2) { + --fullstack-card-accent: var(--accent-medtech); + --fullstack-card-soft: var(--accent-medtech-soft); +} + +.fullstack-capability-card:nth-child(3) { + --fullstack-card-accent: var(--brand-2); + --fullstack-card-soft: var(--surface-cool); +} + +.fullstack-capability-card:nth-child(4) { + --fullstack-card-accent: var(--accent-ai); + --fullstack-card-soft: var(--accent-ai-soft); +} + +.fullstack-capability-card:nth-child(5) { + --fullstack-card-accent: var(--accent-fullstack-2); + --fullstack-card-soft: var(--surface-cool); +} + +.fullstack-capability-card:nth-child(6) { + --fullstack-card-accent: var(--brand-warm); + --fullstack-card-soft: var(--surface-warm); +} + .fullstack-capability-card h3 { + color: color-mix(in srgb, var(--fullstack-card-accent) 18%, var(--text)); font-size: 17px; } diff --git a/src/components/AIWorkflowDetailPage.jsx b/src/components/AIWorkflowDetailPage.jsx index 4135ef0..9fff2d5 100644 --- a/src/components/AIWorkflowDetailPage.jsx +++ b/src/components/AIWorkflowDetailPage.jsx @@ -17,6 +17,7 @@ import { getWorkflowBySlug } from "../data/aiWorkflows.js"; import { useTranslation } from "../context/LangContext.jsx"; import StatusBadge from "./StatusBadge.jsx"; import PageHero from "./common/PageHero.jsx"; +import TypewriterTitle from "./common/TypewriterTitle.jsx"; const AUDIT_HREF = "mailto:romazuryk@proton.me?subject=AI%20Workflow%20Audit%20Request"; @@ -105,7 +106,7 @@ export default function AIWorkflowDetailPage({ slug }) {
} subtitle={summary} primaryCta={{ label: t("site.cta.startAudit"), href: AUDIT_HREF }} secondaryCta={{ label: t("site.aiWorkflow.detail.back"), href: "/ai-workflow", icon: