/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.table{display:table}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}:root{--ink:#09212b;--navy:#071b24;--teal:#00c2b2;--cyan:#46e0d3;--muted:#6d7f86;--line:#dbe5e7;--paper:#f2f6f6;--amber:#f39a38}*{box-sizing:border-box}html{background:var(--paper)}body{background:var(--paper);color:var(--ink);margin:0;font-family:Arial,Noto Sans KR,sans-serif}button,select,input{font:inherit}button,select{cursor:pointer}.app-shell{grid-template-columns:224px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--navy);color:#d6e2e5;flex-direction:column;height:100vh;padding:28px 18px 20px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:0 10px 30px;display:flex}.brand strong{color:#fff;letter-spacing:4px;font-size:18px;display:block}.brand small{color:#6e8991;letter-spacing:1.4px;margin-top:3px;font-size:8px;display:block}.brand-mark{border:2px solid var(--teal);border-radius:50%;width:35px;height:35px;position:relative;overflow:hidden}.brand-mark:before,.brand-mark:after{content:"";border:2px solid var(--teal);border-radius:50%;width:19px;height:11px;position:absolute;left:6px;transform:rotate(-22deg)}.brand-mark:before{top:5px}.brand-mark:after{top:15px}.brand-mark span{background:var(--teal);height:2px;position:absolute;inset:14px 5px auto;transform:rotate(-22deg)}nav{gap:7px;display:grid}nav a,nav button{color:#8299a0;text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:13px;width:100%;padding:12px 14px;font-size:13px;font-weight:700;text-decoration:none;display:flex}nav a span,nav button span{color:#58737b;text-align:center;width:18px;font-size:16px}nav a.active,nav button.active{color:#fff;box-shadow:inset 3px 0 0 var(--teal);background:#0e3942}nav a.active span,nav button.active span{color:var(--teal)}.sidebar-foot{border-top:1px solid #183741;align-items:center;gap:10px;margin-top:auto;padding:20px 8px 0;display:flex}.sidebar-foot strong,.sidebar-foot small{display:block}.sidebar-foot strong{color:#d0e2e5;font-size:11px}.sidebar-foot small{color:#627d84;margin-top:3px;font-size:9px}.system-dot{background:var(--teal);width:9px;height:9px;box-shadow:0 0 10px var(--teal);border-radius:50%}.workspace{min-width:0}.topbar{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;height:90px;padding:20px 32px;display:flex}.eyebrow,.section-label{color:#8b9ba0;letter-spacing:1.7px;margin:0 0 4px;font-size:9px;font-weight:800}h1,h2{margin:0}h1{letter-spacing:-1px;font-size:23px}h2{font-size:15px}.top-actions{align-items:center;gap:18px;display:flex}.clock{color:#87979c;font-size:10px}.clock b{color:#243b43;margin-left:5px}.icon-button{border:1px solid var(--line);color:#82969c;background:#fff;border-radius:50%;width:34px;height:34px;font-size:10px;position:relative}.icon-button em{background:var(--amber);color:#fff;border-radius:8px;padding:1px 5px;font-size:8px;font-style:normal;position:absolute;top:-4px;right:-3px}.operator{text-align:left;background:0 0;border:0;align-items:center;gap:9px;display:flex}.operator>span{color:#007d73;background:#d8f2ef;border-radius:50%;place-items:center;width:34px;height:34px;font-weight:800;display:grid}.operator strong,.operator small{display:block}.operator strong{font-size:11px}.operator small{color:#8a999e;margin-top:2px;font-size:9px}.status-strip{border:1px solid var(--line);background:#fff;align-items:center;gap:32px;min-height:64px;margin:20px 32px 0;padding:12px 15px;display:flex;box-shadow:0 3px 12px #14343d0a}.status-strip>div:not(.live-pill){border-right:1px solid var(--line);padding-right:28px}.status-strip small,.status-strip strong{display:block}.status-strip small{color:#87979c;margin-bottom:4px;font-size:9px}.status-strip strong{font-size:11px}.live-pill{color:#008f83;letter-spacing:.6px;background:#e6f7f5;border:1px solid #bce8e3;padding:8px 11px;font-size:9px;font-weight:900}.live-pill i{background:var(--teal);border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block;box-shadow:0 0 0 4px #00c2b21f}.amber{color:#d77b18}.stop-button{color:#b44631;background:#fff;border:1px solid #e6b4a8;margin-left:auto;padding:9px 13px;font-size:10px;font-weight:700}.dashboard-grid{grid-template-columns:minmax(480px,1.35fr) minmax(340px,.9fr);gap:16px;padding:18px 32px 32px;display:grid}.panel{border:1px solid var(--line);background:#fff;box-shadow:0 4px 15px #14343d0a}.panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:62px;padding:15px 18px;display:flex}.view-switch{background:#eef3f3;padding:3px;display:flex}.view-switch button{color:#839398;background:0 0;border:0;width:43px;padding:5px;font-size:9px;font-weight:800}.view-switch button.selected{color:#057e75;background:#fff;box-shadow:0 1px 5px #14343d20}.fan-angle-control{border-bottom:1px solid var(--line);background:#f8fbfb;grid-template-columns:auto minmax(140px,1fr) 42px auto;align-items:center;gap:12px;min-height:46px;padding:8px 18px;display:grid}.fan-angle-control label{color:#647b82;font-size:9px;font-weight:700}.fan-angle-control input{width:100%;accent-color:var(--teal)}.fan-angle-control output{color:#087e75;text-align:right;font-size:11px;font-weight:900}.fan-angle-control button{color:#087e75;background:#fff;border:1px solid #b9dcda;padding:6px 9px;font-size:9px;font-weight:700}.sonar{background:radial-gradient(circle at 50% 100%,#164d4b 0,#092a31 37%,#06191f 74%);height:430px;position:relative;overflow:hidden}.actual-sonar canvas{object-fit:fill;width:100%;height:100%;display:block}.sonar-loading{color:#6be3d6;letter-spacing:1px;background:#06191f;place-items:center;font-size:12px;display:grid;position:absolute;inset:0}.connection-error{color:#8e3b2d;background:#fff1ed;border:1px solid #efb5aa;margin:12px 32px -6px;padding:10px 14px;font-size:11px}.live-pill.offline{color:#8a5c21;background:#fff5e7;border-color:#f2d09b}.sonar-grid{background:repeating-radial-gradient(circle, transparent 0 79px, #65dacf1c 80px 81px), conic-gradient(from -74deg at 50% 50%, transparent 0 148deg, #020c0fdd 148deg 360deg);border:1px solid #66e8d91f;border-radius:50%;width:740px;height:740px;position:absolute;bottom:-370px;left:50%;transform:translate(-50%)}.sonar-sweep{background:conic-gradient(from -72deg,#27e5cc00 0deg,#26e5cc27 3deg,#0000 9deg);border-radius:50%;width:700px;height:700px;animation:4s linear infinite sweep;position:absolute;bottom:-350px;left:50%;transform:translate(-50%)}@keyframes sweep{to{transform:translate(-50%)rotate(148deg)}}.blip{--angle:0deg;--radius:50%;--strength:.5;width:4px;height:15px;opacity:var(--strength);filter:blur(.4px);transform-origin:50% calc(var(--radius) * -3.8);transform:rotate(var(--angle)) translateY(calc(var(--radius) * -3.6));background:#b9fff5;border-radius:50%;position:absolute;bottom:0;left:50%;box-shadow:0 0 8px #45f3dc}.range-label{color:#77b9b4;font-size:8px;position:absolute;left:calc(50% + 8px)}.r1{bottom:25%}.r2{bottom:48%}.r3{bottom:71%}.sonar-origin{background:#61e9d9;border-radius:50%;width:13px;height:13px;position:absolute;bottom:-4px;left:50%;transform:translate(-50%);box-shadow:0 0 14px #50e8d7}.playback{align-items:center;gap:10px;min-height:70px;padding:12px 15px;display:flex}.play-button{background:var(--teal);color:#052a2b;border:0;border-radius:50%;width:35px;height:35px;font-weight:900}.playback select,.session-panel select{border:1px solid var(--line);color:#536b72;background:#fff;padding:7px;font-size:10px}.timeline{flex:1}.timeline input{width:100%;accent-color:var(--teal)}.timeline div{color:#829297;justify-content:space-between;font-size:8px;display:flex}.timeline strong{color:#2b454d}.healthy,.sim-badge{color:#00897e;font-size:9px;font-weight:800}.sim-badge{background:#e8f7f5;padding:5px 7px}.metric-grid{grid-template-columns:1fr 1fr;gap:10px;padding:16px;display:grid}.metric-grid article{border:1px solid #e2e9ea;min-height:94px;padding:14px;position:relative}.metric-grid small,.metric-grid strong,.metric-grid span{display:block}.metric-grid small{color:#829398;font-size:9px}.metric-grid strong{margin-top:8px;font-size:22px}.metric-grid strong em{color:#829398;font-size:9px;font-style:normal}.metric-grid span{color:#92a0a4;margin-top:5px;font-size:8px}.metric-grid .good{color:#008b80}.metric-grid .warn{color:#d37a1d}.signal-card{border:1px solid #e2e9ea;grid-template-columns:95px 1fr;align-items:end;gap:15px;margin:0 16px;padding:13px;display:grid}.signal-card small,.signal-card strong{display:block}.signal-card small{color:#829398;font-size:9px}.signal-card strong{margin-top:8px;font-size:12px}.mini-chart{align-items:end;gap:3px;height:50px;display:flex}.mini-chart span{opacity:.8;background:linear-gradient(#27d9c9,#b3ece7);flex:1;min-width:2px}.storage-row{padding:16px}.storage-row>div:first-child{justify-content:space-between;font-size:9px;display:flex}.storage-row b{font-size:9px}.storage-bar{background:#e9efef;height:6px;margin:8px 0}.storage-bar i{background:var(--teal);width:34%;height:100%;display:block}.storage-row small{color:#849398;font-size:8px}.session-panel,.alert-panel{min-height:226px}.session-panel>label{color:#778b91;margin:16px 18px;font-size:9px;display:block}.session-panel label select{width:100%;margin-top:7px;display:block}.file-lock{border:1px solid var(--line);background:#f8fbfb;align-items:center;gap:8px;min-height:34px;margin-top:7px;padding:9px 10px;display:flex}.file-lock span{color:var(--teal);font-size:8px}.file-lock strong{color:#243d45;font-size:10px}.file-lock small{color:#829499;margin-left:auto;font-size:8px}.session-meta{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:1px;margin:0 18px 15px;display:grid}.session-meta div{background:#f8fafa;padding:10px}.session-meta small,.session-meta strong{display:block}.session-meta small{color:#8b999d;font-size:8px}.session-meta strong{margin-top:5px;font-size:10px}.text-button{color:#008c81;background:0 0;border:0;font-size:9px;font-weight:700}.event-list{padding:3px 18px}.event-list article{border-bottom:1px solid #edf1f1;grid-template-columns:8px 1fr;align-items:start;gap:11px;padding:11px 0;display:grid}.event-list article:last-child{border:0}.event-list i{border-radius:50%;width:7px;height:7px;margin-top:3px}.event-list i.warning{background:var(--amber)}.event-list i.ok{background:var(--teal)}.event-list i.info{background:#7ba7b1}.event-list strong,.event-list small{display:block}.event-list strong{font-size:10px;font-weight:600}.event-list small{color:#94a1a5;margin-top:4px;font-size:8px}.section-view{padding:20px 32px 32px}.page-panel{min-height:430px}.view-toolbar{border:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;margin-bottom:16px;padding:18px;display:flex}.primary-action,.session-actions button{color:#087e75;background:#fff;border:1px solid #b8d9d6;padding:9px 13px;font-size:10px;font-weight:800}.primary-action{background:var(--teal);border-color:var(--teal);color:#052b2a}.session-summary{grid-template-columns:repeat(4,1fr);gap:12px;padding:20px;display:grid}.session-summary>div{background:#f7fafa;border:1px solid #e0e8e9;min-height:86px;padding:16px}.session-summary small,.session-summary strong{display:block}.session-summary small{color:#829297;font-size:9px}.session-summary strong{margin-top:10px;font-size:13px}.session-actions{gap:8px;padding:0 20px 20px;display:flex}.table-wrap{border:1px solid var(--line);margin:0 20px 20px;overflow-x:auto}.table-wrap table{border-collapse:collapse;width:100%;font-size:10px}.table-wrap th{color:#72868c;text-align:left;background:#f2f7f7;padding:11px 12px;font-size:9px}.table-wrap td{border-top:1px solid var(--line);padding:14px 12px;font-weight:600}.table-status{color:#087e75;background:#e4f6f4;padding:5px 8px;font-size:8px;font-weight:800;display:inline-block}.service-card-grid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.service-card{min-height:190px;padding:20px}.service-card small{color:#89999e;font-size:9px}.service-card h3{margin:12px 0 20px;font-size:15px}.service-card>strong{font-size:11px;display:block}.service-card p{color:#71858b;font-size:9px}.service-icon{float:right;border-radius:50%;place-items:center;width:30px;height:30px;display:grid}.service-icon.online{color:#00a497;background:#e1f5f3}.service-icon.offline{color:#c16445;background:#faeae5}.device-detail{margin-top:16px}.storage-overview{border:1px solid var(--line);background:#f7fafa;align-items:center;gap:28px;margin:20px;padding:24px;display:flex}.storage-donut{border:13px solid #dcebea;border-top-color:var(--teal);border-right-color:var(--teal);text-align:center;border-radius:50%;flex:0 0 120px;place-content:center;width:120px;height:120px;display:grid}.storage-donut strong{font-size:20px}.storage-donut small{color:#7a8e93;font-size:8px}.storage-copy h3{margin:0 0 8px}.storage-copy p{color:#71858b;font-size:10px}.storage-path{color:#087e75;border:1px solid var(--line);background:#fff;margin-top:12px;padding:10px 12px;font-family:monospace;font-size:10px}.alert-history{padding:8px 20px 20px}.alert-history article{border-bottom:1px solid var(--line);grid-template-columns:56px 1fr auto;align-items:center;gap:16px;padding:18px 0;display:grid}.alert-history article:last-child{border-bottom:0}.alert-history strong{font-size:11px;display:block}.alert-history p{color:#75888e;margin:5px 0 0;font-size:9px}.alert-history time{color:#89999e;font-size:9px}.alert-level{text-align:center;padding:6px 8px;font-size:8px;font-weight:800}.level-정상{color:#087e75;background:#e4f6f4}.level-경고{color:#9a611b;background:#fff2d9}.level-오류{color:#a44332;background:#fbe7e2}.level-정보{color:#527882;background:#e8f0f2}.level-info{color:#087e75;background:#e4f6f4}.level-warning,.level-warn{color:#9a611b;background:#fff2d9}.level-error{color:#a44332;background:#fbe7e2}.empty-logs{color:var(--muted);text-align:center;padding:42px 12px;font-size:11px}.login-page{background:radial-gradient(circle at 50% 20%,#164d4b 0,#092a31 35%,#06191f 78%);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:#fff;border:1px solid #d7e5e6;width:min(420px,100%);padding:38px;box-shadow:0 24px 70px #0008}.login-brand{align-items:center;gap:12px;margin-bottom:38px;display:flex}.login-brand strong{color:var(--ink);letter-spacing:4px;font-size:20px;display:block}.login-brand small{color:#758d94;letter-spacing:1.4px;margin-top:3px;font-size:8px;display:block}.login-card h1{margin-bottom:10px;font-size:27px}.login-copy{color:var(--muted);margin:0 0 26px;font-size:12px;line-height:1.7}.login-card label{color:#526a71;margin-top:16px;font-size:10px;font-weight:700;display:block}.login-card input{border:1px solid var(--line);background:#f9fbfb;outline:none;width:100%;margin-top:7px;padding:12px}.login-card input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #00c2b21a}.login-card .primary-action{width:100%;margin-top:22px;padding:13px}.login-card .primary-action:disabled{cursor:wait;opacity:.65}.login-error{color:#9b3f30;background:#fff0ec;border:1px solid #efb5aa;margin-top:15px;padding:10px;font-size:10px}.login-loading{color:#72dfd5;letter-spacing:1px;font-size:13px}@media (width<=980px){.app-shell{grid-template-columns:72px 1fr}.sidebar{padding:24px 10px}.brand div:last-child,nav a,nav button{font-size:0}.brand{padding-left:8px}.brand-mark{min-width:35px}.sidebar nav a,.sidebar nav button{justify-content:center}.sidebar-foot div:last-child{display:none}.dashboard-grid{grid-template-columns:1fr}.status-strip{flex-wrap:wrap;gap:14px}.status-strip>div:not(.live-pill){padding-right:12px}.stop-button{margin-left:0}.service-card-grid{grid-template-columns:1fr}.session-summary{grid-template-columns:1fr 1fr}}@media (width<=680px){.app-shell{display:block}.sidebar{flex-direction:row;align-items:center;width:100%;height:auto;padding:10px 14px;position:static}.brand{padding:0}.sidebar nav{margin-left:auto;display:flex}.sidebar nav a{padding:10px}.sidebar-foot{display:none}.topbar{height:auto;padding:16px}.clock,.operator div{display:none}.status-strip{margin:12px 16px 0}.status-strip>div:not(.live-pill){display:none}.dashboard-grid{padding:12px 16px 24px}.sonar{height:330px}.metric-grid{grid-template-columns:1fr 1fr}.fan-angle-control{grid-template-columns:auto 1fr 38px}.fan-angle-control button{grid-column:1/-1}.section-view{padding:12px 16px 24px}.session-summary{grid-template-columns:1fr}.storage-overview{flex-direction:column;align-items:flex-start}.alert-history article{grid-template-columns:50px 1fr}.alert-history time{grid-column:2}}
