#root{min-height:100vh}:root{--ink:#20231f;--muted:#697066;--line:#dce4d7;--paper:#f7f5ed;--panel:#fff;--leaf:#2f6b4f;--leaf-dark:#214b3a;--gold:#b9852f;--danger:#b14b3e;--shadow:0 18px 45px #2f432d1f}*{box-sizing:border-box}body{color:var(--ink);background:linear-gradient(90deg, #2f6b4f14 1px, transparent 1px), linear-gradient(#2f6b4f0f 1px, transparent 1px), var(--paper);background-size:32px 32px;margin:0;font-family:Iowan Old Style,Palatino Linotype,Microsoft YaHei,serif}button,input,textarea,select{font:inherit}button{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:8px;min-height:38px;padding:0 14px;display:inline-flex}button:hover{border-color:var(--leaf);color:var(--leaf)}button:disabled{opacity:.55;cursor:wait}.primary{background:var(--leaf);color:#fff;border-color:var(--leaf);font-weight:700}.primary:hover{background:var(--leaf-dark);color:#fff}.boot{min-height:100vh;color:var(--leaf);place-items:center;font-size:24px;display:grid}.login-shell{place-items:center;min-height:100vh;padding:32px;display:grid}.login-panel{border:1px solid var(--line);width:min(460px,100%);box-shadow:var(--shadow);background:#ffffffe6;border-radius:8px;padding:34px}.brand-mark{color:#fff;background:var(--leaf);border-radius:50%;place-items:center;width:56px;height:56px;margin-bottom:18px;display:grid}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--gold);font-size:12px;font-weight:800}h1,h2,h3,p{margin-top:0}h1{margin-bottom:14px;font-size:clamp(30px,5vw,52px);line-height:1}h2{margin-bottom:16px;font-size:19px}h3{margin-bottom:8px;font-size:19px}.login-copy,header>p,.item-card p,.hint{color:var(--muted);line-height:1.65}form{gap:14px;display:grid}label{color:var(--muted);gap:8px;font-size:14px;display:grid}input,textarea,select{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:8px;outline:none;padding:11px 12px}textarea{resize:vertical;min-height:110px}input:focus,textarea:focus,select:focus{border-color:var(--leaf);box-shadow:0 0 0 3px #2f6b4f1f}.error{color:var(--danger)}.app-shell{grid-template-columns:248px minmax(0,1fr);min-height:100vh;display:grid}aside{border-right:1px solid var(--line);background:#fdfcf7;flex-direction:column;height:100vh;padding:22px;display:flex;position:sticky;top:0}.aside-title{align-items:center;gap:10px;margin-bottom:28px;font-size:20px;font-weight:900;display:flex}nav{gap:8px;display:grid}nav button,.logout{background:0 0;justify-content:flex-start}nav button.active{background:var(--leaf);border-color:var(--leaf);color:#fff}.logout{color:var(--muted);margin-top:auto}.stage{padding:34px}.page{max-width:1220px;margin:0 auto}header{border-bottom:1px solid var(--line);gap:2px;margin-bottom:28px;padding-bottom:22px;display:grid}.stats{grid-template-columns:repeat(5,minmax(130px,1fr));gap:14px;margin-bottom:18px;display:grid}.stat,.panel,.item-card{border:1px solid var(--line);background:#ffffffe0;border-radius:8px;box-shadow:0 8px 28px #2f432d12}.stat{padding:18px}.stat span{color:var(--muted);margin-bottom:12px;display:block}.stat strong{font-size:34px}.stat.warn strong{color:var(--danger)}.panel{margin-bottom:18px;padding:20px}.rows{gap:10px;display:grid}.row{border-top:1px solid var(--line);justify-content:space-between;gap:18px;min-height:54px;padding-top:12px;display:flex}.row span{color:var(--muted)}.grid-form{grid-template-columns:1.2fr 1.2fr .7fr}.grid-form textarea{grid-column:span 3}.grid-form button{width:fit-content}.card-list{gap:14px;display:grid}.item-card{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:18px;padding:18px;display:grid}.item-card.wide{grid-template-columns:minmax(0,1fr) 140px}.actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.badge{text-transform:uppercase;margin-bottom:6px;font-size:12px;font-weight:900;display:inline-block;color:var(--gold)!important}.crawl-box{justify-content:space-between;align-items:center;gap:18px;display:flex}pre{white-space:pre-wrap;word-break:break-word;color:#f8f4e8;background:#26352d;border-radius:8px;max-height:360px;padding:14px;overflow:auto}.metric-form{grid-template-columns:repeat(4,minmax(120px,1fr))}.metric-form button{width:fit-content}.empty{color:var(--muted)}@media (width<=880px){.app-shell{grid-template-columns:1fr}aside{gap:12px;height:auto;position:static}nav{grid-template-columns:repeat(3,1fr)}.stage{padding:18px}.stats,.grid-form,.metric-form{grid-template-columns:1fr}.grid-form textarea{grid-column:auto}.item-card,.item-card.wide,.crawl-box{grid-template-columns:1fr;display:grid}}
