:root{--brand: #2563eb;--brand-2: #1d4ed8;--brand-soft: #eaf1ff;--brand-line: #cfe0ff;--brand-grad: linear-gradient(135deg, #3b82f6, #2563eb);--side-grad: linear-gradient(180deg, #14357d 0%, #1b4bb5 100%);--bg: #f2f5fa;--panel: #ffffff;--line: #e8eef7;--text: #1f2937;--muted: #6b7280;--danger: #dc2626;--warn: #d97706;--ok: #059669;--shadow: 0 1px 3px rgba(23, 51, 108, .06), 0 6px 18px rgba(23, 51, 108, .05)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Microsoft YaHei,PingFang SC,sans-serif;color:var(--text);background:var(--bg)}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;outline:none;background:#fff}input:focus,select:focus,textarea:focus{border-color:var(--brand)}.auth-wrap{min-height:100vh;display:flex;flex-direction:column;position:relative;overflow:hidden;background:radial-gradient(1100px 520px at 10% 14%,rgba(255,255,255,.16),transparent 62%),radial-gradient(900px 620px at 92% 86%,rgba(129,90,255,.42),transparent 62%),linear-gradient(126deg,#2f6bff,#3f5bff 46%,#7b3ff2);background-size:160% 160%;animation:authBg 16s ease-in-out infinite}@keyframes authBg{0%,to{background-position:0% 30%}50%{background-position:100% 70%}}.auth-deco{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.auth-deco .blob{position:absolute;border-radius:50%;filter:blur(2px);display:block}.auth-deco .b1{width:460px;height:460px;left:-8%;top:-14%;background:radial-gradient(circle at 35% 35%,#fff3,#fff0 66%);animation:blobFloat 22s ease-in-out infinite}.auth-deco .b2{width:380px;height:380px;right:6%;top:40%;background:radial-gradient(circle at 40% 40%,#ad8eff5c,#ad8eff00 68%);animation:blobFloat 27s ease-in-out infinite reverse}.auth-deco .b3{width:300px;height:300px;left:32%;bottom:-12%;background:radial-gradient(circle at 40% 40%,#ffffff24,#fff0 66%);animation:blobFloat 19s ease-in-out infinite 3s}@keyframes blobFloat{0%,to{transform:translate(0) scale(1)}33%{transform:translate(46px,-30px) scale(1.08)}66%{transform:translate(-30px,26px) scale(.94)}}.auth-deco .cross{position:absolute;color:#ffffff57;font-style:normal;font-weight:700;text-shadow:0 2px 14px rgba(12,34,96,.3);animation:crossDrift 14s ease-in-out infinite}.auth-deco .c1{font-size:30px;left:12%;top:24%}.auth-deco .c2{font-size:20px;left:46%;top:14%;animation-delay:-4s;animation-duration:17s}.auth-deco .c3{font-size:24px;left:66%;top:68%;animation-delay:-8s;animation-duration:19s}.auth-deco .c4{font-size:18px;left:22%;top:76%;animation-delay:-11s;animation-duration:15s}@keyframes crossDrift{0%,to{transform:translateY(0) rotate(0);opacity:.8}50%{transform:translateY(-26px) rotate(12deg);opacity:.4}}@media (prefers-reduced-motion: reduce){.auth-wrap,.auth-deco .blob,.auth-deco .cross{animation:none!important}}.auth-main{flex:1;display:flex;align-items:center;justify-content:center;gap:7vw;padding:56px 6vw 20px;flex-wrap:wrap;position:relative;z-index:1}.auth-title{color:#fff;max-width:560px}.auth-title h1{font-size:33px;line-height:1.35;letter-spacing:2px;margin:0 0 14px;text-shadow:0 2px 20px rgba(12,34,96,.35)}.auth-title p{font-size:15px;line-height:1.95;margin:0;opacity:.93}.auth-card{width:396px;background:#fff;border-radius:14px;padding:28px 32px 26px;box-shadow:0 26px 64px #091e5861}.auth-card-ttl{text-align:center;font-size:17px;font-weight:700;margin-bottom:16px;letter-spacing:1px}.auth-tabs{display:flex;gap:8px;margin-bottom:16px}.auth-tabs button{flex:1;padding:9px;border:none;background:#f1f5f9;border-radius:9px;color:var(--muted);font-weight:600}.auth-tabs button.active{background:var(--brand-soft);color:var(--brand)}.auth-card input{width:100%;margin-bottom:12px;background:#f5f8fc;border:1px solid #e6edf7;border-radius:9px;padding:11px 12px}.auth-card input:focus{background:#fff;border-color:var(--brand)}.auth-btn{width:100%;margin-top:8px;padding:12px;border-radius:9px;background:linear-gradient(90deg,#2f6bff,#7b3ff2);font-size:15px;letter-spacing:2px}.auth-btn:disabled{opacity:.6}.auth-err{color:var(--danger);font-size:13px;margin-bottom:8px}.auth-foot{position:relative;z-index:1;text-align:center;color:#ffffffdb;font-size:12.5px;padding:16px 0 20px}.brand-box{display:flex;flex-direction:column;min-width:0}.brand-box .brand-txt{font-size:16px;font-weight:700;letter-spacing:.5px}.brand-box .brand-co{font-size:11px;font-weight:500;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.sidebar.collapsed .brand-box .brand-txt,.sidebar.collapsed .brand-box .brand-co{display:none}.sidebar.collapsed .brand:after{content:"SaaS";font-size:12px;font-weight:700;color:var(--brand)}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--panel);color:var(--text);display:flex;flex-direction:column;padding:18px 12px;flex:0 0 auto;border-right:1px solid var(--line)}.sidebar .brand{color:var(--text);font-size:16px;font-weight:700;padding:6px 8px 18px;display:flex;align-items:center}.sidebar nav{display:flex;flex-direction:column;gap:4px;flex:1}.sidebar nav button{display:flex;align-items:center;gap:10px;padding:10px 12px;border:none;background:transparent;color:var(--muted);border-radius:9px;font-size:14px;text-align:left}.sidebar nav button:hover{background:var(--brand-soft);color:var(--brand)}.sidebar nav button.active{background:linear-gradient(135deg,var(--brand-2),var(--brand));color:#fff;box-shadow:0 4px 12px #2563eb47}.sidebar .ico{font-size:15px;flex:0 0 20px;text-align:center}.side-foot{border-top:1px solid var(--line);padding-top:12px;font-size:12px}.side-foot .tenant{color:var(--text);font-weight:600;font-size:13px}.side-foot .user{color:var(--muted);margin:3px 0 10px}.side-foot .logout{width:100%;padding:8px;background:var(--brand-soft);color:var(--brand);border:none;border-radius:8px}.side-foot .logout:hover{background:var(--brand-line);color:var(--brand-2)}.sidebar nav button.nav-group{display:flex;align-items:center;justify-content:space-between;width:100%;margin:0;padding:12px 12px 4px;border:none;background:none;font-size:13px;color:var(--text);letter-spacing:1px;font-weight:600;opacity:.82;cursor:pointer;text-align:left;font-family:inherit;border-radius:0}.sidebar nav button.nav-group:hover{background:none;color:var(--brand);opacity:1}.nav-group-arrow{font-size:10px;flex:0 0 auto}.sidebar nav button.nav-group.closed{opacity:.55}.sidebar.collapsed .nav-group{display:none}.nav-badge{margin-left:auto;min-width:18px;height:18px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;background:#ef4444;color:#fff;font-size:11px;font-weight:700;border-radius:9px;line-height:1;flex:0 0 auto}.sidebar.collapsed .nav-badge{display:none}.tabs-bar{display:flex;gap:4px;overflow-x:auto;padding:0 18px;border-bottom:1px solid var(--line);background:var(--panel);scrollbar-width:thin}.tabs-bar::-webkit-scrollbar{height:4px}.tabs-bar::-webkit-scrollbar-thumb{background:var(--line);border-radius:2px}.tab{display:flex;align-items:center;gap:6px;flex:0 0 auto;padding:9px 12px;font-size:13px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;-webkit-user-select:none;user-select:none}.tab:hover{color:var(--brand);background:var(--brand-soft)}.tab.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}.tab-x{border:none;background:transparent;color:inherit;font-size:15px;line-height:1;padding:0 2px;border-radius:4px;opacity:.55}.tab-x:hover{background:#00000014;opacity:1}.tab-pane.hidden{display:none}.tab-refresh{margin-left:auto;flex:0 0 auto;border:1px solid var(--line);background:var(--panel);color:var(--muted);width:30px;height:30px;border-radius:8px;font-size:16px;line-height:1;cursor:pointer}.tab-refresh:hover{background:var(--brand-soft);color:var(--brand);border-color:var(--brand-line)}.scan-btns{display:inline-flex;gap:8px;flex-wrap:wrap;align-items:center}.stat.click{cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.stat.click:hover{transform:translateY(-2px);box-shadow:0 10px 22px #2563eb29}.stat.click:active{transform:translateY(0)}.collapse-btn{margin-left:auto;width:26px;height:26px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--bg);color:var(--muted);border-radius:7px;font-size:13px;line-height:1;padding:0}.collapse-btn:hover{background:var(--brand-soft);color:var(--brand)}.topbar-collapse{display:none;margin-left:0;margin-right:2px;width:38px;height:38px;font-size:16px}.logout .logout-ico{display:none}.sidebar.collapsed{width:64px;padding:18px 8px}.sidebar.collapsed .brand{padding:6px 0 18px;justify-content:center}.sidebar.collapsed .brand .brand-txt{display:none}.sidebar.collapsed .brand .logo{margin-right:0}.sidebar.collapsed .collapse-btn{margin-left:0}.sidebar.collapsed nav button{justify-content:center;padding:10px 0}.sidebar.collapsed nav button .lbl{display:none}.sidebar.collapsed .side-foot{text-align:center}.sidebar.collapsed .side-foot .tenant,.sidebar.collapsed .side-foot .user{display:none}.sidebar.collapsed .side-foot .logout{padding:8px 0}.sidebar.collapsed .side-foot .logout .logout-txt{display:none}.sidebar.collapsed .side-foot .logout .logout-ico{display:inline;font-size:15px}@media (min-width: 901px){.topbar-collapse{display:inline-flex}}.content{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:58px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 26px;position:sticky;top:0;z-index:5}.topbar h2{font-size:17px;margin:0}.page{padding:22px 26px 40px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin-bottom:18px}.stat{background:#fff;border-radius:14px;padding:18px 20px;border:1px solid var(--line)}.stat .num{font-size:28px;font-weight:700;color:var(--brand)}.stat.warn .num{color:var(--warn)}.stat.danger .num{color:var(--danger)}.stat .lbl{color:var(--muted);font-size:13px;margin-top:4px}.panel{background:#fff;border-radius:14px;padding:18px 20px;border:1px solid var(--line);margin-bottom:18px}.panel h3{margin:0 0 14px;font-size:15px}.panel h3 .count{background:#eef2f7;color:var(--muted);border-radius:999px;padding:1px 9px;font-size:12px;margin-left:6px}.form-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-bottom:12px}.field{display:flex;flex-direction:column;gap:5px}.field>span{font-size:12px;color:var(--muted)}.field input,.field select{min-width:130px}.field textarea{min-width:100%}.grid-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:12px 14px;align-items:stretch;margin-bottom:12px}.grid-form .field{min-width:0}.grid-form .field input,.grid-form .field select{width:100%;min-width:0}.grid-form .field.wide{grid-column:span 2}.grid-form .gf-actions{display:flex;align-items:flex-end}.grid-form .gf-actions .btn-primary{width:100%;padding:10px 18px}.tpl-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}.tpl-btn{background:var(--brand-soft);border-color:var(--brand-line)}.tpl-btn:hover{background:var(--brand-line)}@media (max-width: 560px){.grid-form{grid-template-columns:1fr}.grid-form .field.wide{grid-column:auto}}.btn-primary{background:linear-gradient(135deg,var(--brand-2),var(--brand));color:#fff;border:none;padding:9px 18px;border-radius:9px;font-weight:600}.btn-primary:hover{opacity:.92}.btn-ghost{background:#eef6f8;color:var(--brand);border:1px solid #cfe6ec;padding:8px 14px;border-radius:9px}.btn-mini{background:#eef6f8;color:var(--brand);border:1px solid #cfe6ec;padding:5px 12px;border-radius:7px;font-size:12px}.btn-mini:hover,.btn-ghost:hover{background:#e0f0f4}.parse-ok{color:var(--ok);font-size:13px;padding-bottom:8px}.parse-no{color:var(--danger);font-size:13px;padding-bottom:8px}.parse-warn{color:var(--warn);font-size:13px;padding-bottom:8px}.err{color:var(--danger);font-size:13px;margin-top:8px}.empty{color:var(--muted);font-size:13px;padding:8px 0}.empty-cell{text-align:center;color:var(--muted);padding:22px}.tbl{width:100%;border-collapse:collapse;font-size:13.5px}.tbl th{text-align:left;color:var(--muted);font-weight:600;padding:9px 10px;border-bottom:1px solid var(--line);background:#fafbfc}.tbl td{padding:9px 10px;border-bottom:1px solid #f1f4f8}.tbl tr:hover td{background:#f9fbfc}.row-warn td{background:#fff8ec}.row-danger td{background:#fdecec;color:#a11}.tag{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;background:#eef2f7;color:var(--muted)}.tag.ok{background:#e7f6ef;color:var(--ok)}.tag.warn{background:#fdf3e3;color:var(--warn)}.tag.danger{background:#fdeaea;color:var(--danger)}.alert-list{list-style:none;margin:0;padding:0}.alert-list li{display:flex;align-items:center;gap:9px;padding:9px 0;border-bottom:1px solid #f1f4f8;font-size:13.5px}.alert-list .dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:0 0 auto}.alert-list li.danger .dot{background:var(--danger)}.alert-list li.warning .dot{background:var(--warn)}.alert-list li.info .dot{background:var(--brand)}.alert-list .date{margin-left:auto;color:var(--muted);font-size:12px}.loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:var(--muted)}.scan-wrap{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.scan-video{width:260px;height:180px;border-radius:10px;background:#000;object-fit:cover}.scan-hint{font-size:12px;color:var(--warn);max-width:320px}.file-btn{cursor:pointer;display:inline-flex;align-items:center}.divider{margin:14px 0 12px;color:var(--muted);font-size:12px;border-top:1px dashed var(--line);padding-top:12px}.ok-msg{color:var(--ok);font-size:13px;margin-top:8px}.muted{color:var(--muted)}.small{font-size:12px;margin-top:6px}.row-danger td{background:#fdeaea}.ellipsis{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ops{display:flex;gap:6px;flex-wrap:wrap}.count.danger{background:#fdeaea;color:var(--danger);margin-left:8px}.timeline{list-style:none;margin:4px 0;padding:6px 0 6px 14px;border-left:2px solid #e3ecf2}.timeline li{display:flex;gap:12px;padding:5px 0;font-size:13px}.timeline li .t{color:var(--muted);flex:0 0 145px;font-variant-numeric:tabular-nums}.timeline li .d{color:#24313c}.btn-mini.danger{background:#fdeaea;color:var(--danger);border-color:#f6d4d4}.btn-mini.danger:hover{background:#fbdcdc}.auth-tip{margin-top:12px;font-size:12px;color:var(--muted);text-align:center}.row-edit td{background:#eef7fb;padding:6px 8px}.row-edit td input,.row-edit td select{width:100%;min-width:90px;padding:6px 8px;font-size:13px}.sub-warn{color:var(--danger);font-size:11.5px;margin-top:3px;line-height:1.4}.export-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.export-bar .muted{margin-right:2px}.usage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:12px;margin-bottom:12px}.usage-item{background:#f7fafc;border:1px solid var(--line);border-radius:12px;padding:12px 14px;text-align:center}.usage-item .u{display:block;font-size:22px;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums}.usage-item .k{display:block;font-size:12px;color:var(--muted);margin-top:3px}.kv{display:flex;flex-direction:column;gap:8px;margin-top:4px}.kv>div{display:flex;align-items:baseline;gap:10px;font-size:13.5px}.kv .k{color:var(--muted);flex:0 0 96px}.kv .v{color:var(--text);font-weight:600}.manual-box{margin-top:12px;padding:14px 16px 6px;background:#f7fafc;border:1px dashed #cfe0e8;border-radius:12px}.check-line{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--text);cursor:pointer;padding-bottom:8px}.check-line input[type=checkbox]{width:15px;height:15px;accent-color:var(--brand);cursor:pointer}.tbl-wrap{width:100%}.menu-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;flex:0 0 auto;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);font-size:19px;line-height:1}.menu-btn:hover{background:#f1f5f9}.drawer-mask{display:none}.todo-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px}.todo-head h3{margin:0}.todo-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:12px}.todo-form .field.grow{flex:1 1 240px}.todo-form .field.grow input{width:100%}.todo-list{list-style:none;margin:0;padding:0}.todo-list li{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:11px;margin-bottom:8px;background:#fff}.todo-list li.overdue{border-color:#f6d4d4;background:#fef7f7}.todo-list li.due-soon{border-color:#f3e0c0;background:#fffbf4}.todo-list li.is-done{opacity:.62;background:#f8fafb}.todo-list .box{padding-top:2px}.todo-list .box input{width:18px;height:18px;accent-color:var(--brand);cursor:pointer}.todo-list .body{flex:1;min-width:0}.todo-list .ttl{font-size:14px;font-weight:600;word-break:break-word}.todo-list li.is-done .ttl{text-decoration:line-through;font-weight:500;color:var(--muted)}.todo-list .meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:5px;font-size:12px;color:var(--muted)}.todo-list .rmk{color:#4b5563;word-break:break-word}.todo-list .ops{display:flex;gap:6px;flex:0 0 auto}.todo-list .edit-row{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;width:100%}.todo-summary{display:flex;flex-wrap:wrap;gap:8px;font-size:12.5px}.todo-summary .pill{background:#eef2f7;color:var(--muted);border-radius:999px;padding:3px 11px}.todo-summary .pill.danger{background:#fdeaea;color:var(--danger)}.todo-summary .pill.warn{background:#fdf3e3;color:var(--warn)}.todo-summary .pill.ok{background:#e7f6ef;color:var(--ok)}.dc-hero{background:var(--brand-grad);color:#fff;border-radius:14px;padding:18px 20px;margin-bottom:18px;box-shadow:0 6px 18px #2563eb38}.dc-hero h2{margin:0 0 6px;font-size:18px}.dc-hero p{margin:0;font-size:13px;opacity:.92;line-height:1.6}.step{display:flex;gap:12px;padding:14px 0;border-bottom:1px dashed var(--line)}.step:last-child{border-bottom:none}.step .no{flex:0 0 26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--brand-2),var(--brand));color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}.step .sc{flex:1;min-width:0}.step .sc h4{margin:2px 0 6px;font-size:14px}.step .sc p{margin:0 0 10px;font-size:12.5px;color:var(--muted);line-height:1.65}.step .sc .form-row{margin-bottom:0}.plain-note{background:#f7fafc;border:1px solid var(--line);border-radius:11px;padding:12px 14px;font-size:12.5px;color:#374151;line-height:1.7}.plain-note b{color:var(--text)}details.more{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:10px 14px;background:#fbfcfd}details.more>summary{cursor:pointer;font-size:13px;color:var(--brand);font-weight:600}details.more[open]>summary{margin-bottom:12px}details.more .hint{font-size:12px;color:var(--muted);margin:0 0 12px;line-height:1.7}details.more .panel{border:none;padding:0;margin:0 0 18px;background:transparent;border-radius:0}details.more .panel h3{font-size:13.5px;color:#374151}.status-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;margin-bottom:10px}.status-dot{width:9px;height:9px;border-radius:50%;background:var(--muted);flex:0 0 auto}.status-dot.on{background:var(--ok)}.status-dot.off{background:#cbd5e1}@media (max-width: 900px){.layout{display:block}.content{min-width:0}input,select,textarea,.row-edit td input,.row-edit td select{font-size:16px}.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:60;width:252px;max-width:84vw;overflow-y:auto;padding-bottom:calc(18px + env(safe-area-inset-bottom,0px));transform:translate(-102%);transition:transform .22s ease;box-shadow:none}.sidebar.open{transform:translate(0);box-shadow:0 0 44px #00000061}.drawer-mask{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:#0f172a7a}.menu-btn{display:inline-flex}.sidebar .collapse-btn{display:none}.sidebar.collapsed{width:252px;max-width:84vw;padding:18px 12px}.sidebar.collapsed .brand{justify-content:flex-start;padding:6px 8px 18px}.sidebar.collapsed .brand .brand-txt{display:inline}.sidebar.collapsed .brand .logo{margin-right:6px}.sidebar.collapsed nav button{justify-content:flex-start;padding:10px 12px}.sidebar.collapsed nav button .lbl{display:inline}.sidebar.collapsed .side-foot{text-align:left}.sidebar.collapsed .side-foot .tenant,.sidebar.collapsed .side-foot .user{display:block}.sidebar.collapsed .side-foot .logout{padding:8px}.sidebar.collapsed .side-foot .logout .logout-txt{display:inline}.sidebar.collapsed .side-foot .logout .logout-ico{display:none}.topbar{height:54px;padding:0 12px;gap:10px;padding-top:env(safe-area-inset-top,0px)}.topbar h2{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px}.page{padding:14px 12px 48px}.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.tbl{min-width:640px}.ellipsis{max-width:200px}.row-edit td input,.row-edit td select{min-width:120px}}@media (pointer: coarse){input,select,textarea,.row-edit td input,.row-edit td select{font-size:16px}}@media (max-width: 560px){.tbl{font-size:13px;min-width:600px}.cards{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:14px;border-radius:12px}.stat .num{font-size:23px}.stat .lbl{font-size:12px}.panel{padding:14px 13px;border-radius:12px;margin-bottom:14px}.panel h3{font-size:14px}.form-row{flex-direction:column;align-items:stretch;gap:10px}.field{width:100%}.field input,.field select,.field textarea{width:100%;min-width:0}.btn-primary,.btn-ghost{min-height:42px}.btn-mini{min-height:34px;padding:7px 12px}.auth-tabs button{min-height:40px}.check-line input[type=checkbox]{width:19px;height:19px}.check-line{font-size:14px;padding:4px 0 10px}.scan-wrap{width:100%}.scan-video{width:100%;max-width:360px;height:auto;aspect-ratio:4 / 3}.scan-hint{max-width:100%}.timeline li{flex-direction:column;gap:2px}.timeline li .t{flex:none;font-size:12px}.usage-grid{grid-template-columns:1fr 1fr}.usage-item .u{font-size:19px}.kv>div{flex-direction:column;gap:1px}.kv .k{flex:none}.alert-list li{align-items:flex-start}.alert-list .date{margin-left:0;width:100%}.auth-wrap{align-items:stretch;min-height:100dvh}.auth-card{width:100%;max-width:none;min-height:100dvh;border-radius:0;box-shadow:none;padding:calc(30px + env(safe-area-inset-top,0px)) 20px calc(30px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;justify-content:center}.manual-box{padding:12px 12px 4px}.export-bar{gap:6px}.row-edit td{padding:5px 6px}.todo-form{flex-direction:column;align-items:stretch}.todo-form .field.grow{flex:1 1 auto}.todo-list li{flex-wrap:wrap}.todo-list .ops{width:100%;justify-content:flex-end}.todo-list .edit-row{flex-direction:column;align-items:stretch}.dc-hero{padding:15px;border-radius:12px}.dc-hero h2{font-size:16px}.dc-hero p{font-size:12.5px}.step{gap:9px}.step .sc .form-row{flex-direction:column;align-items:stretch}}.print-cfg{margin-bottom:12px}.print-cfg-body{margin-top:10px;padding:12px 14px;background:#f7fafc;border:1px solid var(--line);border-radius:11px}.print-cfg-cols{margin-top:4px}.chk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px 14px;margin-top:8px}.chk{display:flex;align-items:center;gap:7px;font-size:13px;cursor:pointer}.chk input{padding:0;margin:0;width:15px;height:15px}.sub-chk{font-size:12px;color:var(--muted);gap:6px;margin:0;line-height:1.5}.sub-chk input{flex:0 0 14px;width:14px;height:14px}.chk.inline-chk{margin-left:auto;font-size:12.5px;color:var(--muted);font-weight:400}.panel h3{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:14px}.kv-line{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:6px 0;border-bottom:1px dashed #eef2f7}.kv-line:last-child{border-bottom:none}.kv-line span{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kv-line b{color:var(--danger);flex:0 0 auto}.flow{display:flex;flex-direction:column;gap:12px}.flow-row{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap}.flow-box{flex:1 1 170px;min-width:150px;background:#eef6f8;border:1px solid #cfe6ec;border-radius:11px;padding:11px 13px;font-size:13px;font-weight:600;color:var(--brand);display:flex;flex-direction:column;gap:3px}.flow-box small{font-weight:400;color:var(--muted);font-size:11.5px;line-height:1.5}.flow-box.ok{background:#e7f6ef;border-color:#c3e8d7;color:var(--ok)}.flow-box.warn{background:#fdf3e3;border-color:#f2ddb8;color:var(--warn)}.flow-arrow{flex:0 0 auto;display:flex;align-items:center;color:var(--muted);font-size:15px;padding:0 2px}.faq-q{font-size:13.5px;font-weight:600;margin:14px 0 5px}.faq-q:first-child{margin-top:0}.faq-a{font-size:13px;color:#374151;line-height:1.75;background:#f7fafc;border-left:3px solid var(--brand);border-radius:0 9px 9px 0;padding:9px 13px}@media (max-width: 900px){.two-col{grid-template-columns:1fr;gap:14px}.chk-grid{grid-template-columns:1fr 1fr}.flow-arrow{display:none}.flow-box{flex:1 1 100%}}.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-bottom:18px}.chart-panel h3{margin-bottom:10px}.chart-panel{padding-right:14px}.chart-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.chart-legend{list-style:none;margin:0;padding:0;flex:1;min-width:120px}.chart-legend li{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px}.chart-legend .dot{width:10px;height:10px;border-radius:50%;flex:0 0 10px}.chart-legend .lg-lbl{color:var(--muted);flex:1}.chart-legend .lg-val{font-weight:700;color:var(--text)}.chart-empty{color:var(--muted);font-size:13px;padding:26px 10px;line-height:1.8}.chart-hbar{display:flex;flex-direction:column;gap:9px}.hb-row{display:flex;align-items:center;gap:10px;font-size:13px}.hb-lbl{width:118px;flex:0 0 118px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.hb-track{flex:1;height:14px;background:var(--bg);border-radius:7px;overflow:hidden}.hb-fill{display:block;height:100%;border-radius:7px;min-width:2px}.hb-val{width:74px;flex:0 0 74px;font-weight:700;color:var(--text)}@media (max-width: 560px){.hb-lbl{width:88px;flex-basis:88px}.hb-val{width:58px;flex-basis:58px}}.seg-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;padding:8px 10px;background:var(--card, #fff);border:1px solid var(--line, #e3e8ef);border-radius:10px}.seg{border:1px solid var(--line, #e3e8ef);background:transparent;color:inherit;border-radius:8px;padding:7px 14px;font-size:13px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.seg:hover{border-color:var(--primary, #2563eb);color:var(--primary, #2563eb)}.seg.active{background:var(--primary, #2563eb);border-color:var(--primary, #2563eb);color:#fff}.nav-fly{display:none;margin:-4px 8px 4px 30px;padding:6px;background:var(--card, #fff);border:1px solid var(--line, #e3e8ef);border-radius:10px;box-shadow:0 10px 28px #0f172a24}.sidebar nav button:hover+.nav-fly,.nav-fly:hover{display:block}.nav-fly button{display:block;width:100%;text-align:left;border:0;background:transparent;color:inherit;padding:8px 10px;border-radius:7px;font-size:13px;cursor:pointer;white-space:nowrap}.nav-fly button:hover{background:#2563eb1a;color:var(--primary, #2563eb)}.sidebar.collapsed .nav-fly{display:none!important}@media (max-width: 900px){.nav-fly{display:none!important}.seg-bar{gap:6px}.seg{padding:8px 12px;font-size:13px}}.sidebar nav .nav-fly button{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--text);padding:8px 10px;border-radius:7px;font-size:13px;font-weight:400;box-shadow:none}.sidebar nav .nav-fly button:hover{background:var(--brand-soft);color:var(--brand)}.lic-thumb{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;object-fit:cover;border-radius:6px;border:1px solid var(--line, #e3e8ef);background:var(--brand-soft, #eff6ff);font-size:11px;color:var(--brand, #2563eb);cursor:zoom-in;vertical-align:middle}.lic-thumb.pdf{cursor:pointer;font-weight:600}.lic-thumb.err{color:#dc2626;background:#fef2f2;border-color:#fecaca;cursor:default}.lic-files{display:flex;flex-wrap:wrap;gap:6px}.lic-zoom{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#0f172adb;cursor:zoom-out;padding:24px}.lic-zoom img{max-width:94vw;max-height:86vh;border-radius:8px;background:#fff;box-shadow:0 20px 60px #00000073}.lic-zoom-tip{color:#e2e8f0;font-size:13px}
