/* Owner portal — owners.wydahoproperties.com
   Palette mirrors wydahoproperties.com so owners land somewhere familiar. */

:root {
  --navy: #1a2733;
  --navy-light: #243444;
  --rust: #d1432a;
  --rust-hover: #b8371f;
  --sand: #c8a86b;
  --white: #fff;
  --gray-50: #f8f9fa;
  --gray-100: #f1f3f5;
  --gray-200: #e9ecef;
  --gray-300: #dee2e6;
  --gray-500: #adb5bd;
  --gray-600: #868e96;
  --gray-700: #495057;
  --gray-900: #212529;

  --booked: #b8371f;
  --booked-bg: #fdeeeb;
  --block: #2e7d5b;
  --block-bg: #e8f5ef;

  --font-main: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-ui: 'Montserrat', 'Inter', -apple-system, sans-serif;
  --radius: 8px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  font-family: var(--font-main);
  background: var(--gray-50);
  color: var(--gray-900);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

/* ── Header ───────────────────────────────────────────────────────── */

header {
  background: var(--navy);
  color: var(--white);
  padding: 0 20px;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: sticky;
  top: 0;
  z-index: 50;
}
.brand { display: flex; align-items: center; }
.brand img { height: 34px; width: auto; display: block; }
.header-right { display: flex; align-items: center; gap: 14px; font-size: 14px; }
.header-right .who { color: var(--gray-300); }
.linkish {
  background: none; border: none; color: var(--white);
  font: inherit; cursor: pointer; text-decoration: underline;
  text-underline-offset: 3px; padding: 0;
}
.linkish:hover { color: var(--sand); }

main { max-width: 1000px; margin: 0 auto; padding: 24px 20px 64px; }

/* ── Property switcher ────────────────────────────────────────────── */

.prop-bar {
  display: flex; align-items: center; gap: 12px;
  flex-wrap: wrap; margin-bottom: 20px;
}
.prop-bar label {
  font-family: var(--font-ui); font-size: 12px; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase; color: var(--gray-600);
}
select, input[type="text"], input[type="email"], input[type="password"], textarea {
  font-family: var(--font-main); font-size: 15px;
  padding: 9px 12px; border: 1px solid var(--gray-300);
  border-radius: var(--radius); background: var(--white); color: var(--gray-900);
}
select { min-width: 240px; cursor: pointer; }
select:focus, input:focus, textarea:focus {
  outline: 2px solid var(--rust); outline-offset: -1px; border-color: var(--rust);
}

/* ── Calendar ─────────────────────────────────────────────────────── */

.cal-nav {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 14px;
}
.cal-nav h2 {
  font-family: var(--font-ui); font-size: 17px; font-weight: 600;
}
.cal-nav div { display: flex; gap: 8px; }

button {
  font-family: var(--font-ui); font-size: 14px; font-weight: 600;
  padding: 9px 16px; border-radius: var(--radius);
  border: 1px solid var(--gray-300); background: var(--white);
  color: var(--gray-700); cursor: pointer;
}
button:hover:not(:disabled) { background: var(--gray-100); }
button:disabled { opacity: .45; cursor: not-allowed; }
button.primary {
  background: var(--rust); border-color: var(--rust); color: var(--white);
}
button.primary:hover:not(:disabled) { background: var(--rust-hover); }
button.danger { color: var(--booked); border-color: var(--gray-300); }
button.danger:hover:not(:disabled) { background: var(--booked-bg); }

.months { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
@media (max-width: 760px) { .months { grid-template-columns: 1fr; } }

.month {
  background: var(--white); border: 1px solid var(--gray-200);
  border-radius: var(--radius); padding: 14px;
}
.month h3 {
  font-family: var(--font-ui); font-size: 14px; font-weight: 700;
  letter-spacing: .05em; text-transform: uppercase;
  color: var(--gray-700); margin-bottom: 10px;
}
.dow, .grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.dow div {
  text-align: center; font-size: 11px; font-weight: 600;
  color: var(--gray-500); padding-bottom: 6px;
}
.day {
  aspect-ratio: 1; display: flex; align-items: center; justify-content: center;
  font-size: 13px; border-radius: 4px; position: relative;
  cursor: pointer; user-select: none;
}
.day.blank { cursor: default; }
.day.past { color: var(--gray-300); cursor: not-allowed; }
.day:not(.blank):not(.past):not(.occupied):hover { background: var(--gray-100); }

.day.booked { background: var(--booked-bg); color: var(--booked); font-weight: 600; }
.day.block  { background: var(--block-bg);  color: var(--block);  font-weight: 600; }
.day.occupied { cursor: not-allowed; }
/* Your own blocks are clickable — tap to manage/remove. */
.day.block.mine { cursor: pointer; }
.day.block.mine:hover { outline: 2px solid var(--block); outline-offset: -2px; }
.day.sel { background: var(--navy); color: var(--white); font-weight: 700; }
.day.in-range { background: var(--navy-light); color: var(--white); }
.day.today::after {
  content: ''; position: absolute; bottom: 4px; left: 50%;
  transform: translateX(-50%);
  width: 4px; height: 4px; border-radius: 50%; background: var(--rust);
}

.legend {
  display: flex; gap: 16px; flex-wrap: wrap;
  margin: 18px 0 6px; font-size: 13px; color: var(--gray-700);
}
.legend span { display: flex; align-items: center; gap: 6px; }
.swatch { width: 13px; height: 13px; border-radius: 3px; display: inline-block; }

/* ── Selection / block panel ──────────────────────────────────────── */

.panel {
  background: var(--white); border: 1px solid var(--gray-200);
  border-left: 3px solid var(--rust);
  border-radius: var(--radius); padding: 16px; margin-bottom: 20px;
}
.panel h3 { font-family: var(--font-ui); font-size: 15px; margin-bottom: 4px; }
.panel .dates { color: var(--gray-700); font-size: 14px; margin-bottom: 12px; }
.panel .row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.panel input[type="text"] { flex: 1; min-width: 200px; }
.hint { font-size: 13px; color: var(--gray-600); margin-top: 10px; }

/* ── Block list ───────────────────────────────────────────────────── */

.blocks { margin-top: 28px; }
.blocks h2 {
  font-family: var(--font-ui); font-size: 15px; font-weight: 600;
  margin-bottom: 10px;
}
.block-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: 12px 14px; background: var(--white);
  border: 1px solid var(--gray-200); border-radius: var(--radius);
  margin-bottom: 8px; font-size: 14px;
}
.block-row .meta { color: var(--gray-600); font-size: 13px; }
.block-row .locked { color: var(--gray-500); font-size: 13px; font-style: italic; }

/* ── Messages ─────────────────────────────────────────────────────── */

.msg { padding: 12px 14px; border-radius: var(--radius); margin-bottom: 16px; font-size: 14px; }
.msg.error { background: var(--booked-bg); color: var(--booked); border: 1px solid #f5c6bd; }
.msg.ok { background: var(--block-bg); color: var(--block); border: 1px solid #b8dfcc; }
.empty { color: var(--gray-600); font-size: 14px; padding: 14px 0; }
.loading { color: var(--gray-600); font-size: 14px; padding: 30px 0; text-align: center; }

/* ── Login ────────────────────────────────────────────────────────── */

.login-wrap {
  min-height: 100vh; display: flex; align-items: center; justify-content: center;
  padding: 20px; background: var(--navy);
}
.login-card {
  background: var(--white); border-radius: 12px; padding: 36px 32px;
  width: 100%; max-width: 400px;
}
.login-logo {
  display: block; margin: 0 auto 10px; width: 100%; max-width: 280px; height: auto;
}
.login-card .sub {
  text-align: center; color: var(--gray-600); font-size: 14px; margin-bottom: 26px;
}
.field { margin-bottom: 16px; }
.field label {
  display: block; font-family: var(--font-ui); font-size: 12px; font-weight: 600;
  letter-spacing: .06em; text-transform: uppercase;
  color: var(--gray-700); margin-bottom: 6px;
}
.field input { width: 100%; }
.login-card button { width: 100%; padding: 12px; font-size: 15px; }
.login-help {
  text-align: center; font-size: 13px; color: var(--gray-600); margin-top: 20px;
}
.login-help a { color: var(--rust); }

/* ── Phase 2: tabs ────────────────────────────────────────────────── */

.tabs {
  display: flex; gap: 4px; background: var(--navy);
  padding: 0 20px 10px; overflow-x: auto; -webkit-overflow-scrolling: touch;
}
.tab {
  font-family: var(--font-ui); font-size: 13px; font-weight: 600;
  letter-spacing: .04em; padding: 8px 14px; border-radius: 999px;
  border: 1px solid transparent; background: none; color: var(--gray-300);
  cursor: pointer; white-space: nowrap;
}
.tab:hover:not(.active) { color: var(--white); background: var(--navy-light); }
.tab.active { background: var(--white); color: var(--navy); }

.tab-title { font-family: var(--font-ui); font-size: 16px; font-weight: 600; margin-bottom: 12px; }
.tab-title .meta { font-family: var(--font-main); font-weight: 400; font-size: 13px; color: var(--gray-600); }

/* ── Document / list rows ─────────────────────────────────────────── */

.doc-group { margin-bottom: 30px; }
.doc-group h2 { font-family: var(--font-ui); font-size: 15px; font-weight: 600; margin-bottom: 10px; }

.period-label {
  font-family: var(--font-ui); font-size: 12px; font-weight: 600;
  letter-spacing: .07em; text-transform: uppercase; color: var(--gray-600);
  margin: 16px 0 6px;
}
.doc-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: 12px 14px; background: var(--white);
  border: 1px solid var(--gray-200); border-radius: var(--radius);
  margin-bottom: 8px; font-size: 14px;
}
.doc-row .meta { color: var(--gray-600); font-size: 13px; }
.row-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.month-sel { min-width: 0; font-size: 14px; padding: 7px 10px; }

.btn-link {
  font-family: var(--font-ui); font-size: 13px; font-weight: 600;
  padding: 8px 14px; border-radius: var(--radius);
  border: 1px solid var(--gray-300); background: var(--white);
  color: var(--gray-700); cursor: pointer; text-decoration: none;
  white-space: nowrap;
}
.btn-link:hover { background: var(--gray-100); }

.status-chip {
  font-size: 12px; font-weight: 600; padding: 3px 10px; border-radius: 999px;
  background: var(--gray-100); color: var(--gray-700); white-space: nowrap;
}
.status-chip.status-complete, .status-chip.election-opted_in {
  background: var(--block-bg); color: var(--block);
}
.status-chip.status-in_progress { background: #fef3e2; color: #b45309; }
.status-chip.election-opted_out { background: var(--booked-bg); color: var(--booked); }
.status-chip.election-pending { background: var(--gray-100); color: var(--gray-600); }

/* ── Maintenance history ──────────────────────────────────────────── */

.maint-row {
  background: var(--white); border: 1px solid var(--gray-200);
  border-radius: var(--radius); padding: 14px; margin-bottom: 10px;
  font-size: 14px;
}
.maint-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.maint-title { font-weight: 600; }
.maint-row .meta { color: var(--gray-600); font-size: 13px; margin-top: 2px; }
.maint-desc { margin-top: 8px; color: var(--gray-700); white-space: pre-line; }
.photo-strip { display: flex; gap: 8px; margin-top: 10px; overflow-x: auto; }
.photo-strip img {
  height: 74px; width: 74px; object-fit: cover; border-radius: 6px;
  border: 1px solid var(--gray-200); display: block;
}
.load-more-wrap { text-align: center; margin: 14px 0; }

/* ── Services ─────────────────────────────────────────────────────── */

.survey-banner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px; flex-wrap: wrap;
  background: var(--white); border: 1px solid var(--gray-200);
  border-left: 3px solid var(--rust); border-radius: var(--radius);
  padding: 14px 16px; margin-bottom: 18px; font-size: 14px;
}


/* ── Statements ───────────────────────────────────────────────────── */

.stmt-card {
  background: var(--white);
  border: 1px solid var(--gray-200);
  border-radius: var(--radius);
  padding: 18px 20px;
  margin-bottom: 14px;
}
.stmt-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
}
.stmt-head h3 {
  font-family: var(--font-ui);
  font-size: 17px;
  color: var(--navy);
}
.stmt-sub { color: var(--gray-600); font-size: 13px; margin-top: 2px; }
.stmt-amt {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 22px;
  color: var(--navy);
  white-space: nowrap;
}
.stmt-revised {
  display: inline-block;
  background: var(--booked-bg);
  color: var(--booked);
  border-radius: 4px;
  font-size: 11px;
  font-weight: 600;
  padding: 1px 7px;
  margin-left: 6px;
}
.stmt-actions { margin-top: 12px; display: flex; gap: 8px; flex-wrap: wrap; }
.stmt-view, .stmt-dl {
  display: inline-block;
  text-decoration: none;
  font-size: 13px;
  font-weight: 600;
  border-radius: 6px;
  padding: 7px 14px;
}
.stmt-view { background: var(--rust); color: var(--white); }
.stmt-view:hover { background: var(--rust-hover); }
.stmt-dl {
  background: var(--gray-100);
  color: var(--gray-700);
  border: 1px solid var(--gray-200);
}
.stmt-dl:hover { background: var(--gray-200); }
.stmt-details { margin-top: 12px; border-top: 1px solid var(--gray-100); padding-top: 10px; }
.stmt-details summary {
  cursor: pointer;
  color: var(--gray-600);
  font-size: 13px;
  font-weight: 600;
}
.stmt-prop {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px solid var(--gray-100);
  font-size: 14px;
  flex-wrap: wrap;
}
.stmt-prop:last-child { border-bottom: none; }
.stmt-prop-right { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.stmt-prop-amt { font-weight: 600; color: var(--navy); margin-right: 4px; }
.stmt-prop .stmt-view, .stmt-prop .stmt-dl { padding: 4px 10px; font-size: 12px; }
