
:root{
  --bg:#f4f6f8;--card:#fff;--ink:#111827;--muted:#667085;--line:#e4e7ec;
  --accent:#111827;--green:#067647;--amber:#b54708;--red:#b42318;--blue:#175cd3;
  --shadow:0 14px 40px rgba(16,24,40,.08)
}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}
button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}
.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:12px}.dangerText{color:var(--red)}
.shell{min-height:100vh}.authWrap{max-width:980px;margin:auto;padding:26px 18px 70px}
.authTop{display:flex;justify-content:space-between;align-items:center}.brand{font-size:23px;font-weight:950;letter-spacing:-.045em}
.deviceBadge,.badge,.pill{display:inline-flex;align-items:center;border-radius:999px;font-size:11px;font-weight:800}
.deviceBadge{padding:6px 9px;background:#eef2f6;color:#475467}.badge{padding:6px 8px;background:#ecfdf3;color:var(--green)}
.badge.warn{background:#fff7ed;color:var(--amber)}.badge.red{background:#fee4e2;color:var(--red)}.badge.gray{background:#f2f4f7;color:#475467}.badge.blue{background:#eff8ff;color:var(--blue)}
.hero{padding:70px 0 30px}.eyebrow{font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:#98a2b3}
.hero h1{font-size:clamp(40px,7vw,72px);line-height:.98;letter-spacing:-.065em;margin:10px 0 18px;max-width:800px}
.hero p{max-width:650px;color:var(--muted);font-size:17px;line-height:1.55}
.authGrid{display:grid;grid-template-columns:1.05fr .95fr;gap:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px}
.authCard{padding:24px}.authCard h2{font-size:26px;margin:6px 0 14px;letter-spacing:-.03em}
.field{margin:12px 0}.field label{display:block;font-size:12px;font-weight:800;margin:0 0 6px}.field input,.field select,.field textarea{
  width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);outline:none
}.field input:focus,.field select:focus,.field textarea:focus{border-color:#98a2b3;box-shadow:0 0 0 3px #eef2f6}.field textarea{min-height:110px;resize:vertical}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.field.full{grid-column:1/-1}
.btn{border:0;border-radius:12px;background:var(--accent);color:#fff;font-weight:850;padding:11px 14px;display:inline-flex;gap:8px;align-items:center;justify-content:center;text-decoration:none}
.btn.light{background:#f2f4f7;color:#111827}.btn.red{background:#fee4e2;color:var(--red)}.btn.green{background:#ecfdf3;color:var(--green)}
.btn.sm{padding:8px 10px;font-size:12px;border-radius:10px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.full{width:100%}
.note{margin-top:14px;padding:13px 14px;border-radius:13px;background:#f8fafc;color:#475467;font-size:13px;line-height:1.5}
.note.ok{background:#ecfdf3;color:#067647}.note.warn{background:#fff7ed;color:#b54708}
.appLayout{display:grid;grid-template-columns:252px 1fr;min-height:100vh}.sidebar{background:#101828;color:#fff;padding:22px 15px;position:sticky;top:0;height:100vh;z-index:20}
.sidebar .brand{margin:0 8px 6px}.sidebarRole{font-size:12px;color:#98a2b3;margin:0 8px 20px}.nav{margin-top:18px}.nav button{
  display:flex;width:100%;gap:10px;align-items:center;border:0;background:none;color:#98a2b3;padding:11px 12px;border-radius:12px;margin:3px 0;text-align:left;font-weight:750
}.nav button:hover,.nav button.active{background:#1d2939;color:#fff}.nav .ico{width:20px;text-align:center}
.appMain{min-width:0}.topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 26px;position:sticky;top:0;z-index:15}
.topbar h1{font-size:19px;margin:0}.userBox{display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#111827;color:#fff;font-weight:900}
.content{padding:26px;max-width:1500px}.page{display:none}.page.active{display:block}.title{font-size:34px;letter-spacing:-.045em;margin:5px 0 20px}
.sectionHead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:25px 0 12px}.sectionHead h2{margin:0;font-size:19px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}
.stat{background:#fff;border:1px solid var(--line);border-radius:18px;padding:17px;cursor:pointer;transition:.15s}.stat:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.stat b{font-size:29px;display:block;margin-top:8px;letter-spacing:-.04em}.stat small{color:var(--muted)}
.tableWrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:18px}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:13px 15px;border-bottom:1px solid #f0f1f3;font-size:13px}
th{font-size:10px;letter-spacing:.075em;text-transform:uppercase;color:#98a2b3}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#fafbfc}
.objectGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.objectCard{cursor:pointer;transition:.15s}.objectCard:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.objectCard h3{font-size:18px;margin:7px 0 4px}
.meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:13px}.pill{background:#f2f4f7;color:#475467;padding:6px 8px}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.toolbar input,.toolbar select{padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:#fff}
.ticketList{display:grid;gap:10px}.ticket{background:#fff;border:1px solid var(--line);border-radius:16px;padding:15px;cursor:pointer}.ticket:hover{box-shadow:var(--shadow)}
.ticketTop{display:flex;justify-content:space-between;gap:12px}.ticket h3{font-size:15px;margin:0}.ticket p{font-size:13px;color:var(--muted);margin:8px 0 0}.ticketMeta{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}
.empty{padding:36px;text-align:center;color:var(--muted);background:#fff;border:1px dashed #d0d5dd;border-radius:18px}
.modal{display:none;position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:60;align-items:center;justify-content:center;padding:18px}.modal.open{display:flex}
.sheet{background:#fff;border-radius:22px;width:min(820px,100%);max-height:92vh;overflow:auto;padding:22px;box-shadow:0 30px 100px #0005}.sheet.wide{width:min(1100px,100%)}
.sheetHead{display:flex;justify-content:space-between;gap:14px;align-items:start}.sheetHead h2{margin:2px 0 4px;letter-spacing:-.035em}.close{border:0;background:#f2f4f7;border-radius:50%;width:38px;height:38px;font-size:18px;cursor:pointer;touch-action:manipulation;position:relative;z-index:5;-webkit-tap-highlight-color:transparent}
.photoGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.photo{aspect-ratio:1;background:#eef2f6;border-radius:13px;overflow:hidden;display:block;border:0;padding:0}.photo img{width:100%;height:100%;object-fit:cover}
.kv{display:grid;grid-template-columns:170px 1fr;gap:8px 14px;font-size:13px;padding:6px 0}.kv b{color:#475467}.divider{height:1px;background:var(--line);margin:18px 0}
.group{border:1px solid var(--line);border-radius:15px;margin:9px 0;overflow:hidden}.groupHead{padding:12px 14px;background:#f8fafc;display:flex;justify-content:space-between;font-weight:850}.groupBody{padding:8px}
.eqRow{padding:11px;border-bottom:1px solid #f0f1f3;display:flex;justify-content:space-between;gap:10px;cursor:pointer}.eqRow:last-child{border-bottom:0}
.timeline{display:grid;gap:10px}.timelineItem{border-left:3px solid #d0d5dd;padding:3px 0 3px 14px}.timelineItem b{font-size:13px}.timelineItem p{margin:5px 0;color:var(--muted);font-size:13px}
.toast{position:fixed;right:20px;bottom:20px;background:#111827;color:#fff;padding:12px 15px;border-radius:12px;z-index:100;opacity:0;transform:translateY(12px);transition:.2s;max-width:420px}.toast.show{opacity:1;transform:none}
.mobileNav{display:none}
.loading{opacity:.55;pointer-events:none}.spinner{width:18px;height:18px;border:2px solid #d0d5dd;border-top-color:#111827;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.reportResult{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px}.barRow{display:grid;grid-template-columns:150px 1fr 40px;gap:10px;align-items:center;font-size:12px;margin:10px 0}.bar{height:9px;background:#eef2f6;border-radius:999px;overflow:hidden}.bar i{display:block;height:100%;background:#111827}
@media(max-width:1050px){.grid4{grid-template-columns:repeat(2,1fr)}.objectGrid,.grid3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){
  .appLayout{grid-template-columns:1fr}.sidebar{display:none}.topbar{padding:0 16px}.content{padding:17px 14px 86px}.title{font-size:29px}
  .mobileNav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);z-index:40;padding-bottom:env(safe-area-inset-bottom)}
  .mobileNav button{border:0;background:#fff;padding:10px 3px 8px;font-size:9px;color:#667085}.mobileNav button span{font-size:18px;display:block;margin-bottom:2px}.mobileNav button.active{color:#111827;font-weight:900}
  .authGrid{grid-template-columns:1fr}.hero{padding-top:46px}.photoGrid{grid-template-columns:repeat(3,1fr)}.fields{grid-template-columns:1fr}
}
@media(max-width:560px){.grid4,.grid3,.grid2,.objectGrid{grid-template-columns:1fr}.photoGrid{grid-template-columns:repeat(2,1fr)}.kv{grid-template-columns:1fr}.barRow{grid-template-columns:110px 1fr 30px}}


/* v1.0.1 UX */
.kanban{display:flex;gap:12px;overflow-x:auto;padding:2px 2px 14px;scroll-snap-type:x proximity;align-items:flex-start}
.kanbanCol{flex:0 0 300px;background:#eef1f5;border:1px solid #e4e7ec;border-radius:18px;padding:10px;min-height:210px;scroll-snap-align:start}
.kanbanHead{display:flex;justify-content:space-between;align-items:center;padding:5px 5px 10px;font-size:13px;font-weight:900;position:sticky;top:0}
.kanbanCount{display:grid;place-items:center;min-width:24px;height:24px;border-radius:999px;background:#fff;color:#475467;font-size:11px}
.kanbanCards{display:grid;gap:8px}.kanbanCard{background:#fff;border:1px solid #e4e7ec;border-radius:14px;padding:12px;cursor:pointer;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.kanbanCard:hover{box-shadow:var(--shadow)}.kanbanCard h4{margin:0 0 6px;font-size:13px;line-height:1.35}.kanbanCard p{font-size:12px;line-height:1.4;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:0}
.kanbanCard .ticketMeta{margin-top:9px}.kanbanCard .pill{font-size:9px;padding:4px 6px}.kanbanCol.dropOver{outline:2px solid #667085;outline-offset:2px}
.estimateBox{background:#101828;color:#fff;border-radius:18px;padding:16px}.estimateBox .eyebrow{color:#98a2b3}.estimateRows{margin-top:10px;display:grid;gap:8px}.estimateRow{display:flex;justify-content:space-between;gap:14px;font-size:13px}.estimateRow.total{border-top:1px solid #344054;padding-top:10px;font-weight:900;font-size:15px}.estimateBox small{color:#98a2b3;line-height:1.45;display:block;margin-top:10px}
.serviceHints{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.serviceHint{background:#1d2939;border-radius:999px;padding:6px 8px;font-size:10px;color:#d0d5dd}
.thumbGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:9px}.thumbBtn{aspect-ratio:1.3;border:0;border-radius:14px;overflow:hidden;background:#eef2f6;padding:0;position:relative}.thumbBtn img{width:100%;height:100%;object-fit:cover;display:block}.thumbBtn span{position:absolute;left:6px;right:6px;bottom:6px;background:rgba(16,24,40,.72);color:white;border-radius:8px;padding:5px 6px;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lightbox{position:fixed;inset:0;background:rgba(3,7,18,.94);z-index:150;display:none;align-items:center;justify-content:center;padding:22px}.lightbox.open{display:flex}.lightbox img{max-width:min(1200px,92vw);max-height:84vh;object-fit:contain;border-radius:10px}.lightboxClose,.lightboxPrev,.lightboxNext{position:absolute;border:0;background:rgba(255,255,255,.12);color:white;border-radius:50%;width:46px;height:46px;font-size:24px}.lightboxClose{right:20px;top:20px}.lightboxPrev{left:18px;top:50%}.lightboxNext{right:18px;top:50%}.lightboxCaption{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);color:white;background:rgba(0,0,0,.45);padding:8px 12px;border-radius:999px;font-size:12px;max-width:80vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.assistantFab{position:fixed;right:20px;bottom:20px;z-index:52;border:0;background:#101828;color:#fff;border-radius:999px;padding:12px 16px;font-weight:900;box-shadow:0 16px 40px #10182840}.assistantPanel{position:fixed;right:20px;bottom:76px;width:min(380px,calc(100vw - 28px));max-height:65vh;background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 25px 80px #10182833;z-index:53;display:none;overflow:hidden}.assistantPanel.open{display:block}.assistantHead{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.assistantBody{padding:15px}.assistantBubble{background:#f2f4f7;border-radius:14px;padding:12px;font-size:13px;line-height:1.45}.assistantQuick{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.assistantQuick button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 9px;font-size:11px}
.timelineStatus{font-weight:850}.pricePreviewLoading{opacity:.55}
@media(max-width:820px){.assistantFab{bottom:76px;right:14px}.assistantPanel{bottom:128px;right:14px}.kanbanCol{flex-basis:82vw}.thumbGrid{grid-template-columns:repeat(2,1fr)}}


/* v1.1.0 realtime + notification center */
.notifyWrap{position:relative}.notifyBtn{position:relative;width:38px;height:38px;border-radius:12px;border:1px solid var(--line);background:#fff;font-size:17px;display:grid;place-items:center}.notifyBtn:hover{background:#f8fafc}.notifyCount{position:absolute;right:-5px;top:-6px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:#d92d20;color:white;display:grid;place-items:center;font-size:9px;font-weight:900;border:2px solid white}.notifyPanel{position:absolute;right:0;top:48px;width:min(390px,calc(100vw - 24px));max-height:70vh;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 70px rgba(16,24,40,.2);display:none;overflow:hidden;z-index:90}.notifyPanel.open{display:block}.notifyHead{display:flex;align-items:center;justify-content:space-between;padding:13px 14px;border-bottom:1px solid var(--line)}.notifyList{overflow:auto;max-height:58vh}.notifyItem{width:100%;border:0;border-bottom:1px solid #f0f1f3;background:#fff;text-align:left;padding:12px;display:grid;grid-template-columns:8px 1fr;gap:9px}.notifyItem:hover{background:#f8fafc}.notifyItem.read{opacity:.62}.notifyDot{width:7px;height:7px;background:#175cd3;border-radius:50%;margin-top:6px}.notifyItem.read .notifyDot{background:#d0d5dd}.notifyItem b{display:block;font-size:12px}.notifyItem small{display:block;color:#667085;font-size:11px;line-height:1.35;margin-top:3px}.notifyItem em{display:block;color:#98a2b3;font-size:9px;font-style:normal;margin-top:5px}.notifyEmpty{padding:30px;text-align:center;color:#667085;font-size:12px}
html[data-realtime="online"] .topbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:#12b76a}html[data-realtime="offline"] .topbar:after,html[data-realtime="error"] .topbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:#f79009}
@media(max-width:820px){.notifyPanel{position:fixed;top:70px;right:12px;left:12px;width:auto}.userBox>div:not(.notifyWrap):first-of-type{display:none}}


/* v1.1.1 sound unlock + new-request alert */
.notifyHeadActions{display:flex;gap:6px;align-items:center}.notifyHeadActions .btn{white-space:nowrap}.notifyHeadActions .soundOn{background:#ecfdf3;color:#067647;border-color:#abefc6}
.soundPrompt{position:fixed;left:50%;top:88px;transform:translateX(-50%);z-index:120;width:min(620px,calc(100vw - 28px));background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 80px rgba(16,24,40,.22);padding:13px 14px;display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:12px;animation:soundPromptIn .22s ease-out}.soundPromptIcon{width:42px;height:42px;border-radius:13px;background:#eff8ff;display:grid;place-items:center;font-size:21px}.soundPrompt b{display:block;font-size:14px}.soundPrompt small{display:block;color:var(--muted);margin-top:3px;line-height:1.35}.soundPromptActions{display:flex;gap:6px}@keyframes soundPromptIn{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}
.requestAlertModal{z-index:125;background:rgba(15,23,42,.58)}.requestAlertSheet{width:min(520px,100%);text-align:center;padding:28px}.requestAlertIcon{width:64px;height:64px;border-radius:20px;background:#eff8ff;display:grid;place-items:center;font-size:30px;margin:0 auto 15px}.requestAlertSheet h2{font-size:27px;letter-spacing:-.04em;margin:7px 0 9px}.requestAlertSheet p{font-size:14px;line-height:1.5;margin:0 auto;max-width:420px}.requestAlertMeta{display:flex;justify-content:center;gap:7px;margin:15px 0 19px}.requestAlertActions{display:grid;grid-template-columns:1fr 1.35fr;gap:8px}
@media(max-width:620px){.soundPrompt{top:auto;bottom:86px;grid-template-columns:38px 1fr}.soundPromptIcon{width:38px;height:38px}.soundPromptActions{grid-column:1/-1}.soundPromptActions .btn{flex:1}.notifyHead{align-items:flex-start;gap:8px}.notifyHeadActions{flex-wrap:wrap;justify-content:flex-end}.requestAlertActions{grid-template-columns:1fr}.requestAlertSheet{padding:23px 18px}}


/* v1.1.2 priority alerts + executor assignment */
.requestAlertModal.emergency{background:rgba(79,15,15,.68)}
.requestAlertModal.emergency .requestAlertSheet{border:1px solid #fecdca;box-shadow:0 28px 100px rgba(180,35,24,.28)}
.requestAlertModal.emergency .requestAlertIcon{background:#fee4e2;color:#b42318;animation:emergencyPulse 1.05s ease-in-out infinite}
.requestAlertModal.emergency .eyebrow{color:#b42318}
.requestAlertModal.emergency .requestAlertSheet h2{color:#7a271a}
.requestAlertModal.emergency [data-open]{background:#b42318}
.requestAlertModal.assignment .requestAlertIcon{background:#ecfdf3;color:#067647}
.requestAlertModal.assignment .eyebrow{color:#067647}
.requestAlertModal.assignment .requestAlertSheet{border:1px solid #abefc6}
@keyframes emergencyPulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(217,45,32,.18)}50%{transform:scale(1.055);box-shadow:0 0 0 10px rgba(217,45,32,0)}}

/* Resident dashboard quick filters */
.residentStat{
  width:100%;
  appearance:none;
  text-align:left;
  color:var(--ink);
  font-family:inherit;
}
.residentStat.active{
  border-color:#12b76a;
  box-shadow:0 0 0 2px rgba(18,183,106,.12), var(--shadow);
}
.residentStat.active small{color:#067647;font-weight:850}
.residentStat:active{transform:scale(.985)}
.residentStat:focus-visible{outline:3px solid rgba(23,92,211,.20);outline-offset:2px}

@media(max-width:560px){
  #residentStats.grid4{grid-template-columns:repeat(2,1fr)!important;gap:10px}
  #residentStats .stat{padding:14px 16px;min-height:112px}
  #residentStats .stat b{font-size:25px}
}

/* v1.2.0 — system push */
.notifyHeadActions{flex-wrap:wrap;justify-content:flex-end}
.pushPrompt{max-width:720px}
@media(max-width:560px){
  .notifyHead{align-items:flex-start}
  .notifyHeadActions{gap:5px}
  .notifyHeadActions .btn{padding:7px 8px;font-size:10px}
}

/* Staff report drill-down v1.2.1 */
.reportStat{
  width:100%;
  appearance:none;
  text-align:left;
  color:var(--ink);
  font-family:inherit;
  border:1px solid var(--line);
}
.reportStat span{
  display:block;
  margin-top:10px;
  color:#475467;
  font-size:11px;
  font-weight:850;
  opacity:.72;
}
.reportStat:hover span{opacity:1}
.reportStat:focus-visible{outline:3px solid rgba(23,92,211,.18);outline-offset:2px}
.reportStat:active{transform:scale(.985)}
.reportDrillNotice{
  margin:0 0 14px;
  padding:10px 12px;
  border:1px solid #d0d5dd;
  background:#f8fafc;
  border-radius:12px;
  display:flex;
  gap:12px;
  justify-content:space-between;
  align-items:center;
  color:#475467;
  font-size:12px;
}
@media(max-width:560px){
  .reportDrillNotice{align-items:flex-start;flex-direction:column}
  #page-reports .grid4{grid-template-columns:repeat(2,1fr)}
}

/* v1.2.2 report export */
.reportExportToolbar{margin-top:4px}
.reportExportToolbar .btn{min-width:128px}
@media(max-width:560px){
  .reportExportToolbar{display:grid;grid-template-columns:1fr 1fr}
  .reportExportToolbar .btn:first-child{grid-column:1/-1}
  .reportExportToolbar .btn{width:100%;min-width:0}
}

/* AI Assistant v1.3 */
.assistantPanel{width:min(440px,calc(100vw - 28px));max-height:76vh}
.assistantChat{display:flex;flex-direction:column;min-height:360px;max-height:calc(76vh - 62px)}
.assistantMessages{padding:14px;overflow:auto;display:flex;flex-direction:column;gap:10px;min-height:180px;flex:1;background:#fafbfc}
.assistantMsg{display:flex}
.assistantMsg>div{max-width:88%;padding:10px 12px;border-radius:14px;font-size:13px;line-height:1.45;word-break:break-word}
.assistantMsg.ai>div{background:#fff;border:1px solid var(--line);border-bottom-left-radius:5px}
.assistantMsg.user{justify-content:flex-end}
.assistantMsg.user>div{background:#101828;color:#fff;border-bottom-right-radius:5px}
.assistantMsg.typing>div{color:var(--muted);font-style:italic}
.assistantComposer{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px 12px;border-top:1px solid var(--line);background:#fff}
.assistantComposer textarea{resize:none;border:1px solid var(--line);border-radius:12px;padding:10px 11px;outline:none;min-width:0}
.assistantComposer textarea:focus{border-color:#98a2b3;box-shadow:0 0 0 3px #eef2f6}
.assistantComposer .btn{align-self:stretch}
.assistantFoot{padding:0 12px 10px;color:#98a2b3;font-size:10px;background:#fff}
.assistantQuick{padding:10px 12px;margin:0;border-top:1px solid #f0f1f3;background:#fff}
.aiAnalysisBox{background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:14px;white-space:pre-wrap;line-height:1.5;font-size:13px}
@media(max-width:560px){
  .assistantPanel{left:10px;right:10px;bottom:132px;width:auto;max-height:72vh}
  .assistantChat{max-height:calc(72vh - 62px)}
  .assistantComposer{grid-template-columns:1fr}
}

/* AI Function Calling v1.4 */
.assistantActions{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 2px 2px}
.assistantAction{border:1px solid #b2ddff;background:#eff8ff;color:#175cd3;border-radius:999px;padding:7px 10px;font-size:11px;font-weight:850;cursor:pointer}
.assistantAction:hover{background:#dff1ff}
.assistantAction:active{transform:scale(.98)}

/* AI Function Calling 2.0 confirmation */
.assistantAction.confirm{background:#fff7ed;border-color:#fed7aa;color:#9a3412}
.aiConfirmSheet{width:min(560px,100%)}
.aiConfirmIcon{width:56px;height:56px;border-radius:18px;background:#f2f4f7;display:grid;place-items:center;font-size:26px;margin:18px 0 12px}
.aiConfirmSummary{font-size:18px;font-weight:850;line-height:1.35;margin-bottom:12px}
.aiConfirmButtons{justify-content:flex-end;margin-top:18px}
.aiConfirmButtons .btn{min-width:130px}
@media(max-width:560px){
  .aiConfirmSheet{border-radius:22px 22px 0 0;align-self:flex-end;margin:0;width:100%;max-height:88vh}
  #aiConfirmModal{align-items:flex-end;padding:0}
  .aiConfirmButtons{display:grid;grid-template-columns:1fr 1fr}
  .aiConfirmButtons .btn{width:100%;min-width:0}
}

/* Request communication v1.7.0 */
.contactCard{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:17px}
.contactCard h3{margin:4px 0 6px;font-size:18px}.contactLines{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px}.contactLines span{color:var(--muted)}
.requestChatShell{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}
.chatTabs{display:flex;gap:4px;padding:8px;border-bottom:1px solid var(--line);background:#f8fafc}
.chatTab{border:0;background:transparent;padding:10px 12px;border-radius:11px;color:#667085;font-weight:800}
.chatTab.active{background:#fff;color:#101828;box-shadow:0 1px 3px rgba(16,24,40,.08)}
.chatTab span:not(:empty){display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;margin-left:4px;border-radius:999px;background:#fee4e2;color:#b42318;font-size:10px}
.chatChannelNote{padding:10px 14px;color:#667085;font-size:12px;border-bottom:1px solid #f0f1f3}
.chatMessages{height:320px;overflow:auto;padding:14px;background:#f8fafc;display:flex;flex-direction:column;gap:9px}
.chatMessage{align-self:flex-start;max-width:min(76%,620px);background:#fff;border:1px solid #e4e7ec;border-radius:16px 16px 16px 5px;padding:10px 12px;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.chatMessage.mine{align-self:flex-end;background:#101828;color:#fff;border-color:#101828;border-radius:16px 16px 5px 16px}
.chatMessageTop{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:5px;font-size:10px}
.chatMessageTop span{color:#98a2b3}.chatMessage.mine .chatMessageTop span{color:#d0d5dd}
.chatMessageText{font-size:13px;line-height:1.45;white-space:pre-wrap;word-break:break-word}
.chatComposer{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px;border-top:1px solid var(--line)}
.chatComposer textarea{min-height:52px;max-height:140px;resize:vertical;padding:11px 12px;border:1px solid var(--line);border-radius:12px;outline:none}
.chatComposer textarea:focus{border-color:#98a2b3;box-shadow:0 0 0 3px #eef2f6}.chatComposer .btn{align-self:end;min-height:46px}
.quickReplies{display:flex;gap:6px;flex-wrap:wrap;padding:9px 10px 0}.quickReplies button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 9px;font-size:11px;color:#475467}
.quickReplies button:hover{background:#f2f4f7}.chatEmpty{width:100%;background:transparent}
@media(max-width:650px){
  .contactCard{align-items:flex-start;flex-direction:column}.contactCard .toolbar{width:100%}.contactCard .toolbar .btn{flex:1}
  .chatTabs{overflow-x:auto}.chatTab{white-space:nowrap}.chatMessages{height:360px;padding:10px}
  .chatMessage{max-width:88%}.chatComposer{grid-template-columns:1fr}.chatComposer .btn{width:100%}
}

/* AI estimator v1.8.0 */
.estimateDetailItems{display:grid;gap:7px;margin:14px 0}.estimateDetailItem{display:grid;grid-template-columns:1fr auto;gap:14px;padding:11px 0;border-top:1px solid var(--line)}.estimateDetailItem:first-child{border-top:0}.estimateDetailItem b{display:block;font-size:13px}.estimateDetailItem small{display:block;color:var(--muted);margin-top:3px;line-height:1.4}.estimateItemPrice{text-align:right;font-weight:850;font-size:13px;white-space:nowrap}.estimateItemPrice small{display:block;font-weight:500}.quoteLinks{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.quoteLinks a{font-size:10px;padding:5px 7px;border-radius:999px;border:1px solid var(--line);text-decoration:none;color:var(--blue);background:#fff}.aiEstimateAnalysis{margin-top:12px;padding:13px;border-radius:14px;background:#f8fafc;border:1px solid var(--line)}.aiEstimateAnalysis p{font-size:13px;line-height:1.5}.aiEstimateList{margin-top:10px;font-size:12px}.aiEstimateList ul{margin:5px 0 0;padding-left:18px;color:#475467}.aiEstimateList li{margin:3px 0;line-height:1.4}.estimateDecision{display:flex;gap:8px;margin-top:16px}.estimateDecision .btn{flex:1}
@media(max-width:560px){.estimateDetailItem{grid-template-columns:1fr}.estimateItemPrice{text-align:left}.estimateDecision{display:grid;grid-template-columns:1fr}.estimateBox .sectionHead{align-items:flex-start;flex-direction:column}.estimateBox .sectionHead .toolbar{width:100%}.estimateBox .sectionHead .toolbar .btn{flex:1}}

/* v1.9.0 material market options + actual costs */
.materialItem{align-items:flex-start}.estimateItemMain{flex:1;min-width:0}
.materialVariants{display:grid;gap:7px;margin-top:10px}
.materialVariant{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto auto;gap:8px;align-items:center;border:1px solid #e4e7ec;border-radius:13px;padding:9px;background:#fff;cursor:pointer}
.materialVariant.selected{border-color:#12b76a;box-shadow:0 0 0 2px rgba(18,183,106,.10)}
.materialVariant input{margin:0}.tier{font-size:10px;font-weight:900;padding:5px 7px;border-radius:999px;white-space:nowrap}
.tier.economy{background:#ecfdf3;color:#027a48}.tier.standard{background:#eff8ff;color:#175cd3}.tier.better{background:#fff4ed;color:#b54708}
.variantBody{min-width:0;display:flex;flex-direction:column}.variantBody b{font-size:12px;overflow:hidden;text-overflow:ellipsis}.variantBody small{font-size:10px;color:#667085}
.variantPrice{font-weight:900;white-space:nowrap}.variantLink{font-size:11px;color:#175cd3;white-space:nowrap}
.costCompare{display:grid;gap:14px}.compactStats .stat{min-height:auto;padding:13px}.compactStats .stat b{font-size:18px}
.actualMaterials{border:1px solid var(--line);border-radius:16px;overflow:hidden}.actualMaterials h3{padding:13px 14px;margin:0;border-bottom:1px solid var(--line)}
.actualMaterialRow{display:grid;grid-template-columns:minmax(220px,1fr) 150px 90px 130px;gap:8px;align-items:center;padding:10px 14px;border-bottom:1px solid #f0f1f3}
.actualMaterialRow:last-child{border-bottom:0}.actualMaterialRow>div{display:flex;flex-direction:column}.actualMaterialRow small{color:#667085;font-size:10px}
.actualMaterialRow select,.actualMaterialRow input{width:100%;padding:9px;border:1px solid var(--line);border-radius:10px}
.actualCostForm{border:1px solid var(--line);border-radius:16px;padding:14px}.checkLine{display:flex;gap:8px;align-items:center;margin:10px 0 14px;font-weight:700;font-size:12px}
.note.good{background:#ecfdf3;color:#027a48;border-color:#abefc6}
@media(max-width:720px){
  .materialVariant{grid-template-columns:auto auto 1fr auto}.variantLink{grid-column:3/-1}.actualMaterialRow{grid-template-columns:1fr 1fr}.actualMaterialRow>div{grid-column:1/-1}
}

/* v1.9.1 — explicit material prices */
.materialVariant{color:#101828}
.materialVariant .variantBody,
.materialVariant .variantBody b{color:#101828}
.materialVariant .variantBody small{color:#667085}
.materialVariant .variantPrice{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  justify-content:center;
  min-width:86px;
  color:#101828;
  white-space:nowrap;
}
.materialVariant .variantPrice small{
  display:block;
  margin:0 0 1px;
  color:#667085;
  font-size:9px;
  font-weight:700;
  line-height:1.1;
}
.materialVariant .variantPrice b{
  color:#101828;
  font-size:14px;
  font-weight:900;
  line-height:1.15;
}
@media(max-width:720px){
  .materialVariant .variantPrice{min-width:auto;align-items:flex-start}
}

/* v1.9.2 — справочники, фильтры и связи */
.directoryToolbar{
  display:grid;
  grid-template-columns:minmax(220px,1.6fr) repeat(3,minmax(150px,.8fr)) auto;
  gap:10px;
  align-items:center;
  margin:0 0 14px;
  padding:12px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
}
.staffDirectoryToolbar{grid-template-columns:minmax(210px,1.5fr) repeat(6,minmax(135px,.75fr)) auto}
.directoryToolbar input,.directoryToolbar select{
  width:100%;min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--ink)
}
.directorySummary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 12px}
.directoryStat{
  appearance:none;text-align:left;border:1px solid var(--line);background:#fff;border-radius:14px;padding:11px 13px;color:var(--ink);cursor:default
}
.directoryStat[onclick]{cursor:pointer}.directoryStat[onclick]:hover,.directoryStat.active{border-color:#98a2b3;background:#f9fafb}
.directoryStat small{display:block;color:#667085;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.directoryStat b{display:block;margin-top:4px;font-size:20px}
.directoryGroup{margin:0 0 18px}
.directoryGroupHead{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 8px}
.directoryGroupHead h3{margin:0;font-size:17px}.directoryGroupHead>span{background:#f2f4f7;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:900}
.objectDirectoryGroup{grid-column:1/-1}.objectDirectoryGroup>.objectGrid{margin:0}
.directoryObjectCard{position:relative}.objectCardTop{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.directoryArrow{font-size:30px;line-height:1;color:#98a2b3}
.relationGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:15px;border-top:1px solid #eaecf0;padding-top:12px}
.relationGrid>span{display:flex;flex-direction:column;min-width:0}
.relationGrid b{font-size:17px}.relationGrid small{font-size:9px;color:#667085;line-height:1.2}
.relationTag{display:inline-flex;align-items:center;margin:2px 4px 2px 0;padding:4px 7px;border-radius:999px;background:#eff8ff;color:#175cd3;font-size:10px;font-weight:800}
.relationTag.subtle{background:#f2f4f7;color:#475467}
.directoryEmpty{grid-column:1/-1}
table td{vertical-align:top}
@media(max-width:1200px){
  .staffDirectoryToolbar{grid-template-columns:repeat(4,minmax(140px,1fr))}
  .directoryToolbar{grid-template-columns:repeat(3,minmax(150px,1fr))}
}
@media(max-width:720px){
  .directorySummary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .directoryToolbar,.staffDirectoryToolbar{grid-template-columns:1fr 1fr;padding:10px}
  .directoryToolbar input{grid-column:1/-1}
  .directoryToolbar .btn{grid-column:1/-1}
  .relationGrid{grid-template-columns:1fr 1fr}
}

/* v1.9.3 — equipment filters */
.equipmentDirectoryToolbar{
  grid-template-columns:minmax(220px,1.5fr) repeat(6,minmax(135px,.75fr)) auto;
}
.equipmentConditionBadge{
  display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;
  font-size:10px;font-weight:900;white-space:nowrap;background:#f2f4f7;color:#475467
}
.equipmentConditionBadge.condition-operational{background:#ecfdf3;color:#027a48}
.equipmentConditionBadge.condition-attention{background:#fffaeb;color:#b54708}
.equipmentConditionBadge.condition-repair{background:#fff4ed;color:#b42318}
.equipmentConditionBadge.condition-out_of_service{background:#fef3f2;color:#b42318}
.dangerText{color:#b42318;font-weight:800}
@media(max-width:1200px){
  .equipmentDirectoryToolbar{grid-template-columns:repeat(4,minmax(140px,1fr))}
}
@media(max-width:720px){
  .equipmentDirectoryToolbar{grid-template-columns:1fr 1fr}
  .equipmentDirectoryToolbar input{grid-column:1/-1}
  .equipmentDirectoryToolbar .btn{grid-column:1/-1}
}


/* ==========================================================
   v1.9.4 — unified responsive / collision prevention layer
   ========================================================== */

html,body{max-width:100%;overflow-x:hidden}
.appMain,.content,.page,.sectionHead>*,.grid2>*,.grid3>*,.grid4>*{min-width:0}
.content{width:100%}
.tableWrap{max-width:100%;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}
.toolbar{min-width:0}
.toolbar input,.toolbar select{min-width:0;max-width:100%}

/* Flexible directory filters replace rigid multi-column grids. */
.directoryToolbar,
.staffDirectoryToolbar,
.equipmentDirectoryToolbar{
  display:flex;
  flex-wrap:wrap;
  grid-template-columns:none;
  align-items:stretch;
  gap:9px;
}
.directoryToolbar>input{flex:2 1 280px;min-width:220px}
.directoryToolbar>select{flex:1 1 165px;min-width:150px;max-width:260px}
.directoryToolbar>.btn{flex:0 0 auto;white-space:nowrap}
.directoryFilterToggle{display:none!important}

.sheet,.sheet.wide{max-width:calc(100vw - 36px)}
.mobileMoreMenu{display:none}

.variantBody b,.variantBody small,
.ticket h3,.ticket p,.objectCard h3,
.chatMessageText,.contactLines,.relationTag{overflow-wrap:anywhere}
.estimateRow span,.estimateRow b{min-width:0}
.materialVariant{max-width:100%}

@media(max-width:1100px) and (min-width:721px){
  .directoryToolbar>input{flex-basis:100%;min-width:0}
  .directoryToolbar>select{flex:1 1 180px;max-width:none}
}

@media(max-width:820px){
  .topbar{height:66px;gap:10px;padding:0 14px}
  .topbar h1{
    min-width:0;max-width:42vw;font-size:17px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis
  }
  .userBox{gap:7px;flex:0 0 auto}
  .avatar{width:34px;height:34px}
  .userBox>.btn{
    width:34px;height:34px;padding:0;border-radius:10px;font-size:0
  }
  .userBox>.btn:after{content:"⇥";font-size:16px}
  .content{padding:16px 12px calc(92px + env(safe-area-inset-bottom))}

  .mobileNav{
    grid-template-columns:repeat(auto-fit,minmax(58px,1fr));
    min-height:64px;align-items:stretch
  }
  .mobileNav button{min-width:0;padding:8px 2px 6px}

  .mobileMoreMenu{
    position:fixed;left:10px;right:10px;
    bottom:calc(68px + env(safe-area-inset-bottom));
    z-index:46;background:#fff;border:1px solid var(--line);
    border-radius:18px;padding:8px;
    box-shadow:0 24px 70px rgba(16,24,40,.22);
    grid-template-columns:1fr 1fr;gap:6px
  }
  .mobileMoreMenu.open{display:grid}
  .mobileMoreMenu button{
    border:0;background:#f8fafc;border-radius:13px;padding:12px;
    text-align:left;display:flex;gap:9px;align-items:center;color:#344054
  }
  .mobileMoreMenu button span{font-size:19px;width:25px;text-align:center}
  .mobileMoreMenu button b{font-size:12px}
  .mobileMoreMenu button.active{background:#101828;color:#fff}

  body.mobileMoreOpen .assistantFab{opacity:0;pointer-events:none}

  #page-requests>.toolbar{
    display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
    width:100%;gap:8px
  }
  #page-requests>.toolbar input,
  #page-requests>.toolbar select{width:100%}
  #reqSearch{grid-column:1/-1}

  .toast{
    left:12px;right:12px;top:76px;bottom:auto;
    max-width:none;text-align:center
  }

  .assistantFab{
    bottom:calc(76px + env(safe-area-inset-bottom));
    right:12px
  }
  .assistantPanel{
    bottom:calc(126px + env(safe-area-inset-bottom));
    right:10px
  }
}

@media(max-width:720px){
  .directorySummary{
    grid-template-columns:repeat(2,minmax(0,1fr));gap:8px
  }
  .directoryStat{padding:10px 11px}
  .directoryStat b{font-size:18px}
  .directoryStat small{font-size:9px}

  .directoryToolbar,
  .staffDirectoryToolbar,
  .equipmentDirectoryToolbar{
    display:grid;grid-template-columns:minmax(0,1fr) auto;
    gap:8px;padding:9px
  }
  .directoryToolbar>input{
    grid-column:1/2;width:100%;min-width:0
  }
  .directoryFilterToggle{
    display:inline-flex!important;grid-column:2/3;
    align-items:center;justify-content:center;gap:5px;
    border:1px solid var(--line);background:#f8fafc;color:#344054;
    border-radius:11px;padding:9px 11px;font-size:11px;
    font-weight:850;white-space:nowrap
  }
  .directoryToolbar>select,
  .directoryToolbar>.btn:not(.directoryFilterToggle){display:none}
  .directoryToolbar.filters-open>select,
  .directoryToolbar.filters-open>.btn:not(.directoryFilterToggle){
    grid-column:1/-1;width:100%;max-width:none;min-width:0
  }
  .directoryToolbar.filters-open>select{display:block}
  .directoryToolbar.filters-open>.btn:not(.directoryFilterToggle){display:flex}
  .directoryToolbar.filters-open>.directoryFilterToggle{
    background:#101828;color:#fff;border-color:#101828
  }

  .relationGrid{grid-template-columns:repeat(2,minmax(0,1fr))}

  .materialVariant{
    grid-template-columns:auto auto minmax(0,1fr);align-items:start
  }
  .materialVariant .variantPrice{
    grid-column:2/4;grid-row:2;align-items:flex-start
  }
  .materialVariant .variantLink{
    grid-column:2/4;grid-row:3;justify-self:start
  }

  .actualMaterialRow{grid-template-columns:1fr 1fr}
  .actualMaterialRow>div{grid-column:1/-1}
}

@media(max-width:560px){
  .title{font-size:27px;margin-bottom:14px}
  .page>.sectionHead{
    flex-direction:column;align-items:stretch;gap:9px;margin-top:18px
  }
  .page>.sectionHead>.btn,
  .page>.sectionHead>.toolbar{width:100%}
  .page>.sectionHead>.btn{justify-content:center}

  .grid4,.grid3,.grid2,.objectGrid{gap:10px}
  .card{border-radius:16px;padding:14px}

  .modal:not(.requestAlertModal){align-items:flex-end;padding:0}
  .modal:not(.requestAlertModal)>.sheet,
  .modal:not(.requestAlertModal)>.sheet.wide{
    width:100%;max-width:100%;max-height:94dvh;
    border-radius:22px 22px 0 0;
    padding:17px 14px calc(18px + env(safe-area-inset-bottom))
  }
  .modal:not(.requestAlertModal)>.sheet>.sheetHead{
    position:sticky;top:-17px;z-index:3;background:#fff;padding:6px 0 10px
  }

  .close{flex:0 0 38px}
  .tableWrap{border-radius:14px}
  .estimateRow{align-items:flex-start}
  .estimateRow b{text-align:right}
  .estimateRow.total{font-size:14px}

  .contactCard .toolbar{
    display:grid;grid-template-columns:1fr 1fr
  }
  .contactCard .toolbar .btn{width:100%}

  .notifyPanel{
    top:62px;right:8px;left:8px;
    max-height:calc(100dvh - 145px)
  }
  .soundPrompt{
    bottom:calc(78px + env(safe-area-inset-bottom));
    width:calc(100vw - 20px)
  }
  .assistantPanel{
    left:8px;right:8px;width:auto;
    max-height:calc(100dvh - 155px)
  }
  .assistantChat{max-height:calc(100dvh - 220px)}
}

@media(max-width:390px){
  .topbar{padding:0 10px}
  .content{padding-left:9px;padding-right:9px}
  .topbar h1{font-size:15px;max-width:38vw}
  .directoryFilterToggle{padding-left:9px;padding-right:9px}
  .directorySummary{gap:6px}
  .directoryStat{padding:9px}
  .directoryStat b{font-size:17px}
  .mobileNav button{font-size:8px}
  .mobileNav button span{font-size:17px}
  .estimateBox{padding:13px}
  .materialVariant{padding:8px;gap:6px}
  .tier{font-size:9px}
  .chatMessage{max-width:94%}
}


/* ==========================================================
   v2.0.0 — fixed desktop shell + owner-only administration UI
   ========================================================== */

/* Desktop: sidebar never participates in document scroll.
   Only the white work surface (.appMain) scrolls. */
@media(min-width:821px){
  html,body{height:100%;overflow:hidden}
  .appLayout{display:block;height:100dvh;min-height:0}
  .sidebar{
    position:fixed;
    left:0;top:0;bottom:0;
    width:252px;
    height:100dvh;
    overflow-y:auto;
    overscroll-behavior:contain;
  }
  .appMain{
    margin-left:252px;
    height:100dvh;
    min-height:0;
    overflow-y:auto;
    overflow-x:hidden;
    overscroll-behavior-y:contain;
    scroll-behavior:smooth;
  }
  .content{min-height:calc(100dvh - 74px)}
}

/* Owner-only controls */
.ownerAdminZone{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:14px 0;
  padding:14px 16px;
  border:1px solid #fda29b;
  border-radius:16px;
  background:#fffbfa;
}
.ownerAdminZone>div:first-child{
  display:flex;
  min-width:0;
  flex-direction:column;
  gap:3px;
}
.ownerAdminZone small{color:#667085}
.ownerRowActions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:6px;
}
.ownerRowActions .btn{white-space:nowrap}
table .ownerRowActions{min-width:150px}

/* Preserve a comfortable owner edit form on all sizes */
#residentEditModal .sheet,
#requestOwnerEditModal .sheet{width:min(680px,100%)}

@media(max-width:720px){
  .ownerAdminZone{
    flex-direction:column;
    align-items:stretch;
  }
  .ownerAdminZone .ownerRowActions{
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .ownerAdminZone .ownerRowActions .btn{width:100%;justify-content:center}
  table .ownerRowActions{
    min-width:130px;
    flex-direction:column;
    align-items:stretch;
  }
  table .ownerRowActions .btn{width:100%;justify-content:center}
}


/* v2.0.1 — own delete confirmations instead of browser confirm() */
.ownerDeleteSheet{width:min(560px,100%)}
.ownerDeleteBody{display:flex;gap:14px;align-items:flex-start;margin:6px 0 16px}
.ownerDeleteBody h3{margin:2px 0 6px;font-size:18px;overflow-wrap:anywhere}
.ownerDeleteBody p{margin:0;line-height:1.5}
.ownerDeleteIcon{
  display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;
  border-radius:999px;background:#fef3f2;color:#b42318;font-size:22px;font-weight:950
}
.ownerDeleteWarning{
  padding:12px 13px;border:1px solid #fda29b;border-radius:13px;
  background:#fffbfa;color:#b42318;font-size:12px;font-weight:750;line-height:1.45
}
.ownerDeleteActions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.ownerDeleteActions .btn{min-width:130px;justify-content:center}
.ownerDeleteActions .dangerStrong{background:#b42318;border-color:#b42318}
.ownerDeleteActions .dangerStrong:hover{background:#912018}
.ownerDeleteActions .btn:disabled{opacity:.55;pointer-events:none}
@media(max-width:560px){
  .ownerDeleteActions{display:grid;grid-template-columns:1fr 1fr}
  .ownerDeleteActions .btn{min-width:0;width:100%}
}


/* v2.2.0 — work calculator */
.workItem{align-items:flex-start}
.workFormulaRead,.estimateFormula{
  display:block;margin-top:7px;color:#475467;font-size:11px;line-height:1.4
}
.workCalculator{
  margin-top:11px;padding:11px;border:1px solid #d0d5dd;border-radius:14px;
  background:#f9fafb;color:#101828
}
.workCalcTop{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:9px}
.workCalcFormula{font-size:11px;font-weight:750;color:#344054}
.workCalcFields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.workCalculator .field{margin:0}
.readOnlyPrice{
  min-height:42px;display:flex;align-items:center;padding:9px 11px;
  border:1px solid #e4e7ec;border-radius:10px;background:#fff;font-weight:850
}
.workOverrideToggle{margin:10px 0 6px}
.workOverridePanel{
  margin:6px 0 10px;padding:10px;border:1px solid #fda29b;border-radius:12px;background:#fffbfa
}
.workOverridePanel>small{display:block;margin-top:7px;color:#b54708}
.workCalcSave{margin-top:9px}
.priceRangeField.hidden,.priceFixedField.hidden{display:none!important}
#pricePricingHelp{margin:0}
@media(max-width:620px){
  .workCalcFields{grid-template-columns:1fr}
  .workCalculator{padding:9px}
}


/* v2.2.2 — resident preliminary-cost notice */
.residentEstimateNotice{
  display:flex;
  align-items:flex-start;
  gap:11px;
  margin:18px 0 4px;
  padding:14px 15px;
  border:1px solid #fedf89;
  border-radius:15px;
  background:#fffaeb;
  color:#344054;
}
.residentEstimateNoticeIcon{
  display:grid;
  place-items:center;
  flex:0 0 30px;
  width:30px;
  height:30px;
  border-radius:999px;
  background:#f79009;
  color:#fff;
  font-size:16px;
  font-weight:950;
  line-height:1;
}
.residentEstimateNotice>div:last-child{min-width:0}
.residentEstimateNotice b{
  display:block;
  margin:1px 0 4px;
  color:#93370d;
  font-size:13px;
  font-weight:900;
}
.residentEstimateNotice p{
  margin:0;
  color:#7a2e0e;
  font-size:12px;
  line-height:1.5;
  font-weight:650;
}
@media(max-width:560px){
  .residentEstimateNotice{
    margin-top:16px;
    padding:13px;
    border-radius:14px;
  }
  .residentEstimateNotice p{
    font-size:11px;
    line-height:1.55;
  }
}

/* v2.2.3 */
.workUnitWarning{margin:0 0 9px;padding:8px 10px;border:1px solid #fedf89;border-radius:10px;background:#fffaeb;color:#93370d;font-size:10px;font-weight:750;line-height:1.4}
#priceUnitName[readonly]{background:#f2f4f7;color:#475467}

/* v2.2.4 — actual cost reset states */
.actualMaterialRow select[data-mat-status]{font-weight:750}
.actualMaterialRow input[data-mat-cost]:disabled{background:#f2f4f7;color:#98a2b3}
.actualMaterialRow input[data-mat-cost]::placeholder{color:#98a2b3;opacity:1}

/* v2.3.0 — verified actual-cost saving */
.actualSaveState{margin-top:8px;min-height:16px;font-size:10px;font-weight:750;color:#667085}
.actualSaveState.saving{color:#175cd3}
.actualSaveState.error{color:#b42318}

/* v2.3.0 — одноразовая проверка регистрации жильца */
.verificationSheet{width:min(1180px,100%)}
.verificationSecurityNote{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;margin:14px 0 16px;padding:12px 14px;border:1px solid #fedf89;background:#fffaeb;color:#7a2e0e;border-radius:14px;font-size:12px;line-height:1.45}
.verificationSecurityNote span{color:#93370d;text-align:right}
.verificationGrid{display:grid;grid-template-columns:minmax(330px,.9fr) minmax(420px,1.35fr);gap:16px;align-items:start}
.verificationSectionTitle{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:#667085;margin:16px 0 8px}
.verificationData{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.verificationData>div{padding:10px 11px;border:1px solid var(--line);background:#f8fafc;border-radius:12px;min-width:0}
.verificationData span{display:block;font-size:10px;color:#98a2b3;font-weight:800;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.verificationData b{display:block;font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.verificationDocuments{display:grid;gap:8px}
.verificationDoc{width:100%;border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px;display:flex;gap:12px;align-items:center;justify-content:space-between;text-align:left;cursor:pointer;color:var(--ink)}
.verificationDoc:hover,.verificationDoc.active{background:#f8fafc;border-color:#98a2b3}
.verificationDoc span:first-child{min-width:0}.verificationDoc b{display:block;font-size:12px}.verificationDoc small{display:block;color:#667085;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}
.verificationDoc>span:last-child{font-size:11px;font-weight:800;color:#475467;white-space:nowrap}
.verificationViewer{position:relative;min-height:520px;height:min(64vh,720px);border:1px solid var(--line);background:#f2f4f7;border-radius:16px;overflow:hidden;display:grid;place-items:center}
.verificationViewer img,.verificationViewer iframe{width:100%;height:100%;border:0;object-fit:contain;background:#fff}
.verificationViewerEmpty{padding:28px;text-align:center;color:#667085;font-size:13px}
.verificationWatermark{position:absolute;left:14px;right:14px;bottom:12px;padding:7px 10px;border-radius:10px;background:rgba(16,24,40,.72);color:#fff;font-size:10px;font-weight:800;text-align:center;pointer-events:none;z-index:3;letter-spacing:.02em}
.verificationChecklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}
.verificationChecklist label{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer}
.verificationChecklist input{margin-top:3px;accent-color:#101828}.verificationChecklist b{display:block;font-size:12px}.verificationChecklist small{display:block;color:#667085;margin-top:3px;line-height:1.35}
.verificationDecisionBar{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:12px}
.verificationDecisionBar .btn:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:900px){.verificationGrid{grid-template-columns:1fr}.verificationViewer{min-height:420px;height:55vh}.verificationSecurityNote{display:block}.verificationSecurityNote span{display:block;text-align:left;margin-top:4px}}
@media(max-width:560px){.verificationData,.verificationChecklist{grid-template-columns:1fr}.verificationViewer{min-height:340px;height:48vh}.verificationDecisionBar .btn{width:100%;justify-content:center}}


/* v2.4.0 — printable request act / estimate */
.requestDocsCard{display:flex;align-items:center;justify-content:space-between;gap:18px}.requestDocsCard p{margin:5px 0 0;max-width:760px}.workActSheet textarea{min-height:90px;resize:vertical}.workActActions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.workActFinalField .check{display:flex;align-items:center;gap:9px;font-weight:800}.workActFinalField .check input{width:auto}.workActFinalField small{display:block;margin-top:6px}@media(max-width:720px){.requestDocsCard{align-items:stretch;flex-direction:column}.requestDocsCard .btn,.workActActions .btn{width:100%}.workActActions{flex-direction:column-reverse}}


/* v2.5.0 — internal/service requests */
.serviceContactCard{border-left:4px solid #344054}.clickRow{cursor:pointer}.clickRow:hover td{background:#f8fafc}

/* v2.7.0 — Дополнительные услуги */
.serviceTabs{display:flex;gap:8px;margin:14px 0 18px}.serviceTabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:9px 14px;font-weight:800;cursor:pointer}.serviceTabs button.active{background:#111827;color:#fff;border-color:#111827}.serviceCatalogGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.serviceCatalogCard h3{margin:7px 0}.servicePrice{font-size:22px;font-weight:900;letter-spacing:-.03em;margin:14px 0}.serviceTicket{border-left:4px solid #7c3aed}.serviceFilters{margin-bottom:14px}.serviceLine{display:grid;grid-template-columns:110px minmax(180px,1fr) 90px 120px 100px 42px;gap:7px;align-items:center;margin:7px 0}.serviceLine input,.serviceLine select{width:100%;padding:9px;border:1px solid var(--line);border-radius:9px}.serviceLine .qty,.serviceLine .money,.serviceLine .unit{min-width:0}.serviceChat{display:grid;gap:8px;max-height:300px;overflow:auto;margin:10px 0}.serviceChat .comment{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:10px}.serviceChat .comment p{margin:5px 0}.serviceChat .comment small{color:var(--muted)}
@media(max-width:900px){.serviceCatalogGrid{grid-template-columns:1fr 1fr}.serviceLine{grid-template-columns:1fr 70px 100px 80px 40px}.serviceLine select{grid-column:1/-1}}
@media(max-width:620px){.serviceCatalogGrid{grid-template-columns:1fr}.serviceLine{grid-template-columns:1fr 1fr}.serviceLine select,.serviceLine input:first-of-type{grid-column:1/-1}.serviceLine .miniBtn{justify-self:end}.serviceTabs{overflow:auto}.serviceTabs button{white-space:nowrap}}

/* v2.8.1 — executor work report */
.executorWorkReportCard{margin-top:14px;border:1px solid #c7d7fe;background:linear-gradient(180deg,#fff 0%,#f8fbff 100%)}
.executorWorkReportCard textarea{min-height:150px;line-height:1.55}
.workReportToolbar{align-items:center;flex-wrap:wrap}
.workReportHint{margin-top:10px;font-size:12px}
.workReportHint.recording{color:#b42318;font-weight:700}
.workReportHint.error{color:#b42318}
#workReportVoiceBtn.recording{background:#fee4e2;color:#b42318;border-color:#fecdca}
.dispatcherWorkReport p{line-height:1.6;margin:0}
.executorEstimateReadOnly .estimateDetailItem{cursor:default}
.executorResidentContact .toolbar{align-items:center}
@media(max-width:700px){.workReportToolbar .btn{width:100%;justify-content:center}.executorWorkReportCard textarea{min-height:180px}}


/* v2.9.0 — dashboard services + unified report */
.dashboardKpiGrid,.reportKpiGrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:13px}
.reportMoneyGrid .stat{cursor:default}.reportMoneyGrid .stat:hover{transform:none;box-shadow:none}
@media(max-width:1180px){.dashboardKpiGrid,.reportKpiGrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:780px){.dashboardKpiGrid,.reportKpiGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.dashboardKpiGrid,.reportKpiGrid{grid-template-columns:1fr}}

/* v2.9.2: reliable modal controls on mobile Safari */
body.modalOpen{overscroll-behavior:none}.close:active{transform:scale(.96)}


/* =========================================================
   v3.0.0-alpha1 — MASTER REDESIGN / staff shell + dashboard
   Visual direction approved from WindFarm / ORION references.
   Functional logic stays on v2.9.2.
   ========================================================= */
:root{
  --bg:#f5f7fa;--card:#ffffff;--ink:#0f1728;--muted:#718096;--line:#e7ebf0;
  --accent:#079b63;--accent-2:#10b981;--green:#078a59;--amber:#d97706;--red:#dc3b36;--blue:#2563eb;
  --nav:#0b1728;--nav-2:#112238;--shadow:0 10px 30px rgba(15,23,40,.055);--shadow-lg:0 24px 70px rgba(15,23,40,.11)
}
body{background:var(--bg);font-feature-settings:"cv02","cv03","cv04","cv11";letter-spacing:-.005em}
.v3Shell.appLayout{grid-template-columns:220px minmax(0,1fr)}
.v3Shell .sidebar{background:linear-gradient(180deg,#0b1728 0%,#0a1625 100%);padding:24px 14px 18px;border-right:1px solid rgba(255,255,255,.04);box-shadow:8px 0 28px rgba(8,20,35,.05)}
.v3Brand{display:flex;align-items:center;gap:10px!important;margin:0 8px 4px!important;font-size:18px!important;letter-spacing:-.04em!important}
.brandMark{width:32px;height:32px;border-radius:10px;background:linear-gradient(145deg,#11b875,#078a59);display:grid;place-items:center;color:white;font-size:16px;box-shadow:0 8px 22px rgba(16,185,129,.20)}
.v3Shell .sidebarRole{margin:0 50px 25px 50px;font-size:10px;white-space:nowrap;color:#728199}
.v3Nav{margin-top:8px!important}.navSectionLabel{margin:22px 12px 7px;color:#5f6f85;font-size:8px;line-height:1;font-weight:900;text-transform:uppercase;letter-spacing:.13em}
.v3Nav button{min-height:39px;padding:10px 11px!important;margin:2px 0!important;border-radius:10px!important;color:#93a1b5!important;font-size:12px!important;font-weight:720!important;gap:9px!important;transition:background .15s,color .15s,transform .15s}
.v3Nav button .ico{width:22px!important;font-size:14px;color:#8fa0b6}
.v3Nav button:hover{background:rgba(255,255,255,.055)!important;color:#e8edf4!important;transform:translateX(1px)}
.v3Nav button.active{background:linear-gradient(135deg,rgba(16,185,129,.22),rgba(16,185,129,.11))!important;color:#fff!important;box-shadow:inset 0 0 0 1px rgba(58,215,156,.08)}
.v3Nav button.active .ico{color:#34d399}
.v3Topbar.topbar{height:72px;background:rgba(255,255,255,.94);backdrop-filter:blur(18px);border-bottom:1px solid #edf0f3;padding:0 30px;gap:24px}
.topbarHeading{min-width:180px}.topbarHeading h1{font-size:18px!important;letter-spacing:-.025em}.topbarHeading small{display:block;margin-top:3px;color:#98a2b3;font-size:9px;font-weight:650}
.topbarSearch{margin-left:auto;width:min(360px,31vw);height:38px;display:flex;align-items:center;gap:8px;border:1px solid #e3e8ef;border-radius:11px;background:#f9fbfc;padding:0 11px;color:#98a2b3;transition:.15s}
.topbarSearch:focus-within{background:#fff;border-color:#b8c2cf;box-shadow:0 0 0 3px rgba(16,185,129,.08)}
.topbarSearch input{min-width:0;flex:1;border:0;outline:0;background:transparent;font-size:11px;color:#172033}.topbarSearch input::placeholder{color:#9aa5b4}
.v3Topbar .userBox{gap:9px}.v3Topbar .userIdentity{text-align:left}.v3Topbar .userIdentity b{font-size:12px}.v3Topbar .avatar{width:36px;height:36px;background:#0f1e31;font-size:12px}.v3Topbar .logoutBtn{height:36px;background:#f4f6f8;padding:0 12px;font-size:10px}
.v3Topbar .notifyBtn{width:36px;height:36px;border-radius:11px;background:#fff;font-size:15px}
.v3Shell .content{max-width:1600px;padding:30px 32px 48px}
.v3Shell .title{font-size:32px;line-height:1.05;margin:5px 0 0;letter-spacing:-.055em}.v3Shell .eyebrow{font-size:9px;color:#9aa6b5;letter-spacing:.13em}.dashboardLead{margin-top:8px;color:#7d8999;font-size:12px}
.dashboardIntro{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.dashboardActions{display:flex;gap:8px}.dashboardActions .btn{min-height:38px;border-radius:10px;font-size:10px;padding:9px 12px}
.v3KpiGrid.dashboardKpiGrid{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.v3Stat.stat{position:relative;min-height:126px;padding:15px 15px 14px;border-radius:15px;border:1px solid #e7ebf0;box-shadow:0 1px 0 rgba(15,23,40,.015);overflow:hidden;background:#fff}
.v3Stat.stat:before{content:"";position:absolute;right:-22px;top:-28px;width:80px;height:80px;border-radius:50%;opacity:.08;background:currentColor}.v3Stat.stat:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(15,23,40,.07);border-color:#dce2e8}
.v3Stat .statIcon{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;margin-bottom:12px;font-size:12px;background:#eefbf5;color:#078a59;font-weight:900}.v3Stat.blue .statIcon{background:#eef4ff;color:#2563eb}.v3Stat.violet .statIcon{background:#f3f0ff;color:#7257d6}.v3Stat.orange .statIcon{background:#fff3e8;color:#e77922}.v3Stat.money .statIcon{background:#eefbf5;color:#079b63}.v3Stat.moneyAlt .statIcon{background:#edf7ff;color:#1682cf}
.v3Stat small{display:block;font-size:9px;font-weight:700;color:#7b8796;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v3Stat b{font-size:24px;margin-top:5px;letter-spacing:-.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v3Stat.money b,.v3Stat.moneyAlt b{font-size:17px;margin-top:8px}.v3Stat em{display:block;margin-top:6px;font-style:normal;font-size:8px;color:#9aa5b4}.v3Stat.green em{color:#078a59}.v3Stat.orange em{color:#c46a1e}
.dashboardMainGrid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.15fr);gap:12px;margin-top:12px}.dashboardBottomGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}
.dashboardCard.card{border-radius:16px;padding:17px 18px;border-color:#e7ebf0;box-shadow:0 1px 0 rgba(15,23,40,.018);min-width:0}.dashboardCardHead.sectionHead{margin:0 0 12px}.dashboardCardHead h2{font-size:14px;letter-spacing:-.025em}.textBtn{border:0;background:transparent;color:#4087dd;font-size:9px;font-weight:750;padding:6px 0;cursor:pointer}.textBtn:hover{color:#1768c9}
.dashObjectRow,.dashFeedRow{width:100%;border:0;background:#fff;text-align:left;display:grid;align-items:center;cursor:pointer;color:#172033;transition:.12s}.dashObjectRow:hover,.dashFeedRow:hover{background:#fafcfd}
.dashObjectRow{grid-template-columns:34px minmax(0,1fr) 48px 74px 10px;gap:9px;padding:10px 3px;border-top:1px solid #f0f2f5}.dashObjectRow:first-child{border-top:0}.dashObjectAvatar{width:30px;height:30px;border-radius:9px;background:linear-gradient(145deg,#e7f7ef,#d8f1e6);color:#078a59;display:grid;place-items:center;font-size:11px;font-weight:900}.dashObjectName{min-width:0}.dashObjectName b{display:block;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashObjectName small,.dashObjectMetric small{display:block;margin-top:3px;color:#98a2b3;font-size:8px}.dashObjectMetric{text-align:right}.dashObjectMetric b{font-size:11px}.dashObjectBar{height:4px;border-radius:99px;background:#eef1f4;overflow:hidden}.dashObjectBar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#10b981,#ff8a34)}.dashChevron{color:#a4adba;font-size:15px}
.trendLegend{display:flex;gap:12px;align-items:center;color:#758195;font-size:8px}.trendLegend span{display:flex;align-items:center;gap:5px}.trendLegend i{width:6px;height:6px;border-radius:50%;display:inline-block}.trendLegend i.req{background:#5367e8}.trendLegend i.srv{background:#10a76a}.trendChart{height:230px;padding:4px 2px 0}.trendChart svg{width:100%;height:205px;overflow:visible}.trendGrid line{stroke:#edf0f3;stroke-width:1;vector-effect:non-scaling-stroke}.trendPath{fill:none;stroke-width:2.2;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.trendPath.requests{stroke:#5367e8}.trendPath.services{stroke:#10a76a}.trendDot{stroke:#fff;stroke-width:1.5;vector-effect:non-scaling-stroke}.trendDot.requests{fill:#5367e8}.trendDot.services{fill:#10a76a}.trendAxis{display:flex;justify-content:space-between;margin-top:-4px;color:#a0a9b6;font-size:8px}
.dashFeedRow{grid-template-columns:30px minmax(0,1fr) auto;gap:9px;padding:10px 2px;border-top:1px solid #f0f2f5}.dashFeedRow:first-child{border-top:0}.feedIcon{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;font-size:11px}.feedIcon.request{background:#eef4ff;color:#315de0}.feedIcon.service{background:#fff4e7;color:#e77922}.feedIcon.maintenance{background:#ecfaf3;color:#079b63}.feedBody{min-width:0}.feedBody b{display:block;font-size:9.5px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.feedBody small{display:block;margin-top:4px;color:#98a2b3;font-size:7.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashFeedRow .badge{font-size:7px;padding:4px 6px}.maintenanceDate{font-size:8px;color:#667085;font-weight:700;white-space:nowrap}.empty.compact{padding:28px 12px;font-size:10px;border-radius:12px}
.v3Shell .card,.v3Shell .tableWrap,.v3Shell .ticket{border-color:#e7ebf0;box-shadow:0 1px 0 rgba(15,23,40,.015)}.v3Shell .card{border-radius:16px}.v3Shell .btn{border-radius:10px;background:#0d9661;box-shadow:none}.v3Shell .btn:hover{filter:brightness(.97)}.v3Shell .btn.light{background:#f4f6f8;color:#233044}.v3Shell .btn.red{background:#feecec;color:#c73532}.v3Shell .field input,.v3Shell .field select,.v3Shell .field textarea,.v3Shell .toolbar input,.v3Shell .toolbar select{border-color:#e0e5eb;border-radius:10px}.v3Shell .badge,.v3Shell .pill{border-radius:7px}.v3Shell .badge{padding:5px 7px}.v3Shell .pill{padding:5px 7px;background:#f5f7f9}.v3Shell .tableWrap{border-radius:15px}.v3Shell th{background:#fbfcfd;color:#98a2b3}.v3Shell tr.clickable:hover td{background:#f8fbfa}
@media(max-width:1320px){.v3KpiGrid.dashboardKpiGrid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboardBottomGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboardBottomGrid .dashboardCard:last-child{grid-column:1/-1}}
@media(max-width:1050px){.v3Shell.appLayout{grid-template-columns:205px minmax(0,1fr)}.v3Topbar.topbar{padding:0 22px}.v3Shell .content{padding:24px 22px 42px}.dashboardMainGrid{grid-template-columns:1fr}.topbarSearch{width:min(290px,28vw)}}
@media(max-width:820px){.v3Shell.appLayout{grid-template-columns:1fr}.v3Topbar.topbar{height:68px;padding:0 14px}.topbarHeading small,.topbarSearch,.logoutBtn{display:none!important}.v3Topbar .userIdentity{display:none}.v3Shell .content{padding:18px 13px 92px}.dashboardIntro{align-items:flex-start}.dashboardActions{display:none}.v3KpiGrid.dashboardKpiGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v3Stat.stat{min-height:116px;padding:13px}.v3Stat small{font-size:8px}.dashboardMainGrid,.dashboardBottomGrid{grid-template-columns:1fr;gap:9px;margin-top:9px}.dashboardBottomGrid .dashboardCard:last-child{grid-column:auto}.dashboardCard.card{padding:15px}.trendChart{height:210px}.trendChart svg{height:185px}.mobileNav{box-shadow:0 -8px 24px rgba(15,23,40,.05)}}
@media(max-width:480px){.v3KpiGrid.dashboardKpiGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.v3Stat b{font-size:22px}.v3Stat.money b,.v3Stat.moneyAlt b{font-size:14px}.dashObjectRow{grid-template-columns:30px minmax(0,1fr) 40px 10px}.dashObjectBar{display:none}.dashboardLead{font-size:11px}.v3Shell .title{font-size:29px}}


/* =========================================================
   v3.0.0-alpha2 — Requests + request detail
   ========================================================= */
.requestsIntro{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}.requestsActions{display:flex;gap:8px}.requestsActions .btn{min-height:38px;font-size:10px}
.requestQuickTabs{display:flex;gap:5px;align-items:center;margin-bottom:12px;border-bottom:1px solid #e7ebf0;padding:0 2px}.requestQuickTabs button{position:relative;border:0;background:transparent;padding:10px 11px 12px;color:#697586;font-size:10px;font-weight:750;cursor:pointer}.requestQuickTabs button:after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;background:transparent;border-radius:4px}.requestQuickTabs button.active{color:#0b8c5b}.requestQuickTabs button.active:after{background:#12a76d}.requestQuickTabs button span{display:inline-grid;place-items:center;min-width:18px;height:18px;margin-left:5px;padding:0 5px;border-radius:7px;background:#f2f4f7;color:#7a8594;font-size:8px}.requestQuickTabs button.active span{background:#e9f8f1;color:#078a59}
.requestFilters.card{display:grid;grid-template-columns:minmax(135px,.75fr) minmax(145px,.85fr) minmax(135px,.72fr) minmax(250px,1.65fr);gap:8px;padding:10px;margin-bottom:12px;border-radius:14px}.requestFilters select,.requestSearch{height:38px;background:#fbfcfd;border:1px solid #e3e8ee!important;border-radius:9px!important;font-size:10px}.requestFilters select{padding:0 30px 0 10px}.requestSearch{display:flex;align-items:center;gap:7px;padding:0 10px;color:#98a2b3}.requestSearch input{width:100%;height:auto!important;padding:0!important;border:0!important;background:transparent!important;outline:0;font-size:10px}.requestSearch:focus-within{background:#fff;border-color:#b9c4d0!important;box-shadow:0 0 0 3px rgba(16,185,129,.07)}
.requestListV3{border:1px solid #e6eaf0;border-radius:16px;background:#fff;overflow:hidden;box-shadow:0 1px 0 rgba(15,23,40,.018)}.requestTableV3{width:100%}.requestTableHead,.requestRowV3{display:grid;grid-template-columns:62px minmax(230px,1.65fr) minmax(135px,.9fr) 88px 104px minmax(120px,.85fr) 108px 22px;gap:10px;align-items:center}.requestTableHead{min-height:42px;padding:0 15px;border-bottom:1px solid #edf0f3;background:#fbfcfd;color:#98a2b3;font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.045em}.requestRowV3{width:100%;min-height:67px;padding:10px 15px;border:0;border-bottom:1px solid #eef1f4;background:#fff;text-align:left;color:#172033;cursor:pointer;transition:.12s}.requestRowV3:last-child{border-bottom:0}.requestRowV3:hover{background:#fafcfc}.reqNumber{font-size:9px;font-weight:800;color:#667085}.reqSubject,.reqObject,.reqExecutor{min-width:0}.reqSubject b,.reqObject b,.reqExecutor b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reqSubject b{font-size:10.5px}.reqSubject small,.reqObject small,.reqExecutor small{display:block;margin-top:4px;color:#98a2b3;font-size:7.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reqObject b,.reqExecutor b{font-size:9px;font-weight:700}.reqCreated{font-size:8px;color:#7e8998}.reqArrow{font-size:16px;color:#b2bac5}.requestSourceMark{display:inline-block;margin-top:4px;padding:3px 5px;border-radius:5px;font-size:6.5px;font-weight:800}.requestSourceMark.staff{background:#eef4ff;color:#3867d6}.requestSourceMark.resident{background:#eaf8f1;color:#078a59}.requestStatus,.requestPriority{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:4px 7px;border-radius:6px;font-size:7.5px;font-weight:800;font-style:normal;white-space:nowrap}.requestStatus.blue,.requestPriority.blue{background:#edf4ff;color:#2e67cf}.requestStatus.orange,.requestPriority.orange{background:#fff3e6;color:#cf711e}.requestStatus.violet,.requestPriority.violet{background:#f2efff;color:#6d55ce}.requestStatus.green,.requestPriority.green{background:#eaf8f1;color:#078a59}.requestStatus.gray,.requestPriority.gray{background:#f1f3f5;color:#697586}.requestStatus.red,.requestPriority.red{background:#feecec;color:#d23d3a}.requestCardsMobile{display:none}.requestEmptyV3{border:0!important;border-radius:0!important;padding:60px 20px!important}
.requestModalV3{align-items:stretch;padding:14px}.requestSheetV3.sheet{width:min(1240px,96vw);max-width:1240px;height:calc(100vh - 28px);max-height:calc(100vh - 28px);padding:0;overflow:auto;border-radius:18px;background:#f8fafb}.requestSheetHeadV3{position:sticky;top:0;z-index:15;padding:18px 22px 16px;background:rgba(255,255,255,.96);backdrop-filter:blur(16px);border-bottom:1px solid #e8ecf0}.requestSheetHeadV3 h2{font-size:20px;letter-spacing:-.035em;margin-top:3px}.requestSheetHeadV3 .close{background:#f4f6f8;border-radius:10px;width:34px;height:34px}.requestDetailV3{padding:0 22px 26px}.requestHeroV3{padding:15px 2px 12px}.requestHeroBadges,.requestHeroMeta{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.requestHeroMeta{margin-top:8px;color:#8994a3;font-size:8px}.requestHeroMeta i{font-style:normal;color:#c0c6ce}.requestDetailTabsV3{position:sticky;top:69px;z-index:12;display:flex;gap:3px;margin:0 -22px 14px;padding:0 22px;background:rgba(248,250,251,.96);backdrop-filter:blur(12px);border-bottom:1px solid #e7ebf0}.requestDetailTabsV3 button{border:0;background:transparent;padding:11px 10px;color:#687587;font-size:9px;font-weight:800;cursor:pointer}.requestDetailTabsV3 button:hover{color:#078a59}.requestDetailGridV3{display:grid;grid-template-columns:minmax(0,1.72fr) minmax(270px,.72fr);gap:14px;align-items:start}.requestDetailMainV3{min-width:0}.requestDetailAsideV3{position:sticky;top:116px;display:grid;gap:12px}.requestDetailAsideV3>.card,.requestAsideSection>.contactCard,.requestOwnerV3{margin:0!important}.requestDetailAsideV3 .card{padding:15px}.requestDetailAsideV3 .card h3{font-size:12px;margin-bottom:11px}.requestDetailAsideV3 .fields{grid-template-columns:1fr}.requestDetailAsideV3 .btn{width:100%}.requestDetailAsideV3 .toolbar{display:grid;grid-template-columns:1fr;gap:6px}.requestInfoV3.card{padding:18px}.requestBlockTitle{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.requestBlockTitle h3{font-size:13px;margin-top:3px}.requestCategoryChip{padding:5px 8px;border-radius:7px;background:#f2f5f7;color:#657184;font-size:8px;font-weight:750}.requestDescriptionV3{margin:14px 0 16px;font-size:11px;line-height:1.55;color:#263244}.requestInfoMetaGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding-top:14px;border-top:1px solid #edf0f3}.requestInfoMetaGrid>div{min-width:0}.requestInfoMetaGrid small{display:block;color:#98a2b3;font-size:7.5px}.requestInfoMetaGrid b{display:block;margin-top:4px;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.requestInfoMetaGrid em{display:block;margin-top:3px;color:#98a2b3;font-size:7px;font-style:normal}.requestMediaV3{margin-top:16px}.requestMediaV3>small{display:block;margin-bottom:8px;color:#7e8997;font-size:8px;font-weight:800}.requestMediaV3 .thumbGrid{grid-template-columns:repeat(4,minmax(0,1fr))}.requestMediaV3 .thumbBtn img{height:94px}.requestSectionV3{scroll-margin-top:126px;margin-top:12px}.requestSectionV3>.sectionHead{margin:15px 2px 8px}.requestSectionV3>.sectionHead h2{font-size:12px}.aiRequestV3{padding:16px;border:1px solid #e6eaf0;border-radius:15px;background:#fff}.aiRequestV3>.sectionHead{margin:0 0 9px}.requestAsideSection>.sectionHead{margin:0 0 7px 2px}.requestAsideSection>.sectionHead h2{font-size:11px}.requestDetailAsideV3 .contactCard{border:1px solid #e7ebf0;border-radius:14px;padding:14px;background:#fff}.requestDetailAsideV3 .contactCard h3{font-size:11px}.requestEquipmentMini b{display:block;margin-top:6px;font-size:10px}.requestEquipmentMini small{display:block;margin-top:5px;color:#98a2b3;font-size:8px}.requestOwnerV3{display:grid!important;gap:10px;padding:14px!important;border-radius:14px!important}.requestOwnerV3 .ownerRowActions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.requestOwnerV3 small{display:block;margin-top:5px}.requestDocsCard{align-items:center}
@media(max-width:1180px){.requestTableHead,.requestRowV3{grid-template-columns:54px minmax(210px,1.55fr) minmax(120px,.85fr) 84px 98px minmax(105px,.75fr) 22px}.requestTableHead>span:nth-child(7),.requestRowV3>.reqCreated{display:none}.requestDetailGridV3{grid-template-columns:minmax(0,1.5fr) minmax(245px,.7fr)}.requestInfoMetaGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.requestFilters.card{grid-template-columns:1fr 1fr}.requestSearch{grid-column:1/-1}.requestTableHead,.requestRowV3{grid-template-columns:50px minmax(190px,1.5fr) minmax(120px,.85fr) 94px 96px 22px}.requestTableHead>span:nth-child(4),.requestRowV3>span:nth-child(4),.requestTableHead>span:nth-child(6),.requestRowV3>.reqExecutor{display:none}.requestDetailGridV3{grid-template-columns:1fr}.requestDetailAsideV3{position:static;grid-row:1}.requestDetailAsideV3{grid-template-columns:1fr 1fr}.requestDetailAsideV3>.card:first-child{grid-column:1/-1}}
@media(max-width:820px){.requestsIntro{align-items:flex-start}.requestsActions .btn.light{display:none}.requestQuickTabs{overflow-x:auto;scrollbar-width:none;margin-left:-13px;margin-right:-13px;padding-left:13px}.requestQuickTabs::-webkit-scrollbar{display:none}.requestQuickTabs button{white-space:nowrap}.requestFilters.card{grid-template-columns:1fr 1fr;padding:8px}.requestSearch{grid-column:1/-1}.requestTableV3{display:none}.requestCardsMobile{display:grid;gap:0}.requestMobileCard{width:100%;border:0;border-bottom:1px solid #edf0f3;background:#fff;text-align:left;padding:14px;color:#172033}.requestMobileCard:last-child{border-bottom:0}.requestMobileTop{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.requestMobileTop>span{font-size:8px;font-weight:800;color:#7e8997}.requestMobileCard>b{display:block;font-size:11px}.requestMobileCard>p{margin:5px 0 10px;color:#7d8997;font-size:8px}.requestMobileCard>div:last-child{display:flex;align-items:center;justify-content:space-between;gap:8px}.requestMobileCard>div:last-child small{color:#8792a1;font-size:7.5px}.requestModalV3{padding:0;align-items:stretch}.requestSheetV3.sheet{width:100vw;max-width:none;height:100dvh;max-height:100dvh;border-radius:0}.requestSheetHeadV3{padding:15px 14px 13px}.requestDetailV3{padding:0 13px 90px}.requestDetailTabsV3{top:64px;margin:0 -13px 11px;padding:0 9px;overflow-x:auto}.requestDetailTabsV3 button{white-space:nowrap}.requestDetailAsideV3{grid-template-columns:1fr}.requestDetailAsideV3>.card:first-child{grid-column:auto}.requestInfoV3.card{padding:15px}.requestInfoMetaGrid{grid-template-columns:1fr 1fr}.requestMediaV3 .thumbGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.requestMediaV3 .thumbBtn img{height:112px}.requestOwnerV3 .ownerRowActions{grid-template-columns:1fr}.requestHeroV3{padding-top:12px}}
@media(max-width:520px){.requestsIntro{display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:16px}.requestsIntro .title{font-size:29px}.requestsActions{width:100%;align-self:stretch}.requestsActions .btn:first-child{width:100%;height:44px;min-height:44px;padding:0 16px;border-radius:13px;font-size:11px;justify-content:center;box-shadow:0 8px 20px rgba(8,164,104,.16)}.requestsActions .btn:first-child:after{content:none}.requestFilters.card{grid-template-columns:1fr}.requestSearch{grid-column:auto}.requestInfoMetaGrid{grid-template-columns:1fr 1fr}.requestHeroMeta{gap:5px}.requestHeroMeta span:last-child{width:100%;margin-top:2px}.requestDetailTabsV3{top:63px}}


/* =========================================================
   v3.0.0-alpha2.3 — mobile request tags + estimate redesign
   ========================================================= */
.requestTypeTags{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.requestTypeTag{display:inline-flex;align-items:center;min-height:20px;padding:4px 7px;border-radius:7px;font-size:7px;line-height:1;font-weight:850;white-space:nowrap}.requestTypeTag.staff{background:#eef4ff;color:#3565d4}.requestTypeTag.resident{background:#eaf8f1;color:#078a59}.requestTypeTag.equipment{background:#f2f0ff;color:#6f58ca}.requestTypeTag.emergency{background:#feecec;color:#d13d39}.requestHeroBadges .requestTypeTag{min-height:22px;font-size:7.5px}

.estimateBox.estimateV3{background:#fff;color:#172033;border:1px solid #e5eaf0;border-radius:18px;padding:18px;box-shadow:0 1px 0 rgba(15,23,40,.02);overflow:hidden}.estimateV3.estimateV3Ai{border-color:#cfeee0;background:linear-gradient(180deg,#fbfffd 0,#fff 34%)}.estimateV3Header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.estimateV3Heading{display:flex;align-items:flex-start;gap:11px;min-width:0}.estimateV3Icon{flex:0 0 auto;width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:#eaf8f1;color:#078a59;font-size:15px;font-weight:900}.estimateV3Ai .estimateV3Icon{background:linear-gradient(145deg,#e8fbf2,#eef3ff);color:#0b8d5d}.estimateV3Heading h3{margin:3px 0 0;font-size:14px;letter-spacing:-.025em}.estimateV3Badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.estimateV3Chip{display:inline-flex;align-items:center;min-height:21px;padding:4px 7px;border-radius:7px;font-size:7px;font-weight:800}.estimateV3Chip.neutral{background:#f2f4f7;color:#667085}.estimateV3Chip.soft{background:#fff4e7;color:#c96a1c}.estimateV3Chip.ai{background:#edf2ff;color:#5265cd}.estimateV3Amount{text-align:right;min-width:180px}.estimateV3Amount small{display:block!important;margin:0!important;color:#98a2b3!important;font-size:8px!important;font-weight:750}.estimateV3Amount strong{display:block;margin-top:5px;font-size:20px;letter-spacing:-.04em;color:#111827;white-space:nowrap}.estimateV3Amount strong em{font-size:10px;font-style:normal;color:#7c8797;font-weight:700;letter-spacing:0}.estimateV3Notice{display:grid;grid-template-columns:24px minmax(0,1fr);gap:9px;align-items:start;margin-top:15px;padding:11px 12px;border:1px solid #e5eaf0;border-radius:12px;background:#f8fafb}.estimateV3Notice.ai{border-color:#d9eee5;background:#f5fcf8}.estimateV3Notice>span{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;background:#fff;border:1px solid #e4e9ef;color:#608071;font-size:10px;font-weight:900}.estimateV3Notice p{margin:1px 0 0!important;color:#667085!important;font-size:9px!important;line-height:1.45}.estimateV3Notice p b{color:#273446}.estimateV3Metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.estimateV3Metrics>div{padding:11px 12px;border:1px solid #edf0f3;border-radius:11px;background:#fbfcfd;min-width:0}.estimateV3Metrics small{display:block!important;margin:0!important;color:#98a2b3!important;font-size:7.5px!important;font-weight:700}.estimateV3Metrics b{display:block;margin-top:5px;color:#202b3d;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.estimateV3 .estimateDetailItems{margin:13px 0 0;padding:0 12px;border:1px solid #edf0f3;border-radius:13px;background:#fff}.estimateV3 .estimateDetailItem{padding:12px 0}.estimateV3 .estimateDetailItem b{color:#263244}.estimateV3 .estimateItemPrice{color:#1f2937}.estimateV3 .estimateFormula{display:inline-block!important;margin-top:5px!important;padding:4px 6px;border-radius:6px;background:#f5f7f9;color:#778393!important}.estimateV3 .aiEstimateAnalysis{border-color:#dde8e3;background:#f7fbf9;border-radius:13px}.estimateV3 .aiEstimateAnalysis p{color:#435064}.estimateV3Actions{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap;margin-top:13px;padding-top:13px;border-top:1px solid #edf0f3}.estimateV3Actions .btn{min-height:34px}.estimateV3Disclaimer{margin-top:10px;color:#8994a3;font-size:8px;line-height:1.45}.residentEstimateV3 .estimateV3Icon{background:#edf7ff;color:#167dbe}.residentEstimateV3 .estimateDecision{margin-top:13px}.residentEstimateV3 .estimateDetailItems{padding:0 11px}

@media(max-width:820px){
  .requestMobileCard{padding:15px 14px}.requestMobileTop{align-items:flex-start;margin-bottom:7px}.requestMobileNumber{padding-top:4px}.requestMobileCard .requestTypeTags{margin:0 0 9px}.requestMobileCard .requestTypeTag{font-size:7px;padding:4px 7px;min-height:20px}.requestMobileCard>b{font-size:12px;line-height:1.25}.requestMobileCard>p{font-size:8.5px;margin:6px 0 11px}.requestMobileFooter{padding-top:1px}.requestMobileFooter small{max-width:68%;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.requestHeroBadges{gap:5px}
  .estimateBox.estimateV3{padding:14px;border-radius:15px}.estimateV3Header{display:grid;grid-template-columns:1fr;gap:12px}.estimateV3Amount{text-align:left;min-width:0;padding-top:10px;border-top:1px solid #edf0f3}.estimateV3Amount strong{font-size:19px}.estimateV3Metrics{grid-template-columns:1fr;gap:6px}.estimateV3Metrics>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 11px}.estimateV3Metrics b{margin:0;text-align:right}.estimateV3Notice{margin-top:11px}.estimateV3 .estimateDetailItems{padding:0 10px}.estimateV3 .estimateDetailItem{grid-template-columns:1fr auto;gap:10px}.estimateV3 .estimateItemPrice{text-align:right}.estimateV3Actions{display:grid;grid-template-columns:1fr}.estimateV3Actions .btn{width:100%;justify-content:center}.estimateV3Decision{display:grid!important;grid-template-columns:1fr!important}
}
@media(max-width:420px){.estimateV3 .estimateDetailItem{grid-template-columns:1fr}.estimateV3 .estimateItemPrice{text-align:left}.requestMobileFooter small{max-width:62%}}

/* =========================================================
   v3.0.0-alpha3 — services + equipment + internal requests
   ========================================================= */
.moduleIntroV3{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}.moduleActionsV3{display:flex;align-items:center;gap:8px}.moduleActionsV3 .btn{min-height:38px}.moduleKpiGridV3{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:0 0 14px}.moduleKpiV3{min-height:92px;padding:14px;border:1px solid #e7ebf0;border-radius:15px;background:#fff;box-shadow:0 1px 0 rgba(15,23,40,.015);position:relative;overflow:hidden}.moduleKpiV3>span{width:26px;height:26px;display:grid;place-items:center;border-radius:8px;background:#eef9f4;color:#078a59;font-weight:900;font-size:10px;margin-bottom:9px}.moduleKpiV3 small{display:block;color:#8a96a6;font-size:8px;font-weight:750}.moduleKpiV3 b{display:block;margin-top:4px;font-size:17px;letter-spacing:-.035em;color:#172033}.serviceTabsV3{margin:0 0 12px;border-bottom:1px solid #e8edf2;gap:4px}.serviceTabsV3 button{border:0;background:transparent;padding:10px 12px;color:#768397;font-size:9px;font-weight:800;border-bottom:2px solid transparent}.serviceTabsV3 button.active{color:#078a59;border-bottom-color:#10a76a}.serviceFiltersV3{display:grid;grid-template-columns:180px 190px minmax(220px,1fr);gap:8px;padding:9px;margin-bottom:12px;border-radius:14px}.serviceFiltersV3 select,.serviceFiltersV3 input{height:38px;border:1px solid #e1e6ec;border-radius:10px;background:#fff;padding:0 11px}.serviceOrdersV3{border:1px solid #e6eaf0;border-radius:16px;background:#fff;overflow:hidden}.serviceTableV3{overflow:auto}.serviceTableV3 table{width:100%;border-collapse:collapse}.serviceTableV3 th{padding:11px 12px;font-size:7.5px;text-transform:uppercase;letter-spacing:.06em}.serviceTableV3 td{padding:13px 12px;border-top:1px solid #edf0f3;font-size:9px;vertical-align:middle}.serviceTableV3 td b{font-size:9.5px}.serviceTableV3 td small{display:block;margin-top:4px;color:#98a2b3;font-size:7.5px;max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.serviceTableV3 tr:hover td{background:#fafcfd}.serviceStatusV3{display:inline-flex;align-items:center;min-height:22px;padding:4px 7px;border-radius:7px;font-size:7px;font-weight:850;white-space:nowrap;background:#f2f4f7;color:#667085}.serviceStatusV3.green{background:#eaf8f1;color:#078a59}.serviceStatusV3.warn{background:#fff4e7;color:#c96a1c}.serviceStatusV3.orange{background:#fff1e8;color:#d66b1f}.serviceStatusV3.red{background:#feecec;color:#cf3c39}.serviceStatusV3.blue{background:#eef4ff;color:#3565d4}.serviceStatusV3.gray{background:#f0f2f5;color:#7b8492}.serviceMobileListV3,.equipmentMobileListV3{display:none}.serviceCatalogNoticeV3{display:flex;gap:11px;align-items:flex-start;padding:14px 15px;margin-bottom:12px;border:1px solid #dfe8e4;border-radius:14px;background:#f7fcf9}.serviceCatalogNoticeV3>span{width:28px;height:28px;display:grid;place-items:center;border-radius:9px;background:#e8f7ef;color:#078a59;font-weight:900}.serviceCatalogNoticeV3 b{font-size:10px}.serviceCatalogNoticeV3 p{margin:4px 0 0;color:#738094;font-size:8.5px;line-height:1.45}.serviceCatalogGridV3{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.serviceCatalogCardV3{padding:15px!important;display:flex;flex-direction:column;min-height:205px}.serviceCatalogHeadV3{display:flex;justify-content:space-between;align-items:center;gap:8px}.serviceCatalogIconV3{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;background:#eaf8f1;color:#078a59}.serviceCatalogCardV3 h3{font-size:12px;margin:12px 0 6px}.serviceCatalogCardV3 p{font-size:8.5px;line-height:1.45;flex:1}.serviceCatalogCardV3 .servicePrice{font-size:17px;margin:10px 0 6px;letter-spacing:-.035em}.serviceCatalogCardV3 .ownerRowActions{margin-top:10px;padding-top:10px;border-top:1px solid #edf0f3}
.serviceOrderSheetV3.sheet{max-width:1180px}.serviceOrderHeroV3{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;padding:2px 2px 14px;border-bottom:1px solid #edf0f3}.serviceOrderHeroBadgesV3{display:flex;gap:6px;flex-wrap:wrap}.serviceOrderHeroV3 p{margin:7px 0 0;color:#8995a5;font-size:8.5px}.serviceOrderMoneyV3{display:flex;gap:8px}.serviceOrderMoneyV3>div{min-width:120px;padding:10px 12px;border:1px solid #edf0f3;border-radius:11px;background:#fbfcfd;text-align:right}.serviceOrderMoneyV3 small{display:block;color:#98a2b3;font-size:7px}.serviceOrderMoneyV3 b{display:block;margin-top:4px;font-size:13px}.serviceOrderGridV3{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(250px,.65fr);gap:14px;align-items:start;margin-top:14px}.serviceOrderGridV3 main{min-width:0}.serviceOrderAsideV3{display:grid;gap:12px;position:sticky;top:0}.serviceOrderInfoV3{padding:17px!important}.serviceOrderInfoV3 h3{font-size:13px;margin-top:3px}.serviceOrderGridV3 main>.card{border-radius:15px}.serviceResidentV3 b{display:block;margin-top:7px;font-size:11px}.serviceResidentV3 small{display:block;margin-top:3px;color:#98a2b3}.serviceResidentV3 a{display:inline-flex;margin-top:10px;text-decoration:none;color:#078a59;font-size:9px;font-weight:800}.serviceHistoryV3 .timeline{margin-top:10px}
.internalWorkflowV3>.sectionHead{margin-bottom:8px}.internalCommentsWrapV3{margin-top:12px}.internalCommentsWrapV3>.sectionHead{margin:0 2px 7px}.internalCostsV3{padding:17px;border:1px solid #e5eaf0;border-radius:17px;background:#fff}.internalCostsHeaderV3{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.internalCostsHeaderV3 h3{margin:3px 0 0;font-size:14px}.internalCostsHeaderV3 p{max-width:580px;margin:6px 0 0;color:#7d8999;font-size:8.5px;line-height:1.45}.internalCostsTotalV3{text-align:right;min-width:150px}.internalCostsTotalV3 small{display:block;color:#98a2b3;font-size:8px}.internalCostsTotalV3 strong{display:block;margin-top:4px;font-size:20px;letter-spacing:-.04em}.internalCostMetricsV3{margin-top:14px}.internalMaterialsV3{margin-top:14px}.internalMaterialsV3>h3{font-size:10px}.internalCostFormV3{margin-top:14px;padding-top:14px;border-top:1px solid #edf0f3}.internalDocsV3{border-color:#dfe9e4!important;background:linear-gradient(180deg,#fbfffd,#fff)}
.equipmentSummaryV3{margin-bottom:12px}.equipmentFiltersV3{display:grid;grid-template-columns:minmax(220px,1.6fr) auto repeat(5,minmax(135px,.7fr)) auto;gap:7px;padding:9px;margin-bottom:12px}.equipmentFiltersV3 .requestSearch{min-width:0}.equipmentFiltersV3 .requestSearch input{width:100%;height:38px}.equipmentFiltersV3 select{height:38px;border:1px solid #e1e6ec;border-radius:10px;background:#fff;padding:0 9px;font-size:9px}.equipmentTableV3{border:1px solid #e6eaf0;border-radius:16px;background:#fff;overflow:auto}.equipmentTableV3 table{width:100%;border-collapse:collapse}.equipmentTableV3 th{padding:11px 12px;font-size:7.5px;text-transform:uppercase;letter-spacing:.06em}.equipmentTableV3 td{padding:13px 12px;border-top:1px solid #edf0f3;font-size:9px;vertical-align:middle}.equipmentTableV3 td b{font-size:9.5px}.equipmentTableV3 td small{display:block;margin-top:4px;color:#98a2b3;font-size:7.5px}.equipmentTableV3 tr:hover td{background:#fafcfd}.miniActionV3{width:28px;height:28px;border:1px solid #e2e7ed;border-radius:8px;background:#fff;color:#526071;cursor:pointer}.miniActionV3.danger{color:#cb3b37;background:#fff8f8;border-color:#f1d7d6}.directoryGroup .equipmentTableV3{border-radius:0 0 14px 14px;border-top:0}.equipmentPassportSheetV3.sheet{max-width:1180px}.equipmentPassportHeroV3{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:2px 2px 14px;border-bottom:1px solid #edf0f3}.equipmentPassportHeroV3 p{margin:7px 0 0;color:#8793a3;font-size:8.5px}.equipmentPassportHeroMetaV3{display:flex;gap:8px}.equipmentPassportHeroMetaV3>div{min-width:120px;padding:10px 12px;border:1px solid #edf0f3;border-radius:11px;background:#fbfcfd}.equipmentPassportHeroMetaV3 small{display:block;color:#98a2b3;font-size:7px}.equipmentPassportHeroMetaV3 b{display:block;margin-top:4px;font-size:10px}.equipmentPassportGridV3{margin-top:14px}.equipmentPassportGridV3>.card{border-radius:15px}.equipmentPassportSheetV3 .sectionHead{margin-top:16px}.equipmentPassportSheetV3 .tableWrap{border-radius:14px}.equipmentPassportSheetV3 .timeline{padding-bottom:4px}
@media(max-width:1200px){.moduleKpiGridV3{grid-template-columns:repeat(3,minmax(0,1fr))}.serviceCatalogGridV3{grid-template-columns:repeat(2,minmax(0,1fr))}.equipmentFiltersV3{grid-template-columns:minmax(220px,1.5fr) auto repeat(3,minmax(140px,1fr))}.equipmentFiltersV3 #equipmentMaintenanceFilter,.equipmentFiltersV3 #equipmentSort,.equipmentFiltersV3 #equipmentGroupBy,.equipmentFiltersV3 .equipmentResetV3{display:none}.serviceOrderGridV3{grid-template-columns:minmax(0,1.4fr) minmax(240px,.65fr)}}
@media(max-width:820px){.moduleIntroV3{display:grid;grid-template-columns:1fr;gap:12px}.moduleActionsV3{width:100%}.moduleActionsV3 .btn:first-child{flex:1;justify-content:center}.moduleKpiGridV3{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.moduleKpiV3{min-height:80px;padding:12px}.moduleKpiV3:last-child{grid-column:1/-1}.serviceFiltersV3{grid-template-columns:1fr 1fr;padding:8px}.serviceFiltersV3 .requestSearch{grid-column:1/-1}.serviceTableV3,.equipmentTableV3{display:none}.serviceMobileListV3,.equipmentMobileListV3{display:grid}.serviceOrdersV3{border-radius:15px}.serviceMobileCardV3,.equipmentMobileCardV3{width:100%;padding:14px;border:0;border-bottom:1px solid #edf0f3;background:#fff;text-align:left;color:#172033}.serviceMobileCardV3:last-child,.equipmentMobileCardV3:last-child{border-bottom:0}.serviceMobileTopV3,.equipmentMobileTopV3{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.serviceMobileTopV3>span:first-child{font-size:8px;font-weight:850;color:#7c8796}.serviceMobileCardV3>b,.equipmentMobileCardV3>b{display:block;font-size:11.5px}.serviceMobileCardV3>p,.equipmentMobileCardV3>p{margin:5px 0 10px;color:#8792a2;font-size:8.5px}.serviceMobileCardV3>div:last-child,.equipmentMobileCardV3>div:last-child{display:flex;justify-content:space-between;align-items:center;gap:8px}.serviceMobileCardV3 small,.equipmentMobileCardV3 small{color:#98a2b3;font-size:7.5px}.serviceMobileCardV3 strong,.equipmentMobileCardV3 strong{font-size:8.5px}.serviceCatalogGridV3{grid-template-columns:1fr}.serviceOrderSheetV3.sheet,.equipmentPassportSheetV3.sheet{width:100vw;max-width:none;height:100dvh;max-height:100dvh;border-radius:0}.serviceOrderHeroV3,.equipmentPassportHeroV3{display:grid;grid-template-columns:1fr;gap:10px}.serviceOrderMoneyV3,.equipmentPassportHeroMetaV3{display:grid;grid-template-columns:1fr 1fr}.serviceOrderMoneyV3>div{text-align:left;min-width:0}.serviceOrderGridV3{grid-template-columns:1fr}.serviceOrderAsideV3{position:static;grid-row:1}.serviceOrderInfoV3 .requestInfoMetaGrid{grid-template-columns:1fr 1fr}.internalCostsHeaderV3{display:grid;grid-template-columns:1fr}.internalCostsTotalV3{text-align:left;min-width:0;padding-top:10px;border-top:1px solid #edf0f3}.equipmentFiltersV3{grid-template-columns:1fr 1fr;padding:8px}.equipmentFiltersV3 .requestSearch{grid-column:1/-1}.equipmentFiltersV3 #equipmentGroupFilter,.equipmentFiltersV3 #equipmentMaintenanceFilter,.equipmentFiltersV3 #equipmentSort,.equipmentFiltersV3 #equipmentGroupBy,.equipmentFiltersV3 .equipmentResetV3{display:none}.equipmentMobileIconV3{width:28px;height:28px;border-radius:9px;background:#eaf8f1;color:#078a59;display:grid;place-items:center}.equipmentWrapV3>.directoryGroup{margin-bottom:10px}}
@media(max-width:520px){.moduleIntroV3 .title{font-size:29px}.moduleActionsV3 .btn{width:100%}.moduleActionsV3 .btn.light{display:none}.moduleKpiGridV3{grid-template-columns:1fr 1fr}.serviceFiltersV3,.equipmentFiltersV3{grid-template-columns:1fr}.serviceFiltersV3 .requestSearch,.equipmentFiltersV3 .requestSearch{grid-column:auto}.serviceOrderMoneyV3,.equipmentPassportHeroMetaV3{grid-template-columns:1fr}.serviceOrderInfoV3 .requestInfoMetaGrid{grid-template-columns:1fr 1fr}.internalCostMetricsV3{grid-template-columns:1fr}.internalCostMetricsV3>div{display:flex;justify-content:space-between;align-items:center}.internalCostMetricsV3 b{margin:0}.serviceCatalogNoticeV3{padding:12px}.serviceCatalogCardV3{min-height:0}}

/* v3.0.0-alpha4 — Objects / Residents / Staff / Reports */
.v3DirectoryPage .directoryIntroV3{margin-bottom:14px}
.v3DirectoryPage .directorySummary{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:12px}
.v3DirectoryPage .directoryStat{display:flex;align-items:center;gap:10px;min-height:76px;padding:12px 13px;border:1px solid #e5eaf0;border-radius:14px;background:#fff;text-align:left;box-shadow:0 1px 2px rgba(16,24,40,.02)}
.v3DirectoryPage .directoryStat:hover,.v3DirectoryPage .directoryStat.active{transform:translateY(-1px);border-color:#b9d9cd;background:#fbfffd;box-shadow:0 8px 20px rgba(16,24,40,.05)}
.directoryStatIcon{flex:0 0 31px;width:31px;height:31px;display:grid;place-items:center;border-radius:10px;background:#eaf8f1;color:#078a59;font-size:12px;font-weight:900}
.directoryStat.blue .directoryStatIcon{background:#eef4ff;color:#3565d4}.directoryStat.violet .directoryStatIcon{background:#f3efff;color:#7656d8}.directoryStat.orange .directoryStatIcon{background:#fff3e9;color:#d66b1f}
.directoryStatCopy{min-width:0}.directoryStatCopy small{display:block;color:#7e8999;font-size:8px;font-weight:800;text-transform:none;letter-spacing:0}.directoryStatCopy b{display:block;margin-top:3px;font-size:18px;letter-spacing:-.03em}.directoryStatCopy em{display:block;margin-top:3px;color:#99a3b1;font-size:7.5px;font-style:normal}
.v3DirectoryPage .directoryToolbar{display:grid;grid-template-columns:minmax(220px,1.6fr) auto repeat(3,minmax(130px,.7fr)) auto;gap:7px;margin:0 0 12px;padding:9px;border:1px solid #e6eaf0;border-radius:15px;background:#fff}
.v3Staff .directoryToolbar{grid-template-columns:minmax(220px,1.5fr) auto repeat(6,minmax(125px,.7fr)) auto}
.v3DirectoryPage .directoryToolbar input,.v3DirectoryPage .directoryToolbar select{height:38px;border:1px solid #e1e6ec;border-radius:10px;background:#fff;padding:0 10px;font-size:9px;min-width:0;max-width:none}
.v3DirectoryPage .directoryToolbar>input{grid-column:auto;min-width:0}
.v3DirectoryPage .directoryFilterToggle{height:38px;border-radius:10px}
.v3DirectoryPage .directoryToolbar>.btn{height:38px;align-self:center}

.objectGridV3,.v3Objects>.objectGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.objectCardV3{width:100%;padding:0;border:1px solid #e5eaf0;border-radius:16px;background:#fff;color:#172033;text-align:left;cursor:pointer;overflow:hidden;transition:.16s ease;box-shadow:0 1px 2px rgba(16,24,40,.02)}
.objectCardV3:hover{transform:translateY(-2px);border-color:#c8ddd5;box-shadow:0 12px 28px rgba(16,24,40,.07)}
.objectCardHeroV3{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:start;padding:15px 15px 13px}
.objectAvatarV3{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(145deg,#dff5eb,#f0fbf6);color:#078a59;font-size:13px;font-weight:900}
.objectTypeV3{display:inline-flex;padding:4px 7px;border-radius:999px;background:#f1f4f6;color:#6f7a89;font-size:7px;font-weight:850;letter-spacing:.04em;text-transform:uppercase}
.objectCardHeroV3 h3{margin:6px 0 3px;font-size:13px;letter-spacing:-.025em}.objectCardHeroV3 p{margin:0;color:#8793a3;font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.objectCardHeroV3 .directoryArrow{font-size:22px;color:#a5afbb}
.objectMetricsV3{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #edf0f3;border-bottom:1px solid #edf0f3;background:#fbfcfd}
.objectMetricsV3 span{padding:10px 11px;border-right:1px solid #edf0f3}.objectMetricsV3 span:last-child{border-right:0}.objectMetricsV3 b{display:block;font-size:12px}.objectMetricsV3 small{display:block;margin-top:3px;color:#98a2b3;font-size:7px}
.objectCardFooterV3{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;color:#7e8999;font-size:7.5px}.objectCardFooterV3>span:first-child{display:flex;align-items:center;gap:6px}.healthDotV3{width:7px;height:7px;border-radius:50%;background:#10a36a}.healthDotV3.busy{background:#f79009}

.objectSheetV3.sheet{max-width:1180px}.objectHeroV3{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:0 2px 13px;border-bottom:1px solid #edf0f3}.objectHeroV3 p{margin:7px 0 0;color:#8793a3;font-size:9px}.objectDetailKpisV3{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:13px 0}.objectDetailKpisV3>div{padding:11px 12px;border:1px solid #e7ebf0;border-radius:12px;background:#fbfcfd}.objectDetailKpisV3 small{display:block;color:#98a2b3;font-size:7px}.objectDetailKpisV3 b{display:block;margin-top:4px;font-size:15px}.objectDetailGridV3{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(260px,.7fr);gap:13px;align-items:start}.objectDetailGridV3 main{min-width:0}.objectAsideV3{display:grid;gap:10px;position:sticky;top:0}.objectPassportV3{padding:16px!important}.objectSectionHeadV3{margin:15px 2px 8px!important}.objectSectionHeadV3 h2{margin:3px 0 0;font-size:13px}.objectEquipmentGroupV3{margin-bottom:8px;border:1px solid #e7ebf0;border-radius:13px;overflow:hidden;background:#fff}.objectEquipmentGroupV3 .groupHead{padding:9px 11px;background:#f8fafb}.objectEqRowV3{width:100%;border:0;border-top:1px solid #edf0f3;background:#fff;padding:10px 11px;display:flex;justify-content:space-between;gap:10px;text-align:left;color:#172033;cursor:pointer}.objectEqRowV3:hover{background:#fbfcfd}.objectEqRowV3 small{display:block;margin-top:3px;color:#98a2b3;font-size:7.5px}.objectPeopleV3{display:grid;gap:1px;margin-top:8px}.objectPeopleV3>div{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #f0f2f5}.objectPeopleV3>div:last-child{border-bottom:0}.objectPeopleV3>div>span{width:28px;height:28px;border-radius:9px;background:#eaf8f1;color:#078a59;display:grid;place-items:center;font-size:8px;font-weight:900}.objectPeopleV3 p{margin:0;min-width:0}.objectPeopleV3 b{display:block;font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.objectPeopleV3 small{display:block;margin-top:2px;color:#98a2b3;font-size:7px}.objectPeopleV3 em{font-style:normal;font-size:6.5px}.objectAsideLinkV3{width:100%;justify-content:flex-start;margin-top:8px}

.directoryTableV3{border:1px solid #e6eaf0;border-radius:16px;background:#fff;overflow:auto}.directoryTableV3 table{width:100%;border-collapse:collapse}.directoryTableV3 th{padding:11px 12px;background:#fbfcfd;color:#8994a3;font-size:7.5px;text-transform:uppercase;letter-spacing:.055em;text-align:left}.directoryTableV3 td{padding:12px;border-top:1px solid #edf0f3;font-size:8.7px;vertical-align:middle}.directoryTableV3 td>b{font-size:9px}.directoryTableV3 td>small{display:block;margin-top:3px;color:#98a2b3;font-size:7px}.directoryTableV3 tbody tr:hover td{background:#fafcfd}.personCellV3{display:flex;align-items:center;gap:9px;min-width:180px}.personCellV3>span{flex:0 0 31px;width:31px;height:31px;border-radius:10px;background:#eaf8f1;color:#078a59;display:grid;place-items:center;font-size:9px;font-weight:900}.personCellV3 p{min-width:0;margin:0}.personCellV3 b{display:block;font-size:9px}.personCellV3 small{display:block;margin-top:3px;color:#98a2b3;font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.statusChipV3,.staffRoleChipV3{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:7px;font-weight:850;white-space:nowrap}.statusChipV3.green{background:#eaf8f1;color:#078a59}.statusChipV3.warn{background:#fff3e7;color:#c96a1c}.statusChipV3.red{background:#feecec;color:#c93836}.statusChipV3.gray{background:#f0f2f5;color:#747f8e}.staffRoleChipV3{background:#eef4ff;color:#3565d4}.staffRoleChipV3.executor{background:#eaf8f1;color:#078a59}.staffRoleChipV3.manager{background:#f3efff;color:#7656d8}.relationTagsV3{display:flex;flex-wrap:wrap;gap:4px}.directoryMobileListV3{display:none}.directoryGroup .directoryTableV3{border-radius:0 0 14px 14px}.directoryGroup .directoryMobileListV3{border:1px solid #e6eaf0;border-radius:0 0 14px 14px;overflow:hidden}

.v3Reports .moduleIntroV3{margin-bottom:14px}.reportControlV3{padding:10px!important;border-radius:15px!important}.reportControlFieldsV3{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,.8fr) auto;gap:8px;align-items:end}.reportControlFieldsV3 .field{margin:0}.reportControlFieldsV3 label{font-size:8px}.reportControlFieldsV3 select{height:40px;border-radius:10px}.reportBuildV3{height:40px;min-width:180px;justify-content:center}.reportResultHostV3{margin-top:12px}.reportWelcomeV3{min-height:150px;border:1px dashed #d9e1e7;border-radius:16px;background:#fbfcfd;display:flex;align-items:center;justify-content:center;gap:12px;padding:24px;color:#7d8998}.reportWelcomeV3>span{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#eaf8f1;color:#078a59;font-weight:900}.reportWelcomeV3 b{display:block;color:#344054;font-size:11px}.reportWelcomeV3 p{max-width:560px;margin:5px 0 0;font-size:8.5px;line-height:1.45}.reportKpiGridV3{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.reportKpiV3{position:relative;min-height:98px;padding:13px;border:1px solid #e6eaf0;border-radius:14px;background:#fff;text-align:left;color:#172033;cursor:pointer;overflow:hidden}.reportKpiV3:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(16,24,40,.05)}.reportKpiV3>span{width:28px;height:28px;display:grid;place-items:center;border-radius:9px;background:#eaf8f1;color:#078a59;font-size:10px;font-weight:900}.reportKpiV3.blue>span{background:#eef4ff;color:#3565d4}.reportKpiV3.orange>span{background:#fff3e9;color:#d66b1f}.reportKpiV3.violet>span{background:#f3efff;color:#7656d8}.reportKpiV3.gray>span{background:#f0f2f5;color:#717d8c}.reportKpiV3 small{display:block;margin-top:10px;color:#788494;font-size:7.5px}.reportKpiV3 b{display:block;margin-top:3px;font-size:19px;letter-spacing:-.04em}.reportKpiV3 em{display:block;margin-top:4px;color:#98a2b3;font-size:7px;font-style:normal}.reportMoneyV3{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.reportMoneyV3>div{display:flex;align-items:center;gap:10px;padding:13px 14px;border:1px solid #e6eaf0;border-radius:14px;background:#fff}.reportMoneyIconV3{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:#eaf8f1;color:#078a59;font-weight:900}.reportMoneyIconV3.alt{background:#eef4ff;color:#3565d4}.reportMoneyV3 p{margin:0}.reportMoneyV3 small{display:block;color:#8a95a4;font-size:7.5px}.reportMoneyV3 b{display:block;margin-top:3px;font-size:15px}.reportChartsV3{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:9px}.reportChartCardV3{padding:15px!important}.reportBarsV3{display:grid;gap:10px;margin-top:12px}.barRowV3>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:5px}.barRowV3 span{color:#667085;font-size:8px}.barRowV3 b{font-size:8px}.barV3{height:6px;border-radius:999px;background:#eef1f4;overflow:hidden}.barV3 i{display:block;height:100%;border-radius:inherit;background:#10a36a}.reportBarsV3.services .barV3 i{background:#3565d4}.reportAiNoteV3{display:flex;gap:10px;align-items:flex-start;margin-top:9px;padding:13px 14px;border:1px solid #dce9e3;border-radius:14px;background:#f7fcf9}.reportAiNoteV3>span{font-size:16px}.reportAiNoteV3 b{display:block;font-size:9px}.reportAiNoteV3 p{margin:4px 0 0;color:#718091;font-size:8px;line-height:1.45}

@media(max-width:1180px){
  .v3Staff .directoryToolbar{grid-template-columns:minmax(220px,1.4fr) auto repeat(3,minmax(130px,1fr))}.v3Staff .directoryToolbar #staffJobFilter,.v3Staff .directoryToolbar #staffSpecFilter,.v3Staff .directoryToolbar #staffGroup{display:none}
  .reportKpiGridV3{grid-template-columns:repeat(3,minmax(0,1fr))}.reportKpiV3:nth-child(4),.reportKpiV3:nth-child(5){grid-column:auto}
}
@media(max-width:820px){
  .v3DirectoryPage .directorySummary{grid-template-columns:repeat(2,minmax(0,1fr))}.v3DirectoryPage .directoryStat{min-height:70px;padding:10px}.directoryStatIcon{width:29px;height:29px;flex-basis:29px}.directoryStatCopy b{font-size:16px}
  .v3DirectoryPage .directoryToolbar,.v3Staff .directoryToolbar{grid-template-columns:1fr 1fr;padding:8px}.v3DirectoryPage .directoryToolbar>input{grid-column:1/-1}.v3DirectoryPage .directoryToolbar .directoryFilterToggle{grid-column:auto}.v3DirectoryPage .directoryToolbar>select,.v3DirectoryPage .directoryToolbar>.btn:not(.directoryFilterToggle){display:none}.v3DirectoryPage .directoryToolbar.filters-open>select,.v3DirectoryPage .directoryToolbar.filters-open>.btn:not(.directoryFilterToggle){display:flex}.v3DirectoryPage .directoryToolbar.filters-open>select{display:block}.v3Staff .directoryToolbar #staffJobFilter,.v3Staff .directoryToolbar #staffSpecFilter,.v3Staff .directoryToolbar #staffGroup{display:none}
  .objectGridV3,.v3Objects>.objectGrid{grid-template-columns:1fr}.objectMetricsV3{grid-template-columns:repeat(4,1fr)}
  .directoryTableV3{display:none}.directoryMobileListV3{display:grid;border:1px solid #e6eaf0;border-radius:16px;background:#fff;overflow:hidden}.directoryMobileCardV3{padding:14px;border-bottom:1px solid #edf0f3;background:#fff}.directoryMobileCardV3:last-child{border-bottom:0}.directoryMobileHeadV3{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.directoryMobileHeadV3 .personCellV3{min-width:0}.directoryMobileMetaV3{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:12px}.directoryMobileMetaV3>span{padding:8px 9px;border-radius:10px;background:#f8fafb}.directoryMobileMetaV3 small{display:block;color:#98a2b3;font-size:7px}.directoryMobileMetaV3 b{display:block;margin-top:3px;font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.directoryMobileCardV3>.relationTagsV3{margin-top:9px}.directoryMobileActionsV3{display:flex;gap:7px;margin-top:11px;padding-top:11px;border-top:1px solid #edf0f3}.directoryMobileActionsV3 .btn{flex:1;justify-content:center}
  .objectSheetV3.sheet{width:100vw;max-width:none;height:100dvh;max-height:100dvh;border-radius:0}.objectHeroV3{align-items:flex-start}.objectDetailKpisV3{grid-template-columns:repeat(2,1fr)}.objectDetailKpisV3>div:last-child{grid-column:1/-1}.objectDetailGridV3{grid-template-columns:1fr}.objectAsideV3{position:static;grid-row:1}.objectPeopleV3>div{grid-template-columns:auto minmax(0,1fr)}.objectPeopleV3 em{grid-column:2}
  .reportControlFieldsV3{grid-template-columns:1fr 1fr}.reportBuildV3{grid-column:1/-1}.reportKpiGridV3{grid-template-columns:repeat(2,minmax(0,1fr))}.reportKpiV3:last-child{grid-column:1/-1}.reportChartsV3{grid-template-columns:1fr}.v3Reports .moduleActionsV3{display:flex;width:100%}.v3Reports .moduleActionsV3 .btn{flex:1;justify-content:center}
}
@media(max-width:520px){
  .v3DirectoryPage .moduleIntroV3 .title,.v3Reports .moduleIntroV3 .title{font-size:29px}.v3DirectoryPage .directorySummary{gap:7px}.v3DirectoryPage .directoryStat{min-height:68px}.v3DirectoryPage .directoryToolbar,.v3Staff .directoryToolbar{grid-template-columns:1fr}.v3DirectoryPage .directoryToolbar>input{grid-column:auto}.v3DirectoryPage .directoryFilterToggle{width:100%}
  .objectMetricsV3{grid-template-columns:1fr 1fr}.objectMetricsV3 span:nth-child(2){border-right:0}.objectMetricsV3 span:nth-child(-n+2){border-bottom:1px solid #edf0f3}.objectCardFooterV3{align-items:flex-start;flex-direction:column}.objectDetailKpisV3{grid-template-columns:1fr 1fr}.objectHeroV3{display:grid;grid-template-columns:1fr}.objectHeroV3 .btn{width:100%;justify-content:center}.objectDetailGridV3 .requestInfoMetaGrid{grid-template-columns:1fr 1fr}
  .directoryMobileMetaV3{grid-template-columns:1fr 1fr}.directoryMobileMetaV3>span:last-child{grid-column:1/-1}.directoryMobileActionsV3{display:grid;grid-template-columns:1fr 1fr}.directoryMobileActionsV3 .btn:first-child:nth-last-child(3){grid-column:1/-1}.personCellV3>span{width:34px;height:34px;flex-basis:34px}.personCellV3 b{font-size:10px}.personCellV3 small{font-size:7.5px;max-width:190px}
  .reportControlFieldsV3{grid-template-columns:1fr}.reportBuildV3{grid-column:auto;width:100%}.reportKpiGridV3{grid-template-columns:1fr 1fr}.reportKpiV3{min-height:92px}.reportKpiV3:last-child{grid-column:1/-1}.reportMoneyV3{grid-template-columns:1fr}.v3Reports .moduleActionsV3{display:grid;grid-template-columns:1fr 1fr}
}
@media(min-width:821px){.v3Residents .directorySummary{grid-template-columns:repeat(5,minmax(0,1fr))}}

/* v3.0.0-alpha5 — desktop request source chips: Служебная / От жильца */


/* =========================================================
   v3.0.0-alpha5 — pricing, forms/modals, resident cabinet, mobile polish
   ========================================================= */
.v3Prices .moduleIntroV3{margin-bottom:14px}.priceSummaryV3{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:10px}.priceKpiV3{display:flex;align-items:flex-start;gap:11px;padding:14px;border:1px solid #e6eaf0;border-radius:15px;background:#fff;box-shadow:0 1px 2px rgba(16,24,40,.02)}.priceKpiV3>span{width:31px;height:31px;flex:0 0 31px;border-radius:10px;display:grid;place-items:center;background:#eaf8f1;color:#078a59;font-size:11px;font-weight:900}.priceKpiV3.blue>span{background:#eef4ff;color:#3565d4}.priceKpiV3.violet>span{background:#f3efff;color:#7656d8}.priceKpiV3.orange>span{background:#fff3e9;color:#d66b1f}.priceKpiV3 small{display:block;color:#8490a0;font-size:7.5px}.priceKpiV3 b{display:block;margin-top:3px;font-size:17px;letter-spacing:-.035em}.priceKpiV3 em{display:block;margin-top:3px;color:#a0a9b5;font-size:7px;font-style:normal}.priceToolbarV3{display:grid;grid-template-columns:minmax(260px,1.7fr) minmax(170px,.8fr) minmax(160px,.8fr) auto;gap:8px;padding:9px!important;border-radius:14px!important;margin-bottom:10px}.priceToolbarV3 .requestSearch{height:38px}.priceToolbarV3 select,.priceToolbarV3 .btn{height:38px}.priceTableV3{border:1px solid #e6eaf0;border-radius:16px;background:#fff;overflow:auto}.priceTableV3 table{width:100%;border-collapse:collapse}.priceTableV3 th{padding:11px 12px;background:#fbfcfd;color:#8994a3;font-size:7.5px;text-transform:uppercase;letter-spacing:.055em;text-align:left}.priceTableV3 td{padding:12px;border-top:1px solid #edf0f3;font-size:8.5px;vertical-align:middle}.priceTableV3 tbody tr:hover td{background:#fafcfd}.priceNameCellV3{display:flex;align-items:center;gap:9px;min-width:190px}.priceIconV3{width:31px;height:31px;flex:0 0 31px;border-radius:10px;background:#eaf8f1;color:#078a59;display:grid;place-items:center;font-size:10px;font-weight:900}.priceNameCellV3 b{display:block;font-size:9px}.priceNameCellV3 small{display:block;margin-top:3px;color:#98a2b3;font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px}.priceCategoryChipV3,.priceTypeChipV3{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:7px;font-weight:850;white-space:nowrap}.priceCategoryChipV3{background:#f2f4f7;color:#586474}.priceTypeChipV3.green{background:#eaf8f1;color:#078a59}.priceTypeChipV3.blue{background:#eef4ff;color:#3565d4}.priceTypeChipV3.violet{background:#f3efff;color:#7656d8}.priceTypeChipV3.orange{background:#fff3e9;color:#d66b1f}.priceUnitHintV3{display:block;color:#98a2b3;font-size:7px;margin-top:2px}.priceMobileListV3{display:none}.priceAiNoteV3{display:flex;gap:10px;align-items:flex-start;margin-top:10px;padding:13px 14px;border:1px solid #dce9e3;border-radius:14px;background:#f7fcf9}.priceAiNoteV3>span{font-size:16px}.priceAiNoteV3 b{display:block;font-size:9px}.priceAiNoteV3 p{margin:4px 0 0;color:#718091;font-size:8px;line-height:1.45}.priceEmptyV3{border:1px dashed #d7dee6;border-radius:16px;background:#fbfcfd}

/* unified v3 forms */
.v3Body .modal{backdrop-filter:blur(6px);background:rgba(10,22,37,.48)}.v3Body .sheet{border:1px solid rgba(222,228,235,.95);box-shadow:0 30px 90px rgba(8,20,35,.22)}.v3Body .sheetHead{position:sticky;top:0;z-index:4;margin:-22px -22px 18px;padding:18px 22px 14px;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid #edf0f3}.v3Body .sheetHead h2{margin:2px 0 0;font-size:18px;letter-spacing:-.035em}.v3Body .sheetHead .eyebrow{font-size:7.5px}.v3Body .sheetHead .close{width:34px;height:34px;border-radius:11px;background:#f4f6f8;color:#526071;border:1px solid #eef1f4;font-size:18px}.v3Body .sheetHead .close:hover{background:#edf1f4;color:#182230}.v3Body .formSheetV3{max-width:760px}.v3Body .formSheetV3 .fields{gap:10px}.v3Body .formSheetV3 .field{margin-bottom:4px}.v3Body .formSheetV3 label{font-size:8.5px;color:#344054;font-weight:850}.v3Body .formSheetV3 input,.v3Body .formSheetV3 select,.v3Body .formSheetV3 textarea{border-color:#dde3e9;background:#fff;border-radius:11px;min-height:42px;box-shadow:0 1px 2px rgba(16,24,40,.015)}.v3Body .formSheetV3 input:focus,.v3Body .formSheetV3 select:focus,.v3Body .formSheetV3 textarea:focus{border-color:#58b895;box-shadow:0 0 0 3px rgba(16,163,106,.09)}.v3Body .formSheetV3 textarea{min-height:100px}.v3Body .formSheetV3>.note,.v3Body .formSheetV3 form>.note{border-radius:12px}.v3Body .formSheetV3 form>.btn.full{min-height:44px;border-radius:11px;margin-top:8px}.v3Body .modal .toolbar{gap:8px}.v3Body .modal .btn{border-radius:10px}

/* resident v3 */
.residentV3Shell.appLayout{grid-template-columns:220px minmax(0,1fr)}.residentV3Shell .sidebar{background:linear-gradient(180deg,#0b1728 0%,#0a1625 100%);padding:24px 14px 18px}.residentV3Shell .content{max-width:1240px;margin:0 auto;width:100%}.residentTopbarV3{border-bottom:2px solid #12b76a}.residentPageV3 .moduleIntroV3{margin-bottom:14px}.residentKpiGridV3{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:16px}.residentKpiV3{display:flex;align-items:flex-start;gap:10px;min-height:92px;padding:13px;border:1px solid #e6eaf0;border-radius:15px;background:#fff;color:#172033;text-align:left;cursor:pointer;box-shadow:0 1px 2px rgba(16,24,40,.02);transition:.15s ease}.residentKpiV3:hover,.residentKpiV3.active{border-color:#b8dccc;box-shadow:0 8px 20px rgba(16,24,40,.045);transform:translateY(-1px)}.residentKpiV3>span{width:30px;height:30px;flex:0 0 30px;border-radius:10px;display:grid;place-items:center;background:#eaf8f1;color:#078a59;font-size:10px;font-weight:900}.residentKpiV3.blue>span{background:#eef4ff;color:#3565d4}.residentKpiV3.orange>span{background:#fff3e9;color:#d66b1f}.residentKpiV3.gray>span{background:#f1f3f5;color:#6f7a89}.residentKpiV3 small{display:block;color:#8490a0;font-size:7.5px}.residentKpiV3 b{display:block;margin-top:3px;font-size:18px;letter-spacing:-.04em}.residentKpiV3 em{display:block;margin-top:3px;color:#a0a9b5;font-size:7px;font-style:normal}.residentSectionHeadV3{margin:0 0 8px}.residentSectionHeadV3 h2{margin:2px 0 0;font-size:13px}.residentTicketListV3{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.residentRequestCardV3{position:relative;padding:15px;border:1px solid #e6eaf0;border-radius:16px;background:#fff;cursor:pointer;transition:.15s ease;box-shadow:0 1px 2px rgba(16,24,40,.02);overflow:hidden}.residentRequestCardV3:hover{transform:translateY(-2px);border-color:#c8ddd5;box-shadow:0 12px 28px rgba(16,24,40,.06)}.residentRequestCardV3:before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:3px;border-radius:0 4px 4px 0;background:#10a36a}.residentRequestCardHeadV3{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.residentRequestNumberV3{color:#8a95a4;font-size:7.5px;font-weight:850;text-transform:uppercase;letter-spacing:.045em}.residentRequestCardV3 h3{margin:5px 0 0;font-size:13px;letter-spacing:-.025em}.residentRequestCardV3>p{margin:10px 0 0;color:#6f7d8e;font-size:8.5px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.residentRequestMetaV3{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:13px}.residentRequestMetaV3>span{padding:8px 9px;border-radius:10px;background:#f8fafb;min-width:0}.residentRequestMetaV3 small{display:block;color:#98a2b3;font-size:6.8px}.residentRequestMetaV3 b{display:block;margin-top:3px;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.residentUnreadV3{display:inline-flex;margin-top:9px;padding:5px 8px;border-radius:999px;background:#eef4ff;color:#3565d4;font-size:7px;font-weight:850}.residentRequestArrowV3{margin-top:11px;padding-top:10px;border-top:1px solid #edf0f3;color:#078a59;font-size:8px;font-weight:850}.residentEmptyV3{grid-column:1/-1;border:1px dashed #d9e1e7;border-radius:16px;background:#fbfcfd}.residentServiceCatalogV3{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.residentServiceCardV3{display:flex;flex-direction:column;min-height:260px;padding:15px;border:1px solid #e6eaf0;border-radius:16px;background:#fff;box-shadow:0 1px 2px rgba(16,24,40,.02)}.residentServiceIconV3{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;margin-bottom:12px;background:#eaf8f1;color:#078a59;font-weight:900}.residentServiceCardV3 h3{margin:6px 0;font-size:13px}.residentServiceCardV3>p{margin:0;color:#718091;font-size:8.5px;line-height:1.5;min-height:38px}.residentServicePriceV3{margin:14px 0 10px;padding:10px 11px;border-radius:11px;background:#f8fafb}.residentServicePriceV3 small{display:block;color:#98a2b3;font-size:7px}.residentServicePriceV3 b{display:block;margin-top:3px;font-size:14px}.residentServiceNoteV3{margin-bottom:10px;color:#7d8998;font-size:7.5px;line-height:1.45}.residentServiceCardV3 .btn{margin-top:auto}.residentProfileCardV3{max-width:760px;padding:18px!important}.residentProfileCardV3 .kv{grid-template-columns:160px minmax(0,1fr)}.residentProfileCardV3 .kv b,.residentProfileCardV3 .kv span{padding:10px 0;border-bottom:1px solid #edf0f3}.residentFormSheetV3{max-width:700px}.residentDetailSheetV3{max-width:1050px}.residentDetailModalV3 .sheetHead{margin-bottom:12px}

@media(max-width:980px){.priceSummaryV3{grid-template-columns:repeat(2,1fr)}.priceToolbarV3{grid-template-columns:1fr 1fr}.priceToolbarV3 .requestSearch{grid-column:1/-1}.residentKpiGridV3{grid-template-columns:repeat(2,1fr)}.residentServiceCatalogV3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){
  .priceTableV3{display:none}.priceMobileListV3{display:grid;gap:9px}.priceMobileCardV3{padding:14px;border:1px solid #e6eaf0;border-radius:15px;background:#fff}.priceMobileHeadV3{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.priceMobileMetricsV3{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}.priceMobileMetricsV3>div{padding:9px;border-radius:10px;background:#f8fafb}.priceMobileMetricsV3 small{display:block;color:#98a2b3;font-size:7px}.priceMobileMetricsV3 b{display:block;margin-top:3px;font-size:9px}.priceMobileCardV3>p{margin:10px 0 0;color:#718091;font-size:8px;line-height:1.45}.priceMobileActionsV3{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:11px}.priceMobileActionsV3 .btn{justify-content:center}.priceToolbarV3{grid-template-columns:1fr}.priceToolbarV3 .requestSearch{grid-column:auto}
  .residentV3Shell.appLayout{display:block}.residentV3Shell .sidebar{display:none}.residentV3Shell .appMain{min-width:0}.residentV3Shell .content{padding-bottom:88px}.residentTopbarV3{padding-left:18px;padding-right:18px}.residentTopbarV3 .topbarHeading small{display:block}.residentTopbarV3 .userIdentity{display:none}.residentPageV3 .moduleIntroV3{display:grid;grid-template-columns:1fr}.residentActionsV3{display:grid;grid-template-columns:1fr 1fr;width:100%}.residentActionsV3 .btn{justify-content:center}.residentTicketListV3{grid-template-columns:1fr}.residentDetailSheetV3.sheet{width:100vw;max-width:none;height:100dvh;max-height:100dvh;border-radius:0}
  .v3Body .v3FormModal{align-items:flex-end;padding:0}.v3Body .v3FormModal .formSheetV3{width:100%;max-width:none;max-height:92dvh;border-radius:22px 22px 0 0;padding-bottom:calc(20px + env(safe-area-inset-bottom))}.v3Body .v3FormModal .sheetHead{margin-top:-22px;border-radius:22px 22px 0 0}.v3Body .v3FormModal .field input,.v3Body .v3FormModal .field select{min-height:48px;font-size:16px}.v3Body .v3FormModal .field textarea{font-size:16px}.v3Body .v3FormModal form>.btn.full{min-height:50px;font-size:15px}
}
@media(max-width:560px){
  .v3Prices .moduleIntroV3 .title,.residentPageV3 .moduleIntroV3 .title{font-size:29px}.priceSummaryV3{grid-template-columns:1fr 1fr;gap:7px}.priceKpiV3{padding:11px;min-height:78px}.priceKpiV3 b{font-size:14px}.priceKpiV3 em{display:none}.priceAiNoteV3{margin-bottom:8px}
  .residentV3Shell .content{padding-left:16px;padding-right:16px}.residentTopbarV3{height:76px}.residentTopbarV3 h1{font-size:20px}.residentKpiGridV3{gap:7px}.residentKpiV3{min-height:80px;padding:10px;gap:8px}.residentKpiV3>span{width:27px;height:27px;flex-basis:27px}.residentKpiV3 b{font-size:15px}.residentKpiV3 em{display:none}.residentActionsV3{grid-template-columns:1fr}.residentActionsV3 .btn{min-height:46px}.residentRequestCardV3{padding:14px}.residentRequestMetaV3{grid-template-columns:1fr 1fr}.residentRequestMetaV3>span:last-child{grid-column:1/-1}.residentRequestCardV3 h3{font-size:15px}.residentRequestCardV3>p{font-size:10px}.residentServiceCatalogV3{grid-template-columns:1fr}.residentServiceCardV3{min-height:0}.residentProfileCardV3 .kv{grid-template-columns:1fr}.residentProfileCardV3 .kv b{padding-bottom:2px;border:0}.residentProfileCardV3 .kv span{padding-top:0}.residentV3Body .mobileNav{grid-template-columns:repeat(4,1fr);padding-bottom:env(safe-area-inset-bottom)}.residentV3Body .mobileNav button:nth-child(5),.residentV3Body .mobileNav button:nth-child(6){display:none}
}

/* ==========================================================
   v3.0.0-alpha5.1 — equipment filter responsive layout hotfix
   Prevents controls from overlapping in the engineering registry.
   ========================================================== */
.v3Equipment .equipmentFiltersV3{
  display:grid;
  grid-template-columns:minmax(250px,1.7fr) repeat(4,minmax(130px,1fr));
  gap:9px;
  align-items:stretch;
  overflow:visible;
}
.v3Equipment .equipmentFiltersV3>*{
  min-width:0;
  max-width:none;
  width:100%;
  box-sizing:border-box;
}
.v3Equipment .equipmentFiltersV3 .requestSearch{
  grid-column:auto;
  min-width:0;
}
.v3Equipment .equipmentFiltersV3 .requestSearch input,
.v3Equipment .equipmentFiltersV3 select{
  width:100%;
  min-width:0;
  max-width:none;
  height:40px;
}
/* Keep every equipment filter available at every responsive width. */
.v3Equipment .equipmentFiltersV3 #equipmentGroupFilter,
.v3Equipment .equipmentFiltersV3 #equipmentMaintenanceFilter,
.v3Equipment .equipmentFiltersV3 #equipmentSort,
.v3Equipment .equipmentFiltersV3 #equipmentGroupBy{
  display:block!important;
}
.v3Equipment .equipmentFiltersV3 .equipmentResetV3{
  display:inline-flex!important;
  min-height:40px;
  width:auto;
  justify-self:start;
  align-items:center;
  justify-content:center;
  white-space:nowrap;
}
.v3Equipment .equipmentFiltersV3 .directoryFilterToggle{display:none!important}

/* Typical laptop / split-window width: two clean filter rows instead of overlap. */
@media(max-width:1320px) and (min-width:981px){
  .v3Equipment .equipmentFiltersV3{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
  .v3Equipment .equipmentFiltersV3 .requestSearch{grid-column:span 2}
}

/* Narrow desktop / tablet landscape. */
@media(max-width:980px) and (min-width:821px){
  .v3Equipment .equipmentFiltersV3{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .v3Equipment .equipmentFiltersV3 .requestSearch{grid-column:1/-1}
  .v3Equipment .equipmentFiltersV3 .equipmentResetV3{grid-column:1/-1;width:100%}
}

/* Mobile: one comfortable vertical stack, no hidden controls. */
@media(max-width:820px){
  .v3Equipment .equipmentFiltersV3{
    grid-template-columns:1fr;
    gap:8px;
    padding:9px;
  }
  .v3Equipment .equipmentFiltersV3 .requestSearch{grid-column:auto}
  .v3Equipment .equipmentFiltersV3 .equipmentResetV3{width:100%}
  .v3Equipment .equipmentFiltersV3 .requestSearch input,
  .v3Equipment .equipmentFiltersV3 select,
  .v3Equipment .equipmentFiltersV3 .equipmentResetV3{min-height:44px;height:44px}
}


/* ==========================================================
   v3.0.0-alpha5.2 — pricing filter control polish
   Removes native browser select chrome and aligns price filters
   with the v3 search/input visual language.
   ========================================================== */
.v3Prices .priceToolbarV3{
  align-items:stretch;
}
.v3Prices .priceToolbarV3 select{
  width:100%;
  min-width:0;
  height:38px;
  padding:0 36px 0 12px;
  border:1px solid #e3e8ee;
  border-radius:9px;
  background-color:#fbfcfd;
  color:#263244;
  font-size:10px;
  font-weight:650;
  line-height:1;
  box-shadow:none;
  outline:none;
  appearance:none;
  -webkit-appearance:none;
  -moz-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M6 8l4 4 4-4' stroke='%23778494' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 12px center;
  background-size:12px 12px;
  transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease;
}
.v3Prices .priceToolbarV3 select:hover{
  border-color:#cfd7df;
  background-color:#fff;
}
.v3Prices .priceToolbarV3 select:focus{
  border-color:#58b895;
  background-color:#fff;
  box-shadow:0 0 0 3px rgba(16,163,106,.09);
}
.v3Prices .priceToolbarV3 .requestSearch{
  border-color:#e3e8ee!important;
  background:#fbfcfd;
}
.v3Prices .priceToolbarV3 .requestSearch:hover{
  border-color:#cfd7df!important;
  background:#fff;
}
.v3Prices .priceToolbarV3>.btn.light{
  height:38px;
  min-height:38px;
  padding:0 14px;
  border:1px solid #e3e8ee;
  border-radius:9px;
  background:#f4f6f8;
  color:#344054;
  font-size:9px;
  font-weight:800;
  box-shadow:none;
}
.v3Prices .priceToolbarV3>.btn.light:hover{
  background:#eef2f5;
  border-color:#d7dee6;
}

/* ==========================================================
   v3.0.0-alpha5.3 — report filter select clipping fix
   Fixed-height selects must not inherit the global 12px vertical
   field padding: it clips the selected value on desktop/mobile.
   ========================================================== */
.v3Reports .reportControlFieldsV3 select{
  width:100%;
  min-width:0;
  height:42px;
  min-height:42px;
  padding:0 38px 0 12px !important;
  border:1px solid #e1e6ec;
  border-radius:10px;
  background-color:#fff;
  color:#263244;
  font-size:10px;
  font-weight:650;
  line-height:normal;
  box-shadow:none;
  outline:none;
  appearance:none;
  -webkit-appearance:none;
  -moz-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M6 8l4 4 4-4' stroke='%23778494' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 12px center;
  background-size:12px 12px;
  transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease;
}
.v3Reports .reportControlFieldsV3 select:hover{
  border-color:#cfd7df;
  background-color:#fff;
}
.v3Reports .reportControlFieldsV3 select:focus{
  border-color:#58b895;
  box-shadow:0 0 0 3px rgba(16,163,106,.09);
}
.v3Reports .reportControlFieldsV3 .field{
  min-width:0;
}
.v3Reports .reportControlFieldsV3 .field label{
  line-height:1.2;
}
.v3Reports .reportBuildV3{
  height:42px;
  min-height:42px;
}

@media(max-width:820px){
  .v3Reports .reportControlFieldsV3 select{
    height:48px;
    min-height:48px;
    padding:0 42px 0 14px !important;
    background-position:right 14px center;
    font-size:16px;
    line-height:normal;
  }
  .v3Reports .reportControlFieldsV3 .field label{
    margin-bottom:7px;
    font-size:11px;
  }
  .v3Reports .reportBuildV3{
    height:48px;
    min-height:48px;
    font-size:14px;
  }
}


/* ==========================================================
   v3.0.0-alpha6 — resident estimate + mobile modal polish
   ========================================================== */
.residentEstimatePreviewV3{
  margin:12px 0 14px!important;
  padding:15px!important;
  border-color:#dce8e3!important;
  background:linear-gradient(180deg,#fbfffd 0%,#fff 44%)!important;
  color:#172033!important;
}
.residentEstimatePreviewHeadV3{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}
.residentEstimatePreviewHeadingV3{display:flex;align-items:flex-start;gap:10px;min-width:0}
.residentEstimatePreviewHeadingV3 .estimateV3Icon{width:32px;height:32px;border-radius:10px;background:#eaf8f1;color:#078a59;font-size:13px}
.residentEstimatePreviewHeadingV3 .eyebrow{color:#8c98a8;font-size:7.5px;line-height:1.35}
.residentEstimatePreviewHeadingV3 h3{margin:3px 0 0;font-size:12px;line-height:1.3;letter-spacing:-.02em;color:#202b3d}
.residentEstimatePreviewTotalV3{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-top:14px;padding:12px 13px;border:1px solid #e7ecef;border-radius:12px;background:#fff}
.residentEstimatePreviewTotalV3 small{margin:0!important;color:#8995a5!important;font-size:8px!important;font-weight:750}
.residentEstimatePreviewTotalV3 strong{min-width:0;color:#172033;font-size:18px;line-height:1.15;letter-spacing:-.035em;text-align:right;overflow-wrap:anywhere}
.residentEstimatePreviewTotalV3 strong em{display:inline;font-size:9px;font-style:normal;color:#7d8998;font-weight:750;letter-spacing:0}
.residentEstimatePreviewMetricsV3{margin-top:8px!important}
.residentEstimatePreviewMetricsV3 b{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere}
.residentEstimatePreviewHintsV3{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.residentEstimatePreviewHintsV3 span{display:inline-flex;max-width:100%;padding:5px 8px;border-radius:999px;background:#f2f6f4;color:#53675e;font-size:8px;font-weight:750;line-height:1.25;overflow-wrap:anywhere}
.residentEstimatePreviewNoticeV3{margin-top:10px!important}

/* Mobile Safari: keep resident sheets inside the visual viewport and keep
   header text / close hit target away from rounded edges. */
@media(max-width:820px){
  .residentV3Body{overflow-x:hidden}
  .residentV3Body .residentFormModalV3,
  .residentV3Body .residentDetailModalV3{
    width:100%;max-width:100vw;overflow:hidden;
    padding-left:max(8px,env(safe-area-inset-left));
    padding-right:max(8px,env(safe-area-inset-right));
  }
  .residentV3Body .residentFormModalV3 .residentFormSheetV3,
  .residentV3Body .residentDetailModalV3 .residentDetailSheetV3{
    width:100%!important;max-width:100%!important;min-width:0!important;
    margin:0!important;overflow-x:hidden!important;
  }
  .residentV3Body .residentFormModalV3 .residentFormSheetV3{
    border-radius:20px 20px 0 0!important;
  }
  .residentV3Body .residentDetailModalV3 .residentDetailSheetV3{
    border-radius:20px 20px 0 0!important;
  }
  .residentV3Body .residentFormModalV3 .sheetHead,
  .residentV3Body .residentDetailModalV3 .sheetHead{
    width:auto;min-width:0;
    margin-left:-14px!important;margin-right:-14px!important;
    padding-left:18px!important;padding-right:14px!important;
    gap:10px;
  }
  .residentV3Body .residentFormModalV3 .sheetHead>div,
  .residentV3Body .residentDetailModalV3 .sheetHead>div{min-width:0;flex:1 1 auto;padding-left:0}
  .residentV3Body .residentFormModalV3 .sheetHead h2,
  .residentV3Body .residentDetailModalV3 .sheetHead h2{
    max-width:100%;font-size:20px;line-height:1.08;overflow-wrap:anywhere;
  }
  .residentV3Body .residentFormModalV3 .sheetHead .eyebrow,
  .residentV3Body .residentDetailModalV3 .sheetHead .eyebrow{max-width:100%;overflow-wrap:anywhere}
  .residentV3Body .residentFormModalV3 .sheetHead .close,
  .residentV3Body .residentDetailModalV3 .sheetHead .close{
    flex:0 0 42px;width:42px;height:42px;margin:0 2px 0 4px;
    border-radius:13px;font-size:22px;line-height:1;touch-action:manipulation;
  }
  .residentV3Body .residentFormSheetV3 form,
  .residentV3Body .residentDetailSheetV3 #reqDetail,
  .residentV3Body .residentDetailSheetV3 #residentServiceOrderDetail{min-width:0;max-width:100%;overflow-x:hidden}
  .residentEstimatePreviewV3{padding:13px!important;border-radius:15px!important}
  .residentEstimatePreviewHeadV3{gap:8px}
  .residentEstimatePreviewHeadingV3{gap:8px}
  .residentEstimatePreviewTotalV3{display:grid;grid-template-columns:1fr;gap:5px;padding:11px}
  .residentEstimatePreviewTotalV3 strong{text-align:left;font-size:20px}
  .residentEstimatePreviewMetricsV3{grid-template-columns:1fr!important;gap:6px!important}
  .residentEstimatePreviewMetricsV3>div{display:flex!important;align-items:center;justify-content:space-between;gap:12px;padding:10px 11px!important}
  .residentEstimatePreviewMetricsV3 b{margin:0!important;text-align:right;max-width:58%}
}
@media(max-width:420px){
  .residentV3Body .residentFormModalV3,
  .residentV3Body .residentDetailModalV3{padding-left:6px;padding-right:6px}
  .residentV3Body .residentFormModalV3 .sheetHead,
  .residentV3Body .residentDetailModalV3 .sheetHead{padding-left:16px!important;padding-right:10px!important}
  .residentEstimatePreviewHeadingV3 h3{font-size:11px}
  .residentEstimatePreviewTotalV3 strong{font-size:18px}
}


/* =========================================================
   v3.0.0-alpha6 — FINAL POLISH
   notifications, AI, states, auth, motion, mobile
   ========================================================= */
:root{--v3-shadow:0 18px 55px rgba(15,23,42,.09);--v3-ease:cubic-bezier(.2,.75,.25,1)}
@keyframes v3PageIn{from{opacity:.25;transform:translateY(5px)}to{opacity:1;transform:none}}
@keyframes v3ModalIn{from{opacity:0;transform:translateY(8px) scale(.992)}to{opacity:1;transform:none}}
@keyframes v3Pulse{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes v3Spin{to{transform:rotate(360deg)}}
.page.active{animation:v3PageIn .22s var(--v3-ease)}
.modal.open .sheet{animation:v3ModalIn .22s var(--v3-ease)}
.btn,.textBtn,.nav button,.requestListV3 article,.residentRequestCardV3,.directoryCardV3,.equipmentCardV3{transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease}
@media(hover:hover){.btn:not(:disabled):hover{transform:translateY(-1px)}.requestListV3 article:hover,.residentRequestCardV3:hover{transform:translateY(-1px);box-shadow:0 12px 30px rgba(15,23,42,.07)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* Boot / async states */
.ukBootScreen{position:fixed;inset:0;z-index:999;background:rgba(247,249,252,.96);backdrop-filter:blur(12px);display:grid;place-items:center;transition:opacity .22s ease}
.ukBootScreen.done{opacity:0;pointer-events:none}.ukBootCard{display:flex;align-items:center;gap:13px;background:#fff;border:1px solid #e4e9f0;border-radius:20px;padding:16px 18px;box-shadow:var(--v3-shadow);min-width:min(330px,calc(100vw - 32px))}.ukBootLogo{width:44px;height:44px;border-radius:14px;background:#0aa36a;color:#fff;display:grid;place-items:center;font-weight:900;font-size:20px}.ukBootCard b{display:block;font-size:14px;color:#101828}.ukBootCard small{display:block;font-size:11px;color:#8692a6;margin-top:3px}.ukSpinner{margin-left:auto;width:18px;height:18px;border:2px solid #dce5ee;border-top-color:#0aa36a;border-radius:50%;animation:v3Spin .75s linear infinite;display:inline-block;vertical-align:middle}.ukSpinner.sm{width:14px;height:14px;margin:0 7px 0 0;border-width:2px}
.ukAppError{position:fixed;top:82px;left:50%;transform:translateX(-50%);z-index:150;width:min(680px,calc(100vw - 28px));display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;background:#fff;border:1px solid #fecaca;border-radius:16px;padding:11px 12px;box-shadow:0 18px 48px rgba(127,29,29,.12)}.ukAppErrorIcon{width:36px;height:36px;border-radius:11px;background:#fff1f2;color:#dc2626;display:grid;place-items:center;font-weight:900}.ukAppError b,.ukAppError small{display:block}.ukAppError b{font-size:12px}.ukAppError small{font-size:10px;color:#7f1d1d;margin-top:2px}.ukInlineState{min-height:150px;border:1px dashed #d7dee8;border-radius:18px;background:#fff;display:grid;place-items:center;text-align:center;padding:28px}.ukInlineState>span{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#fff1f2;color:#dc2626;font-weight:900;margin:auto}.ukInlineState b{display:block;margin-top:10px}.ukInlineState small{display:block;color:#8995a8;margin:4px 0 12px}.ukSkeletonList{display:grid;gap:9px}.ukSkeletonRow{display:grid;grid-template-columns:38px 1fr;gap:10px;align-items:center;padding:12px;border:1px solid #edf0f4;border-radius:14px}.ukSkeletonRow i,.ukSkeletonRow b,.ukSkeletonRow em{display:block;background:linear-gradient(90deg,#eef2f6,#f8fafc,#eef2f6);background-size:220% 100%;animation:shimmer 1.3s infinite}.ukSkeletonRow i{width:38px;height:38px;border-radius:11px}.ukSkeletonRow b{height:10px;width:62%;border-radius:99px}.ukSkeletonRow em{height:8px;width:38%;border-radius:99px;margin-top:7px}@keyframes shimmer{to{background-position:-220% 0}}

/* Toast v3 */
.toast{right:22px;bottom:22px;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:10px;max-width:440px;padding:10px 13px 10px 10px;border:1px solid rgba(255,255,255,.11);border-radius:16px;background:#0f1b2e;box-shadow:0 18px 55px rgba(15,23,42,.22);font-size:12px;font-weight:750}.toastIcon{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:rgba(255,255,255,.12);font-weight:950}.toast-success .toastIcon{background:#d1fae5;color:#047857}.toast-error .toastIcon{background:#fee2e2;color:#b91c1c}.toast-info .toastIcon{background:#dbeafe;color:#1d4ed8}

/* Notification center v3 */
.notifyPanelV3{width:min(430px,calc(100vw - 24px));border-radius:20px;box-shadow:0 28px 80px rgba(15,23,42,.18)}.notifyHeadV3{padding:15px 16px 12px}.notifyHeadV3>div>b{font-size:16px;letter-spacing:-.02em}.notifyHeadV3 .eyebrow{font-size:8px;margin-bottom:3px}.notifyHeadV3 .textBtn{font-size:10px}.notifySettingsV3{display:flex;align-items:center;gap:7px;padding:9px 12px;border-bottom:1px solid #edf1f5;background:#fafbfd}.notifySettingBtn{border:1px solid #e2e8f0;background:#fff;color:#526074;border-radius:10px;padding:7px 9px;font-size:10px;font-weight:800;cursor:pointer}.notifyRealtimeV3{margin-left:auto;display:flex;align-items:center;gap:5px;font-size:9px;color:#68758a;font-weight:800}.notifyRealtimeV3 i{width:7px;height:7px;border-radius:50%;background:#0aaa6e;box-shadow:0 0 0 4px #e9fbf3}.notifyList{max-height:54vh}.notifyItem{grid-template-columns:36px minmax(0,1fr) 18px;gap:10px;padding:12px 14px;align-items:start;border-bottom:1px solid #f0f2f5}.notifyItem:hover{background:#fbfcfe}.notifyItem.read{opacity:.66}.notifyIcon{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;font-style:normal;font-size:13px;font-weight:900}.notifyIcon.request{background:#eef4ff;color:#315de0}.notifyIcon.service{background:#fff4e8;color:#e8751a}.notifyIcon.equipment{background:#ebfaf3;color:#07895a}.notifyIcon.system{background:#f2f4f7;color:#667085}.notifyTitleRow{display:flex;gap:7px;align-items:flex-start}.notifyTitleRow b{font-size:11px;line-height:1.3;flex:1}.notifyTitleRow i{font-size:7px;font-style:normal;padding:3px 5px;border-radius:999px;background:#e9fbf3;color:#07895a;font-weight:900}.notifyCopy small{font-size:9.5px;line-height:1.4;color:#69778c}.notifyCopy em{font-size:8px;margin-top:5px}.notifyArrow{color:#b2bdcb;margin-top:8px}.notifyEmptyV3{padding:38px 24px;text-align:center;display:grid;justify-items:center}.notifyEmptyV3>span{width:46px;height:46px;border-radius:15px;background:#f3f6f9;display:grid;place-items:center;font-size:20px}.notifyEmptyV3 b{font-size:12px;margin-top:10px}.notifyEmptyV3 small{font-size:9.5px;color:#8b97a8;max-width:260px;line-height:1.45;margin-top:4px}.notifySettingBtn.soundOn{background:#ecfdf3;color:#067647;border-color:#abefc6}

/* AI assistant v3 */
.assistantFab{background:#0f1b2e;border:1px solid rgba(255,255,255,.08);box-shadow:0 18px 52px rgba(15,27,46,.22);letter-spacing:-.01em}.assistantPanel{width:min(465px,calc(100vw - 28px));max-height:min(78vh,760px);border-radius:22px;border-color:#dfe6ee;box-shadow:0 30px 100px rgba(15,23,42,.20)}.assistantHeadV3{padding:13px 14px}.assistantIdentityV3{display:flex;align-items:center;gap:9px}.assistantLogoV3{width:34px;height:34px;border-radius:11px;background:linear-gradient(145deg,#0fa76d,#087d55);color:#fff;display:grid;place-items:center;font-size:16px;box-shadow:0 8px 20px rgba(10,163,106,.22)}.assistantContextV3{margin:10px 12px 0;padding:9px 10px;border-radius:12px;background:#f2fbf7;border:1px solid #d7f3e7;display:grid;grid-template-columns:8px 1fr;gap:8px}.assistantContextV3>span{font-size:9px;color:#0aa36a;margin-top:1px}.assistantContextV3 b{display:block;font-size:9.5px;color:#15684b}.assistantContextV3 small{display:block;font-size:8px;color:#678478;margin-top:2px;line-height:1.35}.assistantMessages{padding:12px 12px 5px;display:flex;flex-direction:column;gap:9px}.assistantMsg{gap:7px;align-items:flex-end}.assistantMsg.user{flex-direction:row-reverse}.assistantAvatar{width:24px;height:24px;flex:0 0 24px;border-radius:8px;background:#e8f8f1;color:#0b8c60;display:grid;place-items:center;font-size:8px;font-weight:900}.assistantMsg.user .assistantAvatar{background:#0f1b2e;color:#fff}.assistantMsg>div.assistantBubbleV3{max-width:85%;padding:10px 11px;border-radius:14px;font-size:11px;line-height:1.5}.assistantMsg.ai>div.assistantBubbleV3{background:#f8fafc;border:1px solid #e7ebf0;border-bottom-left-radius:5px}.assistantMsg.user>div.assistantBubbleV3{background:#0f1b2e;color:#fff;border-bottom-right-radius:5px}.assistantThinkingV3{display:flex!important;align-items:center;gap:4px;color:#8491a3}.assistantThinkingV3 i{width:5px;height:5px;border-radius:50%;background:#0aa36a;animation:v3Pulse .9s infinite}.assistantThinkingV3 i:nth-child(2){animation-delay:.15s}.assistantThinkingV3 i:nth-child(3){animation-delay:.3s}.assistantThinkingV3 span{margin-left:5px;font-size:9px}.assistantQuick{padding:0 12px;margin:8px 0 0;gap:5px}.assistantQuick button{font-size:9px;padding:6px 8px;background:#fff;border-color:#e1e7ee;color:#56647a}.assistantQuick button:hover{border-color:#a7d9c6;background:#f2fbf7}.assistantActionsV3{display:grid;gap:6px;margin:0 0 4px 31px;max-width:calc(100% - 44px)}.assistantResultCard{display:grid;grid-template-columns:30px minmax(0,1fr) 14px;align-items:center;gap:8px;text-align:left;border:1px solid #dfe6ee;background:#fff;border-radius:12px;padding:8px;cursor:pointer}.assistantResultCard:hover{border-color:#b7ddcd;background:#fbfffd}.assistantResultCard.confirm{border-color:#fed7aa;background:#fffaf4}.assistantResultIcon{width:30px;height:30px;border-radius:9px;background:#ebf8f2;color:#08895c;display:grid;place-items:center;font-weight:900}.assistantResultCard.confirm .assistantResultIcon{background:#fff0df;color:#b65c0d}.assistantResultCard b{display:block;font-size:9.5px;color:#172033}.assistantResultCard small{display:block;font-size:8px;color:#8a96a7;margin-top:2px}.assistantResultCard em{font-style:normal;color:#a3adba}.assistantComposer{padding:9px 12px 11px;gap:7px}.assistantComposer textarea{border-radius:13px!important;min-height:44px!important;font-size:11px!important}.assistantComposer .btn{border-radius:12px}.assistantFoot{font-size:7.5px!important;color:#8f9baa!important;padding:0 12px 11px!important}.aiConfirmSheet{border-radius:22px}.aiConfirmIcon{background:#ebf8f2;color:#07895a}

/* Empty states */
.empty{border-color:#dce3eb;background:linear-gradient(180deg,#fff,#fbfcfd);color:#8390a3}.empty:before{content:'· · ·';display:block;color:#c6cfda;letter-spacing:.18em;font-weight:900;margin-bottom:8px}.empty.compact:before{display:none}

/* Auth / registration v3 */
body.authV3{min-height:100vh;background:radial-gradient(circle at 12% 10%,rgba(10,163,106,.10),transparent 30%),linear-gradient(180deg,#f8fafc 0%,#f3f6fa 100%);color:#101828}.authV3 .authWrap{max-width:1080px;padding:24px 22px 70px}.authV3 .authTop{padding:2px 2px 0}.authBrandV3{display:inline-flex;align-items:center;gap:10px}.authBrandV3 .brandMark{width:38px;height:38px;border-radius:12px;background:#0aa36a;color:#fff;display:grid;place-items:center;font-size:16px;box-shadow:0 8px 22px rgba(10,163,106,.18)}.authV3 .hero{padding:76px 0 32px}.authV3 .hero h1{font-size:clamp(42px,6.5vw,72px);max-width:850px}.authV3 .authGrid{align-items:stretch;gap:18px}.authV3 .authCard{border-color:#e2e8f0;box-shadow:0 14px 40px rgba(15,23,42,.055)}.loginCardV3{position:relative;overflow:hidden}.loginCardV3:after{content:'';position:absolute;width:140px;height:140px;border-radius:50%;background:#eaf8f2;right:-70px;top:-70px;pointer-events:none}.authSecurityV3{display:inline-flex;align-items:center;gap:6px;font-size:9px;font-weight:850;color:#087d55;background:#eaf8f2;border:1px solid #d2efe3;padding:5px 8px;border-radius:999px;margin-bottom:12px}.authSecurityV3 span{font-size:7px}.authCardLeadV3{font-size:11px;line-height:1.45;margin:-6px 0 14px;max-width:420px}.authSubmitV3{display:flex!important;align-items:center;justify-content:space-between!important;padding-left:16px!important;padding-right:13px!important;min-height:44px}.authTrustV3{grid-column:1/-1;display:flex;gap:14px;flex-wrap:wrap;color:#7b8798;font-size:9px;font-weight:750;padding:4px 3px}.authTrustV3 span{display:flex;gap:5px;align-items:center}.authTrustV3 span:before{content:''}.registerV3 .authWrap{max-width:980px}.registerV3 .hero{padding-top:52px}.registerStepsV3{display:flex;gap:7px;margin:0 0 12px;overflow:auto;padding-bottom:2px}.registerStepsV3 span{white-space:nowrap;padding:7px 10px;border-radius:999px;background:#edf1f5;color:#7d899a;font-size:9px;font-weight:850}.registerStepsV3 span.active{background:#e7f8f0;color:#087d55}.registerCardV3{padding:24px}.authV3 .field input,.authV3 .field select{background:#fff;border-color:#dce3eb}.authV3 .field input:focus,.authV3 .field select:focus{border-color:#58bd95;box-shadow:0 0 0 3px rgba(10,163,106,.09)}

@media(max-width:820px){
  .ukAppError{top:auto;bottom:88px;grid-template-columns:34px minmax(0,1fr);padding:10px}.ukAppError .btn{grid-column:1/-1;width:100%}
  .toast{left:12px;right:12px;bottom:88px;max-width:none;border-radius:15px}
  .notifyPanelV3{position:fixed;inset:auto 10px 86px 10px;width:auto;max-height:70vh;border-radius:20px}.notifyList{max-height:48vh}.notifySettingsV3{padding:8px 10px}.notifySettingBtn{flex:1}.notifyRealtimeV3{display:none}
  .assistantPanel{left:10px;right:10px;bottom:128px;width:auto;max-height:72vh;border-radius:20px}.assistantContextV3{margin:8px 10px 0}.assistantMessages{padding:10px}.assistantActionsV3{margin-left:30px;max-width:calc(100% - 40px)}.assistantFab{bottom:78px;right:12px;padding:11px 14px}
  .authV3 .authWrap{padding:18px 16px 42px}.authV3 .hero{padding:46px 0 22px}.authV3 .hero h1{font-size:39px}.authV3 .hero p{font-size:14px}.authTrustV3{gap:8px;font-size:8px}.registerV3 .hero{padding-top:38px}.registerCardV3{padding:18px}
}
@media(max-width:520px){
  .assistantFab{font-size:0;width:54px;height:54px;padding:0}.assistantFab:after{content:'✦';font-size:22px}.assistantPanel{bottom:143px}.assistantHead .toolbar .btn{display:none}.notifyHeadV3{padding:13px}.notifyTitleRow b{font-size:10.5px}.notifyItem{padding:11px 12px}.authV3 .authTop .deviceBadge{display:none}.authV3 .hero h1{font-size:35px;line-height:1.02}.authV3 .authCard h2{font-size:23px}.registerStepsV3{margin-left:-2px;margin-right:-2px}
}

/* v3.0.0-RC1 — mobile dashboard drilldowns */
button.dashboardKpiLink{width:100%;display:block;text-align:left;font:inherit;color:inherit;-webkit-appearance:none;appearance:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button.dashboardKpiLink:active{transform:translateY(0) scale(.985);box-shadow:0 4px 14px rgba(15,23,40,.06)}
.barRowLinkV3{width:100%;border:0;background:transparent;padding:4px 2px;text-align:left;font:inherit;color:inherit;border-radius:9px;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.barRowLinkV3:hover{background:#f7faf9}.barRowLinkV3:active{background:#eef8f3}
@media(max-width:820px){button.dashboardKpiLink{min-height:116px}.barRowLinkV3{padding:8px 4px;min-height:44px}}

.dashboardLegacyTap{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.dashboardLegacyTap:active{transform:scale(.985)}

/* v3.0.0-RC1.1 — dashboard KPI touch reliability */
.dashboardKpiLink{position:relative;z-index:1;cursor:pointer;user-select:none;-webkit-user-select:none}
.dashboardKpiLink>*{pointer-events:none}
.dashboardKpiLink:focus-visible{outline:3px solid rgba(10,163,106,.20);outline-offset:2px}
@media(max-width:820px){.dashboardKpiLink{touch-action:manipulation;-webkit-tap-highlight-color:rgba(10,163,106,.08)}}


/* =========================================================
   v3.0.0-RC1.2 — MOBILE INTERACTION RELIABILITY
   Shared by owner / manager / dispatcher / executor / resident
   ========================================================= */
@media(max-width:820px){
  .v3Body button,.v3Body a[href],.v3Body [role="button"],.v3Body [data-page],.v3Body [onclick],
  .residentV3Body button,.residentV3Body a[href],.residentV3Body [role="button"],.residentV3Body [data-page],.residentV3Body [onclick]{
    touch-action:manipulation;-webkit-tap-highlight-color:rgba(10,163,106,.10)
  }
  .avatar[role="button"]{cursor:pointer;touch-action:manipulation;position:relative;z-index:2}
  .mobileAccountMenu{display:none;position:fixed;right:10px;top:68px;z-index:140;width:min(260px,calc(100vw - 20px));padding:8px;background:#fff;border:1px solid #e1e7ee;border-radius:16px;box-shadow:0 24px 70px rgba(15,23,42,.20)}
  .mobileAccountMenu.open{display:grid;gap:6px}
  .mobileAccountIdentity{padding:8px 9px 10px;border-bottom:1px solid #eef1f4}.mobileAccountIdentity b,.mobileAccountIdentity small{display:block}.mobileAccountIdentity b{font-size:12px}.mobileAccountIdentity small{font-size:9px;color:#8a96a8;margin-top:2px}
  .mobileAccountMenu button{width:100%;border:0;border-radius:11px;padding:11px 12px;text-align:left;font-weight:850;background:#f6f8fa;color:#344054}
  .mobileAccountLogoutBtn{background:#fff1f2!important;color:#b42318!important}
  .assistantFab,.mobileNav,.v3Topbar{pointer-events:auto!important}
}

/* v3.0.0-RC2 — equipment Excel import + multi-role staff */
.staffRoleBadgesV3{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.roleCapabilityCheck{display:flex;align-items:center;gap:9px;padding:12px 14px;border:1px solid #e3e8ef;border-radius:14px;background:#f8fafc;font-weight:700}
.roleCapabilityCheck input{width:18px;height:18px;accent-color:#16a36a}
.equipmentImportSheetV3{max-width:min(1220px,calc(100vw - 32px));width:100%}
.equipmentImportSetupV3{display:grid;grid-template-columns:1.05fr 1.5fr 1.3fr auto;gap:12px;align-items:end;margin-bottom:14px}
.equipmentImportSetupV3 .field{margin:0}
.equipmentImportPreviewAction .btn{min-height:44px;white-space:nowrap}
.equipmentImportStatsV3{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}
.equipmentImportStatsV3>div{padding:14px 16px;border:1px solid #e5e9ef;border-radius:16px;background:#fbfcfd}
.equipmentImportStatsV3 small{display:block;color:#7b8491;font-size:12px;margin-bottom:6px}
.equipmentImportStatsV3 b{font-size:20px;color:#18212f}
.equipmentImportTableV3{overflow:auto;max-height:52vh;border:1px solid #e3e8ef;border-radius:16px;background:#fff}
.equipmentImportTableV3 table{width:100%;border-collapse:separate;border-spacing:0;min-width:1120px}
.equipmentImportTableV3 thead th{position:sticky;top:0;z-index:2;background:#f7f9fb;color:#667085;font-size:12px;font-weight:800;text-align:left;padding:10px;border-bottom:1px solid #e3e8ef}
.equipmentImportTableV3 td{padding:8px 10px;border-bottom:1px solid #eef1f4;vertical-align:middle}
.equipmentImportTableV3 td input[type="text"],.equipmentImportTableV3 td input:not([type]){width:100%}
.equipmentImportTableV3 td input{border:1px solid #dfe5eb;border-radius:10px;padding:8px 9px;background:#fff;min-height:36px;font:inherit;color:#1f2937}
.equipmentImportTableV3 td input:focus{outline:none;border-color:#7bcaa7;box-shadow:0 0 0 3px rgba(22,163,106,.10)}
.equipmentImportTableV3 .importCellName{min-width:250px}
.equipmentImportTableV3 .importQty{width:76px}
.equipmentImportTableV3 .importDuplicateV3{background:#fffaf0}
.equipmentImportTableV3 .badge.ok{background:#eaf8f1;color:#14714b;border-color:#cceedd}
.equipmentImportTableV3 td small{display:block;margin-top:4px;color:#8a6d26;max-width:180px}
.equipmentImportFooterV3{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:14px;margin-top:14px;border-top:1px solid #edf0f3}
@media(max-width:980px){.equipmentImportSetupV3{grid-template-columns:1fr 1fr}.equipmentImportPreviewAction .btn{width:100%}.equipmentImportStatsV3{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.equipmentImportSheetV3{max-width:100%;width:100%}.equipmentImportSetupV3{grid-template-columns:1fr}.equipmentImportStatsV3{grid-template-columns:1fr 1fr}.equipmentImportStatsV3>div{padding:12px}.equipmentImportFooterV3{align-items:stretch;flex-direction:column}.equipmentImportFooterV3 .btn{width:100%}.staffRoleBadgesV3{justify-content:flex-start}}

/* RC3 — property-specific visit prices + maintenance schedule import + auth touch hardening */
.propertyCalloutFieldV3{margin-top:2px}.propertyCalloutGridV3{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.propertyCalloutRowV3{display:grid;grid-template-columns:minmax(0,1fr) 112px 18px;align-items:center;gap:8px;border:1px solid #e4e9ef;background:#f9fbfc;border-radius:13px;padding:9px 10px}.propertyCalloutRowV3 span{min-width:0}.propertyCalloutRowV3 b,.propertyCalloutRowV3 small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.propertyCalloutRowV3 b{font-size:10px;color:#1d2939}.propertyCalloutRowV3 small{font-size:8px;color:#8b97a7;margin-top:2px}.propertyCalloutRowV3 input{width:100%;min-width:0;height:38px!important;padding:0 9px!important;text-align:right}.propertyCalloutRowV3 em{font-style:normal;color:#7b8798;font-size:10px;font-weight:750}
.maintenanceImportSheetV3{max-width:1220px}.maintenanceImportSetupV3{grid-template-columns:minmax(320px,1.4fr) minmax(220px,.8fr) auto}.maintenanceImportTableV3 select,.maintenanceImportTableV3 input[type=date]{min-width:160px}.maintenanceEquipmentSelectV3{max-width:310px}.maintenanceReviewRowV3{background:#fffaf2}.maintenanceNeedsReviewV3{display:grid;gap:4px}.maintenanceNeedsReviewV3 b{font-size:9px;color:#b54708}.maintenanceNeedsReviewV3 small{font-size:8px;color:#b54708}.maintenanceDateInputV3{min-width:145px!important}
.authV3 form,.authV3 form *{pointer-events:auto}.authV3 .authSubmitV3{position:relative;z-index:4;touch-action:manipulation;-webkit-tap-highlight-color:rgba(10,163,106,.12)}.authV3 input,.authV3 select,.authV3 a,.authV3 button{touch-action:manipulation}
@media(max-width:820px){.propertyCalloutGridV3{grid-template-columns:1fr}.propertyCalloutRowV3{grid-template-columns:minmax(0,1fr) 105px 15px}.maintenanceImportSetupV3{grid-template-columns:1fr}.maintenanceImportTableV3{overflow:auto;-webkit-overflow-scrolling:touch}.maintenanceImportTableV3 table{min-width:1050px}.maintenanceImportSheetV3{padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}}

.priceObjectOverrideV3{display:block;margin-top:3px;color:#0a8f62;font-size:8px;font-weight:800}


/* =========================================================
   v3.0.0-RC3.2 — MOBILE INTERACTION STABILITY
   Root cause: hidden toast inherited both top and bottom on mobile,
   stretching across the viewport and intercepting pointer/touch events.
   Toasts are informational only and must never participate in hit testing.
   ========================================================= */
#toast.toast{
  pointer-events:none!important;
  visibility:hidden;
}
#toast.toast.show{
  visibility:visible;
  pointer-events:none!important;
}
@media(max-width:820px){
  #toast.toast{
    top:auto!important;
    bottom:calc(88px + env(safe-area-inset-bottom))!important;
    left:12px!important;
    right:12px!important;
    width:auto!important;
    height:auto!important;
    max-height:none!important;
  }
}


/* ==========================================================
   v3.0.0-RC3.3 — mobile modal scroll + profile polish + price import
   ========================================================== */
.priceToolbarV3{grid-template-columns:minmax(240px,1.5fr) minmax(155px,.75fr) minmax(155px,.75fr) minmax(150px,.7fr) auto}
.priceObjectOverrideV3{display:block;margin-top:3px;color:#7b8798;font-size:7px}
.priceImportSheetV3{width:min(1240px,calc(100vw - 32px));max-width:1240px}
.priceImportSetupV3{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(320px,1.5fr) auto;gap:12px;align-items:end;margin-bottom:14px}
.priceImportSetupV3 .field{margin:0}.priceImportPreviewAction .btn{min-height:44px;white-space:nowrap}
.priceImportTableV3{overflow:auto;max-height:52vh;border:1px solid #e3e8ef;border-radius:16px;background:#fff;-webkit-overflow-scrolling:touch}
.priceImportTableV3 table{width:100%;min-width:1120px;border-collapse:separate;border-spacing:0}
.priceImportTableV3 th{position:sticky;top:0;z-index:2;padding:10px;background:#f7f9fb;border-bottom:1px solid #e3e8ef;color:#667085;font-size:8px;text-transform:uppercase;letter-spacing:.04em;text-align:left}
.priceImportTableV3 td{padding:8px 10px;border-bottom:1px solid #eef1f4;vertical-align:middle;font-size:8.5px}.priceImportTableV3 td small{display:block;margin-top:3px;color:#8994a3}
.priceImportTableV3 input,.priceImportTableV3 select{min-height:38px;border:1px solid #dfe5eb;border-radius:10px;background:#fff;padding:8px 9px;color:#1f2937;font:inherit}.priceImportNameV3{min-width:290px;width:100%}.priceImportUnitV3{width:92px}.priceImportReviewRowV3{background:#fffaf3}.priceImportDuplicateV3{min-width:170px}.priceImportDuplicateV3 b,.priceImportDuplicateV3 small{display:block}.priceImportFooterV3{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}

@media(max-width:980px){.priceToolbarV3{grid-template-columns:1fr 1fr}.priceToolbarV3 .requestSearch{grid-column:1/-1}.priceImportSetupV3{grid-template-columns:1fr 1fr}.priceImportPreviewAction{grid-column:1/-1}.priceImportPreviewAction .btn{width:100%}}
@media(max-width:640px){.priceImportSetupV3{grid-template-columns:1fr}.priceImportPreviewAction{grid-column:auto}.priceImportSheetV3{width:100%;max-width:100%}.priceImportFooterV3{flex-direction:column;align-items:stretch}.priceImportFooterV3 .btn{width:100%}}

/* Long form sheets: header stays visible, form body is the scroll container. */
@media(max-width:820px){
  .v3Body .v3FormModal.open{overflow:hidden;overscroll-behavior:contain}
  .v3Body .v3FormModal>.formSheetV3{
    width:100%;max-width:none;height:min(92dvh,calc(100dvh - max(8px,env(safe-area-inset-top))));max-height:min(92dvh,calc(100dvh - max(8px,env(safe-area-inset-top))));
    display:flex;flex-direction:column;overflow:hidden!important;padding:0!important;border-radius:22px 22px 0 0;
  }
  .v3Body .v3FormModal>.formSheetV3>.sheetHead{
    position:relative!important;top:auto!important;flex:0 0 auto;margin:0!important;padding:16px 16px 13px!important;border-radius:22px 22px 0 0;background:#fff;
  }
  .v3Body .v3FormModal>.formSheetV3>form{
    flex:1 1 auto;min-height:0;overflow-y:auto!important;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
    padding:14px 16px calc(24px + env(safe-area-inset-bottom));scroll-padding-bottom:calc(88px + env(safe-area-inset-bottom));
  }
  .v3Body .v3FormModal>.formSheetV3>form>.btn.full{position:relative;margin-top:12px;margin-bottom:max(4px,env(safe-area-inset-bottom))}
}

/* Mobile profile: same visual language as v3 cards, no heavy framed buttons. */
@media(max-width:820px){
  .mobileAccountMenu{right:12px;top:62px;width:min(252px,calc(100vw - 24px));padding:9px;border:1px solid #edf0f3;border-radius:18px;background:rgba(255,255,255,.98);box-shadow:0 22px 70px rgba(15,23,42,.16);backdrop-filter:blur(16px)}
  .mobileAccountMenu.open{display:grid;gap:7px;animation:v3ModalIn .16s ease-out}
  .mobileAccountIdentity{padding:11px 12px;border:0!important;border-radius:13px;background:linear-gradient(145deg,#f4fbf8,#eef8f4)}
  .mobileAccountIdentity b{font-size:12px;color:#172033}.mobileAccountIdentity small{font-size:8.5px;color:#6e7f77;margin-top:3px}
  .mobileAccountMenu button{min-height:42px;width:100%;border:0!important;border-radius:12px;padding:10px 11px;text-align:left;font-size:10px;font-weight:800;background:transparent!important;color:#344054;box-shadow:none!important;transition:.14s ease}
  .mobileAccountMenu button:hover,.mobileAccountMenu button:active{background:#f5f8f7!important;color:#087d55}
  .mobileAccountLogoutBtn{color:#b42318!important;background:transparent!important}.mobileAccountLogoutBtn:hover,.mobileAccountLogoutBtn:active{background:#fff4f4!important;color:#9f1c13!important}
  .v3Topbar .avatar,.residentTopbarV3 .avatar{box-shadow:0 0 0 3px rgba(10,163,106,.08);border:1px solid rgba(10,163,106,.14)}
}
/* RC3.3 — keep price filters single-column on phones after tablet grid rule. */
@media(max-width:820px){
  .priceToolbarV3{grid-template-columns:1fr}
  .priceToolbarV3 .requestSearch{grid-column:auto}
}

/* ==========================================================
   v3.0.0-RC3.4 — global price import + desktop account menu + compact import checks
   ========================================================== */
/* Account popover is used on desktop and mobile; keep one visual language everywhere. */
.mobileAccountMenu{
  display:none;position:fixed;right:22px;top:72px;z-index:220;
  width:min(264px,calc(100vw - 24px));padding:10px;
  background:rgba(255,255,255,.985);border:1px solid #e7ecef;border-radius:18px;
  box-shadow:0 24px 72px rgba(15,23,42,.16);backdrop-filter:blur(16px);
}
.mobileAccountMenu.open{display:grid;gap:7px;animation:v3ModalIn .16s ease-out}
.mobileAccountIdentity{padding:11px 12px;border:0!important;border-radius:13px;background:linear-gradient(145deg,#f4fbf8,#eef8f4)}
.mobileAccountIdentity b,.mobileAccountIdentity small{display:block}
.mobileAccountIdentity b{font-size:12px;line-height:1.25;color:#172033}
.mobileAccountIdentity small{margin-top:3px;font-size:8.5px;line-height:1.3;color:#6e7f77}
.mobileAccountMenu button{
  width:100%;min-height:42px;margin:0;border:0!important;border-radius:12px!important;
  padding:10px 11px!important;text-align:left;font:inherit;font-size:10px;font-weight:800;
  background:transparent!important;color:#344054!important;box-shadow:none!important;outline:0;
  -webkit-appearance:none;appearance:none;cursor:pointer;transition:.14s ease;
}
.mobileAccountMenu button:hover,.mobileAccountMenu button:focus-visible{background:#f4f8f6!important;color:#087d55!important}
.mobileAccountLogoutBtn{color:#b42318!important}.mobileAccountLogoutBtn:hover,.mobileAccountLogoutBtn:focus-visible{background:#fff4f4!important;color:#9f1c13!important}

/* Import tables: checkbox must not inherit the 36–38px text-input geometry. */
.equipmentImportTableV3 td input[type="checkbox"],
.priceImportTableV3 td input[type="checkbox"]{
  display:inline-block!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;
  max-width:16px!important;max-height:16px!important;padding:0!important;margin:0!important;
  border:1px solid #cfd8e3!important;border-radius:5px!important;background:#fff!important;
  box-shadow:none!important;vertical-align:middle;accent-color:#0aa36a;cursor:pointer;
}
.equipmentImportTableV3 td input[type="checkbox"]:focus,
.priceImportTableV3 td input[type="checkbox"]:focus{outline:2px solid rgba(10,163,106,.16);outline-offset:2px;box-shadow:none!important}
.equipmentImportTableV3 td:first-child,.priceImportTableV3 td:first-child{text-align:center;width:44px}

/* Only editable text/number controls receive field styling. */
.equipmentImportTableV3 td input:not([type="checkbox"]){border:1px solid #dfe5eb;border-radius:10px;padding:8px 9px;background:#fff;min-height:36px;font:inherit;color:#1f2937}
.priceImportTableV3 input:not([type="checkbox"]),.priceImportTableV3 select{min-height:38px;border:1px solid #dfe5eb;border-radius:10px;background:#fff;padding:8px 9px;color:#1f2937;font:inherit}

/* Global price import does not ask for a property. */
.priceImportSetupV3{grid-template-columns:minmax(320px,1fr) auto}
.priceImportSetupV3 .field.full{grid-column:auto}
@media(max-width:820px){
  .mobileAccountMenu{right:12px;top:62px;width:min(252px,calc(100vw - 24px))}
  .priceImportSetupV3{grid-template-columns:1fr}.priceImportSetupV3 .field.full{grid-column:auto}
}


/* ==========================================================
   v3.0.0-RC3.5 — responsive modal hardening + notification glyph
   ========================================================== */
/* All modal content must stay inside its sheet on every viewport. */
.v3Body .modal>.sheet,
.residentV3Body .modal>.sheet{min-width:0;max-width:calc(100vw - 36px)}
.v3Body .modal .sheetHead,
.residentV3Body .modal .sheetHead{min-width:0;align-items:flex-start}
.v3Body .modal .sheetHead>div,
.residentV3Body .modal .sheetHead>div{min-width:0;flex:1 1 auto}
.v3Body .modal .sheetHead h2,
.residentV3Body .modal .sheetHead h2,
.v3Body .modal .sheetHead .eyebrow,
.residentV3Body .modal .sheetHead .eyebrow{max-width:100%;overflow-wrap:anywhere;word-break:normal}
.v3Body .modal .sheetHead .close,
.residentV3Body .modal .sheetHead .close{flex:0 0 36px;min-width:36px;max-width:36px}
.v3Body .modal .fields>*,.residentV3Body .modal .fields>*{min-width:0}
.v3Body .modal input,.v3Body .modal select,.v3Body .modal textarea,
.residentV3Body .modal input,.residentV3Body .modal select,.residentV3Body .modal textarea{max-width:100%;min-width:0}
.v3Body .modal .toolbar,.residentV3Body .modal .toolbar{max-width:100%;flex-wrap:wrap}
.v3Body .modal .btn,.residentV3Body .modal .btn{max-width:100%;min-width:0;white-space:normal;line-height:1.25;text-align:center;overflow-wrap:anywhere}
.v3Body .modal .card,.residentV3Body .modal .card{min-width:0;max-width:100%}
.v3Body .modal .kv,.residentV3Body .modal .kv{min-width:0}
.v3Body .modal .kv>* ,.residentV3Body .modal .kv>*{min-width:0;overflow-wrap:anywhere}

/* Notification: custom geometric icon instead of OS emoji, identical on desktop/mobile. */
.notifyBtn{font-size:0;overflow:visible;color:#0f1b2e;transition:.15s ease}
.notifyBtn:hover,.notifyBtn:focus-visible{background:#f1faf6;border-color:#ccebdd;color:#078a59;outline:none;box-shadow:0 0 0 3px rgba(10,163,106,.07)}
.notifyGlyphV3{width:20px;height:20px;display:grid;place-items:center;color:currentColor;pointer-events:none}
.notifyGlyphV3 svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.notifyEmptyV3 .notifyGlyphV3{width:22px;height:22px}
.notifyEmptyV3 .notifyGlyphV3 svg{width:22px;height:22px}
.notifyEmptyV3>span.notifyEmptyIconV3{width:46px;height:46px;border-radius:15px;background:#edf8f3;color:#078a59;display:grid;place-items:center}

/* Desktop/modal safety at split-window and laptop widths. */
@media(min-width:821px){
  .v3Body .modal,.residentV3Body .modal{padding:18px}
  .v3Body .modal>.sheet,.residentV3Body .modal>.sheet{max-width:calc(100vw - 36px);max-height:calc(100dvh - 36px)}
  .v3Body .modal .sheetHead h2,.residentV3Body .modal .sheetHead h2{line-height:1.12}
  .v3Body .modal .toolbar>.btn,.residentV3Body .modal .toolbar>.btn{flex:0 1 auto}
}

/* Mobile: one universal containment rule for EVERY sheet/detail window. */
@media(max-width:820px){
  .v3Body .modal.open,.residentV3Body .modal.open{
    padding-top:max(6px,env(safe-area-inset-top));
    padding-right:max(6px,env(safe-area-inset-right));
    padding-bottom:max(6px,env(safe-area-inset-bottom));
    padding-left:max(6px,env(safe-area-inset-left));
    overflow:hidden;overscroll-behavior:contain;
  }
  .v3Body .modal>.sheet,.residentV3Body .modal>.sheet{
    width:100%!important;max-width:100%!important;min-width:0!important;
    margin:0!important;max-height:calc(100dvh - max(12px,env(safe-area-inset-top)) - max(12px,env(safe-area-inset-bottom)))!important;
    overflow-x:hidden!important;
  }
  /* Full/detail sheets no longer use 100vw inside a padded modal (the source of left/right clipping). */
  .v3Body #objectModal>.objectSheetV3,
  .v3Body #requestModal>.requestSheetV3,
  .v3Body #serviceOrderModal>.serviceOrderSheetV3,
  .v3Body #equipmentPassportModal>.equipmentPassportSheetV3,
  .residentV3Body .residentDetailModalV3>.residentDetailSheetV3{
    width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;
    max-height:calc(100dvh - max(12px,env(safe-area-inset-top)) - max(12px,env(safe-area-inset-bottom)))!important;
    border-radius:20px!important;
  }
  .v3Body .modal .sheetHead,.residentV3Body .modal .sheetHead{
    padding-left:16px!important;padding-right:10px!important;gap:8px;
  }
  .v3Body .modal .sheetHead h2,.residentV3Body .modal .sheetHead h2{font-size:20px;line-height:1.08}
  .v3Body .modal .sheetHead .close,.residentV3Body .modal .sheetHead .close{
    flex-basis:42px;min-width:42px;max-width:42px;width:42px;height:42px;border-radius:13px;font-size:21px
  }
  .v3Body .modal .toolbar,.residentV3Body .modal .toolbar{display:flex;gap:7px}
  .v3Body .modal .toolbar>.btn,.residentV3Body .modal .toolbar>.btn{flex:1 1 150px}
  .v3Body .modal .ownerRowActions,.residentV3Body .modal .ownerRowActions{min-width:0}
  .v3Body .objectHeroV3,.v3Body .equipmentPassportHeroV3,.v3Body .serviceOrderHeroV3{min-width:0;max-width:100%}
  .v3Body .objectHeroV3>div,.v3Body .equipmentPassportHeroV3>div,.v3Body .serviceOrderHeroV3>div{min-width:0}
  .v3Body .objectHeroV3 h2,.v3Body .equipmentPassportHeroV3 h2,.v3Body .serviceOrderHeroV3 h2{overflow-wrap:anywhere}
  .notifyBtn{width:44px;height:44px;border-radius:14px}
  .notifyGlyphV3,.notifyGlyphV3 svg{width:21px;height:21px}
}

@media(max-width:430px){
  .v3Body .modal.open,.residentV3Body .modal.open{padding-left:4px;padding-right:4px}
  .v3Body .modal .sheetHead h2,.residentV3Body .modal .sheetHead h2{font-size:19px}
  .v3Body .modal .btn,.residentV3Body .modal .btn{font-size:14px}
}


/* Page-level collision prevention found during RC3.5 sweep. */
.moduleIntroV3>* ,.dashboardIntro>* ,.sectionHead>* ,.topbarHeading,.userIdentity{min-width:0}
.moduleIntroV3 .title,.dashboardIntro .title,.topbarHeading h1{max-width:100%;overflow-wrap:anywhere}
.moduleActionsV3,.dashboardActions{min-width:0;flex-wrap:wrap}
.moduleActionsV3 .btn,.dashboardActions .btn{max-width:100%;white-space:normal;text-align:center}
.directoryMobileCardV3,.serviceMobileCardV3,.equipmentMobileCardV3,.requestMobileCard,.residentRequestCardV3,.objectCardV3{min-width:0;max-width:100%;overflow:hidden}
.directoryMobileCardV3 b,.serviceMobileCardV3 b,.equipmentMobileCardV3 b,.requestMobileCard b,.residentRequestCardV3 h3,.objectCardV3 h3{overflow-wrap:anywhere}

@media(max-width:520px){
  .moduleActionsV3,.residentActionsV3{grid-template-columns:1fr!important;display:grid!important}
  .moduleActionsV3 .btn,.residentActionsV3 .btn{width:100%!important}
  .topbarHeading{min-width:0!important;max-width:48vw}
  .v3Topbar .notifyWrap,.residentTopbarV3 .notifyWrap{flex:0 0 auto}
}

/* ==========================================================
   v3.0.0-RC3.6 — Resident modal stability + smart price preview
   ========================================================== */
body.modalOpen{overflow:hidden;overscroll-behavior:none}
.residentSmartEstimateV3{transition:opacity .16s ease,border-color .16s ease,box-shadow .16s ease}
.smartPriceThinkingV3{margin-top:10px;padding:11px 12px;border:1px solid #e7ecef;border-radius:12px;background:#fbfcfd;color:#6f7d8e;font-size:8.5px;line-height:1.45}
.smartPriceThinkingV3>span{display:inline-block;width:5px;height:5px;border-radius:50%;background:#10a36a;margin-right:3px;animation:smartPricePulse 1s ease-in-out infinite}
.smartPriceThinkingV3>span:nth-child(2){animation-delay:.15s}.smartPriceThinkingV3>span:nth-child(3){animation-delay:.3s}
@keyframes smartPricePulse{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}
.smartPriceMatchedV3{display:grid;gap:6px;margin-top:10px}
.smartPriceMatchedV3>small{color:#8b96a5;font-size:7.5px;font-weight:800;text-transform:uppercase;letter-spacing:.055em}
.smartPriceMatchedV3>span{display:grid;gap:3px;padding:9px 10px;border:1px solid #e5ebe8;border-radius:11px;background:#f8fbfa;color:#344054;font-size:8.5px;font-weight:800;line-height:1.35}
.smartPriceMatchedV3>span em{font-size:7.5px;font-style:normal;font-weight:500;color:#7b8794}

@media(max-width:820px){
  /* One scroll owner per resident modal. This removes nested-scroll fights on iOS. */
  .residentV3Body .residentFormModalV3.open,
  .residentV3Body .residentDetailModalV3.open{align-items:flex-end;overflow:hidden!important}
  .residentV3Body .residentFormModalV3>.residentFormSheetV3,
  .residentV3Body .residentDetailModalV3>.residentDetailSheetV3{
    height:calc(100dvh - max(12px,env(safe-area-inset-top)) - max(8px,env(safe-area-inset-bottom)))!important;
    max-height:calc(100dvh - max(12px,env(safe-area-inset-top)) - max(8px,env(safe-area-inset-bottom)))!important;
    display:flex!important;flex-direction:column!important;overflow:hidden!important;padding:0!important;
    overscroll-behavior:none;border-radius:20px 20px 0 0!important;
  }
  .residentV3Body .residentFormModalV3>.residentFormSheetV3>.sheetHead,
  .residentV3Body .residentDetailModalV3>.residentDetailSheetV3>.sheetHead{
    position:relative!important;top:auto!important;z-index:5;flex:0 0 auto!important;margin:0!important;
    padding-top:14px!important;padding-bottom:12px!important;background:rgba(255,255,255,.985);backdrop-filter:blur(14px);
    border-bottom:1px solid #edf0f3;
  }
  .residentV3Body .residentFormModalV3>.residentFormSheetV3>form,
  .residentV3Body .residentDetailModalV3>.residentDetailSheetV3>#reqDetail,
  .residentV3Body .residentDetailModalV3>.residentDetailSheetV3>#residentServiceOrderDetail{
    flex:1 1 auto!important;min-height:0!important;max-height:none!important;
    overflow-y:auto!important;overflow-x:hidden!important;-webkit-overflow-scrolling:touch;
    overscroll-behavior-y:contain;touch-action:pan-y;
    padding-bottom:calc(28px + env(safe-area-inset-bottom))!important;
    scroll-padding-bottom:calc(92px + env(safe-area-inset-bottom));
  }
  .residentV3Body .residentFormModalV3>.residentFormSheetV3>form{padding-top:14px!important;padding-left:16px!important;padding-right:16px!important}
  .residentV3Body .residentDetailModalV3>.residentDetailSheetV3>#reqDetail,
  .residentV3Body .residentDetailModalV3>.residentDetailSheetV3>#residentServiceOrderDetail{padding-left:14px!important;padding-right:14px!important;padding-top:12px!important}
  .residentV3Body .residentFormModalV3 .close,
  .residentV3Body .residentDetailModalV3 .close{touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
  .residentSmartEstimateV3{margin-top:2px!important;margin-bottom:8px!important}
  .smartPriceMatchedV3>span{font-size:9px}
}


/* =========================================================
   v3.0.0-RC3.7 — STAFF SPECIALTY / PROPERTY SELECTORS
   Compact premium checkbox treatment for desktop + mobile.
   Scoped to the staff editor so form inputs elsewhere keep
   their existing geometry and behavior.
   ========================================================= */
#staffPropertyChecks,#specChecks{gap:10px 12px}
#staffPropertyChecks .staffChoiceCardV37,
#specChecks .staffChoiceCardV37{
  min-height:58px;
  padding:12px 14px!important;
  margin:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  border:1px solid #e1e7ee;
  border-radius:14px;
  background:#fff;
  cursor:pointer;
  user-select:none;
  -webkit-user-select:none;
  transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .12s ease;
}
#staffPropertyChecks .staffChoiceCardV37:hover,
#specChecks .staffChoiceCardV37:hover{
  border-color:#cfd8e3;
  background:#fcfdfd;
  box-shadow:0 5px 16px rgba(16,24,40,.035);
}
#staffPropertyChecks .staffChoiceCardV37:active,
#specChecks .staffChoiceCardV37:active{transform:scale(.995)}
#staffPropertyChecks .staffChoiceLabelV37,
#specChecks .staffChoiceLabelV37{
  min-width:0;
  color:#172033;
  font-size:10px;
  font-weight:850;
  line-height:1.3;
  overflow-wrap:anywhere;
}
#staffPropertyChecks input.staffChoiceInputV37,
#specChecks input.staffChoiceInputV37{
  -webkit-appearance:none!important;
  appearance:none!important;
  width:20px!important;
  height:20px!important;
  min-width:20px!important;
  min-height:20px!important;
  max-width:20px!important;
  padding:0!important;
  margin:0!important;
  flex:0 0 20px;
  border:1.5px solid #cbd5e1!important;
  border-radius:6px!important;
  background:#fff!important;
  box-shadow:none!important;
  outline:none;
  cursor:pointer;
  vertical-align:middle;
  transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease,transform .1s ease;
}
#staffPropertyChecks input.staffChoiceInputV37:checked,
#specChecks input.staffChoiceInputV37:checked{
  border-color:#1687f8!important;
  background-color:#1687f8!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.2 5.7 10 11 4.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;
  background-position:center!important;
  background-repeat:no-repeat!important;
  background-size:14px 14px!important;
}
#staffPropertyChecks input.staffChoiceInputV37:focus-visible,
#specChecks input.staffChoiceInputV37:focus-visible{
  border-color:#1687f8!important;
  box-shadow:0 0 0 3px rgba(22,135,248,.14)!important;
}
#staffPropertyChecks .staffChoiceCardV37:has(input:checked),
#specChecks .staffChoiceCardV37:has(input:checked){
  border-color:#d5e0eb;
  background:#fff;
}
@media(max-width:640px){
  #staffPropertyChecks,#specChecks{grid-template-columns:1fr;gap:8px}
  #staffPropertyChecks .staffChoiceCardV37,
  #specChecks .staffChoiceCardV37{min-height:54px;padding:11px 13px!important;border-radius:13px}
  #staffPropertyChecks .staffChoiceLabelV37,
  #specChecks .staffChoiceLabelV37{font-size:11px}
  #staffPropertyChecks input.staffChoiceInputV37,
  #specChecks input.staffChoiceInputV37{width:21px!important;height:21px!important;min-width:21px!important;min-height:21px!important;max-width:21px!important;flex-basis:21px}
}

/* ==========================================================
   v3.0.0-RC3.8 — PRODUCT LANDING + AUTH PAGE SCROLL FIX
   ========================================================== */
/* Public auth pages are documents, not the fixed desktop app shell. */
html.authHtml{height:auto!important;min-height:100%;overflow-x:hidden!important;overflow-y:auto!important;scroll-behavior:smooth}
html.authHtml body.authV3{height:auto!important;min-height:100vh!important;overflow-x:hidden!important;overflow-y:visible!important;overscroll-behavior-y:auto}
html.authHtml body.authV3.modalOpen{overflow:hidden!important}

.productLandingV4{background:
  radial-gradient(circle at 7% 3%,rgba(16,185,129,.11),transparent 27%),
  radial-gradient(circle at 92% 22%,rgba(71,85,105,.055),transparent 28%),
  linear-gradient(180deg,#f9fbfc 0%,#f3f6f9 100%)!important}
.productLandingV4 .authWrap{max-width:1180px;padding:24px 24px 34px}
.productTopV4{display:flex;align-items:center;justify-content:space-between;gap:18px}
.productStatusV4{display:inline-flex;align-items:center;gap:8px;border:1px solid #e2e8ef;background:rgba(255,255,255,.72);backdrop-filter:blur(12px);border-radius:999px;padding:7px 11px;color:#64748b;font-size:9px;font-weight:850;letter-spacing:.01em;white-space:nowrap}
.productStatusV4 i{width:7px;height:7px;border-radius:50%;background:#0aa36a;box-shadow:0 0 0 4px rgba(10,163,106,.10)}

.productHeroV4{display:grid!important;grid-template-columns:minmax(0,1.5fr) minmax(280px,.72fr);align-items:end;gap:48px;padding:52px 0 28px!important}
.productHeroCopyV4{min-width:0}
.productHeroV4 h1{font-size:clamp(48px,6vw,76px)!important;line-height:.96!important;letter-spacing:-.067em!important;max-width:760px!important;margin:11px 0 17px!important}
.productHeroV4 p{font-size:16px!important;line-height:1.53!important;max-width:700px!important;margin:0;color:#718096!important}
.productPillsV4{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:20px}
.productPillsV4 span{display:inline-flex;align-items:center;gap:7px;border:1px solid #e1e7ed;background:rgba(255,255,255,.72);border-radius:999px;padding:7px 10px;color:#516072;font-size:9px;font-weight:820;white-space:nowrap}
.productPillsV4 span:before{content:'';width:5px;height:5px;border-radius:50%;background:#12a56c}

.productFlowV4{align-self:stretch;display:grid;align-content:end;gap:7px;padding:15px;border:1px solid #dfe6ed;border-radius:20px;background:rgba(255,255,255,.76);box-shadow:0 18px 55px rgba(15,23,42,.055);backdrop-filter:blur(16px)}
.productFlowHeadV4{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:1px 3px 7px}
.productFlowHeadV4 span{display:flex;align-items:center;gap:7px;font-size:9px;font-weight:900;color:#344054;text-transform:uppercase;letter-spacing:.055em}.productFlowHeadV4 span i{width:6px;height:6px;border-radius:50%;background:#0aa36a}
.productFlowHeadV4 small{font-size:8px;color:#98a2b3;font-weight:750}
.productFlowStepV4{display:grid;grid-template-columns:30px minmax(0,1fr) 16px;align-items:center;gap:10px;padding:10px;border:1px solid #e7ecf1;background:#fff;border-radius:13px}
.productFlowStepV4>b{width:30px;height:30px;display:grid;place-items:center;border-radius:10px;background:#edf9f4;color:#087d55;font-size:9px}
.productFlowStepV4 strong,.productFlowStepV4 small{display:block}.productFlowStepV4 strong{font-size:10.5px;color:#253247}.productFlowStepV4 small{font-size:8px;color:#8a96a8;margin-top:2px;line-height:1.3}.productFlowStepV4 em{font-size:12px;color:#a4afbd;font-style:normal;font-weight:900;text-align:center}
.productFlowStepV4:last-child em{color:#0aa36a}

.productAuthGridV4{grid-template-columns:1.05fr .95fr!important;gap:16px!important;align-items:stretch}
.productLandingV4 .authCard{padding:20px;border-radius:20px;background:rgba(255,255,255,.94)}
.productLandingV4 .authCard h2{font-size:25px;letter-spacing:-.035em;margin:3px 0 10px}
.productLandingV4 .authCardLeadV3{font-size:10.5px;margin:0 0 14px;line-height:1.5}
.productLandingV4 .field{margin-bottom:10px}.productLandingV4 .field label{font-size:9px;margin-bottom:5px}.productLandingV4 .field input{min-height:43px;border-radius:12px;padding:0 13px}
.productLandingV4 .authSubmitV3{margin-top:2px;min-height:45px;border-radius:12px;font-size:11px}
.productAccessCardV4{display:flex;flex-direction:column}
.productAccessCardV4>.muted{font-size:11px;line-height:1.52;margin:1px 0 16px;max-width:430px}
.productAccessBtnV4{display:flex!important;align-items:center;justify-content:space-between!important;min-height:45px;border-radius:12px;margin-top:auto;padding-left:14px!important;padding-right:13px!important}
.productAccessNoteV4{display:grid;grid-template-columns:22px minmax(0,1fr);gap:8px;align-items:start;margin-top:11px;padding:10px;border-radius:12px;background:#f7f9fb;border:1px solid #edf0f3}
.productAccessNoteV4>span{width:22px;height:22px;display:grid;place-items:center;border-radius:8px;background:#e9f8f2;color:#087d55;font-size:9px;font-weight:900}.productAccessNoteV4 p{margin:1px 0 0;color:#69768a;font-size:8.5px;line-height:1.42}
.productTrustV4{padding:10px 3px 0!important}
.productFooterV4{display:flex;justify-content:space-between;gap:16px;margin-top:14px;padding:15px 3px 0;border-top:1px solid rgba(218,225,233,.78);font-size:8px;font-weight:750;color:#98a2b3}.productFooterV4 span:first-child{color:#667085;font-weight:900}

/* Keep the sign-in action comfortably reachable on shorter laptop screens. */
@media(min-width:821px) and (max-height:900px){
  .productLandingV4 .authWrap{padding-top:18px;padding-bottom:24px}
  .productHeroV4{padding:30px 0 20px!important;gap:38px}
  .productHeroV4 h1{font-size:clamp(44px,5.4vw,66px)!important;margin-bottom:13px!important}
  .productHeroV4 p{font-size:14px!important}.productPillsV4{margin-top:14px}
  .productFlowStepV4{padding:8px}.productLandingV4 .authCard{padding:17px}.productLandingV4 .authCard h2{font-size:23px}
  .productLandingV4 .field{margin-bottom:8px}.productLandingV4 .field input{min-height:40px}
  .productLandingV4 .authSubmitV3,.productAccessBtnV4{min-height:42px}
  .productAccessCardV4>.muted{margin-bottom:12px}.productAccessNoteV4{padding:8px;margin-top:8px}
  .productTrustV4{padding-top:7px!important}.productFooterV4{margin-top:9px;padding-top:10px}
}

@media(max-width:820px){
  html.authHtml{scroll-behavior:auto}
  .productLandingV4 .authWrap{padding:17px 15px max(38px,env(safe-area-inset-bottom))}
  .productStatusV4{font-size:8px;padding:6px 9px}
  .productHeroV4{display:block!important;padding:38px 0 20px!important}
  .productHeroV4 h1{font-size:clamp(40px,12vw,56px)!important;line-height:.98!important;max-width:620px!important;margin:9px 0 14px!important}
  .productHeroV4 p{font-size:14px!important;line-height:1.5!important}
  .productPillsV4{margin-top:15px;gap:6px}.productPillsV4 span{font-size:8px;padding:6px 9px}
  .productFlowV4{display:none}
  .productAuthGridV4{grid-template-columns:1fr!important;gap:12px!important}
  .productLandingV4 .authCard{padding:17px}.productLandingV4 .authCard h2{font-size:24px}
  .productLandingV4 .field input{min-height:45px}
  .productLandingV4 .authSubmitV3,.productAccessBtnV4{min-height:46px}
  .productTrustV4{padding-top:8px!important;gap:7px!important}.productFooterV4{margin-top:12px;padding-top:12px;flex-direction:column;gap:4px}
}
@media(max-width:520px){
  .productTopV4 .authBrandV3{font-size:14px}.productTopV4 .authBrandV3 .brandMark{width:34px;height:34px;border-radius:11px}
  .productStatusV4 span{display:none}.productStatusV4{width:34px;height:34px;justify-content:center;padding:0}.productStatusV4 i{margin:0}
  .productHeroV4{padding-top:31px!important}.productHeroV4 h1{font-size:40px!important;letter-spacing:-.06em!important}.productHeroV4 p{font-size:13px!important}
  .productPillsV4{display:grid;grid-template-columns:1fr 1fr}.productPillsV4 span:last-child{grid-column:1/-1}
}

/* Registration uses the same public-page scrolling model. */
.authHtml .registerV3 .authTop{display:flex;align-items:center;justify-content:space-between;gap:12px}

/* RC4 · system Web Push / PWA */
.notifySettingsV3{flex-wrap:wrap}
.notifySettingBtn.hidden{display:none!important}
.iosInstallPrompt .soundPromptIcon{background:#f2f4f7;color:#101828;font-weight:900}
@media(max-width:620px){.notifySettingsV3 .notifySettingBtn{min-width:82px}.iosInstallPrompt{bottom:86px}}
\n\n/* ==========================================================
   v3.0.0-RC4.4 — iOS/PWA notification touch hardening
   ========================================================== */
.notifyWrap{z-index:220;pointer-events:auto!important;isolation:isolate}
.notifyBtn{position:relative;z-index:222;pointer-events:auto!important;touch-action:manipulation;-webkit-tap-highlight-color:rgba(10,163,106,.12);user-select:none;-webkit-user-select:none}
.notifyPanel{z-index:221;pointer-events:auto!important}
.notifyPanel.open{pointer-events:auto!important}
.notifySettingsV3,.notifyList,.notifyHeadV3{pointer-events:auto!important}
.notifySettingBtn,.notifyItem,.notifyHeadV3 button{pointer-events:auto!important;touch-action:manipulation}
@media(max-width:820px){
  .v3Topbar,.residentTopbarV3{position:relative;z-index:210;overflow:visible!important}
  .v3Topbar .userBox,.residentTopbarV3 .userBox{position:relative;z-index:220;overflow:visible!important}
  .v3Topbar .notifyWrap,.residentTopbarV3 .notifyWrap{position:relative;z-index:230;display:flex;align-items:center}
  .v3Topbar .notifyBtn,.residentTopbarV3 .notifyBtn{min-width:44px;min-height:44px;display:grid!important;visibility:visible!important;opacity:1!important}
  .notifyPanelV3{z-index:500!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
}
@media(max-width:620px){
  .notifyPanelV3{left:8px!important;right:8px!important;bottom:calc(76px + env(safe-area-inset-bottom))!important;top:auto!important;max-height:min(72dvh,620px)!important}
}


/* ==========================================================
   v3.0.0-RC4.4 — iOS notification center portal
   ========================================================== */
.notifyWrap{position:relative!important;z-index:1001!important;pointer-events:auto!important}
.notifyBtn{z-index:1002!important;pointer-events:auto!important;touch-action:manipulation!important;-webkit-touch-callout:none}
.notifyPanelPortalV4{
  position:fixed!important;
  z-index:2147482000!important;
  top:calc(env(safe-area-inset-top) + 72px)!important;
  right:12px!important;
  left:auto!important;
  bottom:auto!important;
  width:min(430px,calc(100vw - 24px))!important;
  max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 92px)!important;
  overflow:hidden!important;
  transform:translateZ(0);
  -webkit-transform:translateZ(0);
  isolation:isolate;
}
.notifyPanelPortalV4.open{display:block!important;pointer-events:auto!important}
.notifyHeadActionsV4{display:flex;align-items:center;gap:9px}
.notifyCloseBtnV4{width:36px;height:36px;border:0;border-radius:11px;background:#f2f4f7;color:#475467;font-size:24px;line-height:1;display:grid;place-items:center;touch-action:manipulation}
.notifyCloseBtnV4:active{transform:scale(.96)}
html.notifyCenterOpen .requestAlertModal{pointer-events:none!important}
@media(max-width:820px){
  .notifyPanelPortalV4{
    top:calc(env(safe-area-inset-top) + 76px)!important;
    left:8px!important;
    right:8px!important;
    bottom:calc(env(safe-area-inset-bottom) + 76px)!important;
    width:auto!important;
    max-height:none!important;
    border-radius:22px!important;
  }
  .notifyPanelPortalV4 .notifyList{max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 225px)!important;-webkit-overflow-scrolling:touch}
}


/* ==========================================================
   v3.0.0-RC4.5 — iPhone bell / request-alert isolation
   ========================================================== */
@media(max-width:820px){
  /* The new-request backdrop must never cover the 68px mobile topbar. */
  .requestAlertModal.open{top:68px!important;bottom:0!important;left:0!important;right:0!important}
  .v3Topbar,.residentTopbarV3{position:relative!important;z-index:2147481000!important;pointer-events:auto!important}
  .v3Topbar .userBox,.residentTopbarV3 .userBox,.notifyWrap,.notifyBtn{pointer-events:auto!important}
}

/* RC4.6.1: explicit issue-photo uploader in staff request card */
.requestIssueUploadV46{margin-top:16px;padding:14px 16px;border:1px solid #dbe4ee;border-radius:16px;background:#f8fbff;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.requestIssueUploadV46>div:first-child{display:grid;gap:4px}.requestIssueUploadV46 small{color:#667085}.requestIssueUploadActionsV46{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.requestIssueUploadActionsV46 input[type=file]{max-width:330px}
@media(max-width:760px){.requestIssueUploadV46{align-items:stretch}.requestIssueUploadActionsV46{display:grid;grid-template-columns:1fr}.requestIssueUploadActionsV46 input[type=file]{max-width:100%;width:100%}.requestIssueUploadActionsV46 .btn{width:100%}}
