/* ============================================================ Build Small Hackathon — base styles & design tokens Woodblock Press · square · 2px ink rules · hard stamp shadows ============================================================ */ :root { /* paper / neutrals (warm) */ --paper: #f4eee1; --paper-2: #efe7d4; --kraft: #e4d5b7; --kraft-deep: #d6c19a; --line: #cdbb95; /* ink */ --ink: #33312b; --ink-2: #4a4639; --ink-soft: rgba(51,49,43,.62); --ink-faint: rgba(51,49,43,.40); /* accents (share chroma/lightness, vary hue) */ --forest: #3d6a55; --forest-deep: #2b4d3d; --forest-ink: #20392d; --amber: #e0913a; --amber-deep: #c2762a; --clay: #bd5f37; /* mapped roles */ --bg: var(--paper); --accent: var(--forest); --accent-2: var(--amber); --font-display: 'Archivo', system-ui, sans-serif; --font-body: 'Archivo', system-ui, sans-serif; --font-mono: 'Spline Sans Mono', ui-monospace, monospace; --maxw: 1200px; /* Woodblock: square everything */ --radius: 0; --radius-sm: 0; /* hard offset stamp shadows */ --press: 4px 4px 0 var(--ink); --press-sm: 2px 2px 0 var(--ink); --paccent: var(--forest); } * { box-sizing: border-box; } html { scroll-behavior: smooth; scroll-padding-top: 84px; } body { margin: 0; font-family: var(--font-body); background: var(--bg); color: var(--ink); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; line-height: 1.55; } /* subtle canvas grain on the whole page */ body::before { content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0; opacity: var(--grain-op, .5); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.045'/%3E%3C/svg%3E"); } .app-root { position: relative; z-index: 1; } ::selection { background: var(--amber); color: #fff; } a { color: inherit; text-decoration: none; } h1,h2,h3,h4 { font-family: var(--font-display); margin: 0; line-height: 1.02; } /* ---------- layout ---------- */ .wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 28px; width: 100%; } .section { position: relative; padding: 92px 0; } .section--tight { padding: 64px 0; } /* ---------- type utilities ---------- */ .display { font-family: var(--font-display); font-weight: 800; font-stretch: 118%; letter-spacing: -0.015em; line-height: 0.98; } .mono { font-family: var(--font-mono); font-weight: 500; letter-spacing: 0.02em; } .eyebrow { font-family: var(--font-mono); font-size: 12px; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-soft); display: inline-flex; align-items: center; gap: 9px; } .eyebrow::before { content: ""; width: 22px; height: 2px; background: var(--accent-2); display: inline-block; } .lede { font-size: clamp(17px, 1.5vw, 20px); color: var(--ink-2); max-width: 60ch; text-wrap: pretty; } /* ---------- coordinate tag (mono, map-like) ---------- */ .coord { font-family: var(--font-mono); font-size: 11px; letter-spacing: .08em; color: var(--ink-faint); } /* ---------- buttons (woodblock: square, 2px ink, stamp shadow) ---------- */ .btn { font-family: var(--font-display); font-weight: 800; font-stretch: 108%; font-size: 15px; letter-spacing: .01em; display: inline-flex; align-items: center; gap: 10px; padding: 13px 22px; border-radius: 0; border: 2px solid var(--ink); background: var(--ink); color: var(--paper); cursor: pointer; box-shadow: 4px 4px 0 var(--ink); transition: transform .1s ease, box-shadow .1s ease; position: relative; white-space: nowrap; } .btn:hover { transform: translate(2px,2px); box-shadow: 2px 2px 0 var(--ink); } .btn:active { transform: translate(4px,4px); box-shadow: 0 0 0 var(--ink); } .btn--accent { background: var(--accent); border-color: var(--forest-ink); color: #fff; box-shadow: 4px 4px 0 var(--forest-ink); } .btn--accent:hover { box-shadow: 2px 2px 0 var(--forest-ink); } .btn--accent:active { box-shadow: 0 0 0 var(--forest-ink); } .btn--ghost { background: var(--paper); color: var(--ink); } .btn--ghost:hover { background: var(--paper); color: var(--ink); } /* ---------- chips / filters ---------- */ .chip { font-family: var(--font-mono); font-size: 12.5px; font-weight: 600; letter-spacing: .02em; padding: 7px 13px; border-radius: 0; border: 2px solid var(--ink); background: var(--paper); color: var(--ink); cursor: pointer; display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; box-shadow: 2px 2px 0 var(--ink); transition: transform .1s ease, box-shadow .1s ease, background .12s, color .12s; } .chip:hover { transform: translate(1px,1px); box-shadow: 1px 1px 0 var(--ink); } .chip[data-on="true"] { background: var(--ink); color: var(--paper); } .chip[data-on="true"].chip--forest { background: var(--forest); border-color: var(--forest-ink); color:#fff; } .chip[data-on="true"].chip--amber { background: var(--amber); border-color: var(--ink); color: var(--ink); } /* ---------- cards ---------- */ .card { background: var(--paper); border: 2px solid var(--ink); border-radius: 0; box-shadow: 5px 5px 0 var(--ink); position: relative; } .card--kraft { background: var(--kraft); } /* dashed map separator (stays dashed) */ .dash-rule { height: 0; border: none; border-top: 2px dashed var(--line); margin: 0; } /* ---------- external / social link pills (kept flat per earlier direction) ---------- */ .linkrow { display: flex; flex-wrap: wrap; gap: 2px; } .linkpill { display: inline-flex; align-items: center; gap: 7px; font-family: var(--font-mono); font-size: 12.5px; letter-spacing: .01em; padding: 6px 10px; border-radius: 0; border: none; background: transparent; color: var(--ink-soft); transition: color .15s ease, background .15s ease; white-space: nowrap; } .linkpill:hover { color: var(--lp); background: color-mix(in srgb, var(--lp) 10%, transparent); } .on-dark .linkpill { color: rgba(244,238,225,.7); } .on-dark .linkpill:hover { color: var(--paper); background: rgba(244,238,225,.1); } /* ---------- stamp badge (KEEP ROUND — brand mark) ---------- */ .stamp { position: relative; width: 132px; height: 132px; display: grid; place-items: center; flex: none; } .stamp__ring { position: absolute; inset: 0; } .stamp__face { position: relative; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; } /* small motif: dotted route */ .route { stroke-dasharray: 1 7; stroke-linecap: round; } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } } /* ---------- nav ---------- */ .nav { position: sticky; top: 0; z-index: 50; background: color-mix(in srgb, var(--bg) 82%, transparent); backdrop-filter: blur(12px) saturate(140%); border-bottom: 2px solid var(--ink); } .nav__inner { display: flex; align-items: center; gap: 20px; height: 64px; } .nav__brand { display: flex; align-items: center; gap: 10px; flex-shrink: 0; } .nav__brand-text { font-size: 19px; font-stretch: 112%; white-space: nowrap; } .nav__links { display: flex; gap: 4px; margin-left: auto; } .nav__link { font-family: var(--font-mono); font-size: 12.5px; letter-spacing: .02em; padding: 7px 12px; border-radius: 0; color: var(--ink-soft); white-space: nowrap; transition: all .15s ease; cursor: pointer; } .nav__link:hover { color: var(--ink); background: color-mix(in srgb, var(--kraft) 60%, transparent); } .nav__link[data-active="true"] { color: var(--ink); background: var(--kraft); } /* hamburger toggle — hidden until the inline links no longer fit */ .nav__toggle { display: none; margin-left: auto; align-items: center; justify-content: center; width: 40px; height: 40px; padding: 0; background: var(--paper); border: 2px solid var(--ink); box-shadow: var(--press-sm); cursor: pointer; transition: transform .1s ease, box-shadow .1s ease; } .nav__toggle:hover { transform: translate(2px,2px); box-shadow: 0 0 0 var(--ink); } .nav__toggle:active { transform: translate(2px,2px); box-shadow: 0 0 0 var(--ink); } /* submit button sized to match the toggle (40px tall, 2px stamp shadow) */ .nav__submit { height: 40px; padding: 0 16px; font-size: 13px; gap: 8px; box-shadow: 2px 2px 0 var(--forest-ink); } .nav__submit:hover { transform: translate(2px,2px); box-shadow: 0 0 0 var(--forest-ink); } .nav__submit:active { transform: translate(2px,2px); box-shadow: 0 0 0 var(--forest-ink); } /* click-away scrim behind the popout */ .nav__scrim { display: none; position: fixed; inset: 0; z-index: 40; background: transparent; border: 0; padding: 0; margin: 0; cursor: default; } /* popout menu panel */ .nav__menu { display: none; position: absolute; top: calc(100% + 8px); right: 28px; z-index: 60; flex-direction: column; width: min(260px, calc(100vw - 56px)); padding: 8px; background: var(--paper); border: 2px solid var(--ink); box-shadow: var(--press); } .nav__menu-link { font-family: var(--font-mono); font-size: 14px; letter-spacing: .02em; padding: 11px 14px; color: var(--ink-soft); transition: background .15s ease, color .15s ease; } .nav__menu-link:hover { color: var(--ink); background: color-mix(in srgb, var(--kraft) 60%, transparent); } .nav__menu-link[data-active="true"] { color: var(--ink); background: var(--kraft); } /* below ~1000px the eight inline links stop fitting — switch to the popout */ @media (max-width: 1000px){ .nav__links { display: none; } .nav__toggle { display: inline-flex; } .nav__menu { display: flex; } .nav__scrim { display: block; } } /* tiny screens: drop the wordmark, keep the stamp badge */ @media (max-width: 400px){ .nav__brand-text { display: none; } } /* dark section */ .on-dark { --bg: var(--forest-ink); background: var(--forest-ink); color: var(--paper); } .on-dark h1, .on-dark h2, .on-dark h3 { color: var(--paper); } .on-dark .eyebrow { color: rgba(244,238,225,.7); } .on-dark .lede { color: rgba(244,238,225,.82); } .on-dark .card { background: rgba(244,238,225,.05); border-color: rgba(244,238,225,.5); box-shadow: 5px 5px 0 rgba(244,238,225,.18); color: var(--paper); } /* generic grid helpers */ .grid { display: grid; gap: 20px; } /* placeholder image block */ .ph { position: relative; overflow: hidden; border-radius: 0; background: repeating-linear-gradient(135deg, var(--kraft) 0 10px, var(--kraft-deep) 10px 20px); border: 2px solid var(--ink); display: grid; place-items: center; color: var(--ink-soft); } .ph span { font-family: var(--font-mono); font-size: 11px; letter-spacing: .06em; background: var(--paper); padding: 5px 10px; border-radius: 0; border: 2px solid var(--ink); } .sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0; } /* ============ stamp ============ */ .stamp--spin svg.stamp__ring { transition: transform .9s cubic-bezier(.2,.7,.2,1); } .stamp--spin:hover svg.stamp__ring { transform: rotate(28deg); } /* ============ hero ============ */ .hero { position: relative; overflow: clip; padding: 64px 0 84px; } .hero__grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 48px; align-items: center; } .hero h1 { font-size: clamp(58px, 11vw, 150px); } .hero__statline { display: flex; gap: 0; flex-wrap: wrap; border: 2px solid var(--ink); border-radius: 0; overflow: hidden; width: fit-content; background: var(--paper); box-shadow: 4px 4px 0 var(--ink); } .hero__stat { padding: 11px 22px; border-right: 2px solid var(--ink); white-space: nowrap; } .hero__stat:last-child { border-right: none; } .hero__stat b { font-family: var(--font-display); font-stretch: 115%; font-size: 17px; display: block; white-space: nowrap; line-height: 1.15; } .hero__stat span { font-family: var(--font-mono); font-size: 11px; letter-spacing: .04em; color: var(--ink-soft); line-height: 1.2; } .hero__card { position: relative; border: 2px solid var(--ink); border-radius: 0; background: var(--kraft); padding: 28px; overflow: hidden; box-shadow: 8px 8px 0 var(--ink); } @media (max-width: 900px){ .hero__grid { grid-template-columns: 1fr; gap: 32px; } .hero h1 { font-size: clamp(54px, 17vw, 96px); } } /* ============ tracks ============ */ .tracks { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; } .track { position: relative; overflow: hidden; border: 2px solid var(--ink); border-radius: 0; background: var(--paper); padding: 34px; box-shadow: 6px 6px 0 var(--ink); transition: transform .15s ease, box-shadow .15s ease; } .track:hover { transform: translate(-2px,-2px); box-shadow: 8px 8px 0 var(--ink); } .track__glyph { width: 60px; height: 60px; border-radius: 0; display: grid; place-items: center; border: 2px solid var(--ink); box-shadow: 3px 3px 0 var(--ink); margin-bottom: 22px; } .track__ex { display: flex; flex-direction: column; gap: 0; margin-top: 22px; padding: 0; } .track__ex li { list-style: none; padding: 11px 0; border-top: 1.5px dashed var(--line); display: flex; align-items: center; gap: 11px; font-size: 15px; } @media (max-width: 820px){ .tracks { grid-template-columns: 1fr; } } /* ============ rules ============ */ .rules { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border: 2px solid var(--ink); border-radius: 0; overflow: hidden; background: var(--paper); box-shadow: 6px 6px 0 var(--ink); } .rule { padding: 26px; border-right: 2px solid var(--ink); border-bottom: 2px solid var(--ink); } .rule__n { font-family: var(--font-mono); font-size: 12px; color: var(--amber-deep); letter-spacing: .1em; } .rule__check { width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--forest); display: grid; place-items: center; color: var(--forest); margin-bottom: 14px; } @media (max-width: 820px){ .rules { grid-template-columns: 1fr; } } /* ============ prizes ============ */ .prize-tabs { display: flex; gap: 8px; flex-wrap: wrap; } .podium { display: grid; grid-template-columns: repeat(2,1fr); gap: 20px; } .podium__col { border: 2px solid var(--ink); border-radius: 0; overflow: hidden; background: var(--paper); box-shadow: 6px 6px 0 var(--ink); } .podium__head { padding: 18px 22px; color: #fff; display: flex; align-items: center; justify-content: space-between; } .podium__body { padding: 20px 22px; } .podium__body .sponsor-places { margin-top: 0; } .prow { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 15px 22px; border-top: 1.5px dashed var(--line); } .prow:first-child { border-top: none; } .prow__place { font-family: var(--font-display); font-stretch: 112%; font-weight: 700; font-size: 17px; } .prow__award { font-family: var(--font-mono); font-weight: 600; font-size: 15px; } @media (max-width: 760px){ .podium { grid-template-columns: 1fr; } } .sponsor-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 18px; grid-auto-rows: 1fr; } .sponsor-grid > div { display: grid; } .sponsor-card { position: relative; border: 2px solid var(--ink); border-radius: 0; background: var(--paper); padding: 24px; overflow: hidden; box-shadow: 6px 6px 0 var(--ink); transition: transform .15s ease, box-shadow .15s ease; } .sponsor-card:hover { transform: translate(-2px,-2px); box-shadow: 8px 8px 0 var(--ink); } @media (max-width: 760px){ .sponsor-grid { grid-template-columns: 1fr; } } /* sponsor placement list */ .sponsor-places { margin-top: 16px; display: grid; gap: 9px; } .sponsor-place { display: flex; align-items: baseline; gap: 8px; } .sponsor-place__rank { font-family: var(--font-display); font-stretch: 110%; font-weight: 700; font-size: 15px; color: var(--ink); white-space: nowrap; } .dotfill { flex: 1; border-bottom: 1.5px dotted var(--line); transform: translateY(-3px); min-width: 14px; } /* expandable clarifications */ .clarify-toggle { display: inline-flex; align-items: center; gap: 7px; margin-top: 14px; padding: 0; background: none; border: none; cursor: pointer; font-family: var(--font-mono); font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); transition: color .16s ease; } .clarify-toggle:hover { color: var(--ink); } .clarify-toggle__chev { transform: rotate(90deg); transition: transform .22s ease; } .clarify-toggle[data-on="true"] .clarify-toggle__chev { transform: rotate(-90deg); } .clarify-body { max-height: 0; overflow: hidden; transition: max-height .3s ease; } .clarify-body[data-open="true"] { max-height: 400px; } .clarify-list { list-style: none; margin: 14px 0 0; padding: 14px 0 0; display: grid; gap: 11px; border-top: 1.5px dashed var(--line); } .clarify-list li { position: relative; padding-left: 18px; font-size: 13.5px; line-height: 1.5; color: var(--ink-2); text-wrap: pretty; } .clarify-dot { position: absolute; left: 0; top: 8px; width: 6px; height: 6px; border-radius: 50%; } /* bonus badge grid */ .badge-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; grid-auto-rows: 1fr; } .badge-grid > div { display: grid; } @media (max-width: 700px){ .badge-grid { grid-template-columns: repeat(2,1fr); } } @media (max-width: 460px){ .badge-grid { grid-template-columns: 1fr; } } .bonus-card { border: 2px solid var(--ink); border-radius: 0; background: var(--paper); padding: 20px; display: flex; flex-direction: column; box-shadow: 4px 4px 0 var(--ink); transition: transform .15s ease, box-shadow .15s ease; } .bonus-card:hover { transform: translate(-2px,-2px); box-shadow: 6px 6px 0 var(--ink); } .bonus-card__top { display: flex; justify-content: space-between; align-items: center; gap: 12px; } .bonus-card__blurb { margin: 8px 0 0; font-size: 14px; line-height: 1.5; color: var(--ink-2); text-wrap: pretty; } .bonus-card__note { margin: 14px 0 0; padding: 14px 0 0; border-top: 1.5px dashed var(--line); font-size: 13.5px; line-height: 1.55; color: var(--ink-2); text-wrap: pretty; } .flip__name { font-family: var(--font-display); font-stretch: 110%; font-weight: 700; font-size: 16px; } /* ============ recommender — pressed cards ============ */ /* container is no longer a frame — just a stack */ .rec { background: transparent; border: none; box-shadow: none; } /* picker — five separated pressed cards */ .rec__needs { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; } .rec__need { position: relative; display: flex; flex-direction: column; min-height: 158px; padding: 20px 16px 18px; border: 2px solid var(--ink); background: var(--paper); box-shadow: 5px 5px 0 var(--ink); text-align: left; cursor: pointer; color: var(--ink); transition: transform .1s ease, box-shadow .1s ease, background .12s ease; } .rec__need:hover { transform: translate(2px,2px); box-shadow: 3px 3px 0 var(--ink); } /* number → top-right corner stamp */ .rec__need .coord { position: absolute; top: 14px; right: 14px; } /* glyph plate → square, top; margin-bottom:auto bottom-aligns the label */ .rec__needglyph { width: 46px; height: 46px; border: 2px solid var(--ink); border-radius: 0; background: var(--kraft); display: grid; place-items: center; margin: 0 0 auto; opacity: 1; } .rec__need > .display { margin-top: 18px; line-height: 1.12; } /* SELECTED — forest fill, amber plate, pressed flush into its shadow */ .rec__need[data-on="true"] { background: var(--forest); color: #fff; border-color: var(--forest-ink); transform: translate(5px,5px); box-shadow: 0 0 0 var(--forest-ink); } .rec__need[data-on="true"] .coord { color: rgba(255,255,255,.7); } .rec__need[data-on="true"] .rec__needglyph { background: var(--amber); border-color: var(--forest-ink); color: var(--ink); } /* result panel — now its own framed card below the picker */ .rec__result { margin-top: 26px; padding: 24px; border: 2px solid var(--ink); border-radius: 0; box-shadow: 6px 6px 0 var(--ink); background: var(--kraft); } .rec__resulthead { display: flex; align-items: center; gap: 12px; margin-bottom: 4px; flex-wrap: wrap; } .rec__resulttitle { font-size: 18px; font-stretch: 106%; font-weight: 700; } .rec__resultlede { color: var(--ink-soft); margin: 0 0 4px; font-size: 14px; } /* result match rows — fixed logo rail so names align */ .rec__match { display: grid; grid-template-columns: 168px 1fr auto; align-items: center; gap: 18px; padding: 16px 0; border-top: 1.5px dashed var(--kraft-deep); } .rec__match:first-child { border-top: none; } .rec__match .partner-logo { width: 100%; height: 40px; margin: 0; } .rec__matchmeta { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; } .rec__matchname { font-size: 16.5px; font-stretch: 106%; font-weight: 700; } .rec__matchwhy { margin: 3px 0 0; color: var(--ink-2); font-size: 14px; text-wrap: pretty; } /* below the 5-up grid → one horizontal scroll strip so the result stays visible alongside the picker (avoids tall multi-row full-size cards) */ @media (max-width: 820px){ .rec__needs { grid-template-columns: none; display: flex; flex-wrap: nowrap; overflow-x: auto; gap: 10px; padding-bottom: 8px; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; } .rec__need { flex: 0 0 auto; scroll-snap-align: start; flex-direction: row; align-items: center; gap: 10px; min-height: 0; padding: 11px 14px; white-space: nowrap; box-shadow: 3px 3px 0 var(--ink); } .rec__need:hover { transform: none; box-shadow: 3px 3px 0 var(--ink); } .rec__need[data-on="true"] { transform: translate(3px,3px); box-shadow: 0 0 0 var(--forest-ink); } .rec__needglyph { width: 32px; height: 32px; margin: 0; flex: none; } .rec__need > .display { margin-top: 0; font-size: 15px; } .rec__need .coord { display: none; } /* drop the number to keep chips tight */ } @media (max-width: 560px){ .rec__match { grid-template-columns: 1fr auto; } .rec__match .partner-logo { grid-column: 1 / -1; width: fit-content; } .rec__result { margin-top: 18px; padding: 18px; } } /* ============ partners overview ============ */ .partner-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 16px; } .partner-card { border: 2px solid var(--ink); border-radius: 0; background: var(--paper); padding: 22px; box-shadow: 6px 6px 0 var(--ink); transition: transform .15s ease, box-shadow .15s ease; display: block; } .partner-card:hover { transform: translate(-2px,-2px); box-shadow: 8px 8px 0 var(--ink); } .partner-logo { height: 38px; border-radius: 0; display: inline-flex; align-items: center; justify-content: center; padding: 7px 12px; background: #fff; border: 2px solid var(--ink); width: fit-content; } .partner-logo img { max-height: 100%; max-width: 100%; width: auto; object-fit: contain; display: block; } .partner-logo--sm { height: 30px; padding: 5px 10px; } /* OpenAI wordmark has a descending “p” — nudge down so the caps optically centre */ .partner-logo img[src*="openai"], .plogo img[src*="openai"] { transform: translateY(8%); } /* Cohere lockup reads heavier/larger than the others — shrink for even visual weight */ .partner-logo img[src*="cohere"], .plogo img[src*="cohere"] { max-height: 74%; } @media (max-width: 900px){ .partner-grid { grid-template-columns: repeat(2,1fr); } } @media (max-width: 480px){ .partner-grid { grid-template-columns: 1fr; } } /* ============ submit trail (KEEP round dots + dashed connector) ============ */ .trail { position: relative; display: grid; gap: 0; } .trail__step { display: grid; grid-template-columns: 56px 1fr; gap: 22px; padding: 0 0 34px; position: relative; } .trail__dot { width: 56px; height: 56px; border-radius: 50%; border: 2px solid var(--ink); background: var(--paper); display: grid; place-items: center; font-family: var(--font-display); font-weight: 800; font-size: 20px; z-index: 2; } .trail__step::before { content: ""; position: absolute; left: 27px; top: 56px; bottom: -4px; width: 0; border-left: 2.5px dashed var(--line); } .trail__step:last-child::before { display: none; } /* ============ faq ============ */ .faq-item { border-top: 2px solid var(--ink); } .faq-item:last-child { border-bottom: 2px solid var(--ink); } .faq-q { display: flex; align-items: center; justify-content: space-between; gap: 20px; width: 100%; background: transparent; border: 0; cursor: pointer; padding: 24px 4px; text-align: left; font-family: var(--font-display); font-stretch: 106%; font-weight: 600; font-size: clamp(18px,2.2vw,22px); color: var(--ink); } .faq-plus { flex: none; width: 32px; height: 32px; border-radius: 0; border: 2px solid var(--ink); background: var(--paper); box-shadow: 2px 2px 0 var(--ink); color: var(--ink); display: grid; place-items: center; transition: transform .15s ease, box-shadow .15s ease, background .2s ease, color .2s ease; } .faq-plus svg { transition: transform .25s ease; } .faq-q:hover .faq-plus { transform: translate(1px,1px); box-shadow: 1px 1px 0 var(--ink); } .faq-q[aria-expanded="true"] .faq-plus { background: var(--amber); color: var(--ink); transform: translate(1px,1px); box-shadow: 1px 1px 0 var(--ink); } .faq-q[aria-expanded="true"] .faq-plus svg { transform: rotate(45deg); } .faq-a { overflow: hidden; max-height: 0; transition: max-height .35s ease; } .faq-a__inner { padding: 0 4px 26px; max-width: 70ch; color: var(--ink-2); font-size: 16.5px; } /* ============ footer ============ */ .footer { background: var(--ink); color: var(--paper); padding: 72px 0 40px; position: relative; overflow: clip; } .footer a:hover { color: var(--amber); } /* keyframes */ @keyframes floaty { 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-7px); } } .floaty { animation: floaty 6s ease-in-out infinite; } @media (prefers-reduced-motion: reduce){ .floaty { animation: none; } } /* ============================================================ partner-page template styles — themed per partner via --paccent ============================================================ */ /* ---- top bar / breadcrumb ---- */ .pbar { position: sticky; top: 0; z-index: 50; background: color-mix(in srgb, var(--bg) 84%, transparent); backdrop-filter: blur(12px) saturate(140%); border-bottom: 2px solid var(--ink); } .pbar__inner { display: flex; align-items: center; gap: 14px; height: 60px; } .crumb { font-family: var(--font-mono); font-size: 12.5px; color: var(--ink-soft); display: flex; align-items: center; gap: 9px; flex-wrap: wrap; } .crumb a:hover { color: var(--ink); } .crumb b { color: var(--ink); font-weight: 600; } .crumb__sep { color: var(--ink-faint); } /* ---- header ---- */ .phead { position: relative; overflow: clip; padding: 56px 0 48px; border-bottom: 2px solid var(--ink); background: linear-gradient(180deg, color-mix(in srgb, var(--paccent) 9%, var(--bg)) 0%, var(--bg) 78%); } .phead__grid { display: grid; grid-template-columns: 1fr auto; gap: 36px; align-items: center; } .plogo { display: inline-flex; align-items: center; justify-content: center; height: 52px; padding: 10px 18px; background: #fff; border: 2px solid var(--ink); border-radius: 0; width: fit-content; box-shadow: 3px 3px 0 var(--ink); } .plogo img { max-height: 100%; max-width: 220px; width: auto; object-fit: contain; display: block; } .psize-chip { font-family: var(--font-mono); font-size: 12px; letter-spacing: .04em; border: 2px solid var(--ink); color: var(--paccent); padding: 6px 13px; border-radius: 0; box-shadow: 2px 2px 0 var(--ink); display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; } @media (max-width: 760px){ .phead__grid { grid-template-columns: 1fr; } } /* ---- model / capability cards ---- */ .pcards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px,1fr)); gap: 18px; } .pcard { border: 2px solid var(--ink); border-radius: 0; background: var(--paper); padding: 22px; box-shadow: 5px 5px 0 var(--ink); transition: transform .15s ease, box-shadow .15s ease; } .pcard:hover { transform: translate(-2px,-2px); box-shadow: 7px 7px 0 var(--ink); } .pcard__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .pcard__name { font-family: var(--font-display); font-weight: 700; font-stretch: 108%; font-size: 21px; } .tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; padding: 0; } .tag { font-family: var(--font-mono); font-size: 11px; letter-spacing: .02em; background: color-mix(in srgb, var(--paccent) 12%, transparent); color: color-mix(in srgb, var(--paccent) 75%, var(--ink)); padding: 4px 9px; border-radius: 0; list-style: none; } /* size-vs-cap bar (under-32B story) */ .sizebar { margin-top: 16px; } .sizebar__track { height: 8px; border-radius: 0; background: var(--kraft); border: 2px solid var(--ink); overflow: hidden; } .sizebar__fill { height: 100%; background: var(--paccent); border-radius: 0; } .sizebar__lbl { display: flex; justify-content: space-between; margin-top: 7px; font-family: var(--font-mono); font-size: 11px; color: var(--ink-soft); } /* capability card (infra) — colored plate gets a stamp */ .capglyph { width: 46px; height: 46px; border-radius: 0; display: grid; place-items: center; background: var(--paccent); color: #fff; margin-bottom: 16px; box-shadow: 3px 3px 0 var(--ink); } /* ---- selection guide table ---- */ .guide { border: 2px solid var(--ink); border-radius: 0; overflow: hidden; background: var(--paper); } .guide__row { display: grid; grid-template-columns: 1fr auto 1fr; gap: 20px; align-items: center; padding: 20px 26px; border-top: 1.5px dashed var(--line); } .guide__row:first-child { border-top: none; } .guide__want { font-size: 16.5px; color: var(--ink-2); } .guide__want b { font-family: var(--font-display); color: var(--ink); font-weight: 600; } .guide__arrow { color: var(--paccent); display: grid; place-items: center; } .guide__use { text-align: right; } .guide__use b { font-family: var(--font-display); font-stretch: 106%; font-weight: 700; font-size: 18px; color: var(--paccent); display: block; } @media (max-width: 680px){ .guide__row { grid-template-columns: 1fr; gap: 8px; text-align: left; padding: 18px 20px; } .guide__use { text-align: left; } .guide__arrow { display: none; } } /* ---- resources ---- */ .reslist { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px,1fr)); gap: 12px; } .resitem { display: flex; align-items: center; gap: 14px; padding: 16px 18px; border: 2px solid var(--ink); border-radius: 0; background: var(--paper); box-shadow: 2px 2px 0 var(--ink); transition: transform .15s ease, box-shadow .15s ease; } .resitem:hover { transform: translate(1px,1px); box-shadow: 1px 1px 0 var(--ink); } .resitem__glyph { width: 38px; height: 38px; border-radius: 0; flex: none; display: grid; place-items: center; border: 2px solid var(--ink); color: var(--paccent); } .resitem__arrow { margin-left: auto; color: var(--ink-faint); } /* starter space callout (keep the dashed paccent frame — it's a callout, not a control) */ .starter { display: flex; align-items: center; gap: 20px; padding: 24px 26px; border: 2px dashed var(--paccent); border-radius: 0; background: color-mix(in srgb, var(--paccent) 6%, var(--paper)); } /* ---- prize callout ---- */ .pprize { display: grid; grid-template-columns: auto 1fr auto; gap: 28px; align-items: center; border: 2px solid var(--ink); border-radius: 0; padding: 30px 32px; box-shadow: 6px 6px 0 var(--ink); background: var(--kraft); position: relative; overflow: hidden; } @media (max-width: 720px){ .pprize { grid-template-columns: 1fr; text-align: center; justify-items: center; } } /* ---- support ---- */ .support { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px,1fr)); gap: 14px; } .supitem { display: flex; align-items: center; gap: 15px; padding: 20px; border: 2px solid var(--ink); border-radius: 0; background: var(--paper); } .supitem__glyph { width: 44px; height: 44px; border-radius: 0; flex: none; display: grid; place-items: center; background: var(--paccent); color: #fff; box-shadow: 3px 3px 0 var(--ink); } .supitem__handle { font-family: var(--font-mono); font-size: 13px; color: var(--ink-soft); } .section-label { display: flex; align-items: baseline; gap: 14px; margin-bottom: 28px; } @media (max-width: 760px){ .starter { flex-direction: column; align-items: flex-start; } }