/* =====================================================================
   AgriZameen Marketplace — dashboard styles
   Sits UNDER az-chrome.css. Only .azm-* selectors; nothing here touches
   the shared header, footer or .azs-* chrome.
   ===================================================================== */

:root{
  --azc-deep:#0F2419; --azc-forest:#1A3C2A; --azc-gold:#C8A951;
  --azc-goldl:#E8D48B; --azc-goldd:#6F5518; --azc-cream:#F5F0E6;
  --azc-ink:#26221B;  --azc-line:#E2DCCE;   --azc-bg:#FEFDFB;
}

.azm{font-family:'DM Sans','Noto Sans Devanagari',system-ui,sans-serif;
  color:var(--azc-ink);max-width:1200px;margin:0 auto;padding:28px 20px 72px}
.azm h2{font-family:'Playfair Display',Georgia,serif;font-size:1.5rem;
  color:var(--azc-forest);margin:0 0 4px}
.azm h3{font-family:'Playfair Display',Georgia,serif;font-size:1.15rem;
  color:var(--azc-forest);margin:0 0 10px}
.azm p{max-width:880px;line-height:1.65}
.azm .sub{color:#5E5748;font-size:.9rem;margin:0 0 20px;max-width:880px}

/* ---- panels ---- */
.azm-card{background:var(--azc-bg);border:1px solid var(--azc-line);
  border-radius:14px;padding:22px;margin:0 0 18px;
  box-shadow:0 1px 2px rgba(15,36,25,.04)}
.azm-card.cream{background:var(--azc-cream)}
.azm-grid{display:grid;gap:16px}
@media(min-width:760px){
  .azm-grid.two{grid-template-columns:1fr 1fr}
  .azm-grid.three{grid-template-columns:repeat(3,1fr)}
}

/* ---- forms ---- */
.azm label.f{display:block;font-size:.82rem;font-weight:600;
  color:var(--azc-forest);margin:14px 0 5px;letter-spacing:.01em}
.azm label.f .req{color:#A6402E}
.azm input,.azm select,.azm textarea{width:100%;box-sizing:border-box;
  font-family:inherit;font-size:1rem;padding:11px 12px;
  border:1px solid var(--azc-line);border-radius:9px;background:#fff;
  color:var(--azc-ink)}
.azm input:focus,.azm select:focus,.azm textarea:focus{outline:none;
  border-color:var(--azc-forest);box-shadow:0 0 0 3px rgba(26,60,42,.12)}
.azm textarea{min-height:96px;resize:vertical}
.azm .hint{font-size:.8rem;color:#6B6353;margin:5px 0 0;line-height:1.5}
.azm .row{display:flex;gap:10px;flex-wrap:wrap}
.azm .row>*{flex:1;min-width:150px}
.azm .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.azm .chk{display:flex;gap:9px;align-items:flex-start;margin:12px 0}
.azm .chk input{width:auto;flex:none;margin-top:3px}
.azm .chk span{font-size:.88rem;line-height:1.5}

/* ---- buttons ---- */
.azm-btn{display:inline-flex;align-items:center;gap:7px;font-family:inherit;
  font-size:.95rem;font-weight:600;padding:11px 20px;border-radius:9px;
  border:1px solid transparent;cursor:pointer;text-decoration:none;
  transition:filter .15s}
.azm-btn:hover{filter:brightness(1.08)}
.azm-btn:disabled{opacity:.45;cursor:not-allowed;filter:none}
.azm-btn.primary{background:var(--azc-forest);color:#fff}
.azm-btn.gold{background:var(--azc-gold);color:var(--azc-deep)}
.azm-btn.ghost{background:transparent;color:var(--azc-forest);
  border-color:var(--azc-line)}
.azm-btn.danger{background:#fff;color:#8C2F1E;border-color:#E3C4BC}
.azm-btn.sm{padding:7px 13px;font-size:.85rem}
.azm-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}

/* ---- badges ---- */
.azm-badge{display:inline-block;font-size:.74rem;font-weight:700;
  padding:4px 10px;border-radius:999px;letter-spacing:.02em}
.b-draft{background:#EFEDE6;color:#5E5748}
.b-submitted{background:#FBF0D2;color:var(--azc-goldd)}
.b-changes_requested{background:#FBE4DC;color:#8C2F1E}
.b-approved,.b-published{background:#DDEBE0;color:var(--azc-forest)}
.b-under_offer{background:#FBF0D2;color:var(--azc-goldd)}
.b-sold{background:#E6E2D8;color:#4A4437}
.b-rejected,.b-withdrawn{background:#F1E3E0;color:#8C2F1E}

/* ---- lists / tables ---- */
.azm-item{display:flex;gap:14px;align-items:flex-start;padding:15px 0;
  border-bottom:1px solid var(--azc-line)}
.azm-item:last-child{border-bottom:0}
.azm-item .thumb{width:76px;height:58px;border-radius:7px;object-fit:cover;
  background:var(--azc-cream);flex:none}
.azm-item .body{flex:1;min-width:0}
.azm-item .ttl{font-weight:600;color:var(--azc-forest);margin:0 0 3px}
.azm-item .meta{font-size:.83rem;color:#6B6353;margin:0}
.azm-ref{font-family:'Space Mono',ui-monospace,monospace;font-size:.78rem;
  color:#6B6353}

/* ---- tabs ---- */
.azm-tabs{display:flex;gap:6px;overflow-x:auto;border-bottom:2px solid var(--azc-line);
  margin:0 0 22px;-webkit-overflow-scrolling:touch}
.azm-tabs button{background:none;border:0;font-family:inherit;font-size:.92rem;
  font-weight:600;color:#6B6353;padding:11px 15px;cursor:pointer;white-space:nowrap;
  border-bottom:3px solid transparent;margin-bottom:-2px}
.azm-tabs button[aria-current="page"]{color:var(--azc-forest);
  border-bottom-color:var(--azc-gold)}
.azm-tabs .count{display:inline-block;background:var(--azc-gold);
  color:var(--azc-deep);font-size:.7rem;border-radius:999px;padding:1px 7px;
  margin-left:5px}

/* ---- steps ---- */
.azm-steps{display:flex;gap:5px;margin:0 0 20px;flex-wrap:wrap}
.azm-steps span{font-size:.78rem;font-weight:600;padding:6px 12px;border-radius:999px;
  background:#EFEDE6;color:#6B6353}
.azm-steps span.on{background:var(--azc-forest);color:#fff}
.azm-steps span.done{background:#DDEBE0;color:var(--azc-forest)}

/* ---- photos ---- */
.azm-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));
  gap:9px;margin-top:12px}
.azm-photos figure{position:relative;margin:0}
.azm-photos img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;
  border:1px solid var(--azc-line)}
.azm-photos button{position:absolute;top:4px;right:4px;width:24px;height:24px;
  border-radius:50%;border:0;background:rgba(15,36,25,.82);color:#fff;
  cursor:pointer;font-size:.8rem;line-height:1}

/* ---- toggles (staff publish control) ---- */
.azm-tog{display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:9px 0;border-bottom:1px dashed var(--azc-line)}
.azm-tog:last-child{border-bottom:0}
.azm-tog .k{font-size:.87rem}
.azm-tog .v{font-size:.87rem;color:#6B6353;text-align:right;max-width:52%;
  word-break:break-word}
.azm-tog input{width:auto;flex:none}
.azm-lock{font-size:.74rem;color:#8C2F1E;font-weight:700}

/* ---- notices ---- */
.azm-note{border-left:3px solid var(--azc-gold);background:var(--azc-cream);
  padding:13px 16px;border-radius:0 9px 9px 0;font-size:.88rem;line-height:1.6;
  margin:0 0 18px}
.azm-note.warn{border-left-color:#A6402E;background:#FBF1EE}
.azm-note strong{color:var(--azc-forest)}

/* ---- compliance strip (mandatory, every page) ---- */
/* 36px of margin plus <main>'s own bottom padding left a band of empty cream
   between the last card and the disclaimer that read as the end of the page. */
.azm-compliance{max-width:1200px;margin:14px auto 0;padding:14px 20px 4px;
  border-top:1px solid var(--azc-line);font-size:.79rem;line-height:1.65;
  color:#6B6353}
.azm-compliance p{margin:0}
.azm main.azm,main.azm{padding-bottom:14px}
.azm-compliance a{color:var(--azc-goldd)}

/* ---- toast ---- */
.az-toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,16px);
  background:var(--azc-deep);color:#fff;padding:13px 20px;border-radius:10px;
  font-family:'DM Sans',system-ui,sans-serif;font-size:.9rem;z-index:9999;
  opacity:0;transition:opacity .25s,transform .25s;max-width:90vw;
  box-shadow:0 6px 20px rgba(15,36,25,.28)}
.az-toast.in{opacity:1;transform:translate(-50%,0)}
.az-toast.err{background:#7E2A1A}

/* ---- misc ---- */
.azm-empty{text-align:left;color:#6B6353;padding:34px 0;font-size:.92rem}
.azm-spin{display:inline-block;width:15px;height:15px;border:2px solid #ffffff66;
  border-top-color:#fff;border-radius:50%;animation:azspin .7s linear infinite}
@keyframes azspin{to{transform:rotate(360deg)}}
.azm-hide{display:none!important}

/* ---- PHP build additions ---- */
.azm-tabs{align-items:center}
.azm-tabs a{background:none;border:0;font-family:inherit;font-size:.92rem;
  font-weight:600;color:#6B6353;padding:11px 15px;cursor:pointer;white-space:nowrap;
  border-bottom:3px solid transparent;margin-bottom:-2px;text-decoration:none}
.azm-tabs a[aria-current="page"]{color:var(--azc-forest);
  border-bottom-color:var(--azc-gold)}
.azm-tabs form{margin:0}
.azm-photos figure form{margin:0}
.azm-photos figure form button{position:absolute;top:4px;right:4px;width:24px;height:24px;
  border-radius:50%;border:0;background:rgba(15,36,25,.82);color:#fff;
  cursor:pointer;font-size:.8rem;line-height:1}
.azm input[type=file]{padding:9px;background:var(--azc-cream)}
/* The listing row's title is the link to its review screen (the Open
   button was removed 25 Aug). It inherits the heading colour so the row
   still reads as a heading, and carries a dotted underline so it does not
   look like dead text — a link nobody can see is worse than a button. */
.azm-item .ttl a{color:inherit;text-decoration:none;
  border-bottom:1px dotted rgba(26,60,42,.45)}
.azm-item .ttl a:hover,.azm-item .ttl a:focus-visible{text-decoration:underline;
  border-bottom-color:transparent}
.azm-item .ttl a:focus-visible{outline:2px solid #1A3C2A;outline-offset:2px}


/* ===================================================================
   Sign-in page: card + value panel side by side (added with the
   marketplace branding pass). Colours come from the site tokens so the
   dashboard cannot drift from the main site palette.
   =================================================================== */
.azm-split{display:grid;gap:22px;align-items:start}
@media (min-width:900px){ .azm-split{grid-template-columns:minmax(0,460px) minmax(0,1fr)} }

.pg-hero--bare .pg-crumb,.pg-hero--bare .pg-eyebrow{display:none}

.azm-value{
  background:var(--azc-cream,#F5F0E6);
  border:1px solid var(--azc-line,#E2DCCE);
  border-left:4px solid var(--azc-gold,#C8A951);
  border-radius:14px;padding:24px 26px
}
.azm-value h2{
  font-family:'Playfair Display',Georgia,serif;font-size:1.28rem;line-height:1.35;
  color:var(--azc-forest,#1A3C2A);margin:0 0 16px
}
.azm-value ul{list-style:none;margin:0;padding:0}
.azm-value li{
  padding:0 0 14px 26px;position:relative;font-size:.92rem;line-height:1.6;color:#4A4437
}
.azm-value li:before{
  content:"";position:absolute;left:0;top:9px;width:9px;height:9px;border-radius:50%;
  background:var(--azc-gold,#C8A951)
}
.azm-value li b{display:block;color:var(--azc-forest,#1A3C2A);font-size:.95rem;margin-bottom:2px}
.azm-value .sep{opacity:.45;margin:0 6px;font-weight:400}
.azm-value .fine{
  margin:6px 0 0;padding-top:14px;border-top:1px dashed var(--azc-line,#E2DCCE);
  font-size:.78rem;line-height:1.55;color:#6B6353
}


/* The public listings page is a normal site page, not a dashboard: it should
   read like /rajasthan/agricultural-land-for-sale/, which carries no crumb or
   eyebrow. The account and admin areas keep theirs — a signed-in seller does
   need to know where in the dashboard they are. */
body.az-public-page .pg-crumb,
body.az-public-page .pg-eyebrow{display:none}


/* ===================================================================
   Dashboard chrome corrections
   =================================================================== */

/* 1. The dashboards sit behind a login, so a breadcrumb back to "Home" and an
      eyebrow saying "Sellers" tell the user nothing they do not already know.
      listings.php is unaffected — it uses the site's own .crumb, not .pg-crumb. */
/* Emitted by az_head(), so this works with JavaScript disabled. */
.azm-dash .pg-crumb,.azm-dash .pg-eyebrow{display:none}
.azm-dash .pg-hero-in{padding-top:6px}

/* 2. The tab row ran off the right edge on a phone — "All listings", "People"
      and "Audit" were unreachable because nothing indicated it scrolled.
      Wrapping shows every tab at once instead. */
@media (max-width:760px){
  .azm-tabs{flex-wrap:wrap;gap:2px 4px;overflow:visible;row-gap:0}
  .azm-tabs button{padding:9px 11px;font-size:.86rem}
}

/* 3. Bottom bar — INSIDE the account area only, never on the public site. */
.azm-bar{display:none}
@media (max-width:900px){
  .azm-bar{
    display:grid;grid-template-columns:repeat(4,1fr);
    position:fixed;left:0;right:0;bottom:0;z-index:900;
    background:var(--azc-deep,#0F2419);
    border-top:1px solid rgba(200,169,81,.35);
    padding-bottom:env(safe-area-inset-bottom,0px);
    box-shadow:0 -2px 14px rgba(15,36,25,.22)
  }
  .azm-bar a{
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    padding:9px 2px 8px;text-decoration:none;color:#F5F0E6;min-height:54px;
    font:600 10.5px/1.2 'DM Sans',system-ui,sans-serif;text-align:center
  }
  .azm-bar a[aria-current="page"]{color:var(--azc-goldl,#E8D48B)}
  .azm-bar a[aria-current="page"] svg{color:var(--azc-goldl,#E8D48B)}
  .azm-bar svg{width:21px;height:21px;color:var(--azc-gold,#C8A951)}
  .azm-bar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .azm-bar i{font-style:normal;opacity:.5;margin:0 3px}
  html body.azm-dash{padding-bottom:66px}
}
@media print{.azm-bar{display:none!important}}


/* ---- Profile screen ---------------------------------------------- */
.azm-photo-row{display:flex;gap:18px;align-items:flex-start;margin:4px 0 6px}
.azm-avatar{width:76px;height:76px;border-radius:50%;object-fit:cover;flex:none;
  border:2px solid var(--azc-gold,#C8A951);background:var(--azc-cream,#F5F0E6)}
.azm-avatar--empty{display:flex;align-items:center;justify-content:center;
  font-family:'Playfair Display',Georgia,serif;font-size:1.9rem;
  color:var(--azc-forest,#1A3C2A)}
.azm label.f .opt{font-weight:400;color:#8A8271;font-size:.78rem;margin-left:6px}

/* ---- Listing row actions ----------------------------------------- */
.azm-rowacts{text-align:right;flex:none;display:flex;flex-direction:column;
  align-items:flex-end;gap:8px}
.azm-rowbtns{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.azm-inline{display:inline}
@media (max-width:560px){
  .azm-item{flex-direction:column;align-items:stretch}
  .azm-rowacts{align-items:stretch;text-align:left}
  .azm-rowbtns{justify-content:flex-start}
  .azm-rowbtns .azm-btn{flex:1 1 0;min-width:0;justify-content:center}
}


/* ---- tighter action row: three buttons, one line ------------------ */
.azm-actions--tight{margin:0 0 14px;gap:8px;flex-wrap:nowrap}
.azm-actions--tight .azm-btn{flex:1 1 0;min-width:0;justify-content:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:9px 10px}
.azm .sub{margin-bottom:14px}
.azm-dash .pg-hero{padding-bottom:8px}

/* ---- filter bar ---------------------------------------------------- */
.azm-filterbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 10px}
.azm-filterbar input[type=search],.azm-filterbar select{
  flex:1 1 190px;min-width:0;padding:9px 12px;font-size:.92rem;
  border:1px solid var(--azc-line,#E2DCCE);border-radius:9px;background:#fff}
.azm-filterbar .lf_count{font-size:.84rem;color:#6B6353;white-space:nowrap}
.azm-filterbar .lf_count b{color:var(--azc-forest,#1A3C2A)}

/* ---- bulk toolbar --------------------------------------------------- */
.azm-bulk{display:flex;gap:8px;flex-wrap:wrap;align-items:center;
  background:var(--azc-cream,#F5F0E6);border:1px solid var(--azc-line,#E2DCCE);
  border-radius:10px;padding:9px 12px;margin:0 0 12px;font-size:.88rem}
.azm-bulk .lf_all{display:flex;align-items:center;gap:7px;font-weight:600;
  color:var(--azc-forest,#1A3C2A)}
.azm-bulk .lf_sel{color:#6B6353;margin-right:auto}
.azm-bulk input[type=checkbox]{width:auto;margin:0}
/* A checkbox beside its own label, in a form. Same shape as .azm-bulk above
   and here for the same reason: `.azm input{width:100%}` at the top of this
   file is element+class and outranks any bare class rule, so a checkbox
   inside .azm renders as a full-width bar — 264px at 390 and 1054px at 1180
   when this was measured. It has done this before. Anything that puts an
   input inside .azm and does not want it stretched needs a rule at this
   specificity, scoped under .azm, not a bare class. */
.azm-vrow{display:block;border-bottom:1px solid #e6dfca;padding:10px 0}
.azm-vrow:last-child{border-bottom:none}
.azm-check{display:flex;gap:9px;align-items:flex-start;font-size:14px;line-height:1.55;margin:10px 0 0}
.azm-check input[type=checkbox]{width:auto;flex:0 0 auto;margin:3px 0 0}
.azm-check small{color:var(--azc-ink,#26221b);opacity:.72}
.lf_pick{flex:none;display:flex;align-items:flex-start;padding-top:3px}
.lf_pick input{width:auto;margin:0}


/* ---- three-up field rows ------------------------------------------- */
/* Two-up rows wrap at 150px; three-up needs a smaller floor or the third
   field drops to its own line on any laptop narrower than about 1100px. */
.azm .row3>*{min-width:118px}
@media (max-width:620px){
  .azm .row3{display:grid;grid-template-columns:1fr 1fr}
  .azm .row3>*{min-width:0}
  .azm .row3>*:last-child:nth-child(odd){grid-column:1/-1}
}

/* ---- quick listing: text left, button right ------------------------ */
/* Stacked it was four rows tall with the button above a wide empty strip. */
.azm-quick{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.azm-quick h3{margin:0 0 6px}
.azm-quick-t{flex:1 1 320px;min-width:0}
.azm-quick-t .hint{margin:0}
.azm-quick-b{flex:0 0 auto;align-self:center}
/* On a phone the heading wrapped to two lines with the ⓘ stranded on the
   second, and the button — a flex item with no basis — sat off-centre
   against the card's left edge (26 Aug 2026). The heading is allowed to
   size down to fit one line, and the button takes the full row so it
   lines up with everything above it. */
@media(max-width:560px){
  .azm-quick{gap:12px}
  .azm-quick h3{font-size:1.02rem;line-height:1.35}
  .azm-quick-b{flex:1 1 100%;justify-content:center;text-align:center}
}
@media (max-width:620px){
  .azm-quick{gap:12px}
  .azm-quick-b{width:100%;justify-content:center}
}

/* ---- verification: three across ------------------------------------ */
.azm-verif{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.azm-verif-t{display:flex;flex-direction:column;gap:5px;padding:12px 14px;
  background:rgba(255,255,255,.55);border:1px solid var(--azc-line);border-radius:10px;min-width:0}
.azm-verif-t .k{font:600 .74rem/1.3 'DM Sans',system-ui,sans-serif;color:#6B6353;
  text-transform:uppercase;letter-spacing:.04em}
.azm-verif-t .v{font-size:.92rem;word-break:break-word}
.azm-verif-t .s{margin-top:2px}
@media (max-width:720px){.azm-verif{grid-template-columns:1fr}}

/* ---- profile photo column ------------------------------------------ */
.azm-photo-row{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.azm-photo-col{flex:0 0 auto;display:flex;flex-direction:column;gap:7px;
  align-items:center;max-width:170px}
.azm-photo-col input[type=file]{font-size:.78rem;max-width:170px}
.azm-photo-col .f{margin:0}
.azm-photo-fields{flex:1 1 320px;min-width:0}
@media (max-width:620px){
  .azm-photo-col{max-width:none;align-items:flex-start;flex-basis:100%}
}

/* ---- desktop account nav ------------------------------------------- */
/* The phone gets the fixed bottom bar; the desktop gets this. They are
   mutually exclusive at 900px so the two can never both appear. */
.azm-nav{display:none}
@media (min-width:901px){
  .azm-nav{
    display:block;position:sticky;top:var(--azm-navtop,64px);z-index:850;
    background:var(--azc-deep,#0F2419);
    border-bottom:1px solid rgba(200,169,81,.35);
    box-shadow:0 2px 10px rgba(15,36,25,.16)
  }
  .azm-nav-in{
    max-width:1200px;margin:0 auto;padding:0 20px;
    display:flex;gap:4px;align-items:center;flex-wrap:wrap
  }
  .azm-nav a{
    display:inline-block;padding:13px 14px;text-decoration:none;color:#F5F0E6;
    font:600 .87rem/1.2 'DM Sans',system-ui,sans-serif;
    border-bottom:2px solid transparent
  }
  .azm-nav a:hover{color:var(--azc-goldl,#E8D48B)}
  .azm-nav a[aria-current="page"]{
    color:var(--azc-goldl,#E8D48B);border-bottom-color:var(--azc-gold,#C8A951)
  }
  .azm-nav a.out{margin-left:auto;color:#E8B6A8}
  .azm-nav i{font-style:normal;opacity:.45;margin:0 5px}
}
@media print{.azm-nav{display:none!important}}


/* ---- jamabandi reader ---------------------------------------------- */
.azm-jb{display:block}
.azm-jb-t{flex:1 1 340px;min-width:0}
.azm-jb-t h3{margin-top:0}
/* the pick row: input shrinks, button sits right beside it */
.azm-jb-pick{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:2px 0 4px}
.azm-jb-pick input[type=file]{flex:1 1 220px;min-width:0;max-width:340px}
.azm-jb-pick .azm-btn{flex:0 0 auto;white-space:nowrap}
@media (max-width:520px){
  .azm-jb-pick input[type=file]{flex:1 1 100%;max-width:none}
  .azm-jb-pick .azm-btn{width:100%;justify-content:center}
}
/* three suggestions per row on a wide screen, two on a tablet, one on a
   phone — the six fillable fields land in two rows rather than three. */
.azm-jb-list{display:grid;gap:8px}
@media(min-width:640px){ .azm-jb-list{grid-template-columns:1fr 1fr} }
@media(min-width:980px){ .azm-jb-list{grid-template-columns:repeat(3,1fr)} }
.azm-jb-row .v{display:block}
/* the read-only notes carry long text, so they take the full width */
.azm-jb-info{grid-column:1/-1}
/* a filled row is marked, since there is no per-field button to grey out */
.azm-jb-used{background:rgba(200,169,81,.14);border-color:var(--azc-gold,#C8A951)}
.azm-jb-used .v::after{content:" ✓";color:#2F6B45;font-weight:700}
.azm-jb-row{display:flex;gap:12px;align-items:center;justify-content:space-between;
  padding:10px 12px;background:rgba(255,255,255,.6);border:1px solid var(--azc-line);
  border-radius:9px;flex-wrap:wrap}
.azm-jb-row .k{display:block;font:600 .74rem/1.3 'DM Sans',system-ui,sans-serif;
  color:#6B6353;text-transform:uppercase;letter-spacing:.04em}
.azm-jb-row .v{display:block;font-size:1rem;font-weight:600;word-break:break-word}
.azm-jb-row .v em{font-style:normal;font-weight:400;font-size:.85rem;color:#6B6353}
.azm-just-set{outline:2px solid var(--azc-gold,#C8A951);outline-offset:1px}
/* read-only rows: mortgage, mutations, copy date */
.azm-jb-info{background:rgba(198,84,63,.05);border-color:rgba(198,84,63,.28)}
.azm-jb-info .v{font-weight:500;font-size:.92rem;line-height:1.5}
@media (max-width:620px){.azm-jb-b{width:100%;justify-content:center}}



/* the role form was a 520px card on a 1180px page — one row instead */
.azm-roleform{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
/* Heading rides the same row as its fields. It sits on the baseline with
   the labels rather than the inputs, so `align-self` pins it low. */
.azm-roleform--inline .azm-roleform-h{flex:0 0 auto;margin:0;align-self:flex-end;
  padding-bottom:6px;white-space:nowrap}
.azm-roleform--inline .azi-p{flex:1 0 100%;order:99}

/* ---- admin ⓘ folds -------------------------------------------------
   Same control as the public listing page, restated here because
   az-market.css is the only sheet the admin screens load. */
.azm .azi-b{appearance:none;-webkit-appearance:none;border:1.5px solid rgba(154,123,46,.55);
  background:#FBF3DE;color:#6B4F3A;width:20px;height:20px;border-radius:50%;
  font:700 12px/1 'DM Sans',system-ui,sans-serif;cursor:pointer;padding:0;
  display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}
.azm .azi-b:hover{background:#F4E7C8;border-color:#6F5518}
.azm .azi-b[aria-expanded="true"]{background:#1A3C2A;border-color:#1A3C2A;color:#F5F0E6}
.azm .azi-b:focus-visible{outline:2px solid #1A3C2A;outline-offset:2px}
.azm .azi-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.azm .azi-p{background:#FBF7EC;border:1px solid rgba(154,123,46,.4);border-left:4px solid #6F5518;
  border-radius:10px;padding:10px 12px;margin:8px 0 0;font-size:.85rem;color:#4A4436}
.azm .azi-p p{margin:0}
.azm .azi-p[hidden]{display:none}
.azm-roleform>div:first-child{flex:1 1 280px;min-width:0}
.azm-roleform>div:nth-child(2){flex:0 0 170px}
.azm-roleform>div:last-child{flex:0 0 auto;padding-bottom:2px}
.azm-roleform .f{margin-top:0}

/* two person cards per row on a wide screen; padding tightened */
.azm-people-grid{display:grid;gap:12px;padding:14px}
@media(min-width:900px){ .azm-people-grid{grid-template-columns:1fr 1fr} }
/* An explicit grid, not flex wrapping. As flex, the actions block refused to
   wrap onto its own line at 390px and sat 254px outside the card — three
   attempts at coaxing it failed, and a two-cell grid simply cannot do that:
   avatar and identity on row 1, controls on row 2 spanning both columns. */
/* Row 1 is photo + name only. Everything after it starts at the left edge,
   under the photo, instead of being indented into a narrow column beside it —
   which is what made the contact line wrap three times on a phone. */
/* Name, contact line and buttons sit close together (Adheer's annotated
   pass, 25 Aug). The gap was not the row-gap: `align-items:center` centred
   the ~20px name inside a row the 44px avatar had made, adding ~12px of
   dead space above and below it before the gap and margin were even
   counted. Aligning to the start pins the name to the avatar's top edge,
   and 2px of row-gap does the rest — three lines that belong to one
   person now read as one block. */
.azm-people-grid .azm-item{display:grid;grid-template-columns:auto minmax(0,1fr);
  gap:2px 10px;align-items:start;border:1px solid var(--azc-line);border-radius:12px;
  padding:12px 14px;margin:0}
/* The avatar spans the name AND contact rows. Left on row 1 alone its 44px
   height set that row, so the ~20px name sat in a 44px box and the contact
   line was pushed 21px clear of it — the gap Adheer marked. Spanning lets
   row 1 be as tall as the name actually is. */
.azm-people-grid .azm-item>.azm-avatar{grid-column:1;grid-row:1 / span 2}
.azm-people-grid .azm-item .body{grid-column:2;grid-row:1;min-width:0;
  display:contents}
.azm-people-grid .azm-item .body>.ttl{grid-column:2;grid-row:1;margin:0}
/* Everything the body carries — contact line, tags, suspension note —
   belongs to the NAME, so it lines up under the name in column 2 rather
   than running back to the card edge under the avatar (Adheer's annotated
   pass, 25 Aug: the email/phone/KYC line read as a separate row about
   nothing). The action buttons keep the full width and still start below
   the photo — they act on the person, not on the name. */
.azm-people-grid .azm-item .body>*:not(.ttl){grid-column:2;margin:0}
.azm-people-grid .azm-item>.azm-person-acts{grid-column:1/-1}
.azm-people-grid .azm-item .body>p{margin:0}
.azm-people-grid .azm-item .azm-badges{margin:3px 0 0}
/* The buttons act on the person rather than describing them, so they get
   the one visible break in the card — small, but the only one. */
.azm-people-grid .azm-item>.azm-person-acts{margin-top:8px}
/* The person's name is the link to their profile ("Full profile →" was
   removed 25 Aug). Same treatment as the listing row title: inherits the
   heading colour, dotted underline so it does not read as dead text. */
.azm-people-grid .azm-item .ttl a{color:inherit;text-decoration:none;
  border-bottom:1px dotted rgba(26,60,42,.45)}
.azm-people-grid .azm-item .ttl a:hover,
.azm-people-grid .azm-item .ttl a:focus-visible{text-decoration:underline;
  border-bottom-color:transparent}
.azm-people-grid .azm-item .ttl a:focus-visible{outline:2px solid #1A3C2A;outline-offset:2px}
.azm-avatar.sm{width:44px;height:44px;flex:0 0 44px;font-size:1.05rem;margin-right:10px}

/* ---- People rows: identity left, actions right ---------------------
   The row is a flex line. Splitting the old single .body into three
   children collapsed it to its minimum width and set the name breaking
   one letter per line, so the identity column is told explicitly to take
   the space and the edit panel is given its own full-width line. */
.azm-item.azm-person-row{flex-wrap:wrap;align-items:flex-start}
.azm-item.azm-person-row>.body{flex:1 1 320px;min-width:0}
/* Every control for one person in a single right-hand column — Edit or
   suspend used to drop onto its own full-width line below, which is where
   the empty band in the card came from. The column is wide enough that the
   edit form is usable stacked inside it. */
/* Controls for one person. Written mobile-first: on a phone the card is a
   plain stack and every control is full width, because at 390px a row of
   three nowrap buttons was 233px wider than the card it sat in. Side-by-side
   only once there is room for it. */
.azm-person-acts{display:flex;flex-flow:row wrap;gap:8px;align-items:stretch;
  min-width:0;width:100%;margin-top:6px}
.azm-person-acts>*{flex:1 1 0;min-width:0}
/* Both controls share one line even on a 390px phone: the labels are short
   enough at this size, so they shrink rather than stack. */
@media (max-width:520px){
  .azm-person-acts .azm-btn,.azm-person-acts .azm-person>summary{
    font-size:.8rem;padding-left:8px;padding-right:8px}
}
.azm-person-acts>*{min-width:0;max-width:100%}
.azm-person-acts form{margin:0;width:100%}
.azm-person-acts .azm-btn{width:100%;justify-content:center;text-align:center;
  white-space:nowrap;box-sizing:border-box;max-width:100%;padding-left:10px;padding-right:10px}
.azm-person-acts .azm-person{margin:0;min-width:0}
.azm-person-acts .azm-person[open]{flex:1 1 100%}
.azm-person-acts .azm-person>summary{border:1px solid var(--azc-line);border-radius:10px;
  padding:8px 10px;background:#fff;text-align:center;white-space:normal;list-style:none;
  box-sizing:border-box;max-width:100%}
.azm-person-acts .azm-person>summary::-webkit-details-marker{display:none}
.azm-person-acts .azm-person[open]>summary{margin-bottom:8px}
.azm-person-acts .azm-person-f{width:100%;min-width:0}
.azm-person-acts .azm-person-f .row{display:block}
.azm-person-acts .azm-person-f .row>div{width:100%;max-width:100%;box-sizing:border-box;
  flex:none;min-width:0}

/* ---- People cards: everything under the name, not under the avatar ---
   The card is a two-column grid — avatar, then identity. Only .ttl was
   placed in column 2; the contact line, the tags and every control spanned
   1/-1, so they began under the avatar while the name began 68px to the
   right. That misalignment is what read as wasted space, and the controls
   stretching edge to edge added a band of air under every person.

   Measured before changing anything: name at x=126, contact line and
   buttons both at x=58, card 150px tall.

   Below 640px the controls go back to full width and stacked. Three nowrap
   buttons at their natural size are wider than a 390px card, which is the
   reason the stretched version existed in the first place. */
.azm-people-grid .azm-item{gap:2px 10px;padding:10px 12px}
/* The whole alignment change is desktop-only. Moving the controls into
   column 2 at 390px left them 68px narrower than the card and the three
   of them overlapped, with "Edit or suspend" breaking one word per line.
   Below 640 the card stays a full-width stack, which is what it was
   built as and what a phone needs. */
@media (min-width:640px){
  .azm-people-grid .azm-item .body>*:not(.ttl){grid-column:2;margin:0 0 2px}
  /* Buttons start below the photo (Adheer's annotated pass, 25 Aug) — they
     act on the person, so they take the card's full width rather than
     indenting to the name column. */
  .azm-people-grid .azm-item>.azm-person-acts{grid-column:1/-1;margin-top:6px;
    justify-content:flex-start}
  .azm-people-grid .azm-item>.azm-person-acts>*{flex:0 1 auto}
  .azm-people-grid .azm-item>.azm-person-acts form{width:auto}
  .azm-people-grid .azm-item>.azm-person-acts .azm-btn{width:auto}
}

/* ---- Admin listing rows: four controls on one line, less air ---------
   Picture was the fourth button and dropped onto a line of its own, which
   pushed the row taller and left a gap beside the other three. The action
   column is a flex line now rather than inline-blocks separated by <br>,
   so the badges take one line and the four buttons share the next however
   many there are. Row padding 15px -> 10px. */
.azm-item.al_row{padding:10px 0}
.azm-item.al_row>.al_acts{display:flex;flex-flow:row wrap;justify-content:flex-end;
  align-items:center;gap:6px}
.azm-item.al_row>.al_acts br{display:none}
/* Natural width, not stretched. flex:1 1 100% forced a line of its own,
   which is right, but it also grew the badge into a 392px pill. Let it
   size to its text and wrap on its own when the four buttons will not fit
   beside it — which at every width they do not. */
.azm-item.al_row>.al_acts>.azm-badge,
.azm-item.al_row>.al_acts>.lead-own{flex:0 1 auto;margin:0}
.azm-item.al_row>.al_acts .azm-btn{margin:0}
.azm-item.al_row>.al_acts .azm-btn.sm{padding:6px 10px}
/* the edit form sits inside a flex track now, so its inputs must be told
   to respect the box rather than their intrinsic width */
.azm-person-acts .azm-person-f input,
.azm-person-acts .azm-person-f textarea{width:100%;box-sizing:border-box;min-width:0}
.azm-person-acts .azm-person-f .row>div+div{margin-top:8px}
@media (min-width:560px){
  .azm-person-acts{flex-flow:row wrap;justify-content:flex-end;align-items:flex-start}
  .azm-person-acts>*{flex:0 0 auto}
  .azm-person-acts form,.azm-person-acts .azm-person{width:auto}
  .azm-person-acts .azm-btn{width:auto;white-space:nowrap}
  .azm-person-acts .azm-person[open]{flex:1 1 100%;text-align:left}
  .azm-person-acts .azm-person[open]>summary{display:inline-block}
  .azm-person-acts .azm-person-f .row{display:flex;gap:12px;flex-wrap:wrap}
  .azm-person-acts .azm-person-f .row>div{flex:1 1 200px;min-width:0}
}

/* ---- seller price box ---------------------------------------------- */
.azm-pricebox>summary{list-style:none;cursor:pointer}
.azm-pricebox>summary::-webkit-details-marker{display:none}
.azm-pricebox[open]{display:block;width:100%;margin-top:8px;padding:12px 14px;
  border:1px solid var(--azc-line);border-radius:10px;background:#FBF7EC}
.azm-pricebox[open]>summary{margin-bottom:10px;display:inline-block}
.azm-pricebox input[type=number]{max-width:220px}

/* The review screen is ONE column.
   Two columns were tried three ways — fixed split, CSS columns, spanning the
   tall card — and every one left dead space, because the cards have wildly
   different heights and none of them may be split. A single column has no
   gap at any width by construction, and a review screen is a working
   document that is read top to bottom anyway. */
.azm-grid.azm-rev{display:block;max-width:none}
/* Two toggle rows per line. The card itself becomes the grid so the heading
   and the hint can span it; only the rows pair up. */
/* Written at the same specificity as .azm-rev>.azm-card, which sets
   display:block — at one class it lost, so the grid never applied and the
   rows stayed stacked. */
.azm-rev>.azm-card.azm-2col,.azm-2col{display:grid;grid-template-columns:1fr;
  gap:0 22px;align-content:start}
@media(min-width:720px){
  .azm-rev>.azm-card.azm-2col,.azm-2col{grid-template-columns:1fr 1fr}
}
.azm-2col>h3,.azm-2col>p,.azm-2col>.azm-span,.azm-2col>label,
.azm-2col>input,.azm-2col>.row,.azm-2col>.azm-actions{grid-column:1/-1}
/* 26 Aug pass, part 2 — the layout the pass referenced but did not ship.
   Three columns only where three fit; the same content one-per-row on a
   phone, so nothing is ever squeezed. */
.azm-3col{display:grid;grid-template-columns:1fr;gap:0 18px;align-content:start}
@media(min-width:700px){.azm-3col{grid-template-columns:1fr 1fr}}
@media(min-width:1020px){.azm-3col{grid-template-columns:1fr 1fr 1fr}}
/* The back link rides the tab row: pushed to the right end of the strip,
   ordinary inline-flex when the strip wraps on a phone. */
.azm-tabs .azm-backtop{margin-left:auto;align-self:center;white-space:nowrap}
@media(max-width:560px){.azm-tabs .azm-backtop{margin-left:0;order:99}}
/* Choose-a-listing controls share rows instead of stacking four deep. */
.azm-jb-pick{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.azm-jb-pick select{flex:1 1 240px;width:auto;min-width:0}
.azm-jb-pick input{flex:1 1 180px;width:auto;min-width:0}
.azm-jb-pick button{flex:0 0 auto}
/* A hint and its controls sharing one row — the 2col grid could not do
   this, because its span rules deliberately stretch bare <p> and
   .azm-actions across both columns for the in-card field grids. */
/* Cards used AS the two columns: the card's own bottom margin sits
   outside height:100%, pushing past the grid row onto whatever follows —
   so inside the wrapper the margin comes off and the wrapper carries it. */
.azm-2col:not(.azm-card){margin-bottom:18px}
.azm-2col>.azm-card{margin:0;box-sizing:border-box}
/* Crop the plot map before it is read (26 Aug 2026). The canvas is the
   picture at device width; the box is an overlay, so dragging never
   touches the pixels — only the region posted. */
.azm-nkc{margin:12px 0 0}
.azm-nkc-stage{position:relative;display:inline-block;max-width:100%;
  border:1px solid var(--azc-line);border-radius:10px;overflow:hidden;
  background:#faf8f3;touch-action:none;cursor:crosshair}
.azm-nkc-stage canvas{display:block;max-width:100%;height:auto}
.azm-nkc-box{position:absolute;border:2px solid var(--azc-gold);
  background:rgba(200,169,81,.18);pointer-events:none}
.azm-nkc-box[hidden]{display:none}
/* The password rule sits beside the reveal, not under it. */
.azm-pwrow{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:6px 0 2px}
/* On a phone the two wrap, and the rule must not read as a caption on the
   checkbox — it keeps its own line and its own left edge. */
@media(max-width:560px){.azm-pwrow{gap:4px}.azm-pwrow>*{flex:1 1 100%}}
.azm-hintrow{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.azm-hintrow>.hint{flex:1 1 240px;min-width:0}
.azm-hintrow>.azm-actions{flex:0 1 auto;min-width:0;margin:0}
.azm-2col>.azm-tog{grid-column:auto}

/* Six decision buttons on one line, wrapping only when they must. */
.azm-rev .azm-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}

/* Field pairs stay side by side, so a full-width card is not a full-width
   input — the row splits it. */
.azm-rev .azm-card .row{display:flex;gap:14px;flex-wrap:wrap}
.azm-rev .azm-card .row>div{flex:1 1 260px;min-width:0}
.azm-rev>.azm-card,.azm-rev>details{margin:0 0 16px;max-width:none;display:block}


/* ---- per-person admin controls -------------------------------------- */
.azm-person{margin-top:9px}
.azm-person>summary{cursor:pointer;font:600 .82rem/1.4 'DM Sans',system-ui,sans-serif;
  color:var(--azc-goldd,#8A6D1F);padding:4px 0}
.azm-person-f{margin-top:10px;padding-top:10px;border-top:1px solid var(--azc-line)}
.azm-person-f .hint{margin:4px 0 0}


/* ---- review screen: photo grid ------------------------------------- */
.azm-revpix{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px;margin:8px 0}
.azm-revpix figure{margin:0;border:1px solid var(--azc-line);border-radius:9px;overflow:hidden;
  background:#FBF7EC}
.azm-revpix img{display:block;width:100%;height:104px;object-fit:cover}
.azm-revpix figcaption{display:flex;flex-direction:column;gap:3px;padding:7px 8px;
  font-size:.76rem;line-height:1.35}
.azm-revpix figcaption label{display:flex;gap:5px;align-items:center;cursor:pointer}

/* ---- staff tags ----------------------------------------------------- */
.azm-tag{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.02em;
  color:var(--azc-forest,#1A3C2A);background:rgba(26,60,42,.06);
  border:1px solid rgba(26,60,42,.25);border-radius:100px;padding:2px 9px;margin:0 5px 4px 0}
.azm-filterbar .azm-btn{flex:0 0 auto}

/* ---- print sheet ---------------------------------------------------- */
.azm-sheet{font-family:'DM Sans','Noto Sans Devanagari',system-ui,sans-serif;
  color:#26221B;background:#EFEDE6;margin:0;padding:18px}
.sheet-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;
  max-width:820px;margin:0 auto 16px}
.sheet-bar .hint{font-size:.8rem;color:#6B6353;flex:1 1 240px}
.sheet{background:#fff;max-width:820px;margin:0 auto 18px;padding:30px 34px;
  border-radius:10px;box-shadow:0 1px 3px rgba(15,36,25,.12)}
.sheet-h{display:flex;justify-content:space-between;align-items:flex-start;
  border-bottom:2px solid var(--azc-gold,#C8A951);padding-bottom:10px;margin-bottom:18px}
.sheet-h b{font-family:'Playfair Display',Georgia,serif;font-size:1.2rem;
  color:var(--azc-forest,#1A3C2A);display:block}
.sheet-h span{font-size:.74rem;color:var(--azc-gold,#C8A951)}
.sheet-ref{font-family:ui-monospace,monospace;font-size:.82rem;color:#6B6353}
.sheet h1{font-family:'Playfair Display',Georgia,serif;font-size:1.5rem;
  color:var(--azc-forest,#1A3C2A);margin:0 0 16px}
.sheet table{width:100%;border-collapse:collapse;font-size:.92rem}
.sheet th{text-align:left;width:38%;padding:9px 10px;background:var(--azc-cream,#F5F0E6);
  border:1px solid var(--azc-line,#E2DCCE);font-weight:600;color:var(--azc-forest,#1A3C2A)}
.sheet td{padding:9px 10px;border:1px solid var(--azc-line,#E2DCCE)}
.sheet-note{font-size:.78rem;line-height:1.6;color:#6B6353;margin:16px 0 0;
  border-left:3px solid var(--azc-gold,#C8A951);padding-left:12px}
.sheet-foot{font-size:.72rem;color:#8A8271;margin:14px 0 0;
  border-top:1px dashed var(--azc-line,#E2DCCE);padding-top:10px}
@media print{
  .azm-noprint{display:none!important}
  .azm-sheet{background:#fff;padding:0}
  .sheet{box-shadow:none;margin:0;padding:0 0 20px;page-break-after:always;max-width:none}
  .sheet:last-child{page-break-after:auto}
}


/* ---- tighter vertical rhythm on the dashboards -------------------- */
.azm-dash .pg-hero{padding-top:14px;padding-bottom:2px}
.azm-dash .pg-hero-in h1{margin:0 0 4px}
.azm-dash .pg-hero-in p{margin:0}
.azm-dash .azm{padding-top:14px}
.azm-dash .azm .sub{margin:0 0 12px}
/* The band above the compliance strip (Adheer marked it "reduce padding"
   on three admin screens, 25 Aug): main's own 14px bottom padding, the
   last card's 14px bottom margin and the strip's 18px top margin stacked
   into ~46px of nothing. The strip still needs air to read as separate
   from the work above it — 10px does that; 46px read as the page having
   ended. The last card's own margin is zeroed so it cannot re-add. */
.azm-dash .azm-compliance{margin-top:10px;padding-top:12px}
.azm-dash main.azm{padding-bottom:0}
.azm-dash main.azm>.azm-card:last-child,
.azm-dash main.azm>form:last-child>.azm-card:last-child{margin-bottom:0}
.azm-dash .azm-note:last-of-type{margin-bottom:0}
.azm-card{margin:0 0 14px}
.azm-card h3{margin:0 0 8px}

/* ---- header account menu ------------------------------------------ */
.azm-acct{position:fixed;top:64px;right:12px;z-index:1200;min-width:224px;
  background:#fff;border:1px solid var(--azc-line,#E2DCCE);border-radius:12px;
  box-shadow:0 10px 30px rgba(15,36,25,.18);padding:8px;display:none}
.azm-acct.on{display:block}
.azm-acct-who{margin:4px 10px 8px;font-size:.78rem;color:#6B6353;
  border-bottom:1px dashed var(--azc-line,#E2DCCE);padding-bottom:8px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.azm-acct a{display:block;padding:10px 12px;border-radius:8px;text-decoration:none;
  color:var(--azc-forest,#1A3C2A);font-size:.92rem;font-weight:600}
.azm-acct a:hover,.azm-acct a:focus{background:var(--azc-cream,#F5F0E6)}
.azm-acct a i{font-style:normal;opacity:.45;margin:0 6px;font-weight:400}
.azm-acct a.out{color:#8C2F1E;margin-top:4px;
  border-top:1px dashed var(--azc-line,#E2DCCE);border-radius:0 0 8px 8px}

/* ---- floating WhatsApp -------------------------------------------- */
.azm-wa{position:fixed;right:16px;bottom:82px;z-index:880;width:52px;height:52px;
  border-radius:50%;background:#25D366;color:#fff;display:flex;align-items:center;
  justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.24);text-decoration:none}
.azm-wa:active{filter:brightness(.92)}
@media (min-width:901px){ .azm-wa{bottom:24px} }
@media print{.azm-wa,.azm-acct{display:none!important}}


/* ---- scroll-to-top must clear the account bar and the WhatsApp button --- */
body.azm-dash .azs-top{bottom:150px!important;z-index:870!important}
@media (min-width:901px){ body.azm-dash .azs-top{bottom:88px!important} }

/* ---- print sheet branding --------------------------------------------- */
.sheet-brand{display:flex;gap:10px;align-items:center}
.sheet-logo{width:30px;height:35px;flex:none}
.sheet-h .sheet-ref{text-align:right;line-height:1.4}
.sheet-h .sheet-ref span{font-family:'DM Sans',system-ui,sans-serif;color:#8A8271;font-size:.72rem}
.sheet-cta{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:16px 0 0;
  padding:12px 14px;background:var(--azc-cream,#F5F0E6);border-radius:9px}
.sheet-wa{display:inline-flex;align-items:center;gap:7px;text-decoration:none;
  background:#25D366;color:#fff;font-weight:600;font-size:.88rem;
  padding:9px 14px;border-radius:100px}
.sheet-site{font-size:.84rem;color:var(--azc-forest,#1A3C2A);font-weight:600}
@media print{
  .sheet-cta{background:#fff;border:1px solid var(--azc-line,#E2DCCE)}
  .sheet-wa{background:#fff;color:#1A3C2A;border:1.5px solid #25D366}
}

/* ---- destructive action, folded away so it is never a mis-tap -------- */
.azm-danger{border-left:4px solid #A6402E}
.azm-danger summary{cursor:pointer;font-family:'Playfair Display',Georgia,serif;
  font-size:1.15rem;color:#8C2F1E;list-style:none;padding:2px 0}
.azm-danger summary::-webkit-details-marker{display:none}
.azm-danger summary:before{content:"\25B8";display:inline-block;margin-right:8px;
  transition:transform .15s;color:#A6402E}
.azm-danger[open] summary:before{transform:rotate(90deg)}


/* ---- listing row on a phone --------------------------------------- */
/* .azm-item stacks below 560px, which gave the bulk-select checkbox a
   full-width row of its own: a 13px control with a quarter of the screen of
   empty space beside it, above every single listing. It now shares a line
   with the status badge, which is where a reviewer's eye already is. */
@media (max-width:560px){
  .azm-item.al_row{flex-flow:row wrap;align-items:flex-start;gap:0 10px}
  .azm-item.al_row>.body{flex:1 1 100%;order:1;margin-bottom:8px}
  .azm-item.al_row>.lf_pick{order:2;flex:none;padding-top:3px;align-items:flex-start}
  .azm-item.al_row>.al_acts{order:3;flex:1 1 0;min-width:0}
}
/* PRE-EXISTING OVERFLOW on /admin/ listings — see the ≤560px block further
   down (search "al_row is a ROW"), where the actual fix lives. Not caused
   by the title-link change: reproduced on the unmodified markup first. */
.azm-item.al_row>.body .meta{overflow-wrap:anywhere}

/* ---- public seller page (/s/<token>) -------------------------------
   Green heading band carrying the seller name, then a card grid that
   reuses the listings-page card language. Scoped under .azm-sp so the
   .lst-* rules cannot reach listings.php, which ships its own copy. */
.azm-sp-hero{background:var(--azc-forest,#1A3C2A);padding:26px 24px 22px!important}
.azm-sp-hero .pg-hero-in{max-width:1100px;margin:0 auto}
.azm-sp-hero .pg-eyebrow{color:var(--azc-goldl,#E8D48B)!important;margin:0 0 2px;
  font-size:.76rem;letter-spacing:.08em;text-transform:uppercase}
.azm-sp-hero h1{color:#FEFDFB!important;margin:0 0 3px;line-height:1.15;
  font-family:'Playfair Display',Georgia,serif;font-size:1.9rem}
.azm-sp-belt{color:#D8D2C2!important;margin:0 0 8px!important;font-size:.9rem}
.azm-sp-id{display:flex;gap:14px;align-items:flex-start}
.azm-sp-ini{flex:none;width:56px;height:56px;border-radius:50%;
  background:rgba(200,169,81,.18);border:1px solid rgba(200,169,81,.5);
  color:var(--azc-goldl,#E8D48B);display:flex;align-items:center;justify-content:center;
  font:700 20px/1 'DM Sans',system-ui,sans-serif;letter-spacing:.5px}
.azm-sp-who{min-width:0;flex:1}
.azm-sp-chips{margin:0;display:flex;gap:6px;flex-wrap:wrap}
.azm-sp-chip{font-size:11px;font-weight:700;color:var(--azc-goldl,#E8D48B);
  border:1px solid rgba(200,169,81,.45);border-radius:100px;padding:3px 10px;white-space:nowrap}
.azm-sp-chip.ok{background:rgba(200,169,81,.16)}

.azm-sp{padding-top:14px}
.azm-sp-acts{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.azm-sp-how{margin:0 0 16px;font-size:.85rem;line-height:1.6;color:#6B6353}
.azm-sp-how span{display:block;margin-top:2px}
.azm-sp-h2{font-family:'Playfair Display',Georgia,serif;font-size:1.15rem;
  color:var(--azc-forest,#1A3C2A);margin:0 0 10px}
.azm-sp-fine{font-size:.78rem;color:#6B6353;margin:14px 0 0;line-height:1.6}
.azm-sp-fine span{display:block;margin-top:2px}
.azm-sp-off{text-align:center;padding:26px 18px}
.azm-sp-off p{margin:0 0 12px}
/* #1F8A4C gives white text only 4.38:1. #15803D clears AA at 5.02:1 and
   still reads as WhatsApp green. */
.azm-btn.wa{background:#15803D;border-color:#15803D;color:#fff}
.azm-btn.wa:hover{background:#116830;border-color:#116830}

.azm-sp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(272px,100%),1fr));gap:14px}
.azm-sp .lst-card{background:var(--azc-cream,#F5F0E6);border:1px solid rgba(200,169,81,.4);
  border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.azm-sp .lst-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.azm-sp .lst-id{font-family:'Space Mono',ui-monospace,monospace;font-size:11.5px;
  font-weight:700;color:#6F5518;letter-spacing:.4px}
.azm-sp .lst-ver,.azm-sp .lst-pend{font-size:10px;font-weight:800;padding:3px 9px;
  border-radius:100px;white-space:nowrap}
.azm-sp .lst-ver{background:var(--azc-deep,#0F2419);color:var(--azc-goldl,#E8D48B)}
.azm-sp .lst-pend{background:#F1EADB;color:#6F5518}
.azm-sp .lst-card h3{font-family:'Playfair Display',Georgia,serif;font-size:16px;
  line-height:1.3;color:var(--azc-deep,#0F2419);margin:0}
.azm-sp .lst-meta{display:flex;flex-direction:column;gap:2px;font-size:12.5px;color:#6B4F3A}
.azm-sp .lst-area{background:var(--azc-gold,#C8A951);color:var(--azc-deep,#0F2419);
  font-weight:800;font-size:12.5px;text-align:center;padding:7px 8px;border-radius:9px}
.azm-sp .lst-docs{display:flex;flex-wrap:wrap;gap:6px}
.azm-sp .lst-docs span{font-size:10.5px;font-weight:700;color:var(--azc-forest,#1A3C2A);
  border:1.5px solid var(--azc-forest,#1A3C2A);border-radius:100px;padding:2px 9px}
.azm-sp .lst-cta{margin-top:auto;display:flex;justify-content:space-between;
  align-items:center;gap:8px;padding-top:2px}
.azm-sp .lst-wa{font-size:12px;font-weight:800;background:var(--azc-forest,#1A3C2A);
  color:#fff;padding:7px 12px;border-radius:100px;text-decoration:none;white-space:nowrap}

@media (max-width:560px){
  .azm-sp-hero{padding:18px 16px 16px!important}
  .azm-sp-hero h1{font-size:1.45rem}
  .azm-sp-id{gap:11px}
  .azm-sp-ini{width:46px;height:46px;font-size:17px}
  .azm-sp{padding-top:12px}
  .azm-sp-acts .azm-btn{flex:1 1 100%;justify-content:center}
  .azm-sp-grid{gap:11px}
}

/* share-link cards on the seller profile and the team person screen */
.azm-shr-live{margin:0 0 4px;font-weight:700;color:var(--azc-forest,#1A3C2A)}
.azm-shr-link{margin:0 0 10px;word-break:break-all}
.azm-shr-acts{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.azm-shr-off{margin:0 0 8px}
.azm-shr-fine{font-size:.83rem;color:#6B6353;line-height:1.6;margin:0 0 10px}
.azm-shr-state{font-size:.88rem;color:#6B6353;margin:0 0 10px}
.azm-sp-h3{font-size:.95rem;color:var(--azc-forest,#1A3C2A);margin:14px 0 8px;font-weight:700}


/* ---- listing media: photographs, video, location ------------------- */
.azm-media h3{margin:0 0 10px;font-size:1.02rem}
.azm-media-n{font:700 11px/1 'DM Sans',system-ui,sans-serif;color:#6F5518;
  background:rgba(200,169,81,.2);border-radius:100px;padding:3px 8px;margin-left:6px;
  vertical-align:middle}
.azm-lead{margin:0;border-radius:12px;overflow:hidden;background:#EDE8DA}
.azm-lead img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.azm-lead figcaption{font-size:.82rem;color:#6B6353;padding:7px 2px 0}
.azm-thumbs{list-style:none;display:flex;gap:7px;margin:8px 0 0;padding:0;
  overflow-x:auto;-webkit-overflow-scrolling:touch}
.azm-thumbs li{flex:none}
.azm-thumb{padding:0;border:2px solid transparent;border-radius:8px;background:none;
  cursor:pointer;line-height:0;overflow:hidden}
.azm-thumb img{width:70px;height:52px;object-fit:cover;display:block}
.azm-thumb.is-on{border-color:var(--azc-gold,#C8A951)}
.azm-thumb:focus-visible{outline:2px solid var(--azc-forest,#1A3C2A);outline-offset:2px}

.azm-video{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;
  background:#0F2419}
.azm-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

.azm-geo{margin:0 0 8px}
.azm-media .azm-actions{margin:0 0 8px}

.azm-lb{position:fixed;inset:0;z-index:3200;background:rgba(15,36,25,.92);
  display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px}
.azm-lb[hidden]{display:none}
.azm-lb img{max-width:96vw;max-height:82vh;border-radius:10px}
.azm-lb-cap{color:#F5F0E6;font-size:.86rem;margin:10px 0 0;text-align:center;max-width:70ch}
.azm-lb-x{position:absolute;top:14px;right:16px;width:40px;height:40px;border-radius:50%;
  background:rgba(245,240,230,.14);border:1px solid rgba(232,212,139,.5);
  color:#E8D48B;font-size:26px;line-height:1;cursor:pointer}
.azm-lb-x:focus-visible{outline:2px solid #E8D48B;outline-offset:2px}

@media (max-width:560px){
  .azm-media h3{font-size:.96rem}
  .azm-thumb img{width:58px;height:44px}
}
.azm-media-h{font-family:'Playfair Display',Georgia,serif;font-size:1.02rem;
  color:var(--azc-forest,#1A3C2A);margin:0 0 10px}

/* ---- buyer panel --------------------------------------------------- */
.azm-intent{border:1px solid var(--azc-line,#E2DCCE);border-radius:12px;padding:12px;margin:0 0 14px}
.azm-intent legend{padding:0 6px}
.azm-intent-o{display:flex;gap:10px;align-items:flex-start;padding:8px 4px;cursor:pointer}
.azm-intent-o+.azm-intent-o{border-top:1px solid var(--azc-line,#E2DCCE)}
/* `.azm input{width:100%}` (element+class) outranks a bare `.azm-intent-o
   input`, so each radio was stretching to the full row and squeezing its
   label into a one-word-wide column — the text read vertically. Scoped
   under .azm to win, exactly as `.azm .chk input` already does for the
   consent checkbox. The label takes the remaining row; min-width:0 lets
   it actually wrap instead of overflowing. */
.azm .azm-intent-o input{width:auto;flex:none;margin-top:3px}
.azm-intent-o>span{flex:1 1 auto;min-width:0}
.azm-intent-o b{display:block;font-size:.94rem;color:var(--azc-forest,#1A3C2A)}
.azm-intent-o em{display:block;font-style:normal;font-size:.82rem;color:#6B6353;margin-top:2px}
.azm-buy-h2{font-family:'Playfair Display',Georgia,serif;font-size:1.15rem;
  color:var(--azc-forest,#1A3C2A);margin:18px 0 10px}
.azm-buy-n{font:700 11px/1 'DM Sans',system-ui,sans-serif;color:#6F5518;
  background:rgba(200,169,81,.2);border-radius:100px;padding:3px 8px;margin-left:6px;vertical-align:middle}
.azm-buy-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px}
.azm-buy-filters input[type=search]{flex:2 1 220px;min-width:0}
.azm-buy-filters select{flex:1 1 150px;min-width:0}
.azm-buy-count{font-size:.82rem;color:#6B6353;white-space:nowrap}
.azm-buy-empty{text-align:center;padding:24px 18px}
.azm-buy-empty p{margin:0 0 12px}

/* ---- My requests (/account/?p=requests) --------------------------- */
/* The person's own words, echoed back so a row is recognisable weeks
   later. Clamped to three lines: PHP already cuts the string at 320
   characters, and this stops the remaining three lines of a long one
   pushing the status badge a screen away from the request it belongs to.
   -webkit-line-clamp is the only clamp Safari on an iPad honours; where
   it is not supported the max-height still holds the row down. */
.azm-req-msg{margin:6px 0 0;white-space:pre-line;overflow:hidden;
  max-height:4.2em;display:-webkit-box;-webkit-line-clamp:3;
  -webkit-box-orient:vertical}
/* The status badge and the Open button share azm-rowbtns, which wraps.
   On a phone the badge is the longer of the two and must not be squeezed
   onto two lines by a button beside it. */
@media (max-width:560px){
  .azm-item .azm-rowacts{align-items:flex-start}
  .azm-item .azm-rowbtns{justify-content:flex-start}
}
.azm-buy-gone{font-size:.85rem;color:#6B6353;margin:0}
.azm-gone{color:#5A6B60}
.azm-heart{background:none;border:0;font-size:19px;line-height:1;cursor:pointer;
  color:#C6543F;padding:2px 4px}
.azm-heart[aria-pressed="false"]{color:#B9B2A2}
.azm-heart:focus-visible{outline:2px solid var(--azc-forest,#1A3C2A);outline-offset:2px}
@media (max-width:560px){
  .azm-buy-filters input[type=search],.azm-buy-filters select{flex:1 1 100%}
}
.azm-tagin{width:100%;font-size:.84rem;padding:7px 9px;border:1px solid var(--azc-line,#E2DCCE);
  border-radius:9px;margin-top:8px;background:#fff}
.azm-tagin.is-saved{border-color:#15803D}
.azm-tagin:focus-visible{outline:2px solid var(--azc-forest,#1A3C2A);outline-offset:1px}

/* ---- seller dashboard row: stop the price form crushing the title ----
   The price <details> has no width constraint, so its intrinsic width
   (measured at 1362px inside a 1078px row) won the flex negotiation and
   squeezed .body to zero — the listing title then wrapped one character
   per line down the left edge. */
body.azm-dash .azm-item{align-items:flex-start}
body.azm-dash .azm-item>.body{flex:1 1 0;min-width:0}
body.azm-dash .azm-item>.body .ttl,
body.azm-dash .azm-item>.body .meta{overflow-wrap:anywhere}
/* .azm-rowacts is flex:0 0 auto, so it claims its intrinsic width first and
   .body gets whatever is left -- nothing. Let it shrink instead, and cap it
   so the title always keeps a readable column. */
body.azm-dash .azm-item>*:not(.body){min-width:0;max-width:100%}
/* Order matters: the cap has to come AFTER the 100% rule above, or that one
   wins and the actions column keeps its full intrinsic width. And .body needs
   a real basis -- with flex-basis 0 it never claimed any space at all. */
/* Only where the row runs horizontally. Below 560px .azm-item is a COLUMN,
   so flex-basis governs HEIGHT -- the 240px basis stretched .body into a tall
   empty band between the title and the status badge on a phone. */
@media (min-width:561px){
  body.azm-dash .azm-item>.body{flex:1 1 240px;min-width:190px}
  body.azm-dash .azm-item>.azm-rowacts{flex:0 1 auto;min-width:0;max-width:62%}
}
@media (max-width:560px){
  /* ...but al_row is a ROW, not a column. It sets flex-flow:row wrap of its
     own further up, so for that one row type flex:0 0 auto means "never
     shrink horizontally" — the meta line (ref · area · price · seller ·
     phone · KYC) sized .body to ~716px inside a 390px viewport and /admin/
     scrolled sideways with the action buttons off-screen. Pre-existing;
     found 25 Aug while proving the title-link change and reproduced on
     unmodified markup first. The :not() keeps the column-row fix intact
     for every other row type. */
  body.azm-dash .azm-item:not(.al_row)>.body{flex:0 0 auto;min-width:0}
  body.azm-dash .azm-item.al_row>.body{flex:1 1 100%;min-width:0}
}
body.azm-dash .azm-pricebox,
body.azm-dash .azm-pricebox>*{max-width:100%;box-sizing:border-box}
body.azm-dash .azm-pricebox input{max-width:100%}
@media (max-width:560px){
  body.azm-dash .azm-item>.azm-rowacts{max-width:100%}
}
.azm-explore{margin:0 0 16px}
/* a field the seller still has to fill */
.az-miss{border-color:#C6543F!important;background:#FDF4F2}
.az-miss:focus-visible{outline:2px solid #C6543F;outline-offset:1px}
.az-missnote{margin:0 0 12px}


/* ---- seller dashboard row actions: stop the buttons collapsing --------
   The rule above is `flex:1 1 0` with `min-width:0` — a flex basis of zero
   AND permission to shrink below the content. On a 390px screen the row
   has 288px to share between six controls, so "Share · भेजें" and
   "Add photos · फ़ोटो" were handed 48px each and rendered 152px tall, one
   glyph per line, while the children that are NOT .azm-btn (the still-for-
   sale form, the price panel) kept their intrinsic width and took the rest.
   The result read as a broken layout directly beneath the status timeline.

   Equal columns with a real minimum is the fix: every control gets at least
   140px or a full row of its own, and nothing is squeezed narrower than its
   own text. min() keeps it honest below 140px, where one column is correct.

   Scoped to body.azm-dash so the only screen this is used on is the only
   screen it changes. */
/* Two per row, stated rather than negotiated. auto-fit with a 140px floor
   needed 140+8+140 = 288px to seat a second column and the row has exactly
   288px, so it fell to one column and every control took a line of its own —
   nine rows of buttons under one listing. Two explicit 1fr tracks cannot do
   that. minmax(0,1fr) is what lets a track go below its content width; a
   plain 1fr keeps min-content as its floor and the second column pops off
   again the moment a label is long. */
body.azm-dash .azm-rowbtns{display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;align-items:stretch;justify-content:stretch}
/* Three across once there is room for them. */
@media (min-width:900px){
  body.azm-dash .azm-rowbtns{grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* The status badge is a heading for the group, not one of the options. */
body.azm-dash .azm-rowbtns>.azm-badge{grid-column:1/-1}
/* Every direct child fills its cell, or the plain <a> controls and the ones
   wrapped in a <form> size themselves differently and the column ends up
   with a ragged right edge. */
body.azm-dash .azm-rowbtns>*{min-width:0;width:100%}
/* Paired buttons match height even when one label wraps to two lines, so a
   row reads as a row. Padding tightens on a phone: at 140px a comfortable
   desktop inset is most of the button. */
body.azm-dash .azm-rowbtns .azm-btn{flex:none;width:100%;height:100%;
  display:flex;align-items:center;justify-content:center;text-align:center;
  white-space:normal;overflow-wrap:break-word;padding:9px 10px;line-height:1.45}

/* =====================================================================
   SELLER MY-LISTINGS — one action bar, short rows

   Every listing used to carry its own stack of eight controls. On a phone
   that made each row about a screen tall, and the seller scrolled past
   the same eight buttons over and over to find the land they wanted. The
   controls now live once, above the list: tick a listing, then choose.

   That also retires the .azm-rowbtns grid entirely — the rows no longer
   contain buttons at all.
   ================================================================== */
.azl-acts{display:block}
.azl-acts-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin:0 0 10px}
.azl-acts-head .lf_sel{font-size:.85rem;color:#6B6353}

/* One row on a desktop, two per row on a phone, and every label on a
   single line in both. auto-fit was wrapping the eight controls onto two
   desktop rows the moment a label got long, so the count is stated
   explicitly instead of inferred from a minimum width.

   The labels were shortened to match: "अब भी उपलब्ध · Still for sale" in a
   133px column has nowhere to go but a second line. nowrap here is a
   guarantee, not a hope — if a label ever outgrows its column it will
   overflow visibly rather than silently double the row height, and the
   render sweep measures for exactly that. */
.azl-acts-grid{display:grid;gap:8px;
  grid-template-columns:repeat(8,minmax(0,1fr))}
/* Eight columns need the room for it. At 768px each column is about 85px
   and "उपलब्ध · Available" overflowed its button, so the tablet band gets
   four. Measured, not guessed. */
@media (max-width:960px){
  .azl-acts-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:640px){
  .azl-acts-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* box-sizing is the whole story behind the ragged heights: .azm-btn on a
   <button> computes border-box, but on an <a> it computed content-box, so
   the two anchors in this bar added their 20px of padding ON TOP of the
   grid row and came out 88px beside 66px. Stated here so the two element
   types cannot disagree again. Grid items stretch by default, which is
   what makes every control in a row exactly one row tall. */
.azl-acts-grid .azm-btn{box-sizing:border-box;width:100%;justify-content:center;
  white-space:nowrap;min-height:44px;font-size:.8rem;
  padding:10px 8px;line-height:1.25}
@media (max-width:640px){
  .azl-acts-grid .azm-btn{font-size:.84rem}
}

/* Unavailable, not hidden: a seller can see the action exists and work out
   why it is not offered, instead of hunting for a button that vanished. */
.azl-acts-grid .azm-btn.is-off{opacity:.4;pointer-events:none;cursor:default}
.azl-acts-hint{font-size:.82rem;color:#6B6353;margin:10px 0 0;line-height:1.7}

.azl-pricebox{margin:12px 0 0;padding:12px 14px;background:#FBF7EC;
  border:1px solid var(--azc-line,#E6DFCA);border-radius:12px}
.azl-pricebox[hidden]{display:none}
.azl-pricebox .azm-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}

/* ---- the row, cut to what identifies the land ---------------------- */
body.azm-dash .azm-item.lf_row{padding:11px 0;gap:10px;align-items:flex-start}
body.azm-dash .lf_row .ttl{margin:0 0 2px;line-height:1.35}
body.azm-dash .lf_row .ttl a{color:inherit;text-decoration:none}
body.azm-dash .lf_row .ttl a:hover,
body.azm-dash .lf_row .ttl a:focus-visible{text-decoration:underline}
body.azm-dash .lf_row .meta{font-size:.8rem;line-height:1.6}
body.azm-dash .lf_row .azt-line{margin:7px 0 0;gap:5px}
body.azm-dash .lf_row .azt-step{font-size:11.5px;padding:3px 10px;gap:5px}
/* Off the happy path — rejected, withdrawn, changes requested, sold. */
.azt-step.is-off{background:#FBF3E4;border-color:#C6543F;color:#8C2F1E}

/* =====================================================================
   HERO — the lead reads as a subtitle beside the heading
   ================================================================== */
.pg-h1row{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px}
.pg-h1row h1{margin:0}
.pg-h1row .pg-lead{margin:0;max-width:62ch}

/* ---- profile photo: the pencil is the control -------------------- */
.azm-photo-col{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px}
/* .azm-photo-col input[type=file] already sets a width further up this
   file and out-specifies a single class, so the hide rule has to carry the
   same weight or the grey "no file selected" bar stays on screen. Visually
   hidden, NOT display:none — it must still take focus from the keyboard,
   because it is the real control behind the pencil. */
.azm-photo-col input[type=file].azm-photo-file{position:absolute;
  width:1px;height:1px;max-width:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* The badge sits ON the picture rather than under it — the pill plus its
   caption used to cost two lines below a 96px avatar for no information the
   picture and a pencil do not already carry. */
.azm-photo-pic{position:relative;display:inline-block;line-height:0}
.azm-photo-edit{position:absolute;right:-2px;bottom:-2px;
  width:22px;height:22px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  color:#F5F0E6;background:#1A3C2A;border:3px solid #FEFDFB;
  box-shadow:0 1px 5px rgba(15,36,25,.28)}
.azm-photo-edit:hover{background:#0F2419}
/* 32px outside the border is about a third of the avatar, which is the
   proportion a badge like this reads correctly at. It is under the 44px tap
   minimum, so the hit area is grown past the paint with a transparent ring
   — the badge stays small, the target does not. */
.azm-photo-edit::after{content:"";position:absolute;inset:-10px;border-radius:50%}
/* The real control is visually hidden, so its focus ring has to appear on
   the thing standing in for it. */
.azm-photo-col:focus-within .azm-photo-edit{outline:2px solid #6F5518;outline-offset:2px}

/* ---- Buy Land: the Explore button rides the Saved heading -------- */
.azm-buy-head{display:flex;flex-wrap:wrap;align-items:center;
  justify-content:space-between;gap:10px 14px;margin:0 0 12px}
.azm-buy-head .azm-buy-h2{margin:0}

/* ---- action bar: select-all sits with the hint, under the buttons - */
.azl-acts-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;
  margin:10px 0 0}
.azl-acts-foot .lf_all{display:flex;align-items:center;gap:7px;font-size:.85rem;
  font-weight:600;color:#1A3C2A;white-space:nowrap}
.azl-acts-foot .lf_sel{font-size:.85rem;color:#6B6353;white-space:nowrap}
.azl-acts-foot .azl-acts-hint{margin:0;flex:1 1 240px;min-width:0}

/* ---- listing row: status chips to the right of the identity ------ */
@media (min-width:721px){
  body.azm-dash .azm-item.lf_row>.body{display:flex;flex-wrap:wrap;
    align-items:center;justify-content:space-between;gap:4px 16px}
  body.azm-dash .lf_row .ttl{flex:1 1 100%;order:1}
  body.azm-dash .lf_row .meta{order:2;flex:0 1 auto}
  body.azm-dash .lf_row .azt-line.azt-right{order:3;margin:0;flex:0 1 auto;
    justify-content:flex-end}
}

/* ---- the enquiry note and its caveat are one block --------------- */
.azm-enq-block{margin:16px 0 0}
.azm-enq-block .azt-priv{margin:0 0 10px}
.azm-enq-block .azm-note{margin:0}

/* ---- a hint that belongs to a control, not to the card ----------- */
.azm-hint-side{flex:1 1 260px;min-width:0;margin:0;font-size:.8rem;line-height:1.6}
.azm-jb-pick{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}


/* =====================================================================
   ACCOUNT UI RULES — full width, inline bilingual, nothing on its own line

   Three caps were putting a column of empty space to the right of every
   callout on a wide screen: .azm-note and .azm-compliance p at 880/1000px,
   and the hint rule below. A measure cap is right for an article; these are
   panels inside a card that already limits the line length, so the cap only
   produced dead space.
   ================================================================== */
/* max-width:none only — NOT width:100%. These are content-box elements with
   16px of padding and a 3px left border, so an explicit 100% width made them
   3% wider than the card holding them and put 7px of horizontal scroll on the
   whole page. Block elements fill their parent on their own. */
.azm-note,
.azm-compliance p,
.azm-enq-block,
.azm-enq-block .azt-priv{max-width:none;box-sizing:border-box}

/* A label that belongs on the control's line rather than above it. */
.azm-lab-side{margin:0;flex:0 0 auto;white-space:nowrap}

/* Hint beside its control. Already used by the jamabandi and bhunaksha
   pickers; now the password fields and the photo picker use it too. */
.azm-hint-side{flex:1 1 240px;min-width:0;margin:0;font-size:.8rem;line-height:1.6}

/* The password row: three fields, then the rule that governs them, on the
   same line rather than a hint stranded under the left-hand column. */
.azm-pw-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.azm-pw-row .azm-hint-side{flex:1 1 200px}

/* =====================================================================
   DENSITY PASS — the padding the review marked, and the blue-box widths

   Three kinds of change, all measured afterwards rather than eyeballed:
   sections sat too far apart, a few notes still carried a measure cap that
   left dead space to their right, and several one-line notes were taking a
   line of their own beside a heading that had room.
   ================================================================== */

/* A note that belongs to a heading rides it. */
.azm-h3row{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin:0 0 12px}
.azm-h3row h3{margin:0}
.azm-h3note{margin:0;flex:1 1 260px;min-width:0;font-size:.8rem;color:#6B6353;line-height:1.6}

/* Blue boxes: no measure cap anywhere inside a card. .hint was the last one
   still constrained — the note under a textarea and the draft rule under the
   declaration checkboxes both stopped short of the card edge. */
.azm-card .hint,
.azm-card .azm-note,
.azm-card p.hint{max-width:none;box-sizing:border-box}

/* Section spacing. These were the widest gaps on the account screens: a card
   ended, and the next heading began about a thumb's width lower than it
   needed to. */
.azm-card{margin-bottom:16px}
.azm-card + .azm-card{margin-top:0}
.azm-card h3{margin-top:0}
.azm-card h3 + .row,
.azm-card h3 + .azm-verif,
.azm-card h3 + p.hint{margin-top:8px}
.azm-verif{margin-bottom:0}
.pg-hero{padding-top:10px;padding-bottom:0}
.pg-h1row{margin-bottom:10px}


/* =====================================================================
   PAGE WIDTH AND SECTION SPACING — second pass

   The blue box was still wrapping to three lines because the container was
   the constraint, not the paragraph: .azm caps the whole account page at
   1200px while the chrome above it runs wider. Raising the cap lets the
   public-profile note fall in two lines on a desktop or iPad, which is what
   it was asking for.

   The black-line gaps were measured at 18-22px but READ as 50-60px, because
   a card's bottom margin, the next section's top margin and a heading's own
   margin were stacking. They are collapsed here rather than trimmed again.
   ================================================================== */
.azm{max-width:1440px;padding:18px 20px 56px}
.azm > h2:first-child,
.azm > .pg-hero:first-child{margin-top:0}

/* Cards sit closer together, and a heading no longer adds a second gap on
   top of the card's own padding. */
.azm-card{margin-bottom:12px;padding-top:16px;padding-bottom:16px}
.azm-card > h3:first-child{margin-bottom:8px}
.azm-h3row{margin-bottom:8px}
.pg-hero{padding-top:6px;padding-bottom:0}
.pg-h1row{margin-bottom:6px}

/* ---- Seller guide, top-right of the two pages that need it -------------
   Placed against the hero rather than in the page flow: the hero row had
   empty space to the right of the heading on every desktop width, which is
   exactly where a seller looks for help with the screen in front of them. */
.azm-guide{position:relative;float:right;display:inline-flex;align-items:center;gap:8px;
  margin:-46px 0 8px;padding:8px 14px;border-radius:999px;text-decoration:none;
  font-size:.82rem;font-weight:700;line-height:1.25;color:#1A3C2A;background:#F5F0E6;
  border:1.5px solid rgba(200,169,81,.75);box-sizing:border-box;min-height:40px}
.azm-guide:hover{background:#EFE7D4}
.azm-guide:focus-visible{outline:2px solid #6F5518;outline-offset:2px}
.azm-guide em{font-style:normal;font-weight:800;opacity:.6;font-size:.74rem}
@media (max-width:760px){
  .azm-guide{float:none;margin:0 0 12px}
}

/* Import preview lists — short, scannable, never the whole file. */
.azm-implist{margin:6px 0 0;padding:0 0 0 18px;font-size:.82rem;color:#5f6b60;line-height:1.8}
.azm-implist li{margin:0 0 2px}

/* ---- Recommended by AgriZameen, on the buyer's own page ---------------- */
.azm-reco{border-left:3px solid #C8A951;padding-left:14px}
.azm-reco-tag{display:inline-block;margin:6px 0 0;padding:3px 11px;border-radius:999px;
  background:#1A3C2A;color:#F5F0E6;font-size:.72rem;font-weight:800;line-height:1.7}


/* ---- density: empty states and the strip below them -------------------
   An empty list card was rendering about 200px tall for one sentence, and
   the compliance strip sat a further gap below it. */
.azm-card .azm-empty,
.azm-empty{min-height:0;padding:16px 0;margin:0;text-align:center;color:#6B6353;
  font-size:.88rem;line-height:1.7}
.azm-list:empty{display:none}
.azm-compliance{margin-top:14px;padding-top:12px}
.azm-enq-block{margin-top:12px}

/* ---- three fields to a row, and paired toggles ------------------------
   The lead form was six fields in three stacked pairs, which made a short
   form scroll. Three across fits every one of them above the fold on a
   desktop and drops to two, then one, as the width goes. */
.azm-row3{display:grid;gap:10px 14px;
  grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 10px}
@media (max-width:900px){.azm-row3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.azm-row3{grid-template-columns:1fr}}
.azm-row3 > div{min-width:0}
.azm-row3 input,.azm-row3 select{width:100%;box-sizing:border-box}

/* Two consents on one line. A checkbox that sits at the far right of a
   full-width row reads as unrelated to its own label; pairing the box with
   its words fixes that and halves the height. */
/* Back link, top right — see admin/index.php for why it moved. Below
   560px it returns to its own full line: floated right on a phone it
   would sit on top of the lead's name. */
.azm-backright{float:right;margin:0 0 6px 12px}
@media (max-width:560px){.azm-backright{float:none;display:inline-flex;margin:0 0 10px}}

/* ---- review: seller's pin beside the coordinate label -------------
   It rides the label rather than sitting in a note box below the fields
   (Adheer's annotated pass, 25 Aug) — it is the thing a reviewer opens
   while typing those two boxes. Normal weight so it reads as a link, not
   as part of the label. */
.azm .azm-pinlink{font-weight:500;font-size:.8rem;margin-left:8px;
  color:#6F5518;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}
.azm .azm-note--tight{margin-top:6px;padding-top:8px;padding-bottom:8px}

/* ---- lead detail: edit in place, no page jump ----------------------
   A checkbox toggle so it works with scripts blocked — this is the only
   route to fixing a wrong name or number, so it must not depend on JS.
   [hidden] on the input is paired with an explicit display:none because
   [hidden] loses to any display rule that outranks it, and .azm input
   carries width:100% which would otherwise stretch it across the card. */
.azm input.az-editt{position:absolute;width:1px;height:1px;padding:0;border:0;
  overflow:hidden;clip:rect(0 0 0 0);opacity:0;pointer-events:none}
.azm .az-editbox{display:none}
.azm .az-editt:checked~.az-editbox{display:block}
/* The lead edit form lives INSIDE the header card (26 Aug pass 3): the
   toggle swaps the fact grid for the fields, in place. */
.azm .az-editt:checked~.azm-card .az-editbox{display:block}
.azm .az-editt:checked~.azm-card .az-leadfacts{display:none}
/* The button is a <label>: it needs the pointer and the focus ring a
   button would have had, since it no longer is one. */
.azm .az-editbtn{cursor:pointer}
.azm .az-editt:focus-visible~*.azm-card .az-editbtn,
.azm .az-editbtn:focus-visible{outline:2px solid #1A3C2A;outline-offset:2px}
.azm .az-editt:checked~*.azm-card .az-editbtn{background:#1A3C2A;border-color:#1A3C2A;color:#F5F0E6}

/* ---- lead detail: Handled by / contact controls one row per kind ----
   (Adheer's annotated pass, 25 Aug.) The select, its label and Set sat on
   one line, then "Number does not ring", then two buttons, each on a line
   of its own — four rows for three controls. Fields share a row and wrap
   as a group; the buttons share the row below them. */
.azm-leadctl{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px;margin-top:10px}
.azm-leadctl .f{display:inline;margin:0 4px 0 0;white-space:nowrap}
.azm-leadctl select,.azm-leadctl input[type=text]{flex:1 1 200px;min-width:0;
  padding:6px 9px;border:1px solid var(--azc-line);border-radius:7px;font-size:.85rem}
.azm-leadctl .azm-leadctl-b{flex:1 0 100%;display:flex;flex-wrap:wrap;gap:8px;margin:0}
@media (max-width:560px){
  .azm-leadctl select,.azm-leadctl input[type=text]{flex:1 1 100%}
  .azm-leadctl .azm-leadctl-b>*{flex:1 1 auto}
}
.azm-togs{display:grid;gap:8px 18px;grid-template-columns:repeat(2,minmax(0,1fr));
  margin:4px 0 10px}
/* Three to a line above 900px (Adheer's annotated pass, 25 Aug). Eight
   facts two-up ran four rows deep and pushed the controls below the fold
   on a laptop; three-up makes it three rows and still leaves each value
   beside its own label rather than a page-width away. Two columns from
   561–900px and one below that stay as they were — three columns at
   560px would give "City / state" about 60px. */
@media (min-width:900px){.azm-togs{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.azm-togs{grid-template-columns:1fr}}
.azm-tog2{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;
  padding:6px 12px;border:1px dashed rgba(200,169,81,.6);border-radius:10px;
  font-size:.88rem;color:#1A3C2A;background:#FBF7EC}
.azm-tog2 input{flex:none;width:18px;height:18px;margin:0}
.azm-tog2:hover{background:#F5F0E6}

/* Digits-only fields: strip anything else as it is typed. Paired with the
   server check in profile_save() and lead_save() — neither alone is enough,
   because the pattern only binds a request that came through the form. */
input[inputmode="numeric"]{font-variant-numeric:tabular-nums}
input:invalid:not(:placeholder-shown){border-color:#C6543F;background:#FDF6F4}
input:invalid:not(:placeholder-shown)+.hint{color:#8C2F1E}

/* ---- video review ----------------------------------------------------- */
/* A .mov the browser cannot decode reports no intrinsic size, and an unsized
   <video> then takes whatever height the box gives it — which is how the
   review player became a black column two screens tall. Fixing the ratio
   makes an undecodable file look like an empty player instead of a fault in
   the page, and object-fit keeps a portrait clip letterboxed rather than
   stretched. */
.azm-vid{width:100%;max-width:640px;aspect-ratio:16/9;height:auto;object-fit:contain;
  border-radius:12px;background:#0F2419;margin:10px 0;display:block}
.azm-vform{margin:0 0 10px}
.azm-chk2{display:flex;align-items:flex-start;gap:10px;font-size:13px;line-height:1.6;
  padding:7px 11px;margin:0 0 6px;border:1px dashed rgba(200,169,81,.6);border-radius:9px;
  background:#FBF7EC;cursor:pointer}
.azm-chk2 input{flex:none;width:17px;height:17px;margin:2px 0 0}
.azm-pre{background:#0F2419;color:#F5F0E6;border-radius:10px;padding:12px 14px;
  font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:12px;overflow-x:auto;
  white-space:pre-wrap;word-break:break-all;margin:8px 0 0}

/* ===================================================================
   LEADS GRID  (leads pass)

   SPECIFICITY NOTE — this cost a shipped defect once already. The
   dashboard sets `body.azm-dash .azm-rowbtns{display:grid}` at 0-2-1
   further up this file. A rule written as `.azm-leadgrid .azm-rowbtns`
   is 0-2-0 and LOSES, so the Delete button got forced into a grid cell
   and stretched left. Every rule below that has to beat a body.azm-dash
   rule carries the same prefix. Test with azm-dash on <body> or the
   layout under test is not the one that ships.
   =================================================================== */
.azm-leadgrid{display:grid;gap:12px;grid-template-columns:1fr;margin-top:14px}
/* Two on a tablet, three at most. Capped deliberately: auto-fill kept
   going to four and beyond on a wide window, and four cards of contact
   detail is denser than this list should read. */
@media (min-width:700px){ .azm-leadgrid{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (min-width:1100px){ .azm-leadgrid{grid-template-columns:repeat(3,minmax(0,1fr))} }

body.azm-dash .azm-leadgrid .azm-item{display:block;padding:13px 14px;
  border-bottom:0;border:1px solid var(--azc-line);border-radius:10px;background:#fff}
body.azm-dash .azm-leadgrid .azm-item>.body{flex:none;min-width:0;max-width:100%}
body.azm-dash .azm-leadgrid .azm-item .ttl{display:flex;align-items:baseline;
  flex-wrap:wrap;gap:6px;margin:0 0 4px;line-height:1.3}

/* The name is the link now that Open is gone. */
body.azm-dash .azm-leadgrid .lead-name{color:var(--azc-forest);text-decoration:none;
  font-weight:600;padding:2px 0;display:inline-block;min-height:24px}
body.azm-dash .azm-leadgrid .lead-name:hover,
body.azm-dash .azm-leadgrid .lead-name:focus{text-decoration:underline}

.lead-acct{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;
  font-weight:600;color:var(--azc-forest);background:#E8EFE9;
  border:1px solid #C6D6C9;border-radius:999px;padding:1px 8px;white-space:nowrap}
.lead-acct::before{content:"\1F464";font-size:.8em;line-height:1}
.lead-tag{display:inline-block;font-size:.7rem;background:#F5F0E6;
  border:1px solid var(--azc-line);border-radius:999px;padding:1px 7px;margin:2px 3px 0 0;
  color:#6B4F3A;white-space:nowrap}
body.azm-dash .azm-leadgrid .meta{font-size:.8rem;line-height:1.5;overflow-wrap:anywhere}
.lead-noconsent{color:#C6543F;font-weight:600}
.lead-id{font-family:'Space Mono',ui-monospace,monospace;font-size:.7rem;color:#8A8271}

/* Buttons: one row, right-aligned, beating the dashboard grid rule. */
body.azm-dash .azm-leadgrid .azm-rowacts{display:block;margin-top:10px;padding-top:9px;
  border-top:1px solid var(--azc-line);max-width:100%;flex:none;text-align:right}
body.azm-dash .azm-leadgrid .azm-rowbtns{display:flex;justify-content:flex-end;
  gap:8px;grid-template-columns:none}
body.azm-dash .azm-leadgrid .azm-rowbtns>*{width:auto;min-width:0}
body.azm-dash .azm-leadgrid .azm-rowbtns .azm-btn{box-sizing:border-box;flex:none;
  width:auto;height:auto;padding:6px 14px}

/* ---- row view ----------------------------------------------------
   One line per lead: name, contact detail and tags run along the SAME
   row rather than stacking. That is the whole point of the row view —
   stacked, it is just a card without the border and reads no denser.
   Everything is inline-level and wraps as a unit, so a long email pushes
   the tags to a second line instead of overflowing. */
.azm-leadgrid.is-rows{grid-template-columns:1fr!important;gap:0}
body.azm-dash .azm-leadgrid.is-rows .azm-item{display:flex;align-items:flex-start;
  gap:12px;border:0;border-bottom:1px solid var(--azc-line);border-radius:0;padding:9px 2px}
body.azm-dash .azm-leadgrid.is-rows .azm-item>.body{flex:1 1 auto}
body.azm-dash .azm-leadgrid.is-rows .lead-lines{display:flex;flex-wrap:wrap;
  align-items:baseline;gap:2px 10px}
body.azm-dash .azm-leadgrid.is-rows .lead-lines>*{margin:0}
body.azm-dash .azm-leadgrid.is-rows .ttl{display:inline-flex;flex:none}
body.azm-dash .azm-leadgrid.is-rows .meta{display:inline-flex;flex-wrap:wrap;
  gap:0 5px;align-items:baseline}
body.azm-dash .azm-leadgrid.is-rows .lead-tags{display:inline-flex;flex-wrap:wrap;gap:0}
body.azm-dash .azm-leadgrid.is-rows .lead-tag{margin:0 4px 0 0}
body.azm-dash .azm-leadgrid.is-rows .azm-rowacts{margin:0;padding:0;border-top:0;flex:none}
@media (max-width:560px){
  body.azm-dash .azm-leadgrid.is-rows .azm-item{flex-direction:column}
  body.azm-dash .azm-leadgrid.is-rows .azm-rowacts{width:100%;text-align:right}
}

/* ---- select + bulk bar ------------------------------------------- */
.lead-pick{display:flex;align-items:flex-start;gap:9px}
.lead-pick input[type=checkbox]{flex:none;width:18px;height:18px;margin:3px 0 0}
.azm-bulkbar{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:9px;
  align-items:center;margin:12px 0;padding:10px 12px;border-radius:10px;
  background:#F5F0E6;border:1px solid var(--azc-gold)}
.azm-bulkbar[hidden]{display:none}
.azm-bulkbar .n{font-weight:700;color:var(--azc-forest);white-space:nowrap}
.azm-bulkbar input[type=text],.azm-bulkbar select{padding:6px 9px;border:1px solid var(--azc-line);
  border-radius:7px;font:inherit;font-size:.85rem;min-width:0;max-width:190px}
.azm-filters{display:grid;gap:9px;grid-template-columns:1fr;margin:0 0 12px}
@media (min-width:640px){.azm-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){.azm-filters{grid-template-columns:repeat(4,minmax(0,1fr))}}
.azm-filters label{display:block;font-size:.75rem;font-weight:600;color:#6B6353;margin:0 0 3px}
.azm-filters input,.azm-filters select{width:100%;box-sizing:border-box;padding:8px 10px;
  border:1px solid var(--azc-line);border-radius:8px;font:inherit;font-size:.88rem}
.azm-viewtog{display:inline-flex;border:1px solid var(--azc-line);border-radius:8px;overflow:hidden}
.azm-viewtog a{padding:6px 13px;font-size:.83rem;text-decoration:none;color:#6B6353;background:#fff}
.azm-viewtog a[aria-current="true"]{background:var(--azc-forest);color:#F5F0E6;font-weight:600}

/* ---- screenshot reader panel ---- */
.az-ocr{box-sizing:border-box}
.az-ocr .az-ocr-file{max-width:100%}

/* ---- lead communication log -------------------------------------- */
.azm-log{list-style:none;margin:14px 0 0;padding:0;
  border-top:1px solid var(--azc-line)}
.azm-log-i{padding:11px 0;border-bottom:1px solid var(--azc-line)}
.azm-log-h{margin:0 0 4px;font-size:.85rem;display:flex;flex-wrap:wrap;
  gap:2px 8px;align-items:baseline}
/* The body is what somebody actually said. It keeps the line breaks it was
   typed with, and wraps rather than stretching the card. */
.azm-log-b{margin:0 0 6px;font-size:.9rem;line-height:1.55;
  overflow-wrap:anywhere;white-space:normal}
.azm-log-f textarea{width:100%;box-sizing:border-box}
.azm-log-i .azm-btn{padding:3px 10px;font-size:.75rem}

/* ---- person details, two per row --------------------------------- */
.azm-toggrid{display:grid;grid-template-columns:1fr;gap:0 22px}
@media (min-width:820px){
  .azm-toggrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* A full address squeezed into half a column wrapped onto three lines
     and read worse than the saved space was worth. */
  .azm-toggrid .azm-tog.is-wide{grid-column:1/-1}
}
.azm-toggrid .azm-tog .v{max-width:60%}

/* ---- listings toolbar, above the list ---------------------------- */
/* Sticky because it now sits at the top: selecting a row 30 down and then
   scrolling back up to act on it is the problem this move was meant to fix,
   and an un-sticky bar at the top only moves that problem. */
.azm-bulk.is-top{position:sticky;top:0;z-index:6;display:flex;flex-wrap:wrap;
  align-items:center;gap:8px;margin:0 0 12px;padding:10px 12px;border-radius:10px;
  background:#F5F0E6;border:1px solid var(--azc-gold)}
.azm-bulk.is-top .lf_sel{white-space:nowrap}
.azm-bulk.is-top select{flex:1 1 240px;min-width:0;max-width:100%;padding:7px 9px;
  border:1px solid var(--azc-line);border-radius:7px;font:inherit;font-size:.85rem}
.azm-bulk.is-top .azm-btn{flex:none}
/* On a phone the count and select-all take the first line together and the
   buttons wrap under, rather than the select being squeezed to nothing. */
@media (max-width:560px){
  .azm-bulk.is-top select{flex:1 1 100%}
}

/* ---- seller's listings: pick, share, PDF ------------------------- */
.azm-tog.sl_row .k{display:flex;align-items:center;gap:8px;flex:none}
.sl_pick input{width:18px;height:18px;margin:0;flex:none}
.azm-tog.sl_row .v{display:flex;align-items:center;flex-wrap:wrap;gap:6px;
  justify-content:flex-end;max-width:70%}
.azm-tog.sl_row .azm-btn{padding:3px 10px;font-size:.75rem;flex:none}
@media (max-width:560px){
  .azm-tog.sl_row{flex-direction:column;align-items:flex-start;gap:6px}
  .azm-tog.sl_row .v{max-width:100%;justify-content:flex-start;text-align:left}
}

/* ---- inventory health -------------------------------------------- */
.azm-health{padding:11px 0;border-top:1px solid var(--azc-line)}
.azm-health:first-of-type{border-top:0}
.azm-health-h{margin:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* The refs wrap as a block of links rather than a list — twenty of them
   down the page buries the next check. */
.azm-health-l{margin:0;display:flex;flex-wrap:wrap;gap:5px 8px;line-height:1.9}
.azm-health-l .azm-ref{text-decoration:none;border-bottom:1px dotted var(--azc-line)}
.azm-health-l .azm-ref:hover{border-bottom-style:solid}

/* ---- owner badge ------------------------------------------------- */
.lead-own{display:inline-block;font-size:.7rem;font-weight:600;color:#6B4F3A;
  background:#F5F0E6;border:1px solid var(--azc-gold);border-radius:999px;
  padding:1px 8px;white-space:nowrap}

/* ---- belt photographs -------------------------------------------- */
.azm-beltgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
  margin-top:12px}
.azm-beltfig{margin:0;border:1px solid var(--azc-line);border-radius:10px;overflow:hidden;
  background:#fff}
/* Fixed aspect so a stray portrait upload cannot stretch one cell and drag
   the whole row out of line. */
.azm-beltfig img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.azm-beltfig figcaption{display:flex;align-items:center;justify-content:space-between;
  gap:8px;flex-wrap:wrap;padding:7px 9px;font-size:.72rem}
.azm-beltfig .azm-btn{padding:2px 9px;font-size:.7rem}

/* ---- alerts strip ------------------------------------------------ */
.azm-alerts{display:grid;gap:8px;margin:14px 0 0}
.azm-alert{display:flex;align-items:flex-start;gap:11px;padding:10px 13px;
  border-radius:10px;text-decoration:none;border:1px solid var(--azc-line);background:#fff}
/* Two levels only. A third would mean deciding what "medium" is every time
   something new is added, and everything would drift into it. */
.azm-alert.is-high{border-color:#C6543F;background:#FDF4F2}
.azm-alert.is-watch{border-color:var(--azc-gold);background:#F5F0E6}
.azm-alert .n{flex:none;min-width:30px;height:30px;display:flex;align-items:center;
  justify-content:center;border-radius:999px;font-weight:700;font-size:.82rem;
  background:#fff;border:1px solid currentColor}
.azm-alert.is-high .n{color:#C6543F}
.azm-alert.is-watch .n{color:#8A6D1F}
.azm-alert .t{min-width:0}
.azm-alert .t strong{display:block;color:var(--azc-forest);font-size:.9rem;line-height:1.35}
.azm-alert .w{display:block;margin-top:2px;font-size:.8rem;line-height:1.45;color:#6B6353}
.azm-alert:hover{filter:brightness(.985)}

/* ---- continue with Google ---------------------------------------- */
/* The sign-in column: form, then a divider, then the Google button. It is
   one grid cell so the value panel can hold the other. */
.azm-authcol{min-width:0;max-width:440px}

/* "or" with a rule either side, drawn with borders rather than an image.
   It now sits BELOW the button and above the form, so the margins are
   even on both sides rather than weighted upward. */
.azm-or{display:flex;align-items:center;gap:12px;margin:14px 0;
  color:var(--azc-earth,#6B4F3A);font-size:.8rem}
.azm-or:before,.azm-or:after{content:'';flex:1;height:1px;background:var(--azc-line,#E2DCCE)}

.azm-gbtn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;
  box-sizing:border-box;padding:12px 14px;font-weight:600;background:#fff}
/* Google's own mark, at the size their guidance specifies. It must not be
   recoloured or redrawn, so it is inline SVG with fixed fills. */
.azm-gbtn .gmark{flex:none;display:block}
.azm-gbtn span{min-width:0}
@media (max-width:420px){
  /* The bilingual label is long; on a narrow phone let it wrap rather than
     shrink the mark or overflow the card. */
  .azm-gbtn{font-size:.9rem;padding:11px 12px}
}

/* ---- a date range on one line ------------------------------------ */
/* .azm-inline is display:inline, which cannot lay out a row of controls.
   Wrapping rather than shrinking: on a phone the two pickers stack, which
   is right, instead of squeezing to a width nobody can tap. */
.azm-daterow{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.azm-daterow input[type=date]{flex:0 1 190px;min-width:0;padding:7px 9px;
  border:1px solid var(--azc-line);border-radius:7px;font:inherit;font-size:.85rem}
.azm-daterow .f{margin:0}

/* ================= LISTING WIZARD =========================================
   Three panels over the existing form. The seller is a farmer on a phone,
   often on patchy signal, often not confident with forms — so: one thing at
   a time, the step names in Hindi first, and the numbered rail stays visible
   so he can see how much is left. Nothing here changes what the server
   accepts; it changes how much is on screen at once. */
.azw-bar{list-style:none;display:flex;gap:8px;margin:0 0 16px;padding:0}
.azw-bar li{flex:1 1 0;display:flex;align-items:center;gap:9px;min-width:0;
  background:#F7F4EC;border:1px solid rgba(200,169,81,.4);border-radius:12px;
  padding:9px 11px;opacity:.55}
.azw-bar li[aria-current="step"]{opacity:1;background:#1A3C2A;border-color:#1A3C2A}
.azw-bar li[data-done="1"]{opacity:1;background:#EFEAD9}
.azw-bar b{flex:none;width:26px;height:26px;border-radius:50%;display:grid;
  place-items:center;background:#C8A951;color:#0F2419;font-size:13px;font-weight:800}
.azw-bar li[aria-current="step"] b{background:#C8A951}
.azw-bar span{display:block;font-size:13px;font-weight:700;color:#1A3C2A;line-height:1.25;
  min-width:0;overflow:hidden;text-overflow:ellipsis}
.azw-bar li[aria-current="step"] span{color:#F5F0E6}
.azw-bar i{display:block;font-style:normal;font-size:11px;font-weight:500;color:#6B6353}
.azw-bar li[aria-current="step"] i{color:rgba(245,240,230,.75)}
.azw-nav{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 12px}
.azw-nav .azm-btn{flex:0 1 auto}
.azw-of{font-size:12.5px;color:#6B6353;margin-left:auto}
@media(max-width:640px){
  .azw-bar{gap:6px}
  .azw-bar li{padding:8px;flex-direction:column;align-items:flex-start;gap:4px}
  .azw-bar span{font-size:12px}
  .azw-bar i{display:none}
  .azw-nav .azm-btn{flex:1 1 42%}
  .azw-of{flex:1 1 100%;margin:2px 0 0;text-align:center}
}

/* The first-run card on an empty seller dashboard: two doors, the writing
   one first. Gold on forest so it reads as the page's one action rather
   than another notice among notices. */
.azm-start{background:linear-gradient(150deg,#1A3C2A,#0F2419);border-color:#1A3C2A;color:#F5F0E6}
.azm-start h3{color:#F5F0E6}
.azm-start p{color:rgba(245,240,230,.86)}
.azm-start .hint{color:rgba(245,240,230,.6)}
.azm-start-b{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 10px}
@media(max-width:560px){.azm-start-b .azm-btn{flex:1 1 100%;text-align:center}}

/* =====================================================================
   AgriZameen Social — the review queue in /admin/?p=social

   Gate 2's screen. The post is shown as the reader would see it, with the
   automatic check's report beside it as badges, because a reviewer who has
   to reconstruct what the machine found will stop reading it.
   ===================================================================== */
.azm-so-row{align-items:flex-start}
.azm-so-thumb{flex:none;display:block;width:104px;border-radius:8px;overflow:hidden;
  border:1px solid var(--azc-line)}
.azm-so-thumb img{display:block;width:104px;height:104px;object-fit:cover}
.azm-so-body{margin:6px 0 8px;font-size:.95rem;line-height:1.55;overflow-wrap:anywhere}
.azm-so-acts{margin:10px 0 0}
.azm-so-acts input[name=note]{margin:0 0 8px}
.azm-so-acts .azm-actions{margin:0}
.azm-so-sw{cursor:pointer}
.azm-so-sw .k{display:flex;align-items:center;gap:8px}
.azm-so-sw input{width:auto;margin:0}
@media(max-width:560px){
  .azm-so-row{flex-wrap:wrap}
  .azm-so-thumb,.azm-so-thumb img{width:100%;height:auto}
  .azm-so-thumb img{height:180px}
}
/* The person row's buttons carry sentences, not words, and a fixed nowrap
   clipped the longest of them on a 390px screen. */
.azm-person-acts .azm-btn{white-space:normal;text-align:center}
/* A clip awaiting review, played from the private door in media.php. */
.azm-so-vid{width:190px;max-width:100%;border-radius:8px;background:#0F2419;flex:none}

/* ---- A1 · other AgriZameen listings on a seller's page ----------------
   The block is set apart deliberately: a buyer who came to look at one
   person's land must never form the impression that a stranger's field is
   theirs, and a run of identical cards under somebody's name is exactly
   how that impression forms. Hence the rule above it, the warm ground
   behind it, and a tag on every single card rather than one heading and
   trust. */
.azm-sp-oth-h{margin-top:34px;padding-top:26px;border-top:2px solid var(--azc-gold)}
.azm-sp-oth-note{background:var(--azc-cream);border:1px solid var(--azc-line);
  border-radius:10px;padding:13px 15px;margin:0 0 18px;font-size:.9rem;line-height:1.55}
.azm-sp-oth-note strong{color:var(--azc-forest)}
.azm-sp-oth-note span{display:block;margin-top:6px;color:#5E5748;font-size:.86rem}
.azm-sp-oth .lst-card{background:var(--azc-cream)}
.azm-sp-oth-tag{margin:0 0 6px;font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;
  color:#6F5518;background:#FBF4DF;border:1px solid #D9C68F;border-radius:20px;
  padding:2px 8px;display:inline-block}
.azm-shr-hr{border:0;border-top:1px solid var(--azc-line);margin:16px 0 14px}
/* A complaint is prose, not a record card. .azm-item lays its children out in
   a row, which squeezed the detail into a column three words wide and broke
   "jamabandi" across a line. These stack. */
#reports .azm-item{display:block}
#reports .azm-item .azm-so-body{margin:8px 0}
#reports .azm-item .azm-so-acts{margin-top:10px;max-width:640px}

/* ---- DLC router · /rajasthan/dlc-rates/ ---------------------------------
   No figures live here by design, so the page is built to be scanned and
   left: four cards on what the rate is, the steps, the districts, and out
   to the portal. */
.azs-dlc{max-width:900px}
.azs-dlc-h2{margin:30px 0 12px}
.azs-dlc-lead{margin:0 0 14px;color:#5E5748}
.azs-dlc-grid{display:grid;gap:14px;grid-template-columns:1fr}
@media(min-width:620px){.azs-dlc-grid{grid-template-columns:1fr 1fr}}
.azs-dlc-card{background:var(--azc-bg);border:1px solid var(--azc-line);
  border-radius:14px;padding:16px 18px}
.azs-dlc-card h3{margin:0 0 6px;font-size:1.02rem;color:var(--azc-forest)}
.azs-dlc-card p{margin:0;font-size:.92rem;line-height:1.6;color:#4A4438}
a.azs-dlc-link{text-decoration:none;display:block}
a.azs-dlc-link:hover{border-color:var(--azc-gold);background:var(--azc-cream)}
.azs-dlc-steps{margin:0 0 6px}
.azs-dlc-steps ol{margin:0 0 12px;padding-left:20px}
.azs-dlc-steps li{margin-bottom:8px;line-height:1.6}
.azs-dlc-districts{list-style:none;margin:0 0 12px;padding:0;
  display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.azs-dlc-districts a{display:block;padding:9px 12px;border:1px solid var(--azc-line);
  border-radius:9px;text-decoration:none;font-size:.9rem;color:var(--azc-forest);
  background:var(--azc-bg)}
.azs-dlc-districts a:hover{border-color:var(--azc-gold);background:var(--azc-cream)}
.azs-dlc-districts .is-belt a{border-color:#D9C68F;background:#FBF4DF}
.azs-dlc-districts span{font-size:.72rem;color:#6F5518;display:block}
main.azm .azs-dlc-fine{margin:14px 0 0;font-size:.84rem;line-height:1.65;color:#5E5748;
  max-width:none}
main.azm .azs-dlc-fine span{display:block;margin-top:5px}

/* ---- new-listing form: declaration as a read-more --------------------
   <details> rather than an (i): these are the terms the seller binds
   themselves to, so the text stays in the page flow, prints, and is read
   by a screen reader in order. */
.azf-decl{cursor:pointer}
.azf-decl>summary{cursor:pointer;list-style:none;font-size:.95rem}
.azf-decl>summary::-webkit-details-marker{display:none}
.azf-decl>summary::after{content:" ▸";color:#6F5518}
.azf-decl[open]>summary::after{content:" ▾"}
.azf-decl>summary span{font-weight:400;font-size:.86rem;color:#6F5518}
/* The step row carries Back, Review, Save draft and Cancel on one line now,
   so the card that used to hold a second row of buttons has nothing left to
   space out: the nav's own bottom margin goes, and the card tightens from
   16px to 10px. The card still reads as a card — it is the band of empty
   ground under the last button that went. */
.azw-nav{margin-bottom:0}
.azw-nav:last-child{margin-bottom:0}
.azm-card:has(> .azw-nav){padding-top:10px;padding-bottom:10px}

/* ---- the compliance strip, folded --------------------------------------
   The summary carries the non-affiliation sentence and is always on screen;
   the caveats open on a tap. No script involved — a compliance line that
   depends on JavaScript running is a compliance line that may not exist. */
.azm-comp-fold>summary{cursor:pointer;list-style:none}
.azm-comp-fold>summary::-webkit-details-marker{display:none}
.azm-comp-more{white-space:nowrap;color:#6F5518;text-decoration:underline;
  text-underline-offset:2px}
.azm-comp-fold>summary::after{content:" ▸";color:#6F5518}
.azm-comp-fold[open]>summary::after{content:" ▾"}
.azm-comp-fold>p{margin:8px 0 0}

/* ---- "Please note" blocks, folded ---------------------------------------
   The wording inside is untouched — it is only moved into a <details> whose
   summary names what it is. No script: these carry compliance sentences and
   must not depend on JavaScript having run. */
.azf-note{margin:0 0 14px}
.azf-note>summary{cursor:pointer;list-style:none;font-size:.86rem;font-weight:700;
  color:#6B4F3A}
.azf-note>summary::-webkit-details-marker{display:none}
.azf-note>summary::after{content:" ▸";color:#6F5518}
.azf-note[open]>summary::after{content:" ▾"}
.azf-note>*{margin-top:8px}

/* ---- admin: the tail of a long screen ----------------------------------
   The audit trail card ended with a band of empty ground before the
   compliance strip, on a page that is already the longest in the build. */
.azm-compliance{padding-top:10px;margin-top:8px}
.azm-log:last-child{margin-bottom:6px}

/* ---- admin: the exhibit uploader, on one line -------------------------
   Kind, File and Upload. The button aligns to the bottom of the row so it
   sits level with the two controls rather than with their labels; below
   620px they stack, because a file input and a select cannot share a phone
   width and stay usable. */
.azm-exh{display:grid;gap:10px 14px;align-items:end;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}
.azm-exh>div{min-width:0}
.azm-exh .f{display:block}
.azm-exh select,.azm-exh input[type=file]{width:100%}
.azm-exh .azm-btn{white-space:nowrap}
@media(max-width:620px){.azm-exh{grid-template-columns:1fr}}

/* ---- admin: the sub-row under a grouped tab ---------------------------
   Listings covers the queue, all listings, the archive and what buyers see;
   Audit covers the log and the email check. Quieter than the tab strip
   above it — it is a second level, and looking like a second strip of
   equals is how a reader loses track of which one they are in. */
.azm-subtabs{display:flex;flex-wrap:wrap;gap:2px 4px;margin:-10px 0 18px}
.azm-subtabs a{padding:7px 12px;font-size:.86rem;text-decoration:none;color:#6B6353;
  border-radius:100px;white-space:nowrap}
.azm-subtabs a:hover{background:#F5F0E6;color:#1A3C2A}
.azm-subtabs a[aria-current="page"]{background:#1A3C2A;color:#F5F0E6;font-weight:600}


/* ---- plot outline review (naksha) ----------------------------------
   The SVG's own styling lives in az-land.css, which az_head() loads on
   every dashboard page — so the card renders identically here and on the
   public listing. This file only holds the review furniture around it. */
.azm-nk{display:grid;gap:16px;grid-template-columns:minmax(0,1.55fr) minmax(230px,1fr);
  align-items:start;margin:12px 0 4px}
.azm-nk-view{background:#FEFDFB;border:1px solid var(--azc-line);border-radius:14px;
  padding:10px 10px 12px;min-width:0}
.azm-nk-view .az-nk-area{font-size:clamp(.66rem,2.75vw,1rem);padding:10px 12px;margin-top:10px}
.azm-nk-side{min-width:0}
.azm-nk-read select{width:100%;margin-bottom:8px}
.azm-nk-read .hint{margin-top:8px}

.azm-kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:14px 0 0;
  font-size:.86rem}
.azm-kv dt{color:#6B6353}
.azm-kv dd{margin:0;font-weight:700;color:var(--azc-deep)}

.azm-warn{background:#FCF1EE;border:1px solid rgba(198,84,63,.45);border-radius:10px;
  padding:10px 13px;margin:0 0 12px;font-size:.86rem;line-height:1.65;color:#8C2F1E}

.azm-nk-sides{margin-top:6px;border-top:1px solid var(--azc-line);padding-top:12px}
.azm-nk-grid{display:grid;gap:8px 12px;margin:10px 0 12px;
  grid-template-columns:repeat(auto-fill,minmax(148px,1fr))}
.azm-nk-grid .f{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.azm-nk-grid input{width:100%}

@media(max-width:820px){.azm-nk{grid-template-columns:1fr}}

/* ---- live naksha preview on the seller form -------------------------
   Sits directly under the file input. Three states, and the failed one is
   deliberately not styled as an error: an unreadable map is not a rejected
   upload, the file still saves, and a red box would tell the seller they
   have done something wrong when they have not. */
.azm-nkp{margin:14px 0 0;border:1px solid var(--azc-line);border-radius:14px;
  background:#FEFDFB;overflow:hidden}
.azm-nkp-head{display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:10px 14px;border-bottom:1px solid var(--azc-line);background:#FAF7F0}
.azm-nkp-t{font-size:.86rem;font-weight:700;color:var(--azc-deep)}
.azm-nkp-st{font-size:.78rem;font-weight:600;color:#6B6353;white-space:nowrap}
.azm-nkp-body{padding:12px}
.azm-nkp-body .az-nk-area{font-size:clamp(.66rem,2.75vw,1rem);padding:10px 12px;margin-top:10px}
.azm-nkp-msg{margin:10px 0 0;font-size:.82rem;line-height:1.65;color:#6B6353}

.azm-nkp.is-busy .azm-nkp-st{color:var(--azc-goldd)}
.azm-nkp.is-busy .azm-nkp-body{opacity:.72}
.azm-nkp.is-ok .azm-nkp-head{background:#EFF4EA}
.azm-nkp.is-ok .azm-nkp-st{color:var(--azc-forest)}
.azm-nkp.is-no .azm-nkp-head{background:#FAF7F0}

/* ---- heading row: the Seller Guide moves into it ---------------------
   Was a float pulled up 46px into the hero, which meant its position
   depended on the hero being exactly that tall — and on a phone it fell
   back into the flow and read as the form's first step. It is a slot on
   the heading row now, so the browser places it instead of a magic
   negative margin. */
.pg-h1aside{margin-left:auto;flex:0 0 auto;align-self:center}
.pg-h1aside .azm-guide{float:none;margin:0}
@media (max-width:760px){
  .pg-h1aside{margin-left:0;width:100%}
  .pg-h1aside .azm-guide{margin:2px 0 0}
}


/* ---- quick-listing card: the button centres under the text ----------
   At 320px+ the button sat hard left under a full-width paragraph, which
   left a long ragged gap to its right. Centred while it is on its own
   row; back beside the text as soon as there is room for both. */
@media (max-width:760px){
  .azm-quick{gap:12px}
  .azm-quick-b{align-self:stretch;text-align:center;justify-content:center}
}

/* ---- spacing the annotations marked in black -------------------------
   Three separate stacks of collapsed-but-not-collapsing margin: under the
   hero lead, under a step heading, and above the compliance strip. Each
   was two margins plus a padding meeting at the same line. */
.pg-hero + main.azm{padding-top:8px}
.azm-card > h3 + .row,
.azm-card > h3 + .azm-note{margin-top:10px}
main.azm{padding-bottom:28px}
/* The strip already had margin-top:18px in .azm-dash on top of its own
   14px padding-top and the last card's 12px bottom margin — 44px of gap
   above one line of small print. Halved, not removed: the line itself is
   untouched and stays visible, which is the part that is not negotiable. */
.azm-dash .azm-compliance{margin-top:8px;padding-top:10px}

/* ---- My Listings row: the title starts beside the checkbox ----------
   The row was a flex line, and on a phone the body's own content pushed
   it onto a second line — leaving a checkbox alone above every listing
   with a screen-width of nothing beside it. An explicit two-column grid
   places both regardless of what the body contains, which a flex line
   cannot promise. */
@media (max-width:720px){
  body.azm-dash .azm-item.lf_row{display:grid;grid-template-columns:auto minmax(0,1fr);
    column-gap:10px;align-items:start}
  body.azm-dash .azm-item.lf_row>.lf_pick{grid-column:1;grid-row:1;padding-top:2px}
  body.azm-dash .azm-item.lf_row>.body{grid-column:2;grid-row:1;min-width:0}
}

/* Manual phone verification, master only. */
.azm-phv{flex-wrap:wrap;gap:8px;align-items:center}
.azm-phv-t{font-size:.8rem;color:#6B6353;line-height:1.5;flex:1 1 220px;min-width:0}
/* A status chip must never break mid-phrase. With the checkbox now taking
   a grid column the body is ~30px narrower, and "जाँच में · Under review"
   started wrapping inside its own pill — which reads as two chips. */
body.azm-dash .lf_row .azt-step{white-space:nowrap}

.azm-nkx-lede strong{color:var(--azc-deep)}

/* ---- legal contact book (admin only) -------------------------------- */
/* One column, full width. The two-column split left a tall empty gutter
   whenever the list was short — and it is emptiest on the day you most need
   the form, which is the day you have no contacts yet. List above, form
   below, both the width of the page. */
.azm-legal{display:block;margin-top:14px}
.azm-legal-list .azm-item{padding:12px 0}
.azm-legal-tags{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 4px}
.azm-legal-tags span{background:#EFF4EA;border:1px solid rgba(26,60,42,.18);border-radius:20px;
  padding:2px 10px;font-size:.74rem;font-weight:600;color:var(--azc-forest)}
.azm-legal-form{margin-top:18px}
.azm-legal-form .azm-card{margin-bottom:12px}
/* Two fields to a row, one column on a phone. */
.azm-legal-grid{display:grid;gap:10px 16px;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.azm-legal-grid>div>.f{display:block;margin:0 0 3px}
.azm-legal-grid input,.azm-legal-grid select{width:100%}
.azm-legal-grid .row{display:grid;gap:10px 16px;grid-template-columns:1fr 1fr;
  grid-column:1/-1}
.azm-legal-wide{grid-column:1/-1}
.azm-legal-wide textarea{width:100%}
@media(max-width:560px){.azm-legal-grid .row{grid-template-columns:1fr}}
.azm-legal-form textarea{width:100%;font:inherit;padding:9px 11px;border:1px solid var(--azc-line);
  border-radius:8px;background:var(--azc-bg)}
/* Label and control are one cell. As flex siblings they wrapped separately,
   so every field took a whole line and three filters filled the screen. */
.azm-filter{display:grid;gap:10px 14px;align-items:end;margin:12px 0;
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.azm-filter .f{display:block;margin:0 0 3px}
.azm-filter input,.azm-filter select{width:100%}
.azm-filter-go{display:flex;flex-wrap:wrap;gap:8px;align-items:center}

/* Legal contacts surfaced on an enquiry — internal, never seen by the enquirer. */
.azm-enq-legal{margin:8px 0 0;padding-top:8px;border-top:1px dashed var(--azc-line)}
.azm-enq-legal .k{margin:0 0 5px;font-size:.76rem;font-weight:700;color:var(--azc-deep);
  text-transform:uppercase;letter-spacing:.05em}
.azm-enq-lc{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:5px;
  background:#EFF4EA;border:1px solid rgba(26,60,42,.16);border-radius:8px;
  padding:4px 9px;margin:0 6px 6px 0;font-size:.8rem}
.azm-enq-lc em{color:#6B6353;font-style:normal;font-size:.74rem}

/* ---- Fill address from map link (listing wizard) ------------------ */
/* The button and its status share a row and wrap on a phone rather than
   the status being squeezed to two words beside a wide bilingual label. */
.azm-maplink-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:8px 0 4px}
.azm-maplink-row .hint{margin:0;flex:1 1 260px;min-width:0}
/* The choices offered when a pincode straddles a boundary or a name is
   ambiguous. Stacked, full width, because each label carries a tehsil and
   a district and truncating either makes two options look identical. */
/* [hidden] must win over display:flex, or an emptied panel keeps its
   border and background and reads as a control that failed to load. */
.azm-maplink-pick[hidden]{display:none}
.azm-maplink-pick{display:flex;flex-direction:column;gap:6px;align-items:flex-start;
  margin:0 0 10px;padding:10px 12px;border:1px solid var(--azc-line,#E2DCCE);
  border-radius:10px;background:rgba(200,169,81,.07)}
.azm-maplink-pick .hint{margin:0 0 2px}
.azm-maplink-pick .azm-btn{max-width:100%;white-space:normal;text-align:left}

/* ---- Check the papers (/check-papers.php) -------------------------- */
/* Severity is carried by a coloured left edge as well as the badge. The
   badge sits at the right on desktop and wraps under the text on a phone,
   so on the screen most buyers use it is no longer beside the finding it
   grades — the edge is what stays attached. Colour is never the only
   signal: every finding also carries its word (Stop / Ask / Note). */
.azm-dc-f{border-left:4px solid transparent;padding-left:12px}
.azm-dc-stop{border-left-color:var(--azc-alert,#C6543F)}
.azm-dc-ask{border-left-color:var(--azc-gold,#C8A951)}
.azm-dc-note{border-left-color:#7FA88B}
/* The English sentence is the one a buyer reads twice; it is not a hint. */
.azm-dc-en{margin:4px 0 0;font-size:.95rem;color:#3A3A32}
.azm-dc-ev{margin:6px 0 0;font-family:'Space Mono',ui-monospace,monospace;
  font-size:.78rem;word-break:break-word}
.azm-dc-act{margin:8px 0 0;font-size:.92rem;color:var(--azc-forest,#1A3C2A)}
.azm-dc-act strong{color:var(--azc-gold,#C8A951)}
.azm-dc-what{font-size:.92rem;line-height:1.55}
.azm-dc-form input[type=file]{display:block;width:100%;margin:4px 0 2px;
  padding:10px;border:1px dashed var(--azc-line,#E2DCCE);border-radius:8px;
  background:#fff;font-size:.9rem}
.azm-dc-form input[type=text]{display:block;width:100%;margin:4px 0 2px}
@media (max-width:560px){
  .azm-dc-f{padding-left:10px}
  .azm-dc-f .azm-rowacts{align-items:flex-start;margin-top:6px}
}
