:root{color-scheme:light;--ink:#17212b;--muted:#66727d;--line:#e5e9ed;--surface:#ffffff;--canvas:#f5f7f9;--accent:#0f766e;--accent-soft:#dff4f1}*{box-sizing:border-box}body,html{min-height:100%;margin:0;background:var(--canvas);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,PingFang SC,Microsoft YaHei,sans-serif}a{color:inherit;text-decoration:none}.public-shell{min-height:100vh;padding:56px 24px}.public-content{max-width:760px;margin:0 auto;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:clamp(24px,5vw,56px)}.public-content h1{margin:0 0 12px;font-size:clamp(28px,5vw,42px);letter-spacing:0}.public-content h2{margin:32px 0 10px;font-size:20px}.public-content li,.public-content p{color:var(--muted);font-size:15px;line-height:1.75}.dashboard-shell{min-height:100vh;padding:32px}.dashboard-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;max-width:1180px;margin:0 auto 28px}.dashboard-header h1{margin:0;font-size:28px}.dashboard-header p{margin:8px 0 0;color:var(--muted)}.dashboard-main{max-width:1180px;margin:0 auto}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px;margin-bottom:24px}.metric-card{min-height:120px;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:8px}.metric-label{color:var(--muted);font-size:13px}.metric-value{margin-top:12px;font-size:30px;font-weight:700}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);grid-gap:24px;gap:24px}.panel{min-width:0;padding:20px;background:var(--surface);border:1px solid var(--line);border-radius:8px}.panel h2{margin:0 0 16px;font-size:18px}.login-frame{max-width:420px;margin:12vh auto 0;padding:28px;background:var(--surface);border:1px solid var(--line);border-radius:8px}.login-frame h1{margin:0 0 8px;font-size:24px}.login-frame p{margin:0 0 24px;color:var(--muted);line-height:1.6}@media (max-width:800px){.dashboard-shell{padding:20px 14px}.dashboard-header{display:block}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr}}