:root{--ink:#1B2422;--muted:#69756F;--paper:#F4F6F3;--panel:#fff;--line:#E1E6E0;--slate:#263238;--slate2:#37474F;--spu:#1565C0;--spu-bg:#EAF1FB;--sku:#2E7D32;--sku-bg:#EAF4EB;--sku-line:#BFDCC2;--warn:#B45309;--warn-bg:#FDF3E4;--err:#C62828;--err-bg:#FCEBEA;--info:#4B5A94;--info-bg:#EEF0F9;--mono:"JetBrains Mono","SF Mono",ui-monospace,Consolas,monospace}*{box-sizing:border-box;margin:0;padding:0}html{font-size:15px}body{font-family:Pretendard Variable,Pretendard,-apple-system,Malgun Gothic,sans-serif;background:var(--paper);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--spu);outline-offset:1px;border-radius:4px}.mono{font-family:var(--mono)}.tier{display:inline-block;font-size:.62rem;font-weight:800;letter-spacing:.04em;padding:1px 7px;border-radius:4px;vertical-align:1px}.tier.spu{background:var(--spu-bg);color:var(--spu)}.tier.sku{background:var(--sku-bg);color:var(--sku)}.badge{font-size:.68rem;font-weight:700;padding:2px 9px;border-radius:99px}.badge.ok{background:var(--sku-bg);color:var(--sku)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.err{background:var(--err-bg);color:var(--err)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.mut{background:#eef1ed;color:var(--muted)}.btn{font-size:.84rem;font-weight:700;padding:8px 17px;border-radius:8px;transition:.12s}.btn.pri{background:var(--slate);color:#fff}.btn.pri:hover{background:var(--slate2)}.btn.grn{background:var(--sku);color:#fff}.btn.grn:hover{background:#256b29}.btn.gho{border:1px solid var(--line);background:#fff}.btn.gho:hover{border-color:#b8c2bb}.btn.sm{font-size:.76rem;padding:5px 12px}.authbg{min-height:100vh;display:flex;flex-direction:column;align-items:center;gap:16px;padding:24px 14px 50px;background:linear-gradient(160deg,#263238,#1b2422 60%,#14312a)}.pubbar{width:min(1080px,96vw);display:flex;align-items:center;gap:6px;flex-wrap:wrap;background:#ffffff0f;border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:9px 14px;color:#cfd8dc}.pubbar .bl{font-weight:800;color:#eceff1;margin-right:8px}.pubbar .bl em{font-style:normal;color:#80cbc4}.pubbar button{font-size:.77rem;font-weight:600;color:#b0bec5;padding:5px 11px;border-radius:99px}.pubbar button:hover{background:#ffffff14;color:#fff}.pubbar button.on{background:#80cbc4;color:#14312a;font-weight:800}.pubbar .route{margin-left:auto;font-family:var(--mono);font-size:.68rem;background:#00000052;padding:3px 10px;border-radius:6px;color:#9fb3bb}.pubbar .authb{border:1px solid rgba(255,255,255,.25)}.pubwrap{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap;justify-content:center}.pubcard{width:560px;max-width:94vw;background:#fffffff7;border-radius:16px;padding:22px 26px;box-shadow:0 18px 60px #00000059}.pubcard h2{font-size:1.02rem;font-weight:800;margin-bottom:8px}.pubcard .feat{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:12px 0}.pubcard .feat>div{border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:.76rem;color:var(--muted)}.pubcard .feat b{display:block;font-size:.83rem;margin-bottom:2px;color:var(--ink)}.lcard{width:400px;background:#fff;border-radius:16px;padding:34px 36px;box-shadow:0 18px 60px #00000059}.lcard .logo{font-size:1.3rem;font-weight:800;letter-spacing:-.02em;margin-bottom:2px}.lcard .logo em{font-style:normal;color:#0e7f70}.lcard .sub{font-size:.78rem;color:var(--muted);margin-bottom:22px}.lf{margin-bottom:13px}.lf label{display:block;font-size:.74rem;font-weight:700;color:#3d4a45;margin-bottom:5px}.lf input,.lf select{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:.9rem}.lf input:focus,.lf select:focus{border-color:var(--spu);outline:none;box-shadow:0 0 0 3px #1565c01a}.tenantnote{font-size:.72rem;color:var(--muted);background:var(--paper);border-radius:8px;padding:9px 12px;margin:4px 0 16px}.tenantnote b{font-family:var(--mono)}.authbg .btn{width:100%;padding:11px}.pwf{display:block;position:relative}.pwf input{padding-right:42px}.pwf-toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);padding:7px;color:var(--muted);font-size:.9rem}.text-link{color:#0e7f70;font-size:inherit;font-weight:700;text-decoration:underline}.auth-modal,.secret-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#141f1c8c;z-index:100;display:grid;place-items:center;padding:16px}.auth-modal-card,.secret-modal-card{width:min(420px,100%);background:#fff;border-radius:12px;padding:22px;box-shadow:0 18px 60px #00000059}.auth-modal-card h2,.secret-modal-card h2{font-size:1rem;margin-bottom:7px}.auth-modal-card p,.secret-modal-card p{font-size:.8rem;color:var(--muted);margin-bottom:14px}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.modal-actions .btn{width:auto}.narrow-card{max-width:560px}.profile-grid{display:grid;grid-template-columns:140px 1fr;gap:10px;font-size:.84rem}.profile-grid span{color:var(--muted)}.recovery-form,.admin-user-form{display:flex;gap:10px;align-items:end;margin-top:12px}.recovery-form input{flex:1;border:1px solid var(--line);border-radius:8px;padding:8px 11px}.admin-user-form .f{flex:1}.secret-value{display:flex;gap:8px;align-items:center;background:var(--paper);border-radius:8px;padding:10px;margin:14px 0}.secret-value code{flex:1;overflow-wrap:anywhere;font-family:var(--mono);font-size:.82rem}@media (max-width:700px){.recovery-form,.admin-user-form{display:block}.recovery-form .btn,.admin-user-form .btn{margin-top:10px}.profile-grid{grid-template-columns:1fr}.profile-grid b{margin-bottom:8px}}.simtag{position:fixed;top:14px;right:16px;font-size:.7rem;font-weight:700;letter-spacing:.06em;background:#ffb300;color:#3e2723;padding:3px 11px;border-radius:99px;z-index:99}.appshell{display:grid;grid-template-columns:216px 1fr;min-height:100vh}aside.nav{background:var(--slate);color:#b0bec5;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.nav .brand{padding:16px 18px 12px;color:#eceff1;font-weight:800;border-bottom:1px solid rgba(255,255,255,.08)}.nav .brand em{font-style:normal;color:#80cbc4}.nav .tenant{padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.08)}.nav .tenant select{width:100%;background:#37474f;color:#eceff1;border:none;border-radius:7px;padding:7px 9px;font-size:.8rem}.nav ul{list-style:none;padding:10px 8px;flex:1}.nav li button{width:100%;text-align:left;display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;font-size:.84rem;color:#b0bec5;margin-bottom:2px}.nav li button:hover{background:#ffffff0f;color:#eceff1}.nav li button.on{background:#80cbc424;color:#80cbc4;font-weight:700}.nav li button .ic{width:20px;text-align:center;font-size:.95rem}.nav li button .cnt{margin-left:auto;font-size:.66rem;font-family:var(--mono);background:#ffffff1a;padding:1px 7px;border-radius:99px}.nav li.navsec{margin:12px 0 4px;padding:6px 12px 4px;border-top:1px solid rgba(255,255,255,.08);font-size:.68rem;font-weight:800;letter-spacing:.06em;color:#78909c;text-transform:uppercase}.nav .foot{padding:12px 16px;border-top:1px solid rgba(255,255,255,.08);font-size:.72rem}.nav .foot .u{color:#eceff1;font-weight:600}.nav .foot button{color:#80cbc4;font-size:.72rem;font-weight:700;margin-top:4px}main{padding:22px 28px 80px;min-width:0}.phead{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.phead h1{font-size:1.15rem;font-weight:800;letter-spacing:-.01em}.phead .sub{font-size:.78rem;color:var(--muted)}.phead .sp{margin-left:auto;display:flex;gap:8px;align-items:center}@keyframes fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin-bottom:14px}.card h3{font-size:.92rem;font-weight:800;margin-bottom:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width:1000px){.grid3,.grid4,.grid2{grid-template-columns:1fr 1fr}}.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:15px 17px;cursor:pointer;transition:.12s}.stat:hover{border-color:#b8c2bb;transform:translateY(-1px)}.stat .k{font-size:.72rem;font-weight:700;color:var(--muted)}.stat .v{font-family:var(--mono);font-size:1.55rem;font-weight:800;margin-top:3px}.stat .d{font-size:.7rem;color:var(--muted);margin-top:2px}.stat.warn .v{color:var(--warn)}.stat.err .v{color:var(--err)}.stat.ok .v{color:var(--sku)}table{width:100%;border-collapse:collapse;font-size:.84rem}th{font-size:.66rem;font-weight:700;letter-spacing:.05em;color:var(--muted);text-transform:uppercase;text-align:left;padding:8px 10px;border-bottom:2px solid var(--line);white-space:nowrap}td{padding:8px 10px;border-bottom:1px solid #EDF0EC;vertical-align:middle}tr:hover td{background:#fbfcfa}td .code{font-family:var(--mono);font-size:.78rem;font-weight:600}.f label{display:block;font-size:.75rem;font-weight:700;color:#3d4a45;margin-bottom:5px}.f label small{font-weight:500;color:var(--muted)}.f input,.f select,.f textarea{width:100%;border:1px solid var(--line);border-radius:7px;padding:8px 11px;font-size:.87rem;background:#fff}.f input:focus,.f select:focus,.f textarea:focus{border-color:var(--spu);outline:none;box-shadow:0 0 0 3px #1565c01a}.axv{display:inline-block;font-size:.74rem;font-weight:700;padding:1px 8px;border-radius:5px;background:var(--sku-bg);color:#1d5a22;margin-right:3px}.exprow{cursor:pointer}.exprow .car{display:inline-block;transition:.15s;color:var(--muted);width:14px}.exprow.open .car{transform:rotate(90deg)}tr.child td{background:#fbfdfb}tr.child td:first-child{padding-left:34px}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%) translateY(80px);background:var(--slate);color:#fff;font-size:.84rem;font-weight:600;padding:11px 20px;border-radius:99px;transition:.25s;opacity:0;z-index:99;box-shadow:0 6px 24px #00000040;max-width:80vw}.toast.show{transform:translate(-50%);opacity:1}.steps{display:flex;gap:0;font-size:.7rem;font-family:var(--mono);flex-wrap:wrap;align-items:center}.steps span{padding:2px 9px;border-radius:99px;border:1px solid var(--line);color:var(--muted);background:#fff}.steps i{color:#c9d1ca;font-style:normal;padding:0 3px}.steps span.on{background:var(--slate);border-color:var(--slate);color:#fff;font-weight:700}.steps span.done{background:var(--sku-bg);border-color:var(--sku-line);color:#1d5a22}.mini{font-size:.72rem;color:var(--muted)}.conf{font-family:var(--mono);font-size:.74rem;font-weight:700}.bar{height:5px;border-radius:99px;background:#edf0ec;overflow:hidden;min-width:60px}.bar i{display:block;height:100%;border-radius:99px}.filter{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center}.filter input{border:1px solid var(--line);border-radius:8px;padding:7px 12px;font-size:.83rem;width:250px}.filter select{border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:.8rem}.pill{font-size:.72rem;font-weight:700;padding:4px 12px;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--muted)}.pill.on{background:var(--slate);border-color:var(--slate);color:#fff}.note{font-size:.74rem;background:var(--info-bg);color:var(--info);border-radius:8px;padding:9px 13px;margin:10px 0}.wnote{font-size:.74rem;background:var(--warn-bg);color:var(--warn);border-radius:8px;padding:9px 13px;margin:10px 0}.dz{border:1.5px dashed #C4CCC6;border-radius:10px;padding:20px;text-align:center;color:var(--muted);font-size:.82rem;background:#fcfdfc;cursor:pointer}.dz:hover{border-color:var(--sku);color:var(--sku)}.imgph{width:74px;height:74px;border:1px solid var(--line);border-radius:8px;display:grid;place-items:center;background:var(--paper);color:#b4bab3;font-size:1.3rem}.sol{border:1px solid var(--line);border-radius:11px;padding:13px 15px;background:#fff}.sol .t{display:flex;align-items:center;gap:8px;font-weight:800;font-size:.9rem}.sol .t .dot{width:8px;height:8px;border-radius:50%}.sol .dot.ok{background:var(--sku)}.sol .dot.off{background:#c4ccc6}.sol .dot.chk{background:var(--warn)}.sol .dot.rd{background:var(--err)}.sol .purp{display:flex;gap:4px;flex-wrap:wrap;margin:7px 0}.sol .purp span{font-size:.62rem;font-weight:700;font-family:var(--mono);background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:1px 6px;color:var(--muted)}.sol .meta{font-size:.72rem;color:var(--muted);margin-bottom:8px}.cathead{display:flex;align-items:center;gap:9px;font-size:.8rem;font-weight:800;margin:16px 0 9px;color:#3d4a45}.cathead .badge{font-weight:700}.cathead .hc{margin-left:auto;font-size:.7rem;font-weight:500;color:var(--muted)}.tgl{position:relative;width:32px;height:18px;display:inline-block;vertical-align:middle}.tgl input{position:absolute;opacity:0;width:100%;height:100%;cursor:pointer;z-index:1}.tgl i{position:absolute;top:0;right:0;bottom:0;left:0;background:#cfd6d0;border-radius:99px;transition:.15s}.tgl i:before{content:"";position:absolute;width:14px;height:14px;background:#fff;border-radius:50%;top:2px;left:2px;transition:.15s}.tgl input:checked+i{background:var(--sku)}.tgl input:checked+i:before{left:16px}.polsel{border:1px solid var(--line);border-radius:6px;padding:3px 7px;font-size:.74rem;background:#fff}.cg{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:9px 12px;border-radius:8px;border:1px solid transparent;font-size:.84rem}.cg:hover{background:#f7f9f6}.cg.on{background:var(--sku-bg);border-color:var(--sku-line);font-weight:700}.cg .ty{font-size:.6rem;font-family:var(--mono);font-weight:700;background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:1px 5px;color:var(--muted)}.cg .cnum{margin-left:auto;font-size:.68rem;font-family:var(--mono);color:var(--muted)}.al{display:inline-flex;align-items:center;font-size:.7rem;font-weight:600;background:var(--paper);border:1px solid var(--line);border-radius:99px;padding:1px 9px;margin:1px 2px;color:#4a554f}.al.learn{background:var(--info-bg);border-color:#d6dbee;color:var(--info)}.al .x{margin-left:5px;color:#b4bab3;cursor:pointer;font-weight:800}.langsel{border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:.8rem;background:#fff}.authbg{justify-content:center}
