:root{
  --brand:#e0570f; --brand-dark:#b8430a; --brand-pale:#fdf0e7;
  --sidebar:#2b1a10; --sidebar-2:#1e120a;
  --ink:#1c1a18; --text-primary:#1c1a18; --text-secondary:#6b6560; --text-muted:#9c948d;
  --line:#ece6e0; --bg:#f7f4f1; --surface:#fff;
  --ok:#12805c; --warn:#b06a00; --danger:#c62f26; --info:#2a78d6;
  --r:10px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",-apple-system,"Segoe UI",sans-serif;
  background:var(--bg);color:var(--text-primary);font-size:14px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:14px;color:inherit}
table{border-collapse:collapse;width:100%}
img{display:block;width:100%;height:100%;object-fit:cover}

.login{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#c9500f,#3a1c08);padding:20px}
.login-card{background:#fff;border-radius:16px;padding:36px 34px;width:100%;max-width:390px;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.login-card .brand{display:flex;align-items:center;gap:11px;margin-bottom:8px}
.login-card .mark{width:46px;height:46px;border-radius:13px;background:linear-gradient(135deg,#f5893f,var(--brand-dark));
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800}
.login-card h1{font-size:19px;font-weight:800}
.login-card .sub{font-size:11.5px;color:var(--text-secondary);letter-spacing:1px}
.login-card h2{font-size:15px;font-weight:700;margin:20px 0 14px;color:var(--text-secondary)}
.field{margin-bottom:13px}
.field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;height:42px;border:1px solid var(--line);border-radius:9px;padding:0 13px;background:#fdfcfb;outline:none}
.field input:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(224,87,15,.11)}
.btn{height:44px;border:0;border-radius:9px;background:var(--brand);color:#fff;font-weight:700;width:100%;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;box-sizing:border-box}
.btn:hover{background:var(--brand-dark)}
.btn.line{background:#06c755;margin-bottom:6px}
.btn.line:hover{background:#05b34c}
.or{display:flex;align-items:center;gap:10px;color:var(--text-secondary);font-size:12.5px;margin:14px 0}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line)}
.demo-note{margin-top:16px;background:var(--brand-pale);border-radius:9px;padding:10px 12px;font-size:12.5px;color:var(--brand-dark)}
.demo-note a{color:var(--brand-dark);font-weight:700;text-decoration:underline}

.shell{display:grid;grid-template-columns:238px 1fr;min-height:100vh}
.sidebar{background:var(--sidebar);color:#cbb9ac;position:sticky;top:0;height:100vh;overflow-y:auto;padding-bottom:20px}
.sidebar .top{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid #45301f}
.sidebar .mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#f5893f,var(--brand-dark));
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800}
.sidebar .top b{color:#fff;font-size:15px;display:block;line-height:1.3}
.sidebar .top small{font-size:10.5px;color:#9a8071;letter-spacing:1px}
.sidebar .grp{font-size:11px;color:#8d7364;letter-spacing:2px;padding:16px 18px 6px}
.sidebar a{display:flex;align-items:center;gap:10px;padding:9px 18px;font-size:14.5px;border-left:3px solid transparent}
.sidebar a:hover{background:#3c2617;color:#fff}
.sidebar a.on{background:var(--sidebar-2);color:#fff;border-left-color:#ffb648;font-weight:600}
.sidebar a .ic{width:18px;text-align:center}
.sidebar a .badge{margin-left:auto;background:var(--danger);color:#fff;font-size:11px;padding:0 7px;border-radius:10px;font-weight:700}
.sidebar .foot{margin-top:16px;padding:14px 18px;border-top:1px solid #45301f;font-size:12px;color:#8d7364}

.topbar{background:#fff;border-bottom:1px solid var(--line);height:60px;display:flex;align-items:center;gap:14px;padding:0 22px;position:sticky;top:0;z-index:60;flex-wrap:wrap}
.topbar .crumb{font-size:13px;color:var(--text-secondary)}
.topbar .crumb b{color:var(--text-primary);font-size:16px;display:block;line-height:1.3}
.topbar .sp{flex:1}
.me{display:flex;align-items:center;gap:9px;padding-left:12px;border-left:1px solid var(--line)}
.me .av{width:34px;height:34px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}
.me b{font-size:13.5px;display:block;line-height:1.25}
.me small{font-size:11.5px;color:var(--text-muted)}
.content{padding:22px}

.page-title{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.page-title h1{font-size:21px;font-weight:800}
.page-title .sp{flex:1}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px}
.card + .card{margin-top:18px}
.card h3{font-size:15.5px;font-weight:800}
.card .sub{font-size:12.5px;color:var(--text-secondary);margin-bottom:14px}
.row{display:grid;gap:18px}
.btn-sm{height:36px;padding:0 15px;border-radius:8px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:13.5px;font-weight:600;display:inline-flex;align-items:center;gap:6px}
.btn-sm:hover{border-color:var(--brand);color:var(--brand)}
.btn-sm.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn-sm.primary:hover{background:var(--brand-dark);color:#fff}
.btn-sm.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.btn-sm.danger{color:var(--danger);border-color:#f0cfcd}
.btn-sm.ghost{background:var(--bg)}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;padding:2px 10px;border-radius:20px;white-space:nowrap}
.pill::before{content:"●";font-size:8px}
.pill.pub{background:#e3f4ec;color:var(--ok)}
.pill.rev{background:#fdf0dd;color:var(--warn)}
.pill.draft{background:#f0ece8;color:var(--text-secondary)}
.pill.off{background:#fbe6e5;color:var(--danger)}
.pill.plain::before{content:none}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.toolbar input,.toolbar select{height:38px;border:1px solid var(--line);border-radius:8px;padding:0 12px;background:#fff}
.toolbar input[type=search]{width:240px}
.toolbar .sp{flex:1}
thead th{text-align:left;font-size:12.5px;color:var(--text-secondary);font-weight:700;padding:10px 12px;background:#faf7f4;border-bottom:1px solid var(--line);white-space:nowrap}
tbody td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
tbody tr:hover{background:#fffaf6}
td .t{font-weight:600;line-height:1.45}
td .m{font-size:12px;color:var(--text-muted);margin-top:2px}
.tbl-wrap{overflow-x:auto}
.act{display:flex;gap:6px}
.act button,.act a{border:1px solid var(--line);background:#fff;border-radius:6px;width:30px;height:30px;cursor:pointer;font-size:13px;display:inline-flex;align-items:center;justify-content:center}
.act button:hover,.act a:hover{border-color:var(--brand);color:var(--brand)}
.pager{display:flex;gap:6px;justify-content:flex-end;margin-top:14px;align-items:center;flex-wrap:wrap}
.pager a,.pager span{min-width:34px;height:34px;border:1px solid var(--line);background:#fff;border-radius:7px;cursor:pointer;padding:0 10px;display:inline-flex;align-items:center;justify-content:center}
.pager a.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}
.tabs a{padding:9px 16px;font-size:14px;font-weight:600;color:var(--text-secondary);border-bottom:2px solid transparent;cursor:pointer}
.tabs a.on{color:var(--brand);border-bottom-color:var(--brand)}
.seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}
.seg a,.seg button{border:0;background:transparent;padding:6px 13px;font-size:12.5px;cursor:pointer;color:var(--text-secondary)}
.seg a.on,.seg button.on{background:var(--brand-pale);color:var(--brand-dark);font-weight:700}

.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.kpi .lbl{font-size:13px;color:var(--text-secondary)}
.kpi .val{font-size:29px;font-weight:800;letter-spacing:-.5px;line-height:1.25;margin-top:2px}
.kpi .val small{font-size:14px;font-weight:600;color:var(--text-muted);margin-left:3px}

.review{display:grid;grid-template-columns:1fr 330px;gap:18px;align-items:start}
.review-item{border:1px solid var(--line);border-radius:var(--r);background:#fff;padding:0;overflow:hidden;margin-bottom:16px}
.review-item .h{display:flex;gap:10px;align-items:center;padding:13px 17px;border-bottom:1px solid var(--line);background:#faf7f4;flex-wrap:wrap}
.review-item .h b{font-size:16px}
.review-item .h .sp{flex:1}
.review-item .body{padding:16px 17px;display:grid;grid-template-columns:190px 1fr;gap:16px}
.review-item .ph{border-radius:9px;overflow:hidden;aspect-ratio:16/10}
.kv{display:grid;grid-template-columns:76px 1fr;gap:5px 10px;font-size:13.5px}
.kv b{color:var(--text-muted);font-weight:600}
.review-item .f{display:flex;gap:8px;padding:13px 17px;border-top:1px solid var(--line);background:#fdfbf9;flex-wrap:wrap;align-items:center}
.check{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.check h4{font-size:14px;font-weight:800;margin-bottom:10px}
.reason{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.reason button{border:1px solid var(--line);background:#fff;border-radius:14px;padding:3px 11px;font-size:12.5px;cursor:pointer}
.reason button:hover{border-color:var(--danger);color:var(--danger)}

.editor{display:grid;grid-template-columns:1fr 300px;gap:18px;align-items:start}
.f{margin-bottom:14px}
.f label{display:block;font-size:13.5px;font-weight:700;margin-bottom:6px}
.f label .opt{color:var(--text-muted);font-weight:400;font-size:12px;margin-left:5px}
.f input,.f select,.f textarea{width:100%;height:42px;border:1px solid var(--line);border-radius:9px;padding:0 13px;background:#fdfcfb;outline:none}
.f textarea{height:auto;padding:11px 13px;resize:vertical}
.f input:focus,.f select:focus,.f textarea:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(224,87,15,.1)}
.f .hint{font-size:12px;color:var(--text-muted);margin-top:5px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.f3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.drop{border:2px dashed #d8cec5;border-radius:11px;padding:24px;text-align:center;color:var(--text-muted);background:#fdfcfb}
.side-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin-bottom:16px;overflow:hidden}
.side-box > h4{font-size:14px;font-weight:800;padding:11px 15px;background:#faf7f4;border-bottom:1px solid var(--line)}
.side-box .in{padding:14px 15px}
.side-box .in .f:last-child{margin-bottom:0}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}
.copybox{display:flex;gap:8px}
.copybox input{flex:1;height:38px;border:1px solid var(--line);border-radius:8px;padding:0 11px;font-size:12.5px;background:var(--bg);font-family:ui-monospace,monospace}
.note{background:#fff8ec;border:1px solid #f3dcb4;border-radius:9px;padding:11px 14px;font-size:13px;color:#7a5510}
.errbox{background:#fbe6e5;border:1px solid #f0cfcd;color:var(--danger);border-radius:9px;padding:12px 14px;margin-bottom:16px;font-size:13.5px}
.okbox{background:#e3f4ec;border:1px solid #bfe4d2;color:var(--ok);border-radius:9px;padding:12px 14px;margin-bottom:16px;font-size:13.5px}
.bar{height:7px;background:#f0ece8;border-radius:4px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--brand);border-radius:4px}
.matrix td{text-align:center}
.matrix td:first-child{text-align:left;font-weight:600}
.matrix .y{color:var(--ok);font-weight:800}
.matrix .n{color:#d4ccc4}
.chk{width:16px;height:16px;accent-color:var(--brand)}

@media(max-width:1150px){.kpis{grid-template-columns:repeat(2,1fr)}.editor,.review{grid-template-columns:1fr}}
@media(max-width:860px){
  .shell{grid-template-columns:1fr}
  .sidebar{position:static;height:auto}
  .review-item .body{grid-template-columns:1fr}
  .f2,.f3{grid-template-columns:1fr}
}
