/* =========================================================================
   LANDLORDSPACES SHARED COMPONENT LAYER (phase 367)
   One definition of logo, buttons, links, forms, tables, badges, alerts,
   dropdowns, focus and disabled states for the public site, Super Admin and
   every portal. Uses ONLY tokens from tokens.css. Loaded after app.css,
   home365.css and portal.css.
   ========================================================================= */

/* ---------- page + text defaults ---------- */
html{background:var(--ls-page)}
body{background:var(--ls-page);color:var(--ls-text);font-family:var(--ls-font);line-height:var(--ls-lh);-webkit-font-smoothing:antialiased}
:where(h1,h2,h3,h4,h5,h6){font-family:var(--ls-head);line-height:var(--ls-lh-tight);letter-spacing:-.01em;text-wrap:balance}
:where(p,li){color:inherit}
:where(.muted,.hint){color:var(--ls-text-muted)}

/* ---------- links ---------- */
a{color:var(--ls-brand);text-underline-offset:3px}
a:hover{color:var(--ls-brand-hover)}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--ls-brand);outline-offset:2px}

/* ---------- logo (one mark everywhere) ---------- */
.mark{display:inline-grid;place-items:center;flex:none;width:36px;height:36px;padding:0;border-radius:10px;overflow:hidden;line-height:0}
html body .mark{background:transparent!important;box-shadow:none}
html body .mark .logo-glyph,html body .rg2-mlogo .logo-glyph{display:block;width:100%;height:100%}
.logo,.a2-brand,.pt-logo,.h5-fl{display:inline-flex;align-items:center;gap:10px;font-family:var(--ls-head);font-weight:var(--ls-fw-xb);letter-spacing:-.02em;text-decoration:none}
.logo:hover,.a2-brand:hover,.pt-logo:hover{text-decoration:none}
.rg2-mlogo{background:transparent!important;border-radius:10px;overflow:hidden;width:38px;height:38px}
/* on dark brand surfaces the tile keeps a soft ring so it never disappears */
.h5-foot .mark,.site-footer .mark,.top .mark,.rg2-mhead .rg2-mlogo{box-shadow:0 0 0 1.5px rgba(255,255,255,.4)!important}

/* ---------- buttons ---------- */
.btn{min-height:var(--ls-ctl-h);border-radius:var(--ls-r-pill);font-family:var(--ls-font);font-weight:var(--ls-fw-sb);line-height:1.2}
.btn:where(:not(.ghost):not(.light):not(.accent):not(.danger):not(.link)){background-color:var(--ls-brand);border-color:var(--ls-brand);color:var(--ls-on-brand)}
.btn:where(:not(.ghost):not(.light):not(.accent):not(.danger):not(.link)):hover{background-color:var(--ls-brand-hover);border-color:var(--ls-brand-hover);color:var(--ls-on-brand)}
.btn.ghost,.btn.light{background:var(--ls-surface);color:var(--ls-brand);border:1px solid var(--ls-brand)}
.btn.ghost:hover,.btn.light:hover{background:var(--ls-brand-tint);color:var(--ls-brand-hover);border-color:var(--ls-brand-hover)}
.btn.accent{background:var(--ls-accent);border-color:var(--ls-accent);color:var(--ls-on-accent)}
.btn.accent:hover{background:var(--ls-accent-hover);border-color:var(--ls-accent-hover);color:var(--ls-on-accent)}
.btn.danger{background:var(--ls-danger);border-color:var(--ls-danger);color:var(--ls-on-danger)}
.btn.danger:hover{filter:brightness(.92);color:var(--ls-on-danger)}
.btn.sm{min-height:var(--ls-ctl-h-sm)}
.btn[disabled],.btn:disabled,.btn.loading,.btn[aria-disabled="true"]{opacity:1;background:var(--ls-surface-sunken);border-color:var(--ls-border);color:#64748b;cursor:not-allowed;box-shadow:none;background-image:none}
:root[data-theme="dark"] .btn[disabled],:root[data-theme="dark"] .btn:disabled{color:var(--ls-text-muted)}
.btn svg,.btn .i{width:var(--ls-icon-sm);height:var(--ls-icon-sm);flex:none}
.link-btn,.btn.link{background:none;border:0;color:var(--ls-brand);font-weight:var(--ls-fw-sb);min-height:0;padding:0;box-shadow:none;cursor:pointer}
.link-btn:hover,.btn.link:hover{color:var(--ls-brand-hover);text-decoration:underline}

/* ---------- forms ---------- */
label{color:var(--ls-text-2);font-weight:var(--ls-fw-sb)}
input,select,textarea{background:var(--ls-surface);color:var(--ls-text);border:1px solid var(--ls-border-strong);border-radius:var(--ls-r-sm);font-family:var(--ls-font)}
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select{min-height:var(--ls-ctl-h)}
input::placeholder,textarea::placeholder{color:var(--ls-placeholder);opacity:1}
input:hover,select:hover,textarea:hover{border-color:var(--ls-text-muted)}
input:focus,select:focus,textarea:focus{border-color:var(--ls-brand);box-shadow:var(--ls-focus);outline:none}
input:disabled,select:disabled,textarea:disabled{background:var(--ls-surface-alt);color:var(--ls-text-muted);cursor:not-allowed}
input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--ls-brand)}

/* ---------- tables ---------- */
table.t th{background:var(--ls-surface-alt);color:var(--ls-text-muted);font-weight:var(--ls-fw-b);border-bottom:1px solid var(--ls-border)}
table.t td{color:var(--ls-text);border-bottom:1px solid var(--ls-border);vertical-align:middle}
table.t tbody tr:hover td{background:var(--ls-brand-tint)}

/* ---------- cards / panels ---------- */
:where(.panel,.card,.stat,.task){background:var(--ls-surface);border:1px solid var(--ls-border);border-radius:var(--ls-r);color:var(--ls-text)}

/* ---------- badges: neutral by default, semantic only for status ---------- */
.badge{font-family:var(--ls-font)}
.badge.ok,.badge.success,.badge.verified,.badge.approved,.badge.published{background:var(--ls-success-tint);color:var(--ls-success)}
.badge.warn,.badge.warning,.badge.pending{background:var(--ls-warning-tint);color:var(--ls-warning)}
.badge.danger,.badge.error,.badge.rejected,.badge.notgenuine{background:var(--ls-danger-tint);color:var(--ls-danger)}
.badge.info{background:var(--ls-info-tint);color:var(--ls-info)}

/* ---------- alerts / notifications ---------- */
.alert{border-radius:var(--ls-r-sm);border:1px solid var(--ls-border);padding:12px 14px;background:var(--ls-surface-alt);color:var(--ls-text)}
.alert.success{background:var(--ls-success-tint);border-color:transparent;color:var(--ls-success)}
.alert.warn,.alert.warning{background:var(--ls-warning-tint);border-color:transparent;color:var(--ls-warning)}
.alert.error,.alert.danger{background:var(--ls-danger-tint);border-color:transparent;color:var(--ls-danger)}
.alert.info{background:var(--ls-info-tint);border-color:transparent;color:var(--ls-info)}

/* ---------- dropdowns / menus ---------- */
.dropdown-menu,.pt-res,.a2-res,.acct-menu{background:var(--ls-surface);border:1px solid var(--ls-border);border-radius:var(--ls-r);box-shadow:var(--ls-shadow-lg);color:var(--ls-text)}
.dropdown-menu a,.dropdown-menu button{color:var(--ls-text)}
.dropdown-menu a:hover,.dropdown-menu button:hover{background:var(--ls-brand-tint);color:var(--ls-brand-hover)}

/* ---------- contrast corrections found by the phase-367 scan ---------- */
.alert a{color:inherit;text-decoration:underline;font-weight:var(--ls-fw-b)}
.bubble.me .ts,.bubble.me .rcpt{opacity:1;color:rgba(255,255,255,.92)}

/* ---------- white-first surfaces: no tinted panel blocks, no glass blur on content ---------- */
.gd-card{background:var(--ls-surface)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border:1px solid var(--ls-border)!important;border-left:4px solid var(--ls-accent)!important;box-shadow:var(--ls-shadow-sm)}
.gd-steps li{background:var(--ls-surface-alt)}
.ux-head{background:var(--ls-surface)!important}
.ux-head::after{display:none}
.nx-g.open,body:has(.pt-bar) .nx-g.open{background:var(--ls-surface-alt);border-color:var(--ls-border)}

/* ---------- typography: Inter for text, Plus Jakarta Sans for headings, everywhere ---------- */
button,input,select,textarea,optgroup{font-family:inherit}
h1{font-weight:var(--ls-fw-xb)}
/* dashboards (Super Admin and every portal) share one page-title size */
.admin-shell h1,body:has(.pt-bar) h1{font-size:1.55rem!important;font-weight:var(--ls-fw-xb)!important;line-height:1.2!important;letter-spacing:-.02em}

/* ---------- contrast corrections found in the agent portal scan ---------- */
.fd-count,.fd-post .fd-play{background:rgba(15,23,42,.72)}
.nx-mt small.ok{color:#fef3c7}
.kc-none{opacity:1;color:var(--ls-text-muted)}
.kc-none *{opacity:1}

/* ---------- dark mode: surfaces that used literal light colours ---------- */
:root[data-theme="dark"] .pc2-menu button,:root[data-theme="dark"] .pc2-menu a{color:var(--ls-text)}
:root[data-theme="dark"] .pc2-av{background:var(--ls-brand-tint-2);color:var(--ls-brand)}
:root[data-theme="dark"] .h5 .h5-pr,:root[data-theme="dark"] .h5-cb b,:root[data-theme="dark"] .h5-bt.light{color:var(--ls-brand)}
:root[data-theme="dark"] .nx-me .nx-mt b,:root[data-theme="dark"] .nx-me .nx-mt small{color:var(--ls-on-brand)}
:root[data-theme="dark"] .admin-shell{--a2-blue:#60a5fa;--a2-purple:#a78bfa}

/* ---------- spacing: consistent gaps between form fields ---------- */
.grid2,.grid3{row-gap:var(--ls-sp-4)}
.gd-card .gd-steps li,.panel.gd-card .gd-steps li{background:var(--ls-surface-alt)!important}
