` block at the end of this file)
.offline / __radar __sweep __ring __core __lede __actions __tips
templates/offline.html, the service worker's
one stored page
.settings-device          «تسجيل الخروج من هذا الجهاز» on settings
@media (display-mode: standalone)  safe-area insets in the installed app
PAGE GUIDANCE  (an operator page whose objects are not self-evident)
.page-lede                one sentence under the <h1> saying what the page
is for; measure-capped at 74ch
details.panel.guide       the folded explainer. Collapsed it is one row, so
the table it explains stays above the fold:
<details class="panel guide">
<summary>…</summary>
<div class="guide__body">…</div></details>
.guide__warn              the one line in it that warns rather than
defines. Pair with a tone class — it reads
--tone-*, so it can never drift out of step with
the rest of the app's warnings:
<p class="guide__warn tone-warning">
.guide__cols              auto-fit grid of explanation blocks (no
breakpoint: the count is a page fact)
.guide__block             one block; its h3 takes an icon
.guide__list              bulleted rules; <strong> lifts to full ink
.guide__defs              status legend — a real .st pill in the <dt>, its
meaning in the <dd>. Render the component, never
a description of it.
.section-head             an h2 plus the line saying what the section holds
.section-head__note       that line
PRIMARY ACTION  — one panel per page may claim to be the thing to do here
.action-panel             takes the 3px accent edge (brand colour, which no
severity ever is, so it reads "start here" and
not "something is wrong")
.steps                    the path in three words each, inline and numbered
.action-form              fields + submit on one line; stacks under 560px
.action-form__grow        the field that takes the slack
.action-form__narrow      a short field (a number, a duration)
.action-form__hint        the help line UNDER the row. Not a .field-hint
inside a label: that makes one label taller and
drops the submit below the inputs.
SEEKER SETTINGS  (templates/seeker_settings.html)
.settings-card / .settings-status / .settings-toggle / .switch /
.settings-savebar          see the "seeker settings" block below
.weight-list .weight      the "حتى 30 نقطة" pill beside a field name in the
explainer. Numbers come from SCORE_WEIGHTS, which
is read from scorer.py — never typed in
JOURNEY STRIP  (templates/_journey.html)
.journey                  the four-step map, on /join, /join/done and every
intake page. Include with `journey` set to the
current step number:
{% set journey = 3 %}{% include "_journey.html" %}
.journey__step            one step; .is-done / .is-current carry the state
.journey__mark __label    the numbered disc and the text beside it
LANDING PAGE  (templates/landing.html — the site root, "/")
.landing-shell            wider main column than the seeker flow's 780px;
set via base_public.html's `main_class` block
.landing-hero             two columns: copy beside the sample digest
.radar-mark               the sweeping dish in the eyebrow. The ONLY
animation in the app; honours reduced-motion
.landing-hero__lede       the sentence that has to land, measure-capped
.landing-cta              the one button, repeated verbatim at the close.
Same words both times on purpose
.digest / __frame __bar __avatar __bot __badge __bubble __line __caption
the signature element: the daily Telegram digest
as the chat it arrives in. Its text tracks
services/alerts.py::format_digest_ar line for
line — change that function, change this
.landing-figures          live counters (<dl>); rendered only when the
inventory is non-empty, see the template
.landing-why              four claims, each one a thing the pipeline does
.landing-steps            the four-step path as a numbered <ol>. NOT
.steps: that one is the inline three-word strip
above an operator form, and these steps carry a
sentence each
.landing-proof            a replica of the real .job-card, with
.landing-proof__tag marking it as an example
.faq                      objections as native <details>. No script: the
production CSP would refuse an inline handler and
a question that will not open is worse than one
that is not asked
.topbar-cta               the header's copy of the CTA (landing + privacy
only; hidden under 620px, where .landing-sticky
takes over)
.landing-sticky           phone-only action bar. position:sticky — fixed
is broken here, see the note on the rule
.landing-close            the closing CTA band, the only centred block
(there is NO .landing-admin — see the note at the foot of landing.html)
PUBLIC JOIN FORM  (templates/join.html, join_done.html, privacy.html)
.hp-field                 the honeypot wrapper: clipped (never parked at
a negative offset — under RTL that scrolls the
page), NOT display:none, and paired with
aria-hidden + tabindex="-1" on the markup so no
keyboard or screen-reader user can land in it
.field-hint               help sentence under an input (inside the <label>)
.field-error              the per-field message slot on /join. Always
present, always empty until something is wrong;
:empty is what hides it. Written to by the server
(the field that failed) and by
static/join-validate.js while the reader types.
.field-count              remaining-characters counter under the optional
note; .is-tight once the limit is reached
.form-summary             "nothing was sent, and here is why" above the
submit button. Same :empty rule as .field-error.
.consent-block            the PDPL consent fieldset. NOT a `.seg` — that
control clips its input to 1×1 and shows state by
tinting the label, which hides the one tick a
person must be able to see. Pairs with
.consent-block__tick for the box + sentence.
.legal                    prose measure and rhythm for the privacy notice
.legal-todo               a clause a lawyer has not written yet. Never
remove one without replacing the text it marks.
JOIN REQUEST QUEUE  (templates/join_requests.html)
.join-card                one request; cards, not table rows, because a
request carries a free-text note
.join-card__head / __name / __email / __facts / __note / __states
/ __actions
LAYOUT UTILITIES
.stack                    vertical rhythm (gap via --stack-gap)
.cluster                  horizontal wrap with gap
.u-nowrap .u-break .u-mono .u-end
.visually-hidden          screen-reader-only text
============================================================================ */
@font-face {
font-family: "IBM Plex Sans Arabic";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("/static/fonts/ibm-plex-sans-arabic-arabic-400-normal.woff2") format("woff2");
unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0898-08E1,
U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FEFF,
U+102E0-102FB, U+10E60-10E7E, U+10EFD-10EFF, U+1EE00-1EEFF;
}
@font-face {
font-family: "IBM Plex Sans Arabic";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("/static/fonts/ibm-plex-sans-arabic-arabic-600-normal.woff2") format("woff2");
unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0898-08E1,
U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FEFF,
U+102E0-102FB, U+10E60-10E7E, U+10EFD-10EFF, U+1EE00-1EEFF;
}
@font-face {
font-family: "IBM Plex Sans Arabic";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("/static/fonts/ibm-plex-sans-arabic-arabic-700-normal.woff2") format("woff2");
unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0898-08E1,
U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FEFF,
U+102E0-102FB, U+10E60-10E7E, U+10EFD-10EFF, U+1EE00-1EEFF;
}
@font-face {
font-family: "IBM Plex Sans Arabic";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("/static/fonts/ibm-plex-sans-arabic-latin-400-normal.woff2") format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: "IBM Plex Sans Arabic";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("/static/fonts/ibm-plex-sans-arabic-latin-600-normal.woff2") format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: "IBM Plex Sans Arabic";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("/static/fonts/ibm-plex-sans-arabic-latin-700-normal.woff2") format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
}
:root {
color-scheme: light;
--bg: #f4f6f5;
--surface: #ffffff;
--surface-soft: #f7f9f8;
--surface-sunken: #eef2f0;
--surface-hover: #f2f6f4;
--surface-glass: rgba(255, 255, 255, 0.86);
--row-hover: rgba(15, 118, 110, 0.04);
--text: #10201a;
--ink: var(--text);
--muted: #5a6b63;
--faint: #697771;
--on-accent: #ffffff;
--on-tone: #ffffff;
--border: #dde5e1;
--border-strong: #c3cfc9;
--border-hover: #a9bab2;
--accent: #0f766e;
--accent-strong: #0b5f59;
--accent-deep: #084f4a;
--accent-soft: #e6f3f0;
--accent-ink: #0a534e;
--accent-2: #2563eb;
--success: #0f766e;
--success-ink: #08514c;
--success-bg: #e6f3f0;
--success-border: #a9d6cf;
--warning: #b45309;
--warning-ink: #8a4708;
--warning-bg: #fdf3e5;
--warning-border: #eccba0;
--danger: #b42318;
--danger-ink: #97180f;
--danger-bg: #fdecea;
--danger-border: #f0b4ae;
--info: #2563eb;
--info-ink: #1a4bb8;
--info-bg: #e9f0fe;
--info-border: #b9cdf7;
--neutral: #6b7a73;
--neutral-ink: #47554e;
--neutral-bg: #eef1ef;
--neutral-border: #d3dbd7;
--mark-sat: 42%;
--mark-bg-l: 93%;
--mark-border-l: 85%;
--mark-ink-sat: 46%;
--mark-ink-l: 30%;
--warn: var(--warning);
--bad: var(--danger);
--focus: #2563eb;
--focus-ring: rgba(37, 99, 235, 0.45);
--check-fill: var(--accent-strong);
--hairline: rgba(255, 255, 255, 0.16);
--font-sans: "IBM Plex Sans Arabic", "SF Arabic", "Geeza Pro", "Noto Sans Arabic",
"Segoe UI", Tahoma, Arial, sans-serif;
--font-mono: ui-monospace, SFMono-Regular, "IBM Plex Mono", Menlo, Consolas, monospace;
--fs-display: clamp(27px, 1.6vw + 21px, 34px);
--fs-h2: 19px;
--fs-h3: 13.5px;
--fs-body: 15px;
--fs-sm: 13.5px;
--fs-meta: 12.5px;
--fs-micro: 11.5px;
--lh-tight: 1.2;
--lh-snug: 1.4;
--lh-body: 1.6;
--radius-sm: 5px;
--radius-md: 7px;
--radius-lg: 8px;
--shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.05);
--shadow-md: 0 14px 34px rgba(16, 24, 40, 0.08);
--shadow: var(--shadow-md);
--container: 1320px;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
color-scheme: dark;
--bg: #0d1512;
--surface: #131e1a;
--surface-soft: #182521;
--surface-sunken: #0f1815;
--surface-hover: #1d2b26;
--surface-glass: rgba(19, 30, 26, 0.86);
--row-hover: rgba(45, 212, 191, 0.06);
--text: #e7efeb;
--muted: #9fb2aa;
--faint: #7f948c;
--on-accent: #ffffff;
--on-tone: #0d1512;
--border: #263630;
--border-strong: #35483f;
--border-hover: #45594f;
--accent: #2dd4bf;
--accent-strong: #0d7a70;
--accent-deep: #0a635a;
--accent-soft: #12302c;
--accent-ink: #6ee7d7;
--accent-2: #7ea6ff;
--success: #34d399;
--success-ink: #6ee7b7;
--success-bg: #102b25;
--success-border: #245c4e;
--warning: #f59e0b;
--warning-ink: #fbbf6e;
--warning-bg: #2e2109;
--warning-border: #6b4c14;
--danger: #f87171;
--danger-ink: #fca5a5;
--danger-bg: #331414;
--danger-border: #6f2a2a;
--info: #7ea6ff;
--info-ink: #a9c4ff;
--info-bg: #16203a;
--info-border: #2f4478;
--neutral: #8fa39b;
--neutral-ink: #b3c4bd;
--neutral-bg: #1c2723;
--neutral-border: #35483f;
--mark-sat: 26%;
--mark-bg-l: 17%;
--mark-border-l: 26%;
--mark-ink-sat: 52%;
--mark-ink-l: 74%;
--focus: #7ea6ff;
--focus-ring: rgba(126, 166, 255, 0.5);
--hairline: rgba(255, 255, 255, 0.08);
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
--shadow-md: 0 14px 34px rgba(0, 0, 0, 0.45);
}
}
:root[data-theme="dark"] {
color-scheme: dark;
--bg: #0d1512;
--surface: #131e1a;
--surface-soft: #182521;
--surface-sunken: #0f1815;
--surface-hover: #1d2b26;
--surface-glass: rgba(19, 30, 26, 0.86);
--row-hover: rgba(45, 212, 191, 0.06);
--text: #e7efeb;
--muted: #9fb2aa;
--faint: #7f948c;
--on-accent: #ffffff;
--on-tone: #0d1512;
--border: #263630;
--border-strong: #35483f;
--border-hover: #45594f;
--accent: #2dd4bf;
--accent-strong: #0d7a70;
--accent-deep: #0a635a;
--accent-soft: #12302c;
--accent-ink: #6ee7d7;
--accent-2: #7ea6ff;
--success: #34d399;
--success-ink: #6ee7b7;
--success-bg: #102b25;
--success-border: #245c4e;
--warning: #f59e0b;
--warning-ink: #fbbf6e;
--warning-bg: #2e2109;
--warning-border: #6b4c14;
--danger: #f87171;
--danger-ink: #fca5a5;
--danger-bg: #331414;
--danger-border: #6f2a2a;
--info: #7ea6ff;
--info-ink: #a9c4ff;
--info-bg: #16203a;
--info-border: #2f4478;
--neutral: #8fa39b;
--neutral-ink: #b3c4bd;
--neutral-bg: #1c2723;
--neutral-border: #35483f;
--mark-sat: 26%;
--mark-bg-l: 17%;
--mark-border-l: 26%;
--mark-ink-sat: 52%;
--mark-ink-l: 74%;
--focus: #7ea6ff;
--focus-ring: rgba(126, 166, 255, 0.5);
--hairline: rgba(255, 255, 255, 0.08);
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
--shadow-md: 0 14px 34px rgba(0, 0, 0, 0.45);
}
* {
box-sizing: border-box;
}
body {
margin: 0;
overflow-x: hidden;
background: var(--bg);
color: var(--text);
font-family: var(--font-sans);
font-size: var(--fs-body);
font-weight: 400;
line-height: var(--lh-body);
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
}
@keyframes fr-enter {
from {
opacity: 0;
transform: translateY(4px);
}
}
body > main {
animation: fr-enter 220ms ease-out both;
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 1ms !important;
animation-iteration-count: 1 !important;
transition-duration: 1ms !important;
scroll-behavior: auto !important;
}
}
.skip-link {
position: fixed;
inset-block-start: 8px;
inset-inline-start: 12px;
z-index: 1000;
padding: 9px 14px;
border-radius: var(--radius-md);
background: var(--accent-strong);
color: var(--on-accent);
font-weight: 700;
text-decoration: none;
transform: translateY(-160%);
transition: transform 120ms ease;
}
.skip-link:focus {
transform: translateY(0);
}
a {
color: inherit;
text-underline-offset: 3px;
}
code,
kbd,
samp,
pre {
font-family: var(--font-mono);
font-size: 0.92em;
}
.shell {
width: min(var(--container), calc(100vw - 32px));
margin: 0 auto;
}
h1,
h2,
h3,
p {
margin-top: 0;
}
h1 {
margin-bottom: 0;
font-size: var(--fs-display);
font-weight: 700;
line-height: var(--lh-tight);
letter-spacing: 0;
color: var(--text);
}
h2 {
margin-bottom: 10px;
font-size: var(--fs-h2);
font-weight: 600;
line-height: 1.35;
color: var(--text);
}
h3 {
margin: 22px 0 8px;
font-size: var(--fs-h3);
font-weight: 700;
line-height: var(--lh-snug);
color: var(--muted);
}
.eyebrow {
margin: 0 0 6px;
color: var(--accent-ink);
font-size: var(--fs-micro);
font-weight: 700;
line-height: 1.3;
}
.meta {
font-size: var(--fs-meta);
}
th,
td,
.num,
.stat strong,
.card-stats strong,
.score,
.seg .count,
.toolbar__count,
time,
code {
font-variant-numeric: tabular-nums;
font-feature-settings: "tnum" 1;
}
.icon-sprite {
position: absolute;
width: 0;
height: 0;
overflow: hidden;
}
.icon {
flex: none;
inline-size: 1.15em;
block-size: 1.15em;
vertical-align: -0.2em;
overflow: visible;
}
.icon--sm {
inline-size: 0.95em;
block-size: 0.95em;
vertical-align: -0.14em;
}
.icon--lg {
inline-size: 1.35em;
block-size: 1.35em;
vertical-align: -0.26em;
}
.icon--xl {
inline-size: 24px;
block-size: 24px;
vertical-align: -5px;
}
[dir="rtl"] .icon--flip {
transform: scaleX(-1);
}
.st--success,
.st--ok,
.st--live,
.st--sent,
.panel--success,
.panel.success,
.tone-success {
--tone: var(--success);
--tone-ink: var(--success-ink);
--tone-bg: var(--success-bg);
--tone-border: var(--success-border);
}
.st--warning,
.st--partial,
.st--stale,
.st--pending,
.panel--warning,
.panel.warning,
.tone-warning {
--tone: var(--warning);
--tone-ink: var(--warning-ink);
--tone-bg: var(--warning-bg);
--tone-border: var(--warning-border);
}
.st--danger,
.st--failed,
.st--dead,
.st--revoked,
.panel--danger,
.panel.error,
.panel.danger-zone,
.tone-danger {
--tone: var(--danger);
--tone-ink: var(--danger-ink);
--tone-bg: var(--danger-bg);
--tone-border: var(--danger-border);
}
.st--info,
.st--new,
.st--queued,
.panel--info,
.tone-info {
--tone: var(--info);
--tone-ink: var(--info-ink);
--tone-bg: var(--info-bg);
--tone-border: var(--info-border);
}
.st--neutral,
.st--disabled,
.st--never,
.st--none,
.tone-neutral {
--tone: var(--neutral);
--tone-ink: var(--neutral-ink);
--tone-bg: var(--neutral-bg);
--tone-border: var(--neutral-border);
}
.st {
display: inline-flex;
align-items: center;
gap: 5px;
max-inline-size: 100%;
padding: 3px 9px;
border: 1px solid var(--tone-border, var(--neutral-border));
border-radius: 999px;
background: var(--tone-bg, var(--neutral-bg));
color: var(--tone-ink, var(--neutral-ink));
font-size: var(--fs-meta);
font-weight: 600;
line-height: 1.45;
white-space: nowrap;
vertical-align: middle;
}
.st .icon {
color: var(--tone, var(--neutral));
}
.st--sm {
gap: 4px;
padding: 1px 7px;
font-size: var(--fs-micro);
}
.st--solid {
border-color: var(--tone, var(--neutral));
background: var(--tone, var(--neutral));
color: var(--on-tone);
}
.st--solid .icon {
color: inherit;
}
.st--quiet {
padding: 0;
border-color: transparent;
background: none;
color: var(--tone-ink, var(--neutral-ink));
font-weight: 600;
}
.st-dot {
flex: none;
inline-size: 8px;
block-size: 8px;
border-radius: 50%;
background: var(--tone, var(--neutral));
box-shadow: 0 0 0 2px var(--tone-bg, var(--neutral-bg));
}
.st--never .st-dot,
.st--none .st-dot,
.st--disabled .st-dot {
background: transparent;
box-shadow: inset 0 0 0 1.5px var(--tone, var(--neutral));
}
.st__label {
overflow: hidden;
text-overflow: ellipsis;
}
.topbar {
min-height: 70px;
margin-top: 14px;
padding: 10px 14px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface-glass);
box-shadow: var(--shadow-sm);
backdrop-filter: blur(14px);
}
.brand,
.nav {
display: flex;
align-items: center;
}
.brand {
gap: 10px;
text-decoration: none;
font-weight: 700;
letter-spacing: 0;
}
.brand-mark {
display: inline-grid;
place-items: center;
width: 36px;
height: 36px;
border-radius: var(--radius-md);
background: var(--accent-strong);
color: var(--on-accent);
font-size: 13px;
box-shadow: inset 0 0 0 1px var(--hairline);
}
.nav {
gap: 4px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
padding: 4px;
box-shadow: var(--shadow-sm);
}
.nav a {
display: inline-flex;
align-items: center;
gap: 6px;
text-decoration: none;
padding: 8px 11px;
border-radius: var(--radius-md);
color: var(--muted);
font-size: var(--fs-sm);
font-weight: 600;
white-space: nowrap;
}
.nav a .icon {
color: var(--faint);
}
.nav a:hover {
background: var(--surface-hover);
color: var(--text);
}
.nav a:hover .icon {
color: var(--muted);
}
.nav a.active,
.nav a[aria-current="page"] {
background: var(--accent-soft);
color: var(--accent-ink);
font-weight: 700;
}
.nav a.active .icon,
.nav a[aria-current="page"] .icon {
color: var(--accent);
}
.topbar-tools {
display: flex;
align-items: center;
gap: 8px;
}
.theme-switch {
display: none;
}
.has-js .theme-switch {
display: inline-flex;
align-items: center;
gap: 2px;
padding: 3px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
box-shadow: var(--shadow-sm);
}
.theme-switch__opt {
min-height: 32px;
width: 32px;
padding: 0;
border: 0;
border-radius: var(--radius-md);
background: transparent;
box-shadow: none;
color: var(--faint);
}
.theme-switch__opt .icon {
color: inherit;
}
.theme-switch__opt:hover {
background: var(--surface-hover);
border: 0;
box-shadow: none;
transform: none;
color: var(--text);
}
.theme-switch__opt:hover .icon {
color: inherit;
}
.theme-switch__opt[aria-checked="true"] {
background: var(--accent-soft);
color: var(--accent-ink);
}
.theme-switch__opt[aria-checked="true"]:hover {
background: var(--accent-soft);
color: var(--accent-ink);
}
.page-head,
.section-head,
.panel-head,
.match-title-line {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 20px;
}
.page-head {
margin: 30px 0 20px;
padding-bottom: 2px;
}
.actions,
.row-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
button,
.button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
min-height: 44px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface);
color: var(--text);
padding: 9px 13px;
font: inherit;
font-size: var(--fs-sm);
font-weight: 600;
text-decoration: none;
cursor: pointer;
transition:
background-color 160ms ease,
border-color 160ms ease,
color 160ms ease,
box-shadow 160ms ease,
transform 160ms ease;
}
button .icon,
.button .icon {
color: var(--muted);
}
button:hover,
.button:hover {
border-color: var(--border-hover);
box-shadow: var(--shadow-sm);
transform: translateY(-1px);
}
button:hover .icon,
.button:hover .icon {
color: var(--text);
}
button:disabled,
.button[aria-disabled="true"] {
cursor: not-allowed;
opacity: 0.64;
transform: none;
}
.primary {
background: var(--accent-strong);
border-color: var(--accent-strong);
color: var(--on-accent);
}
.primary .icon,
.primary:hover .icon {
color: inherit;
}
.primary:hover {
background: var(--accent-deep);
border-color: var(--accent-deep);
}
.danger-action {
border-color: var(--danger-border);
color: var(--danger-ink);
}
.danger-action .icon {
color: var(--danger);
}
.danger-action:hover {
border-color: var(--danger);
background: var(--danger-bg);
}
.stats-grid,
.profile-grid,
.detail-grid {
display: grid;
gap: 14px;
}
.stats-grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
margin-bottom: 28px;
}
.stat,
.panel,
.empty,
.match-row,
.table-wrap,
.filters {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: var(--shadow);
}
.stat {
padding: 18px;
}
.stat > span,
.stat__label {
display: flex;
align-items: center;
gap: 6px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
}
.stat__label .icon,
.stat > span .icon {
color: var(--faint);
}
.meta {
color: var(--muted);
}
.stat strong {
display: block;
margin-top: 6px;
font-size: 30px;
font-weight: 600;
line-height: 1.05;
color: var(--text);
}
.zero,
.stat strong.zero,
.num.zero {
color: var(--faint);
font-weight: 400;
}
.section {
margin: 24px 0;
}
.section-head {
align-items: center;
margin-bottom: 12px;
}
.section-head a {
display: inline-flex;
align-items: center;
gap: 5px;
color: var(--accent-ink);
font-size: var(--fs-sm);
font-weight: 600;
text-decoration: none;
}
.section-head a .icon {
color: var(--accent);
}
.panel,
.empty {
padding: 22px;
}
.panel {
position: relative;
}
.panel-head h2,
.section-head h2 {
margin-bottom: 0;
}
.empty {
color: var(--muted);
background: var(--surface-soft);
}
.panel.quiet {
background: var(--surface-soft);
box-shadow: none;
}
.panel--success,
.panel--warning,
.panel--danger,
.panel--info,
.panel.success,
.panel.warning,
.panel.error,
.panel.danger-zone {
border-color: var(--tone-border);
border-inline-start: 3px solid var(--tone);
background: var(--tone-bg);
color: var(--tone-ink);
}
.panel--success .meta,
.panel--warning .meta,
.panel--danger .meta,
.panel--info .meta,
.panel.success .meta,
.panel.warning .meta,
.panel.error .meta {
color: inherit;
}
.callout-head {
display: flex;
align-items: flex-start;
gap: 8px;
margin: 0;
color: var(--tone-ink, var(--text));
font-size: var(--fs-body);
font-weight: 700;
line-height: var(--lh-snug);
}
.callout-head .icon {
margin-block-start: 0.15em;
color: var(--tone, var(--muted));
}
.callout-list {
margin: 10px 0 0;
padding-inline-start: 20px;
color: var(--tone-ink, var(--text));
font-size: var(--fs-sm);
font-weight: 400;
}
.callout-list li + li {
margin-top: 5px;
}
.risks {
margin: 10px 0 0;
color: var(--warning-ink);
font-weight: 600;
}
.activation-panel,
.status-line {
margin-top: 14px;
}
.match-list {
display: grid;
gap: 12px;
}
.match-row {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(170px, auto);
gap: 20px;
padding: 20px;
overflow: hidden;
}
.job-title {
font-size: 17px;
font-weight: 700;
text-decoration: none;
color: var(--text);
overflow-wrap: anywhere;
}
.job-title:hover {
color: var(--accent-ink);
}
.score {
display: inline-grid;
place-items: center;
min-width: 52px;
min-height: 36px;
padding: 5px 10px;
border-radius: var(--radius-md);
color: var(--on-tone);
font-weight: 700;
font-size: var(--fs-sm);
text-align: center;
box-shadow: var(--shadow-sm);
}
.score-excellent {
background: var(--accent);
}
.score-good {
background: var(--accent-2);
color: var(--on-tone);
}
.score-maybe {
background: var(--warning);
color: var(--on-tone);
}
.score-weak {
background: var(--danger);
color: var(--on-tone);
}
.chips {
display: flex;
flex-wrap: wrap;
gap: 7px;
margin: 12px 0;
}
.chips span,
.status {
display: inline-flex;
align-items: center;
gap: 5px;
border-radius: 999px;
border: 1px solid var(--border);
background: var(--surface-soft);
color: var(--muted);
padding: 3px 9px;
font-size: var(--fs-meta);
font-weight: 600;
line-height: 1.45;
}
.chips.quiet span {
background: transparent;
color: var(--faint);
}
.reason-list {
margin-bottom: 0;
padding-inline-start: 20px;
color: var(--muted);
font-size: var(--fs-sm);
}
.row-actions {
align-content: flex-start;
justify-content: flex-end;
max-width: 340px;
}
.profile-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.detail-grid {
grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
}
.table-wrap {
max-width: 100%;
overflow: auto;
overscroll-behavior-inline: contain;
-webkit-overflow-scrolling: touch;
}
.table-wrap--tall {
max-block-size: min(70vh, 720px);
}
.table-scroll-hint {
display: none;
margin: 0 0 8px;
color: var(--muted);
font-size: var(--fs-meta);
}
.panel:has(table) {
overflow-x: auto;
}
.table-wrap.table-compact table {
min-width: 100%;
}
.update-note {
margin: 0 0 10px;
font-size: var(--fs-meta);
}
.card-stats {
margin: 10px 0 4px;
color: var(--muted);
font-size: var(--fs-sm);
}
.card-stats strong {
color: var(--text);
font-weight: 600;
}
table {
width: 100%;
border-collapse: collapse;
min-width: 720px;
}
th,
td {
padding: 12px 14px;
border-bottom: 1px solid var(--border);
text-align: start;
vertical-align: top;
}
th {
background: var(--surface-soft);
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
}
tbody tr:hover {
background: var(--row-hover);
}
td span {
display: block;
color: var(--muted);
font-size: var(--fs-sm);
}
.table--dense th,
.table--dense td {
padding: 7px 10px;
font-size: var(--fs-sm);
line-height: 1.45;
}
.table--dense th {
font-size: var(--fs-micro);
}
.table--dense td span,
.table--dense .cell-sub {
font-size: var(--fs-micro);
}
.table--sticky thead th {
position: sticky;
inset-block-start: 0;
z-index: 2;
background: var(--surface-soft);
box-shadow: inset 0 -1px 0 var(--border-strong);
}
tr.is-danger > td:first-child,
tr.is-warning > td:first-child,
tr.is-success > td:first-child {
border-inline-start: 3px solid var(--tone, var(--border));
}
tr.is-danger {
--tone: var(--danger);
}
tr.is-warning {
--tone: var(--warning);
}
tr.is-success {
--tone: var(--success);
}
tr.is-spent > td {
color: var(--faint);
}
.cell-main {
display: block;
color: var(--text);
font-weight: 600;
}
.cell-sub {
display: block;
margin-top: 1px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 400;
}
.num {
white-space: nowrap;
}
.truncate {
display: block;
max-inline-size: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.truncate-2 {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.boilerplate {
display: block;
max-inline-size: 28ch;
overflow: hidden;
color: var(--muted);
font-size: var(--fs-meta);
text-overflow: ellipsis;
white-space: nowrap;
}
[data-tip] {
position: relative;
}
.tip {
position: relative;
display: inline-block;
max-inline-size: 100%;
vertical-align: top;
}
[data-tip]::after {
content: attr(data-tip);
position: absolute;
inset-block-start: calc(100% + 6px);
inset-inline-start: 0;
z-index: 40;
max-inline-size: 46ch;
padding: 6px 9px;
border: 1px solid var(--border-strong);
border-radius: var(--radius-md);
background: var(--surface);
color: var(--text);
box-shadow: var(--shadow-md);
font-size: var(--fs-meta);
font-weight: 400;
line-height: 1.45;
white-space: normal;
overflow-wrap: anywhere;
opacity: 0;
visibility: hidden;
transition: opacity 120ms ease;
}
[data-tip]:hover::after,
[data-tip]:focus-visible::after {
opacity: 1;
visibility: visible;
}
.toolbar {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px 10px;
padding: 10px 12px;
margin-bottom: 12px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
box-shadow: var(--shadow-sm);
}
.toolbar__group {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
min-width: 0;
}
.toolbar__spacer {
flex: 1 1 auto;
}
.toolbar__count {
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
white-space: nowrap;
}
.toolbar label {
gap: 4px;
font-size: var(--fs-micro);
}
.toolbar button,
.toolbar .button,
.toolbar select,
.toolbar input {
min-height: 38px;
padding-block: 6px;
font-size: var(--fs-sm);
}
.chip-filter {
display: inline-flex;
align-items: center;
gap: 5px;
min-height: 32px;
padding: 4px 11px;
border: 1px solid var(--border);
border-radius: 999px;
background: var(--surface);
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
text-decoration: none;
white-space: nowrap;
cursor: pointer;
}
.chip-filter:hover {
border-color: var(--border-hover);
background: var(--surface-hover);
color: var(--text);
transform: none;
box-shadow: none;
}
.chip-filter.is-on,
.chip-filter[aria-pressed="true"] {
border-color: var(--accent);
background: var(--accent-soft);
color: var(--accent-ink);
}
.chip-filter .icon {
color: currentcolor;
}
.stack {
display: grid;
gap: var(--stack-gap, 12px);
}
.cluster {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--cluster-gap, 8px);
}
.u-nowrap {
white-space: nowrap;
}
.u-break {
overflow-wrap: anywhere;
word-break: break-word;
}
.u-mono {
font-family: var(--font-mono);
font-size: 0.92em;
}
.u-end {
margin-inline-start: auto;
}
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
border: 0;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
}
.copy-link {
width: 100%;
min-width: 0;
}
.invite-link-tools {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 8px;
align-items: start;
width: 100%;
min-width: 0;
}
.invite-share-button {
white-space: nowrap;
}
.invite-share-status {
grid-column: 1 / -1;
min-height: 20px;
color: var(--muted);
font-size: var(--fs-meta);
}
.page-lede {
max-inline-size: 74ch;
margin: 8px 0 0;
color: var(--muted);
font-size: var(--fs-sm);
line-height: var(--lh-body);
}
.section-head {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: 4px 12px;
margin-bottom: 12px;
}
.section-head h2 {
display: flex;
align-items: center;
gap: 8px;
margin: 0;
}
.section-head__note {
min-width: 0;
margin: 0;
color: var(--muted);
font-size: var(--fs-meta);
line-height: var(--lh-snug);
}
.guide__body {
display: grid;
gap: 16px;
}
.guide__warn {
display: flex;
align-items: flex-start;
gap: 9px;
margin: 0;
padding: 11px 13px;
border: 1px solid var(--tone-border);
border-inline-start: 3px solid var(--tone);
border-radius: var(--radius-md);
background: var(--tone-bg);
color: var(--tone-ink);
font-size: var(--fs-sm);
line-height: var(--lh-snug);
}
.guide__warn .icon {
flex: none;
margin-block-start: 0.1em;
color: var(--tone);
}
.guide__cols {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 18px 24px;
align-items: start;
}
.guide__block {
min-width: 0;
}
.guide__block h3 {
display: flex;
align-items: center;
gap: 7px;
margin: 0 0 6px;
color: var(--text);
font-size: var(--fs-sm);
}
.guide__block p {
margin: 0;
color: var(--muted);
font-size: var(--fs-sm);
line-height: var(--lh-body);
}
.guide__list {
margin: 0;
padding-inline-start: 18px;
color: var(--muted);
font-size: var(--fs-sm);
line-height: var(--lh-body);
}
.guide__list li + li {
margin-top: 6px;
}
.guide__list strong {
color: var(--text);
}
.guide__defs {
display: grid;
grid-template-columns: max-content minmax(0, 1fr);
gap: 7px 12px;
align-items: baseline;
margin: 0;
}
.guide__defs dt,
.guide__defs dd {
margin: 0;
}
.guide__defs dd {
color: var(--muted);
font-size: var(--fs-sm);
line-height: var(--lh-snug);
}
.action-panel {
border-inline-start: 3px solid var(--accent);
}
.action-panel > h2 {
display: flex;
align-items: center;
gap: 8px;
}
.steps {
display: flex;
flex-wrap: wrap;
gap: 7px 18px;
margin: 0 0 14px;
padding: 0;
list-style: none;
counter-reset: step;
}
.steps li {
display: flex;
align-items: center;
gap: 7px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
}
.steps li::before {
counter-increment: step;
content: counter(step);
display: grid;
place-items: center;
flex: none;
inline-size: 20px;
block-size: 20px;
border-radius: 50%;
background: var(--accent-soft);
color: var(--accent-ink);
font-size: var(--fs-micro);
font-weight: 700;
}
.action-form {
display: flex;
flex-wrap: wrap;
align-items: end;
gap: 10px 12px;
margin: 0;
}
.action-form__grow {
flex: 1 1 260px;
min-width: 0;
}
.action-form__narrow {
flex: 0 1 190px;
min-width: 0;
}
.action-form > button {
flex: none;
min-height: 44px;
}
.action-form__hint {
flex: 1 1 100%;
margin: 2px 0 0;
color: var(--muted);
}
.filters {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
align-items: end;
padding: 16px;
margin-bottom: 16px;
}
.filters > .additional-filters {
grid-column: 1 / -1;
}
.filter-actions {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 8px;
margin-top: 12px;
}
details > summary {
min-height: 44px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
color: var(--text);
font-size: var(--fs-sm);
font-weight: 700;
cursor: pointer;
list-style: none;
user-select: none;
}
details > summary::-webkit-details-marker {
display: none;
}
details > summary::after {
content: "";
flex: none;
margin-inline-start: auto;
margin-block-end: 4px;
inline-size: 8px;
block-size: 8px;
border-right: 1.6px solid var(--accent);
border-bottom: 1.6px solid var(--accent);
transform: rotate(45deg);
transition: transform 140ms ease;
}
details[open] > summary::after {
margin-block-end: 0;
margin-block-start: 4px;
transform: rotate(225deg);
}
details.panel > summary {
margin: -4px 0;
}
details.panel[open] > summary {
margin-bottom: 14px;
padding-bottom: 10px;
border-bottom: 1px solid var(--border);
}
.additional-filters,
.filter-drawer,
.match-diagnostics,
.secondary-actions {
min-width: 0;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface-soft);
}
.additional-filters,
.filter-drawer {
padding: 4px 12px;
}
.additional-filters[open],
.filter-drawer[open] {
padding-bottom: 12px;
}
.additional-filters > .detail-grid,
.filter-drawer__body {
margin-top: 8px;
padding-top: 12px;
border-top: 1px solid var(--border);
}
.additional-filters > .detail-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.advanced-tools,
.dashboard-diagnostics,
.manual-send {
margin-block: 16px;
}
.match-diagnostics {
margin-top: 12px;
padding: 2px 10px 10px;
}
.secondary-actions {
width: 100%;
padding: 2px 8px 8px;
}
.operator-tools,
.portal-management,
.inline-editor {
min-width: 0;
padding: 3px 10px 9px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface-soft);
}
.operator-tools[open] > summary,
.portal-management[open] > summary,
.inline-editor[open] > summary {
margin-bottom: 9px;
padding-bottom: 8px;
border-bottom: 1px solid var(--border);
}
.inline-editor {
margin-top: 16px;
}
.email-alerts {
margin-top: 20px;
padding-top: 16px;
border-top: 1px solid var(--border);
}
.portal-management {
margin-top: 10px;
}
.source-health-table {
min-width: 1620px;
}
.source-actions,
.invite-actions {
display: flex;
flex-wrap: wrap;
gap: 6px;
align-items: center;
min-width: 130px;
}
.source-actions form,
.invite-actions form {
margin: 0;
}
.source-edit-row > td,
.invite-edit-row > td {
padding-top: 0;
background: var(--surface-soft);
}
.source-edit-form,
.invite-edit-form {
max-width: 980px;
margin-bottom: 8px;
}
.source-edit-form label:has(textarea) {
grid-column: 1 / -1;
}
.inline-check {
display: flex;
flex-direction: row;
align-items: center;
gap: 8px;
}
.source-health-table th:first-child,
.source-health-table td:first-child {
min-width: 150px;
}
.source-health-table th:nth-child(8),
.source-health-table td:nth-child(8) {
min-width: 230px;
}
.source-health-table th:nth-child(6),
.source-health-table td:nth-child(6) {
min-width: 125px;
}
.secondary-actions form + form {
margin-top: 8px;
}
label {
display: grid;
gap: 6px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 700;
}
select,
textarea,
input {
width: 100%;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface);
color: var(--text);
padding: 10px 11px;
font: inherit;
font-size: var(--fs-sm);
min-height: 44px;
transition:
border-color 160ms ease,
box-shadow 160ms ease,
background-color 160ms ease;
}
textarea {
resize: vertical;
}
select:hover,
textarea:hover,
input:hover {
border-color: var(--border-hover);
}
select:focus,
textarea:focus,
input:focus {
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-soft);
outline: none;
}
[aria-invalid="true"] {
border-color: var(--danger);
box-shadow: 0 0 0 3px var(--danger-bg);
}
[aria-invalid="true"]:focus {
border-color: var(--danger);
box-shadow: 0 0 0 3px var(--danger-bg);
outline: none;
}
input[type="checkbox"] {
min-height: auto;
width: auto;
accent-color: var(--accent-strong);
}
.check-label {
grid-template-columns: auto 1fr;
align-items: center;
color: var(--ink);
}
.confirm-gate {
display: flex;
gap: 8px;
align-items: flex-start;
margin: 8px 0;
padding: 8px 10px;
border: 1px solid var(--danger-border);
border-radius: 8px;
font-size: 0.85rem;
line-height: 1.5;
text-align: start;
color: var(--ink);
}
.confirm-gate input[type="checkbox"] {
margin-top: 3px;
flex: none;
}
.feedback-form {
display: grid;
gap: 12px;
margin-top: 24px;
}
.panel > form:not(.feedback-form),
.profile-wizard,
.stack-form {
display: grid;
gap: 18px;
}
.recommendation {
color: var(--accent-ink);
font-size: 17px;
font-weight: 700;
text-transform: capitalize;
}
*:focus-visible {
outline: 3px solid var(--focus-ring);
outline-offset: 2px;
}
.topbar--public {
min-height: 64px;
}
.topbar--public a:not(.brand) {
text-decoration: none;
padding: 8px 12px;
border-radius: var(--radius-md);
color: var(--muted);
font-weight: 600;
font-size: var(--fs-sm);
}
.topbar--public a:not(.brand):hover {
background: var(--surface-hover);
color: var(--text);
}
.seeker-shell {
width: min(780px, calc(100vw - 28px));
margin-inline: auto;
}
.seeker-shell--wide {
width: min(var(--container), calc(100vw - 28px));
}
@media (min-width: 1100px) {
.seeker-shell--wide .match-list {
grid-template-columns: repeat(2, minmax(0, 1fr));
align-items: start;
}
.seeker-shell--wide .match-list > .job-card + .job-card {
margin-top: 0;
}
.seeker-shell--wide .top-picks .match-list {
grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
}
.seeker-shell--wide .match-list > .empty {
grid-column: 1 / -1;
}
}
.seeker-filters {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px 14px;
align-items: end;
padding: 16px;
margin: 0 0 18px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: var(--shadow);
}
.seeker-filters > label:first-child,
.seeker-filters label:has([name="q"]),
.seeker-filters input[name="q"],
.seeker-filters .seg.tabs,
.seeker-filters .filter-actions {
grid-column: 1 / -1;
}
.filter-primary {
grid-column: 1 / -1;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 8px;
}
.seeker-filters > .filter-drawer {
grid-column: 1 / -1;
}
.filter-drawer__body {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
align-items: end;
}
.filter-drawer__body .active-filter-summary,
.filter-drawer__body .filter-actions {
grid-column: 1 / -1;
}
.active-filter-summary {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
margin: 0;
padding: 9px 11px;
border-radius: var(--radius-md);
background: var(--accent-soft);
color: var(--accent-ink);
font-size: var(--fs-meta);
}
.active-filter-summary span + span::before {
content: "·";
margin-inline-end: 6px;
}
.seeker-filters .filter-actions {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 8px;
}
.seg {
display: inline-flex;
align-items: center;
gap: 4px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
padding: 4px;
}
fieldset.seg {
min-inline-size: 0;
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
padding: 12px;
}
fieldset.seg legend,
fieldset.seg .meta {
width: 100%;
}
fieldset.seg legend {
padding: 0 4px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 700;
}
.seg.tabs {
display: flex;
flex-wrap: wrap;
}
.seg a,
.seg label,
.seg button {
display: inline-flex;
align-items: center;
gap: 6px;
margin: 0;
min-height: auto;
padding: 8px 12px;
border: 0;
border-radius: var(--radius-md);
background: transparent;
color: var(--muted);
font-size: var(--fs-sm);
font-weight: 600;
text-decoration: none;
cursor: pointer;
}
.seg a:hover,
.seg label:hover,
.seg button:hover {
background: var(--surface-hover);
border-color: transparent;
box-shadow: none;
transform: none;
}
.seg input {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
border: 0;
overflow: hidden;
clip: rect(0 0 0 0);
white-space: nowrap;
}
.seg .active,
.seg a.active,
.seg input:checked + *,
.seg label:has(input:checked) {
background: var(--accent-soft);
color: var(--accent-ink);
font-weight: 700;
}
.seg .count {
font-size: var(--fs-micro);
font-weight: 700;
opacity: 0.75;
}
.job-card {
display: grid;
gap: 12px;
padding: 18px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: var(--shadow);
scroll-margin-top: 18px;
}
.job-card + .job-card {
margin-top: 16px;
}
.job-card__via {
color: var(--muted);
font-style: italic;
}
.applied-track {
display: grid;
gap: 8px;
margin-block-start: 2px;
padding: 10px 12px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface-soft);
}
.applied-track--nudge {
border-color: var(--warning-border);
background: var(--warning-bg);
}
.applied-track__line {
display: flex;
align-items: center;
gap: 6px;
margin: 0;
color: var(--muted);
font-size: var(--fs-sm);
}
.applied-track__line strong {
color: var(--ink);
}
.applied-track__nudge {
display: flex;
align-items: flex-start;
gap: 6px;
margin: 0;
color: var(--warning-ink);
font-size: var(--fs-sm);
font-weight: 600;
line-height: 1.7;
}
.applied-track__nudge svg {
flex: 0 0 auto;
margin-block-start: 3px;
}
.applied-track__outcomes {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
}
.applied-track__ask {
margin: 0 0 0 2px;
font-weight: 600;
}
.follow-up-banner {
margin-block-end: 14px;
}
.chips {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 0 0 12px;
}
.chip {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 7px 13px;
border: 1px solid var(--border);
border-radius: 999px;
background: var(--surface);
color: var(--text);
font-size: var(--fs-sm);
font-weight: 600;
line-height: 1.2;
text-decoration: none;
min-block-size: 38px;
transition: background 140ms ease, border-color 140ms ease, color 140ms ease;
}
.chip:hover {
border-color: var(--accent);
background: var(--accent-soft);
color: var(--accent-ink);
}
.chip:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
.chip.is-on {
border-color: var(--accent-strong);
background: var(--accent-strong);
color: var(--on-accent);
}
.chip.is-on:hover {
background: var(--accent-deep);
border-color: var(--accent-deep);
color: var(--on-accent);
}
.chip__count {
min-inline-size: 20px;
padding: 1px 6px;
border-radius: 999px;
background: var(--info-bg);
color: var(--info);
font-size: 11.5px;
font-weight: 700;
font-variant-numeric: tabular-nums;
text-align: center;
}
.active-filters {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
margin: 0 0 14px;
}
.active-filters__label {
display: inline-flex;
align-items: center;
gap: 5px;
margin: 0;
}
.chip--active {
min-block-size: 32px;
padding: 5px 11px;
border-style: dashed;
background: var(--surface-soft);
color: var(--muted);
font-weight: 600;
}
.chip--active:hover {
border-style: solid;
border-color: var(--danger);
background: var(--danger-bg);
color: var(--danger);
}
.active-filters__clear {
text-decoration: underline;
text-underline-offset: 3px;
}
.filter-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
gap: 12px;
}
.filter-segs {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-block-start: 12px;
}
.filter-segs > .seg {
flex: 1 1 auto;
min-inline-size: 0;
}
.pager {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 8px 14px;
margin: 0 0 14px;
padding: 10px 14px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface-soft);
}
.match-list + .pager,
.pager:last-child {
margin: 14px 0 0;
}
.pager__range {
margin: 0;
}
.pager__controls {
display: flex;
align-items: center;
gap: 6px;
}
.pager__page {
padding: 0 4px;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.pager .is-disabled {
opacity: 0.45;
pointer-events: none;
}
.seeker-head__figures {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: 8px 18px;
margin: 6px 0 4px;
}
.seeker-head__figure {
display: inline-flex;
align-items: baseline;
gap: 6px;
color: var(--muted);
font-size: var(--fs-sm);
}
.seeker-head__figure .num {
color: var(--ink);
font-size: 26px;
font-weight: 700;
line-height: 1;
font-variant-numeric: tabular-nums;
}
.seeker-head__figure--new,
.seeker-head__figure--new .num {
color: var(--info);
}
.seeker-head__figure--new svg {
align-self: center;
}
.job-card__head {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: start;
gap: 12px;
}
.job-card__identity {
display: grid;
gap: 4px;
min-inline-size: 0;
}
.job-card__mark {
display: grid;
place-items: center;
inline-size: 42px;
block-size: 42px;
border-radius: 12px;
--mark-hue: 172;
background: hsl(var(--mark-hue) var(--mark-sat) var(--mark-bg-l));
color: hsl(var(--mark-hue) var(--mark-ink-sat) var(--mark-ink-l));
border: 1px solid hsl(var(--mark-hue) var(--mark-sat) var(--mark-border-l));
font-size: 19px;
font-weight: 700;
line-height: 1;
unicode-bidi: isolate;
}
.job-card__mark[data-tint="0"]  { --mark-hue: 172; }
.job-card__mark[data-tint="1"]  { --mark-hue: 220; }
.job-card__mark[data-tint="2"]  { --mark-hue: 22; }
.job-card__mark[data-tint="3"]  { --mark-hue: 88; }
.job-card__mark[data-tint="4"]  { --mark-hue: 310; }
.job-card__mark[data-tint="5"]  { --mark-hue: 198; }
.job-card__mark[data-tint="6"]  { --mark-hue: 2; }
.job-card__mark[data-tint="7"]  { --mark-hue: 262; }
.job-card__mark[data-tint="8"]  { --mark-hue: 146; }
.job-card__mark[data-tint="9"]  { --mark-hue: 42; }
.job-card__mark[data-tint="10"] { --mark-hue: 208; }
.job-card__mark[data-tint="11"] { --mark-hue: 32; }
.job-card__fit {
display: grid;
justify-items: center;
gap: 6px;
}
.score-dial {
--dial: var(--neutral);
--track: var(--neutral-bg);
position: relative;
display: grid;
place-items: center;
inline-size: 52px;
block-size: 52px;
border-radius: 50%;
--pct: 0;
background: conic-gradient(var(--dial) calc(var(--pct) * 1%), var(--track) 0);
}
.score-dial[data-pct="0"]  { --pct: 0; }
.score-dial[data-pct="1"]  { --pct: 5; }
.score-dial[data-pct="2"]  { --pct: 10; }
.score-dial[data-pct="3"]  { --pct: 15; }
.score-dial[data-pct="4"]  { --pct: 20; }
.score-dial[data-pct="5"]  { --pct: 25; }
.score-dial[data-pct="6"]  { --pct: 30; }
.score-dial[data-pct="7"]  { --pct: 35; }
.score-dial[data-pct="8"]  { --pct: 40; }
.score-dial[data-pct="9"]  { --pct: 45; }
.score-dial[data-pct="10"] { --pct: 50; }
.score-dial[data-pct="11"] { --pct: 55; }
.score-dial[data-pct="12"] { --pct: 60; }
.score-dial[data-pct="13"] { --pct: 65; }
.score-dial[data-pct="14"] { --pct: 70; }
.score-dial[data-pct="15"] { --pct: 75; }
.score-dial[data-pct="16"] { --pct: 80; }
.score-dial[data-pct="17"] { --pct: 85; }
.score-dial[data-pct="18"] { --pct: 90; }
.score-dial[data-pct="19"] { --pct: 95; }
.score-dial[data-pct="20"] { --pct: 100; }
.score-dial__value {
display: grid;
place-items: center;
inline-size: 40px;
block-size: 40px;
border-radius: 50%;
background: var(--surface);
color: var(--ink);
font-size: 15px;
font-weight: 700;
line-height: 1;
font-variant-numeric: tabular-nums;
}
.score-dial__value small {
font-size: 9px;
font-weight: 600;
color: var(--muted);
}
.score-dial--ok       { --dial: var(--success); --track: var(--success-bg); }
.score-dial--info     { --dial: var(--info);    --track: var(--info-bg); }
.score-dial--warning  { --dial: var(--warning); --track: var(--warning-bg); }
.score-dial--neutral  { --dial: var(--neutral); --track: var(--neutral-bg); }
@media (prefers-reduced-motion: reduce) {
.score-dial {
transition: none;
}
}
.job-card__title {
margin: 0;
font-size: 18px;
font-weight: 700;
line-height: 1.3;
overflow-wrap: anywhere;
}
.job-card__meta {
margin: 0;
color: var(--muted);
font-size: var(--fs-sm);
overflow-wrap: anywhere;
}
.job-card__badges {
display: flex;
flex-wrap: wrap;
gap: 7px;
}
.job-card__reasons {
display: grid;
gap: 6px;
margin: 2px 0 0;
padding-inline-start: 18px;
color: var(--muted);
font-size: var(--fs-sm);
}
.job-card__actions {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 10px;
margin-top: 2px;
padding-top: 12px;
border-top: 1px solid var(--border);
}
.job-card__secondary-actions {
display: flex;
flex-wrap: wrap;
gap: 7px;
}
.job-card__actions .apply-btn {
flex: 0 0 auto;
margin-inline-start: auto;
}
@media (max-width: 420px) {
.job-card__actions .apply-btn {
inline-size: 100%;
margin-inline-start: 0;
justify-content: center;
}
}
.job-card__secondary-actions form {
flex: 0 1 auto;
}
.button.compact,
button.compact {
min-height: 44px;
padding: 7px 10px;
font-size: var(--fs-meta);
font-weight: 600;
}
.job-card__unavailable {
margin: 0;
padding: 11px 13px;
border: 1px dashed var(--border-strong);
border-radius: var(--radius-md);
background: var(--surface-soft);
color: var(--muted);
text-align: center;
font-weight: 600;
}
.job-card__actions form {
margin: 0;
}
.badge {
display: inline-flex;
align-items: center;
gap: 5px;
border-radius: 999px;
border: 1px solid var(--border);
background: var(--surface-soft);
color: var(--muted);
padding: 3px 9px;
font-size: var(--fs-meta);
font-weight: 600;
line-height: 1.45;
}
.badge--new {
border-color: var(--accent);
background: var(--accent);
color: var(--on-tone);
}
.badge--official {
border-color: var(--accent-2);
background: var(--accent-2);
color: var(--on-tone);
}
.badge--fit-excellent {
border-color: var(--accent);
background: var(--accent);
color: var(--on-tone);
}
.badge--fit-good {
border-color: var(--accent-2);
background: var(--accent-2);
color: var(--on-tone);
}
.badge--fit-maybe {
border-color: var(--warning);
background: var(--warning);
color: var(--on-tone);
}
.badge--pinned {
background: var(--warning-bg);
border-color: var(--warning-border);
color: var(--warning-ink);
font-size: var(--fs-micro);
}
.badge--unverified {
background: var(--warning-bg);
border-color: var(--warning-border);
color: var(--warning-ink);
}
.suggested-section {
margin-top: 32px;
padding-top: 20px;
border-top: 1px solid var(--border);
}
.suggested-head h2 {
font-size: var(--fs-h2);
}
.suggested-head .meta {
margin-top: 2px;
}
.suggested-section .job-card {
background: var(--surface-soft);
}
.state-pill {
display: inline-flex;
align-items: center;
gap: 5px;
border-radius: 999px;
border: 1px solid var(--info-border);
background: var(--info-bg);
color: var(--info-ink);
padding: 3px 9px;
font-size: var(--fs-meta);
font-weight: 600;
}
.apply-btn {
display: inline-flex;
align-items: center;
justify-content: center;
flex: 1 1 auto;
min-height: 48px;
font-size: var(--fs-body);
font-weight: 700;
min-width: 150px;
}
.link-wrap {
word-break: break-all;
overflow-wrap: anywhere;
}
.stack-form {
display: grid;
gap: 18px;
}
@media (max-width: 1100px) {
.filters {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 860px) {
.topbar,
.page-head,
.match-row,
.detail-grid {
grid-template-columns: 1fr;
display: grid;
}
.profile-grid,
.filters {
grid-template-columns: 1fr;
}
.stats-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.nav {
width: 100%;
overflow-x: auto;
overscroll-behavior-inline: contain;
scrollbar-width: thin;
}
.actions,
.section-head,
.panel-head,
.match-title-line {
align-items: stretch;
}
.actions > *,
.actions form,
.actions button,
.actions .button,
.row-actions > *,
.row-actions form,
.row-actions button,
.row-actions .button {
width: 100%;
}
.row-actions {
justify-content: flex-start;
max-width: none;
}
.table-scroll-hint {
display: block;
}
.toolbar__spacer {
display: none;
}
.source-filters {
grid-template-columns: 1fr;
}
}
@media (max-width: 560px) {
.shell {
width: min(100% - 24px, var(--container));
}
.topbar {
margin-top: 10px;
padding: 10px;
}
.topbar .nav {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 4px;
overflow: visible;
}
.topbar--public .nav {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.topbar .nav a {
padding-inline: 6px;
justify-content: center;
text-align: center;
}
.topbar .nav a .icon {
display: none;
}
.topbar-tools {
width: 100%;
}
.has-js .theme-switch {
padding: 4px;
}
.theme-switch__opt {
min-height: 40px;
width: 40px;
}
.dashboard-actions {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
width: 100%;
}
.dashboard-actions > form:first-child,
.dashboard-actions > a.button,
.dashboard-actions > .operator-tools {
grid-column: 1 / -1;
}
.stats-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.stat {
padding: 14px;
}
.stat strong {
font-size: 25px;
}
.panel,
.empty,
.match-row,
.job-card,
.seeker-filters {
padding: 16px;
}
.job-card__head {
display: grid;
}
.match-title-line {
display: grid;
}
.match-title-line .score {
justify-self: start;
}
.apply-btn {
width: 100%;
}
.invite-link-tools {
grid-template-columns: 1fr;
}
.action-form > label,
.action-form > button {
flex-basis: 100%;
width: 100%;
}
.guide__defs {
grid-template-columns: 1fr;
gap: 2px 0;
}
.guide__defs dd {
margin-bottom: 8px;
}
.invite-share-button,
.invite-share-status {
grid-column: 1;
width: 100%;
}
.seeker-filters {
grid-template-columns: 1fr;
}
.filter-primary,
.filter-drawer__body,
.additional-filters > .detail-grid {
grid-template-columns: 1fr;
}
.filter-primary .primary,
.filter-drawer__body .seg {
width: 100%;
}
.job-card__secondary-actions {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
width: 100%;
gap: 6px;
}
.job-card__secondary-actions form,
.job-card__secondary-actions button {
width: 100%;
min-width: 0;
}
.seg.tabs {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
overflow: visible;
}
.seg.tabs a {
min-width: 0;
text-align: center;
}
table {
min-width: 560px;
}
.toolbar {
padding: 10px;
}
.toolbar__group {
width: 100%;
}
[data-tip]::after {
max-inline-size: min(46ch, calc(100vw - 48px));
}
}
.auth-body {
min-height: 100vh;
display: grid;
place-items: center;
padding: 24px 16px;
background:
radial-gradient(1100px 520px at 82% -12%, var(--accent-soft), transparent 62%),
var(--bg);
}
.auth-shell {
width: min(420px, 100%);
}
.auth-card {
display: flex;
flex-direction: column;
padding: 28px 26px 22px;
border: 1px solid var(--border);
border-radius: 14px;
background: var(--surface);
box-shadow: var(--shadow-md);
}
.auth-brand {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 18px;
}
.auth-brand-name {
font-weight: 700;
}
.auth-title {
margin: 0 0 6px;
font-size: 23px;
font-weight: 700;
line-height: 1.25;
}
.auth-sub {
margin: 0 0 20px;
color: var(--muted);
font-size: var(--fs-sm);
}
.auth-label {
margin-bottom: 6px;
font-size: var(--fs-meta);
font-weight: 700;
color: var(--muted);
}
.auth-input {
min-height: 46px;
margin-bottom: 16px;
padding: 10px 12px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface);
color: var(--text);
font: inherit;
}
.auth-input:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 1px;
border-color: var(--accent);
}
.auth-submit {
margin-top: 4px;
width: 100%;
justify-content: center;
}
.auth-error {
margin: 0 0 16px;
padding: 10px 12px;
border: 1px solid var(--danger-border);
border-radius: var(--radius-md);
background: var(--danger-bg);
color: var(--danger-ink);
font-size: var(--fs-sm);
font-weight: 600;
}
.auth-note {
margin: 0 0 16px;
padding: 10px 12px;
border: 1px solid var(--warning-border);
border-radius: var(--radius-md);
background: var(--warning-bg);
color: var(--warning-ink);
font-size: var(--fs-meta);
}
.auth-note code {
font-size: var(--fs-micro);
}
.auth-foot {
margin: 14px 0 0;
color: var(--muted);
font-size: var(--fs-micro);
text-align: center;
}
.topbar-logout {
margin: 0;
}
.topbar-logout-btn {
min-height: 38px;
padding: 6px 12px;
font-size: var(--fs-meta);
font-weight: 600;
color: var(--muted);
}
.topbar-logout-btn:hover {
color: var(--text);
}
@media (max-width: 560px) {
.auth-card {
padding: 22px 18px 18px;
}
.topbar-logout {
flex: 1;
}
.topbar-logout-btn {
width: 100%;
}
}
.file-field {
display: block;
}
.file-field__label {
display: block;
margin-bottom: 6px;
font-weight: 700;
}
.file-field__drop {
display: grid;
justify-items: center;
gap: 4px;
padding: 22px 16px;
border: 1.5px dashed var(--border-strong);
border-radius: var(--radius-lg);
background: var(--surface-soft);
text-align: center;
transition:
border-color 160ms ease,
background-color 160ms ease;
}
.file-field__icon {
display: grid;
place-items: center;
width: 34px;
height: 34px;
border-radius: 50%;
background: var(--accent-soft);
color: var(--accent-ink);
font-weight: 700;
}
.file-field__cta {
font-weight: 700;
color: var(--accent-ink);
}
.file-field__hint {
color: var(--muted);
font-size: var(--fs-meta);
overflow-wrap: anywhere;
}
.file-field input[type="file"] {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
}
.file-field input[type="file"]:focus-visible + .file-field__drop,
.file-field:hover .file-field__drop {
border-color: var(--accent);
background: var(--accent-soft);
}
.file-field.has-file .file-field__drop {
border-style: solid;
border-color: var(--accent);
background: var(--accent-soft);
}
.file-field.has-file .file-field__hint {
color: var(--text);
font-weight: 600;
}
.file-field.is-dragging .file-field__drop {
border-color: var(--accent);
background: var(--accent-soft);
}
.source-filters {
display: grid;
grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) auto auto;
align-items: end;
gap: 10px;
padding: 14px;
margin-bottom: 12px;
}
.source-count {
margin: 0 0 10px;
font-size: var(--fs-meta);
}
.pager {
margin-top: 14px;
align-items: center;
}
fieldset.seg label {
border: 1px solid var(--border);
background: var(--surface);
}
fieldset.seg label::before {
content: "";
flex: none;
width: 17px;
height: 17px;
border: 1.5px solid var(--border-hover);
border-radius: 5px;
background: var(--surface);
transition:
background-color 140ms ease,
border-color 140ms ease;
}
fieldset.seg label:has(input:checked) {
border-color: var(--accent);
}
fieldset.seg label:has(input:checked)::before {
border-color: var(--check-fill);
background:
var(--check-fill)
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3.2L13 5'/%3E%3C/svg%3E")
center / 12px 12px no-repeat;
}
fieldset.seg label:focus-within {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
.install-card[hidden],
.install-card__cta[hidden],
.install-how[hidden] {
display: none;
}
.install-guide__done[hidden],
.install-guide__cta[hidden] {
display: none;
}
.install-guide__done {
display: flex;
align-items: center;
gap: 6px;
margin: 0;
color: var(--success);
font-weight: 600;
}
.install-guide__cta {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px 12px;
margin: 12px 0 4px;
}
.install-guide .install-how {
margin-block-start: 10px;
padding: 2px 12px 10px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface-soft);
}
.install-guide .install-how > summary {
margin-block-start: 8px;
}
.install-guide .install-how[open] > summary {
margin-block-end: 2px;
}
.install-card {
padding-inline-end: 2.75rem;
}
.install-card__row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10px;
}
.install-card__mark {
display: inline-flex;
flex: 0 0 auto;
align-items: center;
justify-content: center;
inline-size: 36px;
block-size: 36px;
border-radius: var(--radius-md);
background: var(--accent-soft);
color: var(--accent);
}
.install-card__mark .icon {
color: var(--accent);
}
.install-card__copy {
flex: 1 1 12rem;
min-inline-size: 0;
}
.install-card__head {
margin: 0;
font-size: var(--fs-body);
font-weight: 700;
line-height: var(--lh-snug);
}
.install-card__sub {
margin: 2px 0 0;
color: var(--muted);
font-size: var(--fs-sm);
line-height: var(--lh-snug);
}
.install-card__cta {
flex: 0 0 auto;
}
.install-card__x {
position: absolute;
inset-block-start: 8px;
inset-inline-end: 8px;
display: inline-flex;
align-items: center;
justify-content: center;
inline-size: 36px;
block-size: 36px;
padding: 0;
border: 0;
border-radius: var(--radius-md);
background: none;
color: var(--muted);
cursor: pointer;
}
.install-card__x:hover {
background: var(--surface-sunken);
color: var(--text);
box-shadow: none;
}
.install-card__x:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
.install-how > summary {
display: inline-flex;
align-items: center;
gap: 6px;
margin-block-start: 8px;
color: var(--accent-ink);
font-size: var(--fs-sm);
font-weight: 600;
cursor: pointer;
}
.install-how > summary:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
border-radius: var(--radius-sm);
}
.install-steps {
margin: 8px 0 0;
padding-inline-start: 1.25rem;
color: var(--text);
font-size: var(--fs-sm);
line-height: 1.75;
}
.install-steps li + li {
margin-block-start: 2px;
}
.install-steps__glyph {
display: inline-flex;
vertical-align: -0.24em;
inline-size: 1.15em;
block-size: 1.15em;
color: var(--accent);
}
.install-steps__glyph svg {
inline-size: 100%;
block-size: 100%;
}
@media (max-width: 480px) {
.install-card__cta {
flex: 1 0 100%;
}
}
.hp-field {
position: absolute;
inline-size: 1px;
block-size: 1px;
margin: -1px;
padding: 0;
border: 0;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
}
.field-hint {
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 400;
line-height: 1.6;
}
.field-error {
margin: 4px 0 0;
color: var(--danger);
font-size: var(--fs-meta);
font-weight: 600;
line-height: 1.6;
}
.field-error:empty {
display: none;
}
.field-count.is-tight {
color: var(--danger);
font-weight: 600;
}
.form-summary {
margin: 0 0 12px;
padding: 10px 12px;
border: 1px solid var(--danger);
border-radius: var(--radius-md);
background: var(--danger-bg);
color: var(--danger);
font-size: var(--fs-meta);
font-weight: 600;
line-height: 1.6;
}
.form-summary:empty {
display: none;
}
.consent-block {
min-inline-size: 0;
margin: 0;
padding: 12px 14px 14px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
}
.consent-block legend {
padding: 0 4px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 700;
}
.consent-block__tick {
display: grid;
grid-template-columns: auto 1fr;
align-items: start;
gap: 10px;
color: var(--ink);
font-size: var(--fs-sm);
font-weight: 400;
line-height: 1.7;
cursor: pointer;
}
.consent-block__tick input[type="checkbox"] {
inline-size: 18px;
block-size: 18px;
min-block-size: 0;
margin-block-start: 3px;
}
.consent-block .meta {
margin-block: 10px 0;
}
.legal h2 {
margin-block: 24px 8px;
font-size: var(--fs-h2);
}
.legal h2:first-child {
margin-block-start: 0;
}
.legal p {
margin-block: 0 12px;
line-height: 1.8;
max-inline-size: 68ch;
}
.legal ul {
margin-block: 0 12px;
padding-inline-start: 1.25rem;
line-height: 1.8;
max-inline-size: 68ch;
}
.legal li + li {
margin-block-start: 4px;
}
.legal-todo,
mark.legal-todo {
background: var(--warning-bg);
color: var(--warning-ink);
border: 1px dashed var(--warning);
border-radius: var(--radius-sm);
padding: 1px 6px;
font-weight: 600;
}
.join-card {
display: grid;
gap: 12px;
}
.join-card__head {
display: flex;
flex-wrap: wrap;
align-items: start;
justify-content: space-between;
gap: 8px 12px;
}
.join-card__name {
margin: 0;
font-size: var(--fs-h2);
}
.join-card__email {
margin: 2px 0 0;
}
.join-card__facts {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 10px 16px;
margin: 0;
}
.join-card__facts dt {
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
}
.join-card__facts dd {
margin: 2px 0 0;
color: var(--text);
font-size: var(--fs-sm);
}
.join-card__note {
margin: 0;
padding-inline-start: 12px;
border-inline-start: 3px solid var(--border);
color: var(--text);
font-size: var(--fs-sm);
line-height: 1.7;
white-space: pre-line;
}
.join-card__states {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
}
.join-card__actions {
gap: 8px;
}
.settings-head {
margin-block-end: 18px;
}
.settings-head h1 {
margin: 0;
}
.settings-head .meta {
margin: 4px 0 0;
}
.settings-flash,
.settings-form,
.settings-theme,
.settings-danger {
margin-block: 0 16px;
}
.settings-flash .meta {
margin: 4px 0 0;
}
.settings-flash a {
color: inherit;
font-weight: 700;
}
.settings-form {
display: grid;
gap: 16px;
}
.settings-card {
display: grid;
gap: 18px;
padding: 20px;
scroll-margin-block-start: 16px;
}
.settings-card__head {
display: flex;
align-items: flex-start;
gap: 12px;
}
.settings-card__mark {
display: inline-grid;
place-items: center;
flex: none;
width: 38px;
height: 38px;
border-radius: var(--radius-md);
background: var(--accent-soft);
color: var(--accent-ink);
}
.settings-card__head h2 {
margin: 0;
color: var(--text);
font-size: var(--fs-h2);
line-height: 1.3;
}
.settings-card__head .meta {
margin: 2px 0 0;
font-size: var(--fs-sm);
font-weight: 500;
line-height: var(--lh-snug);
}
.settings-field__name {
color: var(--text);
font-size: var(--fs-sm);
font-weight: 700;
}
.settings-card .field-hint {
font-weight: 500;
}
.settings-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 16px 14px;
align-items: start;
}
.settings-list {
min-height: 5.2em;
line-height: var(--lh-body);
field-sizing: content;
}
.settings-card fieldset.seg label {
min-height: 44px;
}
.settings-error {
padding: 12px 14px;
scroll-margin-block: 24px;
}
.settings-error:focus {
outline: none;
}
.settings-status {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 8px 12px;
padding: 14px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface-soft);
}
.settings-status.is-on {
border-color: var(--success-border);
background: var(--success-bg);
}
.settings-status.is-off {
border-color: var(--accent);
border-inline-start-width: 3px;
}
.settings-status__mark {
display: inline-grid;
place-items: center;
width: 40px;
height: 40px;
border-radius: 50%;
background: var(--surface);
color: var(--accent-ink);
}
.settings-status.is-on .settings-status__mark {
color: var(--success);
}
.settings-status__copy {
display: grid;
gap: 2px;
min-width: 0;
}
.settings-status__copy strong {
display: inline-flex;
align-items: center;
gap: 5px;
color: var(--text);
}
.settings-status.is-on .settings-status__copy strong .icon {
color: var(--success);
}
.settings-status__copy .meta {
font-size: var(--fs-meta);
}
.settings-status__note {
grid-column: 1 / -1;
margin: 0;
font-size: var(--fs-meta);
}
.settings-toggles {
border: 1px solid var(--border);
border-radius: var(--radius-lg);
overflow: hidden;
}
.settings-toggle {
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
min-height: 62px;
padding: 12px 14px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
cursor: pointer;
transition: background-color 140ms ease;
}
.settings-toggles .settings-toggle {
border: 0;
border-radius: 0;
}
.settings-toggles .settings-toggle + .settings-toggle {
border-block-start: 1px solid var(--border);
}
.settings-toggle:hover {
background: var(--surface-hover);
}
.settings-toggle__copy {
display: grid;
gap: 2px;
min-width: 0;
}
.settings-toggle__title {
color: var(--text);
font-size: var(--fs-body);
font-weight: 700;
line-height: var(--lh-snug);
}
.settings-toggle__sub {
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 500;
line-height: var(--lh-snug);
overflow-wrap: anywhere;
}
.settings-toggle.is-disabled {
cursor: not-allowed;
}
.settings-toggle.is-disabled .settings-toggle__title {
color: var(--muted);
}
.settings-toggle .switch {
appearance: none;
position: relative;
flex: none;
width: 50px;
height: 30px;
min-height: 30px;
margin: 0;
padding: 0;
border: 0;
border-radius: 999px;
background: var(--border-strong);
cursor: inherit;
transition: background-color 160ms ease;
}
.settings-toggle .switch::before {
content: "";
position: absolute;
inset-block-start: 3px;
inset-inline-start: 3px;
width: 24px;
height: 24px;
border-radius: 50%;
background: #ffffff;
box-shadow: 0 1px 3px rgba(16, 24, 40, 0.28);
transition: inset-inline-start 160ms ease;
}
.settings-toggle .switch:checked {
background: var(--check-fill);
}
.settings-toggle .switch:checked::before {
inset-inline-start: 23px;
}
.settings-toggle .switch:hover,
.settings-toggle .switch:focus {
box-shadow: none;
}
.settings-toggle .switch:focus-visible {
outline: 3px solid var(--focus-ring);
outline-offset: 2px;
}
.settings-toggle .switch:disabled {
opacity: 0.45;
}
.settings-more {
border-block-start: 1px dashed var(--border);
padding-block-start: 6px;
}
.settings-more > summary {
justify-content: flex-start;
gap: 7px;
color: var(--accent-ink);
}
.settings-more__body {
display: grid;
gap: 12px;
padding-block-end: 4px;
}
.settings-more__body > .meta {
margin: 0;
font-size: var(--fs-sm);
}
.settings-advanced {
gap: 0;
}
.settings-advanced__summary {
font-weight: inherit;
}
.settings-advanced__body {
display: grid;
gap: 18px;
padding-block-start: 4px;
}
.settings-savebar {
position: sticky;
inset-block-end: var(--bottom-nav-height, 0px);
z-index: 5;
margin-inline: -4px;
padding: 12px 4px calc(12px + env(safe-area-inset-bottom, 0px));
background: linear-gradient(to top, var(--bg) 72%, transparent);
}
.settings-savebar__button {
width: 100%;
min-height: 50px;
font-size: var(--fs-body);
box-shadow: var(--shadow-md);
}
@media (min-width: 720px) {
.settings-savebar__button {
width: auto;
min-width: 220px;
}
}
.settings-theme {
display: none;
}
.has-js .settings-theme {
display: block;
}
.settings-theme__row {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 14px;
}
.settings-theme__row .settings-card__head {
flex: 1 1 220px;
}
.settings-theme .theme-switch__opt {
min-width: 44px;
min-height: 44px;
}
.settings-danger {
margin-block-start: 40px;
}
.settings-danger h2 {
display: flex;
align-items: center;
gap: 7px;
margin: 0 0 6px;
color: var(--danger-ink);
font-size: var(--fs-h2);
}
.settings-danger > .meta {
margin: 0 0 14px;
}
.settings-danger .settings-error {
margin-block-end: 14px;
}
@media (max-width: 520px) {
.settings-card {
padding: 16px;
}
.settings-status {
grid-template-columns: auto minmax(0, 1fr);
}
.settings-status__action {
grid-column: 1 / -1;
width: 100%;
}
}
@media (max-width: 360px) {
.settings-grid {
grid-template-columns: minmax(0, 1fr);
}
}
.tg-pair,
.tg-linked {
grid-column: 1 / -1;
}
.tg-pair {
margin-top: 10px;
}
.tg-pair > summary {
font-size: var(--fs-meta);
color: var(--accent-ink);
}
.tg-pair > .meta {
margin: 4px 0 10px;
}
.tg-pair__out {
margin-top: 12px;
}
.tg-pair__out[hidden] {
display: none;
}
.tg-pair__line {
margin: 0 0 6px;
font-weight: 700;
}
.tg-pair__code {
display: inline-block;
padding: 2px 10px;
border: 1px dashed var(--accent);
border-radius: var(--radius-lg);
background: var(--surface);
font-family: var(--font-mono);
font-size: 1.25em;
letter-spacing: 0.12em;
user-select: all;
}
.tg-linked {
font-weight: 700;
color: var(--success);
}
.onboard-warn[hidden] {
display: none;
}
.weight-list .weight {
display: inline-block;
margin-inline-start: 6px;
padding: 1px 8px;
border-radius: 999px;
background: var(--accent-soft);
color: var(--accent-ink);
font-size: var(--fs-micro);
font-weight: 700;
white-space: nowrap;
}
.weight-list .weight.tone-danger {
background: var(--danger-bg);
color: var(--danger-ink);
}
.weight-list li + li {
margin-block-start: 7px;
}
.journey {
margin: 0 0 20px;
padding: 14px 16px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
}
.journey ol {
position: relative;
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 10px;
margin: 0;
padding: 0;
list-style: none;
}
.journey ol::before {
content: "";
position: absolute;
inset-block-start: 12px;
inset-inline: 12.5%;
block-size: 2px;
background: var(--border);
}
.journey__step {
position: relative;
display: grid;
justify-items: center;
gap: 7px;
text-align: center;
}
.journey__mark {
display: grid;
place-items: center;
inline-size: 26px;
block-size: 26px;
border: 2px solid var(--border);
border-radius: 50%;
background: var(--surface);
color: var(--faint);
font-size: var(--fs-meta);
font-weight: 700;
}
.journey__label {
display: inline-flex;
align-items: center;
gap: 5px;
color: var(--faint);
font-size: var(--fs-meta);
font-weight: 600;
line-height: 1.5;
}
.journey__step.is-done .journey__mark {
border-color: var(--success);
background: var(--success);
color: var(--on-tone);
}
.journey__step.is-done .journey__label {
color: var(--muted);
}
.journey__step.is-current .journey__mark {
border-color: var(--accent);
background: var(--accent-soft);
color: var(--accent-ink);
box-shadow: 0 0 0 4px var(--accent-soft);
}
.journey__step.is-current .journey__label {
color: var(--text);
font-weight: 700;
}
@media (max-width: 620px) {
.journey ol {
grid-template-columns: minmax(0, 1fr);
gap: 12px;
}
.journey ol::before {
inset-block: 12px;
inset-inline: 12px auto;
inline-size: 2px;
block-size: auto;
}
.journey__step {
grid-template-columns: auto 1fr;
justify-items: start;
gap: 10px;
direction: rtl;
text-align: start;
}
}
.landing-shell {
width: min(var(--container), calc(100vw - 32px));
margin-inline: auto;
}
.landing-hero {
display: grid;
grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
align-items: center;
gap: 30px 40px;
margin: 6px 0 34px;
padding: 34px 30px 30px;
border: 1px solid var(--accent-soft);
border-radius: 14px;
background:
radial-gradient(105% 130% at 100% 0%, var(--accent-soft), transparent 58%),
var(--surface);
box-shadow: var(--shadow-sm);
}
.landing-hero__copy {
min-width: 0;
}
.landing-hero .eyebrow {
display: flex;
align-items: center;
gap: 8px;
margin: 0;
color: var(--accent-ink);
}
.radar-mark {
position: relative;
display: inline-grid;
place-items: center;
inline-size: 18px;
block-size: 18px;
border: 1px solid var(--accent);
border-radius: 50%;
overflow: hidden;
}
.radar-mark::before {
content: "";
position: absolute;
inset: -25%;
background: conic-gradient(from 0deg, var(--accent) 0deg, transparent 70deg);
opacity: 0.55;
animation: radar-sweep 7s linear infinite;
}
.radar-mark::after {
content: "";
position: absolute;
inline-size: 4px;
block-size: 4px;
border-radius: 50%;
background: var(--accent);
}
@keyframes radar-sweep {
to {
transform: rotate(360deg);
}
}
@media (prefers-reduced-motion: reduce) {
.radar-mark::before {
animation: none;
}
}
.landing-hero h1 {
margin: 10px 0 0;
font-size: clamp(30px, 4.4vw, 44px);
font-weight: 700;
line-height: 1.24;
letter-spacing: -0.015em;
}
.landing-hero__lede {
max-inline-size: 48ch;
margin: 14px 0 0;
color: var(--muted);
font-size: clamp(15px, 1.4vw, 16.5px);
line-height: 1.85;
}
.landing-hero__cta {
margin-block-start: 22px;
}
.landing-cta {
padding: 12px 22px;
font-size: var(--fs-body);
font-weight: 700;
}
.landing-hero__reassure {
margin: 12px 0 0;
}
.digest {
min-width: 0;
margin: 0;
}
.digest__frame {
border: 1px solid var(--border);
border-radius: 12px;
background: var(--surface-sunken);
box-shadow: var(--shadow-sm);
overflow: hidden;
}
.digest__bar {
display: flex;
align-items: center;
gap: 8px;
padding: 9px 12px;
border-block-end: 1px solid var(--border);
background: var(--surface);
}
.digest__avatar {
display: grid;
place-items: center;
inline-size: 24px;
block-size: 24px;
border-radius: 50%;
background: var(--accent-strong);
color: var(--on-accent);
}
.digest__bot {
color: var(--text);
font-size: var(--fs-meta);
font-weight: 700;
}
.digest__badge {
margin-inline-start: auto;
padding: 2px 8px;
border: 1px solid var(--border-strong);
border-radius: 999px;
color: var(--faint);
font-size: var(--fs-micro);
font-weight: 700;
}
.digest__bubble {
margin: 12px;
padding: 12px 14px;
border-start-start-radius: 4px;
border-start-end-radius: 12px;
border-end-start-radius: 12px;
border-end-end-radius: 12px;
background: var(--surface);
border: 1px solid var(--border);
}
.digest__line {
display: flex;
align-items: baseline;
gap: 6px;
margin: 0;
color: var(--text);
font-size: 13px;
line-height: 1.85;
}
.digest__glyph {
flex: none;
inline-size: 15px;
font-size: 12px;
text-align: center;
}
.digest__line--head {
font-weight: 700;
}
.digest__line--job {
margin-block-start: 10px;
font-weight: 700;
}
.digest__line--score {
color: var(--accent-ink);
font-weight: 700;
}
.digest__line--label {
margin-block-start: 4px;
}
.digest__line--reason {
color: var(--muted);
padding-inline-start: 12px;
}
.digest__line--url {
color: var(--accent);
font-size: var(--fs-meta);
word-break: break-all;
}
.digest__line--foot {
margin-block-start: 10px;
padding-block-start: 8px;
border-block-start: 1px solid var(--border);
color: var(--faint);
font-size: var(--fs-micro);
line-height: 1.7;
}
.digest__caption {
display: flex;
align-items: center;
gap: 6px;
margin-block-start: 10px;
color: var(--muted);
font-size: var(--fs-meta);
}
.landing-figures {
grid-column: 1 / -1;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
gap: 12px 14px;
margin: 0;
padding-block-start: 22px;
border-block-start: 1px solid var(--border);
}
.landing-figures dt {
display: flex;
align-items: center;
gap: 6px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
}
.landing-figures dd {
margin: 4px 0 0;
color: var(--text);
font-size: 24px;
font-weight: 700;
}
@media (max-width: 620px) {
.landing-figures:has(> :nth-child(4)) {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
.landing-shell .section {
margin-block-start: 40px;
}
.landing-h2 {
margin: 0 0 4px;
font-size: clamp(20px, 2.4vw, 25px);
letter-spacing: -0.01em;
}
.landing-note {
max-inline-size: 78ch;
margin: 10px 0 0;
line-height: 1.85;
}
.landing-why {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
margin-block-start: 18px;
}
@media (max-width: 620px) {
.landing-why {
grid-template-columns: minmax(0, 1fr);
}
}
.landing-why__item {
padding: 16px 18px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
}
.landing-why__item h3 {
display: flex;
align-items: center;
gap: 7px;
margin: 0;
font-size: var(--fs-body);
}
.landing-why__item h3 .icon {
color: var(--accent);
}
.landing-why__item p {
margin: 6px 0 0;
color: var(--muted);
font-size: var(--fs-meta);
line-height: 1.75;
}
.landing-steps {
counter-reset: landing-step;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(232px, 1fr));
gap: 18px 22px;
margin: 18px 0 0;
padding: 0;
list-style: none;
}
.landing-steps li {
position: relative;
padding-inline-start: 36px;
}
.landing-steps li::before {
counter-increment: landing-step;
content: counter(landing-step);
position: absolute;
inset-inline-start: 0;
inset-block-start: 0;
display: grid;
place-items: center;
inline-size: 26px;
block-size: 26px;
border-radius: 50%;
background: var(--accent-soft);
color: var(--accent-ink);
font-size: var(--fs-meta);
font-weight: 700;
}
.landing-steps h3 {
display: flex;
align-items: center;
gap: 7px;
margin: 2px 0 0;
font-size: var(--fs-body);
}
.landing-steps p {
margin: 6px 0 0;
color: var(--muted);
font-size: var(--fs-meta);
line-height: 1.75;
}
.landing-proof {
position: relative;
margin-block-start: 16px;
max-inline-size: 560px;
}
.landing-proof .job-card__actions {
justify-content: start;
}
.landing-proof .button {
inline-size: auto;
}
.landing-proof__tag {
position: absolute;
inset-block-start: -9px;
inset-inline-end: 14px;
z-index: 1;
padding: 2px 9px;
border: 1px solid var(--border-strong);
border-radius: 999px;
background: var(--bg);
color: var(--faint);
font-size: var(--fs-micro);
font-weight: 700;
}
.faq {
display: grid;
gap: 10px;
margin-block-start: 18px;
}
.faq details.panel {
padding: 0;
}
.faq summary {
padding: 14px 16px;
font-size: var(--fs-body);
font-weight: 700;
}
.faq p {
max-inline-size: 74ch;
margin: 10px 16px 16px;
color: var(--muted);
font-size: var(--fs-meta);
line-height: 1.85;
}
.landing-close {
margin: 34px 0 8px;
padding: 30px 24px;
border: 1px solid var(--accent-soft);
border-radius: 14px;
background:
radial-gradient(90% 140% at 50% 0%, var(--accent-soft), transparent 62%),
var(--surface);
text-align: center;
}
.landing-close h2 {
margin: 0;
font-size: clamp(20px, 2.4vw, 26px);
}
.landing-close p {
margin: 8px 0 20px;
color: var(--muted);
font-size: var(--fs-body);
}
.landing-close__fine {
margin: 18px 0 0;
color: var(--faint);
font-size: var(--fs-meta);
}
.topbar-cta {
padding: 7px 14px;
font-size: var(--fs-meta);
font-weight: 700;
}
.landing-sticky {
display: none;
position: sticky;
inset-block-end: 0;
z-index: 20;
margin-inline: -12px;
padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
border-block-start: 1px solid var(--border);
background: var(--surface-glass);
backdrop-filter: blur(8px);
}
.landing-sticky .button {
inline-size: 100%;
justify-content: center;
padding: 12px 18px;
font-size: var(--fs-body);
font-weight: 700;
}
@media (prefers-reduced-motion: no-preference) {
.landing-hero__copy > *,
.digest {
animation: landing-rise 0.5s cubic-bezier(0.2, 0.7, 0.3, 1) backwards;
}
.landing-hero__copy > *:nth-child(1) { animation-delay: 0.02s; }
.landing-hero__copy > *:nth-child(2) { animation-delay: 0.08s; }
.landing-hero__copy > *:nth-child(3) { animation-delay: 0.14s; }
.landing-hero__copy > *:nth-child(4) { animation-delay: 0.20s; }
.digest { animation-delay: 0.26s; }
}
@keyframes landing-rise {
from {
opacity: 0;
transform: translateY(10px);
}
}
@media (max-width: 860px) {
.landing-hero {
grid-template-columns: minmax(0, 1fr);
gap: 26px;
}
.digest {
order: 2;
}
.landing-figures {
order: 3;
}
}
@media (max-width: 620px) {
.topbar-cta {
display: none;
}
.landing-sticky {
display: block;
}
.landing-close {
margin-block-end: 20px;
}
}
@media (max-width: 560px) {
.landing-shell {
width: min(var(--container), calc(100vw - 24px));
}
.landing-hero {
padding: 26px 18px 22px;
}
.landing-close {
padding: 26px 18px;
}
}
.nav-count {
min-inline-size: 20px;
padding: 1px 6px;
border-radius: 999px;
background: var(--surface-sunken);
color: var(--muted);
font-size: var(--fs-micro);
font-weight: 700;
font-variant-numeric: tabular-nums;
text-align: center;
}
.nav a[aria-current="page"] .nav-count {
background: var(--surface);
color: var(--accent-ink);
}
.bottom-nav {
display: none;
}
.seeker-bar {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 6px 12px;
margin: 22px 0 10px;
}
.seeker-bar__title {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: 2px 8px;
margin: 0;
font-size: 21px;
font-weight: 700;
line-height: 1.35;
}
.seeker-bar__sep {
color: var(--faint);
font-weight: 400;
}
.seeker-bar__figure {
color: var(--muted);
font-size: var(--fs-body);
font-weight: 600;
}
.seeker-bar__figure .num {
color: var(--ink);
font-weight: 700;
font-variant-numeric: tabular-nums;
}
.seeker-bar__figure--new,
.seeker-bar__figure--new .num {
color: var(--info);
}
.seeker-bar__back {
display: inline-flex;
align-items: center;
gap: 5px;
min-block-size: 44px;
color: var(--accent-ink);
font-size: var(--fs-sm);
font-weight: 600;
text-decoration: none;
}
.progress-strip {
margin: 0 0 12px;
overflow-x: auto;
overscroll-behavior-inline: contain;
scrollbar-width: none;
}
.progress-strip::-webkit-scrollbar {
display: none;
}
.progress-strip ol {
display: flex;
align-items: center;
gap: 4px;
margin: 0;
padding: 4px 0;
list-style: none;
white-space: nowrap;
}
.progress-strip__step {
display: flex;
align-items: center;
gap: 4px;
}
.progress-strip__step + .progress-strip__step::before {
content: "";
inline-size: 8px;
block-size: 1px;
background: var(--border-strong);
}
.progress-strip__step > a,
.progress-strip__step > span {
position: relative;
display: inline-flex;
align-items: center;
gap: 4px;
min-block-size: 34px;
padding: 4px 9px;
border: 1px solid var(--border);
border-radius: 999px;
background: var(--surface);
color: var(--muted);
font-size: 12px;
font-weight: 600;
text-decoration: none;
}
.progress-strip__step > a::after {
content: "";
position: absolute;
inset: -5px 0;
}
.progress-strip__step > a:hover {
border-color: var(--border-hover);
color: var(--text);
}
.progress-strip__step.is-done > a,
.progress-strip__step.is-done > span {
border-color: var(--success-border);
background: var(--success-bg);
color: var(--success-ink);
}
.progress-strip__step.is-todo > a {
border-color: var(--warning-border);
background: var(--warning-bg);
color: var(--warning-ink);
}
.progress-strip .icon {
color: inherit;
}
.seeker-filters[role="search"],
.seeker-filters.seeker-filters--drawer {
display: block;
padding: 0;
border: 0;
background: none;
box-shadow: none;
}
.seeker-filters[role="search"] {
margin: 0 0 10px;
}
.seeker-search__field {
position: relative;
display: flex;
}
.seeker-search__field input {
flex: 1 1 auto;
min-block-size: 50px;
padding-inline-end: 56px;
border-radius: var(--radius-lg);
background: var(--surface);
}
.seeker-search__go {
position: absolute;
inset-block: 3px;
inset-inline-end: 3px;
inline-size: 44px;
min-height: 44px;
padding: 0;
border: 0;
border-radius: var(--radius-md);
background: var(--accent-strong);
color: var(--on-accent);
}
.seeker-search__go .icon,
.seeker-search__go:hover .icon {
color: inherit;
}
.seeker-search__go:hover {
background: var(--accent-deep);
transform: none;
}
.chips[data-scroll-row] {
flex-wrap: nowrap;
margin: 0 0 10px;
padding: 3px 2px;
overflow-x: auto;
overscroll-behavior-inline: contain;
scrollbar-width: none;
}
.chips[data-scroll-row]::-webkit-scrollbar {
display: none;
}
.chips[data-scroll-row] .chip {
flex: 0 0 auto;
min-block-size: 44px;
white-space: nowrap;
}
.seeker-filters--drawer {
margin: 0 0 16px;
}
.seeker-filters--drawer > .filter-drawer {
padding: 0 12px;
background: var(--surface);
}
.seeker-filters--drawer > .filter-drawer[open] {
padding-bottom: 12px;
}
.list-head {
display: flex;
flex-wrap: wrap;
align-items: baseline;
justify-content: space-between;
gap: 2px 10px;
margin: 4px 0 10px;
}
.list-head h2 {
display: inline-flex;
align-items: center;
gap: 6px;
margin: 0;
font-size: 16.5px;
}
.list-head h2 .icon {
color: var(--accent);
}
.list-head .meta {
margin: 0;
}
.top-picks {
margin: 0 0 26px;
}
.top-picks .job-card {
border-inline-start: 3px solid var(--accent);
}
.section:has(> .list-head) {
margin-top: 8px;
}
.list-range {
margin: 0 0 10px;
}
.list-foot {
display: grid;
gap: 6px;
margin: 22px 0 8px;
}
.list-foot p {
display: flex;
align-items: center;
gap: 6px;
margin: 0;
}
.list-foot a {
display: inline-flex;
align-items: center;
gap: 6px;
min-block-size: 44px;
color: var(--muted);
}
.job-card {
gap: 10px;
padding: 16px;
}
.job-card + .job-card {
margin-top: 12px;
}
.job-card__title {
color: var(--text);
}
.job-card__title a {
color: inherit;
text-decoration: none;
}
.job-card__title a:hover {
color: var(--accent-ink);
text-decoration: underline;
}
.score-dial__value {
display: flex;
align-items: center;
justify-content: center;
white-space: nowrap;
}
.score-dial__value small {
margin-inline-start: 1px;
}
.fit-chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin: 0;
padding: 0;
list-style: none;
}
.fit-chip {
display: inline-flex;
align-items: center;
gap: 5px;
max-inline-size: 100%;
padding: 4px 10px;
border: 1px solid var(--success-border);
border-radius: 999px;
background: var(--success-bg);
color: var(--success-ink);
font-size: var(--fs-meta);
font-weight: 600;
line-height: 1.45;
overflow-wrap: anywhere;
}
.fit-chip .icon {
flex: none;
color: var(--success);
}
.fit-chip--warning {
border-color: var(--warning-border);
background: var(--warning-bg);
color: var(--warning-ink);
}
.fit-chip--warning .icon {
color: var(--warning);
}
.job-card__actions {
flex-wrap: nowrap;
gap: 8px;
padding-top: 10px;
}
.job-card__secondary-actions {
flex-wrap: nowrap;
gap: 6px;
}
.icon-button,
.card-more > summary.icon-button {
display: inline-grid;
place-items: center;
inline-size: 44px;
min-height: 44px;
padding: 0;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface);
color: var(--muted);
cursor: pointer;
}
.icon-button .icon {
color: inherit;
}
.icon-button:hover,
.card-more > summary.icon-button:hover {
border-color: var(--border-hover);
color: var(--text);
}
.icon-button:hover .icon {
color: inherit;
}
.icon-button.is-on {
border-color: var(--info-border);
background: var(--info-bg);
color: var(--info);
}
.icon-button.is-on svg {
fill: currentColor;
}
.icon-button[data-tip]::after {
inset-inline-start: 50%;
translate: 50% 0;
white-space: nowrap;
}
.card-more {
position: relative;
}
.card-more > summary::after {
content: none;
}
.card-more > summary.icon-button {
justify-content: center;
align-content: center;
gap: 0;
}
.card-more[open] > summary.icon-button {
border-color: var(--accent);
color: var(--accent-ink);
}
.card-more__menu {
position: absolute;
inset-block-end: calc(100% + 6px);
inset-inline-start: 0;
z-index: 30;
display: grid;
gap: 2px;
min-inline-size: 200px;
padding: 6px;
border: 1px solid var(--border-strong);
border-radius: var(--radius-lg);
background: var(--surface);
box-shadow: var(--shadow-md);
}
.card-more__menu form {
margin: 0;
}
.card-more__item {
display: flex;
align-items: center;
justify-content: flex-start;
gap: 8px;
inline-size: 100%;
min-height: 44px;
padding: 8px 10px;
border: 0;
border-radius: var(--radius-md);
background: transparent;
color: var(--text);
font-size: var(--fs-sm);
font-weight: 600;
text-decoration: none;
box-shadow: none;
}
.card-more__item:hover {
background: var(--surface-hover);
border: 0;
box-shadow: none;
transform: none;
}
.job-card__actions .apply-btn {
min-height: 46px;
min-width: 0;
}
.apply-btn--quiet {
font-size: var(--fs-sm);
font-weight: 600;
}
.apply-return[hidden] {
display: none;
}
.apply-return {
display: grid;
gap: 10px;
padding: 12px;
border: 1px solid var(--info-border);
border-radius: var(--radius-md);
background: var(--info-bg);
animation: fr-enter 200ms ease-out both;
}
.apply-return__q {
display: flex;
align-items: flex-start;
gap: 6px;
margin: 0;
color: var(--info-ink);
font-size: var(--fs-sm);
font-weight: 700;
line-height: 1.6;
}
.apply-return__q .icon {
flex: none;
margin-block-start: 3px;
color: var(--info);
}
.apply-return__actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.apply-return__actions form {
margin: 0;
}
.job-card.has-apply-return {
border-color: var(--info-border);
}
.applied-track__date {
color: var(--faint);
}
.applied-track__outcomes form {
margin: 0;
}
.outcome-chip {
min-height: 44px;
padding: 6px 12px;
border-radius: 999px;
font-size: var(--fs-meta);
}
.outcome-chip.is-on {
border-color: var(--accent-strong);
background: var(--accent-strong);
color: var(--on-accent);
}
.outcome-chip.is-on .icon,
.outcome-chip.is-on:hover .icon {
color: inherit;
}
.applied-track__undo {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px 10px;
margin: 0;
}
.text-button {
min-height: 44px;
padding: 0 2px;
border: 0;
background: none;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
text-decoration: underline;
text-underline-offset: 3px;
box-shadow: none;
}
.text-button:hover {
border: 0;
box-shadow: none;
transform: none;
color: var(--danger-ink);
}
.empty--guide {
display: grid;
gap: 8px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
}
.empty--guide p {
margin: 0;
}
.empty__head {
display: flex;
align-items: center;
gap: 7px;
color: var(--text);
font-size: var(--fs-body);
font-weight: 700;
}
.empty__head .icon {
color: var(--accent);
}
.back-link {
display: inline-flex;
align-items: center;
gap: 6px;
min-block-size: 44px;
margin: 12px 0 6px;
color: var(--accent-ink);
font-size: var(--fs-sm);
font-weight: 600;
text-decoration: none;
}
.back-link:hover {
text-decoration: underline;
}
.job-detail {
display: grid;
gap: 18px;
margin: 0 0 18px;
padding: 20px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
box-shadow: var(--shadow);
}
.job-detail__head {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: start;
gap: 12px;
}
.job-detail__identity {
display: grid;
gap: 4px;
min-inline-size: 0;
}
.job-detail__title {
margin: 0;
font-size: 22px;
line-height: 1.3;
overflow-wrap: anywhere;
}
.job-facts {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 12px;
margin: 0;
padding: 12px 14px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface-soft);
}
.job-facts dt {
display: flex;
align-items: center;
gap: 5px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
}
.job-facts dd {
margin: 3px 0 0;
font-weight: 600;
}
.job-detail__section h2 {
margin: 0 0 10px;
font-size: 16.5px;
}
.job-detail__desc p {
max-inline-size: 72ch;
margin: 0 0 10px;
line-height: 1.85;
overflow-wrap: anywhere;
}
.job-detail__more > summary {
justify-content: flex-start;
color: var(--accent-ink);
}
.job-detail__more > summary::after {
margin-inline-start: 8px;
}
.job-detail__risks {
display: grid;
gap: 6px;
margin: 10px 0 0;
padding: 0;
list-style: none;
color: var(--warning-ink);
font-size: var(--fs-sm);
}
.job-detail__risks li {
display: flex;
align-items: flex-start;
gap: 6px;
}
.job-detail__risks .icon {
flex: none;
margin-block-start: 3px;
}
.job-detail__card .job-card {
padding: 0;
border: 0;
background: transparent;
box-shadow: none;
}
.job-detail__card .job-card__head,
.job-detail__card .job-card__badges,
.job-detail__card .fit-chips {
display: none;
}
.rate-limited {
margin-block-start: 28px;
}
@media (max-width: 720px) {
.topbar.topbar--seeker {
display: flex;
min-height: 0;
margin-top: 8px;
padding: 8px 10px;
}
.topbar--seeker .seeker-nav--top {
display: none;
}
.topbar--seeker .topbar-tools {
width: auto;
}
.bottom-nav {
position: fixed;
inset-inline: 0;
inset-block-end: 0;
z-index: 60;
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
padding: 6px 6px calc(6px + env(safe-area-inset-bottom));
border-block-start: 1px solid var(--border);
background: var(--surface-glass);
box-shadow: 0 -1px 0 var(--hairline), var(--shadow-sm);
backdrop-filter: blur(14px);
}
.bottom-nav__item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 2px;
min-block-size: 52px;
border-radius: var(--radius-md);
color: var(--muted);
font-size: var(--fs-micro);
font-weight: 600;
text-decoration: none;
}
.bottom-nav__icon {
position: relative;
display: grid;
place-items: center;
inline-size: 52px;
block-size: 28px;
border-radius: 999px;
transition: background 140ms ease;
}
.bottom-nav__item.is-current {
color: var(--accent-ink);
font-weight: 700;
}
.bottom-nav__item.is-current .bottom-nav__icon {
background: var(--accent-soft);
color: var(--accent);
}
.bottom-nav__count {
position: absolute;
inset-block-start: -5px;
inset-inline-end: 0;
min-inline-size: 18px;
padding: 0 5px;
border-radius: 999px;
background: var(--surface-sunken);
color: var(--muted);
font-size: 10.5px;
font-weight: 700;
line-height: 18px;
font-variant-numeric: tabular-nums;
text-align: center;
box-shadow: 0 0 0 1.5px var(--surface);
}
.bottom-nav__item.is-current .bottom-nav__count {
background: var(--accent-strong);
color: var(--on-accent);
}
body.has-seeker-nav {
--bottom-nav-height: calc(65px + env(safe-area-inset-bottom));
padding-block-end: calc(var(--bottom-nav-height) + 12px);
}
body.has-seeker-nav .topbar-tools .theme-switch {
display: none;
}
.seeker-bar {
margin: 14px 0 8px;
}
.seeker-bar__title {
font-size: 18px;
}
.seeker-bar__figure {
font-size: var(--fs-sm);
}
}
@media (max-width: 560px) {
.job-card,
.job-detail {
padding: 14px;
}
.job-card__secondary-actions {
display: flex;
inline-size: auto;
gap: 6px;
}
.job-card__secondary-actions form,
.job-card__secondary-actions button {
inline-size: auto;
}
.job-card__secondary-actions .icon-button {
inline-size: 44px;
}
.job-card__actions .apply-btn {
flex: 1 1 0;
inline-size: auto;
margin-inline-start: 0;
justify-content: center;
}
.job-detail__head {
grid-template-columns: auto minmax(0, 1fr);
}
.job-detail__head .job-card__fit {
grid-column: 1 / -1;
grid-row: 2;
display: flex;
align-items: center;
gap: 8px;
}
.job-detail__title {
font-size: 19px;
}
.job-facts {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (prefers-reduced-motion: reduce) {
.apply-return {
animation: none;
}
}
.onboard-alt {
margin-block: 16px 4px;
padding: 12px 14px;
border: 1px dashed var(--border);
border-radius: 10px;
background: var(--accent-soft);
}
.onboard-alt .meta {
margin: 0 0 8px;
}
.onboard-suggested {
margin-block: -4px 14px;
}
.onboard-suggested .meta {
display: flex;
align-items: center;
gap: 6px;
margin: 0 0 6px;
}
.onboard-chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin: 0;
padding: 0;
list-style: none;
}
.onboard-chips li {
padding: 2px 10px;
border: 1px solid var(--border);
border-radius: 999px;
color: var(--muted);
font-size: var(--fs-meta);
line-height: 1.8;
}
.onboard-keep .invite-link-tools {
margin-block-start: 10px;
}
.onboard-warn {
display: flex;
align-items: center;
gap: 6px;
color: var(--warning-ink);
font-weight: 600;
}
.onboard-steps {
padding-inline-start: 22px;
}
.digest__line--score {
font-weight: 600;
}
.digest__line--reason {
padding-inline-start: 0;
}
.nav-badge {
display: inline-grid;
place-items: center;
min-inline-size: 20px;
height: 20px;
margin-inline-start: 6px;
padding: 0 6px;
border-radius: 999px;
background: var(--info);
color: var(--on-tone);
font-size: var(--fs-micro);
font-weight: 700;
font-variant-numeric: tabular-nums;
line-height: 1;
}
.nav-badge--danger {
background: var(--danger);
}
.admin-footer {
padding-block: 18px 28px;
}
.admin-tz,
.cycle-health bdi,
.seeker-health bdi {
white-space: nowrap;
}
.admin-lede {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
margin-block: 6px 12px;
}
.cycle-health .callout-head {
font-weight: 600;
}
.cycle-health .meta {
margin-block: 6px 0;
}
.cycle-stages {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin: 10px 0 0;
padding: 0;
list-style: none;
}
.cycle-stage {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 3px 9px;
border: 1px solid var(--border);
border-radius: 999px;
background: var(--surface);
font-size: var(--fs-sm);
}
.cycle-stage--ok {
border-color: var(--success-border);
color: var(--success-ink);
}
.cycle-stage--failed {
border-color: var(--danger-border);
background: var(--danger-bg);
color: var(--danger-ink);
font-weight: 600;
}
.cycle-stage--running {
border-color: var(--info-border);
background: var(--info-bg);
color: var(--info-ink);
}
.cycle-stage--pending,
.cycle-stage--skipped {
color: var(--faint);
}
.cycle-stage__time {
color: var(--muted);
font-size: var(--fs-meta);
}
.seeker-health td {
vertical-align: top;
}
.seeker-health .cell-sub {
display: block;
max-width: 34ch;
white-space: normal;
}
.source-streak {
display: block;
margin-top: 3px;
color: var(--danger-ink);
font-size: var(--fs-meta);
white-space: nowrap;
}
.source-history > summary {
cursor: pointer;
list-style: none;
}
.source-history > summary::-webkit-details-marker {
display: none;
}
.source-history[open] > summary .boilerplate {
white-space: normal;
}
.source-history__full {
max-width: 48ch;
margin: 6px 0;
white-space: normal;
}
.source-history__runs {
display: grid;
gap: 3px;
max-width: 56ch;
margin: 6px 0 0;
padding-inline-start: 18px;
font-size: var(--fs-meta);
white-space: normal;
}
.supply-checks {
display: grid;
gap: 6px;
margin: 10px 0 0;
padding: 0;
list-style: none;
}
.supply-check {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: 6px;
font-size: var(--fs-sm);
}
.supply-check .icon {
align-self: center;
}
.supply-check--ok {
color: var(--muted);
}
.supply-check--blocking {
color: var(--danger-ink);
}
.supply-check--info {
color: var(--info-ink);
}
.activity-panel .join-card__facts {
margin-block: 8px;
}
.digest-log ol {
display: grid;
gap: 3px;
margin: 6px 0 0;
padding-inline-start: 18px;
font-size: var(--fs-meta);
}
.profile-activity {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 4px;
}
.rematch-delta {
margin-block: 6px 0;
}
.dry-run-preview__text {
max-height: 420px;
margin: 10px 0 0;
padding: 12px;
overflow: auto;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface);
font-family: var(--font-sans);
font-size: var(--fs-sm);
white-space: pre-wrap;
}
.profile-grid > * {
min-width: 0;
}
.profile-grid .panel,
.profile-grid .copy-link {
overflow-wrap: anywhere;
}
@media (max-width: 560px) {
.topbar .admin-nav {
display: flex;
flex-wrap: nowrap;
gap: 4px;
max-width: 100%;
overflow-x: auto;
scrollbar-width: none;
overscroll-behavior-inline: contain;
}
.topbar .admin-nav::-webkit-scrollbar {
display: none;
}
.topbar .admin-nav a {
flex: 0 0 auto;
white-space: nowrap;
}
.cycle-stage {
font-size: var(--fs-meta);
}
.profile-grid .panel-head {
flex-wrap: wrap;
}
.profile-grid .panel-head > * {
min-width: 0;
overflow-wrap: anywhere;
}
}
.market-card {
margin: 0 0 12px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface-soft);
}
.market-card__head {
justify-content: flex-start;
gap: 8px;
padding: 6px 12px;
font-weight: 600;
}
.market-card__head > .icon:first-child {
color: var(--accent);
flex: none;
}
.market-card__headline {
flex: 1;
min-inline-size: 0;
}
.market-card__body {
padding: 10px 12px 12px;
border-top: 1px solid var(--border);
font-size: var(--fs-sm);
line-height: var(--lh-body);
}
.market-card__line {
margin: 0 0 4px;
color: var(--muted);
}
.market-card__lever {
margin: 8px 0 0;
padding: 8px 10px;
border: 1px solid var(--info-border);
border-radius: var(--radius-md);
background: var(--info-bg);
color: var(--info-ink);
}
.market-card__lever a {
color: inherit;
font-weight: 600;
white-space: nowrap;
}
.market-card__label {
margin: 12px 0 6px;
color: var(--text);
font-size: var(--fs-sm);
font-weight: 600;
}
.market-card__label span {
color: var(--faint);
font-weight: 400;
}
.market-card__employers,
.market-card__skills {
margin: 0;
padding: 0;
list-style: none;
}
.market-card__employers {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.market-card__employers li {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 3px 9px;
border: 1px solid var(--border);
border-radius: 999px;
background: var(--surface);
font-size: var(--fs-meta);
}
.market-card__employers .num {
color: var(--muted);
}
.market-card__skills li {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 4px 10px;
padding: 6px 0;
border-top: 1px solid var(--border);
}
.market-card__skills li:first-child {
border-top: 0;
}
.market-card__add {
display: inline-flex;
align-items: center;
gap: 4px;
min-block-size: 32px;
color: var(--accent-ink);
font-size: var(--fs-meta);
font-weight: 600;
text-decoration: none;
}
.market-card__add:hover {
text-decoration: underline;
}
.widen-card {
margin: 0 0 12px;
font-size: var(--fs-sm);
}
.widen-card--thin {
padding: 10px 12px;
border: 1px solid var(--info-border);
border-radius: var(--radius-lg);
background: var(--info-bg);
color: var(--info-ink);
}
.widen-card__head {
display: flex;
align-items: center;
gap: 6px;
margin: 0 0 6px;
font-weight: 600;
}
.widen-card__list {
display: flex;
flex-wrap: wrap;
gap: 6px 12px;
margin: 0;
padding: 0;
list-style: none;
}
.widen-card__action {
display: inline-flex;
align-items: center;
gap: 6px;
min-block-size: 44px;
color: var(--accent-ink);
font-weight: 600;
text-decoration: none;
}
.widen-card--thin .widen-card__action {
padding: 0 12px;
border: 1px solid var(--info-border);
border-radius: 999px;
background: var(--surface);
}
.widen-card__action:hover {
text-decoration: underline;
}
.widen-notice form {
margin: 8px 0 0;
}
.nearby-block {
margin: 16px 0;
border: 1px dashed var(--border);
border-radius: var(--radius-lg);
background: var(--surface-soft);
}
.nearby-block__head {
justify-content: flex-start;
gap: 8px;
padding: 6px 12px;
font-weight: 600;
}
.nearby-block__head > .icon:first-child {
color: var(--accent);
flex: none;
}
.nearby-block__body {
padding: 8px 12px 12px;
border-top: 1px solid var(--border);
font-size: var(--fs-sm);
}
.nearby-block__body > .meta {
margin: 0 0 8px;
}
.nearby-block__list {
margin: 0;
padding: 0;
list-style: none;
}
.nearby-row {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 4px;
padding: 10px 0;
border-top: 1px solid var(--border);
}
.nearby-row:first-child {
border-top: 0;
}
.nearby-row__title {
color: var(--text);
font-weight: 600;
text-decoration: none;
overflow-wrap: anywhere;
}
.nearby-row__title:hover {
text-decoration: underline;
}
.nearby-row__meta {
color: var(--muted);
font-size: var(--fs-meta);
}
.landing-hero {
grid-template-areas:
"copy side"
"more side"
"figs figs";
grid-template-rows: auto 1fr auto;
align-items: start;
}
#preview {
scroll-margin-block-start: 12px;
}
.landing-hero__copy { grid-area: copy; }
.landing-hero__more { grid-area: more; min-width: 0; }
.landing-hero .digest,
.landing-hero__aside { grid-area: side; min-width: 0; align-self: center; }
.landing-hero .landing-figures { grid-area: figs; }
.landing-hero__aside { display: none; }
.landing-hero--results .landing-hero__aside { display: block; align-self: start; }
.landing-hero--results .digest { display: none; }
.landing-hero__more .landing-hero__lede { margin-block-start: 0; }
@media (max-width: 860px) {
.landing-hero {
grid-template-areas: "copy" "more" "side" "figs";
grid-template-rows: none;
}
.landing-hero--results {
grid-template-areas: "copy" "side" "more" "figs";
}
}
.preview-form {
margin-block-start: 20px;
padding: 14px;
border: 1px solid var(--border-strong);
border-radius: 12px;
background: var(--surface);
box-shadow: var(--shadow-sm);
}
.preview-form__prompt {
margin: 0 0 10px;
color: var(--accent-ink);
font-size: 15.5px;
font-weight: 700;
line-height: 1.5;
}
.preview-form__fields {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 8px;
}
.preview-field--title {
grid-column: 1 / -1;
}
.preview-field {
position: relative;
display: block;
margin: 0;
}
.preview-field > .icon {
position: absolute;
inset-inline-start: 13px;
inset-block-start: 50%;
translate: 0 -50%;
color: var(--faint);
pointer-events: none;
}
.preview-field input,
.preview-field select {
min-height: 50px;
padding-inline-start: 38px;
font-size: 16px;
color: var(--text);
}
.preview-field input::placeholder {
color: var(--faint);
}
.preview-form__go {
min-height: 50px;
padding-inline: 18px;
font-size: var(--fs-body);
font-weight: 700;
white-space: nowrap;
}
.is-searching .preview-form__go .icon {
animation: radar-sweep 0.9s linear infinite;
}
@media (max-width: 560px) {
.preview-form {
padding: 12px;
}
}
.preview {
padding: 16px;
border: 1px solid var(--border);
border-radius: 12px;
background: var(--surface);
box-shadow: var(--shadow-sm);
}
.preview:focus {
outline: none;
}
.preview:focus-visible {
box-shadow: 0 0 0 3px var(--focus-ring);
}
[data-preview-slot][aria-busy="true"] .preview {
opacity: 0.55;
transition: opacity 160ms ease;
}
.preview__headline {
margin: 0;
font-size: 17px;
font-weight: 600;
line-height: 1.7;
text-wrap: pretty;
}
.preview__num {
display: inline-block;
color: var(--accent-ink);
font-size: 30px;
font-weight: 700;
line-height: 1;
vertical-align: -3px;
}
.preview__proof {
display: flex;
align-items: center;
gap: 6px;
margin: 8px 0 12px;
}
.preview__proof .icon {
flex: none;
color: var(--success);
}
.preview__cards,
.pjobs-list {
display: grid;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
overflow: hidden;
}
.preview__all {
display: inline-flex;
align-items: center;
gap: 6px;
min-block-size: 44px;
color: var(--accent-ink);
font-size: var(--fs-sm);
font-weight: 700;
text-decoration: none;
}
.preview__all:hover {
text-decoration: underline;
}
.preview__cta {
display: grid;
gap: 6px;
margin-block-start: 14px;
}
.preview__cta .meta {
margin: 0;
}
.preview__join {
min-height: 52px;
font-size: var(--fs-body);
font-weight: 700;
}
.preview--empty .preview__headline {
font-size: 16px;
}
.preview__alt-head {
margin: 0 0 6px;
font-size: var(--fs-sm);
font-weight: 700;
}
.preview__alts,
.pjobs-links {
display: grid;
gap: 6px;
margin: 0;
padding: 0;
list-style: none;
}
.pjobs-links {
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}
.preview__alts a,
.pjobs-links a {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
min-block-size: 44px;
padding: 8px 12px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface);
color: var(--text);
font-size: var(--fs-sm);
font-weight: 600;
text-decoration: none;
transition: border-color 160ms ease, background-color 160ms ease;
}
.preview__alts a:hover,
.pjobs-links a:hover {
border-color: var(--accent);
background: var(--accent-soft);
}
.preview__alt-count {
flex: none;
min-inline-size: 30px;
padding: 2px 8px;
border-radius: 999px;
background: var(--accent-soft);
color: var(--accent-ink);
font-size: var(--fs-meta);
font-weight: 700;
text-align: center;
}
@media (prefers-reduced-motion: no-preference) {
.preview {
animation: landing-rise 0.35s cubic-bezier(0.2, 0.7, 0.3, 1) backwards;
}
.preview__num {
animation: preview-count 0.5s cubic-bezier(0.2, 0.7, 0.3, 1) 0.1s backwards;
}
}
@keyframes preview-count {
from {
opacity: 0;
transform: scale(0.7);
}
}
.pjob {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: start;
gap: 4px 12px;
padding: 12px 14px;
border-block-end: 1px solid var(--border);
}
.pjob:last-child {
border-block-end: 0;
}
@media (min-width: 1100px) {
.pjobs-list {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1px;
background: var(--border);
}
.pjobs-list .pjob {
border-block-end: 0;
background: var(--surface);
}
.pjobs-list .pjob:hover {
background: linear-gradient(var(--row-hover), var(--row-hover)), var(--surface);
}
.pjobs-list .pjob:last-child:nth-child(odd) {
grid-column: 1 / -1;
}
}
.pjob .job-card__mark {
inline-size: 38px;
block-size: 38px;
border-radius: 10px;
font-size: 17px;
}
.pjob__body {
display: grid;
gap: 3px;
min-inline-size: 0;
}
.pjob__title {
margin: 0;
font-size: 15.5px;
line-height: 1.45;
overflow-wrap: anywhere;
}
.pjob__title a {
color: var(--text);
text-decoration: none;
}
.pjob__title a::after {
content: "";
position: absolute;
inset: 0;
}
.pjob {
position: relative;
transition: background-color 160ms ease;
}
.pjob:hover {
background: var(--row-hover);
}
.pjob__title a:focus-visible {
outline: none;
}
.pjob:has(.pjob__title a:focus-visible) {
box-shadow: inset 0 0 0 2px var(--focus);
}
.pjob__why {
display: flex;
align-items: flex-start;
gap: 5px;
margin: 2px 0 0;
color: var(--success-ink);
font-size: var(--fs-meta);
font-weight: 600;
}
.pjob__why .icon {
flex: none;
margin-block-start: 2px;
}
.pjob__fresh {
white-space: nowrap;
}
@media (max-width: 480px) {
.pjob {
grid-template-columns: auto minmax(0, 1fr);
}
.pjob__fresh {
grid-column: 2;
justify-self: start;
}
}
.pjobs-shell {
width: min(var(--container), calc(100vw - 32px));
margin-inline: auto;
}
.crumbs {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 4px 8px;
margin: 14px 0 4px;
color: var(--faint);
font-size: var(--fs-meta);
}
.crumbs a {
display: inline-flex;
align-items: center;
min-block-size: 32px;
color: var(--accent-ink);
font-weight: 600;
text-decoration: none;
}
.crumbs a:hover {
text-decoration: underline;
}
.pjobs-head {
margin: 6px 0 18px;
padding: 22px 20px;
border: 1px solid var(--accent-soft);
border-radius: 14px;
background:
radial-gradient(90% 140% at 100% 0%, var(--accent-soft), transparent 60%),
var(--surface);
}
.pjobs-head .eyebrow {
display: flex;
align-items: center;
gap: 8px;
margin: 0;
color: var(--accent-ink);
}
.pjobs-head h1,
.pjobs-missing h1 {
margin: 8px 0 0;
font-size: clamp(24px, 3.6vw, 34px);
line-height: 1.3;
}
.pjobs-head__lede {
max-inline-size: 60ch;
margin: 10px 0 0;
color: var(--muted);
line-height: 1.8;
}
.pjobs-head__lede .num {
color: var(--accent-ink);
font-weight: 700;
}
.pjobs-head__actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px 10px;
margin-block-start: 16px;
}
.pjobs-join {
padding-inline: 18px;
font-size: var(--fs-body);
font-weight: 700;
}
.pjobs-head__note {
display: flex;
align-items: flex-start;
gap: 6px;
margin: 12px 0 0;
}
.pjobs-shell .pager {
margin-block: 10px;
}
.pjobs-alts h2 {
margin: 0 0 10px;
font-size: 16.5px;
}
.pjobs-cta {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 14px 24px;
margin: 24px 0;
padding: 20px;
border-radius: 14px;
background: var(--accent-deep);
color: var(--on-accent);
}
.pjobs-cta h2 {
margin: 0;
color: inherit;
font-size: 19px;
}
.pjobs-cta p {
max-inline-size: 58ch;
margin: 6px 0 0;
opacity: 0.88;
line-height: 1.75;
}
.pjobs-cta .button.primary {
background: var(--surface);
border-color: var(--surface);
color: var(--accent-ink);
}
.pjobs-cta .button.primary .icon {
color: var(--accent);
}
.pjobs-more {
margin: 28px 0;
}
.pjobs-roles {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
gap: 8px;
margin: 0;
padding: 0;
list-style: none;
}
.pjobs-role {
display: grid;
gap: 2px;
min-block-size: 64px;
padding: 12px 14px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
color: var(--text);
text-decoration: none;
transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
.pjobs-role:hover {
border-color: var(--accent);
box-shadow: var(--shadow-sm);
transform: translateY(-1px);
}
.pjobs-role__name {
font-weight: 700;
}
.pjobs-role__count {
color: var(--accent-ink);
font-size: var(--fs-meta);
font-weight: 600;
}
.pjobs-role.is-quiet .pjobs-role__count {
color: var(--faint);
}
.pjobs-missing {
margin: 24px 0;
padding: 26px 20px;
border: 1px solid var(--border);
border-radius: 14px;
background: var(--surface);
}
.pjobs-missing .eyebrow {
display: flex;
align-items: center;
gap: 8px;
margin: 0;
color: var(--accent-ink);
}
.pjobs-missing .pjobs-links {
margin-block-start: 18px;
}
.pjob-page {
margin-block-start: 8px;
}
.pjob-page .job-detail__head {
grid-template-columns: auto minmax(0, 1fr);
}
@media (min-width: 1100px) {
.seeker-shell:has(> .pjob-page) {
width: min(var(--container), calc(100vw - 32px));
}
.pjob-page {
grid-template-columns: minmax(0, 1fr) minmax(320px, 380px);
grid-template-rows: auto auto auto auto 1fr;
gap: 16px 28px;
padding: 24px 26px;
}
.pjob-page > .job-detail__head {
grid-column: 1;
grid-row: 1;
}
.pjob-page > .job-facts {
grid-column: 2;
grid-row: 1 / span 2;
align-self: start;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.pjob-page > .pjob-page__actions {
grid-column: 2;
grid-row: 3;
}
.pjob-page > .pjob-like {
grid-column: 2;
grid-row: 4;
grid-template-columns: auto minmax(0, 1fr);
margin: 0;
}
.pjob-page > .pjob-like .pjob-like__go {
grid-column: 1 / -1;
}
.pjob-page > .job-detail__section {
grid-column: 1;
grid-row: 2 / -1;
max-inline-size: 78ch;
}
.pjob-page .job-detail__title {
font-size: 26px;
}
}
.pjob-page__actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px 10px;
}
.pjob-page__actions .apply-btn {
flex: 1 1 220px;
min-height: 50px;
font-size: var(--fs-body);
font-weight: 700;
}
.pjob-page__related a {
display: inline-flex;
align-items: center;
gap: 6px;
min-block-size: 44px;
color: var(--accent-ink);
font-weight: 700;
text-decoration: none;
}
.share-btn {
display: none;
}
.has-js .share-btn {
display: inline-flex;
}
.share-status:empty {
display: none;
}
@media (max-width: 560px) {
.pjobs-shell {
width: min(var(--container), calc(100vw - 24px));
}
.pjobs-head {
padding: 18px 16px;
}
.pjobs-head__actions .pjobs-join {
flex: 1 1 100%;
}
.pjobs-cta {
padding: 18px 16px;
}
.pjobs-cta .button {
flex: 1 1 100%;
}
}
.landing-hero__map {
margin: 8px 0 0;
animation-delay: 0.26s;
}
.jmap-filter {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
gap: 8px 10px;
margin: 0 0 14px;
}
.jmap-filter__field {
display: grid;
flex: 1 1 220px;
gap: 4px;
}
.jmap-filter__label {
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
}
.jmap-filter select,
.jmap-filter .button {
min-block-size: 44px;
}
.jmap {
display: grid;
grid-template-columns: minmax(0, 1fr);
gap: 12px;
align-items: start;
}
.jmap__figure {
min-width: 0;
margin: 0;
padding: 8px;
border: 1px solid var(--border);
border-radius: 16px;
background: var(--surface);
}
.jmap__svg {
display: block;
inline-size: 100%;
block-size: auto;
aspect-ratio: 1000 / 827;
max-block-size: min(78vh, 680px);
-webkit-tap-highlight-color: transparent;
}
.jmap__svg:focus,
.jmap__svg a:focus {
outline: none;
}
.jmap__land {
fill: var(--accent-soft);
stroke: var(--border-strong);
stroke-width: 1.5;
stroke-linejoin: round;
}
.jmap__hit {
fill: transparent;
}
.jmap__disc {
fill: var(--accent);
fill-opacity: 0.8;
stroke: var(--surface);
stroke-width: 2;
transition: fill-opacity 160ms ease;
}
.jmap__city:hover .jmap__disc {
fill-opacity: 1;
}
.jmap__city.is-selected .jmap__disc {
fill: var(--accent-strong);
fill-opacity: 1;
stroke: var(--text);
stroke-width: 4;
}
.jmap__empty {
fill: var(--neutral);
fill-opacity: 0.5;
pointer-events: none;
}
.jmap__empty.is-selected {
stroke: var(--text);
stroke-width: 3;
}
.jmap__labels text {
fill: var(--text);
font-weight: 700;
paint-order: stroke;
stroke: var(--surface);
stroke-width: 5;
stroke-linejoin: round;
pointer-events: none;
}
.jmap__labels text.is-selected .jmap__label-name {
text-decoration: underline;
}
.jmap__label-count {
fill: var(--accent-ink);
font-weight: 600;
}
.jmap__labels--narrow {
display: none;
}
@media (max-width: 600px) {
.jmap__labels--wide {
display: none;
}
.jmap__labels--narrow {
display: inline;
}
}
.jmap__remote {
margin: 8px 0 0;
}
.jmap__chip {
display: inline-flex;
align-items: center;
gap: 8px;
min-block-size: 44px;
padding: 6px 12px;
border: 1px solid var(--border);
border-radius: 999px;
background: var(--surface-soft);
color: var(--text);
font-size: var(--fs-sm);
font-weight: 600;
text-decoration: none;
}
.jmap__chip:hover,
.jmap__chip.is-selected {
border-color: var(--accent);
background: var(--accent-soft);
}
.jmap__panel {
min-width: 0;
padding: 14px;
border: 1px solid var(--border);
border-radius: 16px;
background: var(--surface);
}
.jmap__panel h2 {
margin: 0;
font-size: var(--fs-h2);
}
.jmap__panel-count {
margin: 6px 0 12px;
color: var(--muted);
}
.jmap__panel-count .num {
color: var(--accent-ink);
}
.jmap__panel-sub {
margin: 0 0 8px;
color: var(--muted);
font-size: var(--fs-sm);
line-height: 1.7;
}
.jmap__go {
inline-size: 100%;
min-block-size: 48px;
font-weight: 700;
}
.jmap__panel-back {
margin: 10px 0 0;
}
.jmap__rank a[aria-current] {
border-color: var(--accent);
background: var(--accent-soft);
}
.jmap__cities-wrap[hidden] {
display: none;
}
.jmap__cities-head {
margin: 0 0 8px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 700;
}
.jmap__cities {
display: grid;
gap: 2px;
margin: 0;
padding: 0;
list-style: none;
}
.jmap__cities li[hidden] {
display: none;
}
.jmap__place {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
inline-size: 100%;
min-block-size: 38px;
padding: 6px 10px;
border: 1px solid transparent;
border-radius: 9px;
background:
linear-gradient(to left, var(--accent-soft) calc(var(--share, 0) * 100%), transparent 0)
no-repeat;
color: var(--text);
font: inherit;
font-size: var(--fs-sm);
font-weight: 600;
text-align: start;
text-decoration: none;
cursor: pointer;
}
[dir="ltr"] .jmap__place {
background-image: linear-gradient(to right, var(--accent-soft) calc(var(--share, 0) * 100%), transparent 0);
}
.jmap__place:hover {
border-color: var(--border-hover);
box-shadow: none;
transform: none;
}
.jmap__place[aria-current] {
border-color: var(--accent);
}
.jmap__place-count {
color: var(--accent-ink);
font-size: var(--fs-meta);
font-weight: 700;
}
.jmap__sheet[hidden] {
display: none;
}
.jmap__sheet-grip {
display: none;
}
.jmap__sheet-head {
position: relative;
padding-inline-end: 44px;
}
.jmap__sheet-head h3 {
margin: 0;
color: var(--text);
font-size: var(--fs-h2);
line-height: 1.35;
}
.jmap__sheet-head h3:focus {
outline: none;
}
.jmap__sheet-head h3:focus-visible {
outline: 3px solid var(--focus-ring);
outline-offset: 2px;
border-radius: 4px;
}
.jmap__sheet-count {
margin: 2px 0 0;
color: var(--muted);
font-size: var(--fs-sm);
}
.jmap__sheet-count b {
color: var(--accent-ink);
}
.jmap__sheet-close {
position: absolute;
inset-block-start: -6px;
inset-inline-end: -8px;
display: grid;
place-items: center;
inline-size: 40px;
block-size: 40px;
min-height: 0;
padding: 0;
border: 0;
border-radius: 50%;
background: transparent;
color: var(--muted);
cursor: pointer;
}
.jmap__sheet-close:hover {
background: var(--surface-hover);
color: var(--text);
box-shadow: none;
transform: none;
}
.jmap__sheet-sub {
margin: 14px 0 6px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 700;
}
.jmap__sheet-list {
display: grid;
gap: 6px;
margin: 0;
padding: 0;
list-style: none;
}
.jmap__sheet-job {
display: grid;
gap: 4px;
padding: 9px 12px;
border: 1px solid var(--border);
border-radius: 10px;
background: var(--surface-soft);
color: var(--text);
text-decoration: none;
transition: border-color 160ms ease, background-color 160ms ease;
}
.jmap__sheet-job:hover {
border-color: var(--accent);
background: var(--accent-soft);
}
.jmap__sheet-list li.is-current .jmap__sheet-job {
border-color: var(--accent);
background: var(--accent-soft);
box-shadow: inset -3px 0 0 var(--accent);
}
[dir="ltr"] .jmap__sheet-list li.is-current .jmap__sheet-job {
box-shadow: inset 3px 0 0 var(--accent);
}
.jmap__sheet-find {
position: relative;
display: block;
margin-block-start: 12px;
}
.jmap__sheet-find[hidden] {
display: none;
}
.jmap__sheet-find .icon {
position: absolute;
inset-block-start: 50%;
inset-inline-start: 12px;
color: var(--muted);
transform: translateY(-50%);
pointer-events: none;
}
.jmap__sheet-find input {
inline-size: 100%;
min-block-size: 42px;
padding-inline-start: 36px;
font-size: var(--fs-sm);
}
.jmap__sheet-more {
inline-size: 100%;
margin-block-start: 8px;
font-weight: 700;
}
.jmap__sheet-more[hidden] {
display: none;
}
.jmap__sheet-job-title {
display: -webkit-box;
overflow: hidden;
font-size: var(--fs-sm);
font-weight: 700;
line-height: 1.45;
overflow-wrap: anywhere;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.jmap__sheet-job-meta {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 4px 8px;
color: var(--muted);
font-size: var(--fs-meta);
}
.jmap__sheet-roles[hidden] {
display: none;
}
.jmap__sheet-actions {
display: grid;
gap: 8px;
margin-block-start: 14px;
}
.jmap__sheet-actions .button {
inline-size: 100%;
}
.jmap__sheet-all[hidden] {
display: none;
}
.jmap__stage {
position: relative;
}
.jmap.is-live .jmap__svg {
touch-action: none;
cursor: grab;
user-select: none;
-webkit-user-select: none;
}
.jmap.is-live .jmap__svg:active {
cursor: grabbing;
}
.jmap.is-live:not(.is-zoomed) .jmap__svg {
cursor: pointer;
}
.jmap.is-live.is-dotmode .jmap__svg {
cursor: pointer;
}
.jmap--compact.is-live:not(.is-zoomed) .jmap__svg {
touch-action: pan-y;
}
.jmap.is-live .jmap__disc,
.jmap.is-live .jmap__empty,
.jmap.is-live .jmap__labels--wide,
.jmap.is-live .jmap__labels--narrow {
display: none;
}
.jmap.is-live.is-dotmode .jmap__city,
.jmap.is-live.is-dotmode .jmap__labels--live {
display: none;
}
.jmap.is-live .jmap__labels--live text {
stroke-width: inherit;
pointer-events: auto;
cursor: pointer;
}
.jmap.is-live .jmap__labels--live text:hover .jmap__label-name {
fill: var(--accent-ink);
}
.jmap__dots path {
fill: none;
stroke-linecap: round;
pointer-events: none;
}
.jmap__dots-on {
stroke: var(--accent);
stroke-opacity: 0.8;
}
.jmap__dots-fresh {
stroke: var(--warning);
}
.jmap.is-dense .jmap__dots-fresh {
stroke: var(--accent);
stroke-opacity: 0.8;
}
.jmap__dots-off {
stroke: var(--neutral);
stroke-opacity: 0.14;
}
.jmap__dots-hover {
stroke: var(--accent-ink);
filter: drop-shadow(0 0 3px var(--accent));
}
.jmap__dots-halo {
stroke: var(--surface);
}
.jmap__dots-sel {
stroke: var(--text);
}
.jmap__ring {
fill: var(--accent);
fill-opacity: 0.08;
stroke: var(--accent-strong);
stroke-width: 2px;
stroke-dasharray: 5 4;
pointer-events: none;
}
.jmap.is-live.is-overcity:not(.is-dotmode) .jmap__svg {
cursor: pointer;
}
.jmap__zoom {
position: absolute;
bottom: 8px;
left: 8px;
display: grid;
gap: 4px;
}
.jmap__zoom[hidden] {
display: none;
}
.jmap__zoom-btn {
display: grid;
place-items: center;
inline-size: 40px;
block-size: 40px;
min-height: 0;
padding: 0;
border: 1px solid var(--border-strong);
border-radius: 10px;
background: var(--surface);
color: var(--text);
font-size: 20px;
line-height: 1;
cursor: pointer;
}
.jmap__zoom-btn:hover {
border-color: var(--accent);
background: var(--accent-soft);
transform: none;
}
.jmap__focus {
position: absolute;
z-index: 2;
top: 8px;
right: 8px;
display: flex;
align-items: center;
gap: 2px;
max-inline-size: calc(100% - 16px);
padding: 3px;
border: 1px solid var(--border-strong);
border-radius: 999px;
background: var(--surface-glass);
box-shadow: var(--shadow-sm);
backdrop-filter: blur(8px);
}
.jmap__focus[hidden] {
display: none;
}
.jmap__focus-city {
display: inline-flex;
align-items: center;
gap: 8px;
min-width: 0;
min-height: 0;
block-size: 36px;
padding: 0 12px;
border: 0;
border-radius: 999px;
background: none;
color: var(--text);
font: inherit;
font-size: var(--fs-sm);
font-weight: 700;
white-space: nowrap;
cursor: pointer;
}
.jmap__focus-city:hover {
background: var(--surface-hover);
box-shadow: none;
transform: none;
}
.jmap__focus-count {
color: var(--accent-ink);
font-size: var(--fs-meta);
}
.jmap__focus-count[hidden] {
display: none;
}
.jmap__focus-close {
display: grid;
flex: none;
place-items: center;
inline-size: 36px;
block-size: 36px;
min-height: 0;
padding: 0;
border: 0;
border-radius: 50%;
background: var(--surface-sunken);
color: var(--text);
cursor: pointer;
}
.jmap__focus-close:hover {
background: var(--accent-soft);
box-shadow: none;
transform: none;
}
.jmap__hint {
position: absolute;
bottom: 10px;
left: 50%;
z-index: 1;
max-inline-size: calc(100% - 120px);
margin: 0;
padding: 5px 12px;
border-radius: 999px;
background: var(--surface-glass);
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
transform: translateX(-50%);
pointer-events: none;
}
.jmap__hint[hidden] {
display: none;
}
.jmap__tip {
position: absolute;
z-index: 2;
display: grid;
gap: 2px;
max-inline-size: 260px;
padding: 7px 10px;
border: 1px solid var(--border-strong);
border-radius: 8px;
background: var(--surface);
color: var(--text);
font-size: var(--fs-sm);
line-height: 1.5;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.14);
transform: translate(-50%, calc(-100% - 12px));
pointer-events: none;
}
.jmap__tip[hidden] {
display: none;
}
.jmap__tip span {
color: var(--muted);
font-size: var(--fs-meta);
}
.jmap__foot {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 4px 14px;
margin: 8px 4px 0;
color: var(--muted);
font-size: var(--fs-meta);
}
.jmap__legend,
.jmap__note {
margin: 0;
}
.jmap__legend {
display: inline-flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
}
.jmap__legend[hidden],
.jmap__note[hidden] {
display: none;
}
.jmap__key {
display: inline-block;
inline-size: 9px;
block-size: 9px;
border-radius: 50%;
background: var(--accent);
}
.jmap__key + .jmap__key,
.jmap__legend .jmap__key:not(:first-child) {
margin-inline-start: 8px;
}
.jmap__key--new {
background: var(--warning);
}
.jmap__status {
margin: -6px 0 12px;
color: var(--muted);
font-size: var(--fs-sm);
font-weight: 600;
}
.jmap-filter.is-live .button {
display: none;
}
.jmap-filter__search[hidden] {
display: none;
}
.jmap-filter__search input {
min-block-size: 44px;
}
.jmap-fields {
display: flex;
flex-wrap: wrap;
gap: 6px;
min-width: 0;
}
.jmap-fields[hidden] {
display: none;
}
.jmap-chip {
display: inline-flex;
flex: none;
align-items: center;
gap: 7px;
min-height: 40px;
padding: 6px 14px;
border: 1px solid var(--border);
border-radius: 999px;
background: var(--surface);
color: var(--text);
font: inherit;
font-size: var(--fs-sm);
font-weight: 600;
white-space: nowrap;
cursor: pointer;
}
.jmap-chip:hover {
border-color: var(--accent);
box-shadow: none;
transform: none;
}
.jmap-chip__count {
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 700;
}
.jmap-chip[aria-pressed="true"] {
border-color: var(--accent-strong);
background: var(--accent-strong);
color: var(--on-accent);
}
.jmap-chip[aria-pressed="true"] .jmap-chip__count {
color: inherit;
opacity: 0.85;
}
.jmap__job {
position: absolute;
z-index: 3;
inset-inline: 8px;
inset-block-end: 8px;
display: grid;
gap: 6px;
max-inline-size: 400px;
padding: 14px;
border: 1px solid var(--border-strong);
border-radius: 12px;
background: var(--surface);
box-shadow: 0 6px 22px rgba(0, 0, 0, 0.18);
}
.jmap__job[hidden] {
display: none;
}
.jmap__job-close {
position: absolute;
inset-block-start: 4px;
inset-inline-end: 4px;
display: grid;
place-items: center;
inline-size: 40px;
block-size: 40px;
min-height: 0;
padding: 0;
border: 0;
border-radius: 50%;
background: transparent;
color: var(--muted);
cursor: pointer;
}
.jmap__job-close:hover {
background: var(--surface-hover);
color: var(--text);
box-shadow: none;
transform: none;
}
.jmap__job-meta {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
margin: 0;
padding-inline-end: 36px;
color: var(--muted);
font-size: var(--fs-meta);
}
.jmap__job-new {
padding: 1px 8px;
border: 1px solid var(--warning-border);
border-radius: 999px;
background: var(--warning-bg);
color: var(--warning-ink);
font-size: var(--fs-micro);
font-weight: 700;
}
.jmap__job-new[hidden] {
display: none;
}
.jmap__job-title {
margin: 0;
font-size: 16px;
line-height: 1.5;
overflow-wrap: anywhere;
}
.jmap__job-company,
.jmap__job-field {
margin: 0;
color: var(--muted);
font-size: var(--fs-sm);
}
.jmap__job-company {
color: var(--text);
font-weight: 600;
}
.jmap__job-field[hidden] {
display: none;
}
.jmap__job .jmap__go {
margin-block-start: 6px;
}
.jmap__job-score {
padding: 1px 8px;
border-radius: 999px;
background: var(--accent-soft);
color: var(--accent-ink);
font-weight: 700;
}
.jmap__job-score[hidden] {
display: none;
}
@media (min-width: 900px) {
.jmap {
grid-template-columns: minmax(0, 1fr) clamp(300px, 27vw, 380px);
gap: 12px 18px;
}
.jmap-fields {
grid-column: 1 / -1;
}
.jmap__svg {
max-block-size: min(84vh, 860px);
}
.jmap.is-live .jmap__panel {
display: flex;
flex-direction: column;
align-self: stretch;
contain: size;
overflow-y: auto;
overscroll-behavior: contain;
}
.jmap.is-live .jmap__panel > .jmap__sheet:not(.is-floating) {
display: flex;
flex: 1 1 auto;
flex-direction: column;
min-block-size: 0;
}
.jmap.is-live .jmap__panel > .jmap__sheet[hidden] {
display: none;
}
.jmap.is-live.has-sheet .jmap__panel {
overflow: hidden;
}
.jmap__panel .jmap__sheet-body {
flex: 1 1 auto;
min-block-size: 0;
margin-inline: -6px;
padding-inline: 6px;
overflow-y: auto;
overscroll-behavior: contain;
scrollbar-width: thin;
}
.jmap__panel .jmap__sheet-actions {
margin-block-start: 10px;
padding-block-start: 10px;
border-block-start: 1px solid var(--border);
}
}
@media (max-width: 899px) {
.jmap__figure {
padding: 4px;
}
.jmap__svg {
max-block-size: 54vh;
}
.jmap-fields {
flex-wrap: nowrap;
padding-block: 2px 4px;
overflow-x: auto;
scrollbar-width: none;
overscroll-behavior-x: contain;
mask-image: linear-gradient(to left, #000 calc(100% - 32px), transparent);
}
.jmap__cities {
mask-image: linear-gradient(to left, #000 calc(100% - 32px), transparent);
}
.jmap-fields::-webkit-scrollbar,
.jmap__cities::-webkit-scrollbar {
display: none;
}
.jmap.is-live .jmap__panel,
.jmap--compact .jmap__panel {
padding: 0;
border: 0;
background: none;
}
.jmap__cities-head {
display: none;
}
.jmap__cities {
display: flex;
gap: 6px;
padding-block-end: 4px;
overflow-x: auto;
scrollbar-width: none;
overscroll-behavior-x: contain;
}
.jmap__cities li {
flex: none;
}
.jmap__place {
gap: 8px;
min-block-size: 40px;
padding: 6px 13px;
border-color: var(--border);
border-radius: 999px;
background: var(--surface);
white-space: nowrap;
}
.jmap__place[aria-current] {
border-color: var(--accent);
background: var(--accent-soft);
}
.jmap__zoom {
bottom: 6px;
left: 6px;
}
.jmap:not(.is-zoomed) .jmap__zoom {
display: none;
}
.jmap__zoom-btn {
inline-size: 38px;
block-size: 38px;
}
.jmap__focus {
top: 6px;
right: 6px;
}
.jmap__job {
inset-inline: 6px;
inset-block-end: 6px;
max-inline-size: none;
}
}
.jmap__sheet.is-floating {
position: fixed;
z-index: 70;
inset-inline: 0;
bottom: 0;
max-block-size: min(56vh, 470px);
padding: 8px 16px calc(16px + env(safe-area-inset-bottom));
overflow-y: auto;
overscroll-behavior: contain;
border-block-start: 1px solid var(--border-strong);
border-radius: 18px 18px 0 0;
background: var(--surface);
box-shadow: 0 -14px 36px rgba(0, 0, 0, 0.2);
}
@media (min-width: 600px) {
.jmap__sheet.is-floating {
max-block-size: min(42vh, 420px);
max-inline-size: 560px;
margin-inline: auto;
border-inline: 1px solid var(--border-strong);
}
}
.jmap__sheet.is-floating .jmap__sheet-find {
position: sticky;
z-index: 1;
top: -8px;
margin-inline: -16px;
padding: 8px 16px;
background: var(--surface);
}
.jmap__sheet.is-floating .jmap__sheet-find .icon {
inset-inline-start: 28px;
}
.jmap__sheet.is-floating .jmap__sheet-grip {
display: block;
inline-size: 40px;
block-size: 4px;
margin: 0 auto 10px;
border-radius: 999px;
background: var(--border-strong);
}
.jmap__sheet.is-floating .jmap__sheet-actions {
position: sticky;
bottom: calc(-16px - env(safe-area-inset-bottom));
grid-template-columns: 1fr 1fr;
margin-inline: -16px;
padding: 10px 16px calc(16px + env(safe-area-inset-bottom));
margin-block-end: calc(-16px - env(safe-area-inset-bottom));
border-block-start: 1px solid var(--border);
background: var(--surface);
}
.jmap__sheet.is-floating .jmap__sheet-all[hidden] + .jmap__sheet-back {
grid-column: 1 / -1;
}
@media (prefers-reduced-motion: no-preference) {
.jmap__sheet.is-floating:not([hidden]) {
animation: jmap-sheet-in 240ms cubic-bezier(0.2, 0.8, 0.2, 1);
}
.jmap-chip,
.jmap__place {
transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease;
}
}
@keyframes jmap-sheet-in {
from {
opacity: 0;
transform: translateY(28px);
}
}
.landing-map__head {
margin-block-end: 12px;
}
.landing-map__total {
color: var(--accent-ink);
font-weight: 700;
}
.landing-map__actions {
display: flex;
flex-wrap: wrap;
gap: 10px 12px;
margin-block-start: 14px;
}
.landing-map__actions .button {
min-block-size: 48px;
}
.seeker-map {
margin-block: 0 16px;
}
.seeker-map > summary {
display: flex;
align-items: center;
gap: 8px;
min-block-size: 44px;
cursor: pointer;
font-weight: 700;
}
.seeker-map__body {
margin-block-start: 10px;
}
.seeker-map__note {
margin: 8px 0 0;
color: var(--muted);
font-size: var(--fs-meta);
}
.admin-map__table td.num,
.admin-map__table th.num {
text-align: end;
}
.admin-map .jmap {
margin-block: 14px 20px;
}
.landing-hero {
display: block;
margin: 4px 0 0;
padding: 30px 28px 26px;
}
.landing-hero__copy,
.landing-hero__aside,
.landing-hero__cta {
max-inline-size: 780px;
margin-inline: auto;
}
.landing-hero h1 {
font-size: clamp(28px, 4.2vw, 42px);
}
.landing-hero__lede {
max-inline-size: 56ch;
margin-block-start: 10px;
color: var(--muted);
}
.landing-hero .preview-form {
margin-block-start: 18px;
}
.landing-hero--results .landing-hero__aside {
margin-block-start: 16px;
}
.preview-field__label {
display: block;
margin-block-end: 4px;
color: var(--muted);
font-size: var(--fs-meta);
font-weight: 600;
}
.preview-field__box {
position: relative;
display: block;
}
.preview-field input[type="search"]::-webkit-search-cancel-button,
.preview-field input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
appearance: none;
}
.preview-field input:placeholder-shown,
.join-panel input[dir="auto"]:placeholder-shown,
.join-panel textarea[dir="auto"]:placeholder-shown {
direction: rtl;
}
.preview-field__box > .icon {
position: absolute;
inset-inline-start: 13px;
inset-block-start: 50%;
translate: 0 -50%;
color: var(--faint);
pointer-events: none;
}
.preview-form__fields {
align-items: end;
}
@media (max-width: 380px) {
.preview-form__fields {
grid-template-columns: minmax(0, 1fr);
}
}
@media (min-width: 720px) {
.preview-form__fields {
grid-template-columns: minmax(0, 1fr) minmax(150px, 190px) auto;
}
.preview-field--title {
grid-column: auto;
}
}
.landing-hero__cta {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10px 16px;
margin-block-start: 18px;
}
.landing-hero__cta .landing-hero__reassure {
margin: 0;
}
.landing-hero--results .landing-hero__cta {
display: none;
}
.landing-shell .section.landing-block {
margin-block-start: 36px;
}
.landing-block .landing-h2 {
margin-block-end: 0;
}
.landing-block .landing-note {
max-inline-size: 60ch;
margin-block-start: 8px;
}
.landing-block .landing-steps {
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 14px 22px;
margin-block-start: 14px;
}
.landing-block .landing-steps p {
margin-block-start: 3px;
}
.landing-example {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 470px);
align-items: center;
gap: 14px 40px;
}
.landing-example .digest {
min-width: 0;
}
.digest__line--note {
color: var(--muted);
font-size: var(--fs-micro);
}
.landing-block .landing-why {
margin: 14px 0 0;
padding: 0;
gap: 10px;
list-style: none;
}
.landing-why li {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 10px 14px;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface);
color: var(--text);
font-size: var(--fs-sm);
line-height: 1.7;
}
.landing-why li > .icon {
flex: none;
margin-block-start: 3px;
color: var(--accent);
}
.landing-block .landing-figures {
padding: 16px 20px;
border: 1px solid var(--border);
border-radius: 14px;
background: var(--surface);
}
.landing-block .landing-figures dd {
font-size: 22px;
}
.landing-block .faq {
gap: 8px;
margin-block-start: 14px;
}
.landing-block .faq summary {
display: flex;
align-items: center;
min-block-size: 48px;
padding: 10px 16px;
}
.landing-block .faq p {
max-inline-size: 65ch;
margin: 0 16px 14px;
}
.landing-shell .landing-close {
margin-block-start: 36px;
padding: 26px 20px;
}
.landing-close p {
margin-block-end: 16px;
}
@media (max-width: 720px) {
.landing-example {
grid-template-columns: minmax(0, 1fr);
}
}
@media (max-width: 620px) {
.landing-hero__cta {
display: none;
}
.landing-shell .section.landing-block,
.landing-shell .landing-close {
margin-block-start: 28px;
}
.landing-block .landing-steps {
gap: 10px;
}
}
@media (max-width: 560px) {
.landing-hero {
padding: 22px 16px 18px;
}
.landing-hero .preview-form {
margin-block-start: 14px;
}
}
@media (max-width: 860px) {
.topbar--public:not(.topbar--seeker) {
display: flex;
flex-wrap: nowrap;
gap: 10px;
}
.topbar--public:not(.topbar--seeker) .topbar-tools {
width: auto;
}
}
@media (max-width: 560px) {
.landing-why li {
padding: 6px 2px;
border: 0;
background: none;
}
.landing-block .landing-why {
gap: 2px;
}
.landing-example .digest__bubble {
margin: 8px;
padding: 10px 12px;
}
}
.install-offer .install-card__sub {
display: none;
}
.install-offer > .install-card {
margin-block: 20px 16px;
}
.topbar--public a.topbar-cta {
background: var(--accent-strong);
color: var(--on-accent);
}
.topbar--public a.topbar-cta:hover {
background: var(--accent-deep);
color: var(--on-accent);
}
.join-lede {
margin-block-start: 6px;
}
.join-intro {
margin: 0 0 14px;
}
.join-after {
margin-block-start: 10px;
}
.install-offer > .install-card {
margin-block: 12px 0;
}
.install-card__escape[hidden] {
display: none;
}
.install-card__escape {
display: flex;
align-items: flex-start;
gap: 8px;
margin: 10px 0 0;
padding: 8px 10px;
border-radius: var(--radius-md);
background: var(--warning-bg);
color: var(--warning-ink);
font-size: var(--fs-sm);
line-height: var(--lh-body);
}
.install-card__escape .icon {
flex: 0 0 auto;
margin-block-start: 0.2em;
}
.offline {
display: grid;
justify-items: center;
gap: 6px;
max-inline-size: 34rem;
margin: clamp(28px, 8vh, 72px) auto 40px;
text-align: center;
}
.offline h1 {
margin: 4px 0 0;
font-size: var(--fs-h2);
line-height: var(--lh-tight);
}
.offline__radar {
position: relative;
display: grid;
place-items: center;
inline-size: 132px;
block-size: 132px;
margin-block-end: 14px;
border: 1px solid var(--border-strong);
border-radius: 50%;
background: radial-gradient(circle, var(--accent-soft) 0%, transparent 70%);
overflow: hidden;
}
.offline__sweep {
position: absolute;
inset: -10%;
background: conic-gradient(from 0deg, var(--accent) 0deg, transparent 80deg);
opacity: 0.22;
animation: radar-sweep 7s linear infinite;
}
.offline__ring {
position: absolute;
border: 1px dashed var(--border-strong);
border-radius: 50%;
}
.offline__ring--mid {
inset: 22%;
}
.offline__ring--inner {
inset: 38%;
border-style: solid;
}
.offline__core {
position: relative;
display: inline-grid;
place-items: center;
color: var(--muted);
}
.offline__lede {
margin: 4px 0 0;
color: var(--muted);
font-size: var(--fs-body);
line-height: var(--lh-body);
}
.offline__actions {
margin: 14px 0 0;
}
.offline__tips {
margin: 18px 0 0;
padding: 12px 16px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface-soft);
color: var(--muted);
font-size: var(--fs-sm);
line-height: 1.8;
list-style: none;
text-align: start;
}
@media (prefers-reduced-motion: reduce) {
.offline__sweep {
animation: none;
}
}
.settings-device__row {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 10px 16px;
margin-block-start: 10px;
}
.settings-device__row .meta {
flex: 1 1 16rem;
margin: 0;
}
@media (display-mode: standalone) {
body {
padding-block-start: env(safe-area-inset-top, 0px);
padding-left: env(safe-area-inset-left, 0px);
padding-right: env(safe-area-inset-right, 0px);
}
.shell {
max-width: 100%;
}
.bottom-nav {
padding-left: max(6px, env(safe-area-inset-left, 0px));
padding-right: max(6px, env(safe-area-inset-right, 0px));
}
.bottom-nav,
.topbar .brand {
-webkit-touch-callout: none;
user-select: none;
}
}
.jmap__join {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 10px 12px;
margin-block-start: 12px;
padding: 12px 14px;
border: 1px solid var(--success-border);
border-radius: 12px;
background:
linear-gradient(120deg, var(--accent-soft), transparent 85%),
var(--surface);
color: var(--text);
text-decoration: none;
transition: border-color 160ms ease, box-shadow 160ms ease;
}
.jmap__join[hidden] {
display: none;
}
.jmap__join:hover {
border-color: var(--accent);
box-shadow: var(--shadow-sm);
}
.jmap__join:focus-visible {
outline: 3px solid var(--focus-ring);
outline-offset: 2px;
}
.jmap__join-mark {
display: grid;
place-items: center;
inline-size: 34px;
block-size: 34px;
border-radius: 50%;
background: var(--accent-strong);
color: var(--on-accent);
}
.jmap__join-mark .icon {
color: inherit;
}
.jmap__join-text {
display: grid;
gap: 2px;
min-width: 0;
}
.jmap__join-text b {
font-size: var(--fs-sm);
line-height: 1.5;
}
.jmap__join-text small {
color: var(--accent-ink);
font-size: var(--fs-meta);
font-weight: 600;
}
.jmap__join-go {
display: inline-flex;
align-items: center;
gap: 4px;
color: var(--accent-ink);
font-size: 20px;
}
.jmap__join-go .icon {
color: inherit;
}
.jmap__job-join {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
min-block-size: 40px;
border-radius: var(--radius-md);
color: var(--accent-ink);
font-size: var(--fs-sm);
text-decoration: none;
}
.jmap__job-join:hover {
background: var(--accent-soft);
}
.jmap__job-join .icon {
color: var(--accent);
}
.pjob-like {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 10px 14px;
margin-block: 14px 4px;
padding: 14px 16px;
border: 1px solid var(--border);
border-inline-start: 3px solid var(--accent);
border-radius: 12px;
background: var(--surface-soft);
}
.pjob-like__mark {
display: grid;
place-items: center;
inline-size: 36px;
block-size: 36px;
border-radius: 50%;
background: var(--accent-soft);
color: var(--accent-ink);
}
.pjob-like__mark .icon {
color: inherit;
}
.pjob-like__head {
margin: 0;
color: var(--text);
font-size: var(--fs-body);
font-weight: 700;
line-height: 1.5;
}
.pjob-like__head .num {
color: var(--accent-ink);
}
.pjob-like__sub {
margin: 2px 0 0;
color: var(--muted);
font-size: var(--fs-sm);
}
.pjob-like__go {
border-color: var(--accent);
color: var(--accent-ink);
font-weight: 700;
}
.pjob-like__go .icon {
color: var(--accent);
}
@media (max-width: 560px) {
.pjob-like {
grid-template-columns: auto minmax(0, 1fr);
}
.pjob-like__go {
grid-column: 1 / -1;
}
}
.join-carried {
display: flex;
align-items: flex-start;
gap: 8px;
margin: 0 0 14px;
padding: 10px 12px;
border: 1px solid var(--success-border);
border-radius: var(--radius-md);
background: var(--success-bg);
color: var(--success-ink);
font-size: var(--fs-sm);
line-height: 1.7;
}
.join-carried .icon {
flex: none;
margin-block-start: 4px;
color: var(--success);
}
@media (max-width: 620px) {
.landing-sticky {
transition: transform 220ms ease, opacity 220ms ease, visibility 0s linear 0s;
}
.landing-sticky.is-tucked {
visibility: hidden;
opacity: 0;
transform: translateY(100%);
transition: transform 220ms ease, opacity 220ms ease, visibility 0s linear 220ms;
}
}
.join-nudge {
position: fixed;
z-index: 60;
inset-inline: 0;
bottom: 0;
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 10px 10px;
padding: 12px 14px calc(12px + env(safe-area-inset-bottom));
border-block-start: 1px solid var(--border-strong);
background: var(--surface);
box-shadow: 0 -10px 30px rgba(0, 0, 0, 0.14);
color: var(--text);
}
.join-nudge[hidden] {
display: none;
}
.join-nudge.is-under-sheet {
visibility: hidden;
}
.join-nudge__mark {
display: grid;
place-items: center;
inline-size: 32px;
block-size: 32px;
border-radius: 50%;
background: var(--accent-soft);
color: var(--accent-ink);
}
.join-nudge__mark .icon {
color: inherit;
}
.join-nudge__text {
margin: 0;
font-size: var(--fs-sm);
font-weight: 600;
line-height: 1.6;
}
.join-nudge__go {
grid-column: 1 / -1;
grid-row: 2;
font-weight: 700;
}
.join-nudge__close {
display: grid;
place-items: center;
inline-size: 40px;
block-size: 40px;
min-height: 0;
padding: 0;
border: 0;
border-radius: 50%;
background: transparent;
color: var(--muted);
}
.join-nudge__close:hover {
background: var(--surface-hover);
color: var(--text);
box-shadow: none;
transform: none;
}
@media (min-width: 621px) {
.join-nudge {
inset-inline: auto 20px;
bottom: 20px;
max-inline-size: 390px;
padding: 14px 14px 14px 10px;
border: 1px solid var(--border-strong);
border-radius: 14px;
box-shadow: var(--shadow-md);
}
}
@media (prefers-reduced-motion: no-preference) {
.join-nudge:not([hidden]) {
animation: join-nudge-in 260ms cubic-bezier(0.2, 0.8, 0.2, 1);
}
}
@keyframes join-nudge-in {
from {
opacity: 0;
transform: translateY(16px);
}
}
.exit-dialog {
inline-size: min(440px, calc(100vw - 32px));
max-block-size: calc(100vh - 32px);
padding: 0;
border: 1px solid var(--border-strong);
border-radius: 16px;
background: var(--surface);
box-shadow: var(--shadow-md);
color: var(--text);
}
.exit-dialog::backdrop {
background: rgba(8, 20, 16, 0.45);
backdrop-filter: blur(2px);
}
.exit-dialog__body {
position: relative;
display: grid;
justify-items: start;
gap: 10px;
padding: 28px 26px 24px;
background: radial-gradient(120% 70% at 100% 0%, var(--accent-soft), transparent 60%);
}
.exit-dialog__close {
position: absolute;
inset-block-start: 10px;
inset-inline-end: 10px;
display: grid;
place-items: center;
inline-size: 40px;
block-size: 40px;
min-height: 0;
padding: 0;
border: 0;
border-radius: 50%;
background: transparent;
color: var(--muted);
}
.exit-dialog__close:hover {
background: var(--surface-hover);
color: var(--text);
box-shadow: none;
transform: none;
}
.exit-dialog__mark {
display: grid;
place-items: center;
inline-size: 44px;
block-size: 44px;
border-radius: 12px;
background: var(--accent-strong);
color: var(--on-accent);
}
.exit-dialog__mark .icon {
color: inherit;
}
.exit-dialog__title {
margin: 4px 0 0;
padding-inline-end: 28px;
font-size: 21px;
line-height: 1.4;
}
.exit-dialog__title:focus {
outline: none;
}
.exit-dialog__lede {
margin: 0;
color: var(--muted);
font-size: var(--fs-body);
line-height: 1.8;
}
.exit-dialog__points {
display: grid;
gap: 6px;
margin: 2px 0 6px;
padding: 0;
list-style: none;
font-size: var(--fs-sm);
}
.exit-dialog__points li {
display: flex;
align-items: center;
gap: 8px;
}
.exit-dialog__points .icon {
color: var(--accent);
}
.exit-dialog__actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
inline-size: 100%;
}
.exit-dialog__actions .landing-cta {
flex: 1 1 auto;
}
.exit-dialog__stay {
border-color: transparent;
background: transparent;
color: var(--muted);
}
@media (prefers-reduced-motion: no-preference) {
.exit-dialog[open] {
animation: landing-rise 240ms cubic-bezier(0.2, 0.7, 0.3, 1);
}
}
.landing-map__all {
border-color: transparent;
background: transparent;
color: var(--accent-ink);
}
.landing-map__all .icon {
color: var(--accent);
}
.landing-map__all:hover {
border-color: var(--border);
background: var(--surface);
}
@media (min-width: 621px) {
.landing-shell .section.landing-block,
.landing-shell .landing-close {
margin-block-start: 56px;
}
.landing-map__head {
margin-block-end: 16px;
}
}
.install-guide {
scroll-margin-block-start: 84px;
}
.install-guide:target {
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-soft);
}
.install-guide__title {
display: flex;
align-items: center;
gap: 10px;
}
.install-guide__mark {
display: inline-flex;
flex: 0 0 auto;
align-items: center;
justify-content: center;
inline-size: 32px;
block-size: 32px;
border-radius: var(--radius-md);
background: var(--accent-soft);
color: var(--accent);
}
.install-guide__mark .icon {
margin: 0;
color: var(--accent);
}
.install-perks {
display: grid;
gap: 6px;
margin: 4px 0 12px;
padding: 0;
list-style: none;
font-size: var(--fs-sm);
line-height: 1.6;
}
.install-perks li {
display: flex;
align-items: flex-start;
gap: 8px;
}
.install-perks .icon {
flex: 0 0 auto;
margin-block-start: 0.25em;
color: var(--accent);
}
.install-steps--visual {
counter-reset: install-step;
padding-inline-start: 0;
list-style: none;
}
.install-steps--visual > li {
position: relative;
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 4px 6px;
min-block-size: 30px;
padding-inline-start: 34px;
counter-increment: install-step;
}
.install-steps--visual > li + li {
margin-block-start: 8px;
}
.install-steps--visual > li::before {
content: counter(install-step);
position: absolute;
inset-inline-start: 0;
inset-block-start: 3px;
display: grid;
place-items: center;
inline-size: 24px;
block-size: 24px;
border-radius: 50%;
background: var(--accent-strong);
color: var(--on-accent);
font-size: var(--fs-meta);
font-weight: 700;
line-height: 1;
}
.install-key {
display: inline-flex;
align-items: center;
gap: 6px;
max-inline-size: 100%;
padding: 3px 9px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface);
box-shadow: 0 1px 0 var(--border);
color: var(--text);
font-weight: 600;
line-height: 1.4;
}
.install-key--icon {
justify-content: center;
inline-size: 30px;
block-size: 28px;
padding: 0;
}
.install-glyph {
flex: 0 0 auto;
inline-size: 18px;
block-size: 18px;
color: var(--accent);
}
.install-how__note {
margin: 10px 0 0;
}
.install-others {
margin-block-start: 10px;
}
.install-others > summary {
color: var(--muted);
font-size: var(--fs-sm);
font-weight: 600;
cursor: pointer;
}
.install-others > summary:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
border-radius: var(--radius-sm);
}
.install-inapp[hidden] {
display: none;
}
.install-inapp {
margin: 4px 0 8px;
padding: 10px 12px;
border: 1px solid var(--warning-border);
border-radius: var(--radius-md);
background: var(--warning-bg);
color: var(--warning-ink);
font-size: var(--fs-sm);
line-height: 1.7;
}
.install-inapp p {
margin: 0;
}
.install-inapp__head {
display: flex;
align-items: center;
gap: 6px;
font-weight: 700;
}
.install-inapp .install-inapp__body {
margin-block-start: 4px;
}
.install-inapp .install-key--icon {
vertical-align: middle;
inline-size: 26px;
block-size: 24px;
}
.install-inapp__dots .install-glyph--h,
.install-inapp[data-os="ios"] .install-inapp__dots .install-glyph:not(.install-glyph--h) {
display: none;
}
.install-inapp[data-os="ios"] .install-inapp__dots .install-glyph--h {
display: block;
}
.install-inapp .install-inapp__tools {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px 10px;
margin-block-start: 8px;
}
.install-inapp__tools .meta {
color: inherit;
}
.install-guide__foot {
margin: 12px 0 0;
}
.topbar--public a.install-link {
display: inline-flex;
align-items: center;
gap: 5px;
min-block-size: 34px;
padding: 4px 10px;
border: 1px solid var(--border);
border-radius: 999px;
background: var(--surface);
color: var(--accent-ink);
font-size: var(--fs-sm);
font-weight: 600;
white-space: nowrap;
}
.topbar--public a.install-link:hover {
border-color: var(--accent);
background: var(--accent-soft);
color: var(--accent-ink);
}
.topbar--public a.install-link .icon {
color: var(--accent);
}
.topbar--public a.install-link[hidden] {
display: none;
}
@media (display-mode: standalone), (display-mode: fullscreen), (display-mode: minimal-ui) {
.topbar--public a.install-link {
display: none;
}
}
.landing-shell .landing-map ~ .landing-block {
content-visibility: auto;
contain-intrinsic-size: auto 280px;
}
@media (scripting: enabled) {
.jmap-filter__search[hidden] {
display: grid;
visibility: hidden;
}
.jmap__status[hidden] {
display: block;
visibility: hidden;
}
.jmap__status {
min-block-size: 1lh;
}
}
@media (scripting: enabled) and (max-width: 899px) {
.jmap-fields[hidden] {
display: flex;
visibility: hidden;
min-block-size: 46px;
}
}
.site-footer {
margin-block-start: 48px;
padding-block: 28px 36px;
border-block-start: 1px solid var(--border);
background: var(--surface-soft);
color: var(--muted);
font-size: var(--fs-sm);
}
.site-footer__grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 24px 32px;
}
.site-footer__head {
margin: 0 0 8px;
color: var(--text);
font-size: var(--fs-sm);
font-weight: 700;
}
.site-footer ul {
margin: 0;
padding: 0;
list-style: none;
}
.site-footer a {
display: inline-flex;
align-items: center;
min-block-size: 32px;
color: var(--muted);
text-decoration: none;
}
.site-footer a:hover,
.site-footer a:focus-visible {
color: var(--accent-ink);
text-decoration: underline;
}
