Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added opensource/dynavec/images/team1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added opensource/dynavec/images/team2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
196 changes: 141 additions & 55 deletions opensource/dynavec/index.html

Large diffs are not rendered by default.

681 changes: 681 additions & 0 deletions opensource/dynavec/script.js

Large diffs are not rendered by default.

257 changes: 257 additions & 0 deletions opensource/dynavec/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,126 @@ body {
.note { font-size: 13px; color: var(--fg-3); margin-top: 18px; max-width: 72ch; line-height: 1.65; }
.note code { font-family: var(--mono); font-size: 12px; background: var(--subtle); color: var(--fg-2); padding: 1px 5px; border-radius: 3px; }

/* ── Cost calculator v2 ── */
.calc2 {
margin-top: 40px;
background: var(--surface);
border: 1.5px solid var(--border-md);
border-radius: 20px;
padding: 32px 36px 24px;
box-shadow: var(--sh-lg);
}
.calc2__header {
display: flex; align-items: center; justify-content: space-between;
flex-wrap: wrap; gap: 12px; margin-bottom: 28px;
}
.calc2__title {
font-size: 18px; font-weight: 700; letter-spacing: -0.03em; color: var(--fg);
}
.calc2__presets { display: flex; gap: 8px; }
.calc2__preset {
font-family: var(--mono); font-size: 11px; font-weight: 600;
padding: 6px 16px; border-radius: 999px;
border: 1.5px solid var(--border-md); background: transparent;
color: var(--fg-3); cursor: pointer;
transition: background var(--t), border-color var(--t), color var(--t);
}
.calc2__preset:hover { border-color: var(--accent); color: var(--accent); }
.calc2__preset.is-active {
background: var(--accent); border-color: var(--accent); color: #fff;
}
.calc2__body {
display: grid; grid-template-columns: 1fr 1fr; gap: 32px;
}
@media (max-width: 780px) { .calc2__body { grid-template-columns: 1fr; } }

/* sliders */
.calc2__sliders { display: flex; flex-direction: column; gap: 22px; }
.calc2__row-label {
display: flex; justify-content: space-between; align-items: baseline;
font-size: 13px; color: var(--fg-2); margin-bottom: 8px;
}
.calc2__val {
font-family: var(--mono); font-size: 13px; font-weight: 700; color: var(--accent);
}
.calc2__slider {
-webkit-appearance: none; appearance: none;
width: 100%; height: 5px; border-radius: 999px;
background: var(--border-md); outline: none; cursor: pointer;
}
.calc2__slider::-webkit-slider-thumb {
-webkit-appearance: none; appearance: none;
width: 18px; height: 18px; border-radius: 50%;
background: var(--accent); border: 2px solid #fff;
box-shadow: 0 2px 8px rgba(232,98,59,0.4); cursor: pointer;
transition: transform 0.1s;
}
.calc2__slider:active::-webkit-slider-thumb { transform: scale(1.2); }
.calc2__slider::-moz-range-thumb {
width: 18px; height: 18px; border-radius: 50%;
background: var(--accent); border: 2px solid #fff;
box-shadow: 0 2px 8px rgba(232,98,59,0.4); cursor: pointer;
}

/* results panel */
.calc2__results { display: flex; flex-direction: column; gap: 20px; }
.calc2__totals { display: flex; align-items: center; gap: 16px; }
.calc2__brand-total {
flex: 1; display: flex; align-items: center; gap: 12px;
background: var(--accent-bg); border: 1.5px solid var(--accent);
border-radius: 14px; padding: 14px 16px;
}
.calc2__brand-total--alt {
background: var(--subtle); border-color: var(--border-md);
}
.calc2__brand-logo {
width: 36px; height: 36px; border-radius: 10px; flex-shrink: 0;
background: var(--accent); color: #fff;
font-family: var(--mono); font-size: 11px; font-weight: 800;
display: flex; align-items: center; justify-content: center;
}
.calc2__brand-logo--alt { background: var(--fg-3); }
.calc2__price {
font-size: 22px; font-weight: 800; font-family: var(--mono);
color: var(--accent); letter-spacing: -0.04em; line-height: 1;
}
.calc2__price--alt { color: var(--fg-2); font-size: 18px; }
.calc2__price-label { font-size: 11px; color: var(--fg-3); margin-top: 3px; }
.calc2__vs {
font-family: var(--mono); font-size: 11px; font-weight: 700;
color: var(--fg-4); flex-shrink: 0;
}
.calc2__savings {
text-align: center; font-family: var(--mono); font-size: 12px; font-weight: 700;
color: #2db87c; background: rgba(45,184,124,0.1);
border: 1px solid rgba(45,184,124,0.3);
border-radius: 999px; padding: 6px 16px; align-self: center;
}

/* breakdown bars */
.calc2__bars { display: flex; flex-direction: column; gap: 10px; }
.calc2__bar-row {
display: grid; grid-template-columns: 80px 1fr 52px;
align-items: center; gap: 10px;
}
.calc2__bar-label { font-size: 11px; font-family: var(--mono); color: var(--fg-3); }
.calc2__bar-track {
height: 7px; border-radius: 999px; background: var(--border-md); overflow: hidden;
}
.calc2__bar-fill {
height: 100%; border-radius: 999px;
background: linear-gradient(90deg, var(--accent), #f5a200);
width: 0%; transition: width 0.45s cubic-bezier(.22,1,.36,1);
}
.calc2__bar-amt {
font-family: var(--mono); font-size: 11px; font-weight: 700;
color: var(--fg-2); text-align: right;
}
.calc2__note {
margin-top: 20px; font-size: 11px; color: var(--fg-4);
text-align: center; padding-top: 16px; border-top: 1px solid var(--border);
}

/* ================================================
TABS & CODE
================================================ */
Expand Down Expand Up @@ -921,3 +1041,140 @@ body {

.svc, .fig, .card { transition-property: box-shadow, border-color, transform, background; }
.svc:hover, .fig:hover { transform: translateY(-3px); }

/* ================================================
CARD ICONS
================================================ */

.card__icon {
display: flex;
align-items: center;
justify-content: flex-start;
margin-bottom: 16px;
width: 44px;
height: 44px;
background: var(--accent-bg);
border-radius: 10px;
padding: 8px;
}
.card__icon svg { width: 28px; height: 28px; }

/* Stagger card reveal delays */
.grid--3 .card[data-reveal]:nth-child(1) { transition-delay: 0.05s; }
.grid--3 .card[data-reveal]:nth-child(2) { transition-delay: 0.12s; }
.grid--3 .card[data-reveal]:nth-child(3) { transition-delay: 0.19s; }
.grid--3 .card[data-reveal]:nth-child(4) { transition-delay: 0.26s; }
.grid--3 .card[data-reveal]:nth-child(5) { transition-delay: 0.33s; }
.grid--3 .card[data-reveal]:nth-child(6) { transition-delay: 0.40s; }

/* Stat accent colour */
.stat__n--accent { color: var(--accent); }

/* Benchmark grid border fix */
.grid--3-bench {
display: grid;
gap: 16px;
background: transparent;
border: none;
border-radius: 0;
overflow: visible;
margin-bottom: 24px;
}

/* ================================================
CONTRIBUTORS CAROUSEL
================================================ */

.contributors-section { overflow: visible; padding-bottom: 80px; }

/* ── Section group label ── */
.contrib-group-label {
font-family: var(--mono); font-size: 11px; font-weight: 700;
text-transform: uppercase; letter-spacing: 0.1em; color: var(--fg-3);
margin-bottom: 24px;
}

/* ── Card grid — both core and all use identical columns/sizing ── */
.contrib-grid,
.contrib-grid--core {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 24px;
}

@media (max-width: 900px) {
.contrib-grid, .contrib-grid--core { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 600px) {
.contrib-grid, .contrib-grid--core { grid-template-columns: repeat(2, 1fr); }
}

/* ── Card ── */
.cg-card {
border-radius: 14px;
border: 1.5px solid var(--border);
background: var(--surface);
overflow: hidden;
transition: transform var(--t), box-shadow var(--t), border-color var(--t);
cursor: default;
}
.cg-card:hover {
transform: translateY(-4px);
box-shadow: var(--sh-lg);
border-color: var(--border-md);
}
.cg-card--core {
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-bg);
}
.cg-card--core:hover {
box-shadow: 0 0 0 3px var(--accent-bg), var(--sh-lg);
}

/* Photo area — fixed aspect ratio */
.cg-card__photo {
width: 100%;
aspect-ratio: 4 / 4;
overflow: hidden;
background: var(--subtle);
}
.cg-card__photo img {
width: 100%; height: 100%;
object-fit: cover; object-position: center top;
display: block;
transition: transform 0.4s ease;
}
.cg-card:hover .cg-card__photo img { transform: scale(1.04); }

/* Info area */
.cg-card__info {
padding: 14px 16px 16px;
display: flex; flex-direction: column; gap: 6px;
}
.cg-card__name {
font-size: 14px; font-weight: 700;
color: var(--fg); line-height: 1.3;
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cg-card--core .cg-card__name { color: var(--accent); }
.cg-card__badge {
display: inline-flex; align-items: center;
font-family: var(--mono); font-size: 10px; font-weight: 700;
color: var(--accent); background: var(--accent-bg);
border: 1px solid var(--accent); border-radius: 999px;
padding: 2px 8px; align-self: flex-start;
text-transform: uppercase; letter-spacing: 0.06em;
}

.contrib-show-more {
display: block; width: 100%; margin-top: 20px;
padding: 14px 24px; border-radius: 10px;
border: 1.5px dashed var(--border-md); background: transparent;
font-family: var(--mono); font-size: 13px; font-weight: 600;
color: var(--fg-3); cursor: pointer;
transition: border-color var(--t), color var(--t), background var(--t);
}
.contrib-show-more:hover {
border-color: var(--accent); color: var(--accent);
background: var(--accent-bg);
}
Loading