:root{--bg:#f3f0e9;--panel:#fffdf8;--panel-2:#f8f5ed;--ink:#1d1c18;--muted:#6b675d;--line:#d8d1c4;--accent:#a94f32;--accent-soft:#f0ddd3;--green:#255b51;--green-soft:#dce9e4;--amber:#8a651c;--amber-soft:#f3e8c9;--red:#9b3434;--red-soft:#f5dede;--blue:#355b86;--blue-soft:#dde8f3;--shadow:0 1px 0 rgba(29,28,24,.05),0 12px 30px rgba(29,28,24,.05);--radius:10px}*{box-sizing:border-box}body,html{padding:0;margin:0}body{background:var(--bg);color:var(--ink);font-family:PingFang SC,Microsoft YaHei,Noto Sans CJK SC,system-ui,sans-serif;font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}h1{font-family:Songti SC,SimSun,Georgia,serif;font-size:30px;letter-spacing:-.4px;line-height:1.2}h2{font-size:18px;line-height:1.3}h3{font-size:15px;line-height:1.35}code{border:1px solid var(--line);border-radius:5px;padding:1px 5px;font-size:12px}code,pre{background:var(--panel-2)}pre{border:1px solid var(--line);border-radius:8px;padding:12px;overflow:auto}.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(360px,1.1fr) minmax(420px,.9fr)}.login-intro{background:var(--green);color:#fdfaf2;padding:64px;display:flex;flex-direction:column;justify-content:space-between}.login-intro h1{font-size:48px;max-width:560px}.login-intro p{color:#d8e3df;max-width:560px;font-size:16px}.login-card{display:flex;align-items:center;justify-content:center;padding:40px}.login-box{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:30px}.demo-list{margin-top:20px;border-top:1px solid var(--line);padding-top:16px;display:grid;grid-gap:8px;gap:8px;font-size:12px;color:var(--muted)}.app-shell{min-height:100vh;display:grid;grid-template-columns:228px 1fr}.sidebar{background:#1f2926;color:#d9e1dd;padding:22px 16px;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;flex-direction:column;gap:3px;padding:0 8px 22px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:18px}.brand strong{font-family:Songti SC,SimSun,serif;font-size:21px;font-weight:600;color:#fffaf0}.brand span{font-size:11px;color:#93a39d}.brand span,.nav-group{letter-spacing:1.4px;text-transform:uppercase}.nav-group{margin:18px 0 4px;font-size:10px;color:#81928c;padding:0 8px}.nav-link{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:7px;color:#d4ded9;font-size:13px}.nav-link:hover{background:rgba(255,255,255,.06);color:#fff}.nav-link.active{background:#d9e6e1;color:#1f2926;font-weight:600}.nav-badge{background:var(--accent);color:white;border-radius:20px;padding:1px 7px;font-size:10px}.sidebar-footer{margin-top:24px;padding:14px 8px 0;border-top:1px solid rgba(255,255,255,.12);font-size:11px;color:#91a19b}.main{min-width:0;padding:28px 34px 60px}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px}.topbar p{color:var(--muted);max-width:760px;margin-top:8px}.user-chip{display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:6px 12px 6px 6px;white-space:nowrap}.avatar{width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:700}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}.page-header p{color:var(--muted);margin-top:7px;max-width:800px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.grid{display:grid;grid-gap:16px;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.card.flush{padding:0;overflow:hidden}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.card-sub{color:var(--muted);font-size:12px;margin-top:4px}.stat-value{font-family:Songti SC,SimSun,serif;font-size:34px;line-height:1.1;margin:8px 0 5px}.stat-label{color:var(--muted);font-size:12px}.stat-note{font-size:11px;color:var(--muted);border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.badge{display:inline-flex;align-items:center;gap:5px;border:1px solid transparent;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600;white-space:nowrap}.badge:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.badge.green{background:var(--green-soft);color:var(--green)}.badge.amber{background:var(--amber-soft);color:var(--amber)}.badge.red{background:var(--red-soft);color:var(--red)}.badge.blue{background:var(--blue-soft);color:var(--blue)}.badge.gray{background:#e9e5db;color:#625e55}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:7px;padding:7px 12px;font-size:13px;font-weight:600}.btn:hover{border-color:#b9b1a3;background:#fff}.btn.primary{background:var(--ink);color:#fffdf8;border-color:var(--ink)}.btn.primary:hover{background:#3b3932}.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.danger{color:var(--red);border-color:#d7aaaa}.btn.small{padding:4px 8px;font-size:11px}.btn:disabled{opacity:.45;cursor:not-allowed}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.form-grid .full{grid-column:1/-1}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:12px;font-weight:600;color:#3f3c34}.field .hint{font-size:11px;color:var(--muted)}.input,.select,.textarea{width:100%;border:1px solid var(--line);border-radius:7px;background:#fffdf8;padding:8px 10px;outline:none}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(169,79,50,.1)}.textarea{min-height:96px;resize:vertical}.textarea.tall{min-height:170px}.check-row{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line)}.check-row:last-child{border-bottom:0}.check-row label{flex:1 1}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.2px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--panel-2)}td{padding:12px;border-bottom:1px solid #ebe6dc;vertical-align:top}tr:last-child td{border-bottom:0}.row-link:hover td{background:#fbf8f1}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.empty{border:1px dashed var(--line);border-radius:8px;padding:28px;background:var(--panel-2)}.empty,.loading{text-align:center;color:var(--muted)}.loading{padding:30px}.error-box{border:1px solid #d9aaaa;background:var(--red-soft);color:var(--red);border-radius:7px}.error-box,.success-box{padding:10px 12px;font-size:12px}.success-box{border:1px solid #a7c8bd;background:var(--green-soft);color:var(--green);border-radius:7px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px}.tab{padding:8px 12px;border-bottom:2px solid transparent;color:var(--muted);font-size:13px}.tab.active{border-color:var(--accent);color:var(--ink);font-weight:700}.split-view{display:grid;grid-template-columns:minmax(280px,375px) minmax(0,1fr);grid-gap:20px;gap:20px;align-items:start}.preview-frame{max-width:100%;border:1px solid var(--line);border-radius:8px;overflow:hidden}.preview-frame,.preview-frame iframe{width:375px;height:600px;background:white}.preview-frame iframe{border:0}.preview-image{width:375px;max-width:100%;height:auto;border:1px solid var(--line);border-radius:8px;background:white}.preview-sticky{position:-webkit-sticky;position:sticky;top:20px}.side-by-side{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.blind-side{border:2px solid var(--line);border-radius:10px;background:var(--panel);padding:12px}.blind-side.selected{border-color:var(--accent);background:#fff8f4}.blind-side .preview-frame,.blind-side .preview-frame iframe{width:100%;height:480px}.score-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px}.score-field{display:grid;grid-template-columns:1fr auto;grid-gap:8px;gap:8px;align-items:center;border:1px solid var(--line);border-radius:7px;padding:7px 9px;background:var(--panel-2)}.score-field select{width:64px;padding:3px 5px}.timeline{display:grid;grid-gap:12px;gap:12px}.timeline-item{display:grid;grid-template-columns:130px 1fr;grid-gap:14px;gap:14px;border-bottom:1px solid var(--line);padding-bottom:12px}.timeline-item:last-child{border-bottom:0}.notice{background:var(--amber-soft);border:1px solid #dfcb96;color:#5e4a1b;border-radius:8px;padding:12px 14px;font-size:12px}.detail-list{display:grid;grid-gap:10px;gap:10px}.detail-list div{display:grid;grid-template-columns:120px 1fr;grid-gap:10px;gap:10px;padding-bottom:9px;border-bottom:1px dashed var(--line)}.detail-list dt{color:var(--muted);font-size:12px}.detail-list dd{margin:0}.modal-backdrop{position:fixed;inset:0;background:rgba(20,20,18,.35);display:grid;place-items:center;z-index:20;padding:20px}.modal{width:min(620px,100%);max-height:85vh;overflow:auto;background:var(--panel);border-radius:12px;padding:22px;box-shadow:0 20px 60px rgba(0,0,0,.2)}@media (max-width:1100px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.split-view{grid-template-columns:1fr}.preview-sticky{position:static}}@media (max-width:780px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.main{padding:20px}.form-grid,.grid-2,.grid-3,.grid-4,.login-page,.side-by-side{grid-template-columns:1fr}.login-intro{padding:32px}.login-intro h1{font-size:36px}}