
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
:root{
--blue:#1B3A6B;--blue2:#2E5FA3;--blue-light:#E8EEF8;--blue-xlight:#F0F5FF;
--green:#059669;--green-light:#ECFDF5;--green2:#10B981;
--red:#DC2626;--red-light:#FEF2F2;
--amber:#D97706;--amber-light:#FFFBEB;
--purple:#7C3AED;--purple-light:#F5F3FF;
--gray:#6B7280;--gray-light:#F9FAFB;--gray-border:#E5E7EB;
--white:#fff;--text:#111827;--text2:#374151;--text3:#6B7280;
--radius:14px;--radius-sm:9px;--shadow:0 1px 4px rgba(0,0,0,.09);--shadow-md:0 4px 20px rgba(0,0,0,.11);
}
body{font-family:'Plus Jakarta Sans',sans-serif;background:#EEF2F9;color:var(--text);min-height:100vh;max-width:430px;margin:0 auto;overflow-x:hidden}
h1,h2,h3{font-weight:700;line-height:1.25}
button{font-family:inherit;cursor:pointer;border:none;outline:none;transition:all .15s}
input,select,textarea{font-family:inherit;font-size:15px;outline:none;transition:border .2s}
a{text-decoration:none}

/* Shell */
#app{display:flex;flex-direction:column;min-height:100vh}
.screen{flex:1;overflow-y:auto;padding-bottom:96px}

/* Top Bar */
.topbar{background:var(--blue);padding:14px 16px 13px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:0 2px 12px rgba(27,58,107,.3)}
.topbar-left{display:flex;align-items:center;gap:10px}
.topbar-logo{width:34px;height:34px;border-radius:9px;background:rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;font-size:17px;border:1px solid rgba(255,255,255,.2)}
.topbar-title{color:#fff;font-size:16px;font-weight:800;letter-spacing:-.3px}
.topbar-sub{color:rgba(255,255,255,.55);font-size:10px;margin-top:1px;font-weight:600;letter-spacing:.3px}
.topbar-right{display:flex;align-items:center;gap:8px}
.tb-btn{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.13);display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;cursor:pointer;position:relative;border:1px solid rgba(255,255,255,.1)}
.notif-dot{position:absolute;top:1px;right:1px;width:8px;height:8px;border-radius:50%;background:#EF4444;border:1.5px solid var(--blue)}
.role-chip{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.25);border-radius:20px;padding:4px 10px;color:#fff;font-size:10px;font-weight:700;letter-spacing:.5px}

/* Bottom Nav */
.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:430px;background:#fff;border-top:1px solid var(--gray-border);display:flex;z-index:200;padding:4px 0 env(safe-area-inset-bottom);box-shadow:0 -4px 20px rgba(0,0,0,.07)}
.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5px 2px 6px;font-size:9px;font-weight:700;color:var(--text3);letter-spacing:.3px;gap:3px;cursor:pointer;transition:color .2s;text-transform:uppercase}
.nav-item.active{color:var(--blue)}
.nav-icon{font-size:19px;line-height:1}
.nav-bar{width:18px;height:2.5px;border-radius:2px;background:var(--blue);margin-top:2px;opacity:0;transition:opacity .2s}
.nav-item.active .nav-bar{opacity:1}

/* Cards */
.card{background:#fff;border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);border:1px solid var(--gray-border)}

/* Stat grid */
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px 14px 0}
.stat-tile{background:#fff;border-radius:var(--radius);padding:15px 13px 13px;box-shadow:var(--shadow);border:1px solid var(--gray-border);position:relative;overflow:hidden}
.st-label{font-size:10px;color:var(--text3);font-weight:700;letter-spacing:.5px;text-transform:uppercase;margin-bottom:7px}
.st-val{font-size:22px;font-weight:800;color:var(--text);line-height:1}
.st-sub{font-size:11px;color:var(--text3);margin-top:5px;font-weight:500}
.st-icon{position:absolute;right:11px;top:13px;font-size:22px;opacity:.12}
.st-blue{border-left:3.5px solid var(--blue)}
.st-green{border-left:3.5px solid var(--green)}
.st-red{border-left:3.5px solid var(--red)}
.st-amber{border-left:3.5px solid var(--amber)}
.st-purple{border-left:3.5px solid var(--purple)}

/* Section */
.sec-head{padding:18px 14px 8px;display:flex;justify-content:space-between;align-items:center}
.sec-title{font-size:13px;font-weight:800;color:var(--text2);letter-spacing:-.1px;text-transform:uppercase}
.sec-link{font-size:12px;color:var(--blue);font-weight:700}

/* Badges & pills */
.pill{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:700;white-space:nowrap}
.pill-green{background:var(--green-light);color:var(--green)}
.pill-red{background:var(--red-light);color:var(--red)}
.pill-amber{background:var(--amber-light);color:var(--amber)}
.pill-blue{background:var(--blue-light);color:var(--blue)}
.pill-gray{background:#F3F4F6;color:var(--text3)}
.pill-purple{background:var(--purple-light);color:var(--purple)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:5px;padding:9px 15px;border-radius:var(--radius-sm);font-size:12px;font-weight:700;transition:all .15s;white-space:nowrap}
.btn:active{transform:scale(.96)}
.btn-primary{background:var(--blue);color:#fff}
.btn-outline{background:#fff;color:var(--blue);border:1.5px solid #C7D7F0}
.btn-green{background:var(--green);color:#fff}
.btn-red{background:var(--red-light);color:var(--red);border:1px solid #FECACA}
.btn-purple{background:var(--purple);color:#fff}
.btn-amber{background:var(--amber-light);color:var(--amber);border:1px solid #FDE68A}
.btn-sm{padding:6px 11px;font-size:11px}
.btn-xs{padding:4px 9px;font-size:10px;border-radius:6px}
.btn-block{width:100%;justify-content:center;padding:13px}

/* Property card */
.prop-card{margin:0 14px 12px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--gray-border);overflow:hidden}
.prop-hd{background:var(--blue);padding:15px 16px;color:#fff}
.prop-name{font-size:16px;font-weight:800}
.prop-addr{font-size:11px;opacity:.65;margin-top:2px}
.prop-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:10px;font-weight:700;margin-top:8px}
.occ{background:rgba(255,255,255,.2);color:#fff}
.vac{background:#FEF2F2;color:var(--red)}
.prop-body{padding:14px 16px}
.prop-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid #F3F4F6;font-size:13px}
.prop-row:last-child{border-bottom:none}
.prl{color:var(--text3);font-weight:500}
.prv{font-weight:700;color:var(--text)}
.prop-actions{display:flex;gap:8px;padding:12px 16px;background:#FAFAFA;border-top:1px solid var(--gray-border);flex-wrap:wrap}

/* Tenant list */
.t-item{display:flex;align-items:center;gap:12px;padding:14px;background:#fff;border-bottom:1px solid var(--gray-border);cursor:pointer}
.t-item:active{background:#F9FAFB}
.t-avatar{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:15px;font-weight:800;flex-shrink:0}
.t-name{font-size:14px;font-weight:700;color:var(--text)}
.t-sub{font-size:11px;color:var(--text3);margin-top:2px;font-weight:500}
.t-rent{font-size:14px;font-weight:800;color:var(--green)}

/* Pay row */
.pay-row{display:flex;align-items:center;padding:12px 14px;border-bottom:1px solid #F3F4F6;background:#fff}
.pm-name{font-size:13px;font-weight:700;color:var(--text);margin-bottom:2px}
.pm-sub{font-size:11px;color:var(--text3);font-weight:500}
.pm-amt{font-size:15px;font-weight:800;margin-right:10px}

/* Electricity */
.meter-row{display:flex;gap:8px;margin-bottom:8px}
.meter-box{flex:1;background:#F9FAFB;border-radius:8px;padding:10px;text-align:center;border:1px solid var(--gray-border)}
.mb-lbl{font-size:9px;color:var(--text3);font-weight:700;letter-spacing:.4px;text-transform:uppercase;margin-bottom:4px}
.mb-val{font-size:18px;font-weight:700;color:var(--text);font-family:'DM Mono',monospace}

/* Complaint */
.complaint-item{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--gray-border);margin:0 14px 12px;overflow:hidden}
.c-head{padding:13px 14px;border-bottom:1px solid #F3F4F6}
.c-title{font-size:14px;font-weight:700;color:var(--text)}
.c-meta{font-size:11px;color:var(--text3);margin-top:3px;font-weight:500}
.c-body{padding:12px 14px;font-size:13px;color:var(--text2);line-height:1.5}
.c-footer{padding:10px 14px;background:#FAFAFA;display:flex;justify-content:space-between;align-items:center;gap:8px}
.c-comment{padding:10px 14px;background:#F0F5FF;border-top:1px solid #DBEAFE;font-size:12px;color:#374151;line-height:1.5}

/* Fine */
.fine-item{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--gray-border);margin:0 14px 12px;overflow:hidden}
.fine-hd{background:linear-gradient(135deg,#7C3AED,#5B21B6);padding:14px 16px;color:#fff;display:flex;justify-content:space-between;align-items:flex-start}
.fine-title{font-size:14px;font-weight:700}
.fine-amount{font-size:22px;font-weight:800;font-family:'DM Mono',monospace}
.fine-body{padding:13px 16px}

/* Docs */
.doc-item{display:flex;align-items:center;gap:12px;padding:13px 14px;background:#fff;border-bottom:1px solid var(--gray-border)}
.doc-ico{width:40px;height:40px;border-radius:10px;background:var(--blue-light);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.doc-name{font-size:13px;font-weight:700;color:var(--text)}
.doc-meta{font-size:11px;color:var(--text3);margin-top:2px;font-weight:500}

/* Alerts */
.alert-strip{display:flex;align-items:flex-start;gap:9px;padding:11px 14px;border-radius:var(--radius-sm);margin:0 14px 8px;font-size:12px;font-weight:600;line-height:1.5}
.al-warn{background:var(--amber-light);color:#92400E}
.al-danger{background:var(--red-light);color:#991B1B}
.al-info{background:var(--blue-xlight);color:#1E40AF}
.al-purple{background:var(--purple-light);color:#5B21B6}

/* Form */
.form-group{margin-bottom:15px}
.form-label{display:block;font-size:11px;font-weight:800;color:var(--text2);margin-bottom:6px;letter-spacing:.4px;text-transform:uppercase}
.form-input{width:100%;padding:12px 13px;background:#fff;border:1.5px solid var(--gray-border);border-radius:var(--radius-sm);font-size:14px;color:var(--text)}
.form-input:focus{border-color:var(--blue)}
.form-select{width:100%;padding:12px 13px;background:#fff;border:1.5px solid var(--gray-border);border-radius:var(--radius-sm);font-size:14px;color:var(--text);-webkit-appearance:none}
.form-textarea{width:100%;padding:12px 13px;background:#fff;border:1.5px solid var(--gray-border);border-radius:var(--radius-sm);font-size:14px;color:var(--text);resize:none;min-height:90px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* Sheet modal */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:500;display:flex;align-items:flex-end;max-width:430px;margin:0 auto}
.sheet{background:#fff;border-radius:20px 20px 0 0;padding:8px 16px 32px;width:100%;max-height:90vh;overflow-y:auto;animation:sup .25s ease}
@keyframes sup{from{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}
.s-handle{width:36px;height:4px;background:var(--gray-border);border-radius:4px;margin:0 auto 18px}
.s-title{font-size:17px;font-weight:800;margin-bottom:18px;color:var(--text)}

/* Login */
.login-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 20px;background:var(--blue);position:relative;overflow:hidden}
.login-bg{position:absolute;inset:0;background:linear-gradient(160deg,#1B3A6B 0%,#2E5FA3 60%,#1B5E8A 100%);z-index:0}
.login-circles{position:absolute;top:-80px;right:-60px;width:280px;height:280px;border-radius:50%;background:rgba(255,255,255,.05);z-index:0}
.login-circles2{position:absolute;bottom:-100px;left:-80px;width:320px;height:320px;border-radius:50%;background:rgba(255,255,255,.04);z-index:0}
.login-content{position:relative;z-index:1;width:100%;max-width:360px}
.login-logo{width:72px;height:72px;background:rgba(255,255,255,.15);border-radius:22px;display:flex;align-items:center;justify-content:center;font-size:34px;margin:0 auto 16px;border:1px solid rgba(255,255,255,.25);box-shadow:0 8px 32px rgba(0,0,0,.15)}
.login-brand{color:#fff;font-size:26px;font-weight:800;text-align:center;letter-spacing:-.5px}
.login-tagline{color:rgba(255,255,255,.6);font-size:13px;text-align:center;margin-top:4px;margin-bottom:32px}
.role-select{display:flex;gap:10px;margin-bottom:24px}
.role-btn{flex:1;padding:14px;border-radius:var(--radius);background:rgba(255,255,255,.1);border:1.5px solid rgba(255,255,255,.2);color:#fff;font-size:13px;font-weight:700;text-align:center;cursor:pointer;transition:all .2s}
.role-btn.active{background:rgba(255,255,255,.95);color:var(--blue);border-color:#fff}
.login-card{background:#fff;border-radius:20px;padding:24px 20px;box-shadow:0 24px 64px rgba(0,0,0,.3)}
.login-heading{font-size:17px;font-weight:800;color:var(--text);margin-bottom:4px}
.login-hint{font-size:12px;color:var(--text3);margin-bottom:20px}
.login-demo{text-align:center;margin-top:14px;font-size:11px;color:rgba(255,255,255,.5)}

/* Bar chart */
.bar-chart{display:flex;align-items:flex-end;gap:6px;height:80px}
.bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}
.bar{width:100%;border-radius:5px 5px 0 0}
.bar-lbl{font-size:9px;color:var(--text3);font-weight:700;font-family:'DM Mono',monospace}

/* Empty */
.empty{padding:48px 20px;text-align:center;color:var(--text3)}
.empty-icon{font-size:48px;margin-bottom:12px}
.empty-msg{font-size:14px;font-weight:600;margin-bottom:6px}
.empty-sub{font-size:12px}

/* Tenant profile header */
.tp-header{background:var(--blue);padding:20px 16px 22px;color:#fff}
.tp-avatar{width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;border:2.5px solid rgba(255,255,255,.4);margin-bottom:10px}
.tp-name{font-size:20px;font-weight:800}
.tp-flat{font-size:12px;opacity:.7;margin-top:3px}
.tp-stats{display:flex;gap:16px;margin-top:14px}
.tp-stat{text-align:center}
.tp-stat-val{font-size:17px;font-weight:800}
.tp-stat-lbl{font-size:10px;opacity:.7;margin-top:2px;font-weight:600}

/* Tabs */
.tabs-wrap{display:flex;background:#F0F2F8;padding:4px;border-radius:10px;margin:14px 14px 0;gap:3px}
.tab-btn{flex:1;text-align:center;padding:8px 4px;font-size:10px;font-weight:700;color:var(--text3);border-radius:7px;cursor:pointer;transition:all .2s;letter-spacing:.2px;text-transform:uppercase}
.tab-btn.active{background:#fff;color:var(--blue);box-shadow:var(--shadow)}

/* Settings rows */
.setting-row{display:flex;align-items:center;justify-content:space-between;padding:15px 14px;border-bottom:1px solid #F3F4F6;background:#fff;cursor:pointer}
.s-lbl{font-size:14px;font-weight:700;color:var(--text)}
.s-sub{font-size:11px;color:var(--text3);margin-top:2px}

/* My flat (tenant view) */
.my-flat-hd{background:linear-gradient(135deg,var(--blue) 0%,var(--blue2) 100%);padding:20px 16px;color:#fff;border-radius:var(--radius);margin:0 14px 14px}
.mf-flat{font-size:13px;opacity:.7;font-weight:600;letter-spacing:.3px;margin-bottom:4px}
.mf-name{font-size:20px;font-weight:800}
.mf-rent{font-size:28px;font-weight:800;margin-top:10px;font-family:'DM Mono',monospace}
.mf-sub{font-size:12px;opacity:.65;margin-top:2px}

/* Divider */
.divider{height:1px;background:var(--gray-border);margin:0 14px}

/* Full-stack additions */
body{max-width:100%;}
.app-shell{max-width:430px;margin:0 auto;min-height:100vh;background:#EEF2F9;position:relative}.desktop-wrap{max-width:1180px;margin:0 auto}.admin-shell{max-width:1200px;margin:0 auto;background:#EEF2F9;min-height:100vh}.wide-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;padding:14px}.field-error{color:var(--red);font-size:12px;font-weight:700;margin:8px 0}.success{background:var(--green-light);color:var(--green);padding:10px 14px;border-radius:10px;margin:10px 14px;font-size:13px;font-weight:700}.property-img{height:160px;background:linear-gradient(135deg,#DBEAFE,#F8FAFC);display:flex;align-items:center;justify-content:center;font-size:48px}.filter-card{margin:14px;background:#fff;border:1px solid var(--gray-border);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.table-wrap{overflow-x:auto;background:#fff;margin:14px;border-radius:14px;border:1px solid var(--gray-border)}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:12px;border-bottom:1px solid #eee;text-align:left}th{background:#F8FAFC;color:#374151;font-size:11px;text-transform:uppercase}.hide-mobile{display:none}@media(min-width:768px){.app-shell{max-width:1100px}.screen{padding-bottom:30px}.bottom-nav{max-width:1100px}.hide-mobile{display:block}.property-list{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:0 14px}.property-list .prop-card{margin:0}.auth-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}}
