:root{
  --bg:#f4f8fb;
  --bg-alt:#e5edf4;
  --sidebar:#fbfdff;
  --panel:#ffffff;
  --panel-soft:#f7fafc;
  --text:#182b3f;
  --muted:#60758a;
  --line:#cbd8e6;
  --accent:#12385f;
  --accent-2:#245a7a;
  --accent-soft:#e4f0f7;
  --danger:#dc4f65;
  --success:#1f7a45;
  --warning:#b9871f;
  --focus:#f2b84b;
  --shadow:0 10px 26px rgba(24,43,63,.1);
  --shadow-soft:0 6px 16px rgba(24,43,63,.08);
  --radius:14px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:Poppins,"Trebuchet MS","Segoe UI",sans-serif;
  background:
    linear-gradient(135deg,rgba(255,255,255,.92),rgba(255,255,255,0) 38%),
    linear-gradient(160deg,var(--bg),var(--bg-alt));
  color:var(--text);
}
button,input,select,textarea{font:inherit}
button{
  border:1px solid var(--line);
  background:var(--panel);
  color:var(--text);
  padding:.78rem 1rem;
  border-radius:10px;
  cursor:pointer;
  font-weight:700;
  min-height:44px;
  transition:background .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease;
}
button:hover{box-shadow:var(--shadow-soft);transform:translateY(-1px)}
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible{
  outline:3px solid rgba(242,184,75,.45);
  outline-offset:2px;
}
button.primary{
  background:linear-gradient(135deg,#12385f,#245a7a);
  border-color:transparent;
  color:#fff;
  box-shadow:0 8px 18px rgba(36,90,122,.18);
}
button.danger{
  background:linear-gradient(135deg,#cf3f5c,var(--danger));
  border-color:transparent;
  color:#fff;
}
button.ghost{background:transparent}
.icon-btn{width:42px;height:42px;padding:0;font-size:1.5rem}
input,select,textarea{
  width:100%;
  border:1px solid var(--line);
  background:#fff;
  color:var(--text);
  border-radius:10px;
  padding:.74rem .9rem;
  min-height:44px;
  transition:border-color .12s ease,box-shadow .12s ease,background .12s ease;
}
input[readonly]{
  background:#f3f8fe;
  color:#56708d;
}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(36,90,122,.14);
}
textarea{resize:vertical}
[hidden]{display:none!important}
.unlock-screen{
  align-items:center;
  display:flex;
  justify-content:center;
  min-height:100vh;
  padding:1.5rem;
  position:relative;
}
.unlock-screen:before{
  background:linear-gradient(135deg,rgba(18,56,95,.13),rgba(242,184,75,.12));
  border:1px solid rgba(255,255,255,.75);
  border-radius:999px;
  content:"";
  height:min(64vw,520px);
  position:absolute;
  width:min(64vw,520px);
  filter:blur(.2px);
}
.unlock-card{
  background:rgba(255,255,255,.96);
  border:1px solid rgba(215,228,241,.95);
  border-radius:18px;
  box-shadow:0 18px 44px rgba(24,43,63,.14);
  display:grid;
  gap:1rem;
  width:min(430px,100%);
  padding:1.6rem;
  position:relative;
  z-index:1;
}
.unlock-brand{
  align-items:center;
  display:flex;
  gap:.85rem;
}
.app-logo{
  display:block;
  flex:0 0 auto;
  object-fit:contain;
}
.unlock-logo{
  width:88px;
  height:88px;
}
.unlock-brand h1{
  margin:0;
  font-size:1.35rem;
}
.unlock-card label{
  color:#365979;
  display:grid;
  gap:.45rem;
}
.password-field{
  display:block;
  position:relative;
}
.password-field input{
  padding-right:3.25rem;
}
.password-field input:disabled{
  background:#e7edf3;
  border-color:#bcc8d3;
  color:#718091;
  cursor:not-allowed;
  opacity:1;
}
.password-toggle{
  align-items:center;
  background:#eef6ff;
  border:1px solid #c7dcef;
  border-radius:999px;
  color:var(--accent);
  display:flex;
  height:38px;
  justify-content:center;
  padding:0;
  position:absolute;
  right:.45rem;
  top:50%;
  transform:translateY(-50%);
  width:38px;
}
.password-toggle:hover{
  background:#fff;
  box-shadow:0 8px 18px rgba(53,92,132,.14);
  transform:translateY(-50%) scale(1.04);
}
.password-toggle:disabled,
.password-toggle:disabled:hover{
  background:#dce4eb;
  border-color:#bcc8d3;
  box-shadow:none;
  color:#718091;
  cursor:not-allowed;
  transform:translateY(-50%);
}
.password-toggle svg{
  fill:none;
  height:20px;
  opacity:1;
  position:absolute;
  stroke:currentColor;
  stroke-linecap:round;
  stroke-linejoin:round;
  stroke-width:2;
  transition:opacity .16s ease, transform .16s ease;
  width:20px;
}
.password-toggle .eye-open{
  opacity:0;
  transform:scale(.65) rotate(12deg);
}
.password-toggle .eye-closed{
  opacity:1;
  transform:scale(1) rotate(0);
}
.password-toggle.is-visible{
  background:linear-gradient(135deg,#12385f,#245a7a);
  color:#fff;
}
.password-toggle.is-visible .eye-open{
  opacity:1;
  transform:scale(1) rotate(0);
}
.password-toggle.is-visible .eye-closed{
  opacity:0;
  transform:scale(.65) rotate(-12deg);
}
.remember-choice{
  align-items:center;
  display:flex!important;
  flex-direction:row;
  gap:.5rem!important;
  font-size:.92rem;
}
.remember-choice input{width:auto}
.unlock-error{
  color:var(--danger);
  font-weight:700;
  margin:0;
  min-height:1.35rem;
}
#app{display:grid;grid-template-columns:300px 1fr;min-height:100vh}
.loading-overlay{
  align-items:center;
  background:rgba(238,245,251,.86);
  display:flex;
  inset:0;
  justify-content:center;
  padding:1.5rem;
  position:fixed;
  z-index:20;
}
.startup-screen{
  z-index:100;
}
.loading-card{
  align-items:center;
  background:rgba(255,255,255,.94);
  border:1px solid #d7e4f1;
  border-radius:18px;
  box-shadow:0 18px 44px rgba(24,43,63,.14);
  display:flex;
  gap:1rem;
  max-width:430px;
  padding:1.2rem 1.35rem;
  width:100%;
}
.loading-card strong{
  display:block;
  font-size:1rem;
  margin-bottom:.2rem;
}
.loading-card p{
  color:var(--muted);
  line-height:1.45;
  margin:0;
}
.signout-logo{
  width:64px;
  height:64px;
}
.loading-spinner{
  animation:spin .85s linear infinite;
  border:4px solid #d9e8f3;
  border-top-color:var(--accent);
  border-radius:999px;
  flex:0 0 auto;
  height:42px;
  width:42px;
}
#app.is-loading .sidebar,
#app.is-loading .main{
  pointer-events:none;
}
@keyframes spin{
  to{transform:rotate(360deg)}
}
.sidebar{
  border-right:1.1px solid #ccdaea;
  padding:1.15rem;
  background:var(--sidebar);
  display:flex;
  flex-direction:column;
  gap:1rem;
  position:sticky;
  top:0;
  height:100vh;
}
.brand{
  display:flex;
  gap:.85rem;
  align-items:center;
  background:#fff;
  border:1px solid #dce8f4;
  border-radius:16px;
  padding:.7rem;
  box-shadow:var(--shadow-soft);
}
.brand > div{
  min-width:0;
}
.brand-logo{
  width:76px;
  height:76px;
}
.brand h1{
  margin:0;
  font-size:1.05rem;
  line-height:1.15;
  overflow-wrap:normal;
}
.brand p{
  margin:.2rem 0 0;
  color:var(--muted);
  font-size:.86rem;
  line-height:1.25;
}
.nav{display:grid;gap:.45rem}
.nav-btn{
  text-align:left;
  padding:.88rem 1rem;
  background:transparent;
  border-color:transparent;
  border-radius:12px;
  color:#395d82;
}
.nav-btn.active{
  background:linear-gradient(135deg,#fff,#edf7ff);
  border-color:#bfd2e7;
  box-shadow:inset 4px 0 0 var(--accent), 0 6px 14px rgba(53,92,132,.1);
  color:var(--accent);
}
.sidebar-footer{margin-top:auto;color:var(--muted);line-height:1.5}
.sidebar-footer small{
  display:block;
  margin-top:.8rem;
}
.footer-button{
  display:block;
  width:auto;
  border:none;
  background:transparent;
  color:var(--accent);
  font-size:.9rem;
  font-weight:700;
  padding:.2rem 0;
  text-align:left;
}
.footer-button:hover{
  transform:none;
  text-decoration:underline;
}
.tour-start-button{
  margin-bottom:.45rem;
}
.footer-link,
.back-link{
  color:var(--accent);
  font-size:.9rem;
  font-weight:700;
  text-decoration:none;
}
.footer-link{
  display:inline-block;
  margin-top:.35rem;
}
.footer-link:hover,
.back-link:hover{text-decoration:underline}
.main{padding:1.4rem 1.5rem 2rem;min-width:0}
.topbar{
  display:flex;justify-content:space-between;gap:1rem;align-items:center;
  margin-bottom:1rem;
  background:#ffffff;
  border:1px solid rgba(215,228,241,.92);
  border-radius:16px;
  box-shadow:var(--shadow-soft);
  padding:1rem;
}
.topbar h2{margin:.05rem 0;font-size:1.85rem;letter-spacing:0}
.topbar p{margin:.2rem 0;color:var(--muted)}
.topbar-actions{
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:.55rem;
  justify-content:flex-end;
  width:min(430px,100%);
}
.signed-in-email{
  background:#f3f8fe;
  border:1px solid #d4e3f2;
  border-radius:999px;
  color:#375a80;
  flex:0 1 auto;
  font-size:.86rem;
  font-weight:800;
  min-height:44px;
  max-width:280px;
  overflow:hidden;
  padding:.62rem .82rem;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.online-users-badge{
  align-items:center;
  background:linear-gradient(135deg,#edfdf5,#ffffff);
  border:1px solid #b8e8d1;
  border-radius:999px;
  box-shadow:0 8px 18px rgba(36,163,111,.12);
  color:#157850;
  display:inline-flex;
  flex:0 0 auto;
  font-size:.9rem;
  font-weight:800;
  gap:.34rem;
  min-height:44px;
  padding:.52rem .78rem;
  white-space:nowrap;
}
.online-users-badge strong{
  color:#0f6845;
}
.online-users-dropdown{position:relative}
.save-status{padding:12px;margin:0 0 14px;border:1px solid #b8e8d1;border-radius:8px;background:#edfdf5;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.save-status[data-problem="true"]{background:#fff7f5;border-color:#c98070;color:#733326}
.save-status[hidden]{display:none}
.saved-status{color:#157850;font-size:.8rem;white-space:nowrap}
.startup-error{max-width:640px;margin:10vh auto;padding:28px;background:white;border:1px solid #d2a530;border-radius:12px}
.pending-work-text{white-space:pre-wrap;overflow-wrap:anywhere;max-height:60vh;overflow:auto}
.online-users-dropdown summary{cursor:pointer;list-style:none}
.online-users-dropdown summary::-webkit-details-marker{display:none}
.online-users-dropdown summary:focus-visible{outline:2px solid #157850;outline-offset:3px}
.online-users-panel{
  position:absolute;right:0;top:calc(100% + 8px);z-index:50;
  width:320px;max-width:calc(100vw - 32px);padding:16px;
  background:#fff;border:1px solid #b8e8d1;border-radius:12px;
  box-shadow:0 8px 24px rgba(0,0,0,.14);
}
.online-users-panel ul{list-style:none;margin:8px 0 0;padding:0;max-height:280px;overflow:auto}
.online-users-panel li{padding:8px 0;overflow-wrap:anywhere;font-size:.9rem}
.online-users-dot{
  background:#24a36f;
  border:2px solid #fff;
  border-radius:999px;
  color:#24a36f;
  display:inline-block;
  filter:drop-shadow(0 0 5px rgba(36,163,111,.45));
  height:.72rem;
  width:.72rem;
}
.online-users-icon{
  font-size:1rem;
}
.utility-btn{
  flex:0 0 auto;
  padding:.68rem .85rem;
  white-space:nowrap;
}
.logout-btn{
  border-color:#f0c9d1;
  color:#b43d52;
}
.logout-btn:hover{
  background:#fff6f8;
}
.tour-overlay{
  background:rgba(16,43,73,.44);
  inset:0;
  position:fixed;
  z-index:30;
}
.tour-highlight{
  box-shadow:0 0 0 4px #fff, 0 0 0 8px rgba(47,95,147,.55), 0 18px 40px rgba(12,35,60,.28)!important;
  pointer-events:none;
  position:relative;
  z-index:42!important;
}
.tour-card{
  background:#fff;
  border:1px solid #d7e4f1;
  border-radius:14px;
  box-shadow:0 18px 48px rgba(12,35,60,.24);
  color:var(--text);
  left:1rem;
  max-width:360px;
  padding:1rem;
  position:fixed;
  top:1rem;
  width:calc(100vw - 2rem);
  z-index:50;
}
.tour-progress{
  color:var(--accent);
  font-size:.78rem;
  font-weight:800;
  letter-spacing:.04em;
  margin-bottom:.35rem;
  text-transform:uppercase;
}
.tour-card h3{
  font-size:1.08rem;
  margin:.1rem 0 .4rem;
}
.tour-card p{
  color:#365979;
  line-height:1.5;
  margin:0;
}
.tour-actions{
  align-items:center;
  display:flex;
  gap:.5rem;
  margin-top:1rem;
}
.tour-actions button{
  padding:.62rem .8rem;
}
.view{display:none}
.view.active{display:block}
.panel{
  background:var(--panel);
  border:1px solid #d7e4f1;
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  overflow:hidden;
  transition:border-color .12s ease,box-shadow .12s ease;
  contain:layout paint;
}
.panel:hover{
  border-color:#bfd2e3;
  box-shadow:0 12px 28px rgba(24,43,63,.12);
}
.stacked-panel{margin-top:1rem}
.panel-header{
  display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;
  padding:1rem 1.1rem;border-bottom:1px solid #e7eff8;
  background:linear-gradient(180deg,#f9fcff,#fff);
  box-shadow:inset 0 3px 0 rgba(36,90,122,.12);
}
.panel-header h3{margin:0;font-size:1.02rem}
.hint{font-size:.9rem;color:var(--muted)}
.master-panel{margin-top:1rem}
.residents-controls{
  display:flex;
  gap:.6rem;
  align-items:center;
  width:min(760px,100%);
  flex-wrap:wrap;
}
.residents-controls input{min-width:180px;flex:1 1 180px}
.table-wrap{overflow:auto;background:#fff}
.table-wrap{
  border-top:1px solid #edf3fa;
  contain:layout paint;
  scrollbar-color:#9db4c9 #edf3fa;
  scrollbar-width:thin;
}
table{width:100%;border-collapse:separate;border-spacing:0;min-width:980px}
#scheduleTable{
  min-width:1060px;
  border-left:1px solid #dfe8f1;
  table-layout:auto;
}
#scheduleTable th:nth-child(7),
#scheduleTable td:nth-child(7){
  min-width:170px;
  width:14rem;
}
#scheduleTable th:nth-child(9),
#scheduleTable td:nth-child(9){
  min-width:150px;
  width:12rem;
}
#scheduleTable th:nth-child(10),
#scheduleTable td:nth-child(10){
  min-width:128px;
}
.compact-table{min-width:0}
th,td{
  padding:.86rem .82rem;
  border-bottom:1px solid #edf3fa;
  vertical-align:top;
}
#scheduleTable th,
#scheduleTable td{
  border-bottom:1px solid #dfe8f1;
  border-right:1px solid #dfe8f1;
  padding:.55rem .62rem;
  vertical-align:middle;
  white-space:nowrap;
}
#scheduleTable td:nth-child(7),
#scheduleTable td:nth-child(9){
  white-space:normal;
}
#scheduleTable tbody tr:nth-child(even) td{background:#f8fafc}
#scheduleTable tbody tr:hover td{background:#eaf4fc}
.empty-cell{
  color:var(--muted);
  padding:1rem;
}
th{
  text-align:left;font-size:.88rem;letter-spacing:.02em;
  color:#31536e;background:#f3f7fb;position:sticky;top:0;
  z-index:1;
}
tbody tr:nth-child(even) td{background:#fcfdff}
tr:hover td{background:#eef7ff}
.schedule-actions,
.filters,
.calendar-layout,
.add-condo-form{
  content-visibility:auto;
}
.badge{
  display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .6rem;
  border-radius:999px;font-size:.8rem;font-weight:700;
}
.badge-Sedan{background:#fff5d8;color:#7b5713}
.badge-Wheelchair{background:#fff0d8;color:#9a6819}
.badge-Van{background:#e4eef9;color:#2f5f93}
.badge-blank{background:#edf2f8;color:#5f748d}
.schedule-actions{
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:.75rem;
  justify-content:space-between;
  margin-bottom:.8rem;
}
.schedule-actions .primary{
  min-width:170px;
}
.appointment-search{
  flex:1 1 280px;
  max-width:520px;
}
.filters{
  display:grid;
  gap:.8rem;
  margin-bottom:1rem;
}
.schedule-filters{
  grid-template-columns:minmax(280px,1.35fr) repeat(3,minmax(150px,1fr));
  max-width:1080px;
}
.schedule-date-stepper{
  display:grid;
  gap:.35rem;
  grid-template-columns:44px minmax(180px,1fr) 44px;
  min-width:280px;
}
.date-step-btn{
  min-height:44px;
  padding:0;
}
.calendar-filters{
  align-items:end;
  grid-template-columns:minmax(220px,280px) auto auto;
  max-width:680px;
}
.jump-date-control{
  color:#5f748d;
  display:grid;
  font-size:.82rem;
  font-weight:800;
  gap:.32rem;
  text-transform:uppercase;
}
.jump-date-control input{
  font-size:1rem;
  min-height:48px;
  padding:.76rem .95rem;
}
.filters button{
  min-height:48px;
  white-space:nowrap;
}
.inline-edit{
  width:100%;
  padding:.45rem .5rem;
  border-radius:8px;
  background:#fff;
  border:1px solid #dce8f4;
  min-height:38px;
}
.inline-edit[readonly],
select.inline-edit:disabled{
  background:#f3f8fe;
  color:var(--text);
  cursor:default;
  opacity:1;
  -webkit-text-fill-color:var(--text);
}
select.inline-edit{
  min-width:130px;
  padding-right:2rem;
}
.inline-edit:focus{border-color:var(--accent);outline:none}
.multiline-inline-edit{
  font-family:inherit;
  font-size:.9rem;
  font-weight:700;
  line-height:1.22;
  min-height:82px;
  overflow:hidden;
  resize:none;
  white-space:normal;
}
.note-edit-btn{
  background:#f8fbff;
  border:1px solid #c7dcef;
  border-radius:10px;
  color:#2f5f93;
  display:grid;
  font-size:.88rem;
  gap:.18rem;
  max-width:300px;
  min-height:54px;
  overflow:hidden;
  padding:.52rem .65rem;
  text-align:left;
  width:100%;
  transition:background .12s ease,border-color .12s ease,box-shadow .12s ease;
}
.note-edit-btn:hover{
  background:#eef6ff;
  border-color:#9fc1e0;
}
.note-edit-btn:disabled{
  background:#f3f8fe;
  border-color:#dce8f4;
  color:var(--text);
  cursor:default;
}
.note-edit-btn:disabled:hover{
  box-shadow:none;
  transform:none;
}
.note-edit-label{
  font-weight:800;
}
.note-edit-preview{
  color:var(--text);
  display:block;
  font-weight:500;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.resident-name-cell{
  align-items:center;
  display:grid;
  gap:.45rem;
  grid-template-columns:auto minmax(0,1fr);
}
.resident-name-cell .resident-edit-btn{
  padding:.38rem .58rem;
}
.resident-edit[readonly]{
  background:#f3f8fe;
  color:#56708d;
  cursor:default;
}
.add-condo-form,
.add-vehicle-form{
  align-items:end;
  border-bottom:1px solid #e7eff8;
  display:grid;
  gap:.7rem;
  padding:1rem 1.1rem;
}
.add-condo-form{
  grid-template-columns:minmax(120px,.65fr) minmax(180px,1fr) minmax(160px,.8fr) auto;
}
.add-vehicle-form{
  grid-template-columns:minmax(180px,1fr) auto;
}
.add-condo-form button,
.add-vehicle-form button{
  min-height:48px;
  white-space:nowrap;
}
.schedule-vehicles-panel{
  margin-bottom:1rem;
}
.calendar-layout{display:grid;grid-template-columns:minmax(0,760px);gap:1rem}
.calendar-side{
  display:grid;
  gap:.75rem;
}
.calendar-side-actions{
  display:flex;
  justify-content:flex-start;
}
.calendar-side-actions button{
  min-width:220px;
}
.calendar-panel{padding:1rem}
.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}
.calendar-header h3{margin:0}
.calendar-header button{
  position:relative;
  z-index:2;
  min-width:48px;
  font-weight:700;
  border-radius:999px;
}
.calendar-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  gap:.5rem;
  contain:layout paint;
}
.weekday,.day-cell{
  background:var(--panel-soft);
  border:1px solid #dce8f4;
  border-radius:10px;
  min-height:78px;
  padding:.52rem;
}
.weekday{min-height:auto;text-align:center;color:var(--muted);font-weight:700}
.day-cell{
  cursor:pointer;
  position:relative;
  text-align:left;
  transition:background .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease;
  contain:layout paint;
}
.day-cell:hover{
  background:#fff;
  border-color:#b9cde0;
  transform:translateY(-1px);
}
.day-cell.muted{opacity:.52}
.day-cell.in-range{background:#fff8e6;border-color:#e9c96d}
.day-cell.saved-selection{box-shadow:inset 0 0 0 2px #d6a22a}
.day-cell.selected{background:#fff;outline:2px solid var(--accent);box-shadow:0 8px 18px rgba(36,90,122,.12)}
.day-cell.selected.saved-selection{box-shadow:0 10px 20px rgba(47,95,147,.14),inset 0 0 0 2px #d6a22a}
.day-cell.range-anchor{outline:2px dashed #b9871f;outline-offset:3px}
.day-cell.range-target{
  animation:rangeTargetBounce 1.15s ease-in-out infinite;
  animation-delay:var(--range-target-delay,0ms);
}
.day-cell .date-num{font-size:1.02rem;font-weight:800}
.day-cell .count{
  background:#eaf2f8;
  border:1px solid #d4e2ee;
  border-radius:999px;
  color:#31536e;
  font-size:.78rem;
  font-weight:800;
  padding:.16rem .42rem;
  position:absolute;
  right:.48rem;
  top:.48rem;
}
.day-panel{min-height:420px}
.selection-actions{
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:.45rem;
  justify-content:flex-end;
}
.selection-actions button{
  padding:.56rem .72rem;
}
.day-appointments{padding:1rem}
.download-summary{
  background:#fff8e6;
  border:1px solid #e9c96d;
  border-radius:10px;
  color:#12385f;
  font-weight:800;
  margin-bottom:.8rem;
  padding:.7rem .8rem;
}
.day-appointment{
  border:1px solid #dce8f4;
  border-left:4px solid var(--accent);
  border-radius:12px;
  padding:.9rem;
  margin-bottom:.8rem;
  background:#fbfdff;
}
.day-appointment h4{margin:0 0 .4rem}
.day-appointment .meta{color:var(--muted);font-size:.92rem;display:grid;gap:.25rem}
.download-selection-list{
  border-top:1px solid #e7eff8;
  display:grid;
  gap:.5rem;
  padding:1rem;
}
.download-selection-list.empty-selection{
  color:var(--muted);
  font-size:.9rem;
}
.download-selection-title{
  color:#375a80;
  font-size:.88rem;
  font-weight:800;
  text-transform:uppercase;
}
.download-selection-item{
  align-items:center;
  background:#f8fbff;
  border:1px solid #dce8f4;
  border-radius:10px;
  display:flex;
  gap:.7rem;
  justify-content:space-between;
  padding:.62rem .7rem;
}
.empty-state{color:var(--muted);display:grid;place-items:center;min-height:200px}
@keyframes rangeTargetBounce{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-3px)}
}
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    scroll-behavior:auto!important;
    transition-duration:.01ms!important;
  }
  .day-cell.range-target{animation:none}
}
.dialog{
  border:none;border-radius:22px;padding:0;background:#ffffff;color:var(--text);
  width:min(980px,95vw);box-shadow:0 20px 56px rgba(36,73,112,.22);
}
.dialog::backdrop{background:rgba(22,56,92,.34)}
.dialog-header,.dialog-actions{
  display:flex;align-items:center;gap:1rem;padding:1rem 1.2rem;border-bottom:1px solid #e9f0f8;
  background:linear-gradient(180deg,#fbfdff,#fff);
}
.dialog-actions{border-top:1px solid #e9f0f8;border-bottom:none}
.dialog-header h3{margin:0}
.spacer{flex:1}
.form-grid{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:1.1rem 1.2rem;
}
.form-grid label{display:grid;gap:.45rem;color:#365979}
.feedback-dialog,.note-dialog{width:min(720px,95vw)}
.terms-dialog{width:min(820px,95vw)}
.delete-confirm-dialog{width:min(560px,95vw)}
.app-alert-dialog{width:min(480px,95vw)}
.note-dialog-body{
  padding:1rem 1.2rem;
}
.note-dialog-body textarea{
  min-height:320px;
  resize:vertical;
}
.note-dialog-body textarea[readonly]{
  background:#f8fbff;
  color:#365979;
}
.danger-header{
  background:linear-gradient(180deg,#fff6f8,#fff);
}
.delete-confirm-body{
  display:grid;
  gap:.55rem;
  padding:1.2rem;
}
.delete-confirm-body strong{
  color:#9d2f4a;
  font-size:1.1rem;
}
.delete-confirm-body p{
  color:#5f748d;
  margin:0;
}
.app-alert-body{
  padding:1.15rem 1.2rem;
}
.app-alert-body p{
  color:#365979;
  line-height:1.55;
  margin:0;
}
.feedback-body{
  display:grid;
  gap:1rem;
  padding:1.1rem 1.2rem;
}
.terms-body{
  max-height:min(64vh,620px);
  overflow:auto;
  padding:1.1rem 1.2rem;
}
.terms-body h4{
  color:#2f5f93;
  font-size:1rem;
  margin:1.2rem 0 .35rem;
}
.terms-body p{
  color:#365979;
  line-height:1.6;
  margin:.45rem 0;
}
.terms-body .terms-updated{
  color:var(--muted);
  margin-top:0;
}
.feedback-type-group{
  display:flex;
  gap:.75rem;
  align-items:center;
  border:0;
  margin:0;
  padding:0;
}
.feedback-type-group legend{
  color:#365979;
  font-weight:700;
  margin-bottom:.45rem;
  width:100%;
}
.choice-pill{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  border:1px solid #c7dcef;
  border-radius:999px;
  background:#f6faff;
  color:#2f5f93;
  font-weight:700;
  padding:.55rem .85rem;
  transition:background .12s ease,border-color .12s ease,box-shadow .12s ease;
}
.choice-pill:has(input:checked){
  background:#e7f4ff;
  border-color:#9fc4e7;
  box-shadow:0 0 0 3px rgba(47,95,147,.1);
}
.choice-pill input{width:auto}
.feedback-description{
  display:grid;
  gap:.45rem;
  color:#365979;
}
.feedback-warning{
  background:#fff8e6;
  border:1px solid #e9c96d;
  border-radius:10px;
  color:#5d4713;
  font-size:.88rem;
  font-weight:700;
  line-height:1.45;
  margin:0;
  padding:.68rem .78rem;
}
.feedback-website-field{
  height:0;
  left:-10000px;
  overflow:hidden;
  position:absolute;
  width:0;
}
.feedback-meta{
  display:flex;
  justify-content:space-between;
  gap:1rem;
  color:var(--muted);
  font-size:.9rem;
}
.feedback-meta .warning{color:var(--warning);font-weight:800}
.feedback-meta .error{color:var(--danger);font-weight:700}
.feedback-meta .success{color:var(--success);font-weight:700}
.row-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.42rem}
.action-link{
  background:#eef6ff;
  border:1px solid #c7dcef;
  color:#2f5f93;
  padding:.38rem .65rem;
  border-radius:999px;
  font-size:.86rem;
  font-weight:700;
  min-height:34px;
}
.action-link:disabled{
  cursor:default;
  opacity:.58;
}
.action-link:disabled:hover{
  box-shadow:none;
  transform:none;
}
.action-link.delete{
  background:#fff0f3;
  border-color:#f3c7d1;
  color:#b53d5d;
}
.lock-note{
  color:#5f748d;
  flex-basis:100%;
  font-size:.78rem;
  font-weight:700;
  max-width:140px;
}
.locked-row td{
  background:#f1f5f9!important;
  color:#7a8da3;
}
.locked-row{
  opacity:.78;
}
.editing-row td{
  background:#fbfdff;
}
.editing-row{
  box-shadow:inset 4px 0 0 var(--accent);
}
.terms-page{
  min-height:100vh;
  padding:2rem;
}
.terms-document{
  max-width:900px;
  margin:0 auto;
  background:var(--panel);
  border:1px solid #d7e4f1;
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:2rem;
}
.terms-document h1{
  margin:.8rem 0 .25rem;
  font-size:2rem;
}
.terms-document h2{
  margin:1.5rem 0 .4rem;
  font-size:1.05rem;
  color:#2f5f93;
}
.terms-document p{
  color:#365979;
  line-height:1.65;
}
.terms-updated{
  color:var(--muted);
  margin-top:0;
}
@media (max-width: 1100px){
  #app{grid-template-columns:1fr}
  .sidebar{
    border-right:none;
    border-bottom:1px solid #ccdaea;
    height:auto;
    position:static;
  }
  .topbar{
    align-items:stretch;
    flex-direction:column;
  }
  .filters,.calendar-layout,.form-grid,.add-condo-form,.add-vehicle-form{grid-template-columns:1fr}
  .residents-controls{
    width:100%;
    flex-direction:column;
    align-items:stretch;
  }
  .residents-controls input{min-width:0}
}
@media (max-width: 680px){
  .main{padding:1rem}
  .brand-logo{width:68px;height:68px}
  .brand h1{font-size:.98rem}
  .brand p{font-size:.84rem}
  .online-users-badge{
    justify-content:center;
    width:100%;
  }
  .panel-header{align-items:flex-start}
  .feedback-meta{flex-direction:column}
  .calendar-grid{gap:.35rem}
  .weekday,.day-cell{border-radius:10px;min-height:84px;padding:.5rem}
}

.residents-pagination{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:12px}
.draft-list{padding:0 24px;max-height:65vh;overflow:auto}
