:root{--green:#214f3c;--green-dark:#173e30;--green-light:#edf4ee;--lime:#dcf1b0;--bg:#f7f8f5;--surface:#fff;--text:#253b32;--muted:#818b84;--line:#e8ece6;--red:#c74e4e;--amber:#a77821;--shadow:0 6px 28px #1c3b3010;font-family:Inter,"Be Vietnam Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);font-size:14px;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--bg);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:var(--green);text-decoration:none}a:hover{text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #a9d88c;outline-offset:3px}h1,h2,h3,p{margin:0}button{color:inherit}svg{flex-shrink:0}.icon{vertical-align:middle}h1{font-size:27px;letter-spacing:-.8px;line-height:1.35;font-weight:650}h2{font-size:17px;letter-spacing:-.25px;font-weight:650}h3{font-size:15px;font-weight:600}.muted{color:var(--muted)}.small{font-size:12px}.tiny{font-size:11px}.mono{font-family:ui-monospace,SFMono-Regular,monospace}.hidden,[hidden]{display:none!important}.flex{display:flex;align-items:center;gap:10px}.between{display:flex;align-items:center;justify-content:space-between;gap:14px}.stack{display:flex;flex-direction:column;gap:18px}.btn{display:inline-flex;justify-content:center;align-items:center;gap:9px;min-height:42px;border:1px solid var(--line);border-radius:9px;background:white;font-weight:550;font-size:13px;padding:10px 16px;transition:background .15s,transform .15s;white-space:nowrap}.btn:hover{background:#f2f5ef}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.primary:hover{background:#173f2e}.btn.lime{background:var(--lime);border-color:var(--lime);color:#233f29}.btn.danger{background:#c54c4c;color:#fff;border-color:#c54c4c}.btn.quiet{background:transparent;border-color:transparent;color:var(--muted)}.btn.sm{min-height:34px;padding:7px 12px;font-size:12px}.icon-btn{width:36px;height:36px;border:1px solid var(--line);border-radius:8px;background:white;display:inline-flex;align-items:center;justify-content:center;color:#6e7b72}.icon-btn:hover{color:var(--green);background:var(--green-light)}.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:550;padding:5px 9px;border-radius:5px;white-space:nowrap;background:#f1f3ee;color:#75816f}.badge .dot,.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}.badge.green{background:#edf5ec;color:#45804e}.badge.amber{background:#fbf4e6;color:#a47e2e}.badge.red{background:#fbebeb;color:#bb5757}.badge.blue{background:#edf3f9;color:#567f9d}.label{font-size:10px;letter-spacing:1.4px;font-weight:650;text-transform:uppercase;color:#8b978e}.page-heading{margin-bottom:26px}.page-heading p{color:var(--muted);font-size:13px;margin-top:7px;line-height:1.6}.page-heading .actions{display:flex;gap:10px}.panel{background:#fff;border:1px solid var(--line);border-radius:13px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:21px 23px;border-bottom:1px solid var(--line);gap:12px}.panel-head p{margin-top:5px;font-size:12px;color:var(--muted)}.panel-body{padding:23px}.text-link{border:0;background:transparent;color:var(--green);font-size:12px;display:inline-flex;gap:6px;align-items:center;font-weight:550;cursor:pointer}.field{display:flex;flex-direction:column;gap:7px}.field label{font-size:12px;font-weight:550;color:#596b60}.field input,.field select,.search-box input{width:100%;height:43px;background:#fff;border:1px solid #dfe5dc;border-radius:8px;padding:10px 12px;color:var(--text);outline:none;min-width:0}.field input:focus,.field select:focus,.search-box:focus-within{border-color:#648c65;box-shadow:0 0 0 3px #edf4e9}.field input::placeholder,.search-box input::placeholder{color:#a0a89f}.field small{font-size:11px;color:var(--muted);line-height:1.6}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-actions{display:flex;gap:9px;margin-top:22px}.notice{background:#f4f7ef;border:1px solid #e6ebdc;color:#748061;font-size:12px;line-height:1.75;border-radius:9px;padding:13px 15px;display:flex;align-items:flex-start;gap:10px}.notice .icon{margin-top:1px}.notice.warning{background:#fff9ee;border-color:#f1e5c7;color:#9b7c35}.notice.error{background:#fdf0f0;border-color:#eed6d6;color:#ac4848}.empty{text-align:center;padding:46px 24px;color:var(--muted);font-size:12px}.empty .empty-icon{display:flex;width:50px;height:50px;border-radius:14px;align-items:center;justify-content:center;margin:0 auto 15px;background:#f2f5ed;color:#8ca382}.empty h3{color:#5c6e5f;margin-bottom:7px}.empty p{line-height:1.7;max-width:330px;margin:auto}.empty .btn{margin-top:19px}.brand{display:flex;align-items:center;gap:10px;color:var(--green-dark);font-size:25px;font-weight:750;letter-spacing:-1.1px}.brand-mark{width:38px;height:38px;background:var(--green-dark);border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--lime)}.brand-mark svg{width:24px;height:24px}.brand-light{font-weight:450}.brand-dot{color:#79a652}.sidebar{width:236px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:32px 22px 20px;display:flex;flex-direction:column;z-index:30}.sidebar .brand{padding-left:8px;margin-bottom:43px}.nav-label{font-size:9px;letter-spacing:1.8px;color:#a0a89f;font-weight:600;padding:0 15px;margin-bottom:13px}.nav-list{display:flex;flex-direction:column;gap:7px}.nav-item{display:flex;align-items:center;gap:12px;color:#829085;padding:13px 15px;border-radius:9px;font-size:13px;font-weight:500;min-height:45px}.nav-item .icon{width:19px;height:19px}.nav-item:hover{background:#f4f6f0;color:var(--green)}.nav-item.active{color:var(--green);background:#edf3e9;font-weight:650}.nav-item.active:after{content:"";width:6px;height:6px;border-radius:50%;background:#6f9956;margin-left:auto}.sidebar-bottom{margin-top:auto}.sidebar-tip{padding:19px 15px;background:#f7f8f3;border:1px solid #edf0e5;border-radius:11px;margin-bottom:21px}.sidebar-tip .tip-icon{color:#698a4c;background:#e8efda;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:9px;margin-bottom:12px}.sidebar-tip h3{font-size:12px;margin-bottom:7px}.sidebar-tip p{font-size:11px;color:#909881;line-height:1.8}.sidebar-help{display:flex;align-items:center;gap:11px;padding:8px 14px;color:#8c968a;font-size:12px;background:none;border:0;width:100%;text-align:left}.app-shell{margin-left:236px;min-height:100vh}.topbar{height:82px;background:#fff;border-bottom:1px solid var(--line);padding:0 37px;display:flex;align-items:center;justify-content:space-between;gap:15px}.breadcrumb{display:flex;align-items:center;gap:11px;color:#9aa297;font-size:12px}.breadcrumb .icon{width:14px;height:14px}.breadcrumb strong{color:#4c6150;font-weight:500}.topbar-right{display:flex;align-items:center;gap:20px}.connection{display:flex;align-items:center;gap:7px;color:#7b8d75;font-size:11px}.connection .status-dot{color:#7aa568}.profile{display:flex;gap:10px;align-items:center;padding-left:20px;border-left:1px solid var(--line)}.avatar{height:34px;width:34px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#eaf0e1;color:#537044;font-size:12px;font-weight:650}.profile .username{font-size:12px;font-weight:600}.profile .role{font-size:10px;color:#a0a995;margin-top:3px}.content{max-width:1470px;margin:0 auto;padding:31px 37px 30px}.greeting{font-size:12px;color:#929b8e;margin-bottom:5px}.hero{display:flex;align-items:center;justify-content:space-between;position:relative;background:var(--green-dark);border-radius:15px;overflow:hidden;padding:30px 33px;color:white;min-height:202px;margin-bottom:23px}.hero-copy{position:relative;z-index:2;max-width:68%}.hero .eyebrow{font-size:10px;color:#bbd4a7;letter-spacing:1.8px;text-transform:uppercase;margin-bottom:10px;display:flex;gap:7px;align-items:center}.hero h2{font-size:27px;letter-spacing:-.8px;line-height:1.4;font-weight:550}.hero p{font-size:12px;color:#a9c2af;margin:10px 0 21px;line-height:1.7}.hero .btn{min-height:38px;font-size:11px;padding:9px 14px}.hero-art{position:absolute;right:9px;top:0;width:300px;height:100%;opacity:.95}.hero-ring{position:absolute;width:240px;height:240px;border:1px solid #ffffff09;border-radius:50%;right:0;top:-20px}.hero-ring:after{content:"";position:absolute;inset:25px;border:1px solid #ffffff0c;border-radius:50%}.hero-art svg{width:240px;height:200px;position:absolute;right:4px;bottom:-5px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:25px}.stat{padding:20px 21px;background:white;border:1px solid var(--line);border-radius:11px}.stat .stat-top{display:flex;align-items:center;justify-content:space-between;color:#87917f;font-size:11px;gap:10px}.stat-icon{height:32px;width:32px;border-radius:9px;display:flex;justify-content:center;align-items:center;background:#f0f5e9;color:#79935d}.stat-icon.blue{background:#edf3f7;color:#7995a4}.stat-icon.amber{background:#fbf6e9;color:#bea56a}.stat-icon.purple{background:#f3eff8;color:#a192b5}.stat-value{font-size:30px;font-weight:600;letter-spacing:-1.2px;line-height:1.4;margin-top:11px}.stat-value .unit{font-size:14px;color:#85927c;letter-spacing:0;font-weight:400;margin-left:4px}.stat-note{font-size:10px;color:#a2ab9c;margin-top:7px;display:flex;gap:5px;align-items:center;line-height:1.6}.stat-note .icon{width:12px;height:12px}.overview-grid{display:grid;grid-template-columns:1fr 312px;gap:22px;margin-bottom:24px}.chart{height:171px;display:flex;align-items:flex-end;gap:20px;padding:15px 22px 25px;position:relative;margin:16px 20px 10px;background:repeating-linear-gradient(to top,transparent 0,transparent 37px,#f0f2eb 38px,#f0f2eb 39px)}.chart-col{position:relative;display:flex;align-items:center;justify-content:flex-end;flex-direction:column;flex:1;height:100%}.chart-bar{width:45%;max-width:36px;background:#96b47a;border-radius:4px 4px 0 0;min-height:2px;transition:height .3s}.chart-col:last-child .chart-bar{background:#436d47}.chart-label{position:absolute;bottom:-18px;font-size:9px;color:#9ba591}.chart-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#a1ad99;font-size:11px;pointer-events:none}.drive-card{padding:23px;display:flex;flex-direction:column;justify-content:space-between;background:#f8faf4}.drive-logo{width:43px;height:43px;background:white;border:1px solid #e8eddd;border-radius:11px;display:flex;align-items:center;justify-content:center;margin-bottom:14px}.drive-card h3{font-size:14px;margin-bottom:8px}.drive-card p{font-size:11px;color:#919c84;line-height:1.8}.drive-card .btn{width:100%;font-size:11px;margin-top:20px}.section-icon{width:34px;height:34px;border-radius:9px;background:#f1f5ea;color:#7c9662;display:flex;align-items:center;justify-content:center}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}.data-table th{font-size:9px;letter-spacing:.9px;font-weight:600;color:#9ba58f;background:#fafbf8;padding:14px 23px;border-bottom:1px solid var(--line)}.data-table td{padding:15px 23px;border-bottom:1px solid #f0f2ec;font-size:12px;color:#71806b}.data-table tr:last-child td{border-bottom:0}.data-table .order{font-weight:600;color:#40533d;font-size:12px}.order-cell{display:flex;gap:11px;align-items:center}.file-icon{width:35px;height:39px;border-radius:7px;background:#f1f5eb;color:#94a581;display:flex;align-items:center;justify-content:center;overflow:hidden}.file-icon img{height:100%;width:100%;object-fit:cover}.order-meta{font-size:10px;color:#a2aa98;margin-top:4px}.table-actions{display:flex;align-items:center;gap:7px}.table-actions .icon-btn{width:29px;height:29px}.table-actions .icon{width:14px;height:14px}.table-footer{padding:14px 23px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;color:#9aa48f;font-size:10px}.page-footer{padding-top:26px;display:flex;align-items:center;justify-content:space-between;color:#a6ae9e;font-size:10px}.page-footer .icon{width:12px;height:12px}.footer-sign{display:flex;align-items:center;gap:5px}.filter-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:20px 23px;border-bottom:1px solid var(--line)}.search-box{position:relative;display:flex;align-items:center;border:1px solid #e1e6db;background:#fff;border-radius:8px;max-width:370px;flex:1;min-width:180px}.search-box .icon{margin-left:12px;color:#9aa68d;width:17px;height:17px}.search-box input{border:0;box-shadow:none!important;background:transparent;font-size:12px;height:39px}.filter-row select,.filter-row input[type=date]{height:40px;border:1px solid #e1e6db;border-radius:8px;color:#78866f;background:white;padding:0 12px;font-size:12px;max-width:170px}.devices-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.device-card{padding:23px}.device-card .device-visual{height:54px;width:54px;background:#f0f5ea;border-radius:14px;display:flex;align-items:center;justify-content:center;color:#76945d}.device-card .device-visual svg{height:30px;width:30px}.device-card h3{margin:19px 0 6px}.device-card p{font-size:11px;color:#9aa38f;margin-bottom:21px}.device-detail{padding:12px 0;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#929d86}.settings-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);gap:22px}.step-list{display:flex;gap:12px;margin-bottom:22px}.step{font-size:10px;color:#9ba68e;line-height:1.6;flex:1;display:flex;gap:7px;align-items:center}.step-number{height:22px;min-width:22px;border:1px solid #dce5cf;border-radius:50%;color:#739457;display:inline-flex;justify-content:center;align-items:center;font-size:10px}.setting-description{font-size:12px;color:#8e9b82;line-height:1.8;margin-bottom:21px}.connection-box{background:#f5f8ef;border:1px solid #e7eddc;border-radius:9px;padding:15px;display:flex;align-items:center;gap:12px;margin-bottom:20px}.connection-box p{font-size:11px;color:#8c9a7b;line-height:1.8}.redirect-box{background:#f7f8f4;border:1px solid var(--line);border-radius:7px;padding:11px 13px;font-size:11px;overflow-wrap:anywhere;display:flex;gap:10px;align-items:center;justify-content:space-between}.redirect-box code{min-width:0}.settings-section{margin-top:23px}.settings-section .panel-head h2{font-size:15px}.user-avatar{height:30px;width:30px;border-radius:8px;background:#f0f4e7;display:flex;align-items:center;justify-content:center;color:#718657;font-size:10px}.record-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:23px;align-items:start}.camera-panel{background:#fff;border:1px solid var(--line);border-radius:13px;overflow:hidden}.camera-topbar{padding:14px 19px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:12px}.camera-view{position:relative;background:#15261e;aspect-ratio:16/10;overflow:hidden;display:flex;align-items:center;justify-content:center}.camera-view video{width:100%;height:100%;object-fit:contain;position:absolute;inset:0}.camera-standby{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 20%,#294132,#14251c);display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;color:#a6b89d;padding:20px}.camera-standby .scan-frame{position:relative;width:110px;height:110px;margin-bottom:25px;display:flex;align-items:center;justify-content:center;color:#849e72}.scan-frame:before,.scan-frame:after{content:"";position:absolute;inset:0;border:2px solid #69825a;border-radius:11px;clip-path:polygon(0 0,28% 0,28% 4%,4% 4%,4% 28%,0 28%,0 0,100% 0,100% 28%,96% 28%,96% 4%,72% 4%,72% 0,100% 0,100% 100%,72% 100%,72% 96%,96% 96%,96% 72%,100% 72%,100% 100%,0 100%,0 72%,4% 72%,4% 96%,28% 96%,28% 100%,0 100%)}.scan-frame .icon{width:46px;height:46px;stroke-width:1.2}.camera-standby h3{font-size:15px;color:#d7e1d1;font-weight:500;margin-bottom:8px}.camera-standby p{font-size:11px;line-height:1.8;max-width:265px;color:#8fa487}.camera-standby .btn{margin-top:22px;min-height:41px}.camera-overlay{position:absolute;inset:0;pointer-events:none}.live-rec{position:absolute;left:17px;top:17px;display:flex;align-items:center;gap:7px;color:#fff;background:#0c2019a8;border:1px solid #ffffff20;border-radius:5px;padding:6px 9px;font-size:10px;font-weight:600}.live-rec .status-dot{background:#ef7770}.live-rec.is-recording .status-dot{animation:pulse 1.2s infinite}.camera-watermark{position:absolute;left:18px;bottom:18px;color:#e2ebdf;background:#10231bc4;border-radius:4px;padding:8px 11px;font-size:10px;line-height:1.8}.camera-watermark strong{font-size:12px;display:block;color:#fff}.scan-target{position:absolute;width:160px;height:160px;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid #e4f9d530;border-radius:12px}.scan-target:before,.scan-target:after{content:"";position:absolute;left:15px;right:15px;height:1px;background:#cceea47a;top:50%;box-shadow:0 0 10px #cceea44d}.scan-instruction{position:absolute;left:50%;top:calc(50% + 99px);transform:translateX(-50%);color:#d3e0ca;background:#15281dbd;border-radius:14px;padding:6px 12px;font-size:10px;white-space:nowrap}.record-controls{padding:20px;display:flex;align-items:center;justify-content:space-between;gap:15px}.record-state{display:flex;gap:11px;align-items:center}.record-state .state-light{height:10px;width:10px;border-radius:50%;background:#a1b190;box-shadow:0 0 0 5px #f2f5ed;margin:0 6px}.record-state.active .state-light{background:#df6868;box-shadow:0 0 0 5px #fceeee}.record-state h3{font-size:12px}.record-state p{font-size:10px;margin-top:5px;color:#9ba58d}.record-controls .btn{min-width:132px}.manual-code{padding:18px 20px;border-top:1px solid var(--line);background:#fcfdf9}.manual-code label{font-size:11px;color:#91a181;display:block;margin-bottom:10px}.manual-code .field-inline{display:flex;gap:8px}.manual-code input{flex:1;min-width:0;height:40px;border:1px solid #e1e7d9;border-radius:8px;padding:10px 12px;font-size:12px;outline:none}.manual-code .btn{min-height:40px;font-size:11px}.camera-options .field{margin-bottom:17px}.camera-options .field:last-child{margin-bottom:0}.camera-options select,.camera-options input{font-size:12px}.toggle-label{display:flex;gap:9px;align-items:center;color:#738367;font-size:12px}.toggle-label input{accent-color:var(--green);height:16px;width:16px}.record-tip{padding:17px 19px;border-top:1px solid var(--line);color:#8d9c7c;font-size:11px;line-height:1.8;display:flex;gap:10px}.queue-item{padding:14px 19px;border-bottom:1px solid var(--line)}.queue-item:last-child{border-bottom:0}.queue-item strong{font-size:11px}.queue-item p{font-size:10px;color:#9ca78f;margin-top:6px;line-height:1.7;overflow-wrap:anywhere}.queue-progress{height:3px;border-radius:3px;background:#edf1e7;margin-top:10px;overflow:hidden}.queue-progress span{display:block;background:#96b779;height:100%;transition:width .3s}.queue-empty{font-size:11px;color:#9ba58f;text-align:center;padding:26px 15px;line-height:1.8}.queue-empty .icon{margin-bottom:10px;color:#a5b196}.camera-hint{margin-top:18px}.live-clock{font-family:ui-monospace,monospace;color:#a4bc99;font-size:10px}.login-layout{display:grid;grid-template-columns:1.06fr 1fr;min-height:100vh;background:#fff}.login-story{background:#193e30;color:#fff;padding:42px 55px;display:flex;flex-direction:column;position:relative;overflow:hidden}.login-story .brand{color:#fff}.login-story .brand-mark{background:#ddefb6;color:#214532}.login-story .brand-dot{color:#bfdb99}.login-story-content{max-width:460px;margin:auto 0;position:relative;z-index:1;padding:65px 0}.login-story .eyebrow{color:#b6cf9d;font-size:10px;letter-spacing:2.1px;margin-bottom:21px;display:flex;gap:8px;align-items:center}.login-story h1{font-size:43px;letter-spacing:-1.5px;font-weight:500;line-height:1.35;color:#f0f5ec}.login-story h1 span{color:#d8eeb2}.login-story-content>p{font-size:13px;color:#a5bda6;line-height:1.95;max-width:350px;margin-top:20px}.login-proof{display:flex;align-items:center;gap:15px;margin-top:40px;background:#234a38;border:1px solid #ffffff12;padding:18px 19px;border-radius:11px;max-width:380px}.login-proof .proof-icon{height:43px;width:43px;display:flex;align-items:center;justify-content:center;background:#365d40;border-radius:11px;color:#d2eaa8}.login-proof strong{font-size:11px;font-weight:500;color:#e1edd5}.login-proof p{font-size:10px;color:#a0b58c;margin-top:6px}.login-story-bottom{font-size:10px;color:#89a58b;position:relative;z-index:1;display:flex;gap:6px;align-items:center}.login-story:after{content:"";position:absolute;width:500px;height:500px;border:1px solid #ffffff08;border-radius:50%;bottom:-270px;right:-130px;box-shadow:0 0 0 60px #ffffff03,0 0 0 120px #ffffff02}.login-form-side{display:flex;align-items:center;justify-content:center;padding:60px 35px}.login-form-wrap{width:100%;max-width:350px}.login-form-wrap>.brand{display:none}.login-welcome{font-size:11px;letter-spacing:1.3px;color:#94a185;text-transform:uppercase;margin-bottom:13px}.login-form-wrap h2{font-size:27px;font-weight:600;letter-spacing:-.7px}.login-form-wrap>p{font-size:12px;color:#98a18f;line-height:1.8;margin:11px 0 31px}.login-form-wrap form{display:flex;flex-direction:column;gap:20px}.login-form-wrap .field input{height:47px;background:#fdfefb}.login-form-wrap .btn{height:46px;width:100%;margin-top:5px}.login-safe{display:flex;justify-content:center;align-items:center;gap:6px;color:#a3ac98;font-size:10px;margin-top:26px}.login-safe .icon{width:13px;height:13px}.login-help{margin-top:52px;color:#a6ad9c;font-size:10px;line-height:1.8;text-align:center}.login-help code{font-size:10px;color:#839375;background:#f5f7f0;padding:2px 5px;border-radius:3px}.form-error{font-size:12px;color:#b95252;line-height:1.6;min-height:0}.initial-loading{min-height:70vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:15px;color:#8e9d80;font-size:12px}.spinner{width:25px;height:25px;border:2px solid #e5eddb;border-top-color:#608448;border-radius:50%;animation:spin .8s linear infinite}.page-loading{padding:70px;display:flex;align-items:center;justify-content:center;gap:12px;color:#94a086;font-size:12px}dialog{border:1px solid var(--line);border-radius:14px;padding:0;width:calc(100% - 32px);max-width:490px;box-shadow:0 20px 90px #0d291538;color:var(--text);max-height:90dvh;overflow-y:auto}dialog::backdrop{background:#132b1dc0;backdrop-filter:blur(3px)}dialog .dialog-header{padding:22px 24px 17px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}dialog .dialog-body{padding:24px}dialog .dialog-body form{display:flex;flex-direction:column;gap:17px}dialog h2{font-size:18px}dialog .form-actions{margin-top:4px}dialog.video-dialog{max-width:880px}dialog video{display:block;width:100%;max-height:65vh;background:#122119}.dialog-description{font-size:12px;color:#8d9c81;line-height:1.8;margin-bottom:20px}.help-steps{display:flex;flex-direction:column;gap:22px}.help-step{display:flex;align-items:flex-start;gap:13px}.help-step .step-number{margin-top:1px;width:25px;height:25px}.help-step h3{font-size:12px;margin-bottom:5px}.help-step p{font-size:11px;color:#8c9b80;line-height:1.8}#toast-region{position:fixed;right:24px;bottom:25px;z-index:100;display:flex;flex-direction:column;align-items:flex-end;gap:10px;max-width:420px;pointer-events:none}.toast{background:#fff;border:1px solid #dfe7d7;border-radius:10px;box-shadow:0 8px 30px #163c2621;padding:14px 17px;display:flex;align-items:flex-start;gap:11px;font-size:12px;line-height:1.7;color:#597249;animation:slide-in .2s ease;pointer-events:auto}.toast.error{color:#b05151;border-color:#e9d5d5}.toast .icon{margin-top:1px;min-width:18px;width:18px;height:18px}.bottom-nav{display:none}.camera-error{margin:0 0 16px}.is-offline .connection .status-dot{color:#d0a353}.is-offline .connection{color:#ac9367}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.35}}@keyframes slide-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(min-width:1550px){.content{padding-top:39px}.hero{min-height:220px}.hero h2{font-size:30px}.overview-grid{grid-template-columns:1fr 340px}}
@media(max-width:1190px){.sidebar{width:208px;padding:30px 15px 18px}.app-shell{margin-left:208px}.topbar{padding:0 25px}.content{padding:27px 25px}.overview-grid{grid-template-columns:1fr 275px;gap:17px}.stat{padding:17px 15px}.stat .stat-top{font-size:10px}.stat-grid{gap:12px}.record-grid{grid-template-columns:minmax(0,1fr) 260px;gap:17px}.hero-art{right:-30px;opacity:.75}.hero{padding:28px}.hero-copy{max-width:73%}.devices-grid{grid-template-columns:repeat(2,1fr)}.settings-grid{grid-template-columns:1fr}.profile .username,.profile .role{display:none}.profile{gap:0}.data-table th,.data-table td{padding-left:18px;padding-right:18px}}
@media(max-width:900px){.sidebar{width:78px;padding:28px 10px 18px;align-items:center}.sidebar .brand{padding:0;margin-bottom:35px}.sidebar .brand>span:last-child,.nav-label,.nav-item span,.sidebar-tip,.sidebar-help span{display:none}.nav-item{width:49px;height:49px;padding:15px;justify-content:center}.nav-item.active:after{display:none}.sidebar-help{width:49px;padding:15px}.app-shell{margin-left:78px}.nav-list{gap:12px}.sidebar .brand-mark{width:40px;height:40px}.overview-grid{grid-template-columns:1fr 260px}.record-grid{grid-template-columns:1fr}.record-side{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:17px}.record-side .stack{display:contents}.record-side .camera-hint{grid-column:1/-1;margin-top:0}.settings-grid{grid-template-columns:1fr}.login-story{padding:35px}.login-story h1{font-size:35px}}
@media(max-width:650px){h1{font-size:24px}.sidebar{display:none}.app-shell{margin-left:0;padding-bottom:76px}.topbar{height:65px;padding:0 20px}.breadcrumb{font-size:11px}.breadcrumb .crumb-home{display:none}.breadcrumb>.icon{display:none}.topbar-right{gap:11px}.profile{padding-left:12px}.connection{font-size:10px}.avatar{width:30px;height:30px;font-size:10px}.topbar-right>.icon-btn{width:30px;height:30px}.content{padding:24px 18px}.page-heading{margin-bottom:21px}.page-heading.between{align-items:flex-start;flex-wrap:wrap;gap:17px}.page-heading .actions{width:100%;gap:8px}.page-heading .actions .btn{flex:1}.page-heading p{font-size:12px;max-width:330px}.greeting{font-size:11px}.hero{padding:25px;min-height:207px;border-radius:13px;margin-bottom:18px}.hero h2{font-size:24px;max-width:250px}.hero-copy{max-width:100%}.hero p{max-width:235px;font-size:11px;margin-top:10px;line-height:1.8}.hero .eyebrow{font-size:8px;letter-spacing:1.6px}.hero-art{width:180px;right:-53px;top:30px;opacity:.35}.hero-art svg{width:210px}.hero .btn{font-size:10px}.stat-grid{grid-template-columns:1fr 1fr;gap:11px;margin-bottom:20px}.stat{padding:16px}.stat-value{font-size:27px;margin-top:9px}.stat-icon{width:29px;height:29px}.stat-icon .icon{width:17px;height:17px}.stat .stat-top{font-size:10px}.stat-note{font-size:9px;margin-top:6px}.overview-grid{grid-template-columns:1fr;gap:17px;margin-bottom:20px}.drive-card{padding:20px;display:grid;grid-template-columns:42px 1fr;column-gap:14px;align-items:start}.drive-logo{grid-row:1/3;margin-bottom:0}.drive-card h3{font-size:13px}.drive-card p{font-size:11px}.drive-card .btn{grid-column:1/-1;margin-top:16px}.panel-head{padding:18px}.panel-head h2{font-size:15px}.panel-head .text-link{font-size:10px}.data-table th,.data-table td{padding:13px 16px}.data-table td{font-size:11px}.table-footer{padding:13px 16px;font-size:9px}.page-footer{padding-top:22px;font-size:9px;line-height:1.7;gap:10px;align-items:flex-start}.page-footer .footer-right{display:none}.bottom-nav{position:fixed;bottom:0;inset-inline:0;display:flex;justify-content:space-around;gap:0;background:#fff;border-top:1px solid #e3e9dc;padding:9px 4px calc(8px + env(safe-area-inset-bottom));z-index:35}.bottom-nav a{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:9px;color:#9aa98e;min-width:52px;padding:3px 7px;position:relative}.bottom-nav a.active{color:#3e6633;font-weight:650}.bottom-nav a.active:before{content:"";position:absolute;width:20px;height:2px;background:#7b9c5d;top:-10px;border-radius:2px}.bottom-nav .icon{height:21px;width:21px}.bottom-nav .record-nav .icon{color:#fff;width:22px;height:22px}.bottom-nav .record-nav .record-nav-icon{background:var(--green);height:42px;width:42px;display:flex;align-items:center;justify-content:center;border-radius:13px;margin-top:-15px;box-shadow:0 3px 0 5px #fff}.bottom-nav .record-nav{gap:3px}.bottom-nav .record-nav.active:before{display:none}.filter-row{padding:16px;gap:10px}.search-box{width:100%;max-width:none;flex:auto}.filter-row select,.filter-row input[type=date]{flex:1;max-width:none;width:calc(50% - 5px);min-width:0;font-size:11px}.filter-row .btn{width:100%;font-size:11px}.devices-grid{grid-template-columns:1fr;gap:15px}.device-card{padding:20px}.form-grid{grid-template-columns:1fr}.panel-body{padding:19px}.step-list{gap:8px}.step{font-size:9px;gap:5px}.step-number{min-width:19px;height:19px;font-size:9px}.settings-section{margin-top:18px}.settings-grid{gap:18px}.settings-grid .panel-head .flex{gap:9px}.settings-grid .panel-head .badge{font-size:9px;padding:5px 6px}.settings-grid .panel-head .drive-logo{height:35px;width:35px}.setting-description{font-size:11px}.redirect-box{font-size:10px}.record-grid{gap:17px}.camera-view{aspect-ratio:4/3}.record-side{display:flex;flex-direction:column;gap:17px}.record-side>.panel{width:100%}.record-side .camera-hint{width:100%;font-size:10px}.camera-options .panel-body{display:grid;grid-template-columns:1fr 1fr;gap:15px}.camera-options .field{margin:0}.camera-options .field:first-child{grid-column:1/-1}.camera-options .toggle-label{font-size:11px;grid-column:1/-1}.camera-options select,.camera-options input{height:40px}.camera-topbar{padding:12px 15px;font-size:11px}.camera-topbar .badge{font-size:9px}.camera-topbar .live-clock{font-size:9px}.record-controls{padding:17px 15px;gap:8px}.record-controls .btn{min-width:112px;font-size:11px;padding:10px}.record-state h3{font-size:11px}.record-state p{font-size:9px}.manual-code{padding:16px 15px}.manual-code .btn{padding:8px 11px}.manual-code input{font-size:11px}.camera-watermark{left:12px;bottom:12px;font-size:9px;max-width:calc(100% - 24px)}.camera-watermark strong{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.live-rec{left:12px;top:12px;font-size:9px}.login-layout{display:flex;flex-direction:column;min-height:100dvh}.login-story{display:none}.login-form-side{padding:40px 27px;flex:1;min-height:100dvh;align-items:center;background:#fbfcf8}.login-form-wrap{max-width:360px}.login-form-wrap>.brand{display:flex;margin-bottom:48px}.login-form-wrap h2{font-size:26px}.login-form-wrap>p{font-size:12px}.login-help{margin-top:36px;font-size:10px}.login-form-wrap .field input{background:white}.login-safe{font-size:10px}#toast-region{right:16px;left:16px;bottom:89px;max-width:none;align-items:stretch}.toast{font-size:11px;padding:12px 14px}.chart{height:150px;padding-left:10px;padding-right:10px;gap:12px;margin-left:14px;margin-right:14px}.empty{padding:35px 18px}.empty p{font-size:11px}.notice{font-size:11px;padding:12px}.btn{min-height:42px}.table-actions .icon-btn{width:36px;height:36px}dialog .dialog-body{padding:20px}dialog .dialog-header{padding:17px 20px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.rotate-back{transform:rotate(180deg)}
