:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-0:#f5f6f8;--bg-1:#fff;--bg-2:#fff;--bg-2-hover:#f2f4f7;--bg-inset:#f1f2f5;--border:#e3e6eb;--border-strong:#cdd3db;--text-primary:#1e2530;--text-secondary:#64707e;--text-muted:#98a2b0;--accent:#2563eb;--accent-soft:#2563eb1a;--accent-cyan:#0891b2;--success:#16a34a;--success-soft:#16a34a1a;--warning:#d97706;--warning-soft:#d977061a;--danger:#dc2626;--danger-soft:#dc26261a;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-card:0 1px 2px #1018280f;--shadow-raised:0 2px 8px #1018281a;--focus-ring:0 0 0 3px #2563eb40;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--fs-xs:12px;--fs-sm:13px;--fs-md:14px;--fs-lg:16px;--fs-title:clamp(19px, .45vw + 15px, 23px);--control-h:38px;--control-h-sm:32px;--content-max:1600px;--content-wide-max:2400px;--gutter:clamp(16px, 2.2vw, 36px);--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);font-family:-apple-system,Segoe UI,Pretendard,Roboto,sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:var(--bg-0);color:var(--text-primary);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;word-break:keep-all;overflow-wrap:break-word;line-height:1.5}#root{min-height:100dvh}img,video,svg{max-width:100%}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:600}button{font-family:inherit}table{border-collapse:collapse}.app-shell{min-height:100dvh;display:flex}.sidebar{background:var(--bg-1);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;height:100dvh;padding:20px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-brand{letter-spacing:.02em;border-bottom:1px solid var(--border);color:var(--text-primary);cursor:pointer;align-items:center;gap:8px;margin-bottom:12px;padding:0 8px 20px;font-size:16px;font-weight:700;text-decoration:none;transition:opacity .15s;display:flex}.sidebar-brand:hover{opacity:.75;text-decoration:none}.sidebar-brand-icon,.brand-accent{color:var(--accent)}.sidebar-nav{flex-direction:column;flex:1;gap:2px;display:flex}.sidebar-link{border-radius:var(--radius-sm);color:var(--text-secondary);align-items:center;gap:10px;padding:9px 12px;font-size:13.5px;font-weight:500;display:flex}.sidebar-link:hover{background:var(--bg-inset);color:var(--text-primary);text-decoration:none}.sidebar-link-active,.sidebar-link-active:hover{background:var(--accent-soft);color:var(--accent)}.sidebar-badge{background:var(--danger);color:#fff;text-align:center;border-radius:999px;min-width:18px;margin-left:auto;padding:1px 6px;font-size:11px;font-weight:700;line-height:1.5}.sidebar-footer{border-top:1px solid var(--border);padding-top:12px}.sidebar-logout{border-radius:var(--radius-sm);width:100%;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:9px 12px;font-size:13.5px;display:flex}.sidebar-logout:hover{background:var(--bg-inset);color:var(--text-primary)}.app-shell-main{min-width:0;padding:28px var(--gutter) 48px;flex:1}.app-shell-content{width:100%;max-width:var(--content-max);margin-inline:auto}.app-shell-content:has(.page-wide){max-width:var(--content-wide-max)}.mobile-topbar,.mobile-header,.mobile-menu{display:none}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;margin-bottom:24px;display:flex}.page-header-left{flex-direction:column;flex:auto;gap:4px;min-width:0;display:flex}.page-header-title-row{flex-wrap:wrap;align-items:baseline;gap:4px 14px;display:flex}.page-header-title{font-size:var(--fs-title);line-height:1.3}.page-header-description{max-width:72ch;font-size:var(--fs-sm);color:var(--text-secondary);margin:0}.site-selector{font-size:var(--fs-sm);color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:2px 6px;display:flex}.site-selector-company,.site-selector-label,.site-selector-dropdown{white-space:nowrap}.site-selector-divider{color:var(--border)}.site-selector-dropdown{align-items:center;gap:6px;display:flex}.site-selector-dropdown select{border:1px solid var(--border);background:var(--bg-inset);color:var(--text-primary);border-radius:6px;padding:2px 6px;font-size:13px}.page-header-right{flex-wrap:wrap;flex:0 auto;justify-content:flex-end;align-items:center;gap:8px 16px;display:flex}.page-header-right>*,.page-header-right .btn{white-space:nowrap;flex-shrink:0}.page-header-user{color:var(--text-secondary);font-size:var(--fs-sm);white-space:nowrap;align-items:center;gap:6px;display:flex}.page-header-role{white-space:nowrap;background:var(--bg-inset);border:1px solid var(--border);color:var(--text-secondary);border-radius:999px;padding:1px 8px;font-size:11px}.btn{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;min-height:38px;padding:0 16px;font-size:13.5px;font-weight:600;display:inline-flex}.btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn-sm{min-height:30px;padding:0 12px;font-size:12.5px}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#1d4ed8}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--bg-inset);color:var(--text-primary);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--bg-2-hover)}.btn-danger-outline{background:var(--bg-2);color:var(--danger);border-color:#dc262659}.btn-danger-outline:hover{background:var(--danger-soft)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{opacity:.9}.form-grid{flex-direction:column;gap:16px;max-width:420px;display:flex}.form-field{flex-direction:column;gap:6px;display:flex}.form-field label{color:var(--text-primary);font-size:13px;font-weight:600}.form-field .form-hint{color:var(--text-muted);font-size:12px;font-weight:400}.form-field input,.form-field select{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-inset);height:38px;color:var(--text-primary);padding:0 12px;font-size:13.5px}.form-field input:focus,.form-field select:focus{border-color:var(--accent);outline:none}.form-field-checkbox{flex-direction:row;align-items:center;gap:8px}.form-error{color:var(--danger);font-size:12.5px}.form-actions{flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:20px 22px}.card-section{margin-bottom:28px}.card-section-title{color:var(--text-primary);margin-bottom:14px;font-size:15px;font-weight:600}.stat-card-grid{flex-wrap:wrap;gap:16px;margin-bottom:28px;display:flex}.stat-card-grid>.stat-card{flex:172px;min-width:0}@media (width<=720px){.stat-card-grid>.stat-card{flex-basis:140px;padding:14px}}.stat-card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);align-items:center;gap:14px;padding:18px 20px;display:flex}.stat-card-link{color:inherit;cursor:pointer;text-decoration:none;transition:border-color .15s,box-shadow .15s}.stat-card-link:hover{border-color:var(--border-strong);text-decoration:none;box-shadow:0 2px 8px #1018281a}.stat-card-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stat-card-icon{border-radius:var(--radius-sm);background:var(--accent-soft);width:40px;height:40px;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.stat-card-danger .stat-card-icon{background:var(--danger-soft);color:var(--danger)}.stat-card-value{font-size:26px;font-weight:700;line-height:1.1}.stat-card-label{color:var(--text-secondary);margin-top:4px;font-size:12.5px}.table-container{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);overscroll-behavior-x:contain;position:relative;overflow:auto hidden}.data-table{width:100%}.data-table th{white-space:nowrap;text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);background:var(--bg-inset);border-bottom:1px solid var(--border);padding:12px 16px;font-size:12px;font-weight:600}.data-table td{border-bottom:1px solid var(--border);vertical-align:middle;height:56px;padding:10px 16px;font-size:13.5px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--bg-2-hover)}.data-table .cell-secondary{color:var(--text-secondary)}.data-table td.cell-actions,.data-table th.cell-actions{white-space:nowrap;text-align:right;width:1%}.data-table .cell-actions>*+*{margin-left:var(--space-3)}.data-table .cell-nowrap{white-space:nowrap}.truncate{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block;overflow:hidden}.data-table .cell-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cell-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-xs)}.th-sort{font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:0;display:inline-flex}.th-sort:hover{color:var(--text-primary)}.th-sort:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.responsive-list{container:list/inline-size}.list-toolbar{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-3);font-size:var(--fs-sm);color:var(--text-secondary);flex-wrap:wrap;display:flex}.list-summary{flex-wrap:wrap;align-items:center;gap:6px 12px;display:flex}.list-summary-item{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.list-summary-item strong{color:var(--text-primary)}.list-summary-dot{background:var(--text-muted);border-radius:999px;width:7px;height:7px}.list-summary-dot-success{background:var(--success)}.list-summary-dot-warning{background:var(--warning)}.list-summary-dot-danger{background:var(--danger)}.list-toolbar label{align-items:center;gap:var(--space-2);white-space:nowrap;display:inline-flex}.list-toolbar select{height:var(--control-h-sm);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-1);color:var(--text-primary);font-size:var(--fs-sm);padding:0 10px}.mobile-list{flex-direction:column;gap:10px;display:none}@container list (width<=719px){.stack-table thead{display:none}.stack-table,.stack-table tbody,.stack-table tr{width:100%;display:block}.stack-table tr{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.stack-table tbody tr:last-child{border-bottom:none}.data-table.stack-table td{white-space:normal;border:none;height:auto;padding:3px 0;display:block}.data-table.stack-table td:before{content:attr(data-label);width:6.5em;color:var(--text-secondary);font-size:var(--fs-xs);display:inline-block}.data-table.stack-table td.stack-actions{padding-top:var(--space-2)}.data-table.stack-table td.stack-actions:before{display:none}}@container list (width<=639px){.responsive-list:not(.camera-list):not(.event-list):not(.stack-list) .table-container{display:none}.responsive-list:not(.camera-list):not(.event-list):not(.stack-list) .mobile-list{display:flex}}.camera-table{table-layout:fixed}.camera-table .col-site{width:128px}.camera-table .col-status{width:132px}.camera-table .col-rtsp{width:26%}.camera-table .col-date{width:124px}.camera-table th.col-actions,.camera-table td.col-actions{width:148px}.camera-table .camera-name{color:var(--text-primary);font-weight:600}@container list (width<=1119px){.camera-list .col-rtsp{display:none}}@container list (width<=779px){.camera-list .table-container{display:none}.camera-list .mobile-list{display:flex}}.event-table .col-camera{max-width:280px}@container list (width<=859px){.event-list .col-site{display:none}}@container list (width<=779px){.event-list .table-container{display:none}.event-list .mobile-list{display:flex}}.mobile-card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:14px 16px}.mobile-card-link{color:inherit;text-decoration:none;display:block}.mobile-card-link:hover{border-color:var(--border-strong);text-decoration:none}.mobile-card-title{color:var(--text-primary);font-size:14.5px;font-weight:600}.mobile-card-subtitle{color:var(--text-secondary);margin-top:2px;font-size:12.5px}.mobile-card-media{margin-bottom:10px}.mobile-card-body{border-top:1px solid var(--border);flex-direction:column;gap:8px;margin-top:10px;padding-top:10px;display:flex}.mobile-card-row{font-size:var(--fs-sm);justify-content:space-between;align-items:center;gap:12px;display:flex}.mobile-card-row-label{color:var(--text-secondary);flex-shrink:0}.mobile-card-row-value{text-align:right;min-width:0;color:var(--text-primary);overflow-wrap:anywhere;word-break:break-all}.mobile-card-row-stack{flex-direction:column;align-items:flex-start;gap:2px}.mobile-card-row-stack .mobile-card-row-value{text-align:left}.mobile-card-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin-top:12px;padding-top:12px;display:flex}.camera-card-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.camera-card-head .mobile-card-title{min-width:0;font-size:15px;line-height:1.35}.card-fields{gap:6px var(--space-3);margin:var(--space-3) 0 0;padding-top:var(--space-3);border-top:1px solid var(--border);font-size:var(--fs-sm);grid-template-columns:4.5em minmax(0,1fr);display:grid}.card-fields dt{color:var(--text-secondary);white-space:nowrap}.card-fields dd{min-width:0;color:var(--text-primary);margin:0}.camera-card-head .status-badge{flex-shrink:0}.camera-card-actions{justify-content:space-between}.camera-card{flex-direction:column;display:flex}.camera-card .camera-card-actions{margin-top:auto}.camera-card .card-fields{margin-bottom:var(--space-3)}.event-card{column-gap:var(--space-3);grid-template-columns:96px minmax(0,1fr);align-items:start;display:grid}.event-card .mobile-card-media{grid-row:span 3;margin:0}.event-card .mobile-card-body{grid-column:1/-1}.data-table select{height:var(--control-h-sm);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-1);color:var(--text-primary);font-size:var(--fs-sm);padding:0 8px}@container list (width>=560px) and (width<=779px){.camera-list .mobile-list{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}}.status-badge{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.status-badge-dot{background:currentColor;border-radius:999px;width:6px;height:6px}.status-badge-success{background:var(--success-soft);color:var(--success)}.status-badge-warning{background:var(--warning-soft);color:var(--warning)}.status-badge-danger{background:var(--danger-soft);color:var(--danger)}.status-badge-neutral{background:var(--bg-inset);color:var(--text-secondary);border:1px solid var(--border)}.toggle-switch{background:var(--border-strong);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;width:38px;height:22px;position:relative}.toggle-switch:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:2px;left:2px}.toggle-switch-on{background:var(--success)}.toggle-switch-on:after{transform:translate(16px)}.auth-image-frame{display:block;position:relative;overflow:hidden}.auth-image-frame-natural{aspect-ratio:16/9;background:var(--bg-inset);width:100%}.auth-image-el{object-fit:contain;width:100%;height:100%;display:block}.event-thumbnail{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-inset)}.event-thumbnail-sm{width:64px;height:36px}.event-thumbnail-md{width:96px;height:54px}.auth-image-placeholder{background:var(--bg-inset);color:var(--text-muted);border-radius:var(--radius-sm);border:1px solid var(--border);justify-content:center;align-items:center;font-size:11px;display:flex}.auth-image-error{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:center;align-items:center;width:100%;min-height:220px;display:flex}.event-detail-image-wrap .auth-image-placeholder{aspect-ratio:16/9;width:100%}.detection-box{border:1.5px solid var(--danger);pointer-events:none;border-radius:2px;position:absolute}.detection-box-detailed{border-width:2px}.detection-box-label{background:var(--danger);color:#fff;white-space:nowrap;border-radius:3px;padding:1px 6px;font-size:11px;font-weight:600;line-height:1.4;position:absolute;top:2px;left:2px}.event-detail-toggle{color:var(--text-primary);flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:12px;font-size:13px;display:flex}.event-detail-toggle>span:not(.event-detail-toggle-hint){white-space:nowrap}.event-detail-toggle-hint{color:var(--text-muted);flex:240px;font-size:12px}.event-review{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.event-review-buttons{flex-wrap:wrap;gap:10px;display:flex}.event-review-error{color:var(--danger);margin:8px 0 0;font-size:12.5px}.event-review-meta{color:var(--text-muted);margin:8px 0 0;font-size:12.5px}.event-report-112{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.event-report-112-status{color:var(--danger);margin:0 0 10px;font-size:13.5px;font-weight:600}.event-report-112-hint{color:var(--text-muted);margin:8px 0 0;font-size:12px}.empty-state,.error-state{border:1px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--bg-2);text-align:center}.empty-state p{margin:0}.loading-state,.empty-state,.error-state{color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:48px 24px;font-size:13.5px;display:flex}.loading-state{flex-direction:row}.loading-spinner{animation:.8s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-state{color:var(--danger)}.login-page{background:radial-gradient(circle at top, #eef2fb 0%, var(--bg-0) 70%);min-height:100dvh;padding:calc(24px + var(--safe-top)) calc(16px + var(--safe-right)) calc(24px + var(--safe-bottom)) calc(16px + var(--safe-left));justify-content:center;align-items:center;display:flex}.login-page>div{flex-direction:column;align-items:center;width:100%;max-width:440px;display:flex}.login-brand{flex-direction:column;align-items:center;gap:8px;margin-bottom:32px;display:flex}.login-brand-icon{color:var(--accent);margin-bottom:4px}.login-brand-title{letter-spacing:.01em;color:var(--text-primary);font-size:23px;font-weight:700}.login-brand-subtitle{color:var(--text-secondary);margin-top:2px;font-size:13px}.login-form{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);width:min(360px,100%);box-shadow:var(--shadow-card);flex-direction:column;gap:18px;padding:36px 34px;display:flex}.login-form-wide{width:min(440px,100%)}.login-form .btn-primary{height:44px;margin-top:8px}.auth-field{flex-direction:column;gap:7px;display:flex}.auth-field label{color:var(--text-primary);font-size:13px;font-weight:600}.auth-field-optional{color:var(--text-muted);font-weight:400}.auth-field input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-inset);width:100%;height:42px;color:var(--text-primary);padding:0 12px;font-size:14px;transition:border-color .15s}.auth-field input:hover{border-color:var(--text-muted)}.auth-field input:focus{border-color:var(--accent);outline:none}.auth-field-error{color:var(--danger);font-size:12px}.auth-field-hint{color:var(--text-muted);font-size:12px}.auth-field-hint-success{color:var(--success)}.auth-field-hint-danger{color:var(--danger)}.auth-field-hint-muted{color:var(--text-muted)}.auth-field-row{align-items:center;gap:8px;display:flex}.auth-field-row input{flex:1;min-width:0}.auth-field-row .btn{flex-shrink:0;height:42px}.auth-section-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:700}.auth-section-title:not(:first-child){border-top:1px solid var(--border);margin-top:6px;padding-top:18px}.password-input{position:relative}.password-input input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-inset);width:100%;height:42px;color:var(--text-primary);padding:0 40px 0 12px;font-size:14px}.password-input input:focus{border-color:var(--accent);outline:none}.password-toggle{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.password-toggle:hover{color:var(--text-secondary);background:var(--bg-2-hover)}.login-divider{text-align:center;width:min(360px,100%);color:var(--text-muted);margin:18px 0;font-size:12px;position:relative}.login-divider:before,.login-divider:after{content:"";border-top:1px solid var(--border);width:40%;position:absolute;top:50%}.login-divider:before{left:0}.login-divider:after{right:0}.btn-kakao{color:#191919;background:#fee500;border:none;width:min(360px,100%);height:44px}.btn-kakao:hover{background:#fada0a}.btn-kakao:disabled{opacity:.6;cursor:not-allowed}.login-links{text-align:center;color:var(--text-secondary);margin-top:20px;font-size:13px}.account-card{max-width:480px;margin-bottom:16px}.account-card-wide{max-width:1040px}.table-container-flat{border:none;border-radius:0;margin:0 -4px}.account-fields dt{color:var(--text-secondary);margin-top:14px;font-size:12px}.account-fields dt:first-child{margin-top:0}.account-fields dd{overflow-wrap:anywhere;margin:3px 0 0;font-size:15px}.account-kakao-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.invite-result{background:var(--bg-inset);border:1px solid var(--border);border-radius:8px;margin-top:12px;padding:12px}.invite-result code{background:var(--bg-primary,transparent);border-radius:4px;padding:2px 6px;font-size:14px}.kakao-callback-error{text-align:center;width:min(360px,100%);color:var(--text-secondary);flex-direction:column;align-items:center;gap:14px;font-size:14px;display:flex}.login-links a{color:var(--accent);font-weight:600}.intrusion-list{flex-direction:column;gap:10px;display:flex}.intrusion-card{background:var(--bg-2);border:1px solid var(--border);border-left:3px solid var(--danger);border-radius:var(--radius-md);align-items:center;gap:16px;padding:12px 16px;display:flex}.intrusion-card-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.intrusion-card-title{color:var(--danger);font-size:14px;font-weight:700}.intrusion-card-meta{color:var(--text-secondary);font-size:12.5px}.event-nav{flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 14px;display:flex}.event-nav .btn{align-items:center;gap:4px;display:inline-flex}.event-nav-context{text-align:center;color:var(--text-secondary);flex:200px;font-size:13px}.event-nav-notice{color:var(--text-secondary);margin:-6px 0 12px;font-size:13px}@media (width<=720px){.event-nav .btn{flex:calc(50% - 5px);justify-content:center}.event-nav-context{flex-basis:100%;order:3}}.event-detail-grid{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.event-detail-grid>:first-child{flex:1.6 480px;min-width:0}.event-detail-grid>:last-child{flex:280px;min-width:0}.event-detail-image-wrap{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px}.event-detail-image-wrap .auth-image-frame-natural{border-radius:var(--radius-sm)}.event-detail-fields{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px 24px}.event-detail-type{color:var(--danger);margin-bottom:16px;font-size:18px;font-weight:700}.event-detail-fields dt{color:var(--text-secondary);margin-top:14px;font-size:12px}.event-detail-fields dt:first-child{margin-top:0}.event-detail-fields dd{overflow-wrap:anywhere;margin:3px 0 0;font-size:15px}.back-link{color:var(--text-secondary);align-items:center;gap:4px;margin-bottom:16px;font-size:13px;display:inline-flex}.roi-editor{container:roi-editor/inline-size}.roi-fields{gap:var(--space-3) var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.roi-fields>.form-field{flex:240px;min-width:0;max-width:400px}.roi-hint{color:var(--text-secondary);margin:0 0 12px;font-size:13px}.roi-hint p{margin:0 0 4px}.roi-canvas-wrap{cursor:default;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-inset);--roi-max-height:70dvh;justify-content:center;display:flex;position:relative;overflow:hidden}.roi-stage{width:min(100%, calc(var(--roi-max-height) * var(--roi-aspect-ratio,1.7778)));aspect-ratio:var(--roi-aspect,16 / 9);flex:none;position:relative}.roi-stage>.auth-image-frame{width:100%;height:100%;position:absolute;inset:0;aspect-ratio:auto!important}.roi-canvas-wrap.roi-canvas-draw .roi-stage{cursor:crosshair}.roi-canvas-wrap.roi-canvas-dragging,.roi-canvas-wrap.roi-canvas-dragging *{cursor:grabbing}.roi-snapshot-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.roi-snapshot-refresh{flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.roi-snapshot-error{text-align:center;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:32px 16px;font-size:13px;display:flex}.roi-snapshot-error p{margin:0}.roi-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.roi-polygon{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke;fill-opacity:.5}.roi-polygon.roi-polygon-invalid{stroke:var(--danger);stroke-dasharray:8 5}.roi-point-marker{cursor:grab;touch-action:none;z-index:2;border-radius:50%;outline:none;width:28px;height:28px;margin:-14px 0 0 -14px;position:absolute}.roi-point-marker:after{content:"";box-sizing:border-box;background:var(--accent);border:2px solid #fff;border-radius:50%;width:12px;height:12px;transition:transform .1s;position:absolute;top:8px;left:8px;box-shadow:0 0 0 1px #00000059}.roi-point-marker:hover:after{transform:scale(1.25)}.roi-point-marker.roi-point-selected:after,.roi-point-marker:focus-visible:after{border:3px solid var(--accent);background:#fff;width:16px;height:16px;top:6px;left:6px;box-shadow:0 0 0 3px #00000059}.roi-midpoint-handle{cursor:copy;touch-action:none;z-index:1;border-radius:50%;width:24px;height:24px;margin:-12px 0 0 -12px;position:absolute}.roi-midpoint-handle:after{content:"+";width:12px;height:12px;color:var(--accent);border:1px solid var(--accent);text-align:center;opacity:.75;background:#ffffffd9;border-radius:50%;font-size:11px;font-weight:700;line-height:10px;position:absolute;top:6px;left:6px}.roi-midpoint-handle:hover:after{opacity:1;transform:scale(1.2)}@media (pointer:coarse){.roi-point-marker{width:44px;height:44px;margin:-22px 0 0 -22px}.roi-point-marker:after{top:16px;left:16px}.roi-point-marker.roi-point-selected:after,.roi-point-marker:focus-visible:after{top:14px;left:14px}.roi-midpoint-handle{width:40px;height:40px;margin:-20px 0 0 -20px}.roi-midpoint-handle:after{top:14px;left:14px}}.roi-dirty-notice{color:var(--warning);margin:10px 0 0;font-size:13px}.roi-toolbar{flex-direction:column;gap:12px;margin-top:14px;display:flex}.roi-toolbar-edit{flex-wrap:wrap;align-items:center;gap:8px 10px;display:flex}.roi-toolbar-commit{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding-top:12px;display:flex}.roi-toolbar-commit .btn-primary{margin-left:auto}@container roi-editor (width<=520px){.roi-toolbar-edit{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.roi-toolbar-edit .roi-enabled-checkbox{grid-column:1/-1}.roi-toolbar-edit .btn{white-space:normal;width:100%;padding-block:6px;line-height:1.2}.roi-toolbar-commit{flex-direction:column-reverse;align-items:stretch}.roi-toolbar-commit .btn{width:100%;margin-left:0}.roi-toolbar-commit .btn-danger-outline{margin-top:6px}}.roi-enabled-checkbox{color:var(--text-secondary);align-items:center;gap:6px;margin-right:auto;font-size:13px;display:flex}.schedule-notice{color:var(--text-secondary);background:var(--bg-inset);border-radius:var(--radius-sm);margin:0 0 16px;padding:8px 12px;font-size:13px}.schedule-toggle-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.schedule-saved-notice{color:var(--success);margin:8px 0 0;font-size:12.5px}.detector-tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:20px;display:flex;overflow-x:auto}.detector-tab{color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;flex-shrink:0;padding:10px 18px;font-size:13.5px;font-weight:600}.detector-tab:hover{color:var(--text-primary)}.detector-tab-active{color:var(--accent);border-bottom-color:var(--accent)}.detector-not-implemented-banner{background:var(--warning-soft);color:var(--warning);border-radius:var(--radius-sm);margin:0 0 16px;padding:10px 14px;font-size:13px}.area-mode-selector{gap:10px;margin-bottom:18px;display:flex}.area-mode-option{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;background:var(--bg-inset);align-items:center;gap:8px;padding:10px 16px;font-size:13.5px;display:flex}.area-mode-option input{margin:0}.area-mode-option-selected{border-color:var(--accent);color:var(--text-primary);background:var(--accent-soft)}.time-select{align-items:center;gap:4px;display:inline-flex}.time-select-part{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-inset);min-width:56px;height:36px;color:var(--text-primary);font-variant-numeric:tabular-nums;padding:0 8px;font-size:13.5px}.time-select-part:hover{border-color:var(--text-muted)}.time-select-part:focus{border-color:var(--accent);outline:none}.time-select-part:disabled{opacity:.55;cursor:not-allowed}.time-select-colon{color:var(--text-secondary);font-weight:600}.schedule-view-tabs{gap:6px;margin-bottom:16px;display:flex}.schedule-view-tab{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-2);height:34px;color:var(--text-secondary);cursor:pointer;padding:0 14px;font-size:13px;font-weight:600}.schedule-view-tab-active{background:var(--accent);border-color:var(--accent);color:var(--bg-1)}.schedule-simple-view{flex-direction:column;gap:12px;margin-bottom:4px;display:flex}.schedule-group-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);flex-direction:column;gap:10px;padding:12px;display:flex}.schedule-group-header{align-items:baseline;gap:6px;display:flex}.schedule-group-title{color:var(--text-primary);font-size:14px;font-weight:700}.schedule-group-subtitle{color:var(--text-secondary);font-size:12.5px}.schedule-group-mixed-notice{border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--border-strong);color:var(--text-secondary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;font-size:12.5px;line-height:1.4;display:flex}.schedule-group-mixed-text{flex-direction:column;gap:2px;display:flex}.schedule-group-mixed-text strong{color:var(--text-primary);font-size:13px}.weekly-schedule-rows{flex-direction:column;gap:10px;display:flex}.weekly-schedule-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;display:flex}.weekly-schedule-day{width:22px;color:var(--text-primary);text-align:center;flex-shrink:0;font-size:13.5px;font-weight:700}.weekly-schedule-mode{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-2);height:36px;color:var(--text-primary);flex-shrink:0;padding:0 10px;font-size:13px}.weekly-schedule-times{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.weekly-schedule-times-sep{color:var(--text-secondary)}.weekly-schedule-error{flex-basis:100%}.holiday-toggle-row{color:var(--text-primary);align-items:center;gap:8px;margin:16px 0;font-size:13.5px;display:flex}.schedule-summary{background:var(--bg-inset);border-radius:var(--radius-sm);margin-top:6px;padding:12px 16px}.schedule-summary-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;margin:0 0 8px;font-size:12px;font-weight:700}.schedule-summary ul{color:var(--text-primary);flex-direction:column;gap:2px;margin:0;padding-left:18px;font-size:13px;display:flex}.filter-bar{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-3) var(--space-4)}.filter-bar-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.toolbar select{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-1);height:34px;color:var(--text-primary);padding:0 10px;font-size:13px}.event-filter-toolbar{flex-wrap:wrap;row-gap:10px}.event-filter-date-range{align-items:center;gap:8px;display:flex}.event-filter-date-range input[type=date]{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-1);height:34px;color:var(--text-primary);min-width:0;max-width:150px;padding:0 8px;font-size:13px}.event-filter-date-sep{color:var(--text-muted)}.event-filter-error{color:var(--danger);margin:-8px 0 16px;font-size:13px}@media (width<=480px){.event-filter-toolbar>select,.event-filter-date-range{flex:100%}.event-filter-date-range{min-width:0}.event-filter-date-range input[type=date]{flex:1 1 0;width:0;max-width:none}}@media (width>=721px) and (width<=1100px){.sidebar{align-items:stretch;width:68px;padding:16px 8px}.sidebar-brand{justify-content:center;padding:0 0 16px}.sidebar-brand-text,.sidebar-link-label{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.sidebar-link,.sidebar-logout{justify-content:center;padding:11px 0;position:relative}.sidebar .sidebar-badge{min-width:16px;margin:0;padding:0 4px;font-size:10px;position:absolute;top:3px;right:6px}.app-shell-main{padding:24px 24px 40px}}@media (width<=720px){.app-shell{flex-direction:column}.sidebar{display:none}.mobile-topbar{z-index:50;background:var(--bg-1);padding-top:var(--safe-top);display:block;position:sticky;top:0}.mobile-header{padding:8px calc(12px + var(--safe-right)) 8px calc(16px + var(--safe-left));background:var(--bg-1);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.mobile-header-brand{color:var(--text-primary);align-items:center;gap:8px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.mobile-menu-toggle{border-radius:var(--radius-sm);width:44px;height:44px;color:var(--text-primary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:flex}.mobile-menu-toggle:hover{background:var(--bg-inset)}.mobile-menu{padding:10px calc(12px + var(--safe-right)) 16px calc(12px + var(--safe-left));background:var(--bg-1);border-bottom:1px solid var(--border);max-height:calc(100vh - 61px);max-height:calc(100dvh - 61px - var(--safe-top));overscroll-behavior:contain;flex-direction:column;gap:2px;display:flex;overflow-y:auto;box-shadow:0 8px 20px #1018281f}.mobile-menu .sidebar-link{padding:12px;font-size:15px}.mobile-menu .sidebar-logout{border-top:1px solid var(--border);border-radius:0;margin-top:8px;padding-top:12px}.app-shell-main{padding:20px calc(16px + var(--safe-right)) calc(32px + var(--safe-bottom)) calc(16px + var(--safe-left))}.card{padding:16px}input,select,textarea{font-size:16px!important}.page-header{flex-direction:column;align-items:flex-start;gap:12px}.page-header-right{flex-wrap:wrap;justify-content:space-between;width:100%}.page-header-right .btn{white-space:nowrap}.area-mode-selector{flex-wrap:wrap}.area-mode-option{flex:auto;justify-content:center}.weekly-schedule-row{gap:8px 10px;padding:10px}.time-select-part{min-width:52px}.schedule-view-tab{flex:auto}.schedule-group-mixed-notice{flex-direction:column;align-items:stretch}.event-alert-popup-actions{flex-direction:column-reverse}.event-alert-popup-actions .btn{width:100%}.login-form{padding:28px 20px}}@media (pointer:coarse){.btn{min-height:44px}.btn-sm{min-height:40px}.sidebar-link,.sidebar-logout,.detector-tab{min-height:44px}.live-camera-menu-btn{width:40px;height:40px}.live-camera-menu-item{padding:12px}}.event-alert-popup-backdrop{padding:calc(16px + var(--safe-top)) calc(16px + var(--safe-right)) calc(16px + var(--safe-bottom)) calc(16px + var(--safe-left));z-index:1000;background:#0f141c8c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.event-alert-popup-card{width:min(92vw,420px);max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px - var(--safe-top) - var(--safe-bottom));background:var(--bg-2);border-radius:var(--radius-md);border:1px solid var(--border);padding:20px;overflow-y:auto;box-shadow:0 12px 32px #1018283d}.event-alert-popup-title{color:var(--danger);margin:0 0 14px;font-size:15.5px;font-weight:700}.event-alert-popup-fields{grid-template-columns:auto 1fr;gap:6px 12px;margin:0 0 18px;font-size:13.5px;display:grid}.event-alert-popup-fields dt{color:var(--text-secondary)}.event-alert-popup-fields dd{color:var(--text-primary);overflow-wrap:break-word;margin:0;font-weight:600}.event-alert-popup-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.event-alert-popup-image{aspect-ratio:16/9;border-radius:var(--radius-sm);background:var(--bg-1,#0f141c);object-fit:contain;width:100%;margin:0 0 14px;display:block;overflow:hidden}.event-alert-popup-hint{color:var(--text-secondary);margin:-8px 0 14px;font-size:12.5px}.live-camera-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,clamp(300px,24vw,520px)),1fr));gap:16px;display:grid}.live-camera-grid-single{grid-template-columns:minmax(0,960px)}.live-camera-card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);flex-direction:column;gap:8px;padding:10px;display:flex}.live-camera-card-fullscreen{z-index:1000;padding:calc(12px + var(--safe-top)) calc(12px + var(--safe-right)) calc(12px + var(--safe-bottom)) calc(12px + var(--safe-left));border-radius:0;justify-content:center;position:fixed;inset:0}.live-camera-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.live-camera-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.live-camera-fullscreen-meta{text-align:center;color:var(--text-secondary);margin-bottom:4px;font-size:13px}.live-camera-menu-wrap{position:relative}.live-camera-menu-btn{width:28px;height:28px;color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.live-camera-menu-btn:hover{background:var(--bg-inset);color:var(--text-primary)}.live-camera-menu{z-index:20;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:2px;min-width:160px;padding:6px;display:flex;position:absolute;top:32px;right:0;box-shadow:0 8px 24px #10182829}.live-camera-menu-item{color:var(--text-primary);border-radius:var(--radius-sm);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;font-size:13.5px;text-decoration:none;display:flex}.live-camera-menu-item:hover{background:var(--bg-inset)}.live-camera-move-menu{flex-direction:column;gap:2px;padding:4px 0 4px 20px;display:flex}.live-camera-move-menu button{color:var(--text-secondary);text-align:left;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:6px 8px;font-size:13px}.live-camera-move-menu button:hover:not(:disabled){background:var(--bg-inset);color:var(--text-primary)}.live-camera-move-menu button:disabled{color:var(--text-muted);cursor:not-allowed}.live-camera-video-wrap{aspect-ratio:16/9;cursor:pointer;background:#10151d;border:none;width:100%;padding:0;position:relative}.live-camera-card-fullscreen .live-camera-video-wrap{aspect-ratio:auto;min-height:0;max-height:calc(100vh - 96px);max-height:calc(100dvh - 96px - var(--safe-top) - var(--safe-bottom));flex:auto}.live-camera-video{object-fit:contain;background:#10151d;width:100%;height:100%;display:block}.live-camera-video-overlay{color:#e5e8ee;background:#10151d8c;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex;position:absolute;inset:0}.live-camera-retry-btn{color:#e5e8ee;cursor:pointer;background:0 0;border:1px solid #e5e8ee;border-radius:6px;padding:6px 14px;font-size:13px}.live-camera-retry-btn:hover{background:#e5e8ee26}.live-camera-footer{justify-content:flex-end;display:flex}.live-camera-failure-detail{text-align:center;color:#c9ced8;max-width:90%;font-size:12px;line-height:1.4}.app-update-notice{right:calc(16px + var(--safe-right));bottom:calc(16px + var(--safe-bottom));z-index:900;max-width:calc(100vw - 32px - var(--safe-left) - var(--safe-right));border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-2);box-shadow:var(--shadow-raised);font-size:var(--fs-md);color:var(--text-primary);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex;position:fixed}.app-update-notice-text{flex:auto}.live-camera-transport{color:var(--color-text-muted,#64748b);margin-left:8px;font-size:12px}.membership-notice{right:calc(16px + var(--safe-right));bottom:calc(16px + var(--safe-bottom));background:var(--bg-2);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius-md);max-width:calc(100vw - 32px);box-shadow:var(--shadow-raised);z-index:900;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;display:flex;position:fixed;left:auto}.site-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:12px;display:grid}.site-card{text-align:left;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;font:inherit;color:inherit;flex-direction:column;gap:6px;min-height:44px;padding:14px 16px;display:flex}.site-card:hover{background:var(--bg-2-hover)}.site-card-current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.site-card-name{overflow-wrap:anywhere;font-size:15px;font-weight:700}.site-card-meta{color:var(--text-secondary);font-size:13px}.section-title{margin:0 0 10px;font-size:15px;font-weight:700}.inline-form{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.inline-form .form-field{flex:220px;min-width:0}.result-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.result-item{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.result-item-main{overflow-wrap:anywhere;min-width:0}.form-ok{color:var(--success);font-size:13px}.admin-layout{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.admin-layout>:first-child{flex:280px;min-width:0}.admin-layout>:last-child{flex:3 460px;min-width:0}.admin-tabs{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.admin-tabs .btn[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent)}.audit-detail{color:var(--text-secondary);overflow-wrap:anywhere;font-size:12.5px}
