/* Old Parkland portal — ported from the original static dashboard, plus
   login/admin additions. Brand: navy #00263E, tan #C6AC7F, EB Garamond. */
:root{
  --navy:#00263E; --navy2:#003764; --tan:#C6AC7F; --ltgrey:#E1E3E7; --grey:#6F6F6F;
  --blue:#317EC2; --teal:#009696; --maroon:#883840;
  --bg:#F7F8FA; --card:#FFFFFF; --line:#DDE1E6;
  --serif:'Adobe Garamond Pro','EB Garamond',Garamond,'Times New Roman',serif;
  --sans:Gotham,'Montserrat','Calibri Light',Calibri,'Segoe UI',Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);font-family:var(--serif);color:#1d2530;font-size:15px;font-variant-numeric:lining-nums}
h1,h2,h3,.lbl,.kpi-name,button,.chip,.tog,.side h3{font-family:var(--sans);text-transform:uppercase;letter-spacing:.06em;font-weight:500}
h2,h3,.side h3,.bldgcard h4{font-weight:600}

/* header */
header{background:var(--navy);color:#fff;padding:18px 28px;display:flex;align-items:center;gap:18px}
header img{flex:0 0 auto}
header .right{margin-left:auto;text-align:right;font-family:var(--sans);font-size:11px;letter-spacing:.08em;color:#cfd8df;text-transform:uppercase;line-height:1.7;display:flex;align-items:center;gap:16px}
.hdr-user{color:var(--tan);text-transform:none;letter-spacing:.02em}
.hdr-link{background:none;border:1px solid rgba(255,255,255,.35);color:#fff;font-family:var(--sans);font-size:10px;
  letter-spacing:.1em;text-transform:uppercase;padding:6px 12px;cursor:pointer;text-decoration:none}
.hdr-link:hover{background:rgba(255,255,255,.12)}

/* layout */
.wrap{display:flex;align-items:flex-start;gap:20px;padding:20px 28px;max-width:1700px;margin:0 auto}
.side{width:286px;flex:0 0 286px;position:sticky;top:14px;max-height:calc(100vh - 28px);overflow-y:auto;overflow-x:hidden}
.panel{background:var(--card);border:1px solid var(--line);margin-bottom:14px}
.panel h3{background:var(--navy);color:#fff;font-size:11.5px;padding:7px 12px;text-align:center}
.panel .bd{padding:10px 12px}
main{flex:1;min-width:0}

/* sidebar widgets */
.campus-btn{display:block;width:100%;border:1px solid var(--line);background:#fff;color:var(--navy);
  font-size:11px;padding:7px 8px;margin-bottom:6px;cursor:pointer;text-align:left}
.campus-btn.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.propitem{display:flex;align-items:center;gap:8px;padding:4px 2px;font-size:14.5px;cursor:pointer}
.propitem input{accent-color:var(--navy);cursor:pointer}
.propitem .code{color:#8a93a0;font-size:12px}
.tog{display:flex;align-items:center;gap:9px;font-size:10.5px;color:var(--navy);padding:7px 2px;cursor:pointer;line-height:1.5}
.sw{flex:0 0 34px;width:34px;height:18px;border-radius:9px;background:#c8cdd4;position:relative;transition:.15s}
.sw::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:.15s}
.tog.on .sw{background:var(--teal)}
.tog.on .sw::after{left:18px}
.side .note{font-size:12.5px;color:#75808d;padding:8px 2px 2px;font-style:italic;line-height:1.45}

/* sections */
section{background:var(--card);border:1px solid var(--line);margin-bottom:16px}
section>h2{background:var(--navy);color:#fff;font-size:13px;padding:8px 14px;display:flex;align-items:center;gap:12px}
section>h2 .sub{margin-left:auto;font-size:10px;color:var(--tan);letter-spacing:.1em}
.sec-bd{padding:14px}

/* kpis */
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.kpi{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--tan);padding:12px 14px}
.kpi-name{font-size:10.5px;color:var(--grey);letter-spacing:.1em}
.kpi-val{font-size:28px;color:var(--navy);font-weight:600;margin:4px 0 6px;font-family:var(--serif);font-variant-numeric:lining-nums}
.kpi-sub{font-size:13px;line-height:1.55;color:#5a6470}
.kpi-sub b{font-weight:600}
.fav{color:var(--teal)} .unf{color:var(--maroon)}
.kpi .flagnote{font-size:10.5px;color:#9aa3ae;font-style:italic}

/* chips & controls */
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:#fff;color:var(--navy);font-size:10px;padding:5px 10px;cursor:pointer;letter-spacing:.08em}
.chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.chip.tanon{background:var(--tan);border-color:var(--tan);color:var(--navy)}

/* charts */
.chartbox{position:relative;width:100%}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
canvas{max-width:100%}

/* tables */
table{border-collapse:collapse;width:100%;font-size:14.5px}
th{font-family:var(--sans);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:#fff;background:var(--navy2);padding:6px 10px;text-align:right;white-space:nowrap}
th:first-child{text-align:left}
td{padding:5px 10px;text-align:right;border-bottom:1px solid #edf0f3;font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}
td:first-child{text-align:left;white-space:normal}
tr.sechead td{background:var(--ltgrey);color:var(--navy);font-family:var(--sans);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;font-weight:600;padding-top:7px;padding-bottom:7px}
tr.grp td{cursor:pointer;font-weight:600;color:var(--navy)}
tr.grp td:first-child::before{content:'▸ ';color:var(--tan);font-size:11px}
tr.grp.open td:first-child::before{content:'▾ '}
tr.acct td{color:#4d5866;background:#fbfcfd}
tr.acct td:first-child{padding-left:30px;font-size:13.5px}
tr.totrow td{font-weight:700;color:var(--navy);background:#f1ede3;border-top:1.5px solid var(--tan);border-bottom:1.5px solid var(--tan)}
tr.noirow td{font-weight:700;color:#fff;background:var(--navy)}
.tblwrap{overflow-x:auto}

/* campus map */
.mapwrap{position:relative;width:100%}
.mapwrap img{display:block;width:100%;height:auto}
.hotspot{position:absolute;cursor:pointer;border:1.5px solid transparent;transition:.12s}
.hotspot:hover{border-color:var(--tan);background:rgba(198,172,127,.30)}
.hotspot.sel{border:2.5px solid var(--tan);background:rgba(198,172,127,.55);box-shadow:0 0 0 2px var(--navy),0 0 12px 3px rgba(198,172,127,.95);z-index:3}
.hotspot .tip{position:absolute;left:50%;top:-30px;transform:translateX(-50%);background:var(--navy);color:#fff;
  font-family:var(--sans);font-size:10px;letter-spacing:.07em;text-transform:uppercase;padding:4px 9px;white-space:nowrap;
  opacity:0;pointer-events:none;transition:.12s;z-index:5}
.hotspot:hover .tip{opacity:1}
.bldgcard{border-top:3px solid var(--tan);background:#fff;padding:10px 12px}
.bldgcard h4{font-family:var(--sans);text-transform:uppercase;letter-spacing:.08em;font-size:13px;color:var(--navy);margin-bottom:2px}
.bldgcard .meta{font-size:13px;color:#75808d;line-height:1.5;margin-bottom:10px}
.bldgcard .frow{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid #edf0f3;font-size:14.5px}
.bldgcard .frow .v{font-variant-numeric:tabular-nums;font-weight:600;color:var(--navy)}
.bldgcard .frow.hl{background:#f1ede3;margin:0 -12px;padding:6px 12px;border-top:1.5px solid var(--tan);border-bottom:1.5px solid var(--tan)}
.bldgcard .psf{font-size:12.5px;color:#75808d;text-align:right}
.bldgcard button{margin-top:12px;width:100%;border:1px solid var(--navy);background:#fff;color:var(--navy);font-size:10px;padding:7px;cursor:pointer;letter-spacing:.08em}
.bldgcard button:hover{background:var(--navy);color:#fff}

/* footer */
footer{padding:18px 28px 30px;max-width:1700px;margin:0 auto;color:#75808d;font-size:13px;line-height:1.7}
footer b{color:var(--navy)}

/* loading / status */
.loading{padding:80px 28px;text-align:center;color:#75808d;font-family:var(--sans);font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.error-banner{margin:20px 28px;padding:14px 18px;background:#faf1f2;border:1px solid var(--maroon);color:var(--maroon);font-size:14px}

/* ---------- login page ---------- */
.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--navy);gap:0}
.login-logo{height:60px;max-width:86vw;object-fit:contain;margin-bottom:28px}
.login-card{background:var(--card);border-top:4px solid var(--tan);padding:38px 42px;width:400px;max-width:92vw;text-align:center}
.login-card h1{font-family:var(--serif);text-transform:none;letter-spacing:.04em;font-size:21px;color:var(--navy);margin-bottom:4px}
.login-card .tag{font-family:var(--sans);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--grey);margin-bottom:26px}
.login-card label{display:block;text-align:left;font-family:var(--sans);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--grey);margin:14px 0 4px}
.login-card input{width:100%;border:1px solid var(--line);padding:10px 12px;font-family:var(--serif);font-size:15px}
.login-card input:focus{outline:none;border-color:var(--tan)}
.btn{border:none;background:var(--navy);color:#fff;font-family:var(--sans);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:11px 18px;cursor:pointer;width:100%;margin-top:20px}
.btn:hover{background:var(--navy2)}
.btn.alt{background:#fff;color:var(--navy);border:1px solid var(--navy);margin-top:10px}
.btn.alt:hover{background:var(--ltgrey)}
.btn:disabled{opacity:.55;cursor:default}
.login-msg{margin-top:16px;font-size:13.5px;line-height:1.5;min-height:20px}
.login-msg.err{color:var(--maroon)}
.login-msg.ok{color:var(--teal)}

/* ---------- admin page ---------- */
.admin-wrap{max-width:1250px;margin:0 auto;padding:20px 28px}
.dropzone{display:block;border:2px dashed var(--line);background:#fff;padding:34px;text-align:center;color:#75808d;
  font-family:var(--sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:.15s}
.dropzone.drag{border-color:var(--tan);background:#faf7f1;color:var(--navy)}
.dropzone input{display:none}
.filelist{margin-top:10px;font-size:13.5px}
.filelist .f{display:flex;gap:10px;padding:5px 2px;border-bottom:1px solid #edf0f3;align-items:baseline}
.filelist .f .nm{font-weight:600;color:var(--navy)}
.filelist .f .detail{color:#75808d;font-size:12.5px}
.badge{display:inline-block;font-family:var(--sans);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;padding:2px 8px}
.badge.ok{background:#e2f2f2;color:var(--teal)}
.badge.warn{background:#f6ecd9;color:#8a6d3b}
.badge.err{background:#f7e6e8;color:var(--maroon)}
.admin-actions{display:flex;gap:10px;align-items:center;margin-top:16px}
.admin-actions .btn{width:auto;margin-top:0}
.progress{font-size:13px;color:#5a6470}
.mini-form{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-top:10px}
.mini-form label{font-family:var(--sans);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--grey);display:block;margin-bottom:3px}
.mini-form input,.mini-form select{border:1px solid var(--line);padding:7px 9px;font-family:var(--serif);font-size:14px;background:#fff}
.mini-form .btn{width:auto;margin-top:0;padding:9px 16px}
.tbl-actions button{border:1px solid var(--line);background:#fff;color:var(--navy);font-size:9.5px;padding:3px 9px;cursor:pointer;letter-spacing:.06em;margin-left:6px}
.tbl-actions button:hover{border-color:var(--maroon);color:var(--maroon)}
td.l{text-align:left}
.subnote{font-size:12.5px;color:#75808d;font-style:italic;margin-top:8px;line-height:1.5}

@media(max-width:1150px){.kpis{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.wrap{flex-direction:column}.side{width:100%;position:static;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}}
