:root{--bg:#f7efe5;--surface:rgba(255,250,244,.9);--surface-strong:#fffaf4;--ink:#332419;--muted:#78624f;--accent:#c96c24;--accent-soft:#f7dfc7;--line:rgba(51,36,25,.12);--danger:#a33f3f;--shadow:0 18px 50px rgba(40,41,32,.08)}*{box-sizing:border-box}body,html{padding:0;margin:0;min-height:100%;background:radial-gradient(circle at top left,rgba(201,108,36,.18),transparent 32%),radial-gradient(circle at bottom right,rgba(233,155,76,.16),transparent 26%),var(--bg);color:var(--ink);font-family:Segoe UI Variable Display,PingFang SC,Noto Sans SC,Microsoft YaHei,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.app-root,.shell{min-height:100vh}.shell{display:grid;grid-template-columns:280px minmax(0,1fr)}.sidebar{padding:28px;border-right:1px solid var(--line);background:rgba(255,253,247,.75);backdrop-filter:blur(18px);display:flex;flex-direction:column;gap:24px}.brand-panel,.login-card,.panel{background:var(--surface);border:1px solid hsla(0,0%,100%,.7);box-shadow:var(--shadow);border-radius:24px}.brand-panel{padding:24px}.eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.brand-title,.login-card h1,.page-head h1{margin-top:10px;font-family:Georgia,Songti SC,serif;font-weight:700}.brand-title{font-size:28px}.brand-copy,.muted-text,.page-head p{color:var(--muted)}.nav-list{display:flex;flex-direction:column;gap:10px}.chip,.ghost-button,.nav-item,.solid-button{border-radius:16px;border:1px solid var(--line);transition:.16s ease}.nav-item{padding:14px 16px;background:hsla(0,0%,100%,.46)}.chip.is-active,.nav-item.is-active,.nav-item:hover{background:var(--accent);color:#fff;border-color:transparent}.chip,.ghost-button,.solid-button{cursor:pointer}.ghost-button,.solid-button{padding:12px 16px}.ghost-button{background:hsla(0,0%,100%,.7)}.solid-button{background:var(--accent);color:#fff;border-color:transparent}.chip{padding:10px 14px;background:transparent}.main-panel{padding:28px;display:flex;flex-direction:column;gap:20px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.page-head h1{margin:8px 0 6px;font-size:clamp(30px,4vw,44px)}.page-head p{margin:0}.login-card,.panel{padding:20px}.filter-panel{display:flex;flex-direction:column;gap:16px}.filter-row{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.filter-row.secondary{align-items:center}.date-group,.inline-form,.preset-group{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.date-group label,.inline-form label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:14px}input,select{padding:10px 12px;border-radius:14px;border:1px solid var(--line);background:#fff}.stats-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}.stat-card{padding:18px;border-radius:22px;background:linear-gradient(180deg,hsla(0,0%,100%,.94),hsla(30,64%,96%,.94));border:1px solid hsla(0,0%,100%,.8);box-shadow:var(--shadow)}.stat-label{color:var(--muted);font-size:13px}.stat-value{margin-top:12px;font-size:30px;font-weight:700}.stat-hint{margin-top:10px;color:var(--muted);font-size:13px}.two-col{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.panel h4,.panel-head h3{margin:0;font-family:Georgia,Songti SC,serif}.trend-chart-scroll{overflow-x:auto;overflow-y:hidden;padding-bottom:6px}.trend-chart{display:block;min-width:100%;height:320px}.trend-grid-line{stroke:rgba(201,108,36,.12);stroke-width:1}.trend-axis-line{stroke:rgba(51,36,25,.18);stroke-width:1.2}.trend-line-path{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.trend-area-fill{fill:rgba(201,108,36,.12)}.trend-point{fill:var(--accent);stroke:#fff;stroke-width:2}.trend-axis-label,.trend-axis-title{fill:var(--muted);font-size:12px}.trend-axis-title{font-weight:600}.simple-table{width:100%;border-collapse:collapse}.simple-table td,.simple-table th{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.simple-table th{font-size:13px;color:var(--muted);font-weight:600}.link-button{padding:0;border:0;background:transparent;color:var(--accent);cursor:pointer}.drawer-backdrop{position:fixed;inset:0;background:rgba(18,29,24,.24);display:flex;justify-content:flex-end;z-index:50}.drawer-panel{width:min(720px,96vw);height:100vh;overflow:auto;background:#faf7ef;padding:24px;box-shadow:-30px 0 70px rgba(0,0,0,.15)}.drawer-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.drawer-sections{display:flex;flex-direction:column;gap:16px;margin-top:16px}.subtle-panel{background:hsla(0,0%,100%,.6)}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.detail-grid dt{color:var(--muted);font-size:12px}.detail-grid dd{margin:6px 0 0}.inline-actions,.tag-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.tag{padding:8px 12px;border-radius:999px;background:var(--accent-soft)}.mini-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.mini-title{font-weight:700;margin-bottom:8px}.mini-row{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}.empty-block{padding:24px;text-align:center;color:var(--muted)}.error-text{color:var(--danger)}.kicker-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.stack{display:flex;flex-direction:column;gap:16px}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(520px,100%)}.login-card form{display:flex;flex-direction:column;gap:14px;margin-top:18px}.footer-note{margin-top:16px;color:var(--muted);font-size:13px}.pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}@media (max-width:1200px){.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.kicker-grid,.mini-columns,.two-col{grid-template-columns:1fr}}@media (max-width:900px){.shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line)}.detail-grid,.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.main-panel,.sidebar{padding:16px}.detail-grid,.stats-grid{grid-template-columns:1fr}}