/* =====================================================================
   Icon Casa Properties — INTERNAL (staff) visual identity
   ---------------------------------------------------------------------
   Loaded AFTER css/styles.css on staff pages only (login, admin, agent,
   master, security, office, tro, billing, facility, laperla) and inside
   the generated report / quotation print windows. The client-facing
   viewing pages never load this file, so they are untouched.

   Direction: black, white and a deep brown accent. Sharp square edges,
   heavy serif headings, tracked uppercase labels, hard rules.
   Pages declare <html data-theme="light"> so the legacy dark-mode token
   blocks in styles.css never apply — the internal look is one identity.
   ===================================================================== */

/* Typeface: Georgia throughout the staff portals (no web-font download). */

:root[data-theme="light"]{
  color-scheme: light;

  --ink:        #0b0b0c;
  --ink-soft:   #2a2623;
  --muted:      #6b645d;
  --paper:      #f3f1ee;
  --surface:    #ffffff;
  --surface-2:  #efebe6;
  --line:       #d6cfc7;
  --line-soft:  #e7e2db;

  --accent:      #4a2c1b;   /* deep brown */
  --accent-ink:  #4a2c1b;
  --accent-tint: #ebe0d6;

  --success:      #2f6b49;
  --success-tint: #e1eee6;
  --warning:      #a26a10;
  --warning-tint: #f6ead3;
  --danger:       #a3302b;
  --danger-tint:  #f5e0de;
  --info:         #2f5f93;
  --info-tint:    #e1eaf4;

  --shadow-sm: none;
  --shadow-md: 0 8px 24px rgba(11,11,12,.10);
  --shadow-lg: 0 24px 60px rgba(11,11,12,.28);

  --radius-sm: 0px;
  --radius-md: 0px;
  --radius-lg: 2px;

  --font-display: Georgia, 'Times New Roman', Times, serif;
  --font-body: Georgia, 'Times New Roman', Times, serif;
}

body{ background:var(--paper); letter-spacing:.005em; }

/* ---------- type ---------- */
h1,h2,h3,h4{ font-family:var(--font-display); font-weight:800; letter-spacing:-.005em; }
h1{ font-size:clamp(30px,4vw,44px); }
h2{ font-size:clamp(22px,2.6vw,30px); }
h3{ font-size:19px; font-weight:700; }
.eyebrow{ font-weight:800; letter-spacing:.2em; font-size:10.5px; color:var(--accent); }

/* ---------- buttons: square, tracked, heavy ---------- */
.btn{
  border-radius:0; text-transform:uppercase; letter-spacing:.12em; font-weight:700; font-size:11.5px;
  padding:13px 22px; border-width:1.5px;
}
.btn:active{ transform:none; opacity:.92; }
.btn:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.btn-primary{ background:var(--ink); color:#fff; border-color:var(--ink); }
.btn-primary:hover{ background:var(--accent); border-color:var(--accent); box-shadow:none; }
.btn-accent{ background:var(--accent); color:#fff; border-color:var(--accent); }
.btn-accent:hover{ background:var(--ink); border-color:var(--ink); box-shadow:none; }
.btn-outline{ background:transparent; border-color:var(--ink); color:var(--ink); }
.btn-outline:hover{ background:var(--ink); color:#fff; border-color:var(--ink); }
.btn-ghost{ color:var(--ink-soft); }
.btn-ghost:hover{ background:var(--surface-2); color:var(--ink); }
.btn-danger{ background:var(--danger-tint); color:var(--danger); border-color:var(--danger); }
.btn-sm{ padding:9px 14px; font-size:10.5px; }
.icon-back-btn{ border-radius:0; border-color:var(--ink); }

/* ---------- forms ---------- */
label{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.14em; color:var(--ink); }
input[type=text], input[type=tel], input[type=number], input[type=date],
input[type=password], input[type=email], select, textarea{
  border-radius:0; border:1px solid var(--ink); border-width:1px 1px 2px 1px; padding:12px 14px; background:#fff;
}
input:focus, select:focus, textarea:focus{ border-color:var(--accent); box-shadow:none; outline:2px solid var(--accent-tint); outline-offset:0; }
.cal-agent-filter-select, .unit-type-row .ut-name-input, .unit-type-add-row .ut-add-input,
.unit-type-row .ag-name-input, .unit-type-row .ag-phone-input,
.unit-type-add-row .ag-add-name-input, .unit-type-add-row .ag-add-phone-input{ border-radius:0; border-color:var(--line); }

/* ---------- cards & surfaces ---------- */
.card{ border-radius:0; border:1px solid var(--line); border-top:3px solid var(--ink); box-shadow:none; }
.card-pad{ padding:24px; }
.pill{
  border-radius:0; padding:4px 10px; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.1em;
}
.chip{ border-radius:0; }
.tabs{ border-radius:0; background:transparent; padding:0; gap:0; border-bottom:2px solid var(--ink); width:100%; }
.tabs button{
  border-radius:0; padding:11px 20px; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.14em; color:var(--muted);
  border-bottom:3px solid transparent; margin-bottom:-2px;
}
.tabs button:hover{ color:var(--ink); }
.tabs button.active{ background:transparent; color:var(--ink); box-shadow:none; border-bottom-color:var(--accent); }
.tabs-sub{ border-bottom:1px solid var(--line); }
.date-chip, .slot{ border-radius:0; }
.steps .seg{ border-radius:0; }

/* ---------- toast & modal ---------- */
.toast{ border-radius:0; background:var(--ink); color:#fff; letter-spacing:.06em; border-left:4px solid var(--accent); }
.modal-backdrop{ background:rgba(8,6,5,.62); }
.modal{ border-radius:0 !important; border-top:5px solid var(--accent); }
.modal h2, .modal h3{ font-weight:800; }
.modal-close{ color:var(--ink); }

/* ---------- admin shell: black sidebar ---------- */
.admin-nav{
  background:#0a0908; border-right:none; padding:26px 16px; gap:2px;
}
.admin-nav .brand{ padding:0 6px 20px; margin-bottom:6px !important; border-bottom:1px solid rgba(255,255,255,.14); }
.admin-nav .brand img{ filter:invert(1); height:auto; width:150px; margin-left:-6px; }
.admin-nav .brand-name{ display:none; }
.admin-nav a{
  border-radius:0; color:#b9b1a7; font-weight:700; font-size:11px; text-transform:uppercase; letter-spacing:.16em;
  padding:13px 14px; border-left:3px solid transparent;
}
.admin-nav a:hover{ background:rgba(255,255,255,.07); color:#fff; }
.admin-nav a.active{ background:var(--accent); color:#fff; border-left-color:#d8b48f; }
.admin-nav .hint{ color:#9a9187 !important; }
.admin-nav #sec-building-badge, .admin-nav .nav-badge{ color:#e7dccd !important; text-transform:uppercase; letter-spacing:.14em; font-size:11px; font-weight:800; }
.admin-nav .nav-home-btn{
  border-radius:0; background:transparent; border:1px solid rgba(255,255,255,.28); color:#d8d0c5;
  font-size:10.5px; text-transform:uppercase; letter-spacing:.14em; font-weight:700; padding:10px 12px;
}
.admin-nav .nav-home-btn:hover{ background:rgba(255,255,255,.1); border-color:#fff; color:#fff; }
.admin-nav .btn-outline{ border-color:rgba(255,255,255,.3); color:#e6dfd5; }
.admin-nav .btn-outline:hover{ background:#fff; color:var(--ink); border-color:#fff; }
.admin-nav .btn-ghost{ color:#b9b1a7; }
.admin-nav .btn-ghost:hover{ background:rgba(255,255,255,.08); color:#fff; }
@media (max-width:760px){
  .admin-shell{ grid-template-columns:88px 1fr; }
  .admin-nav{ background:#0a0908; border-right:none; padding-left:4px; padding-right:4px; }
  .admin-nav a{ letter-spacing:.02em; font-size:9px; padding:10px 2px; border-left:none; }
  .admin-nav .brand{ padding:0 0 12px; align-items:center; }
  .admin-nav .brand img{ height:auto; width:56px; margin:0; }
  .admin-nav .nav-home-btn, .admin-nav #share-link-btn, .admin-nav #push-toggle-btn, .admin-nav #logout-btn{
    letter-spacing:.02em; font-size:8.5px; padding:8px 2px; text-transform:uppercase;
  }
}

.admin-main{ padding:34px 38px 70px; background:var(--paper); }
.admin-topline{ margin-bottom:28px; padding-bottom:16px; border-bottom:2px solid var(--ink); position:relative; }
.admin-topline h2{ margin:0; font-size:clamp(24px,3vw,34px); font-weight:900; letter-spacing:-.01em; }
.admin-topline::after{ content:""; position:absolute; left:0; bottom:-3px; width:84px; height:4px; background:var(--accent); }

/* ---------- notifications rail ---------- */
.notif-rail{ border-left:1px solid var(--ink); background:#fff; }
.notif-rail-head{ border-bottom:2px solid var(--ink); padding:22px 16px 14px; }
.notif-rail-head strong{ font-size:11px; text-transform:uppercase; letter-spacing:.18em; font-weight:800; }
.notif-bell-btn{ border-radius:0; }
.notif-bell-btn.active{ background:var(--ink); color:#fff; border-color:var(--ink); }
.notif-bell-dot{ border-radius:0; }
.notif-row{ border-left-width:4px; }
.notif-row.unread{ background:var(--accent-tint); }
.notif-row .nr-label{ letter-spacing:.14em; font-weight:800; }

/* ---------- dashboard blocks ---------- */
.dash-urgent{ border-radius:0; border:1px solid var(--danger); border-left:6px solid var(--danger); }
.dash-urgent-row{ border-radius:0; border:1px solid var(--line-soft); }
.dash-qa-btn{
  border-radius:0; border:1px solid var(--ink); text-transform:uppercase; letter-spacing:.12em; font-size:11px; font-weight:800; color:var(--ink);
}
.dash-qa-btn:hover{ background:var(--ink); color:#fff; transform:none; box-shadow:none; border-color:var(--ink); }
.dash-qa-btn:hover .dash-qa-icon{ color:#fff; }
.dash-qa-icon{ color:var(--accent); }

.occ-stat{ border-radius:0; border:1px solid var(--line); border-top:4px solid var(--accent); text-align:left; padding:18px 18px 16px; }
.occ-stat-num{ font-family:var(--font-display); font-weight:900; font-size:38px; line-height:1; color:var(--ink); }
.occ-stat-label{ letter-spacing:.16em; font-weight:800; margin-top:8px; }
.occ-stat[role=button], .occ-stat.clickable{ cursor:pointer; }
.occ-stat[role=button]:hover, .occ-stat.clickable:hover{ background:var(--ink); }
.occ-stat[role=button]:hover .occ-stat-num, .occ-stat.clickable:hover .occ-stat-num,
.occ-stat[role=button]:hover .occ-stat-label, .occ-stat.clickable:hover .occ-stat-label{ color:#fff; }

/* ---------- calendar & day lists ---------- */
.cal-grid{ gap:0; border-top:1px solid var(--line); border-left:1px solid var(--line); }
.cal-grid > *{ margin:0; }
.cal-dow{ background:var(--ink); color:#fff; padding:9px 0; letter-spacing:.16em; font-weight:800; border-right:1px solid #2a2623; }
.cal-cell{ border-radius:0; border:none; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.cal-cell:hover{ background:var(--accent-tint); border-color:var(--line); }
.cal-cell.today{ background:var(--accent-tint); box-shadow:inset 0 0 0 2px var(--accent); }
.cal-cell .dnum{ font-weight:800; }
.cal-cell-line{ border-left-color:var(--accent); }
.booking-row{ border-radius:0; border:1px solid var(--line); border-left:5px solid var(--ink); }
.booking-row:hover{ border-color:var(--line); border-left-color:var(--accent); background:var(--accent-tint); }
.booking-time{ font-weight:800; }
.daily-agent-tag{ color:var(--accent); font-weight:700; }

/* ---------- tables ---------- */
.units-table-wrap{ border-radius:0; border:1px solid var(--ink); }
.units-table th{ background:var(--ink); color:#fff; border-bottom:none; letter-spacing:.14em; font-weight:800; padding:12px 14px; }

/* ---------- quotation / misc blocks ---------- */
.quote-box, .quote-hero, .quote-approval-banner, .quote-history-row, .quote-table, .quote-locked-field,
.report-picker-list, .report-picker-row{ border-radius:0 !important; }
.quote-hero{ border-left:6px solid var(--accent); }
.bar-chart-track, .bar-chart-fill{ border-radius:0; }
.bar-chart-fill{ background:var(--accent); }
.report-bar-mini, .report-bar-mini span{ border-radius:0; }
.report-bar-mini span{ background:var(--accent); }

/* ---------- login screen (agent / admin / master / security / dept) ---------- */
#login-screen{
  background-color:#0a0908;
  background-image:linear-gradient(115deg, rgba(10,9,8,.93) 0%, rgba(10,9,8,.80) 55%, rgba(74,44,27,.62) 100%), url('../assets/login-bg.jpg');
  background-size:cover; background-position:center 30%;
}
#login-screen .card{
  border-radius:0; border:none; border-top:5px solid var(--accent); background:#fff; padding:40px 36px !important;
  box-shadow:0 30px 80px rgba(0,0,0,.5);
}
#login-screen .card img{ height:104px; margin:0 auto 22px; filter:none; }
#login-screen .card h2{ font-size:22px; font-weight:900; text-transform:uppercase; letter-spacing:.12em; font-family:var(--font-body); margin-bottom:6px; }
#login-screen .card .hint{ font-size:12px; letter-spacing:.02em; }
#login-screen .card .btn-outline{ text-align:center; }
.login-foot{ margin-top:22px; padding-top:14px; border-top:1px solid var(--line); font-size:9.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); text-align:center; }

/* ---------- generated reports (on-screen preview + print window) ---------- */
body.report-print-body{ -webkit-print-color-adjust:exact; print-color-adjust:exact; background:#fff; }
.report-print-body, .modal{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }

.report-letterhead{
  position:relative; display:flex; align-items:center; gap:18px;
  padding:0 0 18px; margin-bottom:30px; border-bottom:4px solid var(--ink);
}
.report-letterhead::after{ content:""; position:absolute; left:0; right:0; bottom:-9px; height:1px; background:var(--accent); }
.report-logo{ height:64px; width:auto; }
.report-company{ font-family:var(--font-display); font-weight:900; font-size:19px; letter-spacing:.07em; text-transform:uppercase; line-height:1.1; }
.report-letterhead .report-eyebrow{ margin:5px 0 0; font-size:10px; font-weight:800; letter-spacing:.26em; color:var(--accent); }
.report-letterhead-right{ margin-left:auto; text-align:right; }
.report-doc-kind{ font-family:var(--font-display); font-weight:800; font-size:15px; letter-spacing:.02em; line-height:1.2; }
.report-doc-conf{ margin-top:5px; font-size:9px; font-weight:800; letter-spacing:.24em; text-transform:uppercase; color:#fff; background:var(--accent); display:inline-block; padding:3px 8px; }

.report-head{ text-align:left; margin-bottom:20px; }
.report-head h1{ font-family:var(--font-display); font-weight:900; font-size:30px; line-height:1.12; letter-spacing:-.01em; }
.report-head h1.report-title-long{ font-size:21px; }
.report-eyebrow{ color:var(--accent); font-weight:800; letter-spacing:.22em; }
.report-meta{ margin-top:8px; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; font-weight:600; color:var(--muted); }
.report-narrative{
  border-left:5px solid var(--accent); background:var(--surface-2); padding:16px 20px; font-size:13.5px; line-height:1.65;
  border-radius:0; margin:0 0 28px; text-align:left; max-width:none;
}

.report-stats{ gap:0; border:1px solid var(--ink); }
.report-stat{
  border-radius:0; box-shadow:none; background:#fff; text-align:left; padding:16px 14px 14px;
  border:none; border-top:5px solid var(--line); border-right:1px solid var(--line);
}
.report-stat:last-child{ border-right:none; }
.report-stat-num{ font-family:var(--font-display); font-weight:900; font-size:30px; line-height:1; }
.report-stat-label{ letter-spacing:.16em; font-weight:800; margin-top:9px; font-size:9.5px; }
.report-stat-total{ border-top-color:var(--ink); }

.report-section-title{
  font-family:var(--font-body); font-size:11.5px; font-weight:800; text-transform:uppercase; letter-spacing:.22em;
  border-bottom:2px solid var(--ink); padding:0 0 8px; margin:30px 0 14px; position:relative;
}
.report-section-title::before{ content:""; display:inline-block; width:10px; height:10px; background:var(--accent); margin-right:10px; }
.report-charts{ border-radius:0; background:#fff; border:1px solid var(--line); border-top:3px solid var(--ink); }

.report-table{ font-size:12.5px; border:1px solid var(--ink); }
.report-table th{
  background:var(--ink); color:#fff; border-bottom:none; padding:10px 12px; font-size:9.5px; letter-spacing:.16em; font-weight:800;
}
.report-table td{ padding:10px 12px; border-bottom:1px solid var(--line); }
.report-table tbody tr:nth-child(even):not(.report-table-totals){ background:#f7f5f2; }
.report-table-name{ font-weight:700; }
.report-table-totals{ border-top:2px solid var(--ink); background:var(--accent-tint) !important; font-weight:800; }

.report-building-page{ border-top:none; }
.report-building-head{ text-align:left; }
.report-building-eyebrow{ color:var(--accent); font-weight:800; letter-spacing:.24em; }
.report-building-title{ font-family:var(--font-display); font-weight:900; text-align:left; }
.report-building-title::after{ margin:14px 0 0; border-radius:0; width:84px; height:4px; background:var(--accent); }

.report-booked-group-label{ letter-spacing:.18em; font-weight:800; color:var(--ink); border-bottom:1px solid var(--line); padding-bottom:5px; }
.report-booked-chip{ border-radius:0; background:#fff; border:1px solid var(--ink); font-weight:700; }

.report-footer{
  margin-top:34px; padding-top:12px; border-top:2px solid var(--ink); position:relative;
  text-align:left; font-size:9.5px; letter-spacing:.2em; text-transform:uppercase; font-weight:700; color:var(--muted);
}
.report-footer::before{ content:""; position:absolute; left:0; top:-5px; width:84px; height:4px; background:var(--accent); }

@media print{
  @page{ margin:14mm 13mm; }
  .report-table th, .report-doc-conf, .cal-dow, .units-table th{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}
/* the single-sheet rental quotation keeps its own tight sizing */
.quote-print-body .report-logo{ height:40px; }
.quote-print-body .report-letterhead{ border-bottom-width:3px; }
.quote-print-body .report-company{ font-size:14px; }
.quote-print-body .report-stat-num{ font-size:15px; }
.quote-print-body .report-stat{ padding:7px 6px 6px; }
.quote-print-body .report-head h1{ font-size:19px; }

/* ---------- dept / office portal shells ---------- */
.dept-empty{
  border:1px dashed var(--ink); background:#fff; padding:56px 30px; text-align:center;
}
.dept-empty h3{ font-family:var(--font-display); font-weight:800; font-size:22px; margin-bottom:8px; }
.dept-empty p{ max-width:460px; margin:0 auto; color:var(--muted); }
.dept-welcome{ margin:0 0 26px; }
.dept-welcome .eyebrow{ display:block; margin-bottom:8px; }
.acct-group-title{
  font-size:11px; font-weight:800; letter-spacing:.22em; text-transform:uppercase; margin:32px 0 12px;
  padding-bottom:8px; border-bottom:2px solid var(--ink);
}
.acct-group-title:first-of-type{ margin-top:6px; }
.acct-row{
  display:grid; grid-template-columns:minmax(180px,1fr) minmax(300px,2fr); gap:14px; align-items:center;
  padding:14px 16px; background:#fff; border:1px solid var(--line); border-left:5px solid var(--ink); margin-bottom:8px;
}
.acct-row.saved{ border-left-color:var(--success); }
.acct-name{ font-weight:800; font-size:14px; }
.acct-email{ font-size:12px; color:var(--muted); margin-top:2px; word-break:break-all; }
.acct-form{ display:flex; gap:8px; align-items:center; }
.acct-form input{ flex:1; min-width:0; padding:10px 12px; }
.acct-msg{ grid-column:1 / -1; font-size:12px; min-height:0; }
.acct-msg.err{ color:var(--danger); }
.acct-msg.ok{ color:var(--success); font-weight:700; }
@media (max-width:760px){
  .acct-row{ grid-template-columns:1fr; }
  .acct-form{ grid-column:1; flex-wrap:wrap; }
}

/* ---------- La Perla: a second company, its own face ----------
   Pearl ivory + midnight navy + champagne; Georgia wordmark,
   Georgia body, hairline rules instead of Icon Casa's heavy blocks. */
body.theme-laperla, html.theme-laperla{
  --ink:#0d1b2a; --ink-soft:#26364a; --muted:#6a7482;
  --paper:#f7f4ee; --surface:#ffffff; --surface-2:#f1ece2;
  --line:#ddd5c4; --line-soft:#ebe5d8;
  --accent:#a8884f; --accent-ink:#7c6030; --accent-tint:#f1e8d3;
  --font-display: Georgia, 'Times New Roman', Times, serif;
  --font-body: Georgia, 'Times New Roman', Times, serif;
}
body.theme-laperla h1, body.theme-laperla h2, body.theme-laperla h3{ font-family:var(--font-display); font-weight:600; }
body.theme-laperla .admin-nav{ background:#0d1b2a; }
body.theme-laperla .admin-nav a.active{ background:rgba(168,136,79,.22); border-left-color:var(--accent); color:#fff; }
body.theme-laperla .admin-nav .brand{ border-bottom-color:rgba(168,136,79,.4); }
body.theme-laperla .admin-nav .brand-name{ font-family:var(--font-display); font-style:normal; font-weight:600; font-size:23px; text-transform:none; letter-spacing:.02em; }
body.theme-laperla .admin-topline{ border-bottom:1px solid var(--accent); }
body.theme-laperla .admin-topline::after{ background:var(--accent); height:1px; bottom:-1px; }
body.theme-laperla .admin-topline h2{ font-weight:600; font-style:normal; font-size:clamp(28px,3.4vw,40px); }
body.theme-laperla .card{ border-top:1px solid var(--accent); }
body.theme-laperla .btn{ letter-spacing:.2em; font-weight:500; }
body.theme-laperla .btn-primary{ background:#0d1b2a; border-color:#0d1b2a; }
body.theme-laperla .btn-primary:hover{ background:var(--accent); border-color:var(--accent); }
body.theme-laperla .dept-empty{ border:1px solid var(--accent); }
body.theme-laperla .dept-empty h3{ font-style:normal; font-weight:600; font-size:28px; }
body.theme-laperla #login-screen{
  background-color:#0d1b2a;
  background-image:linear-gradient(115deg, rgba(13,27,42,.96) 0%, rgba(13,27,42,.86) 60%, rgba(168,136,79,.35) 100%), url('../assets/login-bg.jpg');
}
body.theme-laperla #login-screen .card{ border-top:1px solid var(--accent); }
body.theme-laperla #login-screen .card h2{ font-family:var(--font-display); font-style:normal; text-transform:none; letter-spacing:.02em; font-size:34px; font-weight:600; }
.lp-wordmark{ font-family:Georgia, 'Times New Roman', serif; font-style:normal; font-weight:400; text-transform:uppercase; letter-spacing:.2em; font-size:40px; line-height:1; color:#0d1b2a; margin:0 0 4px; }
.lp-wordmark-sub{ font-family:Georgia, 'Times New Roman', serif; font-size:10px; letter-spacing:.42em; text-transform:uppercase; color:#a8884f; margin-bottom:26px; display:block; }
.admin-nav .lp-wordmark{ color:#fff; font-size:34px; }
.admin-nav .lp-wordmark-sub{ margin-bottom:6px; color:#c9ab72; }

/* two-column shells (nav + main, no notifications rail) */
@media (min-width:761px){
  .admin-shell.two-col{ grid-template-columns:240px 1fr; }
}


/* =====================================================================
   LUXURY REFINEMENT — lighter, airier, less stiff.
   Display type drops from heavy to a fine Georgia at
   regular/medium weight; labels use light tracked caps at medium weight;
   hard 2–5px rules become hairlines with a single brown accent.
   ===================================================================== */
body{ font-weight:400; }
h1,h2,h3,h4{ font-weight:500; letter-spacing:0; }
h3{ font-weight:500; font-size:20px; }
.eyebrow{ font-weight:500; letter-spacing:.28em; }

.btn{ font-weight:500; letter-spacing:.2em; font-size:10.5px; border-width:1px; padding:14px 26px; }
.btn-sm{ padding:10px 16px; font-size:10px; }
label{ font-weight:500; letter-spacing:.2em; font-size:10px; color:var(--muted); }
input[type=text], input[type=tel], input[type=number], input[type=date],
input[type=password], input[type=email], select, textarea{ border:1px solid var(--line); border-bottom:1px solid var(--ink); }
.pill{ font-weight:600; letter-spacing:.14em; font-size:9.5px; }

.card{ border-top:1px solid var(--ink); border-color:var(--line); border-top-color:var(--ink); }
.tabs{ border-bottom:1px solid var(--line); }
.tabs button{ font-weight:500; letter-spacing:.2em; border-bottom-width:2px; margin-bottom:-1px; }
.tabs button.active{ font-weight:600; }

/* nav */
.admin-nav a{ font-weight:500; letter-spacing:.22em; font-size:10.5px; padding:14px 16px; }
.admin-nav a.active{ font-weight:500; }
.admin-nav .nav-home-btn, .admin-nav .btn{ font-weight:500; }
.admin-topline{ border-bottom:1px solid var(--line); padding-bottom:20px; }
.admin-topline h2{ font-weight:500; font-size:clamp(28px,3.4vw,40px); letter-spacing:-.005em; }
.admin-topline::after{ height:2px; bottom:-1px; width:72px; }

/* stat tiles — "where the occupancy and these stuff" */
.occ-stat{ border-top-width:2px; padding:22px 22px 20px; }
.occ-stat-num{ font-weight:400; font-size:44px; letter-spacing:-.01em; }
.occ-stat-label{ font-weight:500; letter-spacing:.24em; font-size:10px; margin-top:12px; }
.dash-qa-btn{ font-weight:500; letter-spacing:.18em; font-size:10px; border-color:var(--line); }
.dash-qa-btn:hover{ border-color:var(--ink); }
.dash-urgent{ border-left-width:3px; }

/* calendar & lists */
.cal-dow{ font-weight:500; letter-spacing:.24em; font-size:10px; padding:11px 0; }
.cal-cell .dnum{ font-weight:400; font-size:17px; }
.cal-cell.today{ box-shadow:inset 0 0 0 1px var(--accent); }
.booking-row{ border-left-width:3px; }
.booking-time{ font-weight:500; }
.units-table th{ font-weight:500; letter-spacing:.2em; font-size:10px; }
.units-table-wrap{ border-color:var(--line); }
.notif-rail{ border-left-color:var(--line); }
.notif-rail-head{ border-bottom:1px solid var(--line); }
.notif-rail-head strong{ font-weight:500; letter-spacing:.24em; }
.notif-row .nr-label{ font-weight:600; }
.modal{ border-top-width:2px; }
.modal h2, .modal h3{ font-weight:500; }
.toast{ border-left-width:2px; font-weight:500; }

/* login */
#login-screen .card{ border-top-width:2px; }
#login-screen .card h2{ font-family:var(--font-display); font-weight:500; text-transform:none; letter-spacing:0; font-size:28px; }
.login-foot{ font-weight:500; }

/* department shells */
.dept-empty{ border-style:solid; border-color:var(--line); }
.dept-empty h3{ font-weight:500; }
.acct-group-title{ font-weight:500; letter-spacing:.28em; border-bottom:1px solid var(--line); }
.acct-row{ border-left-width:3px; }
.acct-name{ font-weight:600; }

/* reports */
.report-letterhead{ border-bottom-width:1px; padding-bottom:20px; }
.report-letterhead::after{ bottom:-5px; height:2px; width:84px; right:auto; }
.report-company{ font-weight:500; letter-spacing:.14em; font-size:18px; }
.report-letterhead .report-eyebrow{ font-weight:500; letter-spacing:.3em; }
.report-doc-conf{ font-weight:500; letter-spacing:.28em; }
.report-head h1{ font-weight:500; font-size:34px; }
.report-head h1.report-title-long{ font-size:23px; }
.report-meta{ font-weight:500; letter-spacing:.14em; }
.report-narrative{ border-left-width:2px; font-weight:400; }
.report-stats{ border-color:var(--line); }
.report-stat{ border-top-width:3px; }
.report-stat-num{ font-weight:400; font-size:34px; }
.report-stat-label{ font-weight:500; letter-spacing:.22em; }
.report-section-title{ font-weight:500; letter-spacing:.28em; border-bottom:1px solid var(--line); }
.report-section-title::before{ width:7px; height:7px; }
.report-charts{ border-top-width:1px; border-top-color:var(--ink); }
.report-table{ border-color:var(--line); }
.report-table th{ font-weight:500; letter-spacing:.2em; }
.report-table-name{ font-weight:600; }
.report-table-totals{ border-top-width:1px; font-weight:600; }
.report-building-eyebrow{ font-weight:500; letter-spacing:.3em; }
.report-building-title{ font-weight:500; }
.report-building-title::after{ height:2px; }
.report-booked-group-label{ font-weight:500; letter-spacing:.24em; }
.report-booked-chip{ border-color:var(--line); font-weight:500; }
.report-footer{ border-top-width:1px; font-weight:500; letter-spacing:.26em; }
.report-footer::before{ height:2px; top:-2px; }
.quote-print-body .report-company{ font-size:14px; }

/* La Perla keeps its own champagne palette */
body.theme-laperla .admin-topline h2{ font-weight:500; }

/* =====================================================================
   Department requests (Ejari / AC & DEWA / Parking & Access / Move / Maintenance)
   ===================================================================== */
.occ-stat-alert{ border-top-color:var(--danger); background:var(--danger-tint); }
.occ-stat-alert .occ-stat-num{ color:var(--danger); }

.req-page-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:22px; }
.req-page-sub{ margin:8px 0 0; font-size:12.5px; color:var(--muted); max-width:520px; }
.req-form-host{ margin-bottom:22px; }
.req-form .field label.req::after{ content:" *"; color:var(--danger); }
.req-msg{ min-height:16px; }
.req-msg.err{ color:var(--danger); font-weight:600; }

.req-list{ display:flex; flex-direction:column; gap:10px; }
.req-row{ background:#fff; border:1px solid var(--line); border-left:3px solid var(--ink); }
.req-row.closed{ border-left-color:var(--line); }
.req-row.closed .req-title{ color:var(--muted); }
.req-head{
  display:grid; grid-template-columns:minmax(0,1fr) 190px 150px; gap:20px; align-items:center;
  padding:16px 20px; cursor:pointer;
}
.req-head:hover{ background:var(--accent-tint); }
.req-top{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:6px; }
.req-ref{ font-family:var(--font-display); font-size:15px; font-weight:500; letter-spacing:.04em; }
.req-type{ font-size:10px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--accent); }
.req-title{ font-weight:600; font-size:14.5px; }
.req-sub{ font-size:12.5px; color:var(--muted); margin-top:2px; word-break:break-all; }
.req-col-label{ font-size:9.5px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--muted); margin-bottom:5px; }
.req-col-val{ font-size:13px; font-weight:500; }
.req-times, .req-elapsed{ border-left:1px solid var(--line); padding-left:20px; }
.req-elapsed-num{ font-family:var(--font-display); font-size:26px; font-weight:400; line-height:1.1; }
.req-el-days{ font-family:var(--font-body); font-size:11px; color:var(--muted); letter-spacing:.02em; }

/* 72 hours with no status change — the whole request turns red */
.req-row.overdue{ background:var(--danger-tint); border-color:var(--danger); border-left:5px solid var(--danger); }
.req-row.overdue .req-head:hover{ background:#f0cfcb; }
.req-row.overdue .req-ref, .req-row.overdue .req-title, .req-row.overdue .req-elapsed-num{ color:var(--danger); }
.req-row.overdue .req-times, .req-row.overdue .req-elapsed{ border-left-color:rgba(163,48,43,.35); }
.req-overdue-tag{ background:var(--danger); color:#fff; }

.req-detail{ border-top:1px solid var(--line); padding:18px 20px 20px; background:rgba(255,255,255,.7); }
.req-row.overdue .req-detail{ border-top-color:rgba(163,48,43,.35); }
.req-kvs{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:14px 24px; margin-bottom:16px; }
.req-kv span, .req-notes span, .req-log-title{ display:block; font-size:9.5px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--muted); margin-bottom:3px; }
.req-kv strong{ font-weight:600; font-size:13.5px; word-break:break-word; }
.req-notes{ margin-bottom:16px; }
.req-notes p{ margin:0; white-space:pre-wrap; color:var(--ink); }
.req-log{ margin-bottom:16px; }
.req-log-row{ display:flex; gap:16px; padding:7px 0; border-bottom:1px solid var(--line-soft); font-size:13px; }
.req-log-when{ flex:0 0 160px; color:var(--muted); font-size:12px; }
.req-actions{ border-top:1px solid var(--line); padding-top:14px; }
.req-btns{ display:flex; gap:10px; flex-wrap:wrap; margin-top:10px; }

.req-type-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:12px; margin-bottom:8px; }
.req-type-tile{
  text-align:left; background:#fff; border:1px solid var(--line); border-top:1px solid var(--ink); padding:16px 18px; cursor:pointer;
  display:flex; flex-direction:column; gap:8px; font:inherit; color:inherit;
}
.req-type-tile:hover{ background:var(--accent-tint); }
.req-type-tile.alert{ border-color:var(--danger); border-top-color:var(--danger); background:var(--danger-tint); }
.req-type-name{ font-family:var(--font-display); font-size:16px; font-weight:500; }
.req-type-count{ font-size:12px; color:var(--muted); }
.req-type-count strong{ color:var(--ink); font-size:15px; }
.req-type-count em{ color:var(--danger); font-style:normal; font-weight:600; }
.req-attn-title{ color:var(--danger); border-bottom-color:var(--danger); }

@media (max-width:760px){
  .req-head{ grid-template-columns:1fr 1fr; gap:12px 16px; }
  .req-main{ grid-column:1 / -1; }
  .req-times{ border-left:none; padding-left:0; }
  .req-elapsed{ border-left:none; padding-left:0; }
  .req-log-row{ flex-direction:column; gap:2px; }
}

/* request-page polish */
input[type=time]{ width:100%; padding:12px 14px; border:1px solid var(--line); border-bottom:1px solid var(--ink); border-radius:0; background:#fff; outline:none; }
input[type=time]:focus{ outline:2px solid var(--accent-tint); border-color:var(--accent); }
#view-dashboard .acct-group-title{ margin-top:32px; }
.admin-main{ min-width:0; }
@media (min-width:761px){
  .admin-shell:not(.two-col){ grid-template-columns:240px minmax(0,1fr) 300px; }
}
.notif-rail-head{ flex-wrap:wrap; padding:22px 14px 14px; }
.notif-rail-head strong{ letter-spacing:.16em; }
.notif-rail-actions .btn{ padding:8px 8px; letter-spacing:.14em; }

/* ---- Facility acknowledgement / damages ---- */
.req-damage{ margin:0 0 16px; padding:12px 14px; border:1px solid var(--danger); border-left-width:3px; background:var(--danger-tint); }
.req-damage span{ display:block; font-size:9.5px; font-weight:600; letter-spacing:.18em; text-transform:uppercase; color:var(--danger); margin-bottom:5px; }
.req-damage p{ margin:0; white-space:pre-wrap; color:var(--ink); }
.req-damage-tag{ background:var(--danger); color:#fff; }
.req-part-note{ margin:0 0 10px; font-size:13px; color:var(--muted); line-height:1.5; }
.req-part-note strong{ color:var(--ink); font-weight:500; }
.req-damage-form{ margin-top:14px; padding-top:14px; border-top:1px solid var(--line); }
.req-damage-form textarea{ width:100%; margin-bottom:10px; }

/* ---- Frozen menu column on every staff page (desktop + mobile) ---- */
.admin-shell{ overflow-x:clip; }
.admin-nav{ position:sticky; top:0; align-self:start; height:100vh; overflow-y:auto; scrollbar-width:none; }
.admin-nav::-webkit-scrollbar{ display:none; }

/* ---- Attachments: Ejari checklist, Facility report, file list ---- */
.req-docs{ margin:14px 0 6px; padding:14px 16px; border:1px solid var(--line); background:var(--surface-2, #faf8f4); }
.req-docs-title{ font-size:10px; font-weight:600; letter-spacing:.2em; text-transform:uppercase; color:var(--ink); margin-bottom:8px; }
.req-docs-title .hint{ text-transform:none; letter-spacing:0; font-weight:400; }
.req-doc{ display:grid; grid-template-columns:22px minmax(120px,200px) 1fr; align-items:center; gap:10px; padding:7px 0; border-top:1px solid var(--line); }
.req-doc:first-of-type{ border-top:none; }
.req-doc-tick{ font-size:17px; line-height:1; color:var(--ink); }
.req-doc-label{ font-size:13.5px; }
.req-doc input[type=file]{ font-size:12.5px; max-width:100%; min-width:0; }
.req-choice{ display:flex; flex-direction:column; gap:6px; margin:0 0 10px; }
.req-choice label{ display:flex; align-items:center; gap:8px; font-size:13.5px; cursor:pointer; }
.req-photo-label{ display:block; margin-bottom:4px; }
.req-report-files{ max-width:100%; font-size:12.5px; }
.req-report-ok{ margin:0 0 16px; padding:12px 14px; border:1px solid var(--success); border-left-width:3px; background:var(--success-tint, #eef6f0); }
.req-report-ok span{ display:block; font-size:9.5px; font-weight:600; letter-spacing:.18em; text-transform:uppercase; color:var(--success); margin-bottom:5px; }
.req-report-ok p{ margin:0; white-space:pre-wrap; }
.req-files{ margin:0 0 16px; }
.req-file{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 0; border-top:1px solid var(--line); }
.req-file > div{ min-width:0; }
.req-file-title{ display:block; font-size:13.5px; font-weight:500; }
.req-file-name{ display:block; font-size:12px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
@media (max-width:760px){
  .req-doc{ grid-template-columns:22px 1fr; }
  .req-doc input[type=file]{ grid-column:1 / -1; }
}
.req-choice label{ text-transform:none; letter-spacing:0; font-weight:400; font-size:13.5px; color:var(--ink); margin:0; }
.req-choice input{ width:auto; margin:0; }
.req-photo-label .hint{ text-transform:none; letter-spacing:0; font-weight:400; }

/* =====================================================================
   GEORGIA TYPOGRAPHY + PRESENTATION SPACING (staff portals)
   One serif everywhere; no italics; generous, even spacing.
   ===================================================================== */
html{ -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
body, input, select, textarea, button, table{ font-family:Georgia, 'Times New Roman', Times, serif; }
body{ font-size:15px; line-height:1.6; letter-spacing:.003em; }
em, i, cite{ font-style:normal; }
strong, b{ font-weight:700; }
h1,h2,h3,h4{ font-weight:400; line-height:1.2; letter-spacing:0; }
h3{ font-size:21px; }
b.num, .occ-stat-num, .req-elapsed-num, .report-stat-num{ font-family:Palatino, 'Palatino Linotype', 'Book Antiqua', Georgia, serif; font-variant-numeric:lining-nums; }
.occ-stat-num{ font-size:46px; font-weight:400; }

/* labels: small tracked capitals read cleanly in Georgia */
label, .eyebrow, .req-col-label, .req-kv span, .req-notes span, .req-log-title, .cal-dow,
.occ-stat-label, .acct-group-title, .units-table th, .mv-table th{ font-weight:400; letter-spacing:.2em; }
.btn, .btn-sm, .pill, .tabs button, .admin-nav a, .chip, .dash-qa-btn{ font-family:Georgia, 'Times New Roman', serif; font-weight:400; }
.btn{ letter-spacing:.18em; padding:15px 28px; }
.btn-sm{ padding:10px 18px; }
.pill{ font-weight:700; letter-spacing:.12em; }
.admin-nav a{ font-size:11px; letter-spacing:.2em; padding:15px 18px; }
input[type=text], input[type=tel], input[type=number], input[type=date], input[type=time],
input[type=password], input[type=email], input[type=search], select, textarea{ font-size:15px; padding:12px 14px; }

/* breathing room */
.admin-main{ padding:44px 52px 90px; }
.admin-topline{ margin-bottom:34px; padding-bottom:22px; }
.admin-topline h2{ font-size:clamp(30px,3.4vw,42px); }
.card-pad{ padding:30px; }
.field{ margin-bottom:20px; }
.occ-stats{ gap:18px; margin-bottom:34px; }
.occ-stat{ padding:26px 24px 22px; }
.req-list{ gap:14px; }
.req-head{ padding:20px 22px; }
.req-detail{ padding:24px 24px 26px; }
.acct-group-title{ margin:34px 0 16px; padding-bottom:10px; }
.req-type-grid{ gap:16px; margin-bottom:12px; }
.req-type-tile{ padding:20px 22px; }
.notif-rail-head{ padding:24px 20px 18px; }
.notif-row{ padding:16px 20px; }
.modal{ padding:32px 34px; }
@media (max-width:760px){
  .admin-main{ padding:22px 16px 70px; }
  .admin-topline{ margin-bottom:22px; }
  .card-pad{ padding:22px 18px; }
  .req-head{ padding:16px; }
}

/* La Perla wordmark: upright, spaced capitals */
body.theme-laperla .admin-nav .brand-name{ font-style:normal; letter-spacing:.2em; text-transform:uppercase; font-size:16px; }
body.theme-laperla .admin-topline h2, body.theme-laperla .dept-empty h3, body.theme-laperla #login-screen .card h2{ font-style:normal; font-weight:400; }
.lp-wordmark{ font-size:36px; }
.admin-nav .lp-wordmark{ font-size:26px; letter-spacing:.22em; }
#login-screen .card .lp-wordmark{ font-size:34px; margin-bottom:6px; }

/* ---- Units / move records / upcoming move-outs / calendar ---- */
.chip-row{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 14px; }
.chip{ border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); padding:9px 16px; font-size:10.5px; letter-spacing:.16em; text-transform:uppercase; cursor:pointer; }
.chip:hover{ border-color:var(--ink); }
.chip.active{ background:var(--ink); border-color:var(--ink); color:var(--paper); }
body.theme-laperla .chip.active{ background:#0d1b2a; }
.mv-bar{ margin-bottom:8px; }
.mv-search{ width:100%; max-width:420px; margin:2px 0 6px; }
.mv-count{ margin:0 0 12px; }
.mv-table{ width:100%; border-collapse:collapse; font-size:14px; }
.mv-table th{ text-align:left; font-size:9.5px; text-transform:uppercase; padding:14px 16px; border-bottom:1px solid var(--ink); background:var(--surface); white-space:nowrap; position:sticky; top:0; }
.mv-table td{ padding:13px 16px; border-bottom:1px solid var(--line-soft, var(--line)); vertical-align:middle; }
.mv-table tbody tr:hover{ background:var(--accent-tint); }
.mv-soon{ color:var(--danger); font-weight:700; }
.units-table-wrap{ overflow-x:auto; max-height:70vh; overflow-y:auto; }
.mv-upcoming{ margin:6px 0 26px; }
.mv-up-row{ display:grid; grid-template-columns:150px 1fr; gap:18px; padding:14px 18px; border:1px solid var(--line); border-left:3px solid var(--accent); background:var(--surface); margin-bottom:10px; }
.mv-up-row.soon{ border-left-color:var(--danger); }
.mv-up-day{ display:flex; flex-direction:column; gap:3px; }
.mv-up-day span{ font-size:12px; color:var(--muted); }
.mv-none{ padding:16px 18px; border:1px dashed var(--line); color:var(--muted); background:var(--surface); }
.mv-legend{ display:flex; gap:22px; margin:0 0 14px; font-size:12px; color:var(--muted); }
.mv-dot{ display:inline-block; width:9px; height:9px; margin-right:7px; vertical-align:middle; }
.mv-in{ --mvc:#2f6b4f; } .mv-out{ --mvc:#a8602a; } .mv-view{ --mvc:#3c5a99; } .mv-ac{ --mvc:#7a3b8f; }
.mv-dot.mv-in, .mv-dot.mv-out, .mv-dot.mv-view, .mv-dot.mv-ac{ background:var(--mvc); }
.cal-cell-line.mv-line{ border-left:3px solid var(--mvc); padding-left:6px; }
.cal-cell.sel{ border-color:var(--ink); }
.mv-tag{ display:inline-block; padding:2px 8px; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:#fff; background:var(--mvc); width:fit-content; }
.mv-day-detail{ margin-top:26px; }
@media (max-width:760px){
  .mv-up-row{ grid-template-columns:1fr; gap:6px; }
  .mv-table th, .mv-table td{ padding:11px 12px; }
}
.mv-table{ font-size:13.5px; }
.mv-table th{ padding:13px 12px; letter-spacing:.14em; }
.mv-table td{ padding:12px; }
.mv-table td[data-h="Unit"], .mv-table td[data-h="Building"], .mv-table td[data-h="Type"], .mv-table td[data-h="Move-in"], .mv-table td[data-h="Move-out"], .mv-table td[data-h="Parking"], .mv-table td[data-h="Status"]{ white-space:nowrap; }

/* Move-in / Move-out: tags readable, Edit button always reachable */
.mv-up-day span.mv-tag{ color:#fff; }
.mv-table td[data-h="Email"]{ max-width:190px; overflow-wrap:anywhere; }
.mv-table th:last-child, .mv-table td[data-h=""]{ position:sticky; right:0; background:var(--surface); box-shadow:-8px 0 8px -8px rgba(0,0,0,.12); }
.mv-table tbody tr:hover td[data-h=""]{ background:var(--accent-tint); }
.mv-day-block{ margin-bottom:18px; }
.mv-table td[data-h="Email"]{ min-width:170px; max-width:240px; font-size:12.5px; }
.mv-table td[data-h="Tenant"]{ min-width:110px; }

/* Community notices + tenant email */
.notice-form, .tm-form{ margin:0 0 30px; display:flex; flex-direction:column; gap:12px; max-width:760px; }
.notice-form input[type=text], .notice-form textarea, .tm-form input[type=text], .tm-form textarea{ width:100%; padding:14px 16px; border:1px solid var(--line); background:var(--surface); font:inherit; color:var(--ink); border-radius:0; }
.notice-form textarea, .tm-form textarea{ line-height:1.65; resize:vertical; }
.notice-list, .notice-dash{ max-width:820px; margin-bottom:28px; }
.notice-card{ border:1px solid var(--line); border-left:3px solid var(--accent); background:var(--surface); padding:20px 24px; margin-bottom:14px; }
.notice-head{ display:flex; flex-direction:column; gap:4px; margin-bottom:12px; }
.notice-head h4{ margin:0; font-size:19px; font-weight:400; }
.notice-body{ white-space:pre-wrap; line-height:1.75; font-size:14.5px; margin-bottom:16px; }
.notice-actions{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.tm-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.tm-list{ margin:18px 0 26px; max-width:900px; }
.tm-scroll{ max-height:340px; overflow-y:auto; border:1px solid var(--line); background:var(--surface); }
.tm-row{ display:grid; grid-template-columns:22px 1.3fr 1fr 1.4fr; gap:14px; align-items:center; padding:11px 16px; border-bottom:1px solid var(--line-soft, var(--line)); cursor:pointer; font-size:13.5px; }
.tm-row:hover{ background:var(--accent-tint); }
@media(max-width:720px){ .tm-row{ grid-template-columns:22px 1fr; } .tm-row span:nth-child(n+3){ grid-column:2; } }

/* =====================================================================
   COZY LAYER — warmer paper, soft cards, gentle shadows, icons, welcome
   banner. Last in the file on purpose; it only softens, never restructures.
   ===================================================================== */
:root[data-theme="light"]{
  --paper:#f6f0e6; --surface:#fffdf9; --surface-2:#f1e9dc;
  --line:#e4d9c8; --line-soft:#eee5d6; --accent-tint:#f1e4d3;
  --cozy-shadow:0 1px 2px rgba(74,44,27,.06), 0 10px 26px -14px rgba(74,44,27,.22);
  --cozy-shadow-hover:0 2px 4px rgba(74,44,27,.08), 0 16px 32px -14px rgba(74,44,27,.3);
  --radius-sm:3px; --radius-md:4px; --radius-lg:6px;
}
body{ background:var(--paper); }
.admin-main{
  background:
    radial-gradient(900px 340px at 8% -4%, rgba(216,180,143,.28), transparent 70%),
    var(--paper);
  padding:38px 44px 80px;
}
.admin-main > section{ max-width:1080px; }

/* sidebar */
.admin-nav{ background:linear-gradient(180deg,#1a130f 0%, #120d0a 100%); padding:30px 14px; gap:3px; }
.admin-nav a{
  display:flex; align-items:center; gap:13px; border-radius:3px; padding:12px 14px; font-weight:400; letter-spacing:.14em; font-size:11px;
  border-left:3px solid transparent; transition:background .18s, color .18s;
}
.admin-nav a .nav-ico{ width:17px; height:17px; flex:none; opacity:.78; }
.admin-nav a:hover .nav-ico, .admin-nav a.active .nav-ico{ opacity:1; }
.admin-nav a.active{ background:rgba(216,180,143,.16); color:#fff; border-left-color:#d8b48f; }
.admin-nav a.active .nav-ico{ color:#e6c9a6; }
@media (max-width:760px){
  .admin-nav a{ flex-direction:column; gap:5px; padding:10px 2px; text-align:center; }
  .admin-nav a .nav-ico{ width:18px; height:18px; }
  .admin-main{ padding:26px 18px 60px; }
}

/* page title */
.admin-topline{ border-bottom:1px solid var(--line); padding-bottom:18px; margin-bottom:30px; }
.admin-topline h2{ font-weight:400; font-size:clamp(26px,3vw,36px); letter-spacing:.005em; }
.admin-topline::after{ height:3px; width:64px; bottom:-2px; background:#c49a6c; }

/* welcome banner */
.welcome{
  display:flex; align-items:flex-end; justify-content:space-between; gap:18px; flex-wrap:wrap;
  padding:26px 30px; margin:0 0 26px; border:1px solid var(--line); border-radius:var(--radius-lg);
  background:linear-gradient(135deg,#fffdf9 0%, #f8efe1 100%); box-shadow:var(--cozy-shadow);
  position:relative; overflow:hidden;
}
.welcome::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:linear-gradient(#d8b48f,#8a5a36); }
.welcome-hi{ font-size:clamp(24px,3vw,32px); line-height:1.15; color:var(--ink); }
.welcome-sub{ margin-top:6px; color:var(--muted); font-size:14px; font-style:italic; }
.welcome-date{ color:var(--accent); font-size:12px; letter-spacing:.16em; text-transform:uppercase; }
body.theme-laperla .welcome{ background:linear-gradient(135deg,#fffdf9 0%, #f3eadb 100%); }
body.theme-laperla .welcome::before{ background:linear-gradient(#c8a76a,#8a6d34); }

/* cards, tiles and rows: soft surface + shadow */
.card, .occ-stat, .req-type-tile, .notice-card, .mv-up-row, .acct-row, .booking-row, .dash-urgent, .tm-scroll, .notice-form, .tm-form,
.units-table-wrap, .quote-box, .dash-qa-btn{
  background:var(--surface); box-shadow:var(--cozy-shadow); border-radius:var(--radius-md);
}
.card{ border-top:1px solid var(--line); border-top:3px solid #c49a6c; }
.occ-stat{ border:1px solid var(--line); border-top:3px solid #c49a6c; }
.occ-stat-num{ font-weight:400; font-size:40px; color:var(--accent); }
.occ-stat-label{ font-weight:400; color:var(--muted); letter-spacing:.14em; }
.occ-stat-alert .occ-stat-num{ color:var(--danger); }
.req-type-tile, .dash-qa-btn, .notice-card, .booking-row{ transition:box-shadow .18s, transform .18s, border-color .18s; }
.req-type-tile:hover, .dash-qa-btn:hover{ box-shadow:var(--cozy-shadow-hover); transform:translateY(-2px); }
.dash-qa-btn{ border:1px solid var(--line); color:var(--ink); font-weight:400; background:var(--surface); }
.dash-qa-btn:hover{ background:var(--surface); color:var(--accent); border-color:#c49a6c; }
.dash-qa-btn:hover .dash-qa-icon{ color:var(--accent); }
.notice-card, .mv-up-row{ border-color:var(--line); border-left:3px solid #c49a6c; }
.mv-up-row.soon{ border-left-color:var(--danger); }
.booking-row{ border:1px solid var(--line); border-left:4px solid #c49a6c; }
.booking-row:hover{ background:#fbf3e6; border-left-color:var(--accent); }

/* headings inside pages */
.acct-group-title{ font-weight:400; color:var(--accent); letter-spacing:.2em; border-bottom:1px solid var(--line); padding-bottom:10px; margin:30px 0 16px; }
h3, h4{ font-weight:400; }
.notice-head h4{ font-weight:400; font-size:20px; }

/* buttons & chips */
.btn{ border-radius:3px; font-weight:400; letter-spacing:.14em; }
.btn-primary{ background:var(--accent); border-color:var(--accent); }
.btn-primary:hover{ background:#2e1a0f; border-color:#2e1a0f; }
.btn-outline{ border-color:#b8a48c; color:var(--accent); }
.btn-outline:hover{ background:var(--accent); border-color:var(--accent); color:#fff; }
.chip{ border-radius:20px; border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); font-weight:400; letter-spacing:.1em; padding:9px 16px; transition:all .15s; }
.chip:hover{ border-color:#c49a6c; color:var(--accent); }
.chip.active{ background:var(--accent); border-color:var(--accent); color:#fff; }
.chip-count{ display:inline-block; margin-left:7px; padding:1px 8px; border-radius:10px; background:rgba(0,0,0,.08); font-size:10.5px; letter-spacing:0; }
.chip.active .chip-count{ background:rgba(255,255,255,.22); }
.chip-row{ gap:8px; flex-wrap:wrap; margin-bottom:10px; }

/* inputs */
input, select, textarea{ border-radius:3px; border:1px solid #cdbfa9; border-width:1px; background:#fffefb; }
input:focus, select:focus, textarea:focus{ border-color:#c49a6c; outline:3px solid rgba(196,154,108,.25); }
label{ font-weight:400; color:var(--accent); }

/* tables */
.units-table-wrap{ border:1px solid var(--line); }
.units-table th, .mv-table th{ background:#f1e7d6; color:var(--accent); font-weight:400; border-bottom:1px solid #d9c9b0; }
.mv-table th{ position:sticky; top:0; }
.mv-table tbody tr:nth-child(even), .units-table tbody tr:nth-child(even){ background:rgba(241,231,214,.35); }
.mv-table tbody tr:hover, .units-table tbody tr:hover{ background:#f6ead8; }
.mv-table td[data-h=""]{ background:inherit; }

/* calendar */
.cal-dow{ background:#3b2618; font-weight:400; }
.cal-grid{ border-color:var(--line); border-radius:4px; overflow:hidden; box-shadow:var(--cozy-shadow); }
.cal-cell{ background:var(--surface); border-color:var(--line); }
.cal-cell.out{ background:#faf5ec; }
.cal-cell.today{ background:#f8ecd9; box-shadow:inset 0 0 0 2px #c49a6c; }

/* notification rail */
.notif-rail{ background:#fffdf9; border-left:1px solid var(--line); }
.notif-rail-head{ border-bottom:1px solid var(--line); }
.notif-rail-head strong{ font-weight:400; color:var(--accent); }
.notif-row{ border-bottom:1px solid var(--line-soft); }
.notif-row.unread{ background:#fbf0de; }

/* friendly empty states */
.mv-none, .notif-empty, .empty, .dept-empty{
  background:var(--surface); border:1px dashed #cdbfa9; border-radius:var(--radius-md); color:var(--muted);
  padding:28px 24px; text-align:center; font-style:italic;
}
.notif-empty{ margin:20px 16px; }
.dept-empty h3{ font-style:normal; color:var(--accent); }

/* modal */
.modal{ border-radius:6px !important; border-top:4px solid #c49a6c; box-shadow:0 30px 70px -20px rgba(40,22,10,.45); }
.toast{ border-radius:4px; background:#2e1a0f; }
.pill{ border-radius:12px; letter-spacing:.08em; font-weight:400; }

/* La Perla keeps its navy/gold identity under the same softness */
body.theme-laperla .admin-nav{ background:linear-gradient(180deg,#112236 0%, #0b1826 100%); }
body.theme-laperla .btn-primary{ background:#0d1b2a; border-color:#0d1b2a; }
body.theme-laperla .btn-primary:hover{ background:#a8884f; border-color:#a8884f; }
body.theme-laperla .btn-outline{ border-color:#c9b78f; color:#0d1b2a; }
body.theme-laperla .btn-outline:hover{ background:#0d1b2a; border-color:#0d1b2a; color:#fff; }
body.theme-laperla .chip.active{ background:#0d1b2a; border-color:#0d1b2a; }
body.theme-laperla .occ-stat-num, body.theme-laperla .acct-group-title, body.theme-laperla label{ color:#0d1b2a; }
body.theme-laperla .card, body.theme-laperla .occ-stat{ border-top-color:#a8884f; }
body.theme-laperla .admin-main{ background:radial-gradient(900px 340px at 8% -4%, rgba(168,136,79,.2), transparent 70%), var(--paper); }
.notice-form, .tm-form{ padding:26px 28px 24px; border:1px solid var(--line); border-top:3px solid #c49a6c; max-width:820px; margin-top:6px; }
.notice-form .acct-group-title, .tm-form .acct-group-title{ margin-top:0; }
.tm-form{ margin-top:26px; }
.tm-list{ margin-top:22px; }
.tm-scroll{ border:1px solid var(--line); }
.tm-note{ line-height:1.6; }
.admin-main > section > .hint:first-child, #view-tenant_mail > .hint{ margin:0 0 18px; line-height:1.7; max-width:760px; }
.chip-count:empty{ display:none; }

/* =====================================================================
   SOFT TYPE — less shouting, more reading. Sentence case, natural spacing,
   a touch more size and air. Keeps Georgia; only relaxes the "stiff" bits.
   ===================================================================== */
body, body.theme-laperla{ font-size:15.5px; line-height:1.65; letter-spacing:0; }
.admin-nav a, body.theme-laperla .admin-nav a{
  text-transform:none; letter-spacing:.01em; font-size:15px; padding:12px 14px;
}
.btn, body.theme-laperla .btn, .dash-qa-btn, .admin-nav .nav-home-btn, .admin-nav .btn,
.admin-nav #share-link-btn, .admin-nav #push-toggle-btn, .admin-nav #logout-btn{
  text-transform:none; letter-spacing:.02em; font-size:14.5px; font-weight:400;
}
.admin-nav .nav-home-btn{ font-size:13.5px; }
.chip{ text-transform:none; letter-spacing:.02em; font-size:14px; }
label{ text-transform:none; letter-spacing:.01em; font-size:13.5px; font-weight:600; color:var(--ink-soft); }
label.req::after{ content:" *"; color:var(--danger); }
.eyebrow{ text-transform:none; letter-spacing:.04em; font-size:13px; font-weight:400; font-style:italic; }
.acct-group-title, body.theme-laperla .acct-group-title{
  text-transform:none; letter-spacing:.01em; font-size:18px; font-weight:400; color:var(--accent); margin:32px 0 16px;
}
.occ-stat-label{ text-transform:none; letter-spacing:.02em; font-size:13.5px; }
.units-table th, .mv-table th{ text-transform:none; letter-spacing:.03em; font-size:13.5px; padding:13px 14px; }
.notif-rail-head strong{ text-transform:none; letter-spacing:.01em; font-size:17px; }
.notif-row .nr-label{ text-transform:none; letter-spacing:.02em; font-size:13px; font-weight:600; }
.notif-row .nr-msg{ font-size:14.5px; }
.tabs button{ text-transform:none; letter-spacing:.02em; font-size:14.5px; }
.cal-dow{ letter-spacing:.1em; font-size:11.5px; }
.welcome-date{ letter-spacing:.06em; text-transform:none; font-size:14px; font-style:italic; }
.welcome-sub{ font-size:15px; }
.pill{ text-transform:none; letter-spacing:.02em; font-size:12.5px; }
.mv-tag{ text-transform:none; letter-spacing:.04em; font-size:12px; }
.admin-topline h2{ letter-spacing:0; }
.hint{ font-size:13.5px; }
input, select, textarea{ font-size:15px; }
.req-type-name{ font-size:16px; }
.occ-stat-num{ font-size:38px; }
.admin-nav a{ transition:background .18s, color .18s, padding-left .18s; }
.admin-nav a:hover{ padding-left:17px; }
.dept-empty h3, .mv-none{ font-size:15.5px; }
.login-foot, #login-screen .hint{ letter-spacing:.02em; text-transform:none; }
#login-screen .card h2, body.theme-laperla #login-screen .card h2{ letter-spacing:0; }
@media (max-width:760px){
  .admin-nav a{ font-size:11px; letter-spacing:0; }
  .admin-nav a:hover{ padding-left:2px; }
  .admin-nav .nav-home-btn, .admin-nav #share-link-btn, .admin-nav #push-toggle-btn, .admin-nav #logout-btn{ font-size:10.5px; }
}
.btn-sm, .notif-rail-actions .btn{ letter-spacing:.02em !important; font-size:13.5px !important; text-transform:none !important; }
.mv-table th:last-child, .mv-table td[data-h=""]{ position:static; box-shadow:none; background:transparent; }
.mv-table{ font-size:14px; }
.mv-table th, .mv-table td{ padding:11px 10px; }
.mv-table td[data-h="Email"]{ min-width:150px; max-width:200px; font-size:12.5px; }
.mv-table td[data-h="Tenant"]{ min-width:90px; }
.mv-table td[data-h="Move-out"], .mv-table td[data-h="Move-in"]{ white-space:nowrap; }
.mv-table .btn-sm{ padding:6px 12px; }
.admin-main{ padding-left:34px; padding-right:34px; }
.mv-table th, .mv-table td{ padding:10px 8px; }
.mv-table td[data-h="Email"]{ min-width:130px; max-width:165px; }
.mv-table td[data-h="Tenant"]{ min-width:80px; }
.mv-table .btn-sm{ padding:5px 10px; font-size:13px !important; }
.mv-table th:last-child{ background:#f1e7d6; }

/* =====================================================================
   FIXED TABLE HEADERS — the column row stays pinned to the top of the
   screen while you scroll any units / move-in / tenants table.
   ===================================================================== */
/* The table scrolls inside its own frame (header row pinned at the top of
   the frame), so wide tables never spill under the side panel. */
.units-table-wrap{ overflow:auto !important; max-height:calc(100vh - 230px) !important; min-height:260px; }
.units-table th, .mv-table th{ position:sticky; top:0; z-index:5; background:#f1e7d6; box-shadow:0 1px 0 #d9c9b0, 0 6px 8px -6px rgba(74,44,27,.25); }
@media (max-width:900px){
  .units-table-wrap{ max-height:78vh !important; }
}
.units-table td, .mv-table td{ padding:10px 12px; white-space:nowrap; }
.units-table th, .mv-table th{ padding:12px 12px; white-space:nowrap; }
.units-table, .mv-table{ font-size:14px; }

/* =====================================================================
   SIGN-IN SCREENS — compact, warm, no wasted space
   ===================================================================== */
#login-screen .card{ border-radius:6px; border-top:3px solid #c49a6c; padding:30px 32px !important; box-shadow:0 26px 60px -18px rgba(0,0,0,.6); background:linear-gradient(180deg,#fffdf9,#f9f1e4); max-width:420px; }
#login-screen .card img{ height:78px; margin:0 auto 14px; }
#login-screen .card h2{ font-size:26px; margin-bottom:4px; }
#login-screen .card .hint{ font-size:14px; font-style:italic; }
#login-screen .card .field{ margin-bottom:12px; }

/* header cell of the last column stays pinned too */
.mv-table th:last-child, .units-table th:last-child{ position:sticky !important; top:0; right:auto; z-index:5; background:#f1e7d6 !important; box-shadow:0 1px 0 #d9c9b0, 0 6px 8px -6px rgba(74,44,27,.25) !important; }

/* ===== Unit status colour coding (as on the original Units page) =====
   The whole row is tinted by status so vacant / hold / booked can be read
   at a glance; the cozy zebra striping no longer paints over it. */
.units-table tbody tr.unit-row.status-vacant{ background:var(--success-tint); }
.units-table tbody tr.unit-row.status-renovation{ background:var(--renovation-tint); }
.units-table tbody tr.unit-row.status-maintenance{ background:var(--maintenance-tint); }
.units-table tbody tr.unit-row.status-hold{ background:var(--warning-tint); }
.units-table tbody tr.unit-row.status-booked{ background:var(--danger-tint); }
.units-table tbody tr.unit-row.status-vacant td:first-child{ box-shadow:inset 4px 0 0 var(--success); }
.units-table tbody tr.unit-row.status-renovation td:first-child{ box-shadow:inset 4px 0 0 var(--renovation); }
.units-table tbody tr.unit-row.status-maintenance td:first-child{ box-shadow:inset 4px 0 0 var(--maintenance); }
.units-table tbody tr.unit-row.status-hold td:first-child{ box-shadow:inset 4px 0 0 var(--warning); }
.units-table tbody tr.unit-row.status-booked td:first-child{ box-shadow:inset 4px 0 0 var(--danger); }
.units-table tbody tr.unit-row:hover{ filter:brightness(.97); }
.units-table tbody tr.unit-row td{ border-bottom:1px solid rgba(74,44,27,.08); }
.units-table .unit-tenant-cell{ font-weight:600; }
.units-table td .mv-edit{ white-space:nowrap; }

/* Office: view-only by default, tap to unlock */
.admin-topline{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.unlock-btn{ display:inline-flex; align-items:center; gap:8px; }
.unlock-dot{ width:9px; height:9px; border-radius:50%; background:var(--warning); display:inline-block; }
.unlock-btn.unlocked{ border-color:var(--danger); color:var(--danger); background:var(--danger-tint); }
.unlock-btn.unlocked .unlock-dot{ background:var(--danger); }
.units-table td .btn-sm, .mv-table td .btn-sm{ padding:4px 12px !important; font-size:13px !important; min-height:0; line-height:1.3; }

/* editable cells inside the units table (Property Manager / Leasing) */
.units-table input.unit-price-input{ width:96px; min-width:0; padding:7px 9px; font-size:14px; border-radius:3px; }
.units-table td:nth-child(n) input.unit-price-input:disabled{ opacity:.75; }
.units-table select.unit-status-select{ width:auto; min-width:150px; padding:7px 30px 7px 14px; font-size:13px; border-radius:999px; border:1px solid transparent; }
.units-table select.unit-type-select, .units-table select.unit-view-select{ width:100%; min-width:132px; padding:7px 26px 7px 10px; font-size:13.5px; }

/* ===== v12 — request approval chain ===== */
.req-steps{ list-style:none; display:flex; flex-wrap:wrap; gap:6px 0; margin:0 0 14px; padding:0; }
.req-step{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--muted); }
.req-step + .req-step::before{ content:""; width:28px; height:2px; background:var(--line, #d9d4c8); margin:0 10px; border-radius:2px; }
.req-step-dot{ width:12px; height:12px; border-radius:50%; border:2px solid var(--line, #cfc8b8); background:transparent; flex:none; }
.req-step.done{ color:var(--ink); }
.req-step.done .req-step-dot{ background:var(--success, #2f7d5b); border-color:var(--success, #2f7d5b); }
.req-step.current{ color:var(--ink); font-weight:600; }
.req-step.current .req-step-dot{ background:var(--gold, #b8924a); border-color:var(--gold, #b8924a); box-shadow:0 0 0 3px rgba(184,146,74,.22); }
.req-step.rejected{ color:var(--danger, #b3402f); font-weight:600; }
.req-step.rejected .req-step-dot{ background:var(--danger, #b3402f); border-color:var(--danger, #b3402f); }
.req-step.done + .req-step::before{ background:var(--success, #2f7d5b); }
.req-with{ white-space:nowrap; }
.req-vacant{ display:flex; gap:10px; align-items:flex-start; margin:0 0 16px; padding:12px 14px; border:1px dashed var(--line); background:var(--surface-2, #faf8f4); font-size:13px; line-height:1.45; cursor:pointer; text-transform:none; letter-spacing:0; }
.req-vacant input{ margin-top:3px; flex:none; width:auto; }
.req-vacant strong{ font-weight:600; }
.req-vacant span{ font-weight:400; } .req-vacant span strong{ font-weight:600; }

.req-disclaimer{ margin:12px 0; padding:11px 14px; border-left:3px solid var(--gold, #b8924a); background:rgba(184,146,74,.1); font-size:13px; line-height:1.5; }
.req-disclaimer strong{ font-weight:600; }
.dis-row.held{ opacity:.9; }
.dis-held{ margin-top:6px; padding:8px 10px; background:rgba(163,48,43,.08); border-left:3px solid var(--danger); font-size:13px; }
.dis-actions{ margin-top:8px; display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.dis-actions textarea{ width:100%; }
.dis-status{ margin-top:6px; font-size:13px; line-height:1.45; }
.dis-status.ok{ padding:8px 10px; background:rgba(47,107,73,.08); border-left:3px solid var(--success); }
.dis-status.wait{ color:var(--muted); }
.dis-acks{ display:flex; flex-wrap:wrap; gap:14px; margin-top:6px; font-size:12px; color:var(--muted); }
.dis-acks .ok{ color:var(--success); font-weight:600; }
.hist-bar{ display:flex; flex-wrap:wrap; gap:12px 18px; align-items:center; justify-content:space-between; margin:0 0 16px; }
.hist-search{ min-width:260px; flex:1 1 260px; max-width:380px; }
.hist-n{ opacity:.6; font-size:.85em; margin-left:4px; }

/* v13 — fee schedule on the 3rd party maintenance form */
.req-fees{ margin:14px 0; padding:12px 14px; border:1px solid var(--line, #e4d9c8); border-radius:10px; background:rgba(184,146,74,.07); font-size:14px; }
.req-fee-line{ display:flex; justify-content:space-between; gap:12px; padding:5px 0; }
.req-fee-line[hidden]{ display:none; }
.req-fee-total{ border-top:1px solid var(--line, #e4d9c8); margin-top:4px; padding-top:8px; font-weight:600; }

.row-3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:14px; }
@media (max-width:640px){ .row-3{ grid-template-columns:1fr; } }
