:root{font-family:Inter,"Noto Sans KR","Malgun Gothic",system-ui,sans-serif;color:#17243c;background:#f4f7fb;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100vh}.hidden{display:none!important}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}.eyebrow{margin:0 0 18px;font-size:11px;font-weight:800;letter-spacing:.17em;color:#7ea9ec}.eyebrow.dark{color:#3165b7}.login-layout{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.login-intro{position:relative;display:flex;flex-direction:column;justify-content:center;padding:9vw;background:radial-gradient(circle at 78% 19%,#234985 0,transparent 32%),linear-gradient(145deg,#0b1730,#102e5c);color:white;overflow:hidden}.login-intro:after{content:"";position:absolute;right:-110px;bottom:-170px;width:520px;height:520px;border:1px solid #ffffff22;border-radius:50%;box-shadow:0 0 0 95px #ffffff06,0 0 0 190px #ffffff04}.brand-mark{position:absolute;top:42px;left:9vw;font-size:24px;font-weight:900;letter-spacing:-.08em}.brand-mark span{color:#69b9ff}.login-intro h1{position:relative;z-index:1;margin:0;font-size:clamp(38px,4vw,68px);line-height:1.3;letter-spacing:-.055em}.login-intro h1 em{font-style:normal;color:#78beff}.intro-copy{position:relative;z-index:1;max-width:410px;margin:25px 0 0;color:#b7c9e6;line-height:1.8}.login-foot{position:absolute;bottom:42px;color:#91a6c8;font-size:12px}.login-panel{display:flex;align-items:center;justify-content:center;padding:40px}.login-card{width:min(100%,420px)}.login-card h2{margin:0;font-size:30px;letter-spacing:-.045em}.form-description{margin:12px 0 36px;color:#7e8ca4;font-size:14px}.login-card label,.modal label{display:block;margin:20px 0 8px;font-size:13px;font-weight:700}.login-card input,.modal input,.modal select,.toolbar-actions input{width:100%;height:46px;padding:0 14px;border:1px solid #d7e0ed;border-radius:9px;background:#fff;color:#17243c;outline:none}.login-card input:focus,.modal input:focus,.modal select:focus,.toolbar-actions input:focus{border-color:#447ed2;box-shadow:0 0 0 3px #447ed220}.form-error{min-height:18px;margin:12px 0;color:#c13948;font-size:12px}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 17px;border:1px solid transparent;border-radius:9px;font-size:13px;font-weight:750;white-space:nowrap}.button.primary{background:#245ab5;color:white;box-shadow:0 7px 15px #245ab522}.button.primary:hover{background:#1d4e9f}.button.secondary{background:white;color:#334b70;border-color:#d7e0ed}.button.secondary:hover{background:#f5f8fc}.button.wide{width:100%;height:48px}.topbar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 4vw;background:#fff;border-bottom:1px solid #e7ecf3}.topbar-brand{display:flex;align-items:center;gap:11px;font-size:15px;font-weight:800;letter-spacing:-.025em}.brand-box{display:grid;place-items:center;width:31px;height:31px;border-radius:8px;background:#1b4d9b;color:white;font-size:11px;letter-spacing:-.04em}.topbar-right{display:flex;align-items:center;gap:18px}.admin-badge{padding:6px 10px;border-radius:20px;background:#eef3fa;color:#54719c;font-size:11px;font-weight:750}.text-button{padding:4px;border:0;background:none;color:#6a7d9a;font-size:12px}.main-content{max-width:1460px;margin:auto;padding:54px 4vw 90px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.page-heading h1{margin:0;font-size:35px;letter-spacing:-.06em}.page-heading p:last-child{margin:10px 0 0;color:#7b8aa2;font-size:14px}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:34px 0 25px}.summary-card{display:flex;flex-direction:column;min-height:154px;padding:24px;border:1px solid #e5ebf3;border-radius:14px;background:white;box-shadow:0 3px 14px #162b4b06}.summary-label{color:#637893;font-size:13px;font-weight:650}.summary-card strong{margin-top:13px;font-size:32px;letter-spacing:-.05em}.summary-note{display:flex;align-items:center;gap:6px;margin-top:auto;color:#93a0b5;font-size:11px}.dot{width:7px;height:7px;border-radius:50%}.dot.green{background:#27b87a}.dot.amber{background:#efa633}.device-panel{overflow:hidden;border:1px solid #e5ebf3;border-radius:14px;background:white;box-shadow:0 3px 14px #162b4b06}.release-panel{margin-top:20px}.release-panel input[type=file]{width:260px;height:40px;padding:7px 10px}.release-panel .toolbar-actions{align-items:center}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{text-align:left;padding:14px 22px;border-top:1px solid #edf1f6;border-bottom:1px solid #edf1f6;background:#f9fbfd;color:#7e8ca2;font-size:11px;font-weight:750}td{padding:18px 22px;border-bottom:1px solid #eef1f6;font-size:12px;color:#4a5e7a}tbody tr:last-child td{border-bottom:0}.device-name{display:block;color:#17243c;font-size:13px;font-weight:750}.device-id{display:block;margin-top:5px;color:#8fa0b5;font-size:11px}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:20px;font-size:11px;font-weight:750}.status-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status-online{background:#e9f8f0;color:#179563}.status-late{background:#fff5df;color:#b7780f}.status-offline{background:#fceced;color:#c04453}.status-waiting{background:#edf2f9;color:#6380a3}.status-disabled{background:#edf0f3;color:#7c8998}.muted{color:#98a5b7}.health-good{color:#1a9668}.health-bad{color:#c04453}.row-actions{display:flex;gap:10px}.row-actions button{padding:0;border:0;background:none;color:#2761af;font-size:11px;font-weight:700}.row-actions button.danger{color:#c04453}.empty-state{padding:65px 20px;text-align:center;color:#8fa0b5;font-size:13px}.modal{width:min(92vw,500px);padding:28px;border:0;border-radius:15px;box-shadow:0 24px 80px #13294b40}.modal::backdrop{background:#0b1730aa}.modal-head{display:flex;justify-content:space-between;align-items:flex-start}.modal-head h2{margin:0;font-size:24px;letter-spacing:-.04em}.modal-head .eyebrow{margin-bottom:9px}.icon-button{width:28px;height:28px;border:0;background:none;color:#8b9ab0;font-size:24px;line-height:1}.field-hint{margin:6px 0 0;color:#94a2b5;font-size:11px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:26px}.key-description{margin:24px 0 13px;color:#667a96;font-size:13px;line-height:1.7}.secret-box{display:block;overflow-wrap:anywhere;padding:16px;border-radius:9px;background:#f1f5fb;color:#1a3f79;font-size:12px;line-height:1.6}.toast{position:fixed;right:24px;bottom:24px;z-index:5;max-width:360px;padding:13px 17px;border-radius:9px;background:#172e54;color:white;box-shadow:0 10px 25px #10213f3b;font-size:12px}@media(max-width:1000px){.summary-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.login-layout{grid-template-columns:1fr}.login-intro{min-height:270px;padding:80px 30px 40px}.login-intro h1{font-size:34px}.brand-mark{left:30px;top:22px}.login-foot{display:none}.login-panel{padding:45px 24px}.main-content{padding:35px 18px 70px}.topbar{padding:0 18px}.page-heading{align-items:flex-start}.page-heading h1{font-size:29px}.summary-grid{gap:10px;margin:26px 0 18px}.summary-card{min-height:130px;padding:18px}.panel-toolbar{align-items:stretch;flex-direction:column;padding:20px}.toolbar-actions input{flex:1;width:0}.admin-badge{display:none}}@media(max-width:480px){.page-heading{flex-direction:column}.page-heading .button{width:100%}.summary-card strong{font-size:27px}.summary-label{font-size:11px}.modal{padding:22px}}
