:root{--navy-950:#041321;--navy-900:#07192e;--navy-800:#0d2845;--navy-700:#153b61;--cyan:#19c6d4;--cyan-100:#e7fbfd;--surface:#f3f6f9;--card:#fff;--ink:#122033;--muted:#667489;--line:#dbe3eb;--success:#16855b;--warning:#b36b00;--danger:#c7363f;--info:#1678bd;--sidebar:284px;--sidebar-collapsed:88px;--topbar:72px;--shadow:0 14px 38px rgba(7,25,46,.09);--radius:18px;--font:Inter,Pretendard,"Noto Sans KR","Noto Sans SC",system-ui,-apple-system,sans-serif}
*{box-sizing:border-box}html{background:var(--surface);scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--surface);font:15px/1.55 var(--font);-webkit-font-smoothing:antialiased}body.drawer-open,body.dialog-open{overflow:hidden}button,input,select{font:inherit}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}:focus-visible{outline:3px solid rgba(25,198,212,.55);outline-offset:3px}.skip-link{position:fixed;left:12px;top:10px;z-index:1000;transform:translateY(-160%);padding:10px 14px;border-radius:10px;color:#061a29;background:var(--cyan);font-weight:800}.skip-link:focus{transform:none}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.boot-screen{min-height:100vh;display:grid;place-items:center;align-content:center;gap:22px;background:var(--navy-900);color:#c9d7e6}.boot-screen img{width:240px}.spinner{display:block;width:34px;height:34px;border:3px solid rgba(25,198,212,.2);border-top-color:var(--cyan);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(420px,.88fr) minmax(520px,1.12fr);background:#fff}.login-brand{position:relative;overflow:hidden;display:flex;min-height:100vh;padding:clamp(40px,7vw,92px);color:#fff;background:radial-gradient(circle at 85% 15%,rgba(25,198,212,.28),transparent 28%),linear-gradient(145deg,var(--navy-950),var(--navy-700))}.login-brand:after{content:"";position:absolute;right:-180px;bottom:-210px;width:560px;height:560px;border:1px solid rgba(255,255,255,.08);border-radius:50%;box-shadow:0 0 0 70px rgba(255,255,255,.025),0 0 0 140px rgba(255,255,255,.018)}.login-brand-inner{position:relative;z-index:1;align-self:center;max-width:580px}.login-brand img{width:min(360px,100%);margin-bottom:58px}.login-kicker{display:flex;align-items:center;gap:10px;color:var(--cyan);font-size:.76rem;font-weight:900;letter-spacing:.18em}.login-kicker:before{content:"";width:28px;height:2px;background:currentColor}.login-brand h1{margin:18px 0 20px;font-size:clamp(2.7rem,5vw,5.6rem);line-height:.98;letter-spacing:-.06em}.login-brand p{max-width:520px;margin:0;color:#c4d1df;font-size:1.06rem}.login-proof{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:50px}.login-proof span{padding:15px;border:1px solid rgba(255,255,255,.12);border-radius:13px;color:#d9e4ee;background:rgba(255,255,255,.04);font-size:.8rem;font-weight:750}.login-panel{display:grid;place-items:center;padding:40px;background:linear-gradient(160deg,#fff,#f2f7fa)}.login-card{width:min(470px,100%);padding:42px;border:1px solid var(--line);border-radius:24px;background:#fff;box-shadow:0 28px 75px rgba(7,25,46,.12)}.login-top{display:flex;align-items:center;justify-content:space-between;gap:20px}.login-top strong{font-size:.78rem;letter-spacing:.13em;color:var(--navy-700)}.locale-select{min-width:122px;height:42px;padding:0 34px 0 12px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:#fff}.login-card h2{margin:32px 0 9px;color:var(--navy-900);font-size:2.15rem;line-height:1.1;letter-spacing:-.035em}.login-card>.intro{margin:0 0 29px;color:var(--muted)}.form-field{display:block;margin-bottom:18px}.form-field>span{display:block;margin-bottom:7px;color:var(--navy-800);font-size:.88rem;font-weight:800}.input{width:100%;height:52px;padding:0 14px;border:1px solid #cbd6e0;border-radius:11px;color:var(--ink);background:#fff}.input:hover{border-color:#96a9bb}.input:focus{border-color:var(--cyan);outline:3px solid rgba(25,198,212,.13)}.password-wrap{position:relative}.password-wrap .input{padding-right:54px}.password-toggle{position:absolute;right:7px;top:7px;width:38px;height:38px;border:0;border-radius:8px;color:var(--navy-700);background:var(--surface);cursor:pointer}.button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 18px;border:1px solid transparent;border-radius:11px;cursor:pointer;font-weight:800}.button:disabled{opacity:.62;cursor:wait}.button.primary{color:#05202b;background:var(--cyan)}.button.primary:hover{background:#25d5e1}.button.secondary{color:var(--navy-900);border-color:var(--line);background:#fff}.button.danger{color:#fff;background:var(--danger)}.login-submit{width:100%;height:52px;margin-top:5px}.form-feedback{min-height:22px;margin:15px 0 0;color:var(--muted);font-size:.88rem}.form-feedback[data-state=error]{padding:11px 12px;border-radius:9px;color:#9e252d;background:#fff0f1}.form-feedback[data-state=success]{color:var(--success)}.form-feedback[data-state=pending]{color:var(--info)}.security-note{display:flex;gap:10px;margin:22px 0 0;padding-top:20px;border-top:1px solid var(--line);color:var(--muted);font-size:.78rem}.security-note b{color:var(--success)}
.app-shell{min-height:100vh;padding-left:var(--sidebar);transition:padding-left .2s}.app-shell.sidebar-collapsed{padding-left:var(--sidebar-collapsed)}.sidebar{position:fixed;inset:0 auto 0 0;z-index:120;width:var(--sidebar);display:flex;flex-direction:column;color:#d9e5f1;background:var(--navy-950);transition:width .2s,transform .2s}.sidebar-head{height:var(--topbar);display:flex;align-items:center;gap:12px;padding:0 17px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-logo{width:204px;min-width:204px}.sidebar-collapse{margin-left:auto}.icon-button{display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid transparent;border-radius:10px;color:inherit;background:transparent;cursor:pointer}.sidebar .icon-button:hover{background:rgba(255,255,255,.08)}.sidebar-nav{flex:1;overflow:auto;padding:16px 11px 30px;scrollbar-width:thin}.nav-label{margin:5px 12px 10px;color:#71869c;font-size:.67rem;font-weight:900;letter-spacing:.16em}.nav-link{position:relative;display:flex;align-items:center;gap:13px;min-height:45px;margin:3px 0;padding:9px 13px;border-radius:10px;color:#aebfd0;font-size:.89rem;font-weight:720;white-space:nowrap}.nav-link:hover{color:#fff;background:rgba(255,255,255,.065)}.nav-link.active{color:#fff;background:linear-gradient(90deg,rgba(25,198,212,.24),rgba(25,198,212,.08))}.nav-link.active:before{content:"";position:absolute;left:0;width:3px;height:24px;border-radius:4px;background:var(--cyan)}.nav-icon{display:grid;place-items:center;width:24px;min-width:24px;height:24px;color:var(--cyan);font-size:.82rem;font-weight:900}.sidebar-footer{padding:15px 16px;border-top:1px solid rgba(255,255,255,.08);color:#8094a8;font-size:.72rem}.sidebar-collapsed .sidebar{width:var(--sidebar-collapsed)}.sidebar-collapsed .sidebar-logo{display:none}.sidebar-collapsed .sidebar-head{justify-content:center}.sidebar-collapsed .sidebar-collapse{margin:0}.sidebar-collapsed .nav-link{justify-content:center}.sidebar-collapsed .nav-link span:not(.nav-icon),.sidebar-collapsed .nav-label,.sidebar-collapsed .sidebar-footer{display:none}
.topbar{position:sticky;top:0;z-index:100;height:var(--topbar);display:flex;align-items:center;gap:18px;padding:0 26px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.94);backdrop-filter:blur(14px)}.mobile-menu{display:none}.quick-search{position:relative;width:min(470px,42vw)}.quick-search input{width:100%;height:42px;padding:0 42px 0 14px;border:1px solid var(--line);border-radius:11px;background:var(--surface)}.quick-search kbd{position:absolute;right:9px;top:9px;padding:3px 7px;border:1px solid var(--line);border-radius:6px;color:var(--muted);background:#fff;font-size:.7rem}.topbar-spacer{flex:1}.top-action{position:relative}.top-action>button{color:var(--navy-700);background:var(--surface)}.notification-dot{position:absolute;right:6px;top:6px;width:8px;height:8px;border:2px solid #fff;border-radius:50%;background:var(--danger)}.user-button{display:flex!important;width:auto!important;gap:10px;padding:0 8px!important}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;color:#06333a;background:var(--cyan);font-size:.75rem;font-weight:900}.user-meta{max-width:170px;text-align:left}.user-meta strong,.user-meta small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-meta strong{font-size:.8rem}.user-meta small{color:var(--muted);font-size:.67rem}.popover{position:absolute;right:0;top:50px;width:270px;padding:10px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.popover[hidden]{display:none}.popover-head{padding:12px}.popover-head strong,.popover-head span{display:block;overflow:hidden;text-overflow:ellipsis}.popover-head span{color:var(--muted);font-size:.76rem}.popover a,.popover button{width:100%;display:flex;align-items:center;min-height:42px;padding:8px 11px;border:0;border-radius:8px;color:var(--ink);background:transparent;text-align:left;cursor:pointer}.popover a:hover,.popover button:hover{background:var(--surface)}
.main-content{min-width:0;padding:30px clamp(20px,3vw,42px) 56px}.breadcrumbs{display:flex;gap:8px;margin:0 0 15px;color:var(--muted);font-size:.78rem}.breadcrumbs a:hover{color:var(--info)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:28px}.page-title h1{margin:0;color:var(--navy-900);font-size:clamp(1.8rem,3vw,2.75rem);line-height:1.12;letter-spacing:-.045em}.page-title p{margin:8px 0 0;color:var(--muted)}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;color:var(--info);background:#e9f5fd;font-size:.7rem;font-weight:850}.status-badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status-badge.success{color:var(--success);background:#e8f7f0}.status-badge.warning{color:var(--warning);background:#fff5df}.status-badge.danger{color:var(--danger);background:#fff0f1}.dashboard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.metric-card{position:relative;min-height:145px;padding:20px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:0 3px 12px rgba(7,25,46,.035);transition:transform .16s,box-shadow .16s}.metric-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.metric-card .metric-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;color:var(--navy-800);background:var(--cyan-100);font-size:.75rem;font-weight:900}.metric-card h2{margin:18px 0 5px;color:var(--muted);font-size:.78rem;font-weight:750}.metric-card strong{color:var(--navy-900);font-size:1.65rem}.metric-card small{display:block;margin-top:4px;color:var(--muted);font-size:.7rem}.panel-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr);gap:18px;margin-top:18px}.panel{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 3px 12px rgba(7,25,46,.035)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;border-bottom:1px solid var(--line)}.panel-head h2{margin:0;color:var(--navy-900);font-size:1rem}.panel-head a{color:var(--info);font-size:.78rem;font-weight:800}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:13px 18px;border-bottom:1px solid #edf1f5;text-align:left;font-size:.78rem}.data-table th{color:var(--muted);background:#f9fbfc;font-size:.69rem;letter-spacing:.04em}.data-table tr:last-child td{border-bottom:0}.data-table a{color:var(--navy-700);font-weight:800}.quick-list{display:grid;padding:10px}.quick-link{display:flex;align-items:center;gap:12px;padding:12px;border-radius:11px}.quick-link:hover{background:var(--surface)}.quick-link b{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;color:var(--navy-800);background:var(--cyan-100);font-size:.72rem}.quick-link span{font-size:.8rem;font-weight:750}.state-box{display:grid;place-items:center;min-height:220px;padding:28px;color:var(--muted);text-align:center}.state-box b{color:var(--navy-900)}.skeleton{position:relative;overflow:hidden;background:#e9eef3}.skeleton:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);animation:shimmer 1.2s infinite}@keyframes shimmer{to{transform:translateX(100%)}}
.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.module-card{display:flex;min-height:175px;padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;flex-direction:column}.module-card .status-badge{align-self:flex-start}.module-card h2{margin:20px 0 8px;color:var(--navy-900);font-size:1.05rem}.module-card p{flex:1;margin:0 0 22px;color:var(--muted);font-size:.83rem}.module-card .button{align-self:flex-start}.notice-panel{margin:18px 0;padding:16px 18px;border:1px solid #bfe8ed;border-radius:13px;color:#205667;background:var(--cyan-100);font-size:.82rem}.filter-bar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:17px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff}.filter-bar .input{width:min(320px,100%);height:42px}
.drawer-backdrop{position:fixed;inset:0;z-index:110;background:rgba(2,12,23,.58);backdrop-filter:blur(2px)}.drawer-backdrop[hidden]{display:none}.confirm-dialog{width:min(430px,calc(100% - 28px));padding:30px;border:0;border-radius:20px;color:var(--ink);box-shadow:0 28px 80px rgba(5,20,42,.28)}.confirm-dialog::backdrop{background:rgba(2,12,23,.62);backdrop-filter:blur(3px)}.confirm-dialog h2{margin:18px 0 8px;color:var(--navy-900)}.confirm-dialog p{color:var(--muted)}.dialog-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;color:#fff;background:var(--danger);font-weight:900}.dialog-close{position:absolute;right:16px;top:14px;color:var(--muted);background:var(--surface)}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:26px}.noscript{margin:15vh auto;padding:30px;max-width:560px;text-align:center}
@media(max-width:1366px){:root{--sidebar:264px}.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.user-meta{max-width:130px}.nav-link{font-size:.84rem}}
@media(max-width:1100px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel-grid{grid-template-columns:1fr}.module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.login-page{grid-template-columns:.9fr 1.1fr}.login-brand{padding:48px}.login-proof{grid-template-columns:1fr}.login-proof span:nth-child(n+2){display:none}}
@media(max-width:900px){.app-shell,.app-shell.sidebar-collapsed{padding-left:0}.sidebar,.sidebar-collapsed .sidebar{width:min(310px,86vw);transform:translateX(-105%)}.sidebar.drawer-open{transform:none;box-shadow:20px 0 60px rgba(0,0,0,.3)}.sidebar-collapsed .sidebar-logo{display:block}.sidebar-collapsed .sidebar-head{justify-content:flex-start}.sidebar-collapsed .nav-link{justify-content:flex-start}.sidebar-collapsed .nav-link span:not(.nav-icon),.sidebar-collapsed .nav-label,.sidebar-collapsed .sidebar-footer{display:block}.mobile-menu{display:grid}.sidebar-collapse{display:none}.topbar{padding:0 18px}.quick-search{width:min(380px,45vw)}.login-page{grid-template-columns:1fr}.login-brand{min-height:auto;padding:36px 32px}.login-brand-inner{width:100%;display:flex;align-items:center;gap:20px}.login-brand img{width:220px;margin:0}.login-brand h1,.login-brand p,.login-kicker,.login-proof{display:none}.login-panel{padding:32px 20px}}
@media(max-width:640px){:root{--topbar:64px}.topbar{gap:8px;padding:0 12px}.quick-search{display:none}.top-action.notifications{margin-left:auto}.user-meta{display:none}.locale-select{min-width:103px;max-width:113px}.main-content{padding:22px 14px 42px}.page-header{align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:20px}.page-title h1{font-size:1.8rem}.dashboard-grid,.module-grid{grid-template-columns:1fr}.metric-card{min-height:125px}.panel{overflow-x:auto}.data-table{min-width:650px}.panel-grid{gap:14px}.login-brand{padding:24px 20px}.login-brand img{width:190px}.login-panel{padding:24px 14px;place-items:start center}.login-card{padding:26px 20px;border-radius:18px}.login-card h2{font-size:1.75rem}.dialog-actions{flex-direction:column-reverse}.dialog-actions .button{width:100%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
