/* Market Force Shopper portal theme. Taken from Docs/shopper_site_prototype.html (brand tokens shared with
   the Client Module eyes-theme.css). Prototype-only chrome (banner, phone frame, notes) is left out. */
:root{
  --portal-primary:#007682;--portal-primary-hover:#34b1c1;--portal-primary-rgb:0,118,130;
  --portal-secondary:#f08a1d;--portal-text:#64554f;--portal-text-muted:#8f8075;--portal-accent-open:#a6d514;
  --bs-primary:#007682;--bs-primary-rgb:0,118,130;--bs-link-color:#007682;--bs-link-hover-color:#34b1c1;
  --tabbar-h:64px;
}
html,body{height:100%}
body.portal-body{font-family:'Arimo',system-ui,sans-serif;color:var(--portal-text);background:#f5f6f7;margin:0}
h1,h2,h3,h4,h5,.brand-title{font-family:'Bitter',Georgia,serif;color:var(--portal-text)}
.btn-primary{background:var(--portal-primary);border-color:var(--portal-primary);font-weight:700}
.btn-primary:hover{background:var(--portal-primary-hover)!important;border-color:var(--portal-primary-hover)!important}
.btn-outline-primary{color:var(--portal-primary);border-color:var(--portal-primary)}
.btn-outline-primary:hover{background:var(--portal-primary);border-color:var(--portal-primary)}
.btn-accent{background:var(--portal-secondary);border-color:var(--portal-secondary);color:#fff;font-weight:700}
.btn-accent:hover{background:#d97a12;border-color:#d97a12;color:#fff}
.text-muted{color:var(--portal-text-muted)!important}
.text-accent{color:var(--portal-secondary)!important}

/* ---- App shell ---- */
#app{position:relative;min-height:100vh}
.app-top{position:sticky;top:0;z-index:1030;background:#fff;border-bottom:1px solid #e8e4e1}
.app-top .brand-title{font-size:1.05rem;font-weight:700;margin:0;letter-spacing:-.02em;line-height:1.1}
.app-top .brand-sub{font-size:.72rem;color:var(--portal-text-muted)}
.desktop-nav .nav-link{color:var(--portal-primary)!important;font-weight:600;padding:.4rem .7rem;border-radius:.5rem}
.desktop-nav .nav-link.active{background:rgba(var(--portal-primary-rgb),.1)}
main{padding:1rem .9rem calc(var(--tabbar-h) + 1.5rem)}
@media (min-width:992px){main{padding-bottom:2rem}}
.tabbar{position:fixed;left:0;right:0;bottom:0;height:var(--tabbar-h);background:#fff;border-top:1px solid #e8e4e1;display:flex;justify-content:space-around;align-items:center;z-index:1030;padding-bottom:env(safe-area-inset-bottom)}
@media (min-width:992px){.tabbar{display:none}}
.tabbar a{flex:1;text-align:center;color:var(--portal-text-muted);text-decoration:none;font-size:.68rem;font-weight:600;padding:.4rem 0;position:relative}
.tabbar a i{display:block;font-size:1.2rem;margin-bottom:.15rem}
.tabbar a.active{color:var(--portal-primary)}
.tabbar a .count{position:absolute;top:2px;right:calc(50% - 20px);background:var(--portal-secondary);color:#fff;border-radius:999px;font-size:.6rem;padding:0 .35rem;line-height:1.3}
.screen{display:none}.screen.active{display:block}
.page-h{font-size:1.35rem;margin-bottom:.15rem}
.page-sub{font-size:.85rem;color:var(--portal-text-muted);margin-bottom:.9rem}

/* ---- Message to shoppers banner (admin-editable) ---- */
.msg-banner{background:linear-gradient(135deg,var(--portal-primary),#0a5a63);color:#fff;border-radius:.9rem;padding:.9rem 1rem;position:relative;margin-bottom:1rem}
.msg-banner .k{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;opacity:.8}
.msg-banner .t{font-family:'Bitter',serif;font-weight:700;font-size:1.05rem;margin:.1rem 0 .25rem}
.msg-banner .b{font-size:.88rem;opacity:.95}
.msg-banner .edit{position:absolute;top:.55rem;right:.6rem;background:rgba(255,255,255,.2);border:0;color:#fff;border-radius:.4rem;padding:.2rem .5rem;font-size:.75rem;display:none}
body.admin .msg-banner .edit{display:inline-block}
.msg-banner.tip{background:#fff;color:var(--portal-text);border:1px solid #e8e4e1}
.msg-banner.tip .k{color:var(--portal-secondary);opacity:1}

/* ---- Cards ---- */
.card{border:1px solid #e8e4e1;border-radius:.9rem}
.stat{background:#fff;border:1px solid #e8e4e1;border-radius:.9rem;padding:.7rem .8rem}
.stat .n{font-family:'Bitter',serif;font-size:1.35rem;font-weight:700;line-height:1.1}
.stat .l{font-size:.7rem;color:var(--portal-text-muted)}
.job-card{background:#fff;border:1px solid #e8e4e1;border-radius:.9rem;padding:.8rem .9rem;margin-bottom:.7rem;cursor:pointer;position:relative;transition:box-shadow .15s}
.job-card:hover{box-shadow:0 4px 14px rgba(0,0,0,.08)}
.job-card.ineligible{opacity:.72}
.job-card .ico{width:42px;height:42px;border-radius:.7rem;background:rgba(var(--portal-primary-rgb),.1);color:var(--portal-primary);display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex:0 0 42px}
.job-card.hot .ico{background:#fff1e6;color:var(--portal-secondary)}
.job-card .ttl{font-weight:700;font-size:.95rem;line-height:1.2}
.job-card .sub{font-size:.78rem;color:var(--portal-text-muted)}
.job-card .fee{font-family:'Bitter',serif;font-weight:700;font-size:1.15rem;line-height:1;text-align:right;white-space:nowrap}
.job-card .fee small{display:block;font-family:'Arimo';font-size:.68rem;font-weight:400;color:var(--portal-text-muted)}
.tag{display:inline-flex;align-items:center;gap:.25rem;font-size:.68rem;font-weight:600;padding:.15rem .5rem;border-radius:999px;background:#f1efed;color:var(--portal-text);margin:.15rem .15rem 0 0}
.tag.hot{background:#fff1e6;color:#c4620a}.tag.ok{background:#e7f4ea;color:#1f6b3a}.tag.warn{background:#fff4d6;color:#8a5a00}.tag.bad{background:#fde2e1;color:#a3242f}.tag.early{background:#e8f7fb;color:#0a5a63}.tag.prim{background:rgba(var(--portal-primary-rgb),.12);color:var(--portal-primary)}
.status-pill{font-size:.7rem;font-weight:700;padding:.2rem .6rem;border-radius:999px;white-space:nowrap}
.st-assigned{background:#e9ecef;color:#495057}.st-confirmed{background:#e8f7fb;color:#0a5a63}.st-inprogress{background:rgba(var(--portal-primary-rgb),.15);color:var(--portal-primary)}
.st-submitted{background:#eee6fb;color:#5a3d9a}.st-returned{background:#fde2e1;color:#a3242f}.st-complete{background:#e7f4ea;color:#1f6b3a}.st-paid{background:#1f6b3a;color:#fff}.st-reserved{background:#fff4d6;color:#8a5a00}
.countdown{font-size:.75rem;color:#a3242f;font-weight:600}

/* ---- Map ---- */
#map{height:300px;border-radius:.9rem;border:1px solid #e8e4e1;z-index:1}
@media (min-width:992px){#map{height:calc(100vh - 230px);min-height:480px;position:sticky;top:80px}}
.leaflet-container{font-family:'Arimo',sans-serif}
.pin{width:30px;height:30px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center}
.pin i{transform:rotate(45deg);color:#fff;font-size:.75rem}
.pin.avail{background:var(--portal-primary)}.pin.hot{background:var(--portal-secondary)}.pin.mine{background:#3f8f4f}.pin.inel{background:#adb5bd}.pin.home{background:#64554f;border-radius:50%}.pin.home i{transform:none}
.facet{display:inline-flex;align-items:center;gap:.3rem;border:1px solid #dee2e6;border-radius:999px;padding:.25rem .7rem;font-size:.78rem;cursor:pointer;user-select:none;background:#fff;margin:.15rem}
.facet.on{background:var(--portal-primary);color:#fff;border-color:var(--portal-primary)}

/* ---- Detail / requirements ---- */
.req{display:flex;gap:.6rem;align-items:flex-start;padding:.55rem 0;border-bottom:1px dashed #eee}
.req i{width:22px;text-align:center;margin-top:.15rem}
.req.done i{color:#1f6b3a}.req.todo i{color:var(--portal-secondary)}.req.blocked i{color:#a3242f}
.req .t{font-weight:600;font-size:.9rem}.req .d{font-size:.78rem;color:var(--portal-text-muted)}
.fee-table td{padding:.25rem .3rem;font-size:.88rem}.fee-table td:last-child{text-align:right;font-weight:600}

/* ---- Misc ---- */
.level-ring{width:56px;height:56px;border-radius:50%;background:conic-gradient(var(--portal-primary) var(--pct),#e9ecef 0);display:flex;align-items:center;justify-content:center}
.level-ring span{width:44px;height:44px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;font-family:'Bitter',serif;font-weight:700;color:var(--portal-primary)}
.timeline{list-style:none;padding:0;margin:0}.timeline li{position:relative;padding-left:1.4rem;padding-bottom:.6rem;font-size:.85rem}
.timeline li::before{content:'';position:absolute;left:.3rem;top:.35rem;width:.6rem;height:.6rem;border-radius:50%;background:#dee2e6}
.timeline li.done::before{background:#1f6b3a}.timeline li.now::before{background:var(--portal-secondary);box-shadow:0 0 0 3px #fff1e6}
.timeline li::after{content:'';position:absolute;left:.55rem;top:1rem;bottom:0;width:2px;background:#eee}.timeline li:last-child::after{display:none}
.inbox-item{display:flex;gap:.7rem;padding:.7rem 0;border-bottom:1px solid #eee}.inbox-item.unread .t{font-weight:700}
.inbox-item .ic{width:36px;height:36px;border-radius:50%;background:#f1efed;display:flex;align-items:center;justify-content:center;color:var(--portal-primary);flex:0 0 36px}
.list-row{display:flex;justify-content:space-between;align-items:center;padding:.6rem 0;border-bottom:1px solid #eee;font-size:.9rem}
.list-row:last-child{border-bottom:0}
.hero-login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#007682 0%,#0a5a63 60%,#64554f 100%)}
.conv{font-size:.72rem;color:var(--portal-text-muted)}

/* ---- R1092526 additions (30 Sep) ---- */
.country-sel{width:auto;font-size:.8rem;padding-top:.2rem;padding-bottom:.2rem}
.carousel-msg{position:relative;overflow:hidden}
.carousel-msg .slide{display:none;gap:.9rem;align-items:center}
.carousel-msg .slide.on{display:flex}
.carousel-msg .slide img,.carousel-msg .slide .img{width:92px;height:92px;border-radius:.7rem;object-fit:cover;flex:0 0 92px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:2rem}
.carousel-msg .dots{display:flex;gap:.3rem;margin-top:.6rem;align-items:center}
.carousel-msg .dots button{width:8px;height:8px;border-radius:50%;border:0;background:rgba(255,255,255,.45);padding:0}
.carousel-msg .dots button.on{background:#fff;width:18px;border-radius:999px}
.carousel-msg .nav-a{background:rgba(255,255,255,.2);border:0;color:#fff;border-radius:.4rem;padding:0 .45rem;font-size:.75rem}
.fee-reimb{font-family:'Bitter',serif;font-weight:700;font-size:1.15rem;line-height:1.1;color:var(--portal-primary);white-space:nowrap}
.fee-reimb .lbl{display:block;font-family:'Arimo';font-size:.68rem;font-weight:400;color:var(--portal-text-muted)}
.job-card .fee{color:var(--portal-primary)}
.card-msg{background:#fff8ef;border:1px solid #ffd9b0;border-radius:.7rem;font-size:.8rem;color:var(--portal-text)}
.card-msg .k{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:#c4620a;font-weight:700}
.card-msg i.fa-bullhorn{color:#c4620a}
.card-msg.under{margin-top:.6rem;padding:.4rem .6rem}
.proj-msg{background:#fff8ef;border:1px solid #ffd9b0;border-radius:.9rem;padding:.8rem .9rem}
.proj-msg .k{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:#c4620a;font-weight:700}
.w3w{font-family:ui-monospace,Menlo,Consolas,monospace;color:#e11f26;font-weight:600}
.loc-chip{display:inline-flex;align-items:center;gap:.35rem;border:1px solid #dee2e6;border-radius:.6rem;padding:.25rem .6rem;font-size:.78rem;cursor:pointer;background:#fff;margin:.15rem}
.loc-chip.on{border-color:var(--portal-primary);background:rgba(var(--portal-primary-rgb),.08);color:var(--portal-primary);font-weight:600}
.wiz-steps{display:flex;gap:.3rem;margin-bottom:.8rem}
.wiz-steps span{flex:1;height:5px;border-radius:999px;background:#e9ecef}
.wiz-steps span.on{background:var(--portal-primary)}
.ref-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700;font-size:1.05rem;letter-spacing:.08em;color:var(--portal-primary)}
.locked-note{background:#f8f9fa;border:1px dashed #ced4da;border-radius:.9rem;padding:.8rem .9rem}

/* ---- Build additions ---- */
.staff-view-banner{background:#fff4d6;border-bottom:1px solid #ffe69c;color:#8a5a00;font-size:.85rem;position:sticky;top:0;z-index:1040}
.staff-view-banner.acting{background:#fde2e1;border-color:#f5b5b2;color:#a3242f}
.guest-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem .75rem;background:linear-gradient(160deg,#007682 0%,#0a5a63 60%,#64554f 100%)}
.guest-card{width:100%;max-width:30rem;border-radius:1rem}
.guest-card.wide{max-width:46rem}
.oidc-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;border:1px solid #dee2e6;background:#fff;border-radius:.6rem;padding:.55rem .8rem;font-weight:600;color:var(--portal-text)}
.oidc-btn:hover{background:#f8f9fa}
.divider-or{display:flex;align-items:center;gap:.6rem;color:var(--portal-text-muted);font-size:.8rem;margin:1rem 0}
.divider-or::before,.divider-or::after{content:'';flex:1;border-top:1px solid #e8e4e1}
.stub-note{background:#f8f9fa;border:1px dashed #ced4da;border-radius:.9rem;padding:.8rem .9rem;font-size:.85rem;color:var(--portal-text-muted)}
.note{display:flex;gap:.6rem;border-radius:.7rem;padding:.6rem .8rem;font-size:.85rem;margin-bottom:.5rem}
.note.info{background:#e8f7fb;color:#0a5a63}.note.warn{background:#fff4d6;color:#8a5a00}.note.bad{background:#fde2e1;color:#a3242f}.note.ok{background:#e7f4ea;color:#1f6b3a}
.req-star{color:#a3242f}
.opt-l{font-size:.75rem;color:var(--portal-text-muted);font-weight:400}
.section-h{font-weight:700;font-size:.9rem;margin:1rem 0 .4rem}
.agree-box{max-height:14rem;overflow:auto;border:1px solid #e8e4e1;border-radius:.7rem;padding:.8rem;background:#fafbfc;font-size:.85rem}
.code-big{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.6rem;font-weight:700;letter-spacing:.06em;color:var(--portal-primary)}
.hero-ok{width:64px;height:64px;border-radius:50%;background:#e7f4ea;color:#1f6b3a;display:flex;align-items:center;justify-content:center;font-size:1.6rem;margin:0 auto .8rem}
