/* ---------- Careers Portal — extends assets/style.css ---------- */

.nav-text-link{font-size:14px;font-weight:600;color:var(--ink);transition:color .3s var(--ease);}
.nav-text-link:hover{color:var(--accent);}
.nav-hello{font-size:13.5px;color:var(--muted);font-weight:500;text-decoration:none;transition:color .3s var(--ease);}
.nav-hello:hover{color:var(--accent);}

/* ---------- Honeypot (anti-bot, invisible to real users) ---------- */
.hp-field{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden;}

/* ---------- Flash messages ---------- */
.flash-wrap{margin-top:24px;display:flex;flex-direction:column;gap:10px;}
.flash-msg{padding:14px 18px;border-radius:4px;font-size:14px;font-weight:600;}
.flash-success{background:rgba(217,27,99,.1);color:var(--accent);}
.flash-error{background:rgba(180,50,50,.1);color:#a5342f;}

/* ---------- Auth cards (login/register/setup) ---------- */
.auth-wrap{padding:64px 0 100px;}
.auth-card{max-width:480px;margin:0 auto;border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:8px;padding:40px;background:#fff;}
.auth-card h1{font-size:26px;margin-bottom:10px;}
.auth-card > p.sub{font-size:14.5px;margin-bottom:28px;}
.auth-card .form-foot{font-size:13.5px;color:var(--muted);margin-top:6px;}
.auth-card .form-foot a{color:var(--accent);font-weight:600;}
.role-picker{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:6px;}
.role-option{border:1.5px solid var(--line);border-radius:6px;padding:18px;cursor:pointer;transition:border-color .25s var(--ease), background-color .25s var(--ease);}
.role-option:hover{border-color:var(--accent);}
.role-option input{width:auto;display:inline-block;margin-right:8px;}
.role-option.checked,.role-option:has(input:checked){border-color:var(--accent);background:rgba(217,27,99,.06);}
.role-option strong{font-family:'Inter',sans-serif;font-size:15px;}
.role-option p{font-size:12.5px;margin-top:6px;}
.field-hint{font-size:12px;color:var(--muted);margin-top:-10px;}
.employer-fields{border-top:1px dashed var(--line);margin-top:6px;padding-top:18px;display:flex;flex-direction:column;gap:18px;}

/* ---------- Filter bar (job listing) ---------- */
.job-filter-bar{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:22px;border:1px solid var(--line);border-radius:8px;background:var(--paper);margin-bottom:32px;}
.job-filter-bar .field{width:100%;margin:0;}
.job-filter-bar label{margin-bottom:6px;}
.job-filter-bar .filter-actions{grid-column:1/-1;display:flex;gap:14px;align-items:center;}
.job-filter-bar .filter-actions .btn{max-width:220px;}
.filter-clear{font-size:13px;font-weight:600;color:var(--muted);}
.filter-clear:hover{color:var(--accent);}
.result-count{font-size:13px;color:var(--muted);margin-bottom:16px;}

/* ---------- Tags / chips / reference badges ---------- */
.job-card-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;align-items:center;}
.cat-chip{display:inline-flex;align-items:center;font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;background:rgba(217,27,99,.1);color:var(--accent);}
.ref-badge{display:inline-flex;align-items:center;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;font-weight:600;letter-spacing:.02em;padding:3px 8px;border-radius:4px;background:rgba(43,10,26,.06);color:var(--dark);white-space:nowrap;}

/* ---------- Interactive filter chip (distinct from the static .cat-chip tag) ---------- */
.chip-filter{display:inline-flex;align-items:center;font-size:12.5px;font-weight:600;padding:7px 16px;border-radius:999px;border:1.5px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;white-space:nowrap;transition:border-color .2s var(--ease),background-color .2s var(--ease),color .2s var(--ease);}
.chip-filter:hover{border-color:var(--accent);}
.chip-filter.active{background:var(--accent);border-color:var(--accent);color:#fff;}

/* ---------- Placeholder art standing in for a missing photo (mirrors the
   Flutter apps' ImagePlaceholder widget — same 8 gradient pairs) ---------- */
.img-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff;}
.img-ph svg{width:34%;height:34%;max-width:44px;max-height:44px;opacity:.92;}
.img-ph-0{background:linear-gradient(135deg,#d91b63,#f43f8e);}
.img-ph-1{background:linear-gradient(135deg,#ff7a59,#ffb199);}
.img-ph-2{background:linear-gradient(135deg,#6c5ce7,#a29bfe);}
.img-ph-3{background:linear-gradient(135deg,#00b894,#55efc4);}
.img-ph-4{background:linear-gradient(135deg,#0984e3,#74b9ff);}
.img-ph-5{background:linear-gradient(135deg,#e17055,#fab1a0);}
.img-ph-6{background:linear-gradient(135deg,#e84393,#fd79a8);}
.img-ph-7{background:linear-gradient(135deg,#00cec9,#81ecec);}

/* ---------- Promo banner (browse-page hero strip, mirrors the app's PromoBanner) ---------- */
.promo-banner{display:flex;align-items:center;gap:16px;padding:22px 26px;border-radius:14px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;margin-bottom:28px;}
.promo-banner-icon{width:50px;height:50px;border-radius:50%;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.promo-banner-icon svg{width:24px;height:24px;}
.promo-banner-title{font-weight:700;font-size:16.5px;}
.promo-banner-sub{font-size:13px;opacity:.85;margin-top:2px;}

/* ---------- Shop/restaurant detail hero (placeholder banner, shops have no cover photo yet) ---------- */
.shop-hero{height:200px;border-radius:14px;margin-bottom:24px;overflow:hidden;}
.shop-hero .img-ph svg{width:56px;height:56px;max-width:none;max-height:none;}

/* ---------- Self-view quick-access tiles (member profile) ---------- */
.profile-quick-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0 4px;}
.profile-quick-tile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;border-radius:12px;background:var(--paper);color:var(--ink);text-align:center;transition:background-color .2s var(--ease);}
.profile-quick-tile:hover{background:rgba(217,27,99,.1);}
.profile-quick-tile svg{width:22px;height:22px;color:var(--accent);}
.profile-quick-tile span{font-size:12px;font-weight:600;}
@media (max-width:480px){
  .profile-quick-row{grid-template-columns:repeat(2,1fr);}
}

/* ---------- Nav badge (unread messages) ---------- */
.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:4px;border-radius:999px;background:var(--accent2);color:#fff;font-size:11px;font-weight:700;line-height:1;}

/* ---------- Job list ---------- */
.job-list{display:flex;flex-direction:column;gap:16px;}
.job-card{border:1px solid var(--line);border-radius:6px;padding:26px 28px;display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;background:#fff;transition:border-color .3s var(--ease), box-shadow .3s var(--ease), transform .3s var(--ease);}
.job-card:hover{border-color:var(--accent);box-shadow:0 24px 44px -30px rgba(43,10,26,.3);transform:translateY(-3px);}
.job-card-main h3{font-size:19px;margin-bottom:6px;}
.job-card-main .company{font-size:13.5px;color:var(--accent);font-weight:600;margin-bottom:10px;}
.job-card-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted);}
.job-card-meta span{display:inline-flex;align-items:center;gap:5px;}
.job-card-meta svg{width:14px;height:14px;flex-shrink:0;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.job-empty{text-align:center;padding:70px 20px;color:var(--muted);border:1px dashed var(--line);border-radius:8px;}

/* ---------- Welcome / "what do you want to do" ---------- */
.welcome-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;}
.welcome-card{display:block;border:1px solid var(--line);border-radius:8px;padding:26px;background:#fff;transition:border-color .25s var(--ease),box-shadow .25s var(--ease),transform .25s var(--ease);}
.welcome-card:hover{border-color:var(--accent);box-shadow:0 24px 44px -30px rgba(43,10,26,.3);transform:translateY(-3px);}
.welcome-card-icon{font-size:28px;display:block;margin-bottom:14px;}
.welcome-card h3{font-family:'Inter',sans-serif;font-size:17px;margin-bottom:8px;}
.welcome-card p{font-size:13.5px;color:var(--muted);margin:0;}

/* ---------- Badges ---------- */
.badge{display:inline-flex;align-items:center;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:5px 11px;border-radius:999px;white-space:nowrap;}
.badge-open,.badge-approved,.badge-hired,.badge-shortlisted{background:rgba(217,27,99,.12);color:var(--accent);}
.badge-pending,.badge-submitted{background:rgba(184,144,46,.16);color:#8a6a1f;}
.badge-closed,.badge-rejected{background:rgba(120,120,120,.14);color:#666;}
.badge-reviewed{background:rgba(60,110,180,.12);color:#2f5fa0;}
.badge-placed,.badge-requested{background:rgba(184,144,46,.16);color:#8a6a1f;}
.badge-confirmed,.badge-ready_for_pickup,.badge-accepted{background:rgba(60,110,180,.12);color:#2f5fa0;}
.badge-picked_up,.badge-out_for_delivery,.badge-in_progress{background:rgba(217,27,99,.12);color:var(--accent);}
.badge-completed{background:rgba(217,27,99,.12);color:var(--accent);}
.badge-cancelled{background:rgba(120,120,120,.14);color:#666;}

/* ---------- Job detail ---------- */
.job-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;margin-bottom:30px;}
.job-detail-meta{display:flex;gap:22px;flex-wrap:wrap;font-size:14px;color:var(--muted);margin:14px 0 6px;}
.job-detail-body{max-width:720px;}
.job-detail-body p{white-space:pre-line;font-size:15px;color:var(--ink);line-height:1.75;}
.job-detail-side{border:1px solid var(--line);border-radius:8px;padding:26px;position:sticky;top:100px;}

/* ---------- Dashboard tables ---------- */
.dash-head{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:34px;}
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:20px;margin-bottom:44px;}
.stat-box{border:1px solid var(--line);border-radius:6px;padding:22px;border-top:3px solid var(--accent);}
.stat-box .num{font-family:'Inter',sans-serif;font-size:30px;font-weight:700;color:var(--accent);display:block;margin-bottom:6px;}
.stat-box .label{font-size:12.5px;color:var(--muted);}
.notice-card{border:1px solid var(--line);border-left:4px solid var(--accent2);border-radius:6px;padding:22px 26px;background:var(--paper);margin-bottom:36px;}
.notice-card.notice-warn{border-left-color:#a5342f;}
.notice-card h4{font-size:15.5px;margin-bottom:8px;}
.notice-card p{font-size:14px;}

.dash-table{width:100%;border-collapse:collapse;font-size:14px;}
.dash-table th{text-align:left;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:0 14px 12px;border-bottom:1px solid var(--line);}
.dash-table td{padding:16px 14px;border-bottom:1px solid var(--line);vertical-align:middle;}
.dash-table tr:last-child td{border-bottom:none;}
.dash-table .actions{display:flex;gap:8px;flex-wrap:wrap;}
.dash-table .actions form{display:inline;}
.link-btn{background:none;border:none;padding:0;font:inherit;font-weight:600;font-size:13px;color:var(--accent);cursor:pointer;}
.link-btn:hover{text-decoration:underline;}
.link-btn.danger{color:#a5342f;}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px;}
.table-wrap .dash-table{margin:0;}
.table-wrap .dash-table th:first-child,.table-wrap .dash-table td:first-child{padding-left:22px;}
.table-wrap .dash-table th:last-child,.table-wrap .dash-table td:last-child{padding-right:22px;}

.status-tabs{display:flex;gap:8px;margin-bottom:26px;flex-wrap:wrap;}
.status-tabs a{border:1.5px solid var(--line);border-radius:999px;padding:8px 16px;font-size:13px;font-weight:600;color:var(--muted);transition:border-color .25s var(--ease), color .25s var(--ease), background-color .25s var(--ease);}
.status-tabs a:hover{border-color:var(--accent);color:var(--ink);}
.status-tabs a.active{background:var(--accent);border-color:var(--accent);color:#fff;}

.cover-letter-box{background:var(--paper);border-radius:6px;padding:16px 18px;font-size:13.5px;color:var(--ink);white-space:pre-line;max-width:420px;}

/* ---------- Candidate directory ---------- */
.candidate-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px;}
.candidate-card{border:1px solid var(--line);border-radius:8px;padding:20px;background:#fff;display:flex;gap:16px;transition:border-color .3s var(--ease),box-shadow .3s var(--ease),transform .3s var(--ease);}
.candidate-card:hover{border-color:var(--accent);box-shadow:0 24px 44px -30px rgba(43,10,26,.3);transform:translateY(-3px);}
.candidate-photo{width:64px;height:64px;border-radius:8px;object-fit:cover;flex:0 0 64px;}
.candidate-photo-empty{display:flex;align-items:center;justify-content:center;background:var(--paper);color:var(--accent);font-family:'Inter',sans-serif;font-size:24px;font-weight:700;text-transform:uppercase;}
.candidate-card-body{min-width:0;}
.candidate-card-body strong{display:block;font-size:15.5px;}
.candidate-headline{display:block;font-size:13px;color:var(--accent);font-weight:600;margin:2px 0 8px;}
.candidate-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:12.5px;color:var(--muted);}
.candidate-skills{display:block;font-size:12.5px;color:var(--muted);margin-top:8px;}

/* ---------- Profile editor (tabbed) ---------- */
.tabs-nav{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:24px;}
.tab-btn{padding:12px 20px;border:none;background:none;font:inherit;font-size:14px;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .2s var(--ease);}
.tab-btn:hover{color:var(--ink);}
.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent);}
.tab-panel[hidden]{display:none;}
.profile-photo-row{display:flex;gap:18px;align-items:flex-start;}
.profile-photo{width:96px;height:96px;border-radius:10px;object-fit:cover;flex:0 0 96px;}
.profile-photo-empty{display:flex;align-items:center;justify-content:center;background:var(--paper);color:var(--muted);font-size:13px;font-weight:600;text-transform:uppercase;}
.apply-photo{width:110px;height:110px;border-radius:10px;object-fit:cover;}

/* ---------- Gallery (shared: editor + candidate view) ---------- */
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px;align-items:start;}
.gallery-item{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;display:block;color:inherit;text-decoration:none;}
a.gallery-item{transition:border-color .25s var(--ease),box-shadow .25s var(--ease),transform .25s var(--ease);}
a.gallery-item:hover{border-color:var(--accent);box-shadow:0 20px 38px -26px rgba(43,10,26,.35);transform:translateY(-2px);}
.gallery-item img{width:100%;height:150px;object-fit:cover;display:block;background:var(--paper);}
.gallery-item figcaption,.gallery-cap{display:block;font-size:12px;color:var(--muted);padding:9px 11px;}
.gallery-actions{display:flex;gap:10px;align-items:center;padding:8px 11px;border-top:1px solid var(--line);}
.gallery-actions form{display:inline;}

/* ---------- Candidate profile view (redesign) ---------- */
.cand-header{display:flex;gap:22px;align-items:center;flex-wrap:wrap;border:1px solid var(--line);border-radius:12px;background:#fff;padding:24px;margin:18px 0 24px;}
.cand-avatar{width:104px;height:104px;border-radius:12px;object-fit:cover;flex:0 0 104px;background:var(--paper);}
.cand-avatar-empty{display:flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;font-family:'Inter',sans-serif;font-size:40px;font-weight:700;}
.cand-id{flex:1;min-width:220px;}
.cand-id h1{font-size:26px;margin:0;}
.cand-headline{font-size:15px;color:var(--accent);font-weight:600;margin:4px 0 0;}
.cand-chips{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:12px;font-size:13px;color:var(--muted);}
.cand-chips span{display:inline-flex;align-items:center;}
.cand-chips span:not(:last-child)::after{content:"·";margin-left:14px;color:var(--line);}
.cand-cta{flex-shrink:0;}

.cand-body{display:grid;grid-template-columns:1fr 300px;gap:26px;align-items:start;}
.cand-block{margin-bottom:26px;}
.cand-block:last-child{margin-bottom:0;}
.cand-block h3{font-size:15px;margin:0 0 10px;color:var(--dark);}
.cand-block p,.cand-block .prewrap{font-size:14px;line-height:1.7;color:var(--ink);}
.cand-block .prewrap{white-space:pre-line;}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;}
.muted-note{font-size:13px;color:var(--muted);border:1px dashed var(--line);border-radius:8px;padding:20px;text-align:center;}

.cand-card{border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:20px;position:sticky;top:96px;}
.cand-card h4{font-family:"Inter",sans-serif;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 14px;}
.cand-detail{font-size:13.5px;padding:9px 0;border-bottom:1px solid var(--line);word-break:break-word;}
.cand-detail:first-of-type{padding-top:0;}
.cand-detail span{display:block;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:3px;}
.cand-card .btn{margin-top:16px;}

/* ---------- Public member profile (v7) ---------- */
.member-banner{height:170px;border-radius:14px 14px 0 0;background:linear-gradient(135deg,var(--dark),var(--accent) 60%,var(--accent2));position:relative;overflow:hidden;}
.member-banner::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 85% 15%,rgba(255,255,255,.16),transparent 55%);}
.member-header{background:#fff;border:1px solid var(--line);border-top:none;border-radius:0 0 14px 14px;padding:0 30px 28px;margin-bottom:28px;box-shadow:0 18px 40px -28px rgba(43,10,26,.35);}
.member-avatar-row{display:flex;align-items:flex-end;gap:18px;padding-top:0;margin-top:-56px;position:relative;z-index:1;}
.member-avatar{width:112px;height:112px;border-radius:50%;border:5px solid #fff;object-fit:cover;background:var(--accent);flex:0 0 112px;box-shadow:0 6px 18px rgba(43,10,26,.25);}
.member-avatar-empty{display:flex;align-items:center;justify-content:center;font-family:'Inter',sans-serif;font-size:36px;font-weight:700;color:#fff;}
.member-actions{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap;padding-bottom:10px;}
.member-name{font-size:25px;margin:18px 0 2px;}
.member-headline{color:var(--accent);font-weight:600;font-size:14px;}
.member-meta{color:var(--muted);font-size:13px;margin-top:5px;}
.member-meta a{color:var(--accent);font-weight:600;}
.member-stats{display:flex;gap:0;margin:18px 0 2px;border:1px solid var(--line);border-radius:10px;overflow:hidden;}
.member-stat{flex:1;text-align:center;font-size:12.5px;color:var(--muted);padding:12px 6px;border-right:1px solid var(--line);}
.member-stat:last-child{border-right:none;}
.member-stat strong{font-family:'Inter',sans-serif;font-size:19px;display:block;color:var(--ink);}
.member-about{font-size:14px;line-height:1.65;color:var(--ink);margin-top:14px;white-space:pre-wrap;}
@media (max-width:480px){
  .member-avatar{width:88px;height:88px;flex:0 0 88px;}
  .member-avatar-empty{font-size:28px;}
  .member-avatar-row{margin-top:-46px;}
}
@media (max-width:640px){
  .member-avatar-row{flex-wrap:wrap;}
  .member-actions{margin-left:0;width:100%;}
}

/* ---------- Upload progress ---------- */
.upload-progress{display:none;margin-top:14px;}
.upload-progress.is-active{display:block;}
.upload-progress-track{height:8px;border-radius:999px;background:var(--line);overflow:hidden;}
.upload-progress-bar{height:100%;width:0;background:var(--accent);border-radius:999px;transition:width .18s linear;}
.upload-progress-text{display:block;margin-top:7px;font-size:12px;font-weight:600;color:var(--muted);}
.upload-progress.is-error .upload-progress-bar{background:#a5342f;}
.upload-progress.is-error .upload-progress-text{color:#a5342f;}
.upload-size-error{color:#a5342f;font-size:12.5px;font-weight:600;margin:6px 0 0;}

/* ---------- Applicant cards (employer view) ---------- */
.applicant-list{display:flex;flex-direction:column;gap:20px;}
.applicant-card{border:1px solid var(--line);border-radius:10px;padding:22px;background:#fff;}
.applicant-card-head{display:flex;gap:16px;align-items:center;flex-wrap:wrap;}
.applicant-photo{width:56px;height:56px;border-radius:8px;object-fit:cover;flex:0 0 56px;}
.applicant-card-head strong{display:block;font-size:16px;}
.applicant-title{display:block;font-size:13px;color:var(--accent);font-weight:600;margin:2px 0 4px;}
.applicant-status{margin-left:auto;}
.applicant-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:16px;}
.applicant-facts div{font-size:13.5px;}
.applicant-facts span{display:block;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:2px;}
.applicant-card-actions{display:flex;gap:16px;flex-wrap:wrap;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);}

/* ---------- Messaging (Instagram-style inbox + chat) ---------- */
.thread-search{display:flex;align-items:center;gap:10px;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:10px 16px;margin-bottom:14px;}
.thread-search svg{width:16px;height:16px;flex-shrink:0;fill:none;stroke:var(--muted);stroke-width:2;}
.thread-search input{flex:1;border:none;background:none;font:inherit;font-size:16px;padding:0;outline:none;color:var(--ink);}
.thread-search-empty{text-align:center;color:var(--muted);font-size:13.5px;padding:24px 0;}

.thread-list{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff;}
.thread-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px;border-bottom:1px solid var(--line);background:#fff;transition:background-color .2s var(--ease);}
.thread-row:last-child{border-bottom:none;}
.thread-row:hover{background:var(--paper);}
.thread-row.unread{background:rgba(184,144,46,.06);}
.thread-avatar{width:48px;height:48px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'Inter',sans-serif;font-weight:700;font-size:16px;flex-shrink:0;}
.thread-row-main{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px;}
.thread-row-main strong{font-size:14.5px;}
.thread-row.unread .thread-row-main strong{font-weight:800;}
.thread-context{font-size:12px;color:var(--accent);font-weight:600;}
.thread-snippet{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38ch;}
.thread-row.unread .thread-snippet{color:var(--ink);font-weight:600;}
.thread-row-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0;}
.thread-time{font-size:11.5px;color:var(--muted);}

/* Chat window */
.chat-card{border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden;display:flex;flex-direction:column;}
.chat-head{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);}
.chat-back{display:flex;align-items:center;justify-content:center;width:26px;height:26px;flex-shrink:0;color:var(--ink);}
.chat-back svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.2;}
.chat-avatar{width:42px;height:42px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'Inter',sans-serif;font-weight:700;font-size:14px;flex-shrink:0;text-decoration:none;}
.chat-head-info{min-width:0;display:flex;flex-direction:column;gap:1px;}
.chat-head-info a:first-child{font-size:15px;font-weight:700;color:var(--ink);}
.chat-head-info span{font-size:12px;color:var(--muted);}
.chat-head-info span a{color:var(--accent);font-weight:600;}
.chat-log{background:#fff;padding:20px 18px;max-height:56vh;min-height:40vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px;}
.chat-empty{text-align:center;color:var(--muted);font-size:14px;margin:auto;}
.chat-msg{display:flex;flex-direction:column;max-width:75%;}
.chat-msg.mine{align-self:flex-end;align-items:flex-end;}
.chat-msg.theirs{align-self:flex-start;align-items:flex-start;}
.chat-bubble{padding:10px 15px;border-radius:20px;font-size:14px;line-height:1.5;white-space:normal;}
.chat-msg.mine .chat-bubble{background:linear-gradient(135deg,var(--accent),var(--dark));color:#fff;border-bottom-right-radius:6px;}
.chat-msg.theirs .chat-bubble{background:var(--paper);color:var(--ink);border-bottom-left-radius:6px;}
.chat-time{font-size:10.5px;color:var(--muted);margin-top:3px;padding:0 4px;}
.chat-compose{display:flex;gap:10px;align-items:center;padding:12px 16px;border-top:1px solid var(--line);background:#fff;}
.chat-compose textarea{flex:1;resize:none;max-height:120px;border:1px solid var(--line);border-radius:20px;padding:10px 18px;font:inherit;font-size:16px;line-height:1.4;}
.chat-send{flex-shrink:0;width:38px;height:38px;border-radius:50%;border:none;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:opacity .2s var(--ease);}
.chat-send:hover{opacity:.85;}
.chat-send svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;}

/* ---------- Notifications ---------- */
.notif-list{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff;}
.notif-row{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);background:#fff;text-decoration:none;color:var(--ink);transition:background-color .2s var(--ease);}
.notif-row:last-child{border-bottom:none;}
.notif-row:hover{background:var(--paper);}
.notif-row.is-new{background:rgba(184,144,46,.06);}
.notif-icon{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff;}
.notif-icon svg{width:17px;height:17px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.notif-icon-like{background:#e0245e;}
.notif-icon-comment{background:#3897f0;}
.notif-icon-follow{background:var(--accent);}
.notif-icon-application{background:var(--accent2);}
.notif-icon-service{background:var(--accent);}
.notif-avatar{width:34px;height:34px;border-radius:50%;background:var(--dark);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'Inter',sans-serif;font-weight:700;font-size:12px;flex-shrink:0;margin-left:-22px;border:2px solid #fff;}
.notif-body{flex:1;min-width:0;font-size:13.5px;line-height:1.5;color:var(--ink);}
.notif-body strong{font-weight:700;}
.notif-time{display:block;font-size:11.5px;color:var(--muted);margin-top:2px;}

/* ---------- Timeline (application tracking) ---------- */
.timeline{list-style:none;padding:0;margin:10px 0 0;display:flex;flex-wrap:wrap;gap:10px;counter-reset:tl;}
.timeline li{counter-increment:tl;position:relative;padding:10px 16px 10px 40px;border:1px solid var(--line);border-radius:8px;font-size:13.5px;font-weight:600;color:var(--muted);flex:1 1 140px;}
.timeline li::before{content:counter(tl);position:absolute;left:12px;top:50%;transform:translateY(-50%);width:20px;height:20px;border-radius:50%;background:var(--line);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;}
.timeline li.done{border-color:var(--accent);color:var(--accent);}
.timeline li.done::before{background:var(--accent);}
.timeline li.current{background:rgba(217,27,99,.08);}

/* ---------- Admin: categories ---------- */
.cat-add-form{display:flex;gap:12px;margin-bottom:26px;flex-wrap:wrap;}
.cat-add-form input{max-width:320px;}

/* ---------- Grocery: add-to-cart stepper + cart summary bar ---------- */
.grocery-item{display:flex;flex-direction:column;}
.grocery-stepper{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;border:1px solid var(--accent);border-radius:6px;padding:6px 10px;background:rgba(217,27,99,.06);}
.grocery-stepper button{background:none;border:none;color:var(--accent);font-size:17px;font-weight:700;cursor:pointer;padding:2px 8px;line-height:1;}
.grocery-stepper-qty{font-weight:700;font-size:14px;}
.grocery-cart-bar{position:fixed;left:0;right:0;bottom:0;z-index:140;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 24px;background:var(--dark);color:#fff;font-size:14px;font-weight:600;box-shadow:0 -12px 30px -18px rgba(43,10,26,.5);}
.grocery-cart-bar strong{font-family:'Inter',sans-serif;font-size:17px;}
.grocery-cart-bar span#groceryCartTotal{color:var(--accent2);font-weight:700;}

/* ---------- Responsive ---------- */
@media (max-width:980px){
  .nav-text-link, .nav-hello, .nav-right .btn-outline{display:none;}
  .job-filter-bar{grid-template-columns:1fr 1fr;}
  .role-picker{grid-template-columns:1fr;}
  .stat-row{grid-template-columns:1fr 1fr;}
  .cand-body{grid-template-columns:1fr;}
  .cand-card{position:static;}
  /* Clear the mobile bottom-bar nav (assets/style.css) so the two fixed
     bars don't overlap. */
  .grocery-cart-bar{bottom:60px;}
}
@media (max-width:640px){
  .job-filter-bar{grid-template-columns:1fr;padding:18px;}
  .job-card{padding:22px;}
  .stat-row{grid-template-columns:1fr;}
  .auth-card{padding:26px;}
  .candidate-grid{grid-template-columns:1fr;}
  .applicant-status{margin-left:0;}
  .chat-msg{max-width:90%;}
  .cand-header{padding:18px;gap:16px;}
  .cand-avatar{width:76px;height:76px;flex-basis:76px;}
  .cand-avatar-empty{font-size:30px;}
  .cand-id{min-width:0;flex-basis:calc(100% - 92px);}
  .cand-cta{width:100%;}
  .cand-cta .btn{width:100%;justify-content:center;}
  .grocery-stepper button{padding:10px 16px;font-size:19px;}
  .role-option{padding:14px;}
}

/* ---------- v14: vehicle picker, saved-address chips, hire/parcel forms ---------- */
.vehicle-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;}
.vehicle-option{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;border:1.5px solid var(--line);border-radius:12px;padding:14px 8px;cursor:pointer;transition:border-color .25s var(--ease), background-color .25s var(--ease), transform .2s var(--ease);}
.vehicle-option:hover{border-color:var(--accent);transform:translateY(-1px);}
.vehicle-option input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;}
.vehicle-option.checked,.vehicle-option:has(input:checked){border-color:var(--accent);background:rgba(217,27,99,.07);box-shadow:0 0 0 3px rgba(217,27,99,.12);}
.vehicle-option .vehicle-icon{font-size:30px;line-height:1.1;}
.vehicle-option strong{font-size:14px;}
.vehicle-option small{font-size:11.5px;color:var(--muted);}
.saved-picker{margin-bottom:12px;}
.saved-picker-label{display:block;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;}
.chip-btn{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;font-family:inherit;transition:border-color .2s var(--ease), background-color .2s var(--ease), color .2s var(--ease);}
.chip-btn:hover{border-color:var(--accent);}
.chip-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;}
.checkbox-line{display:flex;align-items:flex-start;gap:8px;font-size:13.5px;font-weight:500;cursor:pointer;}
.checkbox-line input{width:auto;margin-top:3px;flex:none;}

/* ---------- v14: hospital OP slot picker ---------- */
.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;}
.slot-option{position:relative;display:block;text-align:center;border:1.5px solid var(--line);border-radius:10px;padding:10px 6px;font-size:13.5px;font-weight:600;cursor:pointer;transition:border-color .2s var(--ease), background-color .2s var(--ease), color .2s var(--ease);}
.slot-option input{position:absolute;opacity:0;pointer-events:none;}
.slot-option:hover{border-color:var(--accent);}
.slot-option:has(input:checked){background:var(--accent);border-color:var(--accent);color:#fff;}
.slot-option.taken{opacity:.4;cursor:not-allowed;text-decoration:line-through;background:var(--paper);}
.slot-option.taken:hover{border-color:var(--line);}

/* v27: app design — rounded cards and chips */
.welcome-card,.stat-box,.job-card,.prop-card,.dash-card,.panel,.card,.auth-card,.thread-item,.chat-box{border-radius:18px;}
.chip-filter{border-radius:999px;}
.thread-avatar,.chat-avatar,.member-avatar-empty,.cand-avatar-empty{background:var(--grad,#d91b63);}
