:root{
  --bg:#f4f6f9;--panel:#fff;--ink:#1d2433;--ink2:#5b6475;--line:#e2e6ee;--brand:#1f4e79;--brand2:#2e75b6;
  --good:#1a7f4b;--good-bg:#e5f5ec;--warn:#a86400;--warn-bg:#fff3dc;--bad:#c0262d;--bad-bg:#fde8e8;--muted-bg:#eef1f6;
  --radius:10px;--shadow:0 1px 2px rgba(16,24,40,.06)
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:"Pretendard","Malgun Gothic","Apple SD Gothic Neo",system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5}
a{color:var(--brand2);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:20px;margin:0 0 4px}
h2{font-size:16px;margin:0 0 10px}
h3{font-size:14px;margin:0 0 8px}
small,.muted{color:var(--ink2)}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;height:52px;padding:0 16px;background:var(--brand);color:#fff}
.topbar a{color:#fff}
.brand{font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px}
.brand-mark{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:6px;background:#fff;color:var(--brand);font-weight:800}
.who{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:13px}
.role-chip{background:rgba(255,255,255,.18);padding:2px 8px;border-radius:999px}
.linkbtn{background:none;border:0;color:#fff;cursor:pointer;font:inherit;padding:0}
.show-sm{display:none}
.nav-toggle{display:none;background:none;border:0;color:#fff;font-size:20px;cursor:pointer}
.layout{display:flex;min-height:calc(100vh - 52px)}
.sidenav{width:210px;flex:none;background:#fff;border-right:1px solid var(--line);padding:12px 0}
.sidenav a,.sidenav .nav-off{display:block;padding:7px 18px;color:var(--ink);font-size:13.5px}
.sidenav a.on{background:#e8f0f9;color:var(--brand);font-weight:600;border-left:3px solid var(--brand);padding-left:15px}
.sidenav a:hover{text-decoration:none;background:#f3f6fa}
.nav-group{padding:12px 18px 4px;font-size:11.5px;color:var(--ink2);font-weight:700;letter-spacing:.02em}
.nav-off{color:#9aa3b2!important;cursor:default}
.nav-off small{float:right;font-size:10.5px;background:var(--muted-bg);padding:0 6px;border-radius:6px}
.content{flex:1;min-width:0;padding:20px 24px 48px}
.content.solo{max-width:420px;margin:8vh auto;padding:16px}
.pagehead{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:16px}
.pagehead .actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:16px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}
.kpi .v{font-size:24px;font-weight:700}
.kpi .l{font-size:12.5px;color:var(--ink2)}
.kpi.bad .v{color:var(--bad)} .kpi.warn .v{color:var(--warn)}
.sites{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.site-card{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px;color:var(--ink);border-top:4px solid var(--line)}
.site-card:hover{text-decoration:none;box-shadow:0 2px 8px rgba(16,24,40,.1)}
.site-card.good{border-top-color:var(--good)} .site-card.warn{border-top-color:#e09b2d} .site-card.bad{border-top-color:var(--bad)}
.site-card .row{display:flex;justify-content:space-between;font-size:13px;padding:2px 0}
.site-card .name{font-weight:700;font-size:15px}
.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:600;background:var(--muted-bg);color:var(--ink2);white-space:nowrap}
.badge.good,.badge.정상,.badge.승인,.badge.완료,.badge.등록완료{background:var(--good-bg);color:var(--good)}
.badge.warn,.badge.주의,.badge.점검필요,.badge.제출,.badge.미리보기,.badge.작성중{background:var(--warn-bg);color:var(--warn)}
.badge.bad,.badge.불량,.badge.고장,.badge.반려{background:var(--bad-bg);color:var(--bad)}
.badge.off{background:var(--muted-bg);color:#8a93a3}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{background:#f7f9fc;font-size:12.5px;color:var(--ink2);font-weight:600;white-space:nowrap}
tr:hover td{background:#fafcff}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}
.tablewrap table{border:0}
td.num,th.num{text-align:right}
tr.err td{background:#fff6f6}
tr.inactive td{color:#9aa3b2}
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-size:13.5px;cursor:pointer;white-space:nowrap}
.btn:hover{text-decoration:none;background:#f3f6fa}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:#173d60}
.btn.danger{color:var(--bad);border-color:#f0c4c6}
.btn.sm{padding:3px 9px;font-size:12.5px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
form.inline{display:inline}
label{display:block;font-size:12.5px;color:var(--ink2);margin-bottom:4px;font-weight:600}
input[type=text],input[type=password],input[type=date],input[type=month],input[type=number],input[type=search],select,textarea{
  width:100%;padding:8px 10px;border:1px solid #cfd6e2;border-radius:8px;font:inherit;background:#fff;color:var(--ink)}
textarea{min-height:80px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid #b9d3ee;border-color:var(--brand2)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 16px}
.form-grid .wide{grid-column:1/-1}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-bottom:12px}
.filters>*{width:auto;min-width:120px}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px;border:1px solid}
.flash-ok{background:var(--good-bg);border-color:#b6e2c8;color:var(--good)}
.flash-error{background:var(--bad-bg);border-color:#f2c0c2;color:var(--bad)}
.flash-warn{background:var(--warn-bg);border-color:#f3d79e;color:var(--warn)}
.steps{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.step{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:6px}
.step .no{font-size:12px;color:var(--ink2);font-weight:700}
.step .t{font-weight:700;font-size:15px}
.step .cnt{font-size:13px}
.step .btns{margin-top:auto;display:flex;gap:6px;flex-wrap:wrap}
.notice{background:#f3f7fc;border:1px dashed #b9cde5;border-radius:var(--radius);padding:12px 14px;color:var(--ink2);font-size:13px}
.result-row{display:grid;grid-template-columns:36px 1fr;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.result-row .seq{font-weight:700;color:var(--ink2)}
.result-row .crit{font-size:12.5px;color:var(--ink2);white-space:pre-line;margin:2px 0 8px}
.choices{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.choices label{display:inline-flex;align-items:center;gap:4px;margin:0;padding:5px 12px;border:1px solid #cfd6e2;border-radius:999px;font-weight:500;color:var(--ink);cursor:pointer}
.choices input{margin:0}
.choices label:has(input:checked){background:#e8f0f9;border-color:var(--brand2);color:var(--brand);font-weight:700}
.choices label.c-불량:has(input:checked){background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}
.choices label.c-주의:has(input:checked){background:var(--warn-bg);border-color:#e09b2d;color:var(--warn)}
.rfields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.sticky-actions{position:sticky;bottom:0;background:rgba(244,246,249,.95);padding:12px 0;display:flex;gap:8px;justify-content:flex-end;border-top:1px solid var(--line)}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.photo{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff;font-size:12.5px}
.photo img{width:100%;height:150px;object-fit:cover;display:block;background:#eee}
.photo .meta{padding:8px}
.qrbox{display:flex;gap:16px;align-items:center}
.qrbox svg{border:1px solid var(--line);border-radius:6px}
dl.kv{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;margin:0}
dl.kv dt{color:var(--ink2);font-size:12.5px}
dl.kv dd{margin:0}
.pager{display:flex;gap:6px;margin-top:12px;align-items:center}
.empty{padding:28px;text-align:center;color:var(--ink2)}
.err-list{margin:0;padding-left:16px;color:var(--bad);font-size:12.5px}
.warn-list{margin:0;padding-left:16px;color:var(--warn);font-size:12.5px}
.login-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px;box-shadow:0 4px 20px rgba(16,24,40,.08)}
.login-card h1{margin-bottom:18px}
.login-card .f{margin-bottom:12px}
.labels{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.label{border:1px dashed #999;padding:8px;display:flex;gap:8px;align-items:center;break-inside:avoid;font-size:12px}
.label b{display:block;font-size:13px}
/* 보고서 인쇄 */
.report{background:#fff;max-width:900px;margin:0 auto;padding:24px;border:1px solid var(--line)}
.report h1{text-align:center;font-size:22px;margin-bottom:16px}
.report table{font-size:12.5px}
.report th,.report td{border:1px solid #bbb;padding:5px 7px}
.report .sign{display:flex;justify-content:flex-end;gap:0;margin:8px 0 14px}
.report .sign div{border:1px solid #bbb;width:90px;text-align:center;font-size:12px}
.report .sign div span{display:block;border-bottom:1px solid #bbb;padding:3px;background:#f7f7f7}
.report .sign div i{display:block;height:44px}
.printbar{max-width:900px;margin:0 auto 12px;display:flex;gap:8px;justify-content:flex-end}
@media print{
  .topbar,.sidenav,.printbar,.flash,.no-print{display:none!important}
  body{background:#fff}
  .content{padding:0}
  .report{border:0;padding:0;max-width:none}
  .labels{grid-template-columns:repeat(3,1fr)}
  .photo img{height:180px}
  tr{break-inside:avoid}
}
@media (max-width:900px){
  .g2,.g3{grid-template-columns:1fr}
  .rfields{grid-template-columns:1fr}
}
@media (max-width:760px){
  .nav-toggle{display:block}
  .hide-sm{display:none}
  .show-sm{display:inline}
  .who{gap:8px}
  .pagehead .actions{margin-left:0}
  .sidenav{position:fixed;top:52px;left:0;bottom:0;z-index:30;transform:translateX(-100%);transition:transform .2s;box-shadow:2px 0 12px rgba(0,0,0,.15);overflow-y:auto}
  .sidenav.open{transform:none}
  .content{padding:16px}
  .labels{grid-template-columns:repeat(2,1fr)}
  .brand{font-size:13.5px}
}

.sidenav .cnt{float:right;font-size:11px;background:var(--muted-bg);color:var(--ink2);padding:0 7px;border-radius:999px;font-weight:700}
.sidenav .cnt.bad{background:var(--bad);color:#fff}
/* 민원 대화 */
.chat{display:flex;flex-direction:column;gap:10px;max-height:60vh;overflow-y:auto;padding:8px 2px}
.msg{max-width:78%;padding:9px 12px;border-radius:12px;background:#fff;border:1px solid var(--line);white-space:pre-wrap;word-break:break-word}
.msg .at{display:block;font-size:11px;color:var(--ink2);margin-top:4px}
.msg img{max-width:220px;border-radius:8px;display:block;margin-top:6px}
.msg.reporter{align-self:flex-start}
.msg.staff{align-self:flex-end;background:#e8f0f9;border-color:#c7dbf0}
.msg.system{align-self:center;background:var(--muted-bg);border:0;font-size:12.5px;color:var(--ink2);max-width:90%}
.staffview .msg.reporter{align-self:flex-start} .staffview .msg.staff{align-self:flex-end}
.public{max-width:560px;margin:0 auto;padding:16px}
.public .head{background:var(--brand);color:#fff;border-radius:12px;padding:16px;margin-bottom:14px}
.public .head h1{color:#fff}
.stars{display:flex;gap:6px;flex-wrap:wrap}
.stars label{margin:0;border:1px solid #cfd6e2;border-radius:8px;padding:6px 12px;cursor:pointer;font-weight:600;color:var(--ink)}
.stars label:has(input:checked){background:#e8f0f9;border-color:var(--brand2)}
.stars input{margin:0 4px 0 0}
/* FCU */
.floor-block{margin-bottom:14px}
.floor-block h3{display:flex;align-items:center;gap:8px}
.zones{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.zone{border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff}
.zone .zh{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-weight:700;font-size:13px}
.fcu{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:6px 8px;border-radius:8px;border:1px solid var(--line);margin-bottom:6px;font-size:12.5px}
.fcu.on{border-color:#9cc9a9;background:#f3fbf5}
.fcu.alarm{border-color:var(--bad);background:var(--bad-bg)}
.fcu.stale{opacity:.55;border-style:dashed}
.fcu .t{font-size:16px;font-weight:700}
.fcu form{display:inline}
.ctl{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.ctl input[type=number]{width:70px;padding:4px 6px}
.bar{height:8px;background:var(--brand2);border-radius:4px;min-width:1px}
.bar.prev{background:#c3ccd9}
.barcell{width:160px}

/* ===================== 디자인 변경 안1 ===================== */
:root{--bg:#eff1f5;--navy:#1f3a8a}
body{background:var(--bg)}
.topbar{display:grid;grid-template-columns:1fr auto 1fr;height:60px;background:#fff;color:var(--ink);border-bottom:1px solid var(--line);padding:0 16px;gap:12px}
.topbar a{color:var(--ink)}
.tb-left{display:flex;align-items:center;gap:6px}
.tb-left .logo img{width:36px;height:36px;display:block}
.tb-sep{width:1px;height:28px;background:var(--line);margin:0 8px}
.iconbtn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:8px;border:0;background:none;color:var(--ink);cursor:pointer}
.iconbtn:hover{background:#f1f3f7;text-decoration:none}
.tb-center{text-align:center;line-height:1.25;min-width:0}
.tb-title{font-weight:800;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-sub{font-size:12px;color:var(--ink2)}
.tb-right{display:flex;align-items:center;justify-content:flex-end;gap:6px}
.usermenu{position:relative}
.userbtn{display:flex;align-items:center;gap:8px;border:0;background:none;cursor:pointer;font:inherit;color:var(--ink);padding:4px 6px;border-radius:999px}
.userbtn:hover{background:#f1f3f7}
.userbtn .uid{font-size:13px}
.avatar{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--navy);color:#fff;font-weight:700;font-size:13px}
.dropdown{display:none;position:absolute;right:0;top:calc(100% + 6px);min-width:200px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(16,24,40,.14);padding:6px;z-index:50}
.usermenu:hover .dropdown,.usermenu.open .dropdown,.usermenu:focus-within .dropdown{display:block}
.usermenu:hover .dropdown::before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}
.dropdown .dd-head{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:4px}
.dropdown .dd-head b{display:block;font-size:14px}
.dropdown .dd-head small{color:var(--ink2)}
.dropdown a,.dropdown button{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:6px;color:var(--ink);background:none;border:0;font:inherit;font-size:13.5px;cursor:pointer}
.dropdown a:hover,.dropdown button:hover{background:#f1f3f7;text-decoration:none}
.dropdown form{margin:0}
.tabs{position:sticky;top:60px;z-index:19;display:flex;gap:4px;background:#fff;border-bottom:1px solid var(--line);padding:0 12px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs a{position:relative;display:flex;align-items:center;gap:6px;padding:12px 16px;color:var(--ink);font-size:14px;white-space:nowrap;border-bottom:3px solid transparent}
.tabs a:hover{text-decoration:none;background:#f7f8fb}
.tabs a.on{color:var(--navy);font-weight:700;border-bottom-color:var(--navy)}
.tcnt{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--bad);color:#fff;font-size:11px;font-weight:700}
.tcnt.quiet{background:var(--muted-bg);color:var(--ink2)}
/* 전체 메뉴: 모든 화면 폭에서 서랍형 */
.layout{display:block;min-height:auto}
.sidenav{position:fixed;top:0;left:0;bottom:0;z-index:60;width:260px;transform:translateX(-100%);transition:transform .2s;box-shadow:2px 0 16px rgba(0,0,0,.16);overflow-y:auto;padding-top:16px}
.sidenav.open{transform:none}
.drawer-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:55}
body.nav-open .drawer-backdrop{display:block}
.content{max-width:1200px;margin:0 auto;padding:20px 16px 48px}
.content.solo{max-width:420px}
/* 건물 카드 */
.bcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(440px,1fr));gap:14px}
.bcard{display:grid;grid-template-columns:110px 1fr;gap:14px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;color:var(--ink);transition:box-shadow .15s,transform .15s}
.bcard:hover{text-decoration:none;box-shadow:0 6px 18px rgba(16,24,40,.12);transform:translateY(-1px)}
.bthumb{width:110px;height:136px;border-radius:8px;object-fit:cover;background:#eef1f6;display:grid;place-items:center;color:var(--ink2);font-size:12px;text-align:center}
.bcard h3{font-size:16px;margin:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.chip{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--navy);color:#fff;font-size:11.5px;font-weight:700}
.chip.teal{background:#0f7a74}
.bmeta{font-size:12.5px;color:var(--ink2);margin:2px 0 8px}
.bstats{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}
.bstats div small{display:block;color:var(--ink2);font-size:12px}
.bstats div b{font-size:14.5px}
.kpi .v{font-size:26px}
/* 건물 상세 */
.bdetail{display:grid;grid-template-columns:minmax(260px,400px) 220px 1fr;gap:16px;align-items:start}
.bphoto{position:relative;border-radius:12px;overflow:hidden;background:#e9edf3;min-height:300px}
.bphoto img{display:block;width:100%;height:auto}
.bphoto .noimg{display:grid;place-items:center;height:420px;color:var(--ink2);font-size:13px;text-align:center}
.band{position:absolute;left:0;right:0;background:rgba(37,99,235,.38);border-top:2px solid #60a5fa;border-bottom:2px solid #60a5fa;opacity:0;transition:opacity .12s;pointer-events:none}
.band.on{opacity:1}
.band span{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:#1f3a8a;color:#fff;font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px}
.floorlist{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px;max-height:640px;overflow-y:auto}
.floorlist button{display:flex;justify-content:space-between;align-items:center;width:100%;border:0;background:none;padding:7px 10px;border-radius:8px;font:inherit;font-size:13.5px;color:var(--ink);cursor:pointer;text-align:left}
.floorlist button:hover,.floorlist button.on{background:#e8eefc;color:var(--navy);font-weight:700}
.floorlist button .dot{width:8px;height:8px;border-radius:50%;background:#c3ccd9;margin-right:8px;flex:none}
.floorlist button .dot.has{background:var(--navy)}
.floorlist button .dot.abn{background:var(--bad)}
.floorlist button small{color:var(--ink2);font-weight:400}
.floorpanel .fp-empty{color:var(--ink2);padding:24px;text-align:center}
.fp-group{margin-bottom:10px}
.fp-group h4{margin:0 0 4px;font-size:12.5px;color:var(--ink2)}
.fp-item{display:flex;justify-content:space-between;gap:8px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;margin-bottom:4px;color:var(--ink);font-size:13px}
.fp-item:hover{text-decoration:none;background:#f7f9fc}
.bmenu{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.bmenu a{display:flex;flex-direction:column;gap:2px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font-weight:600;font-size:13.5px}
.bmenu a small{font-weight:400;color:var(--ink2);font-size:12px}
.bmenu a:hover{text-decoration:none;border-color:#9db4e6;background:#f5f8ff}
/* 달력 */
.cal{width:100%;table-layout:fixed;border-collapse:collapse;background:#fff}
.cal th{text-align:center;background:#f7f9fc}
.cal td{height:108px;vertical-align:top;padding:4px 6px;border:1px solid var(--line)}
.cal td.out{background:#fafbfc;color:#aab2bf}
.cal td.today{box-shadow:inset 0 0 0 2px var(--navy)}
.cal .dn{font-size:12px;font-weight:700}
.cal th:nth-child(6),.cal td:nth-child(6) .dn{color:#2f5fd0}
.cal th:nth-child(7),.cal td:nth-child(7) .dn{color:var(--bad)}
.ci{display:block;font-size:11.5px;padding:1px 5px;border-radius:4px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink);background:#eef1f6}
.ci.ev{background:#e8eefc;color:#1f3a8a}.ci.insp{background:var(--good-bg);color:var(--good)}.ci.wo{background:var(--warn-bg);color:var(--warn)}
a.ci:hover{text-decoration:none;filter:brightness(.96)}
.notice-pin{color:var(--bad);font-weight:700;margin-right:4px}
@media (max-width:1000px){.bdetail{grid-template-columns:1fr 200px}.floorpanel{grid-column:1/-1}}
@media (max-width:760px){
  .topbar{grid-template-columns:auto 1fr auto;padding:0 8px;gap:6px}
  .tb-sep,.tb-left .iconbtn:last-child,.userbtn .uid,.tb-sub{display:none}
  .tb-title{font-size:14px}
  .bcards{grid-template-columns:1fr}
  .bcard{grid-template-columns:84px 1fr}.bthumb{width:84px;height:110px}
  .bdetail{grid-template-columns:1fr}
  .floorlist{max-height:none;display:flex;flex-wrap:wrap;gap:4px}
  .floorlist button{width:auto;border:1px solid var(--line)}
  .cal td{height:70px;padding:2px}.ci{font-size:10px}
  .sidenav{transform:translateX(-100%)}
}

/* ===== 건물 상세 v2: 원근 하이라이트 · 리더선 · 층 라벨 · 설비 플라이아웃 ===== */
.bdetail2{display:grid;grid-template-columns:minmax(380px,640px) 1fr;gap:18px;align-items:start}
.bview{position:relative;display:grid;grid-template-columns:1fr 132px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;gap:0}
.bphoto2{position:relative;border-radius:8px;overflow:visible;background:#e9edf3;user-select:none}
.bphoto2 img{display:block;width:100%;height:auto;border-radius:8px}
.bphoto2 .noimg{display:grid;place-items:center;height:460px;color:var(--ink2);font-size:13px;text-align:center;padding:16px}
.fpolys{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.fpolys polygon{fill:rgba(56,170,255,0);stroke:transparent;stroke-width:1.5;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill .12s}
.fpolys polygon:hover{fill:rgba(56,170,255,.18)}
.fpolys polygon.on{fill:rgba(56,170,255,.38);stroke:#38aaff}
.leader{position:absolute;right:-8px;height:0;border-top:1.5px dashed #2b6cb0;opacity:0;pointer-events:none;transform:translateY(-.75px)}
.leader.on{opacity:.85}
.flabels{position:relative;list-style:none;margin:0;padding:0}
.flabels li{position:absolute;left:0;right:0;transform:translateY(-50%)}
.flabel{display:flex;align-items:center;gap:7px;width:100%;border:0;background:none;padding:1px 6px 1px 10px;border-radius:6px;font:inherit;font-size:13px;line-height:1.35;color:#9aa3b2;cursor:pointer;text-align:left;white-space:nowrap}
.flabel i{flex:none;width:7px;height:7px;border-radius:50%;border:1.5px solid #b5bdc9;background:#fff}
.flabel.has{color:var(--ink)}
.flabel.has i{background:var(--ink);border-color:var(--ink)}
.flabel.abn i{background:var(--bad);border-color:var(--bad)}
.flabel small{margin-left:auto;font-size:11px;color:var(--ink2);font-weight:400}
.flabel:hover,.flabel.on{color:#f26b1d;font-weight:700;background:#fff4ec}
.flabel.on i,.flabel:hover i{background:#f26b1d;border-color:#f26b1d}
.ofloors{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin-top:8px}
.ofloors .chipf{width:auto;border:1px solid var(--line);background:#fff;padding:3px 10px}
.flyout{position:absolute;z-index:40;width:300px;max-height:420px;overflow-y:auto;background:#fff;border:1px solid #cfd8e6;border-radius:12px;box-shadow:0 10px 30px rgba(16,24,40,.18);padding:12px}
.flyout::before{content:"";position:absolute;left:-7px;top:var(--arrow,18px);width:12px;height:12px;background:#fff;border-left:1px solid #cfd8e6;border-bottom:1px solid #cfd8e6;transform:rotate(45deg)}
.flyout h3{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px;font-size:15px}
.flyout .fo-actions{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.flyout .fp-item{padding:7px 9px}
.flyout .fo-empty{color:var(--ink2);font-size:13px;padding:6px 0}
.flyout .fo-loading{color:var(--ink2);font-size:13px}
.calib-layer{position:absolute;inset:0;cursor:crosshair;z-index:5;background:rgba(15,23,42,.08);border-radius:8px}
.calib-dot{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:#f26b1d;border:2px solid #fff;box-shadow:0 0 0 1px #f26b1d}
.calib-dot b{position:absolute;left:12px;top:-6px;font-size:11px;color:#fff;background:#f26b1d;border-radius:4px;padding:0 4px}
@media (max-width:1000px){.bdetail2{grid-template-columns:1fr}}
@media (max-width:760px){
  .bview{grid-template-columns:1fr 92px;padding:6px}
  .flabel{font-size:11.5px;padding:0 4px 0 6px;gap:4px}.flabel small{display:none}
  .flyout{position:fixed;left:8px!important;right:8px;top:auto!important;bottom:8px;width:auto;max-height:55vh}
  .flyout::before{display:none}
}

.calib-notice{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:10px;background:#fff7ed;border-color:#f5c08a;color:#7a4a12}
.calib-bar{position:sticky;bottom:12px;z-index:45;display:flex;gap:10px;align-items:center;justify-content:space-between;margin-top:8px;padding:10px 14px;border-radius:10px;background:#1f3a8a;color:#fff;font-weight:600;box-shadow:0 6px 20px rgba(16,24,40,.25)}
.calib-bar .btn{background:#fff}
[hidden]{display:none!important}

/* 본사 관리자 전용 탭 (오른쪽 끝) */
.tabs a.tab-admin{margin-left:auto;color:var(--navy);font-weight:600}
