:root{--blue: #3478f6;--blue-dark: #1d5fd1;--bg: #f4f7fb;--panel: #ffffff;--line: #dfe6f2;--text: #20242d;--muted: #6f7787;--red: #ff4d62;--green: #22a06b}*{box-sizing:border-box}body{margin:0;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Arial,sans-serif;background:var(--bg)}.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);align-items:stretch;padding:0;position:relative;background:#f7f9ff}.login-visual{position:relative;overflow:hidden;display:flex;align-items:center;min-height:100vh;padding:64px clamp(36px,6vw,96px);color:#fff;background:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(135deg,#071a44 0%,#0a3a8b 58%,#0b5fc7 100%);background-size:42px 42px,42px 42px,auto}.login-visual:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(7,26,68,.1),rgba(7,26,68,.72))}.login-visual-copy{position:relative;z-index:1;width:min(620px,100%)}.login-visual-copy h1{margin:0;font-size:clamp(36px,5vw,64px);line-height:1.08;letter-spacing:0}.login-visual-copy p{margin:18px 0 0;color:#e8f3ffe0;font-size:20px}.dashboard-lines{position:absolute;z-index:1;left:clamp(36px,6vw,96px);right:clamp(40px,8vw,120px);bottom:16%;display:grid;gap:12px}.dashboard-lines span{height:8px;border-radius:4px;background:linear-gradient(90deg,rgba(109,203,255,.88),rgba(109,203,255,0))}.dashboard-lines span:nth-child(2){width:72%}.dashboard-lines span:nth-child(3){width:48%}.login-card{align-self:center;justify-self:center;width:min(420px,100%);display:grid;gap:14px;padding:28px;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:0 14px 36px #243a601f}.login-card h1{margin:0;font-size:24px}.login-card p{margin:0 0 4px;color:var(--muted)}.remember-login{flex-direction:row;align-items:center;gap:8px;color:var(--text);font-size:13px}.remember-login input{width:16px;height:16px;padding:0}.site-footer{margin:26px 0 0;padding:18px 0 4px;color:#8a93a3;font-size:13px;text-align:center}.login-page .site-footer{position:absolute;right:0;bottom:18px;width:min(420px,calc(40vw - 48px));margin:0;padding:0}@media (max-width: 860px){.login-page{grid-template-columns:1fr;padding:24px;background:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(135deg,#071a44,#0b5fc7);background-size:42px 42px,42px 42px,auto}.login-visual{display:none}.login-card{width:min(420px,100%)}.login-page .site-footer{left:0;right:0;width:auto;color:#ffffffc2}}button,input,select{font:inherit}.app-shell{min-width:1180px;padding:18px 22px 36px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#fff,#f9fbff)}.header-actions{display:flex;gap:10px;align-items:center}.topbar h1{margin:0 0 6px;font-size:24px}.topbar p{margin:0;color:var(--muted)}.tabs{display:flex;gap:8px;padding:14px 2px 10px}.tabs button{height:40px;padding:0 18px;border:1px solid transparent;border-radius:6px;color:#303645;background:transparent;cursor:pointer}.tabs button.active{color:var(--blue-dark);border-color:#bdd2ff;background:#edf4ff;font-weight:700}.filters{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:repeat(5,minmax(120px,1fr)) 170px 86px;gap:12px;padding:14px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.96);box-shadow:0 8px 20px #2e466e14}.ops-filters{grid-template-columns:repeat(5,minmax(120px,1fr)) 150px 180px 86px}.quick-date-ranges{grid-column:1 / -1;display:flex;gap:8px;align-items:center}.quick-date-ranges button{height:32px;padding:0 14px;border:1px solid #cfd8e8;border-radius:4px;color:var(--text);background:#fff;cursor:pointer}.quick-date-ranges button.active{border-color:var(--blue);color:var(--blue-dark);background:#edf4ff;font-weight:700}label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:12px}input,select{height:36px;min-width:0;padding:0 10px;border:1px solid #cfd8e8;border-radius:4px;color:var(--text);background:#fff}.ghost,.primary,.import-button{height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;cursor:pointer}.ghost{align-self:end;border:1px solid #cfd8e8;background:#fff}.primary,.import-button{border:1px solid var(--blue);color:#fff;background:var(--blue)}.import-button{padding:0 16px;font-size:14px}.hidden-file-input,.import-button input{display:none}.confirm-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px;background:rgba(14,28,55,.38)}.confirm-dialog{width:min(420px,100%);padding:22px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 18px 48px #1626483d}.confirm-dialog h2{margin:0;color:var(--text);font-size:18px}.confirm-dialog p{margin:12px 0 0;color:var(--muted);line-height:1.7}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.message{margin-top:10px;padding:10px 12px;border:1px solid #b9d7ff;border-radius:6px;color:#1f5fbf;background:#eef6ff}.kpi-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:14px 0}.kpi-card,.panel{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 1px 4px #1e2a440d}.kpi-card{min-height:86px;padding:16px}.kpi-card span{display:block;color:var(--muted);font-size:13px}.kpi-card strong{display:block;margin-top:10px;font-size:24px}.kpi-card.danger{border-color:#ffc8d0;background:#fff3f5}.kpi-card.danger strong{color:var(--red)}.chart-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:12px}.tri-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}.tri-grid .panel{margin-top:0}.tri-grid table{min-width:760px}.action-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:12px}.action-panel strong{font-size:26px}.action-item{display:grid;gap:5px;padding:10px 0;border-bottom:1px solid #edf1f7}.action-item:last-child{border-bottom:0}.action-item strong{font-size:13px}.action-item span{color:var(--muted);font-size:12px}.ranking-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}.panel{padding:14px;margin-top:12px}.chart-grid .panel{margin-top:0}.panel-title{margin-bottom:10px;font-size:15px;font-weight:800}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.export-link{color:var(--blue-dark);font-size:13px;text-decoration:none}.subhead{margin:14px 0 0;padding:12px 14px;border:1px solid #bdd2ff;border-radius:8px;color:#1d5fd1;font-weight:800;background:#edf4ff}.ranking ol{margin:0;padding:0;list-style:none}.ranking li{display:flex;align-items:center;justify-content:space-between;height:34px;border-bottom:1px solid #eef2f8}.ranking li:last-child{border-bottom:0}.red{color:var(--red)}.red-cell{color:var(--red);background:#ffe2e6;font-weight:800}.link-button{border:0;padding:0;color:var(--blue-dark);font-weight:700;background:transparent;cursor:pointer}.status{display:inline-flex;min-width:74px;height:24px;align-items:center;justify-content:center;padding:0 8px;border-radius:999px;color:#fff;font-size:12px;font-weight:800}.status.scale{background:#22a06b}.status.copy{background:#3478f6}.status.observe{color:#7a4b00;background:#ffd666}.status.quality{background:#ff8a00}.status.stop{background:#e5484d}.suggestion{max-width:280px;white-space:normal;line-height:1.5}.table-wrap{overflow:auto}table{width:100%;min-width:980px;border-collapse:collapse;font-size:13px}th{height:38px;color:#fff;text-align:left;white-space:nowrap;background:var(--blue)}td,th{padding:0 10px;border-bottom:1px solid #edf1f7}td{height:38px;white-space:nowrap}tbody tr:nth-child(2n){background:#f7f9fd}.entry-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px}.entry-grid .primary{align-self:end}@media (max-width: 900px){.app-shell{min-width:100%;padding:12px;overflow-x:auto}.topbar,.chart-grid,.ranking-grid,.tri-grid,.action-grid{grid-template-columns:1fr}.topbar{display:grid;gap:12px}}
