/* Aasra portal styles — ported from aasra-web prototype (style.css) */

:root{
  --green:#176b3a;
  --green-2:#2e8b57;
  --green-soft:#eaf5e7;
  --orange:#f26a21;
  --orange-soft:#fff0e4;
  --yellow:#f5b52b;
  --blue:#1976d2;
  --red:#e85b5b;
  --ink:#0b3b3a;
  --muted:#667777;
  --cream:#fbfaf4;
  --white:#fff;
  --line:#e7e5dc;
  --shadow:0 10px 30px rgba(20,55,40,.08);
  --radius:16px;
  --sidebar:232px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:var(--cream)}
a{text-decoration:none;color:inherit}
button,input,select{font:inherit}
button{cursor:pointer}
.app{min-height:100vh}
.topbar{height:72px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 30px;position:sticky;top:0;z-index:30}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:22px;color:var(--ink)}
.logo{width:38px;height:38px;border-radius:13px;background:linear-gradient(135deg,var(--orange),var(--green));display:grid;place-items:center;color:#fff;font-size:19px;font-weight:900;box-shadow:0 5px 15px rgba(23,107,58,.18)}
.brand small{display:block;font-size:9px;color:var(--muted);font-weight:600;letter-spacing:.2px}
.public-nav{margin-left:auto;display:flex;gap:28px;align-items:center;font-size:13px}
.public-nav a.active{color:var(--orange);font-weight:800;border-bottom:2px solid var(--orange);padding-bottom:25px;padding-top:25px}
.btn{border:0;border-radius:10px;padding:11px 18px;font-weight:800;display:inline-flex;gap:8px;align-items:center;justify-content:center}
.btn-primary{background:var(--orange);color:#fff;box-shadow:0 8px 18px rgba(242,106,33,.18)}
.btn-outline{background:#fff;color:var(--green);border:1px solid var(--green)}
.btn-soft{background:var(--green-soft);color:var(--green)}
.btn-danger{background:#fff0f0;color:#c74343}
.public-main{max-width:1280px;margin:auto}
.hero{min-height:610px;padding:55px 6%;display:grid;grid-template-columns:1fr 1.05fr;gap:30px;align-items:center;background:
 radial-gradient(circle at 85% 25%,#f6d9a4 0 13%,transparent 13.5%),
 linear-gradient(135deg,#f3f8e9,#fffdf7 55%,#fbe9cf)}
.hero h1{font-size:62px;line-height:.98;margin:18px 0;color:var(--ink);letter-spacing:-2px}
.hero h1 span{color:var(--orange)}
.hero p{font-size:17px;line-height:1.65;color:#385556;max-width:620px}
.pill{display:inline-flex;align-items:center;gap:7px;background:#e2f1dc;border-radius:30px;padding:9px 14px;font-size:12px;font-weight:800;color:var(--green)}
.hero-actions{display:flex;gap:14px;margin:25px 0}
.hero-features{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:30px}
.feature-mini{text-align:center;font-size:12px;font-weight:800}
.icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;margin:0 auto 8px;background:#e3f4e0;color:var(--green)}
.icon.orange{background:#ffe8d8;color:var(--orange)}
.icon.blue{background:#e3f0ff;color:var(--blue)}
.icon.red{background:#ffe1e1;color:var(--red)}
.hero-visual{position:relative}
.family-card{height:260px;border-radius:24px;background:linear-gradient(135deg,#dfe9d4,#e9cfa9);overflow:hidden;display:flex;align-items:flex-end;justify-content:center;box-shadow:var(--shadow)}
.family-art{font-size:110px;filter:saturate(.9);padding-bottom:15px}
.mock-dashboard{background:#fff;border:1px solid #e4e6dc;border-radius:18px;box-shadow:0 20px 50px rgba(19,54,36,.18);padding:14px;position:absolute;left:-35px;right:-15px;bottom:-165px}
.mock-head{display:flex;justify-content:space-between;font-weight:800;font-size:13px;padding:5px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}
.stat{padding:12px;background:#fafbf8;border-radius:11px;border:1px solid #edf0e8}
.stat b{display:block;font-size:19px}
.stat span{font-size:10px;color:var(--muted)}
.mock-body{display:grid;grid-template-columns:1.5fr .9fr;gap:10px}
.map{height:170px;border-radius:12px;background:linear-gradient(135deg,#dbe9c7,#cde5ee 45%,#f0e0b9);position:relative;overflow:hidden}
.map:before,.map:after{content:"";position:absolute;background:rgba(255,255,255,.7);height:2px;left:-10%;right:-10%;transform:rotate(-20deg);top:55%}
.map:after{transform:rotate(25deg);top:35%}
.pin{position:absolute;width:26px;height:26px;border-radius:50% 50% 50% 0;background:var(--orange);transform:rotate(-45deg);display:grid;place-items:center;color:#fff;font-size:11px}
.pin:after{content:"";width:9px;height:9px;background:#fff;border-radius:50%}
.activity{border:1px solid #edf0e8;border-radius:12px;padding:10px}
.activity h4{margin:0 0 8px;font-size:12px}
.activity-row{display:flex;gap:8px;padding:7px 0;border-bottom:1px solid #f0f0ea;font-size:10px}
.section{padding:60px 6%;background:#fff}
.section.alt{background:#f4f7ed}
.section-title{text-align:center;max-width:720px;margin:0 auto 35px}
.section-title h2{font-size:34px;margin:10px 0}
.section-title p{color:var(--muted);line-height:1.6}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}
.card h3{margin:10px 0 7px;font-size:17px}
.card p{color:var(--muted);line-height:1.55;font-size:13px}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.step{text-align:center;position:relative}
.step-num{width:42px;height:42px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;margin:auto;font-weight:900}
.price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;max-width:1000px;margin:auto}
.price{position:relative}
.price.featured{border:2px solid var(--orange);transform:translateY(-8px)}
.price .amount{font-size:34px;font-weight:900;margin:10px 0}
.checklist{padding:0;list-style:none;color:var(--muted);font-size:13px;line-height:2}
.footer{padding:35px 6%;background:#103f35;color:#eaf4eb;display:flex;justify-content:space-between;font-size:12px}

/* app shell */
.shell{display:flex;min-height:calc(100vh - 72px)}
.sidebar{width:var(--sidebar);background:#fff;border-right:1px solid var(--line);padding:18px 12px;position:fixed;top:72px;bottom:0;overflow:auto}
.side-brand{padding:8px 12px 18px;font-weight:900}
.side-section{font-size:10px;color:#98a49e;font-weight:900;padding:12px 12px 6px;text-transform:uppercase}
.side-link{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;font-size:12px;font-weight:700;color:#4e6561;margin:2px 0}
.side-link.active{background:var(--green-soft);color:var(--green)}
.side-link .sicon{width:22px;text-align:center}
.content{margin-left:var(--sidebar);width:calc(100% - var(--sidebar));padding:28px}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:22px}
.page-head h1{margin:0;font-size:27px}
.page-head p{margin:5px 0 0;color:var(--muted);font-size:13px}
.header-actions{display:flex;gap:8px}
.dashboard-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.dash-stat{background:#fff;border:1px solid var(--line);border-radius:15px;padding:17px;box-shadow:var(--shadow)}
.dash-stat .label{font-size:11px;color:var(--muted)}
.dash-stat strong{display:block;font-size:25px;margin-top:6px}
.dash-stat .delta{font-size:10px;color:var(--green);font-weight:800}
.two-col{display:grid;grid-template-columns:1.45fr .85fr;gap:18px}
.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.panel{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);padding:18px}
.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.panel-head h3{margin:0;font-size:15px}
.table{width:100%;border-collapse:collapse;font-size:12px}
.table th{text-align:left;color:#81908b;font-size:10px;text-transform:uppercase;padding:9px;border-bottom:1px solid var(--line)}
.table td{padding:12px 9px;border-bottom:1px solid #f0f1ec}
.badge{display:inline-flex;padding:5px 8px;border-radius:20px;font-size:9px;font-weight:900}
.badge.green{background:#e7f5e9;color:var(--green)}
.badge.orange{background:#fff0e5;color:#c85c18}
.badge.red{background:#ffe8e8;color:#c74444}
.badge.blue{background:#e7f0ff;color:#2568ad}
.person{display:flex;align-items:center;gap:10px}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#d9efcf,#f7c98f);display:grid;place-items:center;font-weight:900;color:var(--green)}
.avatar.big{width:55px;height:55px}
.search{border:1px solid var(--line);border-radius:9px;padding:9px 11px;background:#fff;min-width:180px}
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.form-group label{display:block;font-size:11px;font-weight:800;margin-bottom:6px}
.form-group input,.form-group select,.form-group textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:10px;background:#fff;outline:none}
.form-group textarea{min-height:100px;resize:vertical}
.timeline{position:relative;padding-left:25px}
.timeline:before{content:"";position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:#dfe9df}
.event{position:relative;padding:0 0 20px}
.event:before{content:"";position:absolute;left:-23px;top:2px;width:11px;height:11px;border-radius:50%;background:var(--orange);border:3px solid #fff;box-shadow:0 0 0 2px #f5d6c3}
.event strong{font-size:12px}
.event span{font-size:10px;color:var(--muted);display:block;margin-top:3px}
.event p{font-size:11px;color:#4d6260;margin:5px 0}
.large-map{height:430px;border-radius:14px;background:linear-gradient(135deg,#d8e8c9,#c8e1ea 45%,#f3e2b6);position:relative;overflow:hidden}
.large-map .route{position:absolute;height:5px;background:rgba(25,118,210,.7);left:15%;right:22%;top:48%;transform:rotate(-15deg);border-radius:10px}
.large-map .map-label{position:absolute;background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px 9px;font-size:10px;box-shadow:var(--shadow)}
.alert-row{display:flex;gap:12px;padding:12px;border-bottom:1px solid #eef0eb}
.alert-row:last-child{border-bottom:0}
.alert-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:#fff0e3;color:var(--orange)}
.settings-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px}
.settings-tabs button{border:0;background:transparent;padding:10px 14px;font-size:11px;font-weight:800;color:var(--muted)}
.settings-tabs button.active{color:var(--orange);border-bottom:2px solid var(--orange)}
.login-wrap{min-height:calc(100vh - 72px);display:grid;place-items:center;padding:30px;background:linear-gradient(135deg,#f2f8ea,#fff9ef)}
.login-card{width:min(430px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:32px;box-shadow:var(--shadow)}
.login-card h1{margin:0 0 6px}
.login-card p{font-size:12px;color:var(--muted)}
.login-card .form-group{margin:15px 0}
.login-card .btn{width:100%;margin-top:8px}
.admin-accent{--green:#295d7b;--green-2:#3c789a;--green-soft:#e8f2f7;--orange:#d86a2a}
.admin-shell .sidebar{background:#f9fbfc}
.admin-shell .side-link.active{background:#e8f2f7;color:#295d7b}
.chart{height:210px;display:flex;align-items:end;gap:12px;padding:15px;border-radius:12px;background:#f7faf8}
.bar{flex:1;background:linear-gradient(to top,#2e8b57,#a9d7b3);border-radius:7px 7px 2px 2px;min-height:20px}
.notice{padding:12px 14px;border-radius:11px;background:#fff7e9;color:#8a5a12;font-size:11px;margin-bottom:14px}
.empty{padding:45px;text-align:center;color:var(--muted);font-size:12px}
@media(max-width:1000px){
  .public-nav{display:none}.hero{grid-template-columns:1fr}.hero-visual{min-height:420px}.mock-dashboard{left:0;right:0}
  .cards,.price-grid,.steps,.three-col{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr 1fr}.two-col{grid-template-columns:1fr}
}
@media(max-width:700px){
  .topbar{padding:0 15px}.sidebar{position:static;width:100%;display:none}.shell{display:block}.content{margin:0;width:100%;padding:16px}
  .hero{padding:35px 20px}.hero h1{font-size:42px}.hero-features{grid-template-columns:1fr 1fr}.mock-dashboard{position:relative;bottom:auto;margin-top:-20px}.hero-visual{min-height:auto}
  .cards,.price-grid,.steps,.dashboard-grid,.three-col,.form-grid{grid-template-columns:1fr}.public-nav+.btn{display:none}.footer{display:block}
}

/* ===== Design-system additions for Blazor portal ===== */
.topbar .user-chip{margin-left:16px;font-size:12px;font-weight:700;color:var(--muted)}
.topbar .btn-outline{cursor:pointer}
.admin-shell .topbar .brand .logo{background:linear-gradient(135deg,var(--orange),var(--green))}
.side-link{text-decoration:none}
.side-link:hover{background:var(--green-soft)}
.side-link.active{background:var(--green-soft);color:var(--green)}
.admin-shell .side-link.active{background:#e8f2f7;color:#295d7b}
.side-signout{width:100%;border:0;background:transparent;text-align:left;cursor:pointer}
.public-nav a{color:var(--ink);font-weight:600}
.public-nav a:hover{color:var(--orange)}
.alert-row{display:flex;gap:12px;padding:12px;border-bottom:1px solid #eef0eb;align-items:center}
.alert-row.critical .alert-icon{background:#ffe8e8;color:var(--red)}
.leaflet-map,#map{height:430px;border-radius:14px;border:1px solid var(--line)}
.btn{cursor:pointer;text-decoration:none}
.btn:hover{text-decoration:none;filter:brightness(.97)}
.btn[disabled]{opacity:.6;cursor:not-allowed}
.form-error{background:#ffe8e8;color:#c74444;padding:10px 12px;border-radius:10px;font-size:12px;margin:12px 0}
.form-ok{background:#e7f5e9;color:var(--green);padding:10px 12px;border-radius:10px;font-size:12px;margin:12px 0}
.token-box{display:block;background:#f7faf8;border:1px dashed var(--green-2);border-radius:10px;padding:10px;font-size:12px;word-break:break-all;user-select:all}
.muted{color:var(--muted)}
.small-note{font-size:11px;color:var(--muted)}
.admin-login-wrap{min-height:100vh;display:grid;place-items:center;padding:30px;background:linear-gradient(135deg,#e8f2f7,#fff9ef)}
.live-dot{display:inline-flex;align-items:center;gap:6px}
.person a{color:inherit}
.panel + .panel{margin-top:18px}
.cards.two{grid-template-columns:1fr 1fr}
.stack{display:grid;gap:18px}

/* ===== Legacy-class compatibility (pages not yet ported 1:1) ===== */
.page-title{font-size:27px;font-weight:800;margin:0}
.page-sub{color:var(--muted);font-size:13px;margin:5px 0 0}
.card-aasra{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);padding:18px}
.btn-aasra,.btn-orange{background:var(--orange);color:#fff !important;border:0;border-radius:10px;padding:11px 18px;font-weight:800;display:inline-flex;align-items:center;gap:8px;box-shadow:0 8px 18px rgba(242,106,33,.18);text-decoration:none !important}
.btn-aasra:hover,.btn-orange:hover{filter:brightness(.95);color:#fff}
.btn-aasra-outline,.btn-outline-orange{background:#fff;color:var(--green) !important;border:1px solid var(--green);border-radius:10px;padding:9px 16px;font-weight:800;display:inline-flex;align-items:center;text-decoration:none !important}
.btn-ghost{background:var(--green-soft);color:var(--green) !important;border:0;border-radius:10px;padding:10px 16px;font-weight:800;text-decoration:none !important}
.btn-primary{background:var(--orange);border-color:var(--orange)}
.btn-outline-primary{color:var(--green);border-color:var(--green)}
.btn-outline-primary:hover{background:var(--green);border-color:var(--green)}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.stat-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:17px;box-shadow:var(--shadow);display:flex;gap:12px;align-items:flex-start}
.stat-card .stat-ico{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:#e3f4e0;color:var(--green)}
.stat-card .stat-ico.orange{background:#ffe8d8;color:var(--orange)}
.stat-card .stat-ico.blue{background:#e3f0ff;color:var(--blue)}
.stat-card .stat-ico.red{background:#ffe1e1;color:var(--red)}
.stat-card .stat-value{font-size:25px;font-weight:800}
.stat-card .stat-label{font-size:11px;color:var(--muted)}
.device-row,.child-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:14px;background:#fff;border:1px solid var(--line);border-radius:12px;margin-bottom:10px}
.device-row:hover,.child-row:hover{border-color:#f6c9a8;box-shadow:var(--shadow)}
.avatar.green{background:linear-gradient(135deg,#bfe5c9,#8fd0a3)}
.badge-live,.badge-offline,.badge-soft,.badge-warn{display:inline-flex;padding:5px 9px;border-radius:20px;font-size:10px;font-weight:900}
.badge-live{background:#e7f5e9;color:var(--green)}
.badge-offline{background:#ffe8e8;color:#c74444}
.badge-soft{background:#fff0e5;color:#c85c18}
.badge-warn{background:#fff7e9;color:#8a5a12}
.warning-card{border-radius:12px;padding:12px 14px;margin-bottom:8px;background:#fff7e9;border:1px solid #f5dfae;border-left:4px solid var(--yellow)}
.warning-card.critical{background:#fff0f0;border-color:#f3c7c7;border-left-color:var(--red)}
.timeline-item{position:relative;padding:0 0 18px .25rem}
.timeline-item::before{content:"";position:absolute;left:-23px;top:2px;width:11px;height:11px;border-radius:50%;background:var(--orange);border:3px solid #fff;box-shadow:0 0 0 2px #f5d6c3}
.empty-state{text-align:center;padding:40px 16px;color:var(--muted);font-size:13px;border:1px dashed var(--line);border-radius:14px;background:#fff}
.table-aasra{width:100%;border-collapse:collapse;font-size:12px}
.table-aasra th{text-align:left;color:#81908b;font-size:10px;text-transform:uppercase;padding:9px;border-bottom:1px solid var(--line)}
.table-aasra td{padding:12px 9px;border-bottom:1px solid #f0f1ec}
.map-pin-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--muted)}
.map-pin-legend span{display:flex;align-items:center;gap:6px}
.pin-dot{width:12px;height:12px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:inline-block}
.pin-dot.pink{background:#ec4899}.pin-dot.orange{background:var(--orange)}
.form-control,.form-select{border-radius:9px;border:1px solid var(--line);padding:10px}
.form-control:focus,.form-select:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(242,106,33,.15)}
.card > .card-body{padding:0}
@media(max-width:1000px){.stat-grid{grid-template-columns:1fr 1fr}.cards.two{grid-template-columns:1fr}}
@media(max-width:700px){.stat-grid{grid-template-columns:1fr}}
