*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#17202b;background:#f4f6f8}.app-body{display:flex;min-height:100vh}.side{width:250px;background:#123f38;color:#fff;padding:22px 16px;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column}.logo{font-size:24px;font-weight:800;padding:0 8px 24px}.logo span{font-size:11px;font-weight:600;background:#2b5a52;border-radius:10px;padding:3px 7px;margin-left:8px}.side nav{display:flex;flex-direction:column;gap:6px}.side nav button{border:0;background:transparent;color:#dbe7e4;text-align:left;padding:12px 14px;border-radius:10px;font-size:16px;cursor:pointer;display:flex;gap:10px}.side nav button:hover,.side nav button.active{background:#365f58;color:#fff}.side nav button span{opacity:.8;width:20px}.side-user{margin-top:auto;border-top:1px solid #34645c;padding-top:16px;display:flex;align-items:center;gap:10px}.avatar{width:36px;height:36px;border-radius:50%;background:#fff;color:#123f38;display:grid;place-items:center;font-weight:800}.side-user small{display:block;color:#b8d0cb;margin-top:2px}.side-user button{margin-left:auto;border:0;background:transparent;color:#fff;font-size:18px;cursor:pointer}main{margin-left:250px;width:calc(100% - 250px);padding:24px 34px 60px}header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}header h1{font-size:34px;margin:4px 0 0}.crumb{font-size:13px;color:#8a96a3}.user-pill{background:#fff;border:1px solid #dce2e6;border-radius:25px;padding:10px 16px}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.card{background:#fff;border:1px solid #dde3e7;border-radius:18px;padding:22px;box-shadow:0 1px 2px rgba(0,0,0,.02)}.metric small{display:block;color:#71808e;font-size:15px}.metric strong{display:block;font-size:42px;margin:8px 0}.metric span{color:#9aa5af;font-size:13px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.topgap{margin-top:16px}.card-head h3,.card h3{margin:0 0 14px}.rowline{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #eef1f3}.principles p,.policy-list p{display:grid;grid-template-columns:150px 1fr;gap:12px;margin:0;padding:12px 0;border-bottom:1px solid #eef1f3}.principles span,.policy-list span,.muted,.help{color:#74818e}.notice{background:#eef7f4;border:1px solid #d3e9e2;padding:14px 16px;border-radius:12px;color:#36574f}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.toolbar input,.toolbar select{max-width:300px}.toolbar-note{color:#7b8792;font-size:14px}.btn{border:1px solid #d8e0e4;background:#fff;border-radius:9px;padding:9px 14px;cursor:pointer;font-weight:650}.btn.primary{background:#176f5f;border-color:#176f5f;color:#fff}.btn.ghost{background:#fff}.btn.danger{color:#a33;border-color:#e7caca}.btn.sm{padding:6px 10px;font-size:12px}.w100{width:100%}.table-wrap{background:#fff;border:1px solid #dde3e7;border-radius:16px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{background:#fafbfc;text-align:left;color:#6f7b86;font-weight:650;padding:12px 14px;white-space:nowrap}td{padding:13px 14px;border-top:1px solid #edf0f2;vertical-align:top}.tag{display:inline-block;border-radius:999px;padding:4px 9px;font-size:12px;background:#eef2f4}.tag.L4,.tag.L5{background:#fff0e8;color:#a75022}.tag.SUBMITTED{background:#fff5d9;color:#876315}.tag.APPROVED{background:#e8f7ef;color:#16734a}.tag.RETURNED{background:#fdeeee;color:#a33}.tag.ACTIVE{background:#eaf4ff;color:#356aa0}.mini{display:inline-block;font-size:10px;padding:3px 6px;border:1px solid #dce4e7;border-radius:6px;margin:1px;background:#fafcfc}.task-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:16px}.task h3{font-size:19px;margin:5px 0}.task p{color:#67747f;min-height:42px}.task-top{display:flex;justify-content:space-between;gap:10px}.task-meta,.task-stats{display:flex;gap:14px;flex-wrap:wrap;color:#7c8892;font-size:12px;margin:10px 0}.task-stats{padding:9px 0;border-top:1px solid #eef1f3}.modal-back{position:fixed;inset:0;background:rgba(12,20,24,.48);display:flex;align-items:flex-start;justify-content:center;padding:40px 20px;overflow:auto;z-index:99}.modal{width:min(900px,96vw);background:#fff;border-radius:18px;padding:24px;box-shadow:0 20px 70px rgba(0,0,0,.22)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.modal-head h2{margin:2px 0 0}.modal-head .x{border:0;background:#f0f3f4;border-radius:50%;width:34px;height:34px;font-size:20px;cursor:pointer}form>label,.field,label{display:block;font-size:13px;font-weight:650;color:#55616c;margin-bottom:13px}input,select,textarea{width:100%;border:1px solid #d8e0e4;border-radius:9px;padding:10px 11px;margin-top:6px;font:inherit;background:#fff}textarea{resize:vertical}.form-section{margin:18px 0;padding-top:16px;border-top:1px solid #edf0f2}.form-section h3{margin:0 0 12px}.secret-section{background:#fbf8f2;padding:16px;border-radius:12px;border:1px solid #eee3cb}.secret-section p{font-size:13px;color:#7f725c}.level{font-size:11px;border:1px solid #dccaa8;border-radius:6px;padding:2px 5px;margin-left:5px}.form-actions{display:flex;justify-content:flex-end;gap:10px}.submission{display:flex;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid #edf0f2}.actions{display:flex;gap:6px;align-items:center}.subhead{margin-top:22px}.kv{display:grid;grid-template-columns:140px 1fr;gap:10px 14px}.kv .k{color:#788590}.secret{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #edf0f2}.secret small{display:block;color:#8b969f;margin-top:3px}.secret code{background:#f3f5f6;border-radius:6px;padding:5px 8px}.checkgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.check{border:1px solid #e0e5e8;border-radius:9px;padding:9px;margin:0;background:#fbfcfc}.check input{width:auto;margin:0 5px 0 0}.typecards{grid-template-columns:repeat(3,minmax(0,1fr))}.typecards small{color:#667983}.typecards p{color:#73808b}.role-example{padding:14px 0;border-bottom:1px solid #edf0f2}.role-example code{display:block;margin:7px 0;background:#f5f7f8;padding:8px;border-radius:7px;white-space:normal}.role-example span{color:#75818b;font-size:13px}.empty,.loading{text-align:center;color:#88949d;padding:45px}.audit-detail{max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toast{position:fixed;right:24px;bottom:24px;background:#172b26;color:#fff;padding:12px 18px;border-radius:10px;z-index:120;box-shadow:0 8px 30px rgba(0,0,0,.2)}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#123f38,#236d5e)}.login-card{width:min(430px,92vw);background:#fff;border-radius:22px;padding:34px;box-shadow:0 25px 80px rgba(0,0,0,.22)}.login-brand{font-size:13px;color:#187060;font-weight:800;letter-spacing:2px}.login-card h1{font-size:26px;margin:8px 0}.login-card p{color:#7b8792}.demo{margin-top:18px;background:#f6f8f8;border-radius:10px;padding:12px;color:#74818e;font-size:12px;line-height:1.8}@media(max-width:1000px){.cards,.task-grid,.typecards{grid-template-columns:repeat(2,1fr)}.side{width:210px}main{margin-left:210px;width:calc(100% - 210px)}}@media(max-width:760px){.side{position:static;width:100%;min-height:auto}.app-body{display:block}.side-user{display:none}.side nav{display:grid;grid-template-columns:repeat(2,1fr)}main{margin:0;width:100%;padding:18px}.cards,.grid2,.task-grid,.typecards{grid-template-columns:1fr}.checkgrid{grid-template-columns:1fr}header h1{font-size:28px}.user-pill{display:none}}
.type-card{display:flex;flex-direction:column;min-height:220px}.type-actions{display:flex;gap:8px;margin-top:auto;padding-top:16px}.section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.section-title h3{margin:0}.section-title p{margin:5px 0 0;color:#7b8792;font-size:13px}.template-list{display:flex;flex-direction:column;gap:10px}.template-row{display:grid;grid-template-columns:28px 1.4fr 1fr 1.3fr 90px 190px;gap:10px;align-items:end;border:1px solid #e2e8eb;border-radius:12px;padding:12px;background:#fbfcfc}.secret-field{grid-template-columns:28px 1.8fr 1fr 1fr 1fr 190px;background:#fffdf8}.template-row label{margin:0}.template-row .drag{align-self:center;text-align:center;color:#9aa6ae}.template-check{align-self:center!important;padding-bottom:10px}.template-check input{width:auto;margin:0 5px 0 0}.row-actions{display:flex;gap:5px;justify-content:flex-end;padding-bottom:4px}.readonly-box{border:1px solid #d8e0e4;background:#f6f8f8;border-radius:9px;padding:10px 11px;margin-top:6px;color:#43515b}@media(max-width:1100px){.template-row,.secret-field{grid-template-columns:1fr 1fr}.template-row .drag{display:none}.row-actions{justify-content:flex-start}.template-check{padding-bottom:0}}

/* ===== V1.5 企业微信式简约界面 ===== */
:root{--primary:#1677ff;--primary-soft:#eaf3ff;--line:#e7eaf0;--text:#1f2329;--muted:#8a9099;--bg:#f5f6f8;--green:#00b578}
body{background:var(--bg);color:var(--text)}
.side{width:220px;background:#fff;color:var(--text);border-right:1px solid var(--line);padding:18px 12px}.logo{font-size:22px;color:#18202a;padding:3px 10px 20px}.logo span{background:#eef3f9;color:#617083}.side nav{gap:3px}.side nav button{color:#4d5661;padding:11px 13px;font-size:15px}.side nav button:hover,.side nav button.active{background:#eef5ff;color:#1768cf}.side nav button.active{font-weight:700}.side-user{border-top:1px solid var(--line);color:#202731}.side-user small{color:#8b96a3}.side-user button{color:#6f7780}.avatar{background:#e9f2ff;color:#1768cf}.app-body main{margin-left:220px;width:calc(100% - 220px);padding:22px 28px 60px}header{align-items:center;margin-bottom:20px}header h1{font-size:30px}.head-actions{display:flex;align-items:center;gap:8px}.env-badge{padding:7px 11px;border-radius:999px;font-size:12px;font-weight:700}.env-badge.test{background:#fff3d8;color:#a86b00}.env-badge.prod{background:#e9f8f1;color:#087a54}.user-pill{padding:9px 14px;background:#fff}.btn{border-radius:7px;font-weight:600}.btn.primary{background:var(--primary);border-color:var(--primary)}.card{border-radius:12px;border-color:var(--line);box-shadow:0 1px 2px rgba(31,35,41,.03)}.metric strong{font-size:36px}.version-number{font-size:28px!important}.env-number{font-size:24px!important}.notice{background:#f3f8ff;border-color:#d7e8ff;color:#42637f}.table-wrap{border-color:var(--line);border-radius:10px}th{background:#f8f9fb;color:#69727d}td{border-top-color:#edf0f3}.tag.OPEN,.tag.ACTIVE{background:#e9f8f1;color:#087a54}.tag.PENDING,.tag.PENDING_MANAGER,.tag.PENDING_TARGET_MANAGER,.tag.PENDING_HR,.tag.SUBMITTED{background:#fff3d8;color:#946200}.tag.REJECTED,.tag.RETURNED{background:#fff0ef;color:#b42318}.tag.APPROVED{background:#e9f8f1;color:#087a54}
.app-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.app-card{display:grid;grid-template-columns:42px 1fr;grid-template-rows:auto auto;text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;padding:18px;cursor:pointer;min-height:100px}.app-card:hover{border-color:#b9d7ff;box-shadow:0 4px 18px rgba(22,119,255,.08)}.app-card>span{grid-row:1/3;width:36px;height:36px;border-radius:9px;background:var(--primary-soft);display:grid;place-items:center;color:var(--primary);font-size:18px}.app-card b{font-size:16px}.app-card small{color:var(--muted);margin-top:5px}.setting-actions{display:grid;gap:10px}.setting-card{border:1px solid var(--line);background:#fafbfc;border-radius:9px;padding:14px;text-align:left;cursor:pointer}.setting-card:hover{background:#f2f7ff;border-color:#c9ddff}.setting-card b{display:block}.setting-card span{display:block;color:var(--muted);font-size:12px;margin-top:4px}.responsibility-cell{max-width:260px;color:#5f6872}.period-title{display:flex;gap:14px;align-items:baseline;margin:2px 0 14px}.period-title b{font-size:18px}.period-title span{font-size:13px;color:var(--muted)}.filterbar{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px}.batchbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#fff;border:1px solid #d8e8ff;border-radius:10px;padding:10px 12px;margin-bottom:12px}.batchbar span{color:var(--muted);font-size:12px}.batchbar select{width:auto;min-width:130px;margin:0}.matrix-wrap{max-height:62vh;overflow:auto}.schedule-matrix{min-width:1120px}.schedule-matrix th,.schedule-matrix td{text-align:center;min-width:110px}.schedule-matrix th small,.schedule-matrix td small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.schedule-matrix .sticky-col{position:sticky;background:#fff;z-index:2}.schedule-matrix thead .sticky-col{background:#f8f9fb;z-index:4}.schedule-matrix .c0{left:0;min-width:55px;width:55px}.schedule-matrix .c1{left:55px;min-width:120px}.schedule-matrix .c2{left:175px;min-width:110px}.schedule-matrix .c3{left:285px;min-width:120px;box-shadow:5px 0 7px -7px #8b9198}.schedule-matrix select.cell-shift{min-width:105px;margin:0;padding:7px 5px;border-radius:6px}.schedule-matrix select.cell-shift.dirty{border-color:#1677ff;background:#f1f7ff}.readonly-shift{white-space:pre-line;line-height:1.45}.mini-link{display:block;margin:5px auto 0;border:0;background:transparent;color:#1677ff;cursor:pointer;font-size:11px}.schedule-head .toolbar{margin-bottom:7px}.schedule-head select,.schedule-head input,.filterbar select,.filterbar input{width:auto;margin:0}.checkgrid{grid-template-columns:repeat(4,minmax(0,1fr))}.template-row{grid-template-columns:28px 1.25fr 1fr 1fr 1.25fr 115px 185px}.template-check{font-size:12px;line-height:1.8}.secret-field{grid-template-columns:28px 1.8fr 1fr 1fr 1fr 190px}.modal{border-radius:14px}.login{background:#eef3f8}.login-card{border-radius:14px;box-shadow:0 12px 40px rgba(31,35,41,.13)}.login-brand{color:#1677ff}.login-card .btn.primary{height:42px}.login-card select{background:#fff}.toast{background:#1f2329}.policy-list p{grid-template-columns:180px 1fr}.toolbar-note{color:#89929c}
@media(max-width:1100px){.app-grid{grid-template-columns:repeat(2,1fr)}.template-row,.secret-field{grid-template-columns:1fr 1fr}.template-row .drag{display:none}.checkgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.side{width:100%;border-right:0;border-bottom:1px solid var(--line)}.app-body main{margin-left:0;width:100%}.app-grid{grid-template-columns:1fr}.head-actions{flex-wrap:wrap}.period-title{display:block}.schedule-head .toolbar,.filterbar{overflow:auto;flex-wrap:nowrap}.checkgrid{grid-template-columns:1fr}}
