:root{--kp-primary: 79 70 229;--kp-primary-fg: 255 255 255;--kp-accent: 139 92 246;--kp-sidebar: 17 24 39;--kp-sidebar-fg: 226 232 240;--kp-radius: 12px;--c-bg: 244 246 250;--c-surface: 255 255 255;--c-border: 226 232 240;--c-text: 30 41 59;--c-muted: 100 116 139;--c-faint: 148 163 184;--c-ok: 22 163 74;--c-warn: 202 138 4;--c-err: 220 38 38;--shadow-sm: 0 1px 2px rgb(15 23 42 / .06), 0 1px 3px rgb(15 23 42 / .08);--shadow-md: 0 4px 12px rgb(15 23 42 / .08), 0 2px 4px rgb(15 23 42 / .04);--shadow-lg: 0 18px 48px rgb(15 23 42 / .18)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body,#root{height:100%}body{font-family:Inter,ui-sans-serif,system-ui,sans-serif;background:rgb(var(--c-bg));color:rgb(var(--c-text));-webkit-font-smoothing:antialiased;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-weight:600;line-height:1.25}small{font-size:12px}.app-shell,.sidebar,.topnav,.nav-item,.btn,.card,.badge,.logo-mark,.pill{transition:background-color .25s ease,color .25s ease,border-color .25s ease}.app-shell{display:grid;grid-template-columns:248px 1fr;grid-template-rows:100%;height:100%}.main{display:flex;flex-direction:column;min-width:0;height:100%;overflow:hidden}.scroll{overflow-y:auto;flex:1}.page{padding:24px 28px 64px;max-width:1200px;margin-inline:auto;animation:pageIn .34s ease both}.page-wide{max-width:1320px}@keyframes pageIn{0%{opacity:0;transform:translateY(10px)}}.sidebar{background:rgb(var(--kp-sidebar));color:rgb(var(--kp-sidebar-fg));display:flex;flex-direction:column;padding:16px 12px;gap:4px;overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:6px 8px 16px}.sidebar-section{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:rgb(var(--kp-sidebar-fg) / .5);padding:14px 10px 6px}.nav-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;color:rgb(var(--kp-sidebar-fg) / .82);font-size:14px;font-weight:500;width:100%;text-align:left}.nav-item:hover{background:rgb(var(--kp-sidebar-fg) / .08);color:rgb(var(--kp-sidebar-fg))}.nav-item.active{background:rgb(var(--kp-primary));color:rgb(var(--kp-primary-fg));box-shadow:var(--shadow-sm)}.nav-item.locked{color:rgb(var(--kp-sidebar-fg) / .42);cursor:pointer}.nav-item.locked:hover{background:rgb(var(--kp-sidebar-fg) / .05)}.nav-item .nav-grow{flex:1}.nav-lock{opacity:.7}.sidebar-foot{margin-top:auto;display:flex;align-items:center;gap:9px;padding:16px 12px 4px}.sidebar-foot .kaplet-hex{color:rgb(var(--kp-primary));filter:drop-shadow(0 0 6px rgb(var(--kp-primary) / .4))}.sidebar-foot .foot-word{font-weight:700;font-size:14px;letter-spacing:.3px;color:rgb(var(--kp-sidebar-fg))}.sidebar-foot .foot-ver{margin-left:auto;font-size:10px;font-weight:600;color:rgb(var(--kp-sidebar-fg) / .55);border:1px solid rgb(var(--kp-sidebar-fg) / .22);border-radius:999px;padding:2px 8px}.topnav{display:flex;align-items:center;gap:16px;height:64px;padding:0 24px;background:rgb(var(--c-surface));border-bottom:1px solid rgb(var(--c-border));flex-shrink:0}.topnav .spacer{flex:1}.powered{display:flex;align-items:center;gap:8px;font-size:14px;color:rgb(var(--c-muted));padding:6px 12px;border-radius:999px;cursor:pointer}.powered:hover{background:rgb(var(--c-bg));color:rgb(var(--c-text))}.powered b{color:rgb(var(--c-text));font-weight:700;font-size:16px}.op-banner{display:flex;align-items:center;gap:10px;height:40px;padding:0 24px;font-size:13px;background:rgb(var(--kp-primary) / .1);color:rgb(var(--kp-primary));border-bottom:1px solid rgb(var(--kp-primary) / .18)}.op-banner b{font-weight:600}.op-banner .link{margin-left:auto;font-weight:600;text-decoration:underline;cursor:pointer}.logo-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:rgb(var(--kp-primary));color:rgb(var(--kp-primary-fg));font-weight:700;font-size:16px;flex-shrink:0}.logo-mark.lg{width:44px;height:44px;font-size:20px;border-radius:11px}.brand-name{display:flex;flex-direction:column;line-height:1.15}.brand-name .n{font-weight:600;font-size:15px}.brand-name .p{font-size:11px;color:rgb(var(--c-muted))}.sidebar .brand-name .n{color:rgb(var(--kp-sidebar-fg))}.sidebar .brand-name .p{color:rgb(var(--kp-sidebar-fg) / .55)}.kaplet-hex{color:rgb(var(--kp-primary))}.powered .kaplet-hex{color:#4f46e5}.user-menu{position:relative}.user-chip{display:flex;align-items:center;gap:9px;padding:5px 10px 5px 5px;border-radius:999px;border:1px solid rgb(var(--c-border));background:rgb(var(--c-surface))}.user-chip:hover{border-color:rgb(var(--kp-primary) / .5)}.avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:999px;background:rgb(var(--kp-primary) / .14);color:rgb(var(--kp-primary));font-weight:600;font-size:12px}.who{display:flex;flex-direction:column;min-width:0;line-height:1.15}.user-chip .who{text-align:left}.user-chip .who .nm{font-size:13px;font-weight:600}.user-chip .who .rl{font-size:11px;color:rgb(var(--c-muted))}.menu-pop{position:absolute;right:0;top:calc(100% + 8px);background:rgb(var(--c-surface));border:1px solid rgb(var(--c-border));border-radius:12px;box-shadow:var(--shadow-lg);min-width:230px;padding:6px;z-index:50}.menu-pop .mhead{padding:10px 12px;border-bottom:1px solid rgb(var(--c-border));margin-bottom:6px}.menu-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:9px 12px;border-radius:8px;font-size:14px}.menu-item:hover{background:rgb(var(--c-bg))}.menu-item.danger{color:rgb(var(--c-err))}.menu-item.danger:hover{background:rgb(var(--c-err) / .08)}.page-head{margin-bottom:20px}.page-head h1{font-size:22px}.page-head .sub{color:rgb(var(--c-muted));font-size:14px;margin-top:4px;max-width:70ch}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}.toolbar .grow{flex:1}.card{background:rgb(var(--c-surface));border:1px solid rgb(var(--c-border));border-radius:14px;box-shadow:var(--shadow-sm)}.card-head{padding:16px 18px;border-bottom:1px solid rgb(var(--c-border));display:flex;align-items:center;gap:12px}.card-head h3{font-size:15px}.card-head .sub{font-size:12px;color:rgb(var(--c-muted))}.card-body{padding:18px}.grid{display:grid;gap:16px}.cols-2{grid-template-columns:repeat(2,1fr)}.cols-3{grid-template-columns:repeat(3,1fr)}.cols-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 1000px){.cols-3,.cols-4{grid-template-columns:repeat(2,1fr)}}.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:10px;font-size:14px;font-weight:600;border:1px solid rgb(var(--c-border));background:rgb(var(--c-surface));color:rgb(var(--c-text));white-space:nowrap}.btn:hover{background:rgb(var(--c-bg))}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:rgb(var(--kp-primary));color:rgb(var(--kp-primary-fg));border-color:rgb(var(--kp-primary))}.btn-primary:hover{background:rgb(var(--kp-primary) / .9)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:rgb(var(--c-bg))}.btn-danger{color:rgb(var(--c-err));border-color:rgb(var(--c-err) / .3)}.btn-danger:hover{background:rgb(var(--c-err) / .08)}.btn-sm{padding:6px 10px;font-size:13px;border-radius:8px}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:13px;font-weight:600;color:rgb(var(--c-text))}.field .hint{font-size:12px;color:rgb(var(--c-muted))}.input,.select{width:100%;padding:9px 11px;font-size:14px;border:1px solid rgb(var(--c-border));border-radius:9px;background:rgb(var(--c-surface));color:rgb(var(--c-text))}.input:focus,.select:focus{outline:none;border-color:rgb(var(--kp-primary));box-shadow:0 0 0 3px rgb(var(--kp-primary) / .15)}.input::placeholder{color:rgb(var(--c-faint))}.search{position:relative}.search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:rgb(var(--c-faint))}.search .input{padding-left:34px;min-width:240px}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;background:rgb(var(--c-bg));color:rgb(var(--c-muted));border:1px solid rgb(var(--c-border))}.badge.driver{background:rgb(var(--kp-accent) / .12);color:rgb(var(--kp-accent));border-color:transparent}.tag{display:inline-flex;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:600;background:rgb(var(--c-bg));color:rgb(var(--c-muted))}.dot{width:9px;height:9px;border-radius:999px;display:inline-block;flex-shrink:0}.dot-ok{background:rgb(var(--c-ok))}.dot-pending{background:rgb(var(--c-warn));box-shadow:0 0 rgb(var(--c-warn) / .5);animation:pulse 1.6s infinite}.dot-unreachable{background:rgb(var(--c-faint))}.dot-error{background:rgb(var(--c-err))}@keyframes pulse{0%{box-shadow:0 0 rgb(var(--c-warn) / .5)}70%{box-shadow:0 0 0 6px rgb(var(--c-warn) / 0)}to{box-shadow:0 0 rgb(var(--c-warn) / 0)}}.status{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500}.status .lbl-ok{color:rgb(var(--c-ok))}.status .lbl-pending{color:rgb(var(--c-warn))}.status .lbl-unreachable{color:rgb(var(--c-faint))}.table-wrap{overflow:auto;border:1px solid rgb(var(--c-border));border-radius:14px;background:rgb(var(--c-surface))}table.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl thead th{position:sticky;top:0;z-index:1;text-align:left;font-size:12px;font-weight:600;color:rgb(var(--c-muted));background:rgb(var(--c-bg));padding:11px 14px;border-bottom:1px solid rgb(var(--c-border));white-space:nowrap}.tbl tbody td{padding:11px 14px;border-bottom:1px solid rgb(var(--c-border))}.tbl tbody tr:last-child td{border-bottom:none}.tbl tbody tr{cursor:pointer}.tbl tbody tr:hover{background:rgb(var(--kp-primary) / .04)}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;color:rgb(var(--c-muted))}.muted{color:rgb(var(--c-muted))}.center{text-align:center}.right{text-align:right}.kpi{padding:18px}.kpi .v{font-size:28px;font-weight:700;letter-spacing:-.02em}.kpi .k{font-size:13px;color:rgb(var(--c-muted));margin-top:2px}.kpi .ico{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:rgb(var(--kp-primary) / .12);color:rgb(var(--kp-primary));margin-bottom:12px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a6b;z-index:60;animation:fade .15s ease}.drawer-overlay{top:var(--drawer-top, 64px)}@keyframes fade{0%{opacity:0}}.drawer{position:fixed;top:var(--drawer-top, 64px);right:0;bottom:0;width:460px;max-width:92vw;background:rgb(var(--c-surface));z-index:61;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;animation:slide .2s ease}@keyframes slide{0%{transform:translate(30px);opacity:.6}}.drawer-head{padding:18px 20px;border-bottom:1px solid rgb(var(--c-border));display:flex;align-items:flex-start;gap:12px}.drawer-head .x{margin-left:auto}.drawer-body{padding:20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:18px}.drawer-foot{padding:14px 20px;border-top:1px solid rgb(var(--c-border));display:flex;gap:10px}.state-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.state-box{border:1px solid rgb(var(--c-border));border-radius:11px;padding:13px}.state-box .h{font-size:12px;color:rgb(var(--c-muted));margin-bottom:8px;text-transform:uppercase;letter-spacing:.05em}.state-box.want{border-color:rgb(var(--kp-primary) / .4);background:rgb(var(--kp-primary) / .04)}.kv{display:flex;justify-content:space-between;font-size:13px;padding:3px 0}.kv .k{color:rgb(var(--c-muted))}.timeline{display:flex;flex-direction:column;gap:0}.tl-item{display:flex;gap:12px;padding-bottom:14px;position:relative}.tl-item:before{content:"";position:absolute;left:5px;top:14px;bottom:0;width:2px;background:rgb(var(--c-border))}.tl-item:last-child:before{display:none}.tl-dot{width:12px;height:12px;border-radius:999px;background:rgb(var(--kp-primary));margin-top:3px;flex-shrink:0;z-index:1}.tl-body .t{font-size:13px;font-weight:500}.tl-body .m{font-size:12px;color:rgb(var(--c-muted))}.steps{display:flex;gap:8px;margin-bottom:20px}.step{display:flex;align-items:center;gap:9px;padding:9px 14px;border-radius:10px;border:1px solid rgb(var(--c-border));background:rgb(var(--c-surface));font-size:13px;font-weight:600;color:rgb(var(--c-muted))}.step .num{width:22px;height:22px;border-radius:999px;display:grid;place-items:center;background:rgb(var(--c-bg));font-size:12px}.step.active{border-color:rgb(var(--kp-primary));color:rgb(var(--kp-primary))}.step.active .num{background:rgb(var(--kp-primary));color:rgb(var(--kp-primary-fg))}.step.done{color:rgb(var(--c-ok))}.step.done .num{background:rgb(var(--c-ok));color:#fff}.lic-row{display:flex;align-items:center;gap:16px;padding:16px 18px;border-bottom:1px solid rgb(var(--c-border))}.lic-row:last-child{border-bottom:none}.lic-row .li-main{flex:1;min-width:0}.lic-row .li-main .t{font-weight:600;display:flex;align-items:center;gap:9px}.lic-row .li-main .d{font-size:13px;color:rgb(var(--c-muted));margin-top:3px}.lic-row.off{background:rgb(var(--c-bg) / .5)}.switch{position:relative;width:44px;height:25px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch .track{position:absolute;top:0;right:0;bottom:0;left:0;background:rgb(var(--c-faint));border-radius:999px;transition:.2s}.switch .track:before{content:"";position:absolute;height:19px;width:19px;left:3px;top:3px;background:#fff;border-radius:999px;transition:.2s;box-shadow:var(--shadow-sm)}.switch input:checked+.track{background:rgb(var(--kp-primary))}.switch input:checked+.track:before{transform:translate(19px)}.switch input:disabled+.track{opacity:.55;cursor:not-allowed}.swatch-row{display:flex;align-items:center;gap:12px}.swatch{width:40px;height:40px;border-radius:10px;border:1px solid rgb(var(--c-border));cursor:pointer;padding:0}.range{width:100%;accent-color:rgb(var(--kp-primary))}.preview-frame{border:1px solid rgb(var(--c-border));border-radius:14px;overflow:hidden}.preview-nav{display:flex;align-items:center;padding:12px 16px;background:rgb(var(--c-surface));border-bottom:1px solid rgb(var(--c-border))}.login-wrap{min-height:100%;display:grid;place-items:center;padding:40px 20px;background:radial-gradient(1200px 600px at 50% -10%,rgb(79 70 229 / .12),transparent),rgb(var(--c-bg))}.login-card{width:420px;max-width:100%}.login-head{text-align:center;margin-bottom:26px}.login-head .logo-mark{margin:0 auto 14px}.login-head h1{font-size:22px}.login-head p{color:rgb(var(--c-muted));font-size:14px;margin-top:6px}.user-card{display:flex;align-items:center;gap:13px;width:100%;text-align:left;padding:14px;border:1px solid rgb(var(--c-border));border-radius:12px;background:rgb(var(--c-surface));margin-bottom:10px}.user-card:hover{border-color:rgb(var(--kp-primary));box-shadow:var(--shadow-md);transform:translateY(-1px)}.user-card .avatar{width:40px;height:40px}.user-card .who .nm{font-weight:600}.user-card .who .em{font-size:13px;color:rgb(var(--c-muted));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-card .who{flex:1}.user-card .who .nm{line-height:1.25}.user-card .tag{white-space:nowrap;flex-shrink:0}.user-card.op{border:2px solid transparent;background:linear-gradient(rgb(var(--c-surface)),rgb(var(--c-surface))) padding-box,linear-gradient(110deg,#4f46e5,#8b5cf6,#38bdf8,#8b5cf6,#4f46e5) border-box;background-size:100% 100%,250% 100%;background-position:0 0,0 0;animation:op-shimmer 3s linear infinite,op-glow 2.8s ease-in-out infinite}.user-card.op:hover{border-color:transparent;transform:translateY(-1px)}@keyframes op-shimmer{to{background-position:0 0,-250% 0}}@keyframes op-glow{0%,to{box-shadow:0 0 0 1px #4f46e540,0 6px 22px #4f46e533}50%{box-shadow:0 0 0 1px #8b5cf68c,0 12px 34px #8b5cf661}}.user-card .arrow{margin-left:auto;color:rgb(var(--c-faint))}.row{display:flex;align-items:center;gap:10px}.col{display:flex;flex-direction:column;gap:4px}.wrap{flex-wrap:wrap}.gap-lg{gap:16px}.mt{margin-top:16px}.empty{text-align:center;padding:60px 20px;color:rgb(var(--c-muted))}.empty .ico{width:52px;height:52px;border-radius:14px;background:rgb(var(--c-bg));display:grid;place-items:center;margin:0 auto 14px;color:rgb(var(--c-faint))}.note{display:flex;gap:10px;padding:12px 14px;border-radius:11px;font-size:13px;background:rgb(var(--kp-primary) / .07);color:rgb(var(--c-text));border:1px solid rgb(var(--kp-primary) / .15)}.note.warn{background:rgb(var(--c-warn) / .08);border-color:rgb(var(--c-warn) / .25)}.note svg{flex-shrink:0;color:rgb(var(--kp-primary));margin-top:1px}.note.warn svg{color:rgb(var(--c-warn))}.cat-head{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:rgb(var(--c-muted));margin:0 2px 12px}.int-card{display:flex;gap:14px;padding:16px;align-items:flex-start}.int-logo{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;flex-shrink:0;font-weight:700;font-size:18px}.int-card .it-body{flex:1;min-width:0}.int-card .it-name{font-weight:600;display:flex;align-items:center;gap:8px}.int-card .it-desc{font-size:13px;color:rgb(var(--c-muted));margin:5px 0 12px}.log-level{display:inline-flex;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.log-info{background:rgb(var(--kp-primary) / .12);color:rgb(var(--kp-primary))}.log-warn{background:rgb(var(--c-warn) / .15);color:rgb(var(--c-warn))}.log-error{background:rgb(var(--c-err) / .12);color:rgb(var(--c-err))}.icon-choices{display:flex;gap:8px;flex-wrap:wrap}.icon-choice{width:40px;height:40px;border-radius:10px;border:1px solid rgb(var(--c-border));background:rgb(var(--c-surface));display:grid;place-items:center;color:rgb(var(--c-muted))}.icon-choice:hover{border-color:rgb(var(--kp-primary) / .5)}.icon-choice.sel{border-color:rgb(var(--kp-primary));background:rgb(var(--kp-primary) / .12);color:rgb(var(--kp-primary))}.step-row{display:flex;gap:8px;align-items:center;margin-top:8px}.toaster{position:fixed;bottom:22px;right:22px;z-index:80;display:flex;flex-direction:column;gap:10px}.toast{display:flex;align-items:center;gap:11px;padding:12px 16px;border-radius:11px;background:#0f172a;color:#fff;box-shadow:var(--shadow-lg);font-size:14px;min-width:260px;animation:slide .2s ease}.toast.ok{background:rgb(var(--c-ok))}.toast.err{background:rgb(var(--c-err))}.toast.warn{background:rgb(var(--c-warn))}.card{transition:box-shadow .2s ease,transform .2s ease,background-color .25s ease,border-color .25s ease}.kpi:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.int-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn{transition:transform .12s ease,background-color .18s ease,border-color .18s ease,color .15s ease,box-shadow .18s ease}.btn:active{transform:translateY(1px) scale(.985)}.logo-mark{transition:transform .2s ease,background-color .25s ease}.user-chip:hover .avatar{transform:scale(1.04)}.modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:62;width:440px;max-width:92vw;background:rgb(var(--c-surface));border-radius:18px;box-shadow:var(--shadow-lg);padding:28px;animation:modalIn .22s ease}@keyframes modalIn{0%{opacity:0;transform:translate(-50%,-46%) scale(.97)}}.modal-x{position:absolute;right:12px;top:12px}.modal-icon{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:rgb(var(--kp-primary) / .12);color:rgb(var(--kp-primary));margin-bottom:14px}.modal-tag{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:rgb(var(--c-warn));background:rgb(var(--c-warn) / .1);padding:4px 10px;border-radius:999px;margin-bottom:10px}.modal h2{font-size:19px}.modal p{margin-top:6px;font-size:14px;line-height:1.5}.modal-foot{display:flex;gap:10px;justify-content:flex-end;margin-top:22px}@keyframes cellScan{0%,to{box-shadow:inset 0 0 0 1px rgb(var(--c-border))}50%{box-shadow:inset 0 0 0 1px rgb(var(--kp-accent) / .55),0 8px 22px rgb(var(--kp-accent) / .1)}}.state-box.breathe{animation:cellScan 3.4s ease-in-out infinite}@keyframes rowScan{0%,to{background-color:transparent}50%{background-color:rgb(var(--kp-accent) / .07)}}.tbl tbody tr.breathe-row{animation:rowScan 3.4s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.state-box.breathe,.tbl tbody tr.breathe-row,.user-card.op,.page{animation:none}}.map-legend{display:flex;gap:14px;flex-wrap:wrap}.map-legend .status{font-size:12px}.floorplan{border:1px solid rgb(var(--c-border));border-radius:16px;padding:18px;background-color:rgb(var(--c-surface));background-image:radial-gradient(rgb(var(--c-border) / .7) 1px,transparent 1px);background-size:22px 22px}.floorplan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}.room{position:relative;min-height:150px;border:1.5px dashed rgb(var(--c-border));border-radius:12px;padding:10px;background:rgb(var(--c-surface) / .7)}.room-name{font-size:12px;font-weight:600;color:rgb(var(--c-muted));max-width:78%}.room-count{position:absolute;top:8px;right:10px;font-size:11px;font-weight:700;color:rgb(var(--c-faint))}.pin{position:absolute;width:15px;height:15px;border-radius:999px;border:2px solid #fff;box-shadow:var(--shadow-sm);cursor:pointer;transform:translate(-50%,-50%);transition:transform .12s ease}.pin:hover{transform:translate(-50%,-50%) scale(1.4);z-index:3}.floorcanvas{position:relative;width:100%;height:540px;border:1px solid rgb(var(--c-border));border-radius:16px;overflow:hidden;background-color:rgb(var(--c-surface));background-image:radial-gradient(rgb(var(--c-border) / .6) 1px,transparent 1px);background-size:24px 24px}.room2{position:absolute;border:1.5px solid rgb(var(--c-border));border-radius:8px;background:rgb(var(--c-surface) / .55);transition:background-color .2s ease}.room2:hover{background:rgb(var(--kp-primary) / .05)}.room2 .room-name{position:absolute;top:7px;left:9px;font-size:11px;font-weight:600;color:rgb(var(--c-muted));max-width:76%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room2 .room-count{position:absolute;top:7px;right:9px;font-size:10px;font-weight:700;color:rgb(var(--c-faint))}
