/* Shared visual identity for landing, all roles, forms, dashboards and dialogs. */
:root {
  --ink: var(--brand-ink);
  --muted: var(--brand-muted);
  --line: var(--brand-line);
  --canvas: #ffffff;
  --surface: #ffffff;
  --teal: var(--brand-blue);
  --teal-dark: var(--brand-blue-dark);
  --mint: var(--brand-soft);
  --coral: var(--brand-blue-light);
  --coral-soft: #f1f7ff;
  --yellow: #9ac8fa;
  --shadow: 0 18px 45px rgba(21, 88, 176, .10);
  --shadow-sm: 0 8px 22px rgba(21, 88, 176, .07);
}
body { line-height: 1.95; }
h1,h2,h3,h4,h5,h6,.brand-copy strong { font-family: Vazirmatn,Tahoma,Arial,sans-serif; font-weight:750; letter-spacing:0; }
.hero-copy h1 { line-height:1.55; font-size:clamp(37px,4.5vw,59px); letter-spacing:0; }
.hero-copy p { font-size:15px; }
.role-card { background:white; }
.role-card .role-icon { color:var(--teal);background:var(--mint); }
.auth-aside,.welcome-banner { background:linear-gradient(125deg,#0e4591,#1b69c5); }
.auth-aside .eyebrow,.aside-point i { color:#cce5ff; }
.nurse-hero { background:linear-gradient(110deg,#edf5ff,#f8fbff); }
.auth-card,.panel,.stat-card,.role-card { box-shadow:0 8px 26px #1558b008; }
.hero-copy .eyebrow,.hero-trust { background:var(--mint);color:var(--teal); }
.user-avatar,.mini-avatar,.avatar-preview { background:linear-gradient(145deg,#73b4f2,#1558b0); }
.topbar { gap:14px; }.topbar-actions { flex-wrap:wrap; }
.site-return { display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:7px 12px;font-size:11px;font-weight:600;color:var(--teal);background:white;white-space:nowrap; }
.site-return:hover { background:var(--mint); }
.brand-group { display:flex;align-items:center;gap:14px;flex-wrap:wrap; }
.application-notice { margin:0;padding:7px 20px;text-align:center;background:#edf5ff;color:#526d89;font-size:10px;border-bottom:1px solid var(--line); }
.hero-photo { background-image:url('../assets/images/elder-care.jpg');background-size:cover;background-position:center; }
.role-hero-photo { background-image:url('../assets/images/care-companionship.jpg');background-size:cover;background-position:center; }
.elder-photo { background-image:url('../assets/images/elder-care.jpg'); }
.hero-visual::before { background:#edf5ff; }
.btn-primary,.brand-mark { box-shadow:0 10px 22px #1558b020; }
.btn-coral { box-shadow:0 10px 22px #2e86ea20; }
.bottom-nav { border-color:var(--line); }
.app-menu { position:relative;z-index:30;flex:0 0 auto; }
.app-menu-toggle { width:44px;height:44px;display:grid;place-items:center;list-style:none;cursor:pointer;border:1px solid var(--line);border-radius:13px;color:var(--teal);background:#fff; }
.app-menu-toggle::-webkit-details-marker { display:none; }
.app-menu-toggle:hover,.app-menu[open]>.app-menu-toggle { background:var(--mint);border-color:#a7c9f0; }
.app-menu-toggle svg { width:23px;height:23px; }
.app-menu-panel { position:absolute;top:calc(100% + 12px);right:0;display:grid;width:min(340px,calc(100vw - 32px));max-height:calc(100dvh - 140px);overflow:auto;padding:14px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 18px 55px #1558b029;text-align:right; }
.app-menu-heading { display:grid;gap:2px;padding:7px 10px 14px;margin-bottom:7px;border-bottom:1px solid var(--line); }
.app-menu-heading strong { font-size:15px;color:var(--ink); }
.app-menu-heading span { font-size:10px;color:var(--muted); }
.app-menu-link { min-height:44px;width:100%;display:flex;align-items:center;gap:10px;padding:10px;border:0;border-radius:10px;text-align:right;background:transparent;color:var(--ink);font-size:12px;font-weight:600; }
.app-menu-link:hover { background:var(--mint);color:var(--teal); }
.app-menu-link svg { width:18px;height:18px;flex-shrink:0;color:var(--teal); }
.app-menu-link svg:last-child:not(:first-child),.app-menu-link small { margin-right:auto; }
.app-menu-link small { font-size:10px;color:var(--muted); }
.app-menu-admin { margin-top:6px;background:var(--mint);color:var(--teal); }
.app-menu-section { padding:14px 10px 5px;font-size:10px;color:var(--muted); }
.app-menu-role { display:flex;align-items:center;gap:5px; }
.app-menu-role .app-menu-link { flex:1;min-width:0; }
.app-menu-register { flex-shrink:0;border:1px solid var(--line);border-radius:8px;padding:6px 9px;background:#fff;color:var(--teal);font-size:10px; }
.app-menu-register:hover { background:var(--mint); }
.app-menu-site { margin-top:10px;border-top:1px solid var(--line);border-radius:0; }
@media(max-width:700px){.brand-group{gap:7px}.site-return{padding:5px 8px;font-size:10px}.topbar-actions{gap:6px}.hero-copy h1{font-size:36px}.dashboard-header h1{font-size:26px}}
@media(max-width:700px){.topbar,.dashboard-topbar>.container{flex-wrap:wrap}.app-menu-toggle{width:40px;height:40px}}
.connection-state{min-height:calc(100vh - 100px);display:grid;place-items:center;padding-block:60px}.connection-card{width:min(100%,620px);background:#fff;border:1px solid #d6e8fb;border-radius:26px;box-shadow:0 24px 60px #184d8620;padding:clamp(25px,5vw,48px);text-align:center}.connection-card h1{font-size:clamp(23px,3vw,34px);margin:16px 0}.connection-card p{color:#536f8c;line-height:2}.connection-symbol{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;margin:auto;background:#eaf4ff;color:#165bab;font-weight:800;font-size:28px}.connection-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:22px}
/* Stronger reading scale and responsive horizontal request gallery. */
:root{--brand-blue:#105eae;--brand-soft:#edf6ff}
body{font-size:16px;line-height:1.85}
button,input,select,textarea{font-family:Vazirmatn,Tahoma,sans-serif}
.landing-hero{grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);gap:28px}
.landing-hero h1{font-size:clamp(32px,3.5vw,54px)}
.landing-hero p,.dashboard-page p{font-size:clamp(13px,1.05vw,16px)}
.request-list{display:flex;gap:14px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;padding:8px 4px 18px;scrollbar-color:#73a7dc #e9f3ff}
.request-list>.request-card{flex:0 0 clamp(240px,25vw,315px);scroll-snap-align:start;background:#fff;box-shadow:0 12px 28px #1558b00f}
.wallet-summary{margin:18px auto;max-width:1300px}.wallet-summary>strong{color:#146cb8;font-size:clamp(20px,2.3vw,29px)}
.staff-queue{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.staff-row{display:grid;gap:12px;background:#f7fbff;border:1px solid #d5e7f9;border-radius:18px;padding:20px}.staff-documents{display:grid;gap:8px}.staff-documents>div{display:flex;justify-content:space-between;gap:12px}.catalog-entry{padding:16px;border-bottom:1px solid #e4eef9}
@media(max-width:900px){.landing-hero{grid-template-columns:1fr}.request-list>.request-card{flex-basis:min(78vw,305px)}}
.opportunity-showcase,.app-about{margin:25px auto;padding:25px;border-radius:24px;background:linear-gradient(130deg,#edf6ff,#fff);border:1px solid #d7eafa}.opportunity-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:10px 3px 20px}.opportunity-card{flex:0 0 220px;scroll-snap-align:start;padding:20px;display:grid;gap:9px;border-radius:18px;background:#fff;border:1px solid #d9e9f9;box-shadow:0 10px 23px #165aa50e}.opportunity-card strong{color:#164f91}.opportunity-card small{color:#6684a4}.app-about label{display:flex;align-items:center;gap:8px;font-weight:700}.app-about input{width:auto}.app-about-content{padding:12px;line-height:2;color:#436886}

.brand-mark{background:#fff;border:1px solid #dce8f7;overflow:hidden}.brand-mark img{width:100%;height:100%;object-fit:contain}

.opportunity-card{overflow:hidden;align-content:start}.opportunity-thumb{display:block;width:100%;height:125px;object-fit:cover;border-radius:13px}.opportunity-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto}.opportunity-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:7px 9px;border:0;border-radius:10px;background:#eaf4ff;color:#1558b0;cursor:pointer;font-weight:700;font-size:11px}.opportunity-action.is-primary{background:#1558b0;color:#fff}.opportunity-action svg{width:15px;height:15px}.opportunity-action:focus-visible{outline:3px solid #f29b38;outline-offset:2px}
.tehran-map-section{margin:30px 0 34px}.tehran-map-shell{overflow:hidden;border:1px solid #d5e7f8;border-radius:26px;background:#f4f9ff;box-shadow:0 18px 40px #1558b012}.tehran-map{position:relative;cursor:grab;touch-action:none;min-height:430px;overflow:hidden;background:linear-gradient(135deg,#e8f2fb 0%,#f8fbff 55%,#e5f1fa 100%);direction:ltr}.tehran-map.is-dragging{cursor:grabbing}.map-zoom-controls{position:absolute;z-index:6;right:14px;top:14px;display:grid;gap:6px}.map-zoom-controls button{width:34px;height:34px;border:1px solid #c9ddec;border-radius:10px;background:#ffffffea;color:#1558b0;font-size:22px;font-weight:800;cursor:pointer;box-shadow:0 4px 12px #1558b01f}.map-zoom-controls button:hover{background:#edf6ff}.tehran-map:before,.tehran-map:after{content:"";position:absolute;inset:0;background-image:linear-gradient(28deg,transparent 47%,#d2e1ed 48%,#d2e1ed 49%,transparent 50%),linear-gradient(118deg,transparent 46%,#d9e7f1 47%,#d9e7f1 48%,transparent 49%);background-size:145px 120px,190px 150px;opacity:.66;transform:rotate(-4deg) scale(1.15)}.tehran-map:after{background-image:linear-gradient(90deg,transparent 49%,#c4d9e8 50%,transparent 51%),linear-gradient(8deg,transparent 49%,#cbddea 50%,transparent 51%);background-size:90px 90px,130px 110px;opacity:.4}.map-road{position:absolute;height:7px;border-radius:10px;background:#fff;box-shadow:0 0 0 2px #c7dbe9;z-index:1;transform-origin:center}.road-a{width:92%;left:4%;top:49%;transform:rotate(-9deg)}.road-b{width:80%;left:10%;top:35%;transform:rotate(28deg)}.road-c{width:76%;left:14%;top:67%;transform:rotate(14deg)}.road-d{width:64%;left:20%;top:58%;transform:rotate(-48deg)}.road-e{width:55%;left:29%;top:22%;transform:rotate(72deg)}.map-water{position:absolute;z-index:1;width:150%;height:105px;right:-20%;bottom:-35px;background:#badff0;border-top:4px solid #a6d1e6;border-radius:50% 50% 0 0;transform:rotate(-5deg);opacity:.85}.map-label{position:absolute;z-index:2;color:#52718e;font-size:11px;font-weight:700;background:#ffffffa8;border-radius:7px;padding:2px 6px;direction:rtl}.l1{right:8%;top:13%}.l2{right:46%;top:25%}.l3{left:18%;top:33%}.l4{right:17%;top:43%}.l5{left:42%;top:59%}.map-center-label{position:absolute;z-index:2;left:48%;top:45%;color:#1558b0;font-weight:900;font-size:24px;direction:rtl}.tehran-map-marker{position:absolute;z-index:4;width:38px;height:38px;border:3px solid #fff;border-radius:50%;display:grid;place-items:center;color:#fff;cursor:pointer;box-shadow:0 5px 14px #173a5d55;transform:translate(-50%,-50%);transition:transform .18s ease,box-shadow .18s ease}.tehran-map-marker:hover,.tehran-map-marker:focus-visible{transform:translate(-50%,-50%) scale(1.18);box-shadow:0 8px 20px #173a5d66;outline:3px solid #f4ae46;outline-offset:3px}.tehran-map-marker svg{width:20px;height:20px}.elderly-marker{background:#1558b0}.nurse-marker{background:#2c9b83}.tehran-map-credit{position:absolute;z-index:3;left:10px;bottom:9px;background:#ffffffdd;border-radius:8px;padding:4px 8px;color:#59738b;font-size:9px;direction:rtl}.tehran-map-legend{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:14px 18px;color:#40627f;font-size:11px}.tehran-map-legend span{display:inline-flex;align-items:center;gap:6px}.tehran-map-legend small{margin-right:auto;color:#7892a8}.legend-dot{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;color:#fff}.legend-dot svg{width:14px;height:14px}.elderly-dot{background:#1558b0}.nurse-dot{background:#2c9b83}@media(max-width:700px){.tehran-map{min-height:350px}.tehran-map-marker{width:34px;height:34px}.tehran-map-legend small{width:100%;margin:0}.map-label{font-size:9px}}


.tehran-live-map{height:430px;position:relative;z-index:1}.tehran-map[hidden]{display:none!important}.tehran-live-note{position:absolute;z-index:500;bottom:8px;right:9px;padding:5px 9px;background:#fffffff0;border-radius:8px;color:#315675;font-size:11px;direction:rtl}@media(max-width:700px){.tehran-live-map{height:350px}}

.neshan-map-icon-wrap{background:transparent!important;border:0!important}.neshan-map-pin{width:42px;height:42px;border:3px solid #fff;border-radius:50%;display:grid;place-items:center;color:#fff;box-shadow:0 5px 14px #173a5d66;transition:transform .18s ease,box-shadow .18s ease}.neshan-map-pin:hover,.neshan-map-pin:focus{transform:scale(1.16);box-shadow:0 8px 20px #173a5d88;outline:3px solid #f4ae46;outline-offset:2px}.neshan-map-pin svg{width:23px;height:23px}.neshan-map-pin.elderly{background:#1558b0}.neshan-map-pin.nurse{background:#2c9b83}

.map-request-button{margin-right:auto}.map-live-request-button{position:absolute;z-index:501;top:12px;left:12px;border:0;border-radius:10px;background:#1558b0;color:#fff;padding:9px 12px;font-family:inherit;font-size:11px;cursor:pointer;box-shadow:0 5px 14px #1558b044}.map-live-request-button:hover{background:#10478e}
