/* D-04: subsetted WOFF2 (Basic Latin, Latin-1 Supplement, Latin Extended-A/B, Latin Extended Additional for
   Vietnamese precomposed diacritics, General Punctuation, Currency Symbols, and the few Geometric Shapes/Letterlike
   glyphs the original font actually ships, e.g. the dotted-circle nav icon) replaces the former raw .ttf; the
   unicode-range below lets a browser skip the font download entirely for any text outside this coverage (CJK,
   Arabic, Devanagari, etc. fall straight back to the OS font, never tofu). The .ttf stays as the last @font-face
   src entry only for a browser too old for WOFF2 -- a modern browser never requests it. */
@font-face{font-family:RolivaSans;src:url('/assets/NotoSans-Regular.7ecbaf5de9.woff2') format('woff2'),url('/assets/NotoSans-Regular.ttf') format('truetype');font-weight:400;font-display:optional;unicode-range:U+0020-007E,U+00A0-024F,U+0300-036F,U+1E00-1EFF,U+2000-206F,U+20A0-20CF,U+2100-214F,U+25A0-25FF}
@font-face{font-family:RolivaSans;src:url('/assets/NotoSans-Bold.f53482cd59.woff2') format('woff2'),url('/assets/NotoSans-Bold.ttf') format('truetype');font-weight:600 800;font-display:optional;unicode-range:U+0020-007E,U+00A0-024F,U+0300-036F,U+1E00-1EFF,U+2000-206F,U+20A0-20CF,U+2100-214F,U+25A0-25FF}
/* D-03 (review Defect 1 fix): a same-metrics local(Arial) stand-in for the swap period before RolivaSans's WOFF2
   arrives, sized via size-adjust/ascent-override/descent-override/line-gap-override. size-adjust is deliberately
   NOT derived from the two fonts' declared OS/2.xAvgCharWidth (that ratio, 131.85%/130.19%, measured ~27% too wide
   in real Chromium -- xAvgCharWidth is each font's own weighted-average-character metadata field, not a reliable
   cross-font proxy for how a specific rendered string actually measures). Instead it is the empirically measured
   ratio of real rendered widths (RolivaSans vs plain local Arial, no override) across the site's actual h1/h2/body
   strings at their real font-size/letter-spacing in headless Chromium -- verified to keep the fallback's rendered
   width within ~2% of the webfont's across every sample tested (see F1-review.md Defect 1). ascent-override/
   descent-override/line-gap-override are then this size-adjust divided out of RolivaSans's own OS/2/hhea vertical
   metrics, so they stay internally consistent with it. Arial is the practical target: it is Windows/macOS's actual
   local fallback, and Linux's common substitutes (Liberation Sans, metric-compatible with Arial by design; DejaVu
   Sans, close but not identical) are close enough that this is still a meaningful improvement over no override,
   even though it was only verified empirically against Arial. */
@font-face{font-family:'RolivaSans Fallback';src:local('Arial');font-weight:400;ascent-override:99.99%;descent-override:27.41%;line-gap-override:0%;size-adjust:106.91%}
@font-face{font-family:'RolivaSans Fallback';src:local('Arial Bold'),local('Arial');font-weight:600 800;ascent-override:103.68%;descent-override:28.42%;line-gap-override:0%;size-adjust:103.11%}
:root{--paper:#f9f9f7;--surface:#ffffff;--white:var(--surface);--soft:#f3f3f0;--tint:#e9efe9;--line:#e6e6e1;--line-strong:#c9cbc4;--ink:#161816;--text:#3a3d39;--muted:#62665f;--green:#1d5c45;--green-hover:#164a37;--accent-soft:#e3efe8;--lime:#e3efe8;--warm:#f1ece3;--on-accent:#ffffff;--red:#a23b31;--danger:#a23b31;--danger-bg:#fbeeec;--danger-line:#efc9c3;--danger-ink:#8c2f26;--warn:#8a5a00;--warn-bg:#fdf4e1;--warn-line:#ecd29a;--warn-ink:#6f4a06;--info:#2c5c9a;--info-bg:#edf3fb;--info-line:#c5d6ee;--info-ink:#24497a;--good-bg:#e8f4ec;--good-ink:#1b5c3a;--focus:#2f7a5b;--radius:16px;--radius-sm:10px;--radius-pill:999px;--shadow:0 1px 2px #1618160f,0 8px 28px #16181608;--shadow-lg:0 2px 6px #1618160d,0 24px 60px #16181614;--ease:cubic-bezier(.2,.7,.2,1);--fast:.15s;--sans:RolivaSans,'RolivaSans Fallback',ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color-scheme:light;font-family:var(--sans);color:var(--ink);background:var(--paper);font-synthesis:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#121413;--surface:#1a1d1b;--soft:#202421;--tint:#25302a;--line:#2d322e;--line-strong:#454b46;--ink:#eff1ed;--text:#d3d6d0;--muted:#a3a8a1;--green:#5fbf93;--green-hover:#7bd0a8;--accent-soft:#1f3329;--lime:#1f3329;--warm:#2a2620;--on-accent:#0f1712;--red:#f08a7e;--danger:#f08a7e;--danger-bg:#3a1f1c;--danger-line:#6b322b;--danger-ink:#f6b3aa;--warn:#e9b65a;--warn-bg:#352a14;--warn-line:#6a5320;--warn-ink:#f1cf8c;--info:#8db4ee;--info-bg:#1b2738;--info-line:#334a6b;--info-ink:#b9d0f3;--good-bg:#183025;--good-ink:#9fdcbc;--focus:#7bd0a8;--shadow:0 1px 2px #0000004d,0 8px 28px #00000040;--shadow-lg:0 2px 6px #00000059,0 24px 60px #00000066;color-scheme:dark}}:root[data-theme=dark]{--paper:#121413;--surface:#1a1d1b;--soft:#202421;--tint:#25302a;--line:#2d322e;--line-strong:#454b46;--ink:#eff1ed;--text:#d3d6d0;--muted:#a3a8a1;--green:#5fbf93;--green-hover:#7bd0a8;--accent-soft:#1f3329;--lime:#1f3329;--warm:#2a2620;--on-accent:#0f1712;--red:#f08a7e;--danger:#f08a7e;--danger-bg:#3a1f1c;--danger-line:#6b322b;--danger-ink:#f6b3aa;--warn:#e9b65a;--warn-bg:#352a14;--warn-line:#6a5320;--warn-ink:#f1cf8c;--info:#8db4ee;--info-bg:#1b2738;--info-line:#334a6b;--info-ink:#b9d0f3;--good-bg:#183025;--good-ink:#9fdcbc;--focus:#7bd0a8;--shadow:0 1px 2px #0000004d,0 8px 28px #00000040;--shadow-lg:0 2px 6px #00000059,0 24px 60px #00000066;color-scheme:dark}*{box-sizing:border-box}body{margin:0;font-size:15px;line-height:1.65}a{color:inherit;text-underline-offset:4px}button,input,select,textarea{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled,button[data-busy]{opacity:.55;cursor:wait}input,select,textarea{width:100%;padding:12px 14px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;min-width:0}input[type=checkbox]{width:24px;height:24px;flex-shrink:0;accent-color:var(--green)}textarea{resize:vertical;min-height:112px}label{display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:600}label.check{display:flex;flex-direction:row;gap:10px;align-items:flex-start;font-weight:400;font-size:13px}.check a{display:contents}form{display:grid;gap:18px}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3,h4{font-weight:500;line-height:1.15;letter-spacing:-.04em}h1{font-size:clamp(42px,4.9vw,72px);margin-bottom:26px}h2{font-size:clamp(30px,3.25vw,48px);margin-bottom:22px}h3{font-size:24px}h4{font-size:19px;letter-spacing:-.025em}em{font-family:Georgia,serif;font-weight:400}p{color:var(--text)}:focus-visible{outline:3px solid var(--green);outline-offset:4px}.skip-link{position:fixed;left:16px;top:-60px;z-index:99;background:var(--green);color:var(--on-accent);padding:12px}.skip-link:focus{top:12px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.site-header{max-width:1440px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:30px;padding:25px 5.5%;border-bottom:1px solid var(--line)}.brand{font-size:31px;font-weight:700;letter-spacing:-1.8px;display:inline-flex;gap:9px;align-items:center;text-decoration:none;line-height:1}.brand-mark{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px 10px 10px 2px;background-color:var(--green);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20'%3E%3Ctext x='10' y='16' font-family='Georgia,serif' font-style='italic' font-size='18' fill='%23f7f8f3' text-anchor='middle'%3Er%3C/text%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center}.brand-dot{font-size:9px;align-self:flex-start;letter-spacing:0;margin-left:-5px;margin-top:4px}.site-header nav,.header-actions{display:flex;align-items:center;gap:25px;font-size:13px}.site-header nav a,.header-actions>a:not(.button){text-decoration:none}.button{display:inline-flex;align-items:center;justify-content:center;gap:25px;background:var(--green);color:var(--on-accent);border:1px solid var(--green);border-radius:7px;padding:14px 20px;text-decoration:none;font-size:13px;font-weight:600;line-height:1.5;white-space:nowrap;transition:background .2s,transform .2s}.button:hover{background:var(--green);transform:translateY(-1px)}.button.secondary{color:var(--green);background:transparent;border-color:var(--line-strong)}.button.secondary:hover{background:var(--soft)}.button.small{padding:9px 13px;font-size:12px;gap:12px}.button.danger{background:var(--red);border-color:var(--red)}.header-actions .button{padding:11px 17px}.eyebrow,.small-label{font-size:10px;font-weight:600;letter-spacing:.14em;line-height:1.5;color:var(--muted)}.eyebrow{margin-bottom:25px;display:flex;align-items:center;gap:9px}.pill-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--line-strong)}.hero{max-width:1440px;margin:auto;padding:75px 5.5% 70px;display:grid;grid-template-columns:1.12fr 1fr;gap:6%;align-items:center}.hero .lead{max-width:505px}.lead{font-size:16px;line-height:1.8;color:var(--muted)}.actions{display:flex;flex-wrap:wrap;gap:13px;align-items:center;margin-top:30px}.section{max-width:1440px;margin:auto;padding:90px 5.5%}.section-heading{display:grid;grid-template-columns:1.7fr 1fr;column-gap:12%;align-items:end}.section-heading>.eyebrow{grid-column:1/-1;margin-bottom:18px}.section-heading>p:last-child{font-size:14px;color:var(--muted);max-width:340px;padding-bottom:8px}.feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:24px}.feature-card{text-decoration:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:27px 24px 22px;min-height:265px;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}.feature-card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.feature-card .small-label{font-size:8px;margin-bottom:36px}.feature-card h3{font-size:23px;line-height:1.3;max-width:180px;margin-bottom:14px}.feature-card p{font-size:12px;color:var(--muted)}.round-arrow{align-self:flex-end;border:1px solid var(--line);border-radius:50%;width:29px;height:29px;display:grid;place-items:center;margin-top:auto}.split-section{max-width:1282px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:11%;align-items:center;padding:35px 0 30px}.quote-card{background:var(--warm);border-radius:var(--radius);padding:50px;min-height:500px;display:flex;flex-direction:column;justify-content:space-between}.quote-card p{font-size:clamp(32px,3.15vw,46px);color:var(--ink);line-height:1.25;letter-spacing:-.04em;margin:40px 0}.tiny-node{font-size:13px;letter-spacing:12px;color:var(--green)}.steps{counter-reset:step;list-style:none;padding:0;margin:30px 0}.steps li{position:relative;padding-left:45px;margin-bottom:26px}.steps li:before{counter-increment:step;content:'0' counter(step);position:absolute;left:0;top:0;font-size:11px;color:var(--muted);padding-top:4px}.steps b{font-weight:600;font-size:14px}.steps p{font-size:12px;color:var(--muted);margin:5px 0}.role-links{display:grid;grid-template-columns:repeat(3,1fr);gap:0 35px}.role-links a{padding:18px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;text-decoration:none;font-size:14px}.closing{text-align:center;background:var(--green);color:var(--paper);padding:75px 20px;display:flex;align-items:center;flex-direction:column}.closing .eyebrow{color:var(--muted)}.closing h2{font-size:clamp(42px,4.6vw,66px)}.closing .button{background:var(--lime);border-color:var(--lime);color:var(--ink);margin:7px 0 22px}.closing>a:last-child{font-size:13px;color:var(--text)}.site-footer{max-width:1440px;margin:auto;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:50px;padding:65px 5.5%}.site-footer p{font-size:12px;margin-top:18px}.site-footer>div{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.site-footer strong{font-size:11px;font-weight:600;margin-bottom:7px}.site-footer a:not(.brand){font-size:11px;text-decoration:none;color:var(--muted)}.site-footer a:hover{text-decoration:underline}.muted{color:var(--muted);font-size:12px}.editorial-intro{max-width:1000px;margin:auto;text-align:center;padding:85px 40px 60px}.editorial-intro .eyebrow{justify-content:center}.editorial-intro h1{font-size:clamp(40px,5vw,68px)}.editorial-intro .lead{max-width:730px;margin:0 auto}.editorial-intro.compact{padding-bottom:30px}.editorial-body{max-width:900px;margin:auto;padding:0 30px 55px}.editorial-body article{display:grid;grid-template-columns:60px 1fr;gap:15px;border-top:1px solid var(--line);padding:34px 0}.editorial-body .small-label{padding-top:8px}.editorial-body h2{font-size:27px;letter-spacing:-.025em}.editorial-body p{color:var(--muted);font-size:14px;line-height:1.85}.mini-cta{display:flex;gap:18px;align-items:center;justify-content:center;flex-wrap:wrap;background:var(--soft);padding:40px 6%}.mini-cta h2{font-size:28px;margin:0 20px 0 0}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:20px}.toolbar h2{font-size:30px;margin:0}.toolbar select{min-width:95px}.pricing-section{padding-top:10px;padding-bottom:40px}.pricing-country-banner{padding:15px 19px;border:1px solid var(--info-line);background:var(--info-bg);color:var(--info-ink);border-radius:8px;font-size:12.5px;line-height:1.7;margin-bottom:20px}.pricing-country-banner[hidden]{display:none}.pricing-country-banner a{color:inherit;font-weight:600;text-decoration-thickness:1.5px}.notice{padding:15px 19px;border:1px solid var(--line);background:var(--tint);border-radius:8px;font-size:12px;line-height:1.8;color:var(--text)}.notice.warning{background:var(--warn-bg);border-color:var(--warn-line)}.notice.error{background:var(--danger-bg);border-color:var(--danger-line);color:var(--danger-ink)}.pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:28px 0}.price-card{padding:32px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-direction:column}.price-card.recommended{background:var(--green);color:var(--on-accent)}.price-card.recommended p,.price-card.recommended .small-label,.price-card.recommended li{color:var(--muted)}.price-card.recommended .button{background:var(--lime);color:var(--ink);border-color:var(--lime)}.price-card h3{font-size:26px}.price{font-size:42px;letter-spacing:-.045em;line-height:1.3}.price small{font-size:11px;letter-spacing:0}.price-card ul{padding:12px 0 20px 18px;flex:1}.price-card li{font-size:13px;margin:8px 0;color:var(--text)}.waitlist-section{max-width:650px;margin:30px auto 70px;padding:30px}.waitlist-section h2{font-size:32px}.compact-form{margin-top:24px}.compact-form .button{justify-self:start}.auth-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12%;max-width:1150px;padding:90px 35px;margin:auto;align-items:center;min-height:650px}.auth-aside h1{font-size:52px}.auth-aside p:last-child{max-width:360px;color:var(--muted)}.auth-card{padding:32px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.auth-card h2{font-size:30px;margin-top:20px}.auth-card p,.auth-card>a{font-size:12px}.auth-card form{margin-bottom:16px}.form-feedback{margin:0;font-size:13px}.form-feedback:empty{display:none}.search-bar{display:flex;gap:12px;flex-wrap:wrap}.search-bar input{flex:1;min-width:200px}.search-bar select{width:auto}.job-search{padding-top:20px}.job-list{display:grid;gap:12px;margin-top:25px}.job-card{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:23px;display:flex;align-items:center;gap:20px;justify-content:space-between}.job-card .company-logo{width:43px;height:43px;background:var(--soft);border-radius:9px;display:grid;place-items:center;font-size:19px;flex-shrink:0}.job-main{flex:1;min-width:0}.job-card h3{font-size:19px;letter-spacing:-.025em;margin:3px 0 8px;line-height:1.4}.job-card p{font-size:11px;margin:0;color:var(--muted)}.job-meta{display:flex;gap:9px;flex-wrap:wrap;margin-top:10px}.tag{display:inline-flex;align-items:center;background:var(--soft);border:1px solid var(--line);padding:3px 8px;border-radius:5px;font-size:10px;font-weight:400;color:var(--text);line-height:1.5}.tag.good{background:var(--tint);border-color:var(--line);color:var(--green)}.tag.warning{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-ink)}.match-score{font-size:22px;line-height:1.3;min-width:60px;text-align:center}.match-score small{display:block;font-size:9px;color:var(--muted);font-weight:400}.job-card-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.demo-shell{max-width:1100px;margin:15px auto 85px;padding:0 25px}.demo-tabs{display:flex;gap:8px;padding:12px;background:var(--soft);border:1px solid var(--line);border-radius:12px 12px 0 0;overflow:auto}.demo-tabs button{border:0;background:transparent;border-radius:7px;padding:12px 17px;white-space:nowrap;font-size:12px;color:var(--muted)}.demo-tabs [aria-selected=true]{background:var(--green);color:var(--on-accent)}#demo-panel{background:var(--surface);border:1px solid var(--line);border-top:0;padding:35px;border-radius:0 0 12px 12px;min-height:370px}.demo-columns{display:grid;grid-template-columns:1fr 1.8fr;gap:30px}.demo-profile{padding:25px;background:var(--soft);border-radius:10px}.demo-profile h3{margin-top:20px}.demo-profile p{font-size:12px}.avatar{display:grid;place-items:center;background:var(--lime);border-radius:50%;width:48px;height:48px;font-size:18px}.demo-label{font-size:10px;letter-spacing:.1em;color:var(--muted);margin-bottom:22px}.prose{font-size:14px;line-height:1.9}.prose h3{margin-top:26px}.prose ul{padding-left:20px}.prose p{white-space:pre-wrap;overflow-wrap:anywhere}.prose blockquote{padding:15px 20px;margin:20px 0;background:var(--soft);border-left:3px solid var(--green)}#toast{position:fixed;bottom:22px;right:22px;z-index:100;max-width:420px;background:var(--ink);color:var(--on-accent);border-radius:10px;box-shadow:var(--shadow);padding:14px 20px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s}#toast.visible{opacity:1}.loading-state{padding:80px 30px;text-align:center;color:var(--muted)}
/* CLS-01: app-match-cta.mjs mounts its panel into this initially-empty slot on load (sets data-match-cta-mounted
   once it does), which otherwise shifts every section below it on a job page (measured ~0.06 CLS). Reserving the
   panel's own typical height while empty removes that shift; the constraint drops the instant real content lands,
   so the mounted panel's natural height is never clipped. */
[data-match-cta]:not([data-match-cta-mounted]){min-height:168px}

.app-body{background:var(--soft)}.sidebar{padding:28px 17px;background:var(--tint);border-right:1px solid var(--line);position:sticky;top:0;height:100vh;overflow:auto;display:flex;flex-direction:column}.sidebar .brand{margin:0 15px 33px}.sidebar nav{display:grid;gap:3px}.sidebar nav a{display:flex;gap:12px;text-decoration:none;font-size:12px;padding:10px 13px;border-radius:6px;color:var(--text)}.sidebar nav a:hover{background:var(--tint)}.sidebar nav a[aria-current=page]{background:var(--green);color:var(--on-accent)}.app-content{max-width:1350px;margin:auto;padding:38px}.app-title{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:27px}.app-title h1{font-size:35px;margin:8px 0 10px}.app-title p{margin:0;color:var(--muted);font-size:13px}.app-title .eyebrow{font-size:9px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:25px;margin-bottom:22px;min-width:0}.panel h2{font-size:24px;margin-bottom:18px}.panel h3{font-size:20px}.panel p{font-size:13px}.panel .toolbar h2{margin-bottom:0}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:25px}.stat{background:var(--surface);border:1px solid var(--line);padding:20px;border-radius:12px}.stat span{font-size:11px;color:var(--muted)}.stat strong{display:block;font-size:32px;font-weight:500;line-height:1.5;letter-spacing:-.045em}.stat small{font-size:10px;color:var(--muted)}.two-col{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(250px,1fr);gap:22px}.two-col>div{min-width:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.full-width{grid-column:1/-1}.section-label{display:block;font-size:11px;color:var(--muted);padding-bottom:10px;margin:10px 0;border-bottom:1px solid var(--line);font-weight:600}.empty-state{padding:32px 18px;border:1px dashed var(--line);border-radius:10px;text-align:center;margin:16px 0;color:var(--muted);font-size:13px}.empty-state p{max-width:500px;margin:10px auto 20px}.inline-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.text-button{border:0;background:transparent;color:var(--green);font-size:12px;text-decoration:underline;text-underline-offset:4px;padding:5px}.text-button.danger{color:var(--red)}.field-help{font-size:11px;color:var(--muted);margin:4px 0 0}.data-list{list-style:none;margin:0;padding:0}.data-list li{padding:14px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;font-size:12px}.data-list li:last-child{border-bottom:0}.data-list p{margin:5px 0}.data-list strong{font-weight:600}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px;text-align:left}th{font-size:10px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--muted);background:var(--soft)}th,td{padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:top}td{min-width:100px}td:first-child{min-width:180px}.table-wrap h3{font-size:15px;line-height:1.4;margin:0 0 6px}.table-wrap p{font-size:11px;margin:0}.table-wrap select{padding:7px;font-size:11px}.progress{height:6px;border-radius:10px;background:var(--soft);overflow:hidden;margin:10px 0 18px}.progress span{display:block;height:100%;background:var(--line-strong)}.small-caps{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.studio-result{margin-top:22px}.modal-backdrop{position:fixed;inset:0;background:#16362866;display:flex;align-items:center;justify-content:center;z-index:80;padding:20px}.modal{max-height:90vh;overflow:auto;background:var(--paper);border-radius:16px;padding:30px;width:min(690px,100%);box-shadow:0 25px 90px #11271c33}.modal h2{font-size:28px}.modal-close{float:right;border:0;background:transparent;font-size:22px;color:var(--green);padding:4px;border-radius:6px}.modal-close:focus{outline:3px solid var(--green);outline-offset:2px}.roli-box{border:1px solid var(--line);border-radius:10px;padding:18px;background:var(--soft)}.roli-box form{display:flex;gap:8px}.roli-box input{flex:1}.mobile-menu{display:none}.page-spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--line-strong);border-top-color:transparent;border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:1500px){.split-section{max-width:1282px}}@media(max-width:1180px){.site-header nav{gap:15px}.header-actions .button{display:none}.hero{gap:4%;padding-top:55px}.hero h1{font-size:54px}.feature-grid{grid-template-columns:repeat(2,1fr)}.feature-card{min-height:245px}.feature-card h3{max-width:none}.split-section{margin:0 5.5%;gap:7%}.quote-card{padding:35px;min-height:450px}.app-content{padding:28px}.two-col{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.site-header{padding:20px 6%;gap:15px}.site-header nav{display:none}.brand{font-size:28px}.site-header .header-actions{gap:10px}.hero{grid-template-columns:1fr;padding:45px 6% 40px;gap:35px}.hero h1{font-size:48px}.hero .lead{font-size:15px;max-width:500px}.eyebrow{font-size:9px}.actions{gap:10px}.button{padding:13px 16px;gap:16px}.section{padding:55px 6%}.section-heading{display:block}.section-heading>p:last-child{max-width:none}.feature-grid{gap:12px}.feature-card{padding:21px 17px;min-height:240px}.feature-card .small-label{font-size:7px;margin-bottom:28px}.feature-card h3{font-size:21px}.feature-card p{font-size:11px}.split-section{grid-template-columns:1fr;gap:35px}.quote-card{min-height:360px;padding:30px}.quote-card p{font-size:37px;margin:25px 0}.split-section>div:last-child{padding:15px 0}.role-links{grid-template-columns:1fr;gap:0}.closing{padding:55px 20px}.site-footer{grid-template-columns:1fr 1fr;gap:35px 20px;padding:40px 6%}.site-footer>div:first-child{grid-column:1/-1}.editorial-intro{padding:50px 6% 30px}.editorial-intro h1{font-size:40px}.editorial-intro .lead{font-size:15px}.editorial-body{padding:0 6% 35px}.editorial-body article{grid-template-columns:28px 1fr;gap:10px;padding:28px 0}.editorial-body h2{font-size:25px}.mini-cta{justify-content:flex-start;padding:35px 6%}.mini-cta h2{width:100%;margin-bottom:10px}.pricing-grid{grid-template-columns:1fr}.price-card{padding:27px}.pricing-section{padding-top:20px}.auth-wrap{grid-template-columns:1fr;padding:45px 6%;gap:30px;min-height:0}.auth-aside h1{font-size:38px}.auth-aside p:last-child{font-size:13px}.auth-card{padding:25px}.search-bar{display:grid;grid-template-columns:1fr 1fr}.search-bar input{grid-column:1/-1;width:100%}.search-bar select{width:100%;min-width:0}.job-card{padding:18px;gap:12px;flex-wrap:wrap}.job-card h3{font-size:17px}.job-card-actions{width:100%;margin-left:55px}.job-card .company-logo{width:38px;height:38px}.job-card .match-score{font-size:18px}.demo-shell{padding:0 6%;margin-bottom:50px}#demo-panel{padding:22px}.demo-columns{grid-template-columns:1fr}.demo-profile{display:none}.demo-tabs button{padding:9px 11px}.sidebar{height:auto;position:relative;border-right:0;border-bottom:1px solid var(--line);padding:16px}.sidebar .brand{margin:0 0 15px;font-size:25px}.sidebar nav{display:flex;overflow-x:auto;gap:5px}.sidebar nav a{white-space:nowrap;padding:9px 12px}.app-content{padding:25px 18px}.app-title h1{font-size:31px}.app-title{align-items:start}.panel{padding:20px}.form-grid{grid-template-columns:1fr}.full-width{grid-column:auto}.stats-grid{gap:12px}.stat{padding:16px}.stat strong{font-size:28px}.roli-box form{display:grid}.toolbar{gap:12px}.toolbar h2{font-size:24px}.modal{padding:22px}.modal-backdrop{padding:12px}.app-title .button{font-size:11px;padding:9px 12px}.notice{padding:12px 15px}#toast{left:16px;right:16px;bottom:16px;max-width:none}[data-match-cta]:not([data-match-cta-mounted]){min-height:200px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.feature-card:hover,.button:hover{transform:none}}

#pricing-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.price-card{min-width:0}.price .annual-price{display:block;font-size:13px;letter-spacing:normal;line-height:1.5;margin:7px 0;color:inherit}@media(max-width:1100px){#pricing-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){#pricing-cards{grid-template-columns:1fr}}

label.check{display:block;position:relative;padding-left:34px;min-height:24px}label.check input[type=checkbox]{position:absolute;left:0;top:0;margin:0}label.check a{display:inline}.modal{border:1px solid var(--line)}dialog::backdrop{background:#16362866}
[hidden]{display:none!important}
.mobile-menu{display:none;position:relative}.mobile-menu summary{list-style:none;cursor:pointer;border:1px solid var(--line);border-radius:999px;padding:10px 16px;font-size:13px;min-height:44px;display:flex;align-items:center}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu nav{position:absolute;right:0;top:calc(100% + 8px);z-index:20;display:grid;gap:2px;min-width:220px;padding:10px;background:var(--paper,var(--surface));border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 30px rgba(0,0,0,.08)}.mobile-menu nav a{padding:12px 10px;text-decoration:none;min-height:44px}@media(max-width:760px){.mobile-menu{display:block}}
.facts{display:grid;grid-template-columns:minmax(140px,1fr) 2fr;gap:8px 18px;margin:18px 0 0}.facts dt{font-weight:600}.facts dd{margin:0}.preview-note{margin:20px 5.5% 0}@media(max-width:760px){.facts{grid-template-columns:1fr}.facts dd{margin-bottom:8px}}
.breadcrumbs{margin:24px 5.5% 0;font-size:13px}.breadcrumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}.breadcrumbs li+li:before{content:"›";margin-right:6px;color:var(--muted,var(--muted))}.pagination{display:flex;justify-content:space-between;gap:16px;margin:24px 0}.job-description p{max-width:72ch}.job-detail .actions{display:flex;flex-wrap:wrap;gap:12px}
@media(max-width:760px){.button{white-space:normal;text-align:center;max-width:100%}}.site-footer>div:not(:first-child){gap:4px}.site-footer a:not(.brand){padding-block:3px}.site-header nav a,.header-actions>a:not(.button){padding-block:10px}.auth-card>a{display:inline-block;padding-block:4px}.breadcrumbs a{padding-block:3px}

/* Discovery pages (role, location, employer) and job-page explore links */.discovery-stats,.discovery-jobs,.discovery-related,.browse-hub,.job-explore{padding-top:36px;padding-bottom:36px}.discovery-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px 40px;margin-top:8px}.discovery-facts h3,.browse-hub h3{font-size:19px;margin:18px 0 8px}.discovery-facts .data-list a{text-decoration:underline}.discovery-facts strong small{font-weight:400;color:var(--muted)}.discovery-method{margin-top:22px;max-width:760px}.role-links a span{color:var(--muted)}.discovery-jobs .pagination{align-items:center}@media(max-width:760px){.discovery-stats,.discovery-jobs,.discovery-related,.browse-hub,.job-explore{padding-top:24px;padding-bottom:24px}.discovery-facts{grid-template-columns:1fr;gap:6px}}
[data-discovery] .actions{justify-content:center}
/* === W4 app polish === */
/* F-1: sidebar closing tagline was clipped at the 1440px viewport bottom edge — the nav's total height (960px)
   exceeded a 900px-tall viewport by 60px, so the last line sat past the fold with no visible scroll cue.
   Tightening the sidebar's vertical rhythm (still comfortably above the 24px touch-target minimum) removes the
   overflow outright instead of just relying on the container's overflow:auto scroll. */
.sidebar{padding:18px 17px 12px}
.sidebar .brand{margin:0 15px 20px}
.sidebar nav{gap:1px}
.sidebar nav a{padding:8px 13px}

/* F-QA-1 (independent audit): the 900px-height fix above still overflowed at shorter desktop heights (e.g.
   1440x768, 1440x720 — total sidebar content is a fixed 833px regardless of viewport height, so anything under
   ~833px tall clips the tagline below the fold). Tighten further and hide the decorative tagline line on short
   viewports rather than shrinking nav link touch targets below 24px. */
@media(max-height:820px){
 .sidebar{padding:12px 17px 8px}
 .sidebar .brand{margin:0 15px 14px}
 .sidebar nav{gap:0}
 .sidebar nav a{padding:6px 13px}
 
 
}
/* F-2/F-3: horizontally scrollable tables (Admin records, Billing usage) need a visible scroll affordance, not just an accessible label. The scroll behaviour and aria-label/tabindex already come from .table-wrap + JS; this adds a persistent edge fade so sighted users notice there is more to the right. */
.table-wrap{position:relative}
.table-wrap[data-scrollable]:after{content:'';position:absolute;top:0;right:0;bottom:0;width:26px;background:linear-gradient(to left,#0000001c,transparent);pointer-events:none}


/* F-4: the job-detail description card was stretched by CSS grid's default stretch to match the taller sidebar column, leaving empty white space below the (short) description text. */

/* F-5: the support page's "What do you need?" radios rendered as unstyled native browser controls; style them like the design system's checkboxes (native input kept for accessibility). */
input[type=radio]{width:24px;height:24px;flex-shrink:0;accent-color:var(--green)}
label.check input[type=radio]{position:absolute;left:0;top:0;margin:0}
/* end W4 */
/* --- T-WEB-W1 begin: landing proof/preview/FAQ, footer additions, consent banner (trust/consent batch) --- */
.proof-strip{max-width:1282px;margin:34px auto 0;padding:0 5.5%}.proof-strip ul{display:flex;flex-wrap:wrap;gap:28px 40px;list-style:none;padding:0;margin:0}.proof-strip li{display:flex;flex-direction:column;gap:2px}.proof-strip strong{font-size:32px;letter-spacing:-.03em;color:var(--ink);line-height:1.2}.proof-strip span{font-size:11px;color:var(--muted)}.proof-strip>p{margin:16px 0 0;font-size:11px;color:var(--muted)}
.pricing-note{max-width:1282px;margin:0 auto;padding:0 5.5% 6px}.pricing-note p{font-size:13px;color:var(--muted);margin:0}.pricing-note strong{color:var(--ink)}.pricing-note a{text-decoration:underline;text-underline-offset:3px}
.faq-list{display:grid;gap:0;margin-top:22px;border-top:1px solid var(--line);max-width:820px}.faq-item{border-bottom:1px solid var(--line)}.faq-item summary{cursor:pointer;list-style:none;padding:18px 4px;font-weight:600;font-size:15px;display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:24px}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:'+';font-size:20px;color:var(--muted);flex-shrink:0}.faq-item[open] summary:after{content:'−'}.faq-item p{padding:0 4px 20px;color:var(--muted);font-size:13px;line-height:1.8;margin:0;max-width:70ch}.faq-item p a{text-decoration:underline;text-underline-offset:3px;color:inherit}
.footer-copyright{margin-top:4px!important}
.link-button{display:inline-block;background:none;border:0;padding:3px 0;font-size:11px;color:var(--muted);text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:24px;font-weight:400}.link-button:hover{color:var(--ink)}
.consent-banner{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--ink);padding:20px 5.5%;box-shadow:0 -8px 30px rgba(0,0,0,.25);display:grid;gap:16px;max-height:80vh;overflow:auto}
.consent-banner p{margin:0;font-size:12px;line-height:1.7;color:var(--muted);max-width:800px}.consent-banner a{color:var(--on-accent)}
.consent-options label.check{color:var(--muted)}
.consent-actions{display:flex;gap:12px;flex-wrap:wrap}
.consent-actions button{min-height:44px;padding:11px 22px;border-radius:7px;font-size:13px;font-weight:600;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
.consent-actions button:hover{background:var(--tint)}
@media(max-width:760px){.consent-banner{padding:10px 5%;gap:8px}.consent-banner p{font-size:12px;line-height:1.3;max-width:480px}.consent-actions{gap:8px}.consent-actions button{padding:9px 16px;min-height:44px}.proof-strip{padding:0 6%}.pricing-note{padding:0 6% 6px}}
/* --- T-WEB-W1 end --- */
/* --- T-WEB-W2 begin: job search filters, skeleton/error states, job card metadata (job search batch) --- */
.job-list-skeleton{display:grid;gap:12px}.skeleton-card{pointer-events:none}.skeleton-card .company-logo{background:var(--soft)}.skeleton-line{display:block;height:12px;border-radius:5px;background:linear-gradient(90deg,var(--soft) 25%,#e4e9dc 37%,var(--soft) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease infinite;margin:8px 0;max-width:260px}.skeleton-line.short{max-width:120px}@keyframes skeleton-shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}@media(prefers-reduced-motion:reduce){.skeleton-line{animation:none}}
.error-state{border-color:var(--danger-line);background:var(--danger-bg)}.error-state h3{color:var(--danger-ink)}
/* --- T-WEB-W2 end --- */
/* === Tracker board === */
/* List/board toggle (view-toggle) reuses the .text-button look inside a pill; aria-pressed marks the active view. */



/* Board region: always a labelled, keyboard-focusable horizontal scroller (WCAG scrollable-region-focusable), so
   the *page* never gains horizontal scroll even with the grouped columns below — only this region scrolls. */
/* contain:layout stops this region's large internal content (one flex column per backend stage, easily >2000px)
   from inflating document.documentElement.scrollWidth — every ancestor up to <body> already reports a clean,
   contained scrollWidth without it, but Chromium's root viewport scrollWidth otherwise still reflects the
   nested scroller's full content width unless layout containment is explicit. */

.board{display:flex;gap:16px;align-items:flex-start;min-width:min-content}






tr.is-focused>td{background:var(--lime)}








/* Closed column: a native <details>/<summary> (same disclosure pattern as the FAQ list and the mobile nav menu)
   — collapsed by default, expands on click or Enter/Space with no extra script. */





/* === end tracker === */
/* === W3 job page === */
.job-secondary-actions{margin-top:14px;align-items:center}
.save-job-status,.share-status{font-size:11px;color:var(--muted)}
.job-company .data-list a{text-decoration:underline;text-underline-offset:3px}
.safety-tips{margin:14px 0 0;padding-left:20px;font-size:13px;color:var(--text);line-height:1.8}
.safety-tips li{margin:8px 0}
/* === Admin/reporting (C) === */
.data-list.compact{border:1px solid var(--line);border-radius:8px;padding:2px 14px}
.data-list.compact li{padding:9px 0;font-size:11px}
/* === end Admin/reporting (C) === */
/* === end W3 === */
/* === Freshness/search (FRESH-02) === */
/* "New jobs available" banner (app-jobs.mjs): a lightweight, dismiss-on-refresh notice above the feed. Reuses
   .notice's look; the button is the entire clickable target (min 44px tall for touch), not just its text. */


/* Honest empty state for a tight added_within window (jobs.mjs's addedWithinEmptyState) — same shape as the
   generic .empty-state, with a calmer accent than the "no results at all" dashed border, since this is an
   expected, temporary state rather than a dead end. */
.freshness-empty-state{border-style:solid;border-color:var(--line);background:var(--soft)}
/* Freshness <time> elements (Added to ROLIVA / Employer posted / Last checked / Updated) never need their own
   underline or color — they inherit the tag/data-list/muted styling of whatever element already wraps them
   (job-card .tag, job-facts <strong>, app-jobs.mjs's .muted line) so no separate rule is needed for the element
   itself; this comment exists so a later pass doesn't add one by habit. time{cursor:default}. */
time{cursor:default}
/* Country <select> (GEO-01): kept as a native element deliberately — every browser's built-in type-ahead already
   makes a long <option> list keyboard-searchable without extra script, and native selects are touch/AT-friendly
   by default. No override needed beyond the shared input/select rule at the top of this file. */
/* === end FRESH-02 === */
/* === D-JD-01: premium job-description rendering === */
/* Key-facts card: employer/location/work style/employment type/posted-or-added date/salary, reused from
   data already shown elsewhere on the page (never invented here) -- a scannable card ahead of the
   employer's own text, instead of starting the section with a wall of prose. */
.jd-keyfacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:2px 28px;border:1px solid var(--line);border-radius:var(--radius);background:var(--soft);padding:4px 20px;margin:18px 0 28px}
.jd-keyfacts li{border-bottom:1px dashed var(--line)}
.jd-keyfacts li:last-child{border-bottom:0}
/* Readable measure/line-height for the employer's own words; headings the renderer normalises to <h3>
   (one level under this section's own <h2>), styled lists and inline emphasis. */
.jd-body{max-width:68ch;margin-top:4px;font-size:14px;line-height:1.9;color:var(--text)}
.jd-body h3{font-size:19px;line-height:1.3;letter-spacing:-.02em;color:var(--ink);margin:30px 0 10px}
.jd-body h3:first-child{margin-top:0}
.jd-body p{margin:0 0 16px}
.jd-body ul,.jd-body ol{margin:0 0 16px;padding-left:22px}
.jd-body li{margin:7px 0}
.jd-body strong{font-weight:600;color:var(--ink)}
.jd-body em{font-style:italic}
/* Long-description toggle: a native <details>/<summary> (same no-JS disclosure pattern already used for
   the tracker's closed column) -- the full text stays in the DOM either way (SEO, find-in-page), and
   because it is collapsed deterministically at render time, expanding it on click never shifts layout
   that was already painted (CLS 0). */
.jd-more{margin-top:2px}
.jd-more summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:7px;color:var(--green);font-weight:600;font-size:13px;padding:10px 0}
.jd-more summary::-webkit-details-marker{display:none}
.jd-more summary:after{content:'▾';font-size:10px;transition:transform .2s}
.jd-more[open] summary:after{transform:rotate(180deg)}
.jd-more[open] summary{color:var(--muted)}
/* Repeated apply CTA at the foot of the description, so a reader who scrolled through a long posting
   never has to scroll back to the top to act -- the primary header CTA above is unchanged. */
.jd-cta-repeat{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:28px;padding-top:24px;border-top:1px solid var(--line)}
@media(max-width:760px){.jd-keyfacts{grid-template-columns:1fr}}
/* === end D-JD-01 === */

/* === Homepage employer marquee and testimonials === */
/* Text-only employer strip, honest caption, CSS-only loop (no JS). Two identical <ul>s inside one flex track;
   the track's own width is exactly 2x one list's width, so translateX(-50%) is a seamless loop. The outer
   .marquee clips everything to the viewport (overflow:hidden) so the page itself never gains horizontal
   scroll, and nothing here affects document flow height once laid out (CLS 0: no late-loading font or image). */
.marquee-section{max-width:1440px;margin:36px auto 0;padding:0 5.5%}
.marquee-caption{font-size:11px;color:var(--muted);margin:0 0 14px}
.marquee{overflow:hidden}
.marquee-track{display:flex;width:max-content;animation:marquee-scroll 42s linear infinite}
.marquee-list{display:flex;align-items:center;gap:40px;list-style:none;margin:0;padding:0 20px 0 0;white-space:nowrap}
.marquee-list a,.marquee-list span{font-size:14px;font-weight:600;color:var(--muted);text-decoration:none}
.marquee-list a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
@keyframes marquee-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.marquee:hover .marquee-track,.marquee:focus-within .marquee-track{animation-play-state:paused}
/* F-806: the Pause toggle beside the caption (aria-pressed=true keeps the loop paused until pressed again). */
.marquee-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.marquee-head .marquee-caption{margin:0}
.marquee-section.is-paused .marquee-track{animation-play-state:paused}
.marquee-toggle{display:inline-flex;align-items:center;gap:8px;min-height:44px;min-width:44px;padding:8px 14px;border:1px solid var(--line-strong);border-radius:7px;background:transparent;color:var(--green);font-size:12px;font-weight:600}
.marquee-toggle[hidden]{display:none}
.marquee-toggle:hover{background:var(--soft)}
.marquee-toggle[aria-pressed=true]{background:var(--green);border-color:var(--green);color:var(--on-accent)}
.marquee-toggle-icon:before{content:'❚❚';font-size:9px;letter-spacing:-1px}
.marquee-toggle[aria-pressed=true] .marquee-toggle-icon:before{content:'▶';font-size:10px;letter-spacing:0}
@media(prefers-reduced-motion:reduce){
 .marquee-track{animation:none;width:auto;flex-wrap:wrap}
 .marquee-list{flex-wrap:wrap;white-space:normal}
 .marquee-list[aria-hidden=true]{display:none}
 .marquee-toggle{display:none}
}
@media(max-width:760px){.marquee-section{margin-top:28px}}
/* "What people say": real, admin-approved quotes only (render.mjs never renders this section below 3). No star
   ratings, no invented aggregate -- plain quote, name and optional role. */
.testimonials-section{padding-top:70px;padding-bottom:70px}
.testimonials-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:24px}
.testimonial-card{margin:0;background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);padding:26px}
.testimonial-card blockquote{margin:0}
.testimonial-card p{color:var(--ink);font-size:15px;line-height:1.7}
.testimonial-card figcaption{margin-top:16px;font-size:12px;font-weight:600;color:var(--ink)}
.testimonial-card figcaption span{display:block;font-weight:400;color:var(--muted);margin-top:2px}
@media(max-width:1180px){.testimonials-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.testimonials-section{padding-top:45px;padding-bottom:45px}.testimonials-grid{grid-template-columns:1fr}}
/* Dismissible "Share a sentence about ROLIVA" dashboard card (app-settings.mjs / app.mjs) and the matching
   Settings panel form -- reuses .panel/.notice/.inline-actions; only the dismiss affordance is specific here. */


/* === end homepage employer marquee and testimonials === */
/* Admin analytics dashboard: a minimal inline-SVG bar chart (no charting dependency). currentColor lets it pick
   up the panel's text color automatically in both themes; the chart's own sr-only data table (shared.mjs
   already defines .sr-only) carries the same numbers for anyone who needs them as text. */



/* === live chat widget (WhatsApp relay) === */
/* Fixed positioning only -- never reserves layout space on any page, so it can never cause a layout shift or
   page overflow on either a public or a signed-in app page, at any width. The panel is a native modal <dialog>
   (shared.mjs modal()) placed in the bottom-right corner on wide screens and as a bottom sheet on phones. */
.chat-bubble{position:fixed;right:24px;bottom:24px;z-index:90;display:inline-flex;align-items:center;gap:10px;height:54px;padding:0 22px 0 17px;border-radius:999px;background:linear-gradient(135deg,#2d6049,var(--green) 60%);color:var(--on-accent);border:1px solid var(--green);box-shadow:0 14px 34px #183b2b38,0 2px 6px #183b2b24;font-weight:700;font-size:14px;letter-spacing:.01em;transition:transform .2s ease,box-shadow .2s ease}
.chat-bubble svg{flex:none}
.chat-bubble:hover{transform:translateY(-2px);box-shadow:0 18px 40px #183b2b47,0 3px 8px #183b2b2e}
.chat-bubble:focus-visible{outline:3px solid var(--green);outline-offset:3px}
dialog.chat-dialog{margin:0;inset:auto 24px 24px auto;width:min(392px,calc(100vw - 32px));max-width:none;max-height:min(640px,calc(100dvh - 48px));padding:0;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--paper);box-shadow:0 30px 80px #11271c40,0 4px 14px #11271c1f;animation:chat-in .22s ease-out}
dialog.chat-dialog[open]{display:flex;flex-direction:column}
dialog.chat-dialog:has(.chat-thread){height:min(620px,calc(100dvh - 48px))}
dialog.chat-dialog::backdrop{background:#1636282e}
@keyframes chat-in{from{transform:translateY(16px)}to{transform:none}}
.chat-dialog>h2{margin:0;padding:20px 60px 2px 20px;background:var(--green);color:var(--on-accent);font-size:18px;line-height:1.3}
.chat-dialog>.chat-subtitle{margin:0;padding:0 20px 16px;background:var(--green);color:var(--on-accent);font-size:13px}
.chat-dialog>.modal-close{float:none;position:absolute;top:12px;right:12px;width:36px;height:36px;display:grid;place-items:center;color:var(--on-accent);font-size:24px;line-height:1;border-radius:10px}
.chat-dialog>.modal-close:hover{background:#ffffff1f}
.chat-dialog>.modal-close:focus{outline:3px solid var(--lime);outline-offset:0}
.chat-prechat{display:grid;gap:12px;padding:18px 20px 20px;overflow-y:auto}
.chat-prechat .chat-intro{margin:0;color:var(--text);font-size:14px}
.chat-closed-note{margin:0;padding:12px 20px 0;color:var(--text);font-size:14px;font-weight:600}
.chat-prechat label{display:grid;gap:5px;font-size:13px;font-weight:600}
.chat-prechat .button{width:100%;justify-content:center}
.chat-prechat .form-feedback:empty,.chat-composer .form-feedback:empty{display:none}
.chat-honeypot{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.chat-thread{flex:1;min-height:0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;background:linear-gradient(#f2f4ec,var(--paper) 120px)}
.chat-thread:focus-visible{outline:3px solid var(--green);outline-offset:-3px}
.chat-welcome{display:flex;gap:10px;align-items:flex-start;margin-bottom:4px}
.chat-welcome .brand-mark{flex:none;width:30px;height:30px}
.chat-welcome p{margin:0;padding:10px 13px;background:var(--surface);border:1px solid var(--line);border-radius:4px 14px 14px 14px;font-size:13px;color:var(--text)}
.chat-message{max-width:82%;display:grid;gap:3px}
.chat-message p{margin:0;padding:9px 13px;font-size:14px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.chat-message.chat-from-you{align-self:flex-end;justify-items:end}
.chat-message.chat-from-you p{background:var(--green);color:var(--on-accent);border-radius:14px 14px 4px 14px}
.chat-message.chat-from-team{align-self:flex-start}
.chat-message.chat-from-team p{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:14px 14px 14px 4px}
.chat-meta{font-size:11px;color:var(--muted);padding:0 4px}
.chat-composer{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end;padding:12px 14px 6px;border-top:1px solid var(--line);background:var(--surface)}
.chat-composer textarea{min-height:44px;max-height:140px;resize:none;border-radius:12px;padding:11px 13px;line-height:1.4}
.chat-composer .form-feedback{grid-column:1/-1;margin:0}
.chat-send{width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:12px;background:var(--green);color:var(--on-accent);transition:background .2s}
.chat-send:hover{background:var(--green)}
.chat-send:focus-visible{outline:3px solid var(--green);outline-offset:2px}
.chat-footnote{margin:0;padding:0 14px 10px;background:var(--surface);font-size:11px;color:var(--muted)}
@media(max-width:560px){
 .chat-bubble{right:16px;bottom:16px;width:56px;height:56px;padding:0;justify-content:center}
 .chat-bubble-label{display:none}
 dialog.chat-dialog{inset:auto 0 0 0;width:100%;max-height:92dvh;border-radius:20px 20px 0 0;border-bottom:0}
 dialog.chat-dialog:has(.chat-thread){height:88dvh}
}

/* R5.3.1 hotfix: the converted-currency note under a plan price inherited the price's tight letter-spacing and
   became unreadable when a non-USD currency was selected. */
.price .field-help{letter-spacing:normal;word-spacing:normal;font-size:12.5px;line-height:1.5;font-weight:400;margin-top:.45rem;text-wrap:pretty}

/* === R5.4 public premium === */
/* Public marketing pages only (home, pricing, job detail, landing/editorial, auth). Every selector below is scoped to
   markup that only render.mjs/jobs.mjs emit for public pages, so the signed-in workspace is unaffected. */
.text-link{display:inline-block;font-size:13px;font-weight:600;color:var(--green);text-decoration:underline;text-underline-offset:4px;padding-block:10px}
/* Footer: five columns (brand + four link groups) on one row instead of a stray fifth group on its own row. */
@media(min-width:1101px){.site-footer{grid-template-columns:1.6fr repeat(4,minmax(0,1fr));gap:40px}}
@media(min-width:761px) and (max-width:1100px){.site-footer{grid-template-columns:repeat(4,minmax(0,1fr));gap:36px 28px}.site-footer>div:first-child{grid-column:1/-1}}
/* Home hero */








/* Live proof band: real counts + employer marquee in one calm band directly under the hero. */
.proof-band{background:var(--surface);border-block:1px solid var(--line);padding:30px 0 28px}
.proof-band .proof-strip,.proof-band .marquee-section{max-width:1440px;padding-inline:5.5%}
.proof-band .proof-strip{margin-top:0;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 40px}
.proof-band .proof-strip>p{margin:0;max-width:440px}
.proof-band .proof-strip ul{gap:20px 56px}
.proof-band .proof-strip li+li{position:relative}
.proof-band .marquee-section{margin-top:24px}
/* How it works */
.how-steps{list-style:none;padding:0;margin:36px 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.how-steps li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px 26px 26px;display:flex;flex-direction:column;gap:10px}
.how-num{font-size:12px;font-weight:600;letter-spacing:.12em;color:var(--green);background:var(--lime);border-radius:999px;align-self:flex-start;padding:4px 10px}
.how-steps h3{font-size:22px;margin:8px 0 0;letter-spacing:-.025em}
.how-steps p{font-size:13px;color:var(--muted);margin:0}
.how-section .actions{margin-top:30px}
/* Home plan preview */
.plan-mini-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:32px}
.plan-mini{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px 22px;display:flex;flex-direction:column;gap:6px;min-width:0}
.plan-mini h3{font-size:20px;margin:0}
.plan-mini .tag{align-self:flex-start;margin-bottom:4px}
.plan-mini-price{margin:8px 0 0;font-size:13px;color:var(--muted)}
.plan-mini-price strong{font-size:34px;font-weight:500;letter-spacing:-.04em;color:var(--ink)}
.plan-mini-annual{margin:0;font-size:12px;color:var(--muted)}
.plan-mini>p:not([class]){font-size:13px;color:var(--text);margin:8px 0 14px;flex:1}
.plan-mini>.button,.plan-mini>.tag:last-child{margin-top:auto;align-self:flex-start}
.plan-mini.recommended{background:var(--green);border-color:var(--green);color:var(--on-accent)}
.plan-mini.recommended h3,.plan-mini.recommended .plan-mini-price strong{color:var(--on-accent)}
.plan-mini.recommended .plan-mini-price,.plan-mini.recommended .plan-mini-annual,.plan-mini.recommended>p:not([class]){color:var(--muted)}
.plan-mini.recommended .button{background:var(--lime);border-color:var(--lime);color:var(--ink)}
.home-pricing .pricing-note{padding:0;margin:24px 0 0;max-width:none;display:grid;gap:6px}
/* Pricing page */
.billing-toggle{display:inline-flex;flex-wrap:wrap;gap:4px;margin:20px 0 0;padding:4px;border:1px solid var(--line);border-radius:999px;background:var(--surface)}
.billing-toggle label{position:relative;flex-direction:row;align-items:center;gap:8px;padding:9px 18px;border-radius:999px;cursor:pointer;font-size:13px;min-height:40px}
.billing-toggle input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.billing-toggle label:has(input:checked){background:var(--green);color:var(--on-accent)}
.billing-toggle label:has(input:focus-visible){outline:3px solid var(--green);outline-offset:2px}
.price-period{display:block}
.price-period[data-period=year]{display:none}
.pricing-section:has(input[name=billing-period][value=year]:checked) .price-period[data-period=year]{display:block}
.pricing-section:has(input[name=billing-period][value=year]:checked) .price-period[data-period=month]{display:none}
.pricing-intro.editorial-intro{padding:56px 40px 8px}
.pricing-intro h1{font-size:clamp(38px,4.2vw,60px);margin-bottom:18px}
.pricing-section.section{padding-top:44px}
#pricing-cards .price-card{transition:box-shadow .2s}
#pricing-cards .price-card:hover{box-shadow:var(--shadow)}
#pricing-cards .price-card.recommended{box-shadow:0 24px 60px #183b2b2e}
.price-card>.button{align-self:stretch}
/* The "≈ converted from …" note sits inside .price: never inherit the price figure's tight letter-spacing (same reset as
   the R5.3.1 hotfix). */
.price .field-help{letter-spacing:normal;word-spacing:normal;font-size:12.5px;line-height:1.5;font-weight:400;margin-top:.45rem;text-wrap:pretty}
.price-card.recommended .price .field-help{color:var(--on-accent)}
.price-card .coming-next{margin:0;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.price-card ul.coming-next-list{flex:0 0 auto;padding-top:4px}
.price-card ul:has(+.coming-next){flex:0 0 auto}
.price-card .coming-next-list+*{margin-top:auto}
.price-card.recommended .coming-next{color:var(--muted)}
#pricing-cards .price-card>.tag,.sprint-panel .price-card>.tag{align-self:flex-start;margin-bottom:10px}
.pricing-login{font-size:13px;color:var(--muted);margin:10px 0 0}
.pricing-login a{color:var(--green);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.pricing-assurances{list-style:none;padding:0;margin:30px 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.pricing-assurances li{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;display:flex;flex-direction:column;gap:6px}
.pricing-assurances strong{font-size:15px;font-weight:600;color:var(--ink)}
.pricing-assurances span{font-size:12px;line-height:1.7;color:var(--text)}
.sprint-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:44px;align-items:center;padding:36px;margin-top:8px}
.sprint-panel .eyebrow{margin-bottom:14px}
.sprint-panel .sprint-copy h2{font-size:32px}
.sprint-panel .sprint-copy p:last-child{font-size:14px;color:var(--muted)}
.sprint-panel .price-card{box-shadow:var(--shadow)}
.plan-compare .compare-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-top:30px}
.compare-table{min-width:760px;font-size:13px}
.compare-table th,.compare-table td{padding:13px 16px;text-align:center;vertical-align:middle}
.compare-table th{text-transform:none;letter-spacing:0;background:transparent}
.compare-table th[scope=row]{text-align:left;font-weight:400;color:var(--text);font-size:13px}
.compare-table thead th{font-size:15px;font-weight:600;color:var(--ink);vertical-align:bottom;padding-top:22px}
.compare-table thead th .tag{display:table;margin:6px auto 0}
.compare-table .is-recommended{background:var(--soft)}
.compare-price td{font-size:18px;font-weight:600;color:var(--ink);letter-spacing:-.02em}
.compare-price td small{font-size:11px;font-weight:400;color:var(--muted);letter-spacing:0}
.compare-group th{background:var(--soft);text-align:left;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:10px 16px}
.compare-yes{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--lime);color:var(--green);font-weight:700;font-size:13px}
.compare-no{color:var(--muted)}
.compare-wrap:focus-visible{outline-offset:2px}
.compare-table th[scope=row],.compare-table thead th:first-child{position:sticky;left:0;z-index:1;background:var(--surface);min-width:170px;max-width:260px}
.compare-scroll-hint{display:none;font-size:12px;color:var(--muted);margin:14px 0 0}
#pricing-cards .price-card[data-product=FREE] .price{font-size:clamp(30px,2.6vw,38px)}
.pricing-faq{padding-top:40px}
.pricing-closing{margin-top:20px}
/* Auth pages */
.auth-aside>p{max-width:390px;color:var(--muted)}
.auth-aside h1 em{color:var(--green)}
.auth-points{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:13px;font-size:14px;color:var(--text)}
.auth-points li{display:flex;align-items:flex-start;gap:12px}
.auth-points li:before{content:'';width:20px;height:20px;margin-top:2px;border-radius:50%;flex-shrink:0;background:var(--lime) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.2 2.2 4.8-4.8' fill='none' stroke='%23244f3e' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/18px no-repeat}
.auth-card{border-radius:18px;padding:36px;box-shadow:0 24px 70px #183b2b14}
.auth-card h2{margin-bottom:22px}
.auth-card input:focus{border-color:var(--green)}
.password-toggle-slot{height:28px;margin:-14px 0 -6px}
#auth-password-help{margin:-12px 0 0}
.password-toggle{font-weight:600;min-height:28px;padding:2px 0}
.password-toggle[aria-pressed=true]{color:var(--ink)}
.token-state{display:grid;gap:12px;padding:20px;margin-bottom:16px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
.token-state h3{font-size:20px;margin:0}
.token-state p{margin:0;font-size:13px}
.auth-card .auth-switch{font-size:13px;margin:4px 0 6px}
.auth-card .auth-switch a{color:var(--green);font-weight:600}
/* R11: "Continue with Google" (capability-driven; see apps/web/site/render.mjs auth()) */
.google-signin-button{width:100%;justify-content:center;margin-bottom:14px;gap:10px}
.google-g{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--surface);color:var(--ink);font-weight:700;font-size:12px}
.auth-divider{display:flex;align-items:center;gap:10px;margin:0 0 16px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.auth-divider:before,.auth-divider:after{content:'';flex:1;height:1px;background:var(--line)}
/* Job detail */
.job-hero.editorial-intro{max-width:1440px;text-align:left;padding:34px 5.5% 30px}
.job-hero .eyebrow{justify-content:flex-start}
.job-hero-company{font-size:14px;letter-spacing:0;font-weight:600;color:var(--text);margin-bottom:16px}
.job-hero-company .company-logo{width:36px;height:36px;border-radius:9px;background:var(--surface);border:1px solid var(--line);display:inline-grid;place-items:center;font-size:16px;color:var(--ink)}
.job-hero h1{font-size:clamp(34px,3.8vw,54px);margin-bottom:14px;max-width:900px}
.job-hero .lead{margin:0;max-width:none}
.job-hero-salary{margin:12px 0 0}
.job-hero-salary .tag{font-size:12px;padding:4px 10px}
.job-hero .actions{justify-content:flex-start;margin-top:24px}
.job-hero>.field-help{margin-top:10px}
.job-hero .job-secondary-actions{margin-top:14px}
.job-layout{max-width:1440px;margin:0 auto;padding:0 5.5% 20px;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:44px}
.job-layout .section{max-width:none;margin:0;padding:34px 0}
.job-main-col{min-width:0}
.job-main-col>[data-match-cta] .panel{margin:8px 0 0}
.job-main-col .job-description{padding-top:20px}
.job-main-col .jd-keyfacts{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 24px;padding:6px 22px;background:var(--surface)}
.job-main-col .jd-keyfacts li{flex-direction:column;justify-content:flex-start;gap:2px;padding:12px 0;border-bottom:0}
.job-main-col .jd-keyfacts li>span{font-size:11px;color:var(--muted)}
.job-main-col .jd-keyfacts strong{font-size:14px}
.job-main-col h2,.job-aside h2{font-size:clamp(24px,2.2vw,30px)}
.job-aside{min-width:0;display:flex;flex-direction:column;gap:18px;padding-top:20px}
.job-aside .section{padding:22px 22px 18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.job-aside .section h2{font-size:20px;margin-bottom:8px}
.job-aside .data-list li{flex-direction:column;gap:2px;padding:11px 0}
.job-aside .data-list li>span{font-size:11px;color:var(--muted)}
.job-aside .data-list strong{font-size:13px;overflow-wrap:anywhere}
.job-track-card{position:sticky;top:20px;background:var(--green);color:var(--on-accent);border-radius:var(--radius);padding:24px 22px;display:flex;flex-direction:column;gap:12px}
.job-track-card .small-label{color:var(--muted);margin:0}
.job-track-title{color:var(--on-accent);margin:0;font-size:17px;font-weight:600;line-height:1.35;letter-spacing:-.01em}
.job-track-card .button{background:var(--lime);border-color:var(--lime);color:var(--ink)}
.job-track-card .button.secondary{background:transparent;border-color:var(--line-strong);color:var(--on-accent)}
.job-track-card .button.secondary:hover{background:#ffffff14}
.job-track-card .field-help{color:var(--muted);margin:0}
.job-detail .job-explore,.job-detail .job-similar{padding-top:50px;padding-bottom:50px}
/* Landing/editorial pages: the steps block sits between the editorial body and the closing call to action. */
.editorial-body+.how-section{padding-top:50px}
/* Tablet and below */
@media(max-width:1100px){
 .plan-mini-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .job-layout{grid-template-columns:minmax(0,1fr) 300px;gap:32px}
}
@media(max-width:900px){
 .job-layout{grid-template-columns:minmax(0,1fr);gap:0}
 .job-aside{padding-top:10px}
 .job-track-card{position:static}
 .sprint-panel{grid-template-columns:minmax(0,1fr);gap:20px}
}
@media(max-width:760px){
 
 
 
 /* The decorative graph adds ~450px before any proof on a phone; it is hidden there (its lazy WebGL loader then never
    starts, since it waits for the canvas to scroll into view). */
 
 .how-steps,.plan-mini-grid{grid-template-columns:minmax(0,1fr)}
 .proof-band{padding:24px 0 22px}
 .proof-band .proof-strip ul{gap:16px 32px}
 .proof-band .proof-strip,.proof-band .marquee-section{padding-inline:6%}
 .billing-toggle{display:flex;border-radius:14px}
 .billing-toggle label{flex:1 1 auto;justify-content:center;border-radius:10px}
 .sprint-panel{padding:22px}
 .pricing-intro.editorial-intro{padding:40px 6% 4px}
 .pricing-section.section{padding-top:30px}
 .compare-table{min-width:620px}
 .compare-table th,.compare-table td{padding:12px 10px}
 .compare-table th[scope=row],.compare-table thead th:first-child{min-width:132px;max-width:150px;font-size:12px;box-shadow:1px 0 0 var(--line)}
 .compare-scroll-hint{display:block}
 .sprint-panel .sprint-copy h2{font-size:26px}
 .auth-card{padding:24px}
 .job-hero.editorial-intro{padding:22px 6% 20px}
 .job-hero h1{font-size:32px}
 .job-hero .actions:not(.job-secondary-actions) .button{flex:1 1 100%}
 .job-hero .job-secondary-actions .button{flex:1 1 40%}
 .job-layout{padding:0 6% 10px}
 .job-main-col .jd-keyfacts{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px;padding:4px 16px}
 .job-layout .section{padding:26px 0}
 .job-aside .section{padding:18px 16px 14px}
}

/* === R5.4 workspace premium === */
/* Home/Daily lead row: the one next step beside what is left on the plan. Stacks on a phone with the next step first. */










.onboarding h2{font-size:21px}
/* Usage meters (plan card, Billing, limit prompt): text carries the number; the bar is decorative. */









/* First-run checklist */
.onboarding{border-color:var(--line);background:linear-gradient(180deg,#fbfcf8,#fff)}
.onboarding .toolbar{align-items:flex-start;margin-bottom:12px}
.onboarding .small-label{display:block;margin-bottom:6px}













/* Loading and error states */

.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--green);animation:r54-spin .8s linear infinite;flex-shrink:0}
@keyframes r54-spin{to{transform:rotate(360deg)}}



.loading-state .inline-actions{justify-content:center}
/* Studios: credits left beside the create button, and visible progress while a long draft is prepared. */










@keyframes r54-pulse{to{background:var(--lime)}}






/* Billing: plan summary and refund/cancellation explainer */







.refund-window{font-size:12px;color:var(--text)}
/* Consistency: workspace forms and headings on the shared type scale */
.app-content .panel h2{line-height:1.25}
.app-content .search-bar{align-items:end}
.app-content .field-help{line-height:1.6}
.app-content .data-list .text-button{white-space:nowrap}
.app-content .data-list li>.tag{align-self:center;flex-shrink:0}
.app-content label>.field-help{display:block;font-weight:400;margin-top:6px;letter-spacing:0}
.app-content .button:focus-visible,.app-content .text-button:focus-visible{outline:3px solid var(--green);outline-offset:3px}



@media(max-width:760px){
 
 
 
 
 
 
 .onboarding .toolbar{flex-direction:column;gap:6px}
 .app-content .job-card{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:start;gap:10px 12px}
 .app-content .job-card .match-score{grid-column:2;justify-self:start;display:flex;align-items:baseline;gap:6px;text-align:left}
 .app-content .job-card .job-card-actions{grid-column:1/-1;margin-left:0}
 .app-content .job-card .job-meta{gap:5px}
 
 
 
}
@media(prefers-reduced-motion:reduce){.spinner{animation:none}}


.chip{border:1px solid var(--line-strong);background:var(--surface);color:var(--green);border-radius:99px;padding:7px 12px;font:inherit;font-size:12px;cursor:pointer;min-height:32px}
.chip:hover{background:var(--soft)}
/* Profile setup wizard, country/currency pickers and grouped evidence */






















/* Studio drafts: section heads with copy, readable multi-line text */



/* P1-1: the match preview panel on the public job page sits in the same container as the sections around it */
.job-detail>[data-match-cta]{max-width:1440px;margin-inline:auto;padding-inline:5.5%;box-sizing:border-box}



/* Touch targets: at least 44px on a phone for workspace navigation, small buttons, text actions and disclosures */
@media(max-width:760px){
 .job-detail>[data-match-cta]{padding-inline:6%}
 .sidebar nav a{min-height:44px;display:flex;align-items:center}
 /* F-805: the sidebar's bottom links (Support, the admin pages, Privacy & security) stay on a phone as a wrapping row
    under the workspace nav strip, instead of being hidden with no other way to reach them. */
 
 
 
 .app-content .button.small,.app-content summary{min-height:44px}
 .app-content .text-button{min-height:44px;display:inline-flex;align-items:center}
 .app-content summary{padding-block:10px;box-sizing:border-box}
 
 .chip{min-height:44px}
 
}





/* F-004 (D-QA-15): a long action label in a Roli answer wraps inside the panel instead of widening the page. */
#roli-result{min-width:0;overflow-wrap:anywhere}
/* === end R5.4 workspace premium === */
/* R5.4 SEO data */
.insights-intro h1{font-size:clamp(30px,4.2vw,54px);overflow-wrap:anywhere}
.insights-summary,.insights-skills,.insights-where,.insights-method,.insights-cite,.insights-roles,.insights-blog{padding-top:32px;padding-bottom:32px}
.insights-facts{margin-bottom:12px}.insights-facts .insights-date{font-size:20px;line-height:1.6}
.insights-table caption{caption-side:top;text-align:left;font-size:13px;color:var(--muted);padding:0 0 10px}
.insights-table th[scope=row]{text-transform:none;letter-spacing:0;font-size:13px;font-weight:600;color:var(--ink);background:transparent}
.insights-table th,.insights-table td{min-width:0;padding:11px 10px;font-size:13px}.insights-table td:first-child{min-width:0}
.insights-table th[scope=row] a{text-decoration:underline}
.insights-method p,.insights-cite p{max-width:760px}
.insights-cite-line{font-size:14px;padding:14px 16px;border-left:3px solid var(--green);background:var(--soft);overflow-wrap:anywhere}
.insights-role-link{max-width:1440px;margin:-12px auto 0;padding:0 5.5% 12px;font-size:14px}.insights-role-link a{text-decoration:underline}
.insights-next{gap:12px}
@media(max-width:760px){.insights-facts{grid-template-columns:1fr 1fr}.insights-table th,.insights-table td{padding:9px 6px;font-size:12px}.insights-table th[scope=col]{letter-spacing:0;text-transform:none;font-size:11px}.insights-role-link{padding:0 6% 12px}}
/* === end R5.4 SEO data === */
/* R5.4 SEO discovery */
.geo-card{display:grid;gap:6px}
.geo-note{margin:0;font-size:12px;color:var(--text);overflow-wrap:anywhere}
.geo-note span{font-weight:600;color:var(--ink)}
.geo-links{padding-top:24px;padding-bottom:24px}
/* === end R5.4 SEO discovery === */
/* R5.4 SEO templates */
.template-intro{padding-bottom:36px}
.template-downloads{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin:26px 0 8px}
.template-detail,.template-changes,.template-howto,.template-hub{padding-top:36px;padding-bottom:36px}
.template-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:48px;align-items:start}
.template-grid.single{grid-template-columns:minmax(0,1fr);max-width:820px}
.template-preview{margin:0}.template-preview figcaption{margin-bottom:10px}
.template-paper{background:var(--white);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);padding:30px 34px;font-family:Calibri,Carlito,Arial,sans-serif;font-size:11px;line-height:1.45;color:#1a1a1a;overflow-wrap:anywhere}
.template-paper p{margin:0}.template-paper ul{margin:2px 0 6px;padding-left:16px}.template-paper li{margin:1px 0}
.template-paper .tp-name{font-size:21px;font-weight:700;color:#111827;line-height:1.2}
.template-paper .tp-headline{font-size:12px;color:#374151}
.template-paper .tp-contact{color:#4b5563;padding-bottom:6px;border-bottom:1px solid #b8c2cf;margin-bottom:4px}
.template-paper .tp-h{font-weight:700;text-transform:uppercase;color:#1f3a5f;border-bottom:1px solid #b8c2cf;margin:10px 0 4px;letter-spacing:.02em}
.template-paper .tp-row{display:flex;justify-content:space-between;gap:12px;margin-top:4px}.template-paper .tp-row>span:last-child{color:#4b5563;white-space:nowrap}
.template-paper .tp-sub{color:#374151}
.template-notes h2,.template-changes>h2,.template-howto h2,.template-hub h2,.template-more h2{font-size:clamp(22px,2.4vw,27px);letter-spacing:-.02em}
.template-notes h2+*{margin-top:12px}.template-notes h2:not(:first-child){margin-top:30px}
.template-checks,.template-steps{padding-left:20px;font-size:14px;line-height:1.8}.template-checks li,.template-steps li{margin-bottom:8px}
.template-change-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px 36px;margin-top:18px}
.template-change-list article{border-top:1px solid var(--line);padding-top:16px}.template-change-list h3{font-size:17px;margin:0 0 6px}.template-change-list p{font-size:14px;line-height:1.75;color:var(--text);margin:0}
.template-cta h2{width:100%;text-align:center;margin:0}.template-cta p{flex:0 0 100%;padding-inline:max(0px,calc((100% - 760px)/2));text-align:center;font-size:14px;line-height:1.75;color:var(--text);margin:0 0 6px}
.template-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}
.template-card{background:var(--var(--surface));border:1px solid var(--line);border-radius:var(--radius);padding:22px 22px 18px}
.template-card h2{font-size:19px;margin:0 0 8px}.template-card h2 a{text-decoration:none}.template-card h2 a:hover{text-decoration:underline}.template-card>p{font-size:13px;line-height:1.7;color:var(--text)}
.template-card-links{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:12px;font-size:13px}.template-card-links span{color:var(--muted);font-size:11px}
.template-columns li{display:grid;grid-template-columns:minmax(104px,30%) minmax(0,1fr);gap:14px}.template-columns li span{color:var(--text)}
@media(max-width:900px){.template-grid{grid-template-columns:minmax(0,1fr);gap:32px}}
@media(max-width:760px){.template-cta h2,.template-cta p{text-align:left}.template-detail,.template-changes,.template-howto,.template-hub{padding-top:24px;padding-bottom:24px}.template-paper{padding:20px 16px;font-size:10.5px}.template-paper .tp-row{flex-wrap:wrap;gap:0 12px}.template-downloads{justify-content:flex-start}}
/* R5.4 SEO examples */
.ph{background:var(--lime);color:var(--ink);border-radius:4px;padding:0 3px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.resume-example{margin:24px 0 0;max-width:820px}
.resume-sheet{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:36px 40px;font-size:14px;line-height:1.7;color:var(--text);overflow-wrap:anywhere}
.resume-sheet h4{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);border-bottom:1px solid var(--line);padding-bottom:6px;margin:22px 0 10px}
.resume-sheet ul{margin:6px 0 14px;padding-left:20px}
.resume-sheet li{margin:4px 0}
.resume-sheet p{margin:6px 0}
.resume-name{font-size:22px;font-weight:600;color:var(--ink)}
.resume-contact{color:var(--muted);font-size:13px}
.resume-role{font-weight:600;color:var(--ink)}
.letter-sheet p{margin:0 0 14px}
.resume-example figcaption{margin-top:12px}
.example-demand .demand-lead{font-size:18px;line-height:1.6;max-width:760px;color:var(--ink)}
.example-demand .demand-list{max-width:760px;margin:10px 0 14px}
.example-demand .demand-list li{font-size:14px}
.example-link{max-width:1440px;margin:0 auto;padding:0 5.5% 10px;font-size:14px}
.example-link a{text-decoration:underline}
.guide-advice-title{padding-top:30px;margin:0 0 6px}
.guide-advice article h3{font-size:22px;letter-spacing:-.02em;margin:0 0 6px}
.guide-rules,.guide-steps,.guide-patterns{max-width:820px;padding-left:22px;font-size:14px;line-height:1.8;color:var(--text)}
.guide-rules li,.guide-steps li,.guide-patterns li{margin:8px 0}
.guide-links a span{color:var(--muted)}
.fresher-filters a[aria-current="page"]{font-weight:600;color:var(--green)}
@media(max-width:760px){.resume-sheet{padding:22px 18px;font-size:13px}.example-demand .demand-lead{font-size:16px}.example-link{padding:0 6% 10px}.guide-advice article h3{font-size:19px}}
/* R5.4 SEO checker */
.ats-checker .ats-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.ats-checker fieldset{margin:0;min-width:0}
.ats-checker legend{font-weight:700;font-size:16px;padding:0 4px;color:var(--ink)}
.ats-checker label{margin:6px 0}
.ats-checker textarea{min-height:240px;font-size:13px;line-height:1.5}
.ats-source{display:flex;flex-wrap:wrap;gap:4px 18px;margin-bottom:8px}
.ats-source label{flex-direction:row;align-items:center;gap:8px;min-height:44px;margin:0;font-weight:400}
.ats-source input{width:auto}
.ats-or{margin:12px 0 0;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.ats-file input{padding:9px}
.ats-privacy{margin:4px 0 14px}
.ats-result{margin-top:18px}
.ats-result:focus{outline:none}
.ats-report h3{margin-top:22px}
.ats-report .ats-summary{font-size:18px;line-height:1.5;margin:8px 0 12px}
.ats-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:18px;margin:14px 0}
.ats-terms{list-style:none;padding:0;margin:8px 0;display:flex;flex-wrap:wrap;gap:6px}
.ats-terms li{padding:4px 9px;border-radius:5px;border:1px solid var(--line);background:var(--soft);font-size:12px;overflow-wrap:anywhere;max-width:100%}
.ats-terms.found li{background:var(--tint);border-color:var(--line);color:var(--green)}
.ats-terms.missing li{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-ink)}
.ats-checks{list-style:none;padding:0;margin:8px 0 16px;display:grid;gap:10px}
.ats-checks li{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--surface);min-width:0}
.ats-checks li div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ats-checks li p{margin:6px 0 0}
.ats-fixes{padding-left:20px;line-height:1.7;font-size:13px}
.ats-preview{margin:0 0 16px}
.ats-preview pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow:auto;background:var(--soft);padding:12px;border-radius:8px;font-size:12px}
.ats-checker-link{margin:4px 0 18px}
.ats-checker-band{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px}
.ats-checker-band>div{flex:1 1 320px;min-width:0}
@media(max-width:760px){.ats-checker .ats-grid{grid-template-columns:1fr}.ats-checker textarea{min-height:180px}}
/* R5.4 SEO integration: footer gains a "Free tools" column (five link columns) */
@media(min-width:1101px){.site-footer{grid-template-columns:1.4fr repeat(5,minmax(0,1fr));gap:32px}}
@media(min-width:761px) and (max-width:1100px){.site-footer{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* === end R5.4 SEO integration === */
/* R5.5 rolepages */
.iq-section{max-width:1000px}
.iq-based{font-size:15px;color:var(--ink);max-width:820px}
.iq-card{border-top:1px solid var(--line);padding:26px 0;max-width:820px}
.iq-card h3{font-size:21px;line-height:1.35;letter-spacing:-.02em;margin:0 0 10px}
.iq-card h3 .small-label{display:inline-block;margin-right:8px;vertical-align:middle}
.iq-card p{font-size:14px;line-height:1.8;margin:0 0 8px}
.iq-why{color:var(--muted)}
.iq-outline-title{font-weight:600;color:var(--ink)}
.star-outline{padding-left:22px;font-size:14px;line-height:1.8;color:var(--text);margin:0}
.star-outline li{margin:6px 0;overflow-wrap:anywhere}
.cl-guard{max-width:820px;padding:12px 16px;border:1px solid var(--line);background:var(--tint);border-radius:8px;font-size:14px}
.cl-pairs{list-style:none;padding:0;max-width:820px}
.cl-pairs li{border-top:1px solid var(--line);padding:16px 0}
.cl-pairs p{font-size:14px;line-height:1.8;margin:0 0 6px;overflow-wrap:anywhere}
.cl-pairs .small-label{display:inline-block;min-width:56px}
.role-guide-link{padding-top:0}
@media(max-width:760px){.iq-card h3{font-size:18px}}
/* === end R5.5 rolepages === */
/* R5.5 formats */
.paper-choice{border:1px solid var(--line);border-radius:8px;margin:14px 0;padding:10px 14px;min-width:0}
.paper-choice legend{font-weight:600;font-size:13px;padding:0 4px;color:var(--ink)}
.paper-choice .check{margin:6px 0}
.template-card h3{font-size:19px;margin:0 0 8px}.template-card h3 a{text-decoration:none}.template-card h3 a:hover{text-decoration:underline}
.guide-pattern{overflow-wrap:anywhere}
[data-guide] .notice{margin-top:14px}
/* === end R5.5 formats === */
/* R5.5 quizzes */
.quiz-tool input[type=checkbox],.quiz-tool input[type=radio]{width:22px;height:22px;min-width:0;flex:0 0 auto;padding:0;margin:2px 0 0;accent-color:var(--green)}
.checklist{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:14px}
.checklist li{display:grid;grid-template-columns:22px minmax(0,1fr);column-gap:12px;align-items:start}
.checklist label{display:block;font-size:14px;font-weight:600;line-height:1.6;color:var(--ink);cursor:pointer}
.checklist .field-help{grid-column:2;margin:2px 0 0}
.checklist-n{color:var(--muted);font-size:12px}
.checklist-cols{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px 24px}
.quiz-options{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:10px}
.quiz-options label{display:flex;flex-direction:row;gap:9px;align-items:flex-start;font-size:14px;cursor:pointer}
.quiz-result:not(:empty){background:var(--var(--surface));border:1px solid var(--line);border-left:4px solid var(--green);border-radius:var(--radius);padding:22px;margin:8px 0 22px}
.quiz-result h2{font-size:22px;margin:0 0 10px}.quiz-result:focus{outline:2px solid var(--green);outline-offset:3px}
.quiz-todo{padding-left:20px;display:grid;gap:10px;font-size:14px;line-height:1.6}
.quiz-roles{list-style:none;padding:0;display:grid;gap:14px;margin:12px 0}.quiz-roles .panel{margin:0}.quiz-roles h3{margin:0 0 6px}
.quiz-count{font-size:14px;font-weight:600;color:var(--ink);min-height:1px}
.quiz-privacy{margin-top:14px}
.role-guide{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px 28px}
.role-guide li{border-top:1px solid var(--line);padding-top:12px}.role-guide h3{font-size:16px;margin:0 0 4px}.role-guide p{font-size:13px;line-height:1.6;margin:4px 0}
.country-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}.country-card{margin:0}.country-card h3{margin-top:0}
.country-facts{display:grid;gap:4px;font-size:14px;line-height:1.6}.country-facts dt{font-weight:700;color:var(--ink);margin-top:6px}.country-facts dd{margin:0}
.partner-assets{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}.partner-assets .panel{margin:0}.partner-assets h3{font-size:16px;margin:0 0 6px}.partner-assets p{font-size:14px;line-height:1.6;margin:0}
.quiz-sources ul{font-size:13px;line-height:1.8;padding-left:20px}.quiz-sources a{overflow-wrap:anywhere}
@media print{.site-header,.site-footer,.breadcrumbs,.consent-banner,.quiz-tool .actions,.quiz-privacy,.quiz-next,.skip-link,#toast{display:none!important}
 body,.public-body{background:var(--surface)}.quiz-tool .panel{border:0;padding:0}.checklist li{break-inside:avoid}}
/* === end R5.5 quizzes === */
/* R5.5 tools */
.free-tool .ft-single{display:grid;gap:18px;max-width:820px}
.free-tool .ft-kind{margin:0 0 18px;max-width:520px}
.free-tool select{width:100%;min-height:44px}
.free-tool .ft-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.free-tool .ft-pair label{display:flex;flex-direction:column;gap:4px}
.free-tool fieldset textarea[name="achievement"]{min-height:64px}
.ft-signed-in{margin:0 0 18px}
.ft-report .ft-draft{margin:12px 0}
.ft-report .ft-draft p{overflow-wrap:anywhere}
.ft-copy-status{font-size:12px;color:var(--muted);align-self:center}
.ft-pairs{padding-left:20px;display:grid;gap:10px;line-height:1.6}
.ft-pairs li{overflow-wrap:anywhere}
.ft-questions{list-style:none;padding:0;margin:12px 0;display:grid;gap:14px}
.ft-question{border:1px solid var(--line);border-radius:8px;padding:14px;background:var(--surface);min-width:0}
.ft-question h3{margin:4px 0 8px;font-size:16px;line-height:1.45;overflow-wrap:anywhere}
.ft-question textarea{min-height:120px}
.ft-star{border:0;padding:0;margin:10px 0 0}
.ft-star legend{font-weight:600;font-size:13px;padding:0}
.ft-checklist ul{padding-left:20px;line-height:1.6;font-size:13px}
.writing-tools-role-link{margin:4px 0 18px}
@media(max-width:760px){.free-tool .ft-pair{grid-template-columns:1fr}}
/* === end R5.5 tools === */
/* R5.5 articles: /compare pages (claim sources, side-by-side areas) */
.compare-scope,.compare-areas,.compare-prices,.compare-fit,.compare-method,.compare-list{max-width:1100px;padding-top:36px;padding-bottom:36px}
.compare-points{padding-left:20px}.compare-points li,.compare-cols li{margin:8px 0;font-size:14px;line-height:1.7;color:var(--text);overflow-wrap:anywhere}
.compare-area{border-top:1px solid var(--line);padding:22px 0}.compare-area h3{font-size:21px;margin-bottom:12px}
.compare-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 40px}.compare-cols ul{padding-left:18px;margin:0}.compare-cols h2{font-size:clamp(24px,2.4vw,32px)}
.claim-src{font-size:11px;color:var(--muted);white-space:normal}.claim-src a{text-decoration:underline}
.compare-checked{margin-top:14px}.compare-method p{max-width:780px}
@media(max-width:760px){.compare-cols{grid-template-columns:1fr}.compare-scope,.compare-areas,.compare-prices,.compare-fit,.compare-method,.compare-list{padding-top:24px;padding-bottom:24px}}
/* === end R5.5 articles === */

/* F-202: a field the signup API refused is named under that field. */
.field-error{font-size:12px;color:var(--red);margin:4px 0 0;font-weight:600}
/* F-1306 (D-QA-18 cont.): the dark recommended card's light text colour must not reach its tags or text buttons, which
   keep their own light backgrounds or need a light foreground (at least 4.5:1 either way). */
.price-card.recommended .tag{color:var(--text)}
.price-card.recommended .tag.good{color:var(--green)}
.price-card.recommended .tag.warning{color:var(--warn-ink)}
.price-card.recommended .text-button,.price-card.recommended .text-button.danger{color:var(--on-accent)}
/* ───────────────────────── R7 design layer (docs/design/roliva-design-system.md) ─────────────────────────
   Calm, chat-first AI-product look: neutral surfaces, one green accent, rounded pill controls, soft depth.
   Everything above stays as the structural base; this layer only restyles it through the tokens in :root. */
body{background:var(--paper);color:var(--ink);font-size:15.5px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4{font-weight:650;letter-spacing:-.025em;color:var(--ink)}
h1{font-size:clamp(36px,4.4vw,60px);line-height:1.08}
h2{font-size:clamp(26px,2.7vw,38px);line-height:1.15}
h3{font-size:20px;letter-spacing:-.015em}
em{font-family:inherit;font-style:normal;font-weight:inherit;color:var(--green)}
p{color:var(--text)}
a{text-decoration-color:color-mix(in srgb,currentColor 35%,transparent)}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:6px}
::selection{background:var(--accent-soft);color:var(--ink)}
.eyebrow,.small-label{font-size:11.5px;letter-spacing:.06em;color:var(--muted);font-weight:600}
.eyebrow{margin-bottom:16px}
.lead{color:var(--muted);font-size:17px;line-height:1.7}
/* Header: slim, sticky and translucent */
.site-header{position:sticky;top:0;z-index:40;max-width:none;padding:12px max(20px,calc((100vw - 1200px)/2));border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper) 82%,transparent);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px)}
.brand{font-size:23px;letter-spacing:-1px;gap:8px;color:var(--ink)}
.brand-mark{width:28px;height:28px;border-radius:9px;background-color:var(--green)}
.site-header nav,.header-actions{gap:6px;font-size:14px}
.site-header nav a,.header-actions>a:not(.button){padding:8px 12px;border-radius:var(--radius-pill);color:var(--text);transition:background var(--fast),color var(--fast)}
.site-header nav a:hover,.header-actions>a:not(.button):hover{background:var(--soft);color:var(--ink)}
.theme-toggle{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--text);font-size:16px;line-height:1;padding:0;transition:background var(--fast)}
.theme-toggle:hover{background:var(--soft)}
/* Buttons */
.button{gap:8px;border-radius:var(--radius-pill);padding:11px 20px;font-size:14px;font-weight:600;background:var(--green);border-color:var(--green);color:var(--on-accent);box-shadow:0 1px 2px #0000001a;transition:background var(--fast) var(--ease),transform var(--fast) var(--ease),box-shadow var(--fast)}
.button:hover{background:var(--green-hover);border-color:var(--green-hover);transform:translateY(-1px)}
.button:active{transform:translateY(0) scale(.98)}
.button.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong);box-shadow:none}
.button.secondary:hover{background:var(--soft);border-color:var(--line-strong)}
.button.small{padding:7px 14px;font-size:13px;gap:6px}
.button.danger{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}
.header-actions .button{padding:8px 16px}
.button[aria-busy=true]{opacity:.75;pointer-events:none}
button:disabled,.button[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none}
.chip{border-color:var(--line);background:var(--surface);color:var(--text);padding:7px 14px;font-size:13px;transition:background var(--fast),border-color var(--fast),color var(--fast)}
.chip:hover{background:var(--soft);border-color:var(--line-strong);color:var(--ink)}
.tag{border-radius:var(--radius-pill);padding:2px 10px;font-size:11.5px;background:var(--soft);border-color:var(--line)}
.tag.good{background:var(--good-bg);color:var(--good-ink);border-color:transparent}
.tag.warning{background:var(--warn-bg);color:var(--warn-ink);border-color:var(--warn-line)}
/* Forms */
input,select,textarea{background:var(--surface);color:var(--ink);border:1px solid var(--line-strong);border-radius:12px;padding:11px 14px;transition:border-color var(--fast),box-shadow var(--fast)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--accent-soft)}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:.85}
label{font-size:13.5px;font-weight:600;color:var(--ink)}
input[type=checkbox],input[type=radio]{accent-color:var(--green)}
/* Surfaces */
.panel,.job-card,.feature-card,.price-card,.plan-mini,.auth-card,.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.job-card{transition:border-color var(--fast),box-shadow var(--fast),transform var(--fast)}
.job-card:hover,.feature-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-lg);transform:translateY(-1px)}
.notice{background:var(--info-bg);border:1px solid var(--info-line);color:var(--info-ink);border-radius:12px}
.empty-state{border-radius:var(--radius);border-color:var(--line-strong);background:var(--soft)}
.section{max-width:1200px;padding:72px 20px}
.editorial-intro{max-width:1200px;margin:auto;padding:56px 20px 24px}
.faq-item{border-color:var(--line)}
.faq-item summary{padding:18px 4px;font-weight:600;color:var(--ink);cursor:pointer}
.closing{background:var(--soft);color:var(--ink);border-radius:28px;max-width:1160px;margin:40px auto 72px;border:1px solid var(--line)}
.closing h2,.closing .eyebrow{color:var(--ink)}
.site-footer{max-width:1200px;padding:56px 20px;border-top:1px solid var(--line);color:var(--text)}
.site-footer a{color:var(--muted);text-decoration:none}
.site-footer a:hover{color:var(--ink)}
.skeleton-line{background:linear-gradient(90deg,var(--soft),var(--tint),var(--soft));background-size:200% 100%;animation:r7-shimmer 1.4s infinite linear}
@keyframes r7-shimmer{to{background-position:-200% 0}}
#toast{border-radius:14px}
/* Home: AI prompt hero */
.r7-hero{max-width:880px;margin:auto;padding:88px 20px 40px;text-align:center}
.r7-hero h1{margin-bottom:16px}
.r7-hero .lead{max-width:640px;margin:0 auto 32px}
.r7-prompt{position:relative;display:block;text-align:left;background:var(--surface);border:1px solid var(--line-strong);border-radius:24px;box-shadow:var(--shadow-lg);padding:14px 14px 12px 18px;transition:border-color var(--fast),box-shadow var(--fast)}
.r7-prompt:focus-within{border-color:var(--green);box-shadow:0 0 0 4px var(--accent-soft),var(--shadow-lg)}
.r7-prompt form{display:flex;align-items:flex-end;gap:10px}
.r7-prompt textarea,.r7-prompt input[type=search]{flex:1;border:0;box-shadow:none;background:transparent;padding:8px 0;min-height:28px;max-height:200px;resize:none;font-size:17px;line-height:1.5}
.r7-prompt textarea:focus,.r7-prompt input:focus{box-shadow:none}
.r7-send{flex-shrink:0;display:inline-grid;place-items:center;width:42px;height:42px;border-radius:50%;border:0;background:var(--green);color:var(--on-accent);font-size:19px;transition:background var(--fast),transform var(--fast)}
.r7-send:hover{background:var(--green-hover);transform:scale(1.05)}
.r7-prompt-hint{display:flex;justify-content:space-between;gap:12px;margin-top:6px;font-size:12px;color:var(--muted)}
.r7-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:20px}
.r7-assurances{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 22px;margin:28px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted)}
.r7-assurances li:before{content:'✓';color:var(--green);font-weight:700;margin-right:7px}
.r7-stats{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:18px}
.r7-stats span{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius-pill);padding:5px 14px;font-size:13px;color:var(--text)}
.r7-stats strong{color:var(--ink)}
/* Home: product videos */
.r7-videos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.r7-video{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:22px;overflow:hidden;box-shadow:var(--shadow)}
.r7-video-frame{position:relative;aspect-ratio:16/10;background:var(--soft)}
.r7-video video,.r7-video img{display:block;width:100%;height:100%;object-fit:cover}
.r7-video figcaption{padding:16px 20px 20px}
.r7-video figcaption strong{display:block;font-size:16px;color:var(--ink);margin-bottom:4px}
.r7-video figcaption span{font-size:14px;color:var(--muted)}
.r7-play{position:absolute;inset:auto 14px 14px auto;display:inline-flex;align-items:center;gap:6px;border:0;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--ink) 78%,transparent);color:var(--paper);padding:7px 13px;font-size:12.5px;font-weight:600}
.r7-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;list-style:none;padding:0;margin:0;counter-reset:r7}
.r7-steps li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}
.r7-steps li:before{counter-increment:r7;content:counter(r7);display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--green);font-weight:700;margin-bottom:14px}
.r7-steps h3{margin-bottom:8px}
.r7-center{text-align:center;max-width:720px;margin:0 auto 34px}
.r7-center .eyebrow{justify-content:center}
@media(max-width:760px){.r7-hero{padding:48px 16px 24px}.r7-videos,.r7-steps{grid-template-columns:1fr}.r7-prompt{border-radius:20px}.r7-prompt textarea{font-size:16px}.section{padding:52px 16px}.site-header{padding:10px 16px}.closing{border-radius:0;margin:24px 0 0}}
@media (prefers-reduced-motion:reduce){.button,.job-card,.feature-card,.r7-send{transition:none}.button:hover,.job-card:hover,.feature-card:hover{transform:none}.skeleton-line{animation:none}}
.r7-hero .eyebrow{justify-content:center}
.chip,a.chip{text-decoration:none;display:inline-flex;align-items:center}
/* Consent: a floating card instead of a full-width slab, same content and buttons */
.consent-banner{left:16px;right:auto;bottom:16px;max-width:560px;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:20px;padding:18px 20px;box-shadow:var(--shadow-lg)}
.consent-banner p{color:var(--text);font-size:13.5px;margin:0}
.consent-banner a{color:var(--ink)}
.consent-actions .button,.consent-actions button{border-radius:var(--radius-pill)}
@media(max-width:760px){.consent-banner{left:10px;right:10px;bottom:10px;max-width:none;padding:12px 14px;gap:8px}.consent-banner p{font-size:12px;line-height:1.3}}
.faq-hero{padding-bottom:12px}
.faq-search{padding:6px 10px 6px 18px;border-radius:999px;max-width:640px;margin:0 auto}
.faq-search input{border:0;box-shadow:none;background:transparent;font-size:16px;padding:10px 0}
.faq-search input:focus{box-shadow:none}
.faq-filter-status{text-align:center;min-height:1.4em;margin:10px 0 0}
.faq-page{max-width:860px;padding-top:24px}
.faq-group{margin-bottom:40px;scroll-margin-top:84px}
.faq-group h2{font-size:22px;margin-bottom:6px}
.faq-item p{padding:0 4px 16px;margin:0;color:var(--text)}
.faq-item summary{list-style:none;display:flex;justify-content:space-between;gap:16px}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:after{content:'+';color:var(--muted);font-weight:400;font-size:20px;line-height:1}
.faq-item[open] summary:after{content:'−'}
/* R7: the recommended plan is a normal card with a green ring, readable in light and dark */
.price-card.recommended,.plan-mini.recommended{background:var(--surface);color:var(--text);border:2px solid var(--green);box-shadow:0 0 0 4px var(--accent-soft),var(--shadow-lg)}
.price-card.recommended h3,.plan-mini.recommended h3,.price-card.recommended strong,.plan-mini.recommended .plan-mini-price strong,.price-card.recommended .price{color:var(--ink)}
.price-card.recommended p,.price-card.recommended .small-label,.price-card.recommended li,.plan-mini.recommended .plan-mini-price,.plan-mini.recommended .plan-mini-annual,.plan-mini.recommended>p:not([class]){color:var(--text)}
.price-card.recommended .button,.plan-mini.recommended .button{background:var(--green);border-color:var(--green);color:var(--on-accent)}
.search-bar input,.search-bar select{border-radius:999px;padding-inline:18px}
.search-bar .button{border-radius:999px}
/* R7: highlight cards use a soft green tint with normal text, readable in light and dark */
.job-track-card{background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--green) 25%,transparent);color:var(--ink)}
.job-track-card h2,.job-track-card h3,.job-track-card p,.job-track-card strong{color:var(--ink)}
.job-track-card .small-label,.job-track-card .field-help{color:var(--text)}
.job-track-card .button{background:var(--green);border-color:var(--green);color:var(--on-accent)}
.job-track-card .button:hover{background:var(--green-hover)}
.job-track-card .button.secondary{background:var(--surface);border-color:var(--line-strong);color:var(--ink)}
.job-track-card .button.secondary:hover{background:var(--soft)}
.price-card.recommended,.plan-mini.recommended{background:var(--accent-soft)}
/* R7: small text links and text buttons keep a 24px minimum target (WCAG 2.2 target size) */
.text-button,a.text-link,.inline-actions>a:not(.button){display:inline-flex;align-items:center;min-height:24px}
p>a:only-child{display:inline-flex;align-items:center;min-height:24px}
.chip-form{display:contents}
button.chip{font:inherit;font-size:13px}
.price-card.recommended .price .field-help{color:var(--text)}
.r7-video-frame .r7-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .3s}
.r7-video-frame.is-playing .r7-poster{opacity:0;pointer-events:none}
.r7-video-frame video{position:relative}
.r7-video-frame .r7-play{z-index:2}
/* R7: F-1306's light-on-dark text buttons now sit on the light recommended tint */
.price-card.recommended .text-button{color:var(--green)}
.price-card.recommended .text-button.danger{color:var(--danger-ink)}
/* R8 filters: What/Where search bar, labelled filter pills, active-filter chips */
.r8-search-bar{display:grid;grid-template-columns:1fr minmax(180px,300px) auto;gap:10px;align-items:stretch}
.r8-field{display:flex;flex-direction:column;justify-content:center;gap:2px;background:var(--surface);border:1px solid var(--line-strong);border-radius:16px;padding:8px 16px}
.r8-field label{font-size:12px;font-weight:600;color:var(--muted)}
.r8-search-bar .r8-field input,.r8-search-bar .r8-field select{border:0;border-radius:0;padding:0;background:transparent;min-height:28px;font-size:16px;box-shadow:none}
.r8-field:focus-within{border-color:var(--green);box-shadow:0 0 0 3px var(--accent-soft)}
.r8-search-bar .button{border-radius:16px}
.r8-filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:center}
.r8-pill{display:flex;align-items:center;gap:4px;border:1px solid var(--line-strong);border-radius:999px;padding:0 4px 0 14px;background:var(--surface);min-height:44px}
.r8-pill label{font-size:13px;color:var(--muted);white-space:nowrap}
.r8-pill select,.r8-pill input{border:0;background:transparent;font-size:14px;font-weight:600;color:var(--text);padding:8px;min-height:40px;max-width:190px;border-radius:999px}
.r8-pill input{width:130px}
.r8-pill.is-set{border-color:var(--green);background:var(--accent-soft)}
.r8-pill:focus-within{outline:2px solid var(--green);outline-offset:2px}
.r8-pill:has(#job-sort){margin-left:auto}
.r8-active-filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;align-items:center}
.r8-chip,.r8-clear{display:inline-flex;align-items:center;min-height:36px;padding:4px 14px;border-radius:999px;font-size:14px}
.r8-chip{background:var(--accent-soft);color:var(--text);border:1px solid var(--green);text-decoration:none;gap:6px}
@media(max-width:760px){.r8-search-bar{grid-template-columns:1fr}.r8-pill{flex:1 1 calc(50% - 8px);flex-direction:column;align-items:stretch;gap:0;border-radius:14px;padding:6px 12px}.r8-pill label{font-size:12px}.r8-pill select,.r8-pill input{max-width:none;width:100%;min-width:0;padding:2px 0;min-height:30px;border-radius:0}.r8-pill:has(#job-sort){margin-left:0}}
.site-footer a:not(.brand){min-height:24px;display:flex;align-items:center} /* R8: WCAG 2.2 target size for every footer link */

/* 2026-10-11 owner review: the 7-day pass line sits inside .price and inherited the huge price font; reset it to body
   text. The tax label is a quiet suffix beside the amount, never part of the headline number. */
.price .pass-offer{display:block;margin:12px 0 0;font-size:14px;font-weight:400;line-height:1.5;letter-spacing:normal;color:var(--muted)}
.price .tax-tag,.plan-mini-price .tax-tag,.compare-price .tax-tag{font-size:.42em;font-weight:500;letter-spacing:normal;color:var(--muted);white-space:nowrap}
.annual-price .tax-tag,.pass-offer .tax-tag{font-size:inherit;color:inherit}
/* The headline amount and its period ("/ month · incl. GST") sit on one baseline when they fit; for a wide amount
   (AED 473.75, ₹1,299) the period wraps as one unit directly under it, with no tall gap. */
.price .price-main{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:.18em;row-gap:2px}
.price .price-main small{white-space:nowrap;line-height:1.3}
