/* Unirecruit site-wide design layer (owner 2026-10-16: "fix the responsiveness and overall page …
   for the entire website", apple-design + frontend-design). Loaded last on every public page by the
   worker. One type family (the phone's own system font), consistent headings, readable small text,
   44px tap targets, visible focus, press feedback, reduced motion respected. */
:root{--ur-font:Montserrat,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--ur-ink:#111b47;--ur-muted:#5e6479;--ur-violet:#5b43c8;--ur-focus:#8b74ff}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:var(--ur-font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
/* Every page had pockets of Times/Georgia: headings, forms and prose all use the same family now. */
h1,h2,h3,h4,h5,h6,button,input,select,textarea,.job-detail-hero h1,.job-detail-section h2,.job-detail-error h1,.job-description-prose,.resource-hero h1,.resource-main h2,.resource-main h3{font-family:var(--ur-font)}

/* Type: tight tracking as sizes grow, comfortable leading for reading */
h1{letter-spacing:-.03em;line-height:1.08}
h2{letter-spacing:-.02em;line-height:1.18}
h3{letter-spacing:-.01em;line-height:1.3}
.resource-hero h1{font-weight:800}
.resource-main p,.resource-main li,.article-body,.job-description-prose{line-height:1.65}
.resource-main p,.resource-main li{max-width:72ch}

/* Readable small text (nothing under ~13px for content) */
.job-tile-company,.job-tile-where{font-size:.82rem!important}
.job-tile-pay{font-size:.86rem!important}
.job-visual-tag{font-size:.66rem!important}
.site-footer,.resource-footer{font-size:.92rem}
small{font-size:.82rem}

/* Tap targets: 44px for primary controls, comfortable spacing for links in footers */
.job-tile-apply{padding:9px 13px!important;font-size:.8rem!important;border-radius:10px!important}
.site-footer a,.resource-footer a{display:inline-block;padding:8px 2px}
main input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),main select{min-height:44px}
main button:not(.nav-toggle):not([class*="tab"]):not(.adm-btn){min-height:44px}
.resource-primary,.job-apply-link,.pj-primary,.jp-apply,.jp-save{min-height:48px}

/* Feedback on press, visible focus */
a,button{-webkit-tap-highlight-color:transparent}
button,.resource-primary,.job-apply-link,.job-tile-apply,.pj-primary,.jp-apply,.jp-save,.employer-tile-cta{transition:transform .1s ease-out,opacity .1s ease-out}
button:active,.resource-primary:active,.job-apply-link:active,.job-tile-apply:active,.pj-primary:active,.jp-apply:active,.jp-save:active{transform:scale(.97)}
:focus-visible{outline:3px solid var(--ur-focus);outline-offset:2px;border-radius:6px}

/* Phones: generous side gutters everywhere, nothing touches the screen edge */
@media (max-width:640px){
  .resource-shell,.resource-main>.resource-shell{padding-left:16px!important;padding-right:16px!important}
  .resource-hero h1{font-size:clamp(1.85rem,8.4vw,2.4rem)}
  .resource-hero p{font-size:1.02rem;line-height:1.55}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}button:active,.resource-primary:active,.job-apply-link:active,.job-tile-apply:active,.pj-primary:active,.jp-apply:active,.jp-save:active{transform:none}}
/* Audit 16 Oct: the last small labels and tap targets */
.eyebrow,.section-kicker,.tracker-kicker{font-size:.8rem!important;letter-spacing:.08em}
.seo-main small,.resource-main small{font-size:.86rem}
.article-category{font-size:.8rem!important}
.calculator strong,.result-card strong,.salary-results strong{font-size:.86rem}
.company-card a,.article-card a.read-more,.article-card>a{display:inline-block;padding:10px 0;min-height:44px}
/* Home page labels and counts */
.malta-badge{font-size:.82rem!important}
.stats dd{font-size:.86rem!important}
.featured-role-card.has-visual .featured-role-body>p{font-size:.78rem!important}
.filters h2,.quick-job-filters p{font-size:.8rem!important}
.category span{font-size:.82rem!important}
.company-discovery-card small{font-size:.86rem!important}
.featured-roles-heading>a{display:inline-block;padding:10px 0}
/* One header across the site (owner: consistent, Apple-style): the home page's white bar as a
   translucent material that stays on top while content scrolls beneath. */
.resource-header{position:sticky;top:0;z-index:40;padding:10px 0;background:rgba(255,255,255,.82);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);color:#111b47;box-shadow:0 1px 0 rgba(17,27,71,.08)}
.resource-header a{color:#2f3656}
.resource-header .nav-toggle,.resource-header .resource-theme-toggle{border-color:#e3e6f0!important;background:#fff!important;color:#111b47!important}
body[data-theme="dark"] .resource-header{background:rgba(13,20,49,.82);color:#eef1ff;box-shadow:0 1px 0 rgba(189,199,245,.14)}
body[data-theme="dark"] .resource-header a{color:#e3e8ff}
body[data-theme="dark"] .resource-header .nav-toggle,body[data-theme="dark"] .resource-header .resource-theme-toggle{border-color:rgba(189,199,245,.25)!important;background:#151e46!important;color:#f1edff!important}
@media (prefers-reduced-transparency:reduce){.resource-header{background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}body[data-theme="dark"] .resource-header{background:#0d1431}}
/* Callouts and notices: room to breathe */
.resource-callout{line-height:1.6}
.resource-callout strong{display:block;margin-bottom:4px}
/* Sector pages: the same photo tiles as the jobs list */
.seo-tiles{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin:0 0 28px;padding:0!important;list-style:none}
.seo-tiles .job-card{position:relative;display:flex;flex-direction:column;overflow:hidden;margin:0;border:1px solid #e5e7f0;border-radius:14px;background:#fff;box-shadow:0 8px 22px rgba(17,27,71,.06)}
.seo-tiles .job-card:hover{border-color:#cfc4ff;box-shadow:0 14px 30px rgba(46,39,112,.12)}
.seo-tiles .job-body{display:flex;flex-direction:column;gap:2px;padding:11px 12px 13px}
.seo-tiles h3{margin:0 0 2px;font-size:.98rem;line-height:1.25;font-weight:800;color:#111b47}
.seo-tiles p{margin:0;max-width:none;color:#5e6479;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seo-tiles .job-tile-pay{margin-top:6px;color:#4a33b3!important;font-weight:800;white-space:normal}
.seo-tiles small{margin-top:4px;color:#7a8299}
@media (max-width:560px){.seo-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.seo-tiles h3{font-size:.9rem}}
body[data-theme="dark"] .seo-tiles .job-card{background:#151f49;border-color:rgba(189,199,245,.2);box-shadow:none}
body[data-theme="dark"] .seo-tiles h3{color:#f2f4ff}body[data-theme="dark"] .seo-tiles p,body[data-theme="dark"] .seo-tiles small{color:#c3cbea}

/* ===== Text contrast, both themes (owner 2026-10-16: "map all text contrast … dark and light").
   Audited per text element against its real background; everything below meets WCAG AA
   (4.5:1 body text, 3:1 large text). Light: ink #111b47, muted #4b5270, violet #5b43c8.
   Dark: ink #eef1ff, muted #c3cbea, violet text #c4b5ff, buttons stay #5b43c8 with white text. */
:root{--violet:#5b43c8;--violet-dark:#4a33b3}
/* Buttons and filled pills: white on the deeper violet (6.4:1) */
.resource-primary{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border:0;border-radius:12px;background:#5b43c8;color:#fff!important;font-weight:800;text-decoration:none}
.resource-primary:hover{background:#4a33b3}
.resource-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:12px;font-weight:800;text-decoration:none}
.resource-hero .resource-primary{background:#fff;color:#111b47!important}
.resource-hero .resource-secondary{border:1px solid rgba(255,255,255,.7);color:#fff!important}
.search-panel button,.company-search button,.blog-filter.active,.contact-channel a,.featured-actions a,.hero a.post-job-link{background:#5b43c8!important;color:#fff!important}
/* Muted text and small labels (light) */
.company-discovery-card small,.category span,.job-tile-where,.seo-tiles small,.job-body small,.jobs-heading p:not(.eyebrow),.site-footer span,.site-footer>span{color:#4b5270!important}
.article-card button,.article-category,.company-card a,.resource-main nav a,.resource-sources a,.site-footer a.whatsapp-channel-link{color:#5b43c8!important}
.eyebrow,.section-kicker{color:#5b43c8}
/* Labels on the dark navy/violet heroes (both themes) */
.hero .eyebrow,.hero-copy .eyebrow,.resource-hero .eyebrow{color:#ece7ff!important}
.resource-hero p{color:#eef0ff}
/* ---- Dark theme ---- */
body[data-theme="dark"] .eyebrow,body[data-theme="dark"] .section-kicker,body[data-theme="dark"] .featured-role-body>p,body[data-theme="dark"] .quick-job-filters>p{color:#c4b5ff!important}
body[data-theme="dark"] .hero .eyebrow,body[data-theme="dark"] .hero-copy .eyebrow,body[data-theme="dark"] .resource-hero .eyebrow{color:#ece7ff!important}
body[data-theme="dark"] a:not([class]),body[data-theme="dark"] :is(p,li,footer,.resource-callout,.resource-card,.featured-role-body,.company-discovery-heading,.featured-roles-heading,.seo-more,.seo-other,.resource-sources,.document-state)>a:not(.resource-primary):not(.resource-secondary):not(.jp-apply):not(.pj-jump):not(.whatsapp-channel-link):not(.wa-follow):not(.jp-wa),body[data-theme="dark"] .resource-card a.resource-link,body[data-theme="dark"] .site-footer a:not(.whatsapp-channel-link){color:#c4b5ff!important}
body[data-theme="dark"] .article-card button,body[data-theme="dark"] .article-category,body[data-theme="dark"] .company-card a,body[data-theme="dark"] .resource-main nav a{color:#c4b5ff!important}
body[data-theme="dark"] .company-discovery-card small,body[data-theme="dark"] .category span,body[data-theme="dark"] .job-tile-where,body[data-theme="dark"] .seo-tiles small,body[data-theme="dark"] .job-body small,body[data-theme="dark"] .site-footer span,body[data-theme="dark"] .site-footer>span{color:#c3cbea!important}
body[data-theme="dark"] .jobs-heading p:not(.eyebrow){color:#4b5270!important}
body[data-theme="dark"] .result-card strong,body[data-theme="dark"] .result-card.net strong{color:#d9defa!important}
/* Cards that kept a light background in dark mode now go dark with light text */
body[data-theme="dark"] .about{background:#151f49;box-shadow:0 0 0 1px rgba(189,199,245,.18)}
body[data-theme="dark"] .about h2,body[data-theme="dark"] .about p{color:#eef1ff}
body[data-theme="dark"] .about p a{color:#c4b5ff!important}
/* Post a job, dark */
body[data-theme="dark"] .pj-tile-pay{color:#cbbfff}
body[data-theme="dark"] .pj-photo-main{color:#e2dbff}
body[data-theme="dark"] .pj-tile-title{color:#eef1ff}
/* Contrast pass 2: buttons the dark link colour must not reach, and labels in the jobs heading */
.employer-cta a,.contact-channel a{background:#5b43c8!important;color:#fff!important}
body[data-theme="dark"] .employer-cta a,body[data-theme="dark"] .contact-channel a{background:#5b43c8!important;color:#fff!important}
.jobs-heading p.eyebrow{color:#5b43c8!important}
body[data-theme="dark"] .jobs-heading p.eyebrow{color:#c4b5ff!important}
.resource-hero p,body[data-theme="dark"] .resource-hero p{color:#eef0ff!important}
/* The logo artwork has dark lettering: give it a white badge on dark headers */
body[data-theme="dark"] .brand-logo,body[data-theme="dark"] .resource-logo{box-sizing:content-box;padding:4px 8px;border-radius:8px;background:#fff}

/* ===== WhatsApp channel, made prominent (owner 2026-10-16). Green #0e7a40 keeps white text at AA (5.4:1). */
.wa-ico{width:1.25em;height:1.25em;flex:none}
.wa-band{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:clamp(20px,4vw,48px);max-width:1040px;margin:0 auto 40px;padding:clamp(24px,5vw,48px);border-radius:24px;background:linear-gradient(135deg,#0a4d2a,#0e7a40);color:#fff;box-sizing:border-box}
.wa-band h2{margin:0 0 10px;color:#fff!important;font-size:clamp(1.6rem,4vw,2.4rem);letter-spacing:-.03em}
.wa-band p{margin:0 0 20px;color:#e3f6ea!important;font-size:1.05rem;line-height:1.55;max-width:44ch}
.wa-follow{display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 22px;border-radius:14px;background:#fff;color:#0c5a32!important;font-weight:800;font-size:1.05rem;text-decoration:none}
.wa-follow:active{transform:scale(.97)}
.wa-band-phone{justify-self:center;width:min(260px,100%);padding:18px 14px;border-radius:28px;background:#e7ddd3;box-shadow:inset 0 0 0 8px #0b3d22,0 20px 40px rgba(0,0,0,.25)}
.wa-bubble{display:block;padding:12px 14px;border-radius:4px 14px 14px 14px;background:#fff;color:#1b1f2a;font-size:.88rem;line-height:1.5;box-shadow:0 1px 1px rgba(0,0,0,.12)}
.wa-bubble strong{display:block;margin-bottom:4px;color:#0c5a32}
.wa-bubble em{display:block;margin-top:6px;color:#5b43c8;font-style:normal;font-weight:700}
.seo-main .wa-band{margin:8px 0 32px}
@media(max-width:760px){.wa-band{grid-template-columns:1fr;margin:0 16px 32px}.wa-band-phone{display:none}.wa-follow{width:100%;justify-content:center}}
/* Jobs grid tile and job page link */
.job-card.channel-tile{position:relative;display:flex!important;align-items:stretch;min-height:0;background:#0e7a40!important;border-color:#0a4d2a!important;border-radius:14px!important}
.channel-tile strong{font-size:1.45rem;line-height:1.05;font-weight:900;letter-spacing:-.03em;color:#fff}
.channel-tile p{color:#e3f6ea!important}
.channel-tile .employer-tile-cta{background:#fff;color:#0c5a32}
.jp-wa{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:#0c5a32!important;font-weight:800;text-decoration:none}
body[data-theme="dark"] .jp-wa{color:#7fe0a8!important}
/* Footer link as a button */
.site-footer a.whatsapp-channel-link{display:inline-flex;align-items:center;min-height:44px;padding:0 16px!important;border-radius:999px;background:#0e7a40;color:#fff!important;text-decoration:none}
body[data-theme="dark"] .site-footer a.whatsapp-channel-link{color:#fff!important}
@media (max-width:560px){.channel-tile strong,.employer-tile strong{font-size:1.15rem;overflow-wrap:anywhere}}

/* ===== Home: new rules for third-country nationals (owner 2026-10-16) */
.tcn{max-width:1040px;margin:0 auto 40px;padding:clamp(24px,5vw,44px);border-radius:24px;background:#fff;border:1px solid #e5e7f0;box-shadow:0 18px 44px rgba(17,27,71,.06);box-sizing:border-box}
.tcn h2{margin:0 0 10px;font-size:clamp(1.5rem,3.6vw,2.2rem);letter-spacing:-.03em;color:#111b47}
.tcn-head p{margin:0 0 22px;max-width:70ch;color:#4b5270;line-height:1.6}
.tcn a{color:#5b43c8;font-weight:700}
.tcn-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin:0 0 18px;padding:0;list-style:none}
.tcn-cards li{padding:16px;border-radius:16px;background:#f6f4ff}
.tcn-when{display:inline-block;margin:0 0 8px;padding:4px 10px;border-radius:999px;background:#fff;color:#4a33b3;font-size:.8rem;font-weight:800}
.tcn-cards h3{margin:0 0 6px;font-size:1.05rem;color:#111b47}
.tcn-cards p{margin:0;color:#3b4262;font-size:.95rem;line-height:1.55}
.tcn-check{margin:0 0 18px;border:1px solid #e5e7f0;border-radius:16px;padding:0 16px}
.tcn-check summary{min-height:52px;display:flex;align-items:center;cursor:pointer;font-weight:800;color:#111b47}
.tcn-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;padding:4px 0 8px}
.tcn-cols h3{margin:0 0 2px;font-size:1rem;color:#111b47}
.tcn-who{margin:0 0 8px;color:#4b5270;font-size:.9rem}
.tcn-cols ul{margin:0;padding-left:1.1rem;color:#3b4262;line-height:1.6}
.tcn-source{margin:8px 0 14px;color:#4b5270;font-size:.86rem}
.tcn-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 14px}
.tcn-primary,.tcn-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 18px;border-radius:12px;font-weight:800;text-decoration:none}
.tcn-primary{background:#5b43c8;color:#fff!important}
.tcn-secondary{border:1px solid #cfd3e3;color:#111b47!important;background:#fff}
.tcn-safe{margin:0;padding:12px 14px;border-radius:12px;background:#fff6e5;color:#5a3d00;line-height:1.55}
.tcn-safe a{color:#5a3d00!important;text-decoration:underline}
@media(max-width:760px){.tcn{margin:0 16px 32px;padding:22px 18px}.tcn-actions a{width:100%}}
body[data-theme="dark"] .tcn{background:#151f49;border-color:rgba(189,199,245,.18);box-shadow:none}
body[data-theme="dark"] .tcn h2,body[data-theme="dark"] .tcn-cards h3,body[data-theme="dark"] .tcn-cols h3,body[data-theme="dark"] .tcn-check summary{color:#eef1ff}
body[data-theme="dark"] .tcn-head p,body[data-theme="dark"] .tcn-who,body[data-theme="dark"] .tcn-source,body[data-theme="dark"] .tcn-cards p,body[data-theme="dark"] .tcn-cols ul{color:#c9d0ef}
body[data-theme="dark"] .tcn a:not(.tcn-primary):not(.tcn-secondary){color:#c4b5ff!important}
body[data-theme="dark"] .tcn-cards li{background:#1c2758}
body[data-theme="dark"] .tcn-when{background:#0d1431;color:#d9d0ff}
body[data-theme="dark"] .tcn-check{border-color:rgba(189,199,245,.2)}
body[data-theme="dark"] .tcn-secondary{background:#0d1431;border-color:rgba(196,205,238,.35);color:#eef1ff!important}
body[data-theme="dark"] .tcn-safe{background:#3a2a05;color:#ffe2a8}
body[data-theme="dark"] .tcn-safe a{color:#ffe2a8!important}

/* Malta flag on job cards (owner 2026-10-16) */
.flag-mt,.job-card img.flag-mt,.job-tile img.flag-mt,.featured-role-card img.flag-mt{display:inline-block!important;position:static!important;width:10px!important;height:7px!important;min-width:0!important;max-width:10px!important;margin:0 4px 0 0!important;padding:0!important;object-fit:cover!important;vertical-align:-1px;border-radius:1px!important;box-shadow:0 0 0 1px rgba(17,27,71,.2);background:none!important;transform:none!important}
.jp-company .flag-mt{width:20px!important;max-width:20px!important;height:14px!important;vertical-align:-2px}
/* Employer's phone, large (owner: "where the user doesn't have email make the contact details large") */
.jp-contact{padding:14px 16px;border-radius:14px;background:#f2fbf5;border:1px solid #bfe5cc}
.jp-contact.is-primary{background:#eaf8ef;border-color:#9fd8b4}
.jp-contact-label{margin:0 0 4px;font-size:.92rem;font-weight:700;color:#0a4d2a}
.jp-phone{display:block;margin:0 0 10px;font-size:clamp(1.6rem,5vw,2rem);font-weight:800;letter-spacing:-.01em;color:#111b47!important;text-decoration:none}
.jp-contact-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.jp-call,.jp-whatsapp{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:12px;font-weight:800;text-decoration:none}
.jp-call{background:#111b47;color:#fff!important}
.jp-whatsapp{background:#0e7a40;color:#fff!important}
body[data-theme="dark"] .jp-contact{background:#10301f;border-color:#1f6b42}
body[data-theme="dark"] .jp-contact-label{color:#9fe3bb}
body[data-theme="dark"] .jp-phone{color:#eef1ff!important}
body[data-theme="dark"] .jp-call{background:#eef1ff;color:#111b47!important}
/* Contact reveal: large, partly blurred until the visitor has an account */
.jp-blur{display:inline-block;filter:blur(7px);user-select:none;pointer-events:none}
.jp-email{display:block;margin:4px 0 10px;font-size:clamp(1.15rem,4vw,1.45rem);font-weight:800;color:#111b47!important;text-decoration:none;overflow-wrap:anywhere}
.jp-phone.is-masked,.jp-email.is-masked{margin:0 0 6px}
.jp-reveal{display:flex;align-items:center;justify-content:center;min-height:50px;margin:10px 0 6px;border-radius:12px;background:#5b43c8;color:#fff!important;font-weight:800;text-decoration:none}
.jp-contact-note{margin:6px 0 0;font-size:.88rem;line-height:1.45;color:#2f5a40}
.jp-contact.is-revealed .jp-contact-actions{margin-bottom:10px}
body[data-theme="dark"] .jp-email{color:#eef1ff!important}
body[data-theme="dark"] .jp-contact-note{color:#bfe9cf}
