.login-page{min-height:100vh;background:#0b1120;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.login-bg-circle{position:absolute;border-radius:50%;pointer-events:none}.c1{width:600px;height:600px;background:radial-gradient(circle,rgba(26,115,232,.18) 0%,transparent 70%);top:-200px;left:-150px}.c2{width:400px;height:400px;background:radial-gradient(circle,rgba(99,102,241,.12) 0%,transparent 70%);bottom:-100px;right:200px}.c3{width:250px;height:250px;background:radial-gradient(circle,rgba(26,115,232,.1) 0%,transparent 70%);bottom:100px;left:300px}.login-container{display:flex;width:860px;min-height:520px;border-radius:20px;overflow:hidden;box-shadow:0 30px 80px #00000080;position:relative;z-index:1}.login-panel{width:340px;flex-shrink:0;background:linear-gradient(160deg,#203864,#14244a 60%,#0a1628);display:flex;align-items:center;justify-content:center;padding:48px 36px;position:relative;overflow:hidden}.login-panel:before{content:"";position:absolute;width:300px;height:300px;border-radius:50%;border:1px solid rgba(255,255,255,.08);top:-80px;right:-80px}.login-panel:after{content:"";position:absolute;width:200px;height:200px;border-radius:50%;border:1px solid rgba(255,255,255,.06);bottom:-60px;left:-60px}.panel-inner{position:relative;z-index:1;width:100%}.panel-logo{margin-bottom:20px}.panel-logo-img{width:140px;height:auto}.panel-company{font-size:26px;font-weight:700;color:#fff;margin:0 0 10px;letter-spacing:-.5px;word-break:keep-all;line-height:1.3}.panel-product{font-size:26px;color:#ffffffe6;margin:0;letter-spacing:-.5px;font-weight:700}.panel-divider{width:40px;height:2px;background:#ffffff4d;margin:24px 0;border-radius:2px}.panel-features{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.panel-features li{display:flex;align-items:center;gap:10px;font-size:13px;color:#ffffffbf}.feat-dot{width:6px;height:6px;border-radius:50%;background:#ffffff80;flex-shrink:0}.login-form-panel{flex:1;background:#fff;display:flex;flex-direction:column;justify-content:space-between}.login-form-inner{flex:1;display:flex;flex-direction:column;justify-content:center;padding:52px 48px 36px}.login-form-header{margin-bottom:36px}.login-form-header h2{font-size:24px;font-weight:700;color:#0f172a;margin:0 0 8px}.login-form-header p{font-size:13px;color:#94a3b8;margin:0}.login-form{display:flex;flex-direction:column;gap:20px}.login-field{display:flex;flex-direction:column;gap:7px}.login-field label{font-size:12px;font-weight:600;color:#475569;letter-spacing:.3px}.login-input-wrap{position:relative}.login-input-icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:#94a3b8;display:flex;align-items:center}.login-input-wrap input{width:100%;padding:11px 14px 11px 40px;font-size:14px;border:1.5px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s;color:#0f172a;background:#f8fafc;box-sizing:border-box}.login-input-wrap input:focus{border-color:#203864;background:#fff;box-shadow:0 0 0 3px #1a73e81f}.login-input-wrap input::placeholder{color:#cbd5e1}.login-error{display:flex;align-items:center;gap:7px;color:#dc2626;font-size:13px;background:#fef2f2;border:1px solid #fecaca;border-radius:7px;padding:9px 12px}.login-btn{width:100%;padding:13px;background:#203864;color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:background .15s,transform .1s;display:flex;align-items:center;justify-content:center;margin-top:4px;letter-spacing:.3px}.login-btn:hover:not(:disabled){background:#16294b}.login-btn:active:not(:disabled){transform:scale(.99)}.login-btn:disabled{opacity:.7;cursor:not-allowed}.login-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.login-form-footer{padding:16px 48px;font-size:11px;color:#cbd5e1;text-align:right;border-top:1px solid #f1f5f9}@media (max-width: 700px){.login-container{width:100%;min-height:100vh;flex-direction:column;border-radius:0}.login-panel{width:100%;padding:32px 28px}.panel-features{display:none}.login-form-inner{padding:36px 28px 24px}}.cd-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#0f172a8c;display:flex;align-items:center;justify-content:center;padding:20px;animation:cd-fade .12s ease}@keyframes cd-fade{0%{opacity:0}to{opacity:1}}.cd-modal{width:100%;max-width:380px;background:#fff;border-radius:4px;box-shadow:0 20px 50px #00000040;padding:22px 22px 18px;animation:cd-pop .14s ease}@keyframes cd-pop{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:none;opacity:1}}.cd-title{font-size:15px;font-weight:700;color:#17233a;margin-bottom:10px}.cd-title.danger{color:#c62828}.cd-msg{font-size:15px;line-height:1.65;color:#4d5a70;white-space:pre-line;margin-bottom:20px}.cd-actions{display:flex;justify-content:flex-end;gap:8px}.cd-btn{min-width:72px;padding:8px 16px;font-size:15px;font-weight:600;border-radius:4px;border:1px solid transparent;cursor:pointer;transition:filter .12s,background .12s}.cd-cancel{background:#f3f5f8;color:#4d5a70;border-color:#d8dde5}.cd-cancel:hover{background:#d8dde5}.cd-primary{background:#203864;color:#fff}.cd-primary:hover{filter:brightness(1.07)}.cd-danger{background:#c62828;color:#fff}.cd-danger:hover{filter:brightness(1.07)}.cd-modal.cd-severe{border:2px solid #c62828;background:#fdf3f3;box-shadow:0 0 0 4px #dc26262e,0 20px 50px #0000004d}.cd-modal.cd-severe .cd-title{display:flex;align-items:center;gap:8px;font-size:18px}.cd-severe-icon{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:#c62828;color:#fff;font-size:15px}.cd-modal.cd-severe .cd-msg{color:#c62828;font-weight:600}.cd-modal.cd-severe .cd-cancel{background:#fff}.cd-toasts{position:fixed;left:50%;bottom:28px;transform:translate(-50%);z-index:10000;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.cd-toast{display:inline-flex;align-items:center;gap:8px;max-width:520px;padding:11px 18px;border-radius:4px;background:#17233a;color:#fff;font-size:13px;line-height:1.5;white-space:pre-line;box-shadow:0 10px 30px #00000040;animation:cd-toast-in .18s ease,cd-toast-out .25s ease 2.35s forwards}.cd-toast-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#1e8e4e;color:#fff;font-size:12px;font-weight:800;flex-shrink:0}@keyframes cd-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes cd-toast-out{to{opacity:0;transform:translateY(6px)}}.em-btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;margin-right:18px;flex-shrink:0;border:none;border-radius:4px;background:#c8102e;color:#fff;font:inherit;font-size:15px;font-weight:800;cursor:pointer}.em-btn:hover{background:#c62828}@keyframes em-pulse{0%,to{box-shadow:0 0 #ffffffbf}50%{box-shadow:0 0 0 6px #fff0}}.em-btn-active{cursor:default;animation:em-pulse 1.2s infinite}.em-banner{display:flex;align-items:center;gap:14px;flex-wrap:wrap;flex-shrink:0;padding:10px 22px;background:#c8102e;color:#fff;font-size:15px}.em-banner strong{font-size:15px}.em-banner button{margin-left:auto;min-height:40px;padding:0 20px;border:2px solid #fff;border-radius:4px;background:#fff;color:#c8102e;font:inherit;font-size:15px;font-weight:800;cursor:pointer}.em-banner button:disabled{opacity:.6;cursor:default}.em-banner-clear{background:#1e8e4e}.em-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3000;background:#0f172a99;display:flex;align-items:flex-start;justify-content:center;padding:64px 24px;box-sizing:border-box;overflow:auto}.em-dialog{width:100%;max-width:760px;background:#fff;border-radius:4px;padding:24px;box-sizing:border-box;display:flex;flex-direction:column;gap:16px;box-shadow:0 20px 50px #00000059}.em-dialog-wide{max-width:1040px}.em-head{display:flex;align-items:center;gap:10px}.em-head h2{margin:0;font-size:18px}.em-step{font-size:13px;color:#4d5a70}.em-x{margin-left:auto;width:44px;height:44px;border:none;background:transparent;cursor:pointer;color:#4d5a70}.em-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.em-tile{min-height:120px;border:none;border-radius:4px;font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px}.em-tile:hover{filter:brightness(1.08)}.em-tile-name{font-size:26px;font-weight:900}.em-tile-hint{font-size:13px;opacity:.9}.em-note{margin:0;font-size:13px;color:#4d5a70}.em-center{text-align:center;font-size:15px;color:#17233a}.em-preview{background:#1f2933;border-radius:4px;padding:12px}.em-actions{display:flex;gap:10px;flex-wrap:wrap}.em-cancel{min-height:60px;padding:0 22px;border:1px solid #b9c1ce;border-radius:4px;background:#fff;color:#17233a;font:inherit;font-size:15px;font-weight:700;cursor:pointer}.em-go{flex:1 1 240px;min-height:60px;border:none;border-radius:4px;font:inherit;font-size:18px;font-weight:900;cursor:pointer}.em-go:disabled,.em-cancel:disabled{opacity:.6;cursor:default}@media (max-width: 768px){.em-btn{padding:0 12px;margin-right:10px}.em-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.layout{display:flex;flex-direction:column;height:100vh;overflow:hidden}.topbar{height:84px;flex-shrink:0;background:#203864;display:flex;align-items:center;justify-content:space-between;padding:0 22px 0 18px;border-bottom:1px solid rgba(255,255,255,.25)}.topbar-logo{min-width:0}.topbar-clock{text-align:right;color:#fff;flex-shrink:0}.clock-date{display:block;font-size:15px;color:#ffffffbf;letter-spacing:.3px}.clock-time{display:block;font-size:32px;font-weight:700;letter-spacing:1px;font-variant-numeric:tabular-nums;margin-top:1px}.layout-body{display:flex;flex:1;overflow:hidden}.sidebar{width:232px;background:#203864;display:flex;flex-direction:column;flex-shrink:0}.logo-text{display:block;font-size:13px;font-weight:400;color:#ffffffb3;letter-spacing:.3px;word-break:keep-all}.logo-sub{font-size:28px;font-weight:700;color:#fff;margin-top:3px;display:block;letter-spacing:-.5px;word-break:keep-all}.sidebar-nav{flex:1;padding:10px 0}.nav-item{display:flex;align-items:center;gap:12px;padding:15px 20px;color:#fffc;font-size:15px;transition:all .15s;border-left:3px solid transparent}.nav-item:hover{background:#ffffff26;color:#fff}.nav-item.active{background:#fff3;color:#fff;border-left-color:#fff;font-weight:600}.nav-icon{font-size:18px}.sidebar-user{padding:12px 18px;border-top:1px solid rgba(255,255,255,.2);font-size:12px;color:#ffffffb3;cursor:pointer;transition:background .15s;border-radius:4px;margin:0 6px}.sidebar-user:hover{background:#ffffff1a}.sidebar-user:hover .sidebar-pw-hint{opacity:1}.sidebar-username{display:block;font-weight:600;color:#fff;margin-bottom:2px}.sidebar-role{display:block;font-size:12px}.sidebar-pw-hint{display:block;font-size:12px;color:#ffffff73;margin-top:2px;opacity:0;transition:opacity .15s}.logout-btn{width:calc(100% - 24px);margin:10px 12px;padding:8px;background:#ffffff26;border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:4px;font-size:13px;transition:all .15s}.logout-btn:hover{background:#ffffff40}.main-content{flex:1;overflow-y:auto;background:var(--bg-primary);position:relative}.main-footer{position:fixed;bottom:12px;right:16px;font-size:12px;color:var(--text-secondary);opacity:.6;pointer-events:none}.hamburger-btn{display:none}@media (max-width: 768px){.hamburger-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin-right:12px;flex-shrink:0;background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:4px;font-size:18px;cursor:pointer}.topbar{padding:0 14px}.topbar-logo .logo-sub{font-size:18px}.clock-date{display:none}.clock-time{font-size:22px}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:300}.sidebar{position:fixed;top:0;left:0;height:100vh;z-index:400;transform:translate(-100%);transition:transform .25s ease;padding-top:10px}.sidebar.sidebar-open{transform:translate(0)}}.nav-icon{display:inline-flex;align-items:center;justify-content:center;width:20px}.nav-item.active{border-left-color:#7cc4ff;font-weight:700}.nav-item.active .nav-icon{color:#7cc4ff}.nav-group{padding:16px 20px 6px;font-size:12px;font-weight:600;color:#fff9}.sidebar-nav .nav-group:first-child{padding-top:8px}.screen-editor{padding:16px;-webkit-user-select:none;user-select:none}.se-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.se-hint{font-size:12px;color:var(--text-secondary)}.se-size{font-size:12px;color:var(--accent);font-weight:600;background:var(--accent-light);padding:3px 10px;border-radius:12px}.se-canvas-wrap{overflow:auto;background:#e2e8f0;border-radius:8px;padding:12px;display:flex;justify-content:center}.se-canvas{position:relative;background:#1e293b;border-radius:4px;overflow:hidden;box-shadow:0 4px 20px #00000059;flex-shrink:0;cursor:default}.se-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:36px 36px;pointer-events:none;z-index:0}.snap-line{position:absolute;pointer-events:none;z-index:50}.snap-x{top:0;bottom:0;width:1px;background:#ff3c3cd9;box-shadow:0 0 4px #ff3c3c99}.snap-y{left:0;right:0;height:1px;background:#ff3c3cd9;box-shadow:0 0 4px #ff3c3c99}.se-window{position:absolute;border:2px solid;border-radius:3px;z-index:10;display:flex;flex-direction:column;justify-content:space-between;padding:4px 5px;cursor:move;transition:box-shadow .1s;box-sizing:border-box}.se-window.selected{z-index:20;box-shadow:0 0 0 2px #fff,0 0 0 4px #fff6}.se-label{display:flex;align-items:center;gap:5px;pointer-events:none;overflow:hidden}.se-kind{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;background:#ffffff40;padding:1px 5px;border-radius:3px;white-space:nowrap;flex-shrink:0}.se-name{font-size:10px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.9}.se-info{font-size:9px;opacity:.75;text-align:right;pointer-events:none;font-family:monospace;letter-spacing:.2px}.se-del{position:absolute;top:2px;right:2px;width:15px;height:15px;background:#dc2626d9;color:#fff;border-radius:50%;font-size:8px;display:none;align-items:center;justify-content:center;padding:0;z-index:30;line-height:1;cursor:pointer}.se-window:hover .se-del{display:flex}.se-h{position:absolute;z-index:25}.se-h-ne,.se-h-nw,.se-h-se,.se-h-sw{width:9px;height:9px;background:#fff;border:2px solid var(--accent);border-radius:50%}.se-h-ne{top:-5px;right:-5px;cursor:ne-resize}.se-h-nw{top:-5px;left:-5px;cursor:nw-resize}.se-h-se{bottom:-5px;right:-5px;cursor:se-resize}.se-h-sw{bottom:-5px;left:-5px;cursor:sw-resize}.se-h-n,.se-h-s{left:8px;right:8px;height:7px;cursor:n-resize;background:transparent}.se-h-n{top:-3px;cursor:n-resize}.se-h-s{bottom:-3px;cursor:s-resize}.se-h-e,.se-h-w{top:8px;bottom:8px;width:7px;background:transparent}.se-h-e{right:-3px;cursor:e-resize}.se-h-w{left:-3px;cursor:w-resize}.se-h-n:hover,.se-h-s:hover,.se-h-e:hover,.se-h-w:hover{background:#ffffff26}.wle-root{display:flex;flex-direction:column;height:100%;background:var(--bg-primary);overflow:hidden}.wle-topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);background:#fff;flex-shrink:0;gap:12px;flex-wrap:wrap}.wle-region-select{padding:6px 10px;border:1px solid var(--border);border-radius:7px;font-size:13px}.wle-live-badge{font-size:12px;background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;padding:3px 10px;border-radius:10px}.wle-save-status{font-size:12px;color:var(--text-secondary);min-width:60px;text-align:right}.wle-save-status.saved{color:#16a34a;font-weight:600}.wle-save-status.saving{color:#2563eb}.wle-body{display:flex;flex:1;overflow:hidden}.wle-sidebar{width:220px;flex-shrink:0;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;background:#fff}.wle-sidebar-title{padding:10px 14px 6px;font-size:12px;font-weight:700;color:var(--text-secondary);letter-spacing:.5px}.wle-palette{display:flex;flex-direction:column;gap:4px;padding:0 10px 10px}.wle-palette-btn{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:7px;border:1px solid var(--border);background:#f8fafc;cursor:pointer;font-size:12px;transition:all .12s;text-align:left;position:relative}.wle-palette-btn:hover{background:var(--accent-light);border-color:var(--accent)}.wle-palette-btn.exists{background:#eff6ff;border-color:#93c5fd}.wle-palette-preview{font-size:11px;color:var(--text-secondary);background:#e2e8f0;padding:1px 5px;border-radius:4px;flex-shrink:0;max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wle-palette-label{font-weight:600;color:var(--text-primary);flex:1}.wle-exists-dot{font-size:8px;color:#3b82f6;position:absolute;right:8px}.wle-props{border-top:1px solid var(--border);padding:10px;flex:1}.wle-props-title{font-size:12px;font-weight:700;color:var(--text-secondary);display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.wle-del-btn{padding:2px 8px;border-radius:4px;border:1px solid #fca5a5;background:#fef2f2;color:#dc2626;font-size:11px;cursor:pointer}.wle-del-btn:hover{background:#fee2e2}.wle-prop-row{display:flex;align-items:center;gap:5px;margin-bottom:7px;flex-wrap:wrap}.wle-prop-row label{font-size:11px;font-weight:600;color:var(--text-secondary);flex-shrink:0}.wle-prop-row input[type=number]{width:48px;padding:3px 5px;border:1px solid var(--border);border-radius:5px;font-size:12px}.wle-prop-row input[type=color]{width:30px;height:24px;border:1px solid var(--border);border-radius:4px;padding:1px;cursor:pointer;background:none}.wle-prop-row input[type=checkbox]{cursor:pointer}.wle-prop-row select{padding:2px 5px;border:1px solid var(--border);border-radius:5px;font-size:11px}.wle-prop-row span{font-size:11px;color:var(--text-secondary)}.wle-canvas-wrap{flex:1;display:flex;flex-direction:column;align-items:center;padding:16px;overflow:auto;background:#1e293b}.wle-canvas-label{font-size:11px;color:#94a3b8;margin-bottom:10px;align-self:flex-start}.wle-canvas{position:relative;flex-shrink:0;border:2px solid #334155;border-radius:4px;overflow:hidden;cursor:default;-webkit-user-select:none;user-select:none}.wle-canvas-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#0f172a,#1e3a5f)}.wle-canvas-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#475569;font-size:13px;pointer-events:none}.wle-elem{position:absolute;display:flex;align-items:center;cursor:move;border:1px dashed transparent;border-radius:3px;padding:0 4px;box-sizing:border-box;overflow:hidden;white-space:nowrap;font-family:맑은 고딕,sans-serif;transition:border-color .1s}.wle-elem:hover{border-color:#ffffff4d}.wle-elem.selected{border-color:#60a5fa;box-shadow:0 0 0 1px #60a5fa}.win-panel{height:100%;display:flex;flex-direction:column;background:var(--bg-primary)}.win-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);background:#fff}.device-info{display:flex;flex-direction:column;gap:2px}.device-title{font-size:15px;font-weight:700}.device-meta{font-size:12px;color:var(--text-secondary)}.win-body{flex:1;display:flex;flex-direction:column;overflow:hidden}.win-tabs{display:flex;gap:6px;padding:10px 16px;border-bottom:1px solid var(--border);background:#fff;overflow-x:auto;flex-shrink:0}.win-tab{display:flex;align-items:center;gap:6px;padding:6px 14px;background:#f3f5f8;border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:13px;white-space:nowrap;transition:all .12s;color:var(--text-secondary)}.win-tab:hover{background:var(--bg-hover);border-color:var(--accent);color:var(--accent)}.win-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.win-kind-badge{font-size:12px;background:#0000001a;padding:1px 6px;border-radius:4px}.tab-del{background:none;color:inherit;opacity:.6;font-size:13px;padding:0 2px;line-height:1}.tab-del:hover{opacity:1}.sched-area{flex:1;display:flex;flex-direction:row;overflow:hidden}.sched-list-panel{width:260px;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0;background:#fff}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);font-size:13px;font-weight:600;position:sticky;top:0;background:#f7f8fa;z-index:1}.sched-item{padding:10px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s}.sched-item:hover{background:var(--bg-hover)}.sched-item.selected{background:var(--accent-light);border-left:3px solid var(--accent)}.sched-name{font-size:13px;font-weight:500;margin-bottom:3px}.sched-date{font-size:12px;color:var(--text-secondary);margin-bottom:5px}.week-badges{display:flex;gap:3px;margin-bottom:7px}.week-badge{font-size:12px;padding:1px 5px;border-radius:4px;background:#f3f5f8;color:var(--text-secondary);border:1px solid var(--border)}.week-badge.on{background:var(--accent);color:#fff;border-color:var(--accent)}.cont-panel{flex:1;overflow-y:auto;background:var(--bg-primary)}.cont-section{background:#fff;margin:12px;border-radius:4px;border:1px solid var(--border);overflow:hidden}.cont-item{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid var(--border);font-size:13px;transition:background .12s}.cont-item:last-child{border-bottom:none}.cont-item:hover{background:#f7f8fa}.cont-kind{font-size:15px}.cont-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cont-dur{font-size:12px;color:var(--text-secondary);white-space:nowrap}.cont-time{font-size:12px;color:#203864;background:none;border-radius:4px;white-space:nowrap;padding:1px 0}.sched-active-badge{display:inline-block;margin-left:6px;font-size:12px;font-weight:700;color:#1e8e4e;background:none;border-radius:4px;vertical-align:middle;padding:1px 0}.empty-msg{padding:20px;text-align:center;color:var(--text-secondary);font-size:12px}.win-sidebar{width:160px;flex-shrink:0;background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto}.win-sidebar-header{padding:10px 12px;font-size:12px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);background:#f7f8fa;flex-shrink:0}.win-sidebar-item{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-bottom:1px solid var(--border);transition:background .12s;border-left:3px solid transparent}.win-sidebar-item:hover{background:#f7f8fa}.win-sidebar-item.active{background:var(--accent-light);border-left-color:var(--accent)}.wsb-minimap{width:36px;height:28px;flex-shrink:0;background:#d8dde5;border-radius:4px;position:relative;overflow:hidden}.wsb-minimap-rect{position:absolute;left:var(--dx);top:var(--dy);width:var(--dw);height:var(--dh);border-radius:1px;opacity:.85}.wkd-bg-contents{background:#203864}.wkd-bg-weather{background:#1e8e4e}.wkd-bg-caption{background:#8a4b00}.wsb-info{display:flex;flex-direction:column;gap:2px;min-width:0}.wsb-name{font-size:12px;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wsb-kind{font-size:12px;font-weight:600}.wkd-text-contents{color:#203864}.wkd-text-weather{color:#1e8e4e}.wkd-text-caption{color:#8a4b00}.wsb-size{font-size:12px;color:var(--text-secondary)}.sched-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-secondary)}.sched-empty span{font-size:28px}.sched-empty p{font-size:13px;text-align:center}.win-list-section{margin:12px;background:#fff;border-radius:4px;border:1px solid var(--border);overflow:hidden}.win-list-item{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--border);cursor:pointer;font-size:13px;transition:background .12s}.win-list-item:last-child{border-bottom:none}.win-list-item:hover{background:var(--bg-hover)}.win-list-item.selected{background:var(--accent-light)}.win-kind-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.wkd-contents{background:#203864}.wkd-weather{background:#1e8e4e}.wkd-caption{background:#8a4b00}.win-list-name{font-weight:500;flex:0 0 auto}.win-list-meta{font-size:12px;color:var(--text-secondary)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:#fff;border-radius:4px;padding:28px;width:440px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000026}.form-group input[type=text],.form-group input[type=number],.form-group input[type=time],.form-group input[type=date],.form-group select,.form-group textarea{width:100%}.week-selector{display:flex;gap:5px}.week-btn{width:34px;height:34px;border-radius:50%;background:#f3f5f8;color:var(--text-secondary);border:1px solid var(--border);font-size:12px;font-weight:600;transition:all .12s}.week-btn.on{background:var(--accent);color:#fff;border-color:var(--accent)}.news-toggle-row{display:flex;align-items:center;gap:10px;padding:8px 14px;background:#f7f8fa;border-bottom:1px solid var(--border);flex-wrap:wrap}.news-toggle-label{font-size:13px;font-weight:600;color:var(--text-primary)}.news-toggle-btn{padding:4px 14px;border-radius:4px;border:none;font-size:12px;font-weight:700;cursor:pointer;transition:all .12s}.news-toggle-btn.news-on{background:#203864;color:#fff}.news-toggle-btn.news-off{background:#d8dde5;color:var(--text-secondary)}.news-toggle-btn.news-on:hover{background:#203864}.news-toggle-btn.news-off:hover{background:#b9c1ce;color:var(--text-primary)}.news-toggle-hint{font-size:12px;color:#203864;font-style:italic}.news-style-panel{background:#f7f8fa;border-bottom:1px solid var(--border);padding:10px 14px}.news-style-row2{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;margin-bottom:10px}.news-style-item2{display:flex;flex-direction:column;gap:4px}.news-style-item2 label{font-size:12px;font-weight:600;color:var(--text-secondary)}.news-style-item2 input[type=number]{padding:4px 6px;border:1px solid var(--border);border-radius:4px;font-size:12px}.news-style-item2 input[type=color]{width:32px;height:28px;border:1px solid var(--border);border-radius:4px;padding:2px;cursor:pointer;background:none}.news-style-preview{padding:6px 12px;border-radius:4px;font-family:맑은 고딕,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:15px}.weather-region-panel{width:280px;flex-shrink:0;border-right:1px solid var(--border);overflow-y:auto;background:#fff}.weather-preview-card{background:linear-gradient(135deg,#17233a,#1e3a5f);border-radius:4px;padding:16px;color:#fff;display:flex;flex-direction:column;gap:6px}.wp-city{font-size:13px;font-weight:700;opacity:.8;letter-spacing:1px}.wp-temp{font-size:22px;font-weight:800}.wp-dust{display:flex;flex-direction:column;gap:3px;font-size:12px;opacity:.85}.wp-time{font-size:12px;opacity:.5;margin-top:4px}.device-page{display:flex;height:100vh;overflow:hidden;background:var(--bg-primary)}.group-sidebar{width:220px;flex-shrink:0;background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:14px 14px 10px;border-bottom:1px solid var(--border);font-size:13px;font-weight:700;color:var(--text-primary)}.inline-form{display:flex;gap:5px;padding:8px 10px;border-bottom:1px solid var(--border);background:#f7f8fa}.inline-form input{flex:1;min-width:0}.group-list{flex:1;overflow-y:auto;padding:6px 0}.sidebar-empty{padding:24px 16px;text-align:center;font-size:12px;color:var(--text-secondary)}.group-item{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;border-radius:4px;margin:2px 6px;transition:background .12s;position:relative}.group-item:hover{background:#f3f5f8}.group-item.active{background:var(--accent-light)}.group-item.active .group-name{color:var(--accent);font-weight:700}.group-icon{font-size:15px;flex-shrink:0}.group-name{flex:1;font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-badge{background:var(--accent-light);color:var(--accent);font-size:12px;font-weight:700;padding:2px 7px;border-radius:4px;flex-shrink:0}.group-del-btn{display:none;background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:12px;padding:2px 4px;border-radius:4px;line-height:1}.group-del-btn:hover{background:#fdf3f3;color:#c62828}.group-item:hover .group-del-btn{display:block}.device-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.main-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-secondary);gap:12px}.main-empty span{font-size:52px}.main-empty p{font-size:15px}.view-topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;background:#fff;border-bottom:1px solid var(--border);flex-shrink:0;gap:12px;min-height:56px}.topbar-left{display:flex;align-items:center;gap:10px;min-width:0}.back-btn{white-space:nowrap;flex-shrink:0}.topbar-title{font-size:15px;font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-count{font-size:12px;color:var(--text-secondary);white-space:nowrap}.topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-btn-group{display:flex;gap:6px;padding:4px 10px;background:#f7f8fa;border:1px solid var(--border);border-radius:4px}.status-pill{font-size:12px;font-weight:600;padding:3px 10px;border-radius:4px;background:#f3f5f8;color:var(--text-secondary);white-space:nowrap}.status-pill.online{background:#e7f4ec;color:#1e8e4e}.status-pill.offline{background:#f3f5f8;color:#66728a}.group-view{flex:1;display:flex;flex-direction:column;overflow:hidden}.device-grid{flex:1;overflow-y:auto;padding:24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,220px));gap:20px;align-content:start;align-items:start}.device-card{background:#fff;border:1px solid var(--border);border-radius:4px;padding:14px 12px 12px;cursor:pointer;transition:box-shadow .15s,transform .15s;display:flex;flex-direction:column;align-items:center;position:relative}.device-card:hover{transform:translateY(-3px)}@keyframes dv-pulse{0%,to{background:#1e8e4e;box-shadow:inset 0 0 12px #4ade804d}50%{background:#1e8e4e;box-shadow:inset 0 0 24px #4ade8099}}@keyframes dv-win-pulse{0%,to{opacity:.88;filter:brightness(1.05)}50%{opacity:1;filter:brightness(1.35)}}.dv-screen{width:100%;height:100%;border-radius:4px}.dv-offline{background:#0a0f1a}.dv-online{background:#1e8e4e;animation:dv-pulse 2s ease-in-out infinite;box-shadow:0 0 10px #3b82f659,inset 0 0 8px #3b82f626}.dv-did-frame{width:100%;background:#17233a;border-radius:4px;padding:6px;box-shadow:0 2px 8px #0006;position:relative}.dv-did-frame .dv-screen{aspect-ratio:16 / 9}.dv-did-frame.dv-did-vertical{width:52%}.dv-did-frame.dv-did-vertical .dv-screen{aspect-ratio:9 / 16}.dv-kiosk-outer{display:flex;flex-direction:column;align-items:center;width:100%}.dv-kiosk-frame{width:48%;background:#17233a;border-radius:4px 4px 0 0;padding:5px;box-shadow:0 2px 8px #0006}.dv-kiosk-frame .dv-screen{aspect-ratio:9 / 16}.dv-kiosk-pole{width:48%;height:22px;background:linear-gradient(to bottom,#17233a,#17233a);border-radius:0 0 4px 4px}.dv-kiosk-base{width:56%;height:7px;background:#4d5a70;border-radius:4px;box-shadow:0 2px 4px #0000004d}.dv-ev-frame{width:82%;background:#17233a;border-radius:4px;padding:10px;box-shadow:0 2px 8px #0006;border:2px solid #17233a}.dv-ev-frame .dv-screen{aspect-ratio:4 / 3}.dv-mv-frame{width:100%;background:#17233a;border-radius:4px;padding:7px;box-shadow:0 2px 8px #0006}.dv-mv-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;aspect-ratio:16 / 9}.dv-mv-cell{border-radius:1px}.dv-mv-cell.dv-offline{background:#0a0f1a}.dv-mv-cell.dv-online{background:#1e8e4e;animation:dv-pulse 2s ease-in-out infinite}.card-info{width:100%;text-align:center;margin-top:10px}.card-name{font-size:13px;font-weight:700;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px}.card-type-badge{display:inline-block;font-size:12px;font-weight:700;color:var(--accent);background:var(--accent-light);padding:1px 8px;border-radius:4px;margin-bottom:3px}.card-meta{font-size:12px;color:var(--text-secondary);line-height:1.5}.card-group{font-size:12px;color:#7cc4ff;margin-bottom:2px}.card-id{font-size:12px;color:#66728a;margin-top:2px}.card-actions{position:absolute;left:0;right:0;bottom:0;z-index:5;display:flex;gap:4px;flex-wrap:wrap;justify-content:center;padding:10px 8px;background:#0f172ab8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border-radius:0 0 11px 11px;opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .15s,transform .15s,visibility .15s}.device-card:hover .card-actions,.device-card:focus-within .card-actions{opacity:1;visibility:visible;transform:translateY(0)}.card-cache-prog{position:absolute;right:8px;bottom:8px;display:flex;align-items:center;gap:3px;font-size:12px;font-weight:700;color:#b26a00;cursor:default}.card-cache-spin{width:12px;height:12px;border:2px solid rgba(245,158,11,.25);border-top-color:#b26a00;border-radius:50%;display:inline-block;animation:cache-rotate .9s linear infinite}@keyframes cache-rotate{to{transform:rotate(360deg)}}.card-cache-dot{position:absolute;right:12px;bottom:12px;width:9px;height:9px;border-radius:50%;background:#1e8e4e;box-shadow:0 0 5px #22c55ecc;cursor:default}.device-view{flex:1;display:flex;flex-direction:column;overflow:hidden}.device-view-body{flex:1;overflow:hidden}.btn-power-on{background:#1e8e4e;color:#fff;border:none}.btn-power-on:hover:not(:disabled){background:#1e8e4e}.btn-power-off{background:#c62828;color:#fff;border:none}.btn-power-off:hover:not(:disabled){background:#c62828}.btn-reboot{background:#8a4b00;color:#fff;border:none}.btn-reboot:hover:not(:disabled){background:#8a4b00}.btn-copy{background:#203864;color:#fff;border:none}.btn-copy:hover{background:#203864}.btn-display-start{background:#1e8e4e;color:#fff;border:none}.btn-display-start:hover:not(:disabled){background:#1e8e4e}.btn-player-restart{background:#203864;color:#fff;border:none}.btn-player-restart:hover:not(:disabled){background:#203864}.btn-display-start:disabled,.btn-player-restart:disabled{opacity:.5;cursor:not-allowed}.btn-apply{background:#203864;color:#fff;border:none}.btn-apply:hover{background:#203864}.btn-power-on:disabled,.btn-power-off:disabled,.btn-reboot:disabled{opacity:.5;cursor:not-allowed}.btn-xs{padding:3px 8px;font-size:12px;border-radius:4px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border:1px solid var(--border);border-radius:4px;padding:28px;width:480px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-md)}.modal h3{margin-bottom:20px;font-size:15px;padding-bottom:12px;border-bottom:1px solid var(--border)}.form-group input[type=text],.form-group input[type=number],.form-group input[type=time],.form-group select{width:100%}.row-inputs{display:flex;align-items:center;gap:8px}.device-card.unapproved{opacity:.6;cursor:default}.device-card.unapproved:hover{transform:none;box-shadow:none}.unapproved-badge{position:absolute;top:6px;left:6px;background:#c62828;color:#fff;font-size:12px;font-weight:700;padding:2px 7px;border-radius:4px;pointer-events:none;z-index:10}.btn-preview{background:#203864;color:#fff;border:none}.btn-preview:hover:not(:disabled){background:#203864}.btn-preview:disabled{opacity:.6;cursor:default}.snapshot-modal{width:800px!important;max-width:92vw}.snapshot-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}.snapshot-modal-header h3{margin-bottom:0;border:none;padding:0;font-size:15px}.snapshot-img{width:100%;height:auto;max-height:calc(90vh - 140px);object-fit:contain;background:#111;border-radius:4px;border:1px solid var(--border);display:block}.snapshot-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px;color:var(--text-secondary);font-size:15px;text-align:center}.snapshot-error span{font-size:40px}.btn-update{background:#203864;color:#fff;border:none;font-weight:600}.btn-update:hover:not(:disabled){background:#203864}.btn-update:disabled{opacity:.6;cursor:default}.update-popup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.update-popup{background:#fff;border-radius:4px;padding:40px 48px;text-align:center;box-shadow:0 20px 60px #00000040;display:flex;flex-direction:column;align-items:center;gap:14px;min-width:320px;animation:popIn .25s ease}@keyframes popIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.update-spinner{width:48px;height:48px;border:4px solid #d8dde5;border-top-color:#203864;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.update-check{width:52px;height:52px;background:#1e8e4e;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:26px;font-weight:700;animation:popIn .3s ease}.update-popup-title{font-size:18px;font-weight:700;color:var(--text-primary)}.update-popup-msg{font-size:13px;color:var(--text-secondary);line-height:1.6}.update-error-icon{width:52px;height:52px;background:#c62828;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:22px;font-weight:700;animation:popIn .3s ease}.update-spinner-retry{border-top-color:#b26a00}.group-edit-btn{display:none;background:none;border:none;cursor:pointer;font-size:12px;padding:2px 4px;border-radius:4px}.group-edit-btn:hover{background:#e9edf5}.group-item:hover .group-edit-btn{display:block}.group-rename-input{flex:1;min-width:0;font-size:13px;padding:2px 6px;border:1px solid #203864;border-radius:4px;outline:none}.view-toggle{padding:3px 6px}.device-list-wrap{flex:1;overflow:auto;padding:16px 20px}.device-list{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--border);border-radius:4px;overflow:hidden;font-size:13px}.device-list th{text-align:left;font-size:12px;font-weight:700;color:var(--text-secondary);background:#f7f8fa;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.device-list td{padding:10px 12px;border-bottom:1px solid #f3f5f8;vertical-align:middle}.device-list tr:last-child td{border-bottom:none}.device-row{cursor:pointer;transition:background .1s}.device-row:hover td{background:#f3f5f8}.device-row.unapproved{cursor:default}.device-row.unapproved td{background:#fbf3e4}.dl-name{font-weight:700;white-space:nowrap}.dl-dim{color:var(--text-secondary);white-space:nowrap}.dl-status{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:13px}.dl-status .dl-dot{width:10px;height:10px;border-radius:50%;background:#b9c1ce}.dl-status.on{color:#1e8e4e}.dl-status.on .dl-dot{background:#1e8e4e;box-shadow:0 0 0 3px #b5dcc4}.dl-status.off{color:#4d5a70}.dl-cache{display:inline-flex;align-items:center;gap:5px;font-size:12px;white-space:nowrap}.dl-cache.done{color:#1e8e4e;font-weight:600}.dl-cache.prog{color:#8a4b00;font-weight:600}.dl-approved{font-size:12px;color:#1e8e4e}.dl-unapproved{font-size:12px;font-weight:700;color:#8a4b00;background:#fbf3e4;padding:2px 8px;border-radius:4px}.dl-actions{white-space:nowrap}.dl-actions .btn{margin-right:4px}.device-list th,.device-list td{text-align:center}.dl-no{color:#66728a;font-size:12px;width:44px}.dl-check{width:36px;cursor:pointer}.dl-check input{width:16px;height:16px;cursor:pointer;vertical-align:middle}.dl-check input:disabled{cursor:not-allowed}.selected-count{font-size:13px;font-weight:700;color:var(--accent, #203864);padding:0 4px;white-space:nowrap}.power-btn-group.has-selection{display:flex;align-items:center;gap:6px;box-shadow:0 0 0 2px #7cc4ff}.sel-clear{padding:2px 8px}.dl-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.dl-chips{display:flex;flex-wrap:wrap;gap:6px}.dl-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:4px;border:1px solid var(--border);background:#fff;color:#4d5a70;font-size:13px;font-weight:600;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.dl-chip b{font-weight:800;color:#17233a}.dl-chip:hover{background:#f3f5f8}.dl-chip-dot{width:8px;height:8px;border-radius:50%;background:#b9c1ce}.dl-chip.chip-online .dl-chip-dot{background:#1e8e4e}.dl-chip.chip-offline .dl-chip-dot{background:#c62828}.dl-chip.chip-sched .dl-chip-dot{background:#66728a}.dl-chip.chip-caching .dl-chip-dot,.dl-chip.chip-unapproved .dl-chip-dot{background:#b26a00}.dl-chip.chip-offline.has{border-color:#e0a8a8;background:#fdf3f3;color:#c62828}.dl-chip.chip-offline.has b{color:#c62828}.dl-chip.active{background:#203864;border-color:#203864;color:#fff}.dl-chip.active b{color:#fff}.dl-chip.chip-offline.active{background:#c62828;border-color:#c62828;color:#fff}.dl-chip.chip-offline.active b{color:#fff}.dl-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.dl-sortable:hover{color:#17233a;background:#f3f5f8}.dl-sort-ind{margin-left:4px;font-size:12px;color:#b9c1ce}.dl-sortable.sorted,.dl-sortable.sorted .dl-sort-ind{color:#203864}.device-row td:first-child{box-shadow:inset 4px 0 0 var(--dl-bar, transparent)}.device-row.st-online{--dl-bar: #1e8e4e}.device-row.st-offline{--dl-bar: #c62828}.device-row.st-sched{--dl-bar: #66728a}.device-row.st-unapproved{--dl-bar: #b26a00;cursor:default}.device-row.st-unapproved td{background:#fbf3e4}.device-row.st-offline td,.device-row.st-offline:hover td{background:#fdf3f3}.device-row.checked td{background:#e9edf5}.dl-sub{font-size:12px;color:#66728a;font-weight:400;margin-top:2px;white-space:nowrap}.dl-sub-inline{display:block;font-size:12px;color:#66728a}.dl-status.bad{color:#c62828;font-weight:700}.dl-status.bad .dl-dot{background:#c62828;box-shadow:0 0 0 3px #e0a8a8;animation:dl-blink 1.6s ease-in-out infinite}.dl-status.sched{color:#4d5a70}.dl-status.sched .dl-dot{background:#66728a}@keyframes dl-blink{50%{opacity:.35}}.dl-res{display:inline-flex;align-items:center;gap:7px}.dl-orient{display:inline-block;border:1.5px solid #66728a;border-radius:4px}.dl-orient.h{width:16px;height:10px}.dl-orient.v{width:10px;height:16px;border-color:#203864}.dl-bar{display:inline-block;width:56px;height:6px;border-radius:999px;background:#e3c88f;overflow:hidden}.dl-bar>span{display:block;height:100%;background:#b26a00;border-radius:999px;transition:width .4s}.dl-power{font-size:13px;color:#17233a;font-variant-numeric:tabular-nums}.dl-actions .btn{opacity:.45;transition:opacity .12s}.device-row:hover .dl-actions .btn,.dl-actions:focus-within .btn{opacity:1}.dl-empty-row td{padding:28px 12px;color:#4d5a70;background:#fff;cursor:default}.device-list th{padding:10px 8px}.device-list td{padding:9px 8px}.dl-actions .btn{margin-right:3px;padding-left:8px;padding-right:8px}.dl-actions .btn:last-child{margin-right:0}.dl-unapproved,.dl-approved{white-space:nowrap}.device-list td.dl-name,.device-list td.dl-group{white-space:normal;word-break:keep-all}.device-list td.dl-name>div:first-child{white-space:normal}.dl-actions{white-space:normal;line-height:2}.dl-act-box{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;min-width:150px;line-height:normal}.dl-act-box .btn{margin:0;white-space:nowrap}.card-actions .btn-danger{background:#fdf3f3;color:#c62828;border-color:#e0a8a8}.card-actions .btn-danger:hover{background:#c62828;color:#fff;border-color:#c62828}.dl-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dc-tools{display:flex;align-items:center;gap:10px}.dc-selall{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#4d5a70;cursor:pointer;white-space:nowrap}.dc-selall input{width:15px;height:15px;cursor:pointer}.dc-sort{padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px;background:#fff;color:#17233a;cursor:pointer}.dc-empty{padding:40px 12px;text-align:center;color:#4d5a70;background:#fff;border:1px solid var(--border);border-radius:4px}.device-list-wrap .device-grid{padding:6px 2px 8px;overflow:visible}.device-card:before{content:"";position:absolute;left:0;right:0;top:0;height:4px;border-radius:4px 4px 0 0;background:var(--dc-bar, transparent)}.device-card.st-online{--dc-bar: #1e8e4e}.device-card.st-offline{--dc-bar: #c62828;background:#fdf3f3;border-color:#e0a8a8}.device-card.st-sched{--dc-bar: #66728a}.device-card.st-unapproved{--dc-bar: #b26a00}.device-card.checked{border-color:#203864;box-shadow:0 0 0 2px #7cc4ff;background:#e9edf5}.card-ip{font-size:12px;color:#66728a;margin:-2px 0 4px}.card-off{font-size:12px;color:#4d5a70;margin-top:2px;font-variant-numeric:tabular-nums}.dc-check{position:absolute;top:8px;left:8px;z-index:6;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;background:#ffffffeb;box-shadow:0 1px 3px #00000040;cursor:pointer;opacity:0;transition:opacity .12s}.dc-check input{width:15px;height:15px;cursor:pointer;margin:0}.device-card:hover .dc-check,.dc-check.on,.device-grid.selecting .dc-check,.dc-check:focus-within{opacity:1}.device-page{height:100%}.device-list-wrap{padding:0 20px 44px}.dl-toolbar{position:sticky;top:0;z-index:4;background:var(--bg-primary);margin-bottom:0;padding:16px 0 12px}.device-list{overflow:visible}.device-list thead th{position:sticky;top:var(--dl-tb-h, 60px);z-index:3}.device-list thead th:first-child{border-top-left-radius:4px}.device-list thead th:last-child{border-top-right-radius:4px}.device-list tbody tr:last-child td:first-child{border-bottom-left-radius:4px}.device-list tbody tr:last-child td:last-child{border-bottom-right-radius:4px}.device-row.st-online{--dl-bar: transparent}.device-card.st-online{--dc-bar: transparent}.dl-act-box .btn,.card-actions .btn{background:#fff;color:#17233a;border:1px solid #b9c1ce}.dl-act-box .btn:hover:not(:disabled),.card-actions .btn:hover:not(:disabled){background:#f3f5f8;border-color:#66728a;color:#17233a}.dl-act-box .btn-danger,.card-actions .btn-danger{background:#fff;color:#c62828;border-color:#e0a8a8}.dl-act-box .btn-danger:hover:not(:disabled),.card-actions .btn-danger:hover:not(:disabled){background:#c62828;color:#fff;border-color:#c62828}.dl-cache.done{font-size:15px;font-weight:800}.device-grid{align-items:stretch}.dv-box{width:100%;height:132px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dv-kiosk-frame,.dv-kiosk-pole{width:32%}.dv-kiosk-base{width:40%}.dv-no-layout{font-size:12px;color:#ffffff8c;letter-spacing:.02em;white-space:nowrap}.sent-badge{display:inline-block;margin-top:3px;padding:1px 8px;border-radius:4px;background:#e9edf5;color:#203864;font-size:12px;font-weight:700;white-space:nowrap;animation:sent-in .2s ease}.dc-sent{position:absolute;top:10px;right:10px;z-index:6;margin:0}@keyframes sent-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}.group-icon{display:inline-flex;align-items:center;color:#4d5a70}.group-item.active .group-icon{color:inherit}.topbar-title{display:inline-flex;align-items:center;gap:7px}.topbar-title-icon{color:#4d5a70}.main-empty-icon{color:#b9c1ce;display:inline-flex}.group-view{padding-bottom:30px}.device-list-wrap{padding-bottom:12px}.group-icon{color:#8a4b00;flex-shrink:0}.group-icon.icon-all,.group-item.active .group-icon.icon-all{color:#203864}.group-item.active .group-icon{color:#8a4b00}.dv-box{position:relative}.sched-flag{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;max-width:92%;padding:4px 10px;border-radius:4px;background:#fffffff0;color:#c62828;font-size:12px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:auto}.dv-box.has-flag .dv-no-layout{display:none}.sched-flag-list{margin-top:2px;font-size:12px;font-weight:700;color:#c62828;white-space:nowrap}.sched-flag{white-space:normal;text-align:center;border-radius:4px;line-height:1.35;width:max-content;max-width:88%}.sched-flag-sub{display:block;font-size:12px;font-weight:700}.media-page{padding:24px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-header h2{font-size:22px;font-weight:700}.upload-area{display:flex;align-items:center;gap:12px}.progress-bar{width:200px;height:20px;background:#f3f5f8;border-radius:4px;overflow:hidden;position:relative;border:1px solid var(--border)}.progress-fill{height:100%;background:var(--accent);transition:width .2s}.progress-bar span{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--text-primary);font-weight:600}.media-expire-banner{background:none;border:1px solid #e3c88f;border-radius:4px;padding:12px 16px;margin-bottom:16px;font-size:13px;color:#8a4b00;line-height:1.7}.media-expire-banner ul{margin:6px 0 0 4px;list-style:none;padding:0}.media-expire-banner li{display:flex;align-items:center;gap:8px}.media-expire-dday{background:#c62828;color:#fff;font-size:12px;font-weight:700;border-radius:4px;padding:1px 8px}.media-expire-chip{background:none;color:#c62828;font-size:12px;font-weight:700;border-radius:4px;margin-left:6px;padding:1px 0}.media-tabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:20px}.media-tab{padding:10px 20px;font-size:15px;font-weight:600;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;color:var(--text-secondary);display:flex;align-items:center;gap:8px;transition:color .15s}.media-tab:hover{color:var(--text-primary)}.media-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-count{background:var(--accent-light);color:var(--accent);font-size:12px;font-weight:700;padding:1px 7px;border-radius:4px}.media-grid{display:flex;flex-wrap:wrap;gap:12px}.media-card{width:216px;background:#fff;border:1px solid var(--border);border-radius:4px;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .15s}.media-thumb{position:relative;aspect-ratio:16 / 9;display:flex;align-items:center;justify-content:center;background:#1f2933;font-size:36px;overflow:hidden}.image-thumb img,.video-thumb video{width:100%;height:100%;object-fit:contain;display:block}.media-len{position:absolute;right:6px;bottom:6px;background:#000000b8;color:#fff;padding:1px 7px;font-size:12px;font-weight:600;border-radius:4px}.media-usage{font-size:12px;color:var(--text-secondary);line-height:1.45}.media-usage.unused{color:#8a4b00;font-weight:600}.media-card.unused{border-color:var(--border)}.media-info{padding:8px 10px;flex:1;display:flex;flex-direction:column;gap:3px}.media-name{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.media-size{font-size:12px;color:var(--text-secondary)}.media-card-actions{display:flex;gap:6px;margin:0 8px 8px}.media-card-actions .btn{flex:1}.empty-msg{color:var(--text-secondary);font-size:13px;padding:20px}.log-page{padding:24px;height:100vh;display:flex;flex-direction:column}.page-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.page-header h2{font-size:22px;font-weight:700;margin:0 0 4px}.log-time{color:var(--text-secondary);font-size:13px;white-space:nowrap;font-variant-numeric:tabular-nums;width:64px}.log-type{display:inline-block;min-width:38px;text-align:center;padding:2px 6px;border-radius:4px;font-size:12px;font-weight:700;white-space:nowrap;border:1px solid transparent}.log-type-plain{color:var(--text-secondary);font-weight:500}.log-type-warning{color:#8a4b00;background:#e3c88f;border-color:#e0b100}.log-type-error{color:#fff;background:#c62828;border-color:#c62828}.log-sender{font-weight:600}.log-empty{text-align:center;padding:40px;color:var(--text-secondary)}.log-row-warning td{background:#fbf3e4}.log-row-error td{background:#fdf3f3}.log-table tr.log-row-warning:hover td{background:#fbf3e4}.log-table tr.log-row-error:hover td{background:#fdf3f3}.log-day th{position:static;background:#fff;padding:14px 14px 6px;font-size:13px;font-weight:700;color:var(--text-primary);border-bottom:1px solid var(--border)}.log-tools{display:flex;gap:8px;align-items:center}.log-seg{display:flex;gap:4px}.log-seg button{min-height:30px;padding:0 12px;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--text-primary);font-size:13px;cursor:pointer}.log-seg button.on{background:#203864;border-color:#203864;color:#fff;font-weight:700}.log-type-emergency{color:#fff;background:#c62828;border-color:#c62828}.log-type-emergency-clear{color:#c62828;background:#fff;border-color:#c62828}.log-type-powercut{color:#fff;background:#17233a;border-color:#17233a}.log-type-netcut{color:#17233a;background:#fff;border-color:#17233a}.log-row-emergency td,.log-table tr.log-row-emergency:hover td{background:#fdf3f3}.log-row-emergency td:first-child{box-shadow:inset 4px 0 #c62828}.log-row-emergency-clear td,.log-table tr.log-row-emergency-clear:hover td{background:#fff}.log-row-powercut td,.log-table tr.log-row-powercut:hover td{background:#f3f5f8}.log-row-powercut td:first-child{box-shadow:inset 4px 0 #17233a}.account-page{padding:24px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.acc-tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:2px solid var(--border)}.acc-tab{padding:8px 18px;font-size:13px;font-weight:600;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;color:var(--text-secondary);display:flex;align-items:center;gap:6px;transition:color .12s}.acc-tab:hover{color:var(--text-primary)}.acc-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.trash-badge{background:#c62828;color:#fff;font-size:12px;font-weight:700;padding:1px 6px;border-radius:4px}.account-table-wrap{background:#fff;border:1px solid var(--border);border-radius:4px;overflow:hidden}.trash-notice{padding:8px 16px;font-size:12px;color:#8a4b00;background:none;border-bottom:1px solid #e3c88f}.account-table{width:100%;border-collapse:collapse;font-size:15px}.account-table th{background:#f7f8fa;padding:11px 16px;text-align:left;border-bottom:2px solid var(--border);font-size:12px;font-weight:600;color:var(--text-secondary)}.account-table td{padding:10px 16px;border-bottom:1px solid var(--border);vertical-align:middle}.account-table tr:last-child td{border-bottom:none}.account-table tr:hover td{background:#f7f8fa}.row-suspended td{opacity:.6}.row-suspended .td-username{text-decoration:line-through;color:var(--text-secondary)}.row-trash td{color:var(--text-secondary)}.td-empty{text-align:center;padding:32px 24px!important;color:var(--text-secondary);font-size:13px}.role-badge{padding:3px 10px;border-radius:4px;font-size:12px;font-weight:600}.status-badge{padding:3px 10px;border-radius:4px;font-size:12px;font-weight:600}.status-badge.active{background:none;color:#1e8e4e;padding-left:0;padding-right:0}.status-badge.suspended{background:none;color:#c62828;padding-left:0;padding-right:0}.days-badge{font-size:12px;font-weight:700;color:#4d5a70}.days-badge.urgent{color:#c62828}.row-actions{display:flex;gap:6px}.btn-edit{background:#f3f5f8;color:var(--text-primary);border:1px solid var(--border)}.btn-edit:hover{background:#d8dde5}.btn-suspend{background:#fbf3e4;color:#8a4b00;border:1px solid #e3c88f}.btn-suspend:hover{background:#e3c88f}.btn-unsuspend{background:#e7f4ec;color:#1e8e4e;border:1px solid #b5dcc4}.btn-unsuspend:hover{background:#b5dcc4}.btn-restore{background:var(--accent-light);color:var(--accent);border:1px solid #b9c1ce}.btn-restore:hover{background:#b9c1ce}.modal{background:#fff;border-radius:4px;padding:28px;width:400px;box-shadow:0 20px 60px #00000026}.modal h3{margin-bottom:20px;font-size:15px;font-weight:700;padding-bottom:12px;border-bottom:1px solid var(--border)}.form-group input,.form-group select{width:100%}.expires-date{font-size:13px;color:var(--text-primary)}.expires-none{font-size:13px;color:var(--text-secondary)}.expires-over{font-size:13px;color:#c62828;font-weight:600}.ops-print{display:none}@media print{@page{size:A4;margin:16mm 14mm}body.ops-printing{background:#fff!important}body.ops-printing>*:not(.ops-print){display:none!important}body.ops-printing>.ops-print{display:block;position:relative;color:#000;font-size:10.5pt;line-height:1.5}.ops-print h1{font-size:16pt;margin:0 0 4pt}.ops-print h2{font-size:12pt;margin:14pt 0 5pt;border-bottom:1pt solid #000;padding-bottom:2pt}.ops-print p{margin:0}.ops-print .op-meta{margin:0 0 6pt}.ops-print table{width:100%;border-collapse:collapse;margin-top:4pt}.ops-print th,.ops-print td{border:.5pt solid #555;padding:3pt 5pt;text-align:left;vertical-align:top;font-size:9.5pt}.ops-print th{background:#00000012;-webkit-print-color-adjust:exact;print-color-adjust:exact}.ops-print td.num{text-align:right;white-space:nowrap;font-weight:700}.ops-print td.nowrap{white-space:nowrap}.ops-print tr{break-inside:avoid}.ops-print ul{margin:4pt 0 0 14pt;padding:0}.ops-print .op-note{font-size:9pt;margin-top:4pt}.ops-print .op-watermark{position:fixed;top:50%;left:50%;width:130mm;height:auto;transform:translate(-50%,-50%);opacity:.12;pointer-events:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}}.org-page{padding:24px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.org-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.org-card{background:#fff;border:1px solid var(--border);border-radius:4px;padding:18px}.org-card-btns{display:flex;gap:6px;flex:none}.org-report-modal{width:360px}.org-report-org{font-size:15px;font-weight:700;margin:0 0 14px}.org-report-msg{font-size:13px;color:var(--text-secondary);margin:0}.org-report-modal select{width:100%;height:34px;padding:0 8px;font-size:13px}.org-card-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:12px}.org-name{display:block;font-size:15px;font-weight:700;margin-bottom:3px}.org-folder{display:block;font-size:12px;color:var(--text-secondary)}.org-accounts{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;align-items:center}.org-label{font-size:12px;font-weight:600;color:var(--text-secondary)}.org-account-badge{font-size:12px;padding:2px 8px;border-radius:4px;border:1px solid var(--border)}.org-account-badge.admin{background:var(--accent-light);color:var(--accent);border-color:#b9c1ce}.org-account-badge.user{background:#f3f5f8;color:var(--text-secondary)}.org-meta{font-size:12px;color:var(--text-secondary)}.org-empty{grid-column:1/-1;text-align:center;padding:48px;color:var(--text-secondary);background:#fff;border-radius:4px;border:1px dashed var(--border)}.modal{background:#fff;border-radius:4px;padding:28px;width:460px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000026}.modal h3{margin-bottom:8px;font-size:15px;font-weight:700;padding-bottom:12px;border-bottom:1px solid var(--border)}.form-group label{font-size:12px;font-weight:600;color:var(--text-secondary)}.form-group input{width:100%}.org-account-badge.suspended{opacity:.5;text-decoration:line-through}.org-dday{display:inline-block;margin-left:5px;background:none;color:#8a4b00;font-size:12px;font-weight:700;border-radius:4px;border:1px solid #e3c88f;padding:1px 0}.org-dday.urgent{background:none;color:#c62828;border-color:#e0a8a8;padding-left:0;padding-right:0}.org-tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--border)}.org-tab{padding:8px 16px;font-size:13px;font-weight:600;background:none;border:none;cursor:pointer;color:var(--text-secondary);border-bottom:2px solid transparent;margin-bottom:-1px}.org-tab:hover{color:var(--text-primary)}.org-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.org-trash-badge{display:inline-block;min-width:18px;padding:1px 5px;margin-left:4px;background:#c62828;color:#fff;font-size:12px;font-weight:700;border-radius:9px;text-align:center}.org-trash-notice{grid-column:1/-1;padding:10px 14px;background:none;border:1px solid #e3c88f;border-radius:4px;font-size:12px;color:#8a4b00}.org-card-trash{opacity:.85;background:#f7f8fa}.org-card-trash .org-name{color:var(--text-secondary)}.org-days-badge{font-size:12px;font-weight:700;color:#4d5a70;white-space:nowrap}.org-days-badge.urgent{color:#c62828}.org-trash-info{font-size:12px;color:var(--text-secondary);margin-bottom:8px}.org-trash-actions{display:flex;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.btn-org-restore{background:var(--accent-light);color:var(--accent);border:1px solid #b9c1ce}.btn-org-restore:hover{background:#b9c1ce}.access-log-page{padding:24px;height:100vh;display:flex;flex-direction:column}.log-table-wrap{flex:1;overflow-y:auto;background:#fff;border:1px solid var(--border);border-radius:4px}.log-table{width:100%;border-collapse:collapse;font-size:13px}.log-table th{background:#f7f8fa;padding:10px 14px;text-align:left;border-bottom:2px solid var(--border);position:sticky;top:0;font-size:12px;font-weight:600;color:var(--text-secondary)}.log-table td{padding:9px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.log-table tr:hover td{background:#f7f8fa}.log-time{color:var(--text-secondary);font-size:12px;white-space:nowrap}.role-badge{padding:2px 8px;border-radius:4px;font-size:12px;font-weight:600}.role-badge.master{background:none;color:#8a4b00;padding-left:0;padding-right:0}.role-badge.admin{background:var(--accent-light);color:var(--accent)}.role-badge.user{background:#f3f5f8;color:var(--text-secondary)}.result-badge{padding:2px 10px;border-radius:4px;font-size:12px;font-weight:600}.result-badge.success{background:none;color:#1e8e4e;padding-left:0;padding-right:0}.result-badge.fail{background:none;color:#c62828;padding-left:0;padding-right:0}.stats-page{padding:24px;overflow-y:auto}.stat-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}.stat-card{background:#fff;border:1px solid var(--border);border-radius:4px;padding:20px;text-align:center}.stat-icon{font-size:28px;margin-bottom:8px}.stat-value{font-size:32px;font-weight:800;color:var(--accent);line-height:1;margin-bottom:4px}.stat-label{font-size:12px;color:var(--text-secondary)}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.stats-panel{background:#fff;border:1px solid var(--border);border-radius:4px;padding:20px}.stats-panel h3{font-size:15px;font-weight:700;margin-bottom:16px;color:var(--text-primary)}.empty-msg{color:var(--text-secondary);font-size:13px}.org-device-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}.org-device-name{font-size:13px;font-weight:500;width:100px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.org-device-bar-wrap{flex:1;height:10px;background:#f3f5f8;border-radius:4px;overflow:hidden}.org-device-bar{height:100%;background:var(--accent);border-radius:4px;transition:width .3s;min-width:4px}.org-device-count{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:4px;white-space:nowrap}.online-dot{width:6px;height:6px;border-radius:50%;background:var(--online)}.trend-chart{display:flex;align-items:flex-end;gap:8px;height:140px;padding-top:20px}.trend-bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end;gap:4px}.trend-count{font-size:12px;font-weight:600;color:var(--accent);min-height:16px}.trend-bar{width:100%;background:var(--accent);border-radius:4px 4px 0 0;min-height:4px;transition:height .3s;opacity:.8}.trend-date{font-size:12px;color:var(--text-secondary);white-space:nowrap}.storage-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:8px;flex-wrap:wrap}.storage-panel-header h3{margin-bottom:0}.storage-period-tabs{display:flex;gap:4px}.storage-period-tab{padding:4px 10px;font-size:12px;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--text-secondary);cursor:pointer;transition:all .15s}.storage-period-tab:hover{border-color:var(--accent);color:var(--accent)}.storage-period-tab.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.storage-total{font-size:12px;font-weight:400;color:var(--text-secondary);margin-left:8px}.storage-bar{background:#1e8e4e}.storage-size{font-size:12px;color:var(--text-secondary);white-space:nowrap;min-width:60px;text-align:right}.records-reset .rr-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.records-reset .rr-select{min-width:240px;max-width:360px}.records-reset .rr-box{margin-top:12px;padding:14px 16px;border:1px solid var(--border);border-radius:4px;background:#fafbfc}.records-reset .rr-counts{display:flex;gap:20px;flex-wrap:wrap;font-size:13px}.records-reset .rr-counts b{font-weight:600}.records-reset .rr-note{margin:10px 0;font-size:13px;color:var(--text-secondary)}.records-reset .rr-note strong{color:var(--error)}.records-reset .rr-input{width:140px;flex:none}.settings-page{padding:24px;max-width:720px}.page-header{margin-bottom:24px}.page-header h2{font-size:22px;font-weight:700;margin-bottom:4px}.page-desc{font-size:13px;color:var(--text-secondary)}.settings-card{background:#fff;border:1px solid var(--border);border-radius:4px;padding:24px}.settings-section-title{font-size:15px;font-weight:700;margin-bottom:8px;color:var(--text-primary)}.settings-desc{font-size:13px;color:var(--text-secondary);line-height:1.7;margin-bottom:16px}.rss-presets{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.preset-btn{padding:5px 14px;border-radius:4px;border:1px solid var(--border);background:#f7f8fa;font-size:12px;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .12s}.preset-btn:hover{background:var(--accent-light);color:var(--accent);border-color:var(--accent)}.rss-input-row{display:flex;gap:8px;align-items:center;margin-bottom:20px}.rss-input{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:4px;font-size:13px;outline:none}.rss-input:focus{border-color:var(--accent)}.headlines-preview{background:#f7f8fa;border:1px solid var(--border);border-radius:4px;overflow:hidden}.headlines-title{padding:10px 14px;font-size:12px;font-weight:700;color:var(--text-secondary);border-bottom:1px solid var(--border);background:#f3f5f8;display:flex;align-items:center;gap:10px}.fetch-time{font-size:12px;font-weight:400;color:#66728a;margin-left:auto}.headlines-list{list-style:none;max-height:320px;overflow-y:auto}.headline-item{display:flex;align-items:flex-start;gap:10px;padding:9px 14px;border-bottom:1px solid var(--border);font-size:13px;line-height:1.5}.headline-item:last-child{border-bottom:none}.headline-num{font-size:12px;font-weight:700;color:var(--accent);background:var(--accent-light);padding:1px 6px;border-radius:4px;flex-shrink:0;margin-top:1px}.no-rss-msg{font-size:12px;color:var(--text-secondary);font-style:italic}.news-style-row{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-end;padding:16px 0 12px;border-top:1px solid var(--border);margin-top:4px}.news-style-item{display:flex;flex-direction:column;gap:6px}.news-style-item label{font-size:12px;font-weight:600;color:var(--text-secondary)}.news-style-item input[type=number]{padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px}.news-style-item input[type=color]{width:36px;height:32px;border:1px solid var(--border);border-radius:4px;padding:2px;cursor:pointer;background:none}.style-unit{font-size:12px;color:var(--text-secondary);margin-top:-4px}.style-swatch{font-size:12px;padding:2px 6px;border-radius:4px;border:1px solid var(--border)}.news-preview-bar{width:100%;padding:10px 14px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px;margin-bottom:16px;box-sizing:border-box;font-family:맑은 고딕,sans-serif}.weather-cache-table{border:1px solid var(--border);border-radius:4px;overflow:hidden;font-size:13px}.weather-cache-header,.weather-cache-row{display:grid;grid-template-columns:80px 70px 110px 110px 1fr;align-items:center;padding:9px 14px;gap:8px}.weather-cache-header{background:#f3f5f8;font-size:12px;font-weight:700;color:var(--text-secondary);border-bottom:1px solid var(--border)}.weather-cache-row{border-bottom:1px solid var(--border);color:var(--text-primary)}.weather-cache-row:last-child{border-bottom:none}.weather-cache-row:hover{background:#f7f8fa}.weather-region{font-weight:600}.weather-cache-row small{font-size:12px;color:var(--text-secondary)}.ip-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;min-height:36px}.ip-empty{font-size:13px;color:var(--text-secondary);padding:6px 0}.ip-item{display:flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:4px 10px 4px 12px}.ip-value{font-family:monospace;font-size:15px;font-weight:600}.ip-del-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:13px;line-height:1;padding:0 2px}.ip-del-btn:hover{color:#c62828}.ip-add-row{display:flex;gap:8px;margin-bottom:8px}.ip-input{flex:1;max-width:260px}.ip-error{color:#c62828;font-size:13px;margin-bottom:8px}.ip-notice{font-size:12px;color:var(--text-secondary);margin-top:10px}.ip-notice a{color:var(--accent)}.headline-hint{margin:0;padding:6px 14px 0;font-size:12px;color:var(--text-secondary)}.headline-item .headline-text{flex:1;min-width:0}.headline-hide{flex:none;border:1px solid var(--border);background:#fff;color:var(--text-secondary);border-radius:4px;width:26px;height:24px;line-height:1;cursor:pointer;font-size:12px}.headline-hide:hover:not(:disabled){color:#c62828;border-color:#c62828;background:#fdf3f3}.headline-hide:disabled{opacity:.5;cursor:default}.hidden-headlines{margin-top:12px}.hidden-headlines .headlines-title{display:flex;align-items:center;gap:8px}.headline-hidden{text-decoration:line-through;color:var(--text-secondary)}.approval-page{padding:24px;max-width:1100px}.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.page-header h2{font-size:22px;font-weight:700;color:var(--text-primary);margin:0 0 4px}.page-desc{font-size:13px;color:var(--text-secondary);margin:0}.approval-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:80px 0;color:var(--text-secondary);font-size:15px}.approval-table-wrap{overflow-x:auto;border-radius:4px;border:1px solid var(--border)}.approval-table{width:100%;border-collapse:collapse;font-size:15px}.approval-table th{background:var(--surface-2);padding:10px 14px;text-align:left;font-weight:600;color:var(--text-secondary);font-size:12px;border-bottom:1px solid var(--border)}.approval-table td{padding:12px 14px;border-bottom:1px solid var(--border);color:var(--text-primary)}.approval-table tr:last-child td{border-bottom:none}.approval-table tr:hover td{background:var(--surface-2)}.td-org{font-weight:600}.td-name{font-weight:600;color:var(--accent)}.td-ip{font-family:monospace;font-size:13px}.type-badge{padding:2px 8px;background:#1e3a5f;color:#7cc4ff;border-radius:4px;font-size:12px;font-weight:600}.btn-approve{background:#1e8e4e;color:#fff;border:none;padding:5px 14px;border-radius:4px;font-size:13px;font-weight:600;cursor:pointer}.btn-approve:hover:not(:disabled){background:#1e8e4e}.btn-approve:disabled{opacity:.5;cursor:not-allowed}.appr-tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--border);padding-bottom:0}.appr-tab{padding:8px 18px;border:none;background:none;color:var(--text-secondary);font-size:15px;font-weight:500;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.appr-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.appr-badge{display:inline-block;background:#c62828;color:#fff;font-size:12px;font-weight:700;border-radius:4px;padding:1px 6px;margin-left:4px}.url-notice{padding:10px 14px;background:var(--surface-2);border-bottom:1px solid var(--border);font-size:13px;color:var(--text-secondary)}.url-notice code{background:var(--surface-3, #17233a);padding:1px 6px;border-radius:4px;font-size:13px;color:var(--text-primary)}.url-id-badge{display:inline-block;background:#203864;color:#fff;font-size:12px;font-weight:700;font-family:monospace;padding:3px 10px;border-radius:4px}.monitoring-page{padding:24px;max-width:1200px}.mon-org-filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.mon-summary{font-size:13px;color:var(--text-secondary);margin-bottom:12px;display:flex;align-items:center;gap:4px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.dot.online{background:#1e8e4e}.dot.offline{background:#c62828}.mon-table-wrap{overflow-x:auto}.mon-table{width:100%;border-collapse:collapse;font-size:15px;white-space:nowrap}.mon-table th{text-align:left;padding:10px 12px;background:var(--bg-secondary, #f7f8fa);border-bottom:2px solid var(--border-color, #d8dde5);color:var(--text-secondary);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px}.mon-table td{padding:10px 12px;border-bottom:1px solid var(--border-color, #d8dde5);vertical-align:middle}.mon-table .row-online td{background:transparent}.mon-table .row-offline td{color:var(--text-secondary)}.td-no{color:var(--text-secondary);font-size:12px}.td-name{font-weight:500}.mon-btn-group{display:flex;gap:4px;align-items:center}.btn-reboot{background:#f97316;color:#fff;border:none}.btn-reboot:hover:not(:disabled){background:#ea580c}.mon-empty{text-align:center;padding:48px;color:var(--text-secondary)}.snapshot-modal{width:min(90vw,900px);max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.snapshot-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;flex-shrink:0}.snapshot-modal-header h3{margin:0;font-size:15px}.snapshot-img{width:100%;height:auto;max-height:calc(90vh - 140px);object-fit:contain;background:#111;border-radius:4px}.snapshot-error{text-align:center;padding:48px;color:var(--text-secondary)}.snapshot-error span{font-size:32px}.snapshot-error p{margin-top:12px;line-height:1.6}.mon-org-count{opacity:.75;font-size:12px;margin-left:4px}.mon-empty-inline{color:var(--text-secondary);font-size:13px;padding:6px 4px}.snapshot-live{font-size:12px;font-weight:400;color:#1e8e4e;margin-left:10px}.notice-page{padding:24px 28px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.notice-table-wrap{background:#fff;border:1px solid var(--border);border-radius:4px;overflow:auto}.notice-table{width:100%;border-collapse:collapse;font-size:13px}.notice-table th{text-align:left;padding:10px 14px;background:var(--bg-card);color:var(--text-secondary);font-weight:600;white-space:nowrap;border-bottom:1px solid var(--border)}.notice-table td{padding:10px 14px;border-bottom:1px solid #f3f5f8;vertical-align:middle}.notice-table tbody tr:last-child td{border-bottom:none}.notice-table tbody tr:hover{background:#f7f8fa}.notice-message{max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notice-time{white-space:nowrap;color:var(--text-secondary)}.notice-empty{text-align:center;color:var(--text-secondary);padding:36px 0!important}.notice-status{display:inline-block;padding:2px 10px;border-radius:4px;font-size:12px;font-weight:600;white-space:nowrap}.notice-status-pending{background:none;color:#8a4b00;padding-left:0;padding-right:0}.notice-status-active{background:none;color:#c62828;padding-left:0;padding-right:0}.notice-status-done{background:none;color:#4d5a70;padding-left:0;padding-right:0}.notice-modal{width:520px;max-width:calc(100vw - 32px)}.modal h3{font-size:18px;margin-bottom:18px}.form-grid{display:flex;flex-direction:column;gap:14px}.form-group textarea{resize:vertical;min-height:64px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border)}.notice-target-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.notice-target-row select{min-width:110px}.notice-target-btns{display:flex;gap:6px}.notice-target-btn{padding:7px 20px;border:1px solid var(--border);background:#fff;color:var(--text-primary);border-radius:4px;font-size:13px;font-weight:500;transition:all .15s}.notice-target-btn:hover{background:var(--bg-hover)}.notice-target-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.notice-radio{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--text-primary);cursor:pointer}.notice-form-row{display:grid;grid-template-columns:1fr 1fr auto auto;gap:12px}.notice-color{padding:2px;width:56px;height:34px;cursor:pointer}.notice-form-error{color:var(--error);font-size:13px;margin-top:10px}.notice-preview-wrap{background:#fff;border-radius:4px;padding:20px;box-shadow:var(--shadow-md);width:min(960px,calc(100vw - 48px))}.notice-preview-title{font-size:15px;font-weight:600;margin-bottom:12px}.notice-preview-screen{width:100%;aspect-ratio:16 / 9;background:#0a0f1a;border-radius:4px;overflow:hidden;position:relative;container-type:inline-size}.notice-preview-dim{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#00000073}.notice-preview-box{font-weight:700;line-height:1.5;padding:.9em 1.2em;border-radius:.35em;max-width:84%;max-height:84%;overflow:hidden;text-align:center;white-space:pre-wrap;word-break:keep-all;box-shadow:0 12px 60px #000000b3}.schedule-page{padding:24px 28px}.page-header{margin-bottom:16px}.page-header h2{font-size:22px;margin-bottom:4px}.page-desc{color:var(--text-secondary);font-size:13px}.sp-body{display:flex;gap:16px;align-items:flex-start}.sp-tree{width:220px;flex-shrink:0;background:#fff;border:1px solid var(--border);border-radius:4px;padding:10px;max-height:calc(100vh - 160px);overflow:auto}.sp-tree-group{font-weight:700;font-size:13px;padding:8px 6px 4px;color:#4d5a70}.sp-tree-dev{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:4px;font-size:13px;cursor:pointer}.sp-tree-dev:hover{background:var(--accent-light)}.sp-tree-dev.sel{background:var(--accent);color:#fff;font-weight:600}.sp-tree-dev.unapproved{opacity:.55}.sp-dev-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-unapproved{font-size:12px;color:#8a4b00;background:#fbf3e4;border-radius:4px;padding:1px 5px;flex-shrink:0}.sp-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.sp-dot.on{background:var(--online)}.sp-tree-dev.sel .sp-dot.on{background:#b5dcc4}.sp-dot.off{background:#b9c1ce}.sp-panel{flex:1;min-width:0}.sp-panel-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--text-secondary);padding:80px 0;background:#fff;border:1px dashed var(--border);border-radius:4px}.sp-dev-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.sp-dev-head h3{font-size:18px}.sp-pill{font-size:12px;padding:2px 10px;border-radius:4px;font-weight:600}.pill-on{background:#e7f4ec;color:var(--online)}.pill-off{background:#f3f5f8;color:var(--offline)}.sp-screen-row{display:flex;gap:14px;align-items:flex-end;margin-bottom:16px}.sp-screen-mini{width:340px;max-width:100%;background:#17233a;border-radius:4px;position:relative;overflow:hidden;border:1px solid #17233a;flex-shrink:0}.sp-res{position:absolute;right:6px;top:4px;font-size:12px;color:#4d5a70;z-index:2}.sp-region{position:absolute;border:1.5px solid rgba(148,163,184,.7);background:#33415573;color:#b9c1ce;display:flex;align-items:center;justify-content:center;font-size:12px;cursor:pointer;transition:all .12s;overflow:hidden}.sp-region span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px}.sp-region:hover{background:#1a73e859;color:#fff}.sp-region.sel{background:#1a73e8a6;border-color:#7cc4ff;color:#fff;font-weight:700;box-shadow:inset 0 0 0 2px #ffffff40}.sp-region.kind-weather{background:#0e749059}.sp-region.kind-caption{background:#7c3aed4d}.sp-region.disabled{cursor:not-allowed}.sp-screen-hint{font-size:13px;color:var(--text-secondary);line-height:1.8}.sp-screen-hint b{color:var(--text-primary)}.sp-sched-cap{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#4d5a70;margin:4px 0 10px}.sp-card{background:#fff;border:1px solid var(--border);border-radius:4px;padding:14px 16px;margin-bottom:10px}.sp-card-playing{border-color:#e0a8a8}.sp-card-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}.sp-card-head b{font-size:15px}.sp-badge{font-size:12px;padding:2px 10px;border-radius:4px;font-weight:700}.sp-badge-playing{background:#fdf3f3;color:#c62828}.sp-badge-upcoming{background:#fbf3e4;color:#8a4b00}.sp-badge-ended{background:#d8dde5;color:#4d5a70}.sp-badge-idle{background:#f3f5f8;color:#66728a}.sp-card-meta{color:var(--text-secondary);font-size:13px;margin-bottom:8px}.sp-card-actions{display:flex;gap:6px}.sp-clist{border-top:1px solid #f3f5f8;margin-top:12px;padding-top:10px}.sp-clist-cap{display:flex;align-items:center;font-size:13px;font-weight:700;color:#4d5a70;margin-bottom:8px}.sp-citem{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:4px;font-size:13px}.sp-citem:nth-child(2n){background:#f7f8fa}.sp-ckind{flex-shrink:0}.sp-cname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-cmeta{color:var(--text-secondary);font-size:12px;flex-shrink:0}.sp-resv{font-size:12px;padding:2px 8px;border-radius:4px;flex-shrink:0;white-space:nowrap}.sp-resv-active{background:#e7f4ec;color:#1e8e4e}.sp-resv-wait{background:#fbf3e4;color:#8a4b00;border:1px dashed #b26a00}.sp-resv-ended{background:#d8dde5;color:#4d5a70}.sp-resv-none{color:#66728a}.sp-empty{color:var(--text-secondary);font-size:13px;padding:14px 4px}.sp-news-panel{background:#fff;border:1px solid var(--border);border-radius:4px;padding:12px 16px;margin-bottom:12px}.sp-news-row{display:flex;align-items:center;gap:10px}.sp-news-label{font-size:13px;font-weight:600}.sp-news-toggle{padding:4px 14px;border-radius:99px;font-size:13px;font-weight:700;border:1px solid var(--border);background:#f3f5f8;color:#4d5a70}.sp-news-toggle.on{background:var(--accent);color:#fff;border-color:var(--accent)}.sp-news-hint{font-size:12px;color:var(--text-secondary)}.sp-news-style{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:12px}.sp-news-style label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary)}.sp-news-preview{margin-top:10px;padding:8px 12px;border-radius:4px;white-space:nowrap;overflow:hidden}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:4px;padding:24px;box-shadow:var(--shadow-md)}.sp-modal{width:460px;max-width:calc(100vw - 32px)}.modal h3{font-size:18px;margin-bottom:16px}.form-grid{display:flex;flex-direction:column;gap:13px}.form-group{display:flex;flex-direction:column;gap:5px}.form-group label{font-size:13px;color:var(--text-secondary);font-weight:500}.form-group textarea{resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px;padding-top:14px;border-top:1px solid var(--border)}.sp-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sp-form-inline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sp-week-row{display:flex;gap:5px}.sp-week-btn{width:36px;height:32px;border-radius:4px;border:1px solid var(--border);background:#fff;font-size:13px}.sp-week-btn.on{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:700}.sp-publish-target{font-size:13px;background:#f7f8fa;border:1px solid var(--border);border-radius:4px;padding:8px 12px;margin-bottom:14px}.sp-publish-hint{font-size:12px;color:var(--text-secondary)}.sp-today{display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:#203864;color:#fff;padding:12px 16px;border-radius:4px;margin:12px 0 4px;font-size:15px}.sp-today b{font-size:15px}.sp-today span{color:#b9c1ce}.sp-today-lbl{font-size:12px}.sp-today.warn{background:#8a4b00}.sp-today.warn span{color:#e3c88f}.sp-card-head{flex-wrap:wrap;row-gap:6px}.sp-card-dates{font-size:13px;color:var(--text-secondary)}.sp-week{display:inline-flex;gap:2px}.sp-week i{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:12px;font-weight:600;background:#d8dde5;color:#4d5a70;border-radius:4px}.sp-week i.on{background:#203864;color:#fff}.sp-card-btns{margin-left:auto;display:flex;gap:6px}.sp-card-warn{border-color:#8a4b00;border-width:2px}.sp-strip{display:flex;gap:10px;overflow-x:auto;padding:12px 2px 6px;align-items:stretch}.sp-tile{-webkit-user-select:none;user-select:none;flex:0 0 184px;border:1px solid var(--border);border-radius:4px;background:#fff;display:flex;flex-direction:column;cursor:grab;overflow:hidden}.sp-tile:active{cursor:grabbing}.sp-tile.dragging{opacity:.4}.sp-tile.over{outline:2px solid var(--accent);outline-offset:1px}.sp-thumb{position:relative;aspect-ratio:16 / 9;background:#1f2933;overflow:hidden}.sp-thumb img,.sp-thumb video{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}.sp-no{position:absolute;left:0;top:0;min-width:24px;height:24px;padding:0 4px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:#203864;color:#fff;font-size:12px;font-weight:700}.sp-len{position:absolute;right:5px;bottom:5px;background:#000000b8;color:#fff;padding:1px 6px;font-size:12px;font-weight:600;border-radius:4px}.sp-tname{padding:7px 9px 0;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-tmeta{padding:4px 9px 0;display:flex;gap:4px;flex-wrap:wrap;min-height:20px}.sp-tbtns{padding:7px 9px 9px;display:flex;gap:4px;margin-top:auto}.sp-tbtns .btn{flex:1;padding-left:4px;padding-right:4px;white-space:nowrap}.sp-mv{width:28px;flex-shrink:0;border:1px solid var(--border);border-radius:4px;background:#fff;color:#203864;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.sp-mv:hover:not(:disabled){background:var(--bg-hover)}.sp-mv:disabled{opacity:.35;cursor:default}.sp-addtile{flex:0 0 130px;min-height:120px;border:2px dashed #66728a;border-radius:4px;background:transparent;color:#17233a;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.sp-addtile:hover{background:var(--bg-hover)}.sp-strip-hint{margin:2px 2px 0;font-size:12px;color:var(--text-secondary)}.sp-emptywarn{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;padding:11px 14px;background:#fbf3e4;color:#8a4b00;font-size:13px;font-weight:600;border-radius:4px}.sp-emptywarn .btn{margin-left:auto}.sp-emptywarn.quiet{background:#f3f5f8;color:var(--text-secondary);font-weight:400}.sp-tree{border:0;border-right:1px solid var(--border);border-radius:0;padding:0 12px 0 0}.sp-pill{padding:0;font-weight:400}.pill-on{background:none;color:var(--text-secondary)}.pill-off{background:none;color:var(--error);font-weight:700}.sp-unapproved{background:none;padding:0}.sp-screen-mini{background:#fff;border:2px solid #203864}.sp-res{color:var(--text-secondary)}.sp-region{border:1px solid #b9c1ce;background:#fff;color:var(--text-secondary)}.sp-region:hover{background:var(--accent-light);color:var(--text-primary)}.sp-region.sel{background:#7cc4ff59;border-color:#203864;color:var(--text-primary);box-shadow:none}.sp-region.kind-weather,.sp-region.kind-caption{background:#f3f5f8}.sp-region.sel.kind-weather,.sp-region.sel.kind-caption{background:#7cc4ff59}.sp-today{background:none;color:var(--text-primary);padding:12px 0;border-radius:0;border-bottom:2px solid #17233a;margin:8px 0 12px}.sp-today span{color:var(--text-secondary)}.sp-today.warn{background:none;color:var(--warning)}.sp-today.warn span{color:var(--warning)}.sp-card{border:0;border-bottom:1px solid var(--border);border-radius:0;padding:16px 0;margin-bottom:0}.sp-card-playing,.sp-card-warn{border-color:var(--border);border-width:0 0 1px}.sp-badge{background:none;padding:0}.sp-badge-playing{background:none;color:#203864}.sp-badge-upcoming{background:none;color:var(--text-primary)}.sp-badge-ended,.sp-badge-idle{background:none;color:var(--text-secondary);font-weight:400}.sp-week{gap:6px}.sp-week i{width:auto;height:auto;background:none;color:#66728a;font-weight:400}.sp-week i.on{background:none;color:var(--text-primary);font-weight:700}.sp-resv{padding:0}.sp-resv-active{background:none}.sp-resv-wait{background:none;border:0}.sp-resv-ended{background:none}.sp-emptywarn{background:none;padding:6px 0}.sp-emptywarn.quiet{background:none}.sp-news-panel{border:0;border-bottom:1px solid var(--border);border-radius:0;padding:12px 0}.sp-news-toggle{border-radius:4px}.sp-panel-empty{border:0}.sign-page{padding:24px}.sign-header{align-items:flex-start;margin-bottom:18px}.sign-header .page-desc{margin-top:4px;color:var(--text-secondary);font-size:13px}.sign-body{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}.sign-form{flex:1 1 360px;max-width:460px;box-sizing:border-box;background:#fff;border:1px solid var(--border);border-radius:4px;padding:18px 20px;display:flex;flex-direction:column;gap:10px}.sign-form h3,.sign-preview h3{font-size:15px;font-weight:700;margin:6px 0 0}.sign-form h3:first-child{margin-top:0}.sign-tpls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.sign-tpl{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 10px;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--text-primary);font-size:13px;cursor:pointer;text-align:left}.sign-tpl:hover{background:var(--bg-hover)}.sign-tpl.on{border:2px solid var(--accent);padding:0 9px;background:var(--accent-light);font-weight:700}.sign-chip{width:14px;height:14px;border-radius:4px;flex-shrink:0}.sign-fld{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700;color:var(--text-secondary);min-width:0}.sign-fld input,.sign-fld textarea{font:inherit;font-size:13px;font-weight:400;color:var(--text-primary);padding:8px 10px;border:1px solid var(--border);border-radius:4px;background:#fff;box-sizing:border-box;width:100%}.sign-fld textarea{resize:vertical;line-height:1.5}.sign-row2{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.sign-hint{margin:0;font-size:12px;color:var(--text-secondary);line-height:1.5}.sign-devs{border:1px solid var(--border);border-radius:4px;padding:8px 10px;max-height:220px;overflow:auto;display:flex;flex-direction:column;gap:2px}.sign-group{display:flex;flex-direction:column;gap:2px;margin-top:4px}.sign-dev{display:flex;align-items:center;gap:8px;font-size:13px;padding:4px 2px 4px 22px;cursor:pointer}.sign-dev.all{padding-left:2px;font-weight:700;border-bottom:1px solid var(--border);padding-bottom:8px}.sign-dev.grp{padding-left:2px;font-weight:700;color:var(--text-secondary)}.sign-dev.off{opacity:.5;cursor:not-allowed}.sign-tag{font-size:12px;color:var(--text-secondary);border:1px solid var(--border);border-radius:4px;padding:0 5px}.sign-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.sign-actions .btn{min-height:40px;font-size:15px}.sign-go{flex:1 1 160px;font-weight:700}.sign-preview{flex:2 1 460px;min-width:0;display:flex;flex-direction:column;gap:10px}.sign-preview-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.sign-seg{display:flex;gap:6px}.sign-seg button{min-height:32px;padding:0 12px;border-radius:4px;font-size:12px;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--text-primary)}.sign-seg button.on{border:2px solid var(--accent);padding:0 11px;background:var(--accent-light);font-weight:700}.sign-stage{background:#1f2933;border-radius:4px;padding:18px;display:flex;justify-content:center}.sign-canvaswrap{position:relative;box-shadow:0 8px 24px #00000059;line-height:0}.sign-canvaswrap.h{width:100%}.sign-canvaswrap.v{width:min(100%,360px)}.sign-canvaswrap canvas{display:block;width:100%;height:auto}.sign-custom{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px dashed var(--border);border-radius:4px;background:#f7f8fa}.sign-custom h3{margin:0}.sign-custom select,.sed-props textarea{font:inherit;font-size:13px;color:var(--text-primary);padding:6px 8px;border:1px solid var(--border);border-radius:4px;background:#fff}.sed-props textarea{resize:vertical;line-height:1.5;width:100%;box-sizing:border-box}.sed-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.sed-lbl{font-size:12px;font-weight:700;color:var(--text-secondary)}.sed-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.sed-tool{min-height:40px;display:flex;align-items:center;justify-content:center;gap:6px;padding:0 6px;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--text-primary);font:inherit;font-size:13px;cursor:pointer}.sed-tool b{font-size:18px}.sed-tool:hover,.sed-ico:hover{background:var(--bg-hover)}.sed-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.sed-ico{min-height:36px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;padding:0}.sed-colors{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.sed-color{width:24px;height:24px;border-radius:4px;border:1px solid #66728a;cursor:pointer;padding:0}.sed-color.round{border-radius:50%}.sed-color.on{outline:2px solid var(--accent);outline-offset:2px}.sed-colors input[type=color]{width:30px;height:26px;padding:0;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer}.sed-props{display:flex;flex-direction:column;gap:8px;padding-top:10px;border-top:1px solid var(--border);font-size:13px}.sed-btns{display:flex;gap:6px;flex-wrap:wrap}.sed-check{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}.sed-range{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;color:var(--text-secondary)}.sed-range input{flex:1}.sed-overlay{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;outline:none;touch-action:none;-webkit-user-select:none;user-select:none;line-height:normal}.sed-box{position:absolute;min-width:10px;min-height:10px;cursor:move;touch-action:none}.sed-box:hover{outline:1px dashed rgba(56,189,248,.8)}.sed-box.on{outline:2px dashed #7cc4ff;outline-offset:2px}.sed-handle{position:absolute;right:-10px;bottom:-10px;width:18px;height:18px;background:#fff;border:2px solid #203864;box-sizing:border-box;cursor:nwse-resize;touch-action:none}.ops-page{padding:24px 28px 32px}.ops-loading{color:var(--text-secondary);font-size:13px}.ops-head{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;justify-content:space-between;border-bottom:2px solid #17233a;padding-bottom:16px;margin-bottom:20px}.ops-head h2{font-size:22px;font-weight:700;margin:0}.ops-sub{margin:6px 0 0;font-size:15px;display:flex;flex-wrap:wrap;gap:16px}.ops-sub.bad,.ops-sub .bad{color:var(--error);font-weight:700}.ops-sub .quiet{color:var(--text-secondary)}.ops-body{display:flex;flex-wrap:wrap;gap:32px;align-items:flex-start}.ops-floors{flex:999 1 520px;min-width:0}.ops-side{flex:1 1 300px;max-width:380px;display:flex;flex-direction:column;gap:24px}.ops-page h3{font-size:15px;font-weight:700;margin:0}.ops-sec-head{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;padding-bottom:10px}.ops-legend{display:flex;gap:14px;font-size:12px;color:var(--text-secondary)}.ops-legend span{display:inline-flex;gap:6px;align-items:center}.ops-legend i{width:12px;height:12px;box-sizing:border-box}.lg-ok{border:1px solid #66728a}.lg-bad{background:var(--error)}.lg-off{background:#d8dde5}.ops-floor{display:flex;flex-wrap:wrap;gap:12px;align-items:center;border-top:1px solid var(--border);padding:12px 0}.ops-floor:last-of-type{border-bottom:1px solid var(--border)}.ops-floor-name{flex:0 0 150px;display:flex;flex-direction:column;gap:2px;min-width:0}.ops-floor-name b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ops-floor-name span{font-size:12px;color:var(--text-secondary)}.ops-floor-name span.bad{color:var(--error);font-weight:700}.ops-tiles{flex:1 1 320px;display:flex;flex-wrap:wrap;gap:8px}.ops-tile{width:148px;height:52px;padding:0 10px;border-radius:4px;text-align:left;cursor:pointer;display:flex;flex-direction:column;justify-content:center;gap:2px;background:#fff;border:1px solid #b9c1ce;color:var(--text-primary)}.ops-tile b{font-size:13px}.ops-tile span{font-size:12px;color:var(--text-secondary)}.ops-tile b,.ops-tile span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.ops-tile:hover{border-color:#203864;background:var(--accent-light)}.ops-tile.st-bad{background:var(--error);border-color:var(--error);color:#fff}.ops-tile.st-bad span{color:#fff}.ops-tile.st-bad:hover{background:#a82020;border-color:#a82020}.ops-tile.st-off{background:#d8dde5;border-color:#d8dde5}.ops-tile.st-off span{color:var(--text-primary)}.ops-tile.st-unapproved{border-style:dashed}.ops-empty{color:var(--text-secondary);font-size:13px;padding:24px 0;border-top:1px solid var(--border)}.ops-period{font-size:12px;color:var(--text-secondary);margin:4px 0 10px}.ops-auto{display:flex;gap:14px;align-items:baseline;border-top:1px solid var(--border);padding:11px 0}.ops-auto-n{flex:0 0 112px;font-size:18px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.ops-auto span:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}.ops-auto b{font-size:13px}.ops-auto small,.ops-todo small{font-size:12px;color:var(--text-secondary);line-height:1.5}.ops-side section>h3+.ops-todo,.ops-side section>h3+.ops-todo-none{margin-top:10px}.ops-todo{display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--border);padding:11px 0}.ops-todo:last-child{border-bottom:1px solid var(--border)}.ops-todo b{font-size:13px}.ops-todo.lv-bad b{color:var(--error)}.ops-todo.lv-warn b{color:var(--warning)}.ops-todo-none{font-size:13px;color:var(--text-secondary);border-top:1px solid var(--border);padding:11px 0}.ops-dev-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.ops-dev{background:#fff;border-radius:6px;padding:24px;width:440px;max-width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000026}.ops-dev-head{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;padding-bottom:14px;border-bottom:2px solid #17233a}.ops-dev-head h3{font-size:18px;overflow-wrap:anywhere}.ops-dev-head p{margin:2px 0 0;font-size:13px;color:var(--text-secondary)}.ops-dev-state{flex:none;font-size:13px;font-weight:700;padding:3px 10px;border-radius:4px;border:1px solid #b9c1ce;white-space:nowrap}.ops-dev-state.st-ok{color:var(--success);border-color:var(--success)}.ops-dev-state.st-bad{background:var(--error);border-color:var(--error);color:#fff}.ops-dev-state.st-off{background:#d8dde5;border-color:#d8dde5}.ops-dev-state.st-unapproved{border-style:dashed}.ops-dev-info{display:grid;grid-template-columns:104px 1fr;margin:0;font-size:13px}.ops-dev-info dt,.ops-dev-info dd{margin:0;padding:9px 0;border-bottom:1px solid var(--border)}.ops-dev-info dt{color:var(--text-secondary)}.ops-dev-info dd{min-width:0;overflow-wrap:anywhere}.ops-dev-info dd.warn{color:var(--warning);font-weight:700}.ops-dev h4{font-size:13px;font-weight:700;margin:18px 0 6px}.ops-dev-logs{list-style:none;margin:0;padding:0;font-size:12px}.ops-dev-logs li{display:flex;gap:10px;padding:5px 0}.ops-dev-logs time{flex:0 0 78px;color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}.ops-dev-logs span{min-width:0;overflow-wrap:anywhere}.ops-dev-logs li.warn span{color:var(--warning)}.ops-dev-msg{font-size:13px;color:var(--text-secondary);padding:12px 0;margin:0}.ops-dev-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Malgun Gothic,맑은 고딕,-apple-system,sans-serif;background:#fff;color:#17233a;font-size:15px}:root{--bg-primary: #ffffff;--bg-secondary: #ffffff;--bg-card: #e9edf5;--bg-hover: #e9edf5;--accent: #203864;--accent-hover: #16294b;--accent-light: #e9edf5;--text-primary: #17233a;--text-secondary: #4d5a70;--border: #d8dde5;--border-focus: #203864;--success: #1e8e4e;--warning: #8a4b00;--error: #c62828;--online: #1e8e4e;--offline: #66728a;--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 12px rgba(0,0,0,.1)}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;outline:none;font-family:inherit}input,select,textarea{font-family:inherit;background:#fff;border:1px solid var(--border);color:var(--text-primary);padding:7px 10px;border-radius:4px;outline:none;transition:border-color .15s;font-size:15px}input:focus,select:focus,textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px #2038642e}.btn{padding:7px 16px;border-radius:4px;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex;align-items:center;gap:5px}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:#fff;color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-hover)}.btn-danger{background:transparent;color:var(--error);border:1px solid #e0a8a8}.btn-danger:hover{background:var(--error);color:#fff;border-color:var(--error)}.btn-sm{padding:4px 10px;font-size:12px;border-radius:4px}.btn:disabled{opacity:.5;cursor:not-allowed}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#b9c1ce;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#66728a}
