@import "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700;800&display=swap";:root{color:#142436;font-synthesis:none;text-rendering:optimizelegibility;--primary:#1769aa;--primary-dark:#0b3f70;--line:#dbe5ed;--muted:#6b7c8d;--surface:#fff;--success:#2e7d5b;--danger:#b23a48;--shadow:0 12px 30px #14375417;background:#eef3f7;font-family:Noto Sans SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{background:#eef3f7;min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}small{color:var(--muted)}#app{min-height:100vh}.mobile-shell{background:#f4f7f9;width:min(100%,520px);min-height:100vh;margin:0 auto;padding-bottom:82px;position:relative;box-shadow:0 0 48px #1d374d1f}.app-header{z-index:20;color:#fff;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#0c385cf5;border-bottom:1px solid #ffffff1f;align-items:center;gap:12px;min-height:72px;padding:12px 18px;display:flex;position:sticky;top:0}.app-header>div{flex:1;min-width:0}.app-header small{color:#ffffffa6;white-space:nowrap;text-overflow:ellipsis;font-size:10px;display:block;overflow:hidden}.app-header h1{margin:2px 0 0;font-size:20px;line-height:1.25}.role-badge{white-space:nowrap;text-overflow:ellipsis;background:#ffffff1f;border:1px solid #ffffff29;border-radius:999px;max-width:118px;padding:6px 9px;font-size:10px;overflow:hidden}.app-content{min-height:calc(100vh - 154px);padding:14px}.page-stack{gap:14px;display:grid}.tabbar{z-index:30;width:min(100%,520px);height:70px;padding:7px 8px max(7px, env(safe-area-inset-bottom));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffffff5;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tabbar a{color:#718092;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:600;display:flex;position:relative}.tabbar a.active{color:var(--primary);background:#edf5fb}.tab-icon{font-size:21px;font-weight:400;line-height:1}.tab-count{color:#fff;background:#d64550;border:2px solid #fff;border-radius:9px;place-items:center;min-width:17px;height:17px;padding:0 4px;font-size:9px;display:grid;position:absolute;top:3px;left:calc(50% + 8px)}.login-page{color:#fff;background:linear-gradient(155deg,#082f52 0%,#0d5d91 46%,#e8f1f7 46.2%,#f4f7f9 100%);width:min(100%,520px);min-height:100vh;margin:0 auto;padding:48px 18px 24px}.login-brand{padding:8px 8px 48px}.brand-mark{color:#0e4b77;background:#fff;border-radius:16px;place-items:center;width:52px;height:52px;font-size:15px;font-weight:800;display:grid;box-shadow:0 12px 30px #0003}.login-brand p{color:#ffffffb3;margin:18px 0 3px;font-size:12px}.login-brand h1{letter-spacing:.02em;margin:0;font-size:30px}.login-brand>span{color:#ffffffb8;margin-top:9px;font-size:13px;display:block}.login-panel{color:#142436;box-shadow:var(--shadow);background:#fff;border-radius:24px;padding:22px 18px}.role-list{gap:8px;max-height:44vh;margin:16px -4px 18px;padding:0 4px;display:grid;overflow-y:auto}.role-option{border:1px solid var(--line);border-radius:14px;grid-template-columns:42px 1fr 18px;align-items:center;gap:11px;padding:11px;transition:all .2s;display:grid}.role-option input{display:none}.role-option.selected{background:#edf6fc;border-color:#6ea6cc;box-shadow:inset 0 0 0 1px #6ea6cc}.role-avatar{color:#fff;background:#215f8d;border-radius:13px;place-items:center;width:42px;height:42px;font-weight:800;display:grid}.role-option strong,.role-option small{display:block}.role-option strong{font-size:14px}.role-option small{margin-top:2px;font-size:10px}.role-option i{border:2px solid #b9c6d0;border-radius:50%;width:17px;height:17px}.role-option.selected i{border:5px solid var(--primary)}.login-note{color:var(--muted);text-align:center;margin:12px 4px 0;font-size:10px;line-height:1.6}.form-error{color:#9f2f3b;background:#fff0f1;border-radius:10px;padding:9px 11px;font-size:12px}.welcome-card,.summary-banner,.module-hero,.profile-card{color:#fff;background:linear-gradient(135deg,#0c3d66,#1478a6);border-radius:22px;padding:20px;box-shadow:0 14px 32px #124b722e}.welcome-card{justify-content:space-between;align-items:flex-start;display:flex}.welcome-card small,.summary-banner small,.module-hero small,.profile-card small{color:#ffffffad;letter-spacing:.12em;font-size:9px}.welcome-card h2,.summary-banner h2,.module-hero h2,.profile-card h2{margin:5px 0;font-size:21px}.welcome-card p,.summary-banner p,.module-hero p,.profile-card p{color:#ffffffb3;margin:0;font-size:11px;line-height:1.55}.status-dot{background:#ffffff1f;border-radius:999px;padding:5px 8px;font-size:10px}.summary-banner.compact{padding:18px 20px}.messages-banner{background:linear-gradient(135deg,#49366f,#6b579a)}.stats-grid{grid-template-columns:repeat(3,1fr);gap:9px;display:grid}.stat-card{border:1px solid var(--line);background:#fff;border-radius:16px;padding:14px 12px;box-shadow:0 6px 18px #1a3f5c0d}.stat-card span,.stat-card strong,.stat-card small{display:block}.stat-card span{color:var(--muted);font-size:10px}.stat-card strong{margin:7px 0 0;font-size:22px}.stat-card small{font-size:9px}.stat-card.blue strong{color:#1769aa}.stat-card.orange strong{color:#b45f16}.stat-card.green strong{color:#2d795a}.content-section{background:var(--surface);border:1px solid var(--line);border-radius:19px;padding:17px;box-shadow:0 8px 24px #1e3d550e}.section-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.section-heading>div{min-width:0}.section-heading small{color:#7190a8;letter-spacing:.16em;font-size:8px;font-weight:800;display:block}.section-heading h2{margin:2px 0 0;font-size:17px}.section-heading>a,.section-heading>span{color:var(--primary);font-size:10px;font-weight:700}.task-list{margin-top:11px;display:grid}.task-row{border-top:1px solid #edf1f4;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:11px;padding:12px 0;display:grid}.task-row:first-child{border-top:0}.task-row>span:nth-child(2){min-width:0}.task-row strong,.task-row small,.task-row time{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.task-row strong{font-size:13px}.task-row small,.task-row time{margin-top:3px;font-size:9px}.task-row em{color:#8c5b12;white-space:nowrap;background:#fff5df;border-radius:999px;padding:4px 7px;font-size:9px;font-style:normal}.module-icon{color:#fff;border-radius:12px;place-items:center;width:40px;height:40px;font-size:15px;font-weight:800;display:grid}.module-icon.large{border-radius:14px;width:46px;height:46px;margin:0 auto 9px}.module-icon.xlarge{background:#ffffff26;border-radius:17px;flex:none;width:54px;height:54px;font-size:20px}.module-grid{grid-template-columns:repeat(4,1fr);gap:14px 7px;margin-top:17px;display:grid}.module-entry{text-align:center;min-width:0}.module-entry strong,.module-entry small{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.module-entry strong{font-size:11px}.module-entry small{margin-top:2px;font-size:8px}.notice-panel>p{margin:13px 0 4px;font-size:13px;font-weight:700}.notice-panel>span{color:var(--muted);font-size:10px}.filter-scroll,.record-selector{scrollbar-width:none;gap:8px;display:flex;overflow-x:auto}.filter-scroll::-webkit-scrollbar{display:none}.record-selector::-webkit-scrollbar{display:none}.filter-scroll button{border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:999px;flex:none;padding:7px 13px;font-size:10px}.filter-scroll button.active{color:#fff;background:var(--primary);border-color:var(--primary)}.module-page{gap:14px;display:grid}.module-hero{background:linear-gradient(135deg, color-mix(in srgb, var(--module-color) 86%, #172c3b), var(--module-color));align-items:center;gap:13px;display:flex}.module-hero>div{flex:1;min-width:0}.module-hero h2{font-size:20px}.module-hero p{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.record-selector button{text-align:left;border:1px solid var(--line);color:#32495c;background:#fff;border-radius:13px;flex:none;min-width:128px;padding:10px 12px}.record-selector button strong,.record-selector button small{white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block;overflow:hidden}.record-selector button strong{font-size:11px}.record-selector button small{margin-top:3px;font-size:9px}.record-selector button.active{color:#fff;background:#123f62;border-color:#123f62}.record-selector button.active small{color:#ffffffad}.record-selector .add-record{min-width:auto;color:var(--primary);border-style:dashed}.status-pill{background:#fff4d9;border-radius:999px;padding:6px 9px;color:#8a5b13!important}.meta-row{color:var(--muted);flex-wrap:wrap;gap:9px;margin:12px 0;font-size:9px;display:flex}.meta-row span{border-right:1px solid var(--line);padding-right:9px}.meta-row span:last-child{border:0}.action-row{flex-wrap:wrap;gap:8px;display:flex}.detail-grid{grid-template-columns:1fr 1fr;gap:0;margin:12px 0 0;display:grid}.detail-grid>div{border-top:1px solid #edf1f4;padding:11px 8px}.detail-grid dt{color:var(--muted);font-size:9px}.detail-grid dd{overflow-wrap:anywhere;margin:4px 0 0;font-size:12px;font-weight:600}.timeline{margin:15px 0 0;padding:0;list-style:none}.timeline li{grid-template-columns:16px 1fr;gap:9px;padding-bottom:18px;display:grid;position:relative}.timeline li:before{content:"";background:var(--line);width:1px;position:absolute;top:12px;bottom:-3px;left:5px}.timeline li:last-child:before{display:none}.timeline i{z-index:1;background:var(--primary);border:3px solid #ddecf7;border-radius:50%;width:11px;height:11px;margin-top:3px;position:relative}.timeline strong{margin-right:7px;font-size:12px;display:inline-block}.timeline span,.timeline p,.timeline small{font-size:9px}.timeline p{color:#506577;margin:4px 0}.message-list{padding-top:6px;padding-bottom:6px}.message-list article{border-top:1px solid #edf1f4;grid-template-columns:8px 1fr;gap:8px;padding:14px 4px;display:grid}.message-list article:first-child{border-top:0}.message-list article>i{background:0 0;border-radius:50%;width:6px;height:6px;margin-top:6px}.message-list article.unread>i{background:#d64550}.message-list article>div>span{justify-content:space-between;gap:10px;display:flex}.message-list strong{font-size:13px}.message-list time,.message-list small{color:var(--muted);font-size:9px}.message-list p{color:#53677a;margin:6px 0;font-size:11px;line-height:1.55}.profile-card{align-items:center;gap:14px;display:flex}.profile-avatar{background:#ffffff29;border-radius:18px;place-items:center;width:58px;height:58px;font-size:22px;font-weight:800;display:grid}.setting-list{margin-top:10px;display:grid}.setting-list>div,.setting-list>a{border-top:1px solid #edf1f4;justify-content:space-between;align-items:center;gap:12px;min-height:46px;font-size:11px;display:flex}.setting-list strong{text-align:right;color:#41586b}.setting-list .positive{color:var(--success)}.setting-list.links b{color:#91a0ad;font-size:22px;font-weight:400}.primary-button,.outline-button,.danger-button,.icon-button{border:0;border-radius:12px;font-weight:700}.primary-button{color:#fff;background:var(--primary);width:100%;min-height:45px;padding:10px 16px;box-shadow:0 8px 20px #1769aa2e}.primary-button.small,.outline-button{width:auto;min-height:34px;padding:7px 12px;font-size:10px}.outline-button{color:var(--primary);background:#fff;border:1px solid #9fc0d8}.outline-button.light{color:#fff;background:#ffffff1a;border-color:#ffffff4d}.outline-button.full,.danger-button.full{width:100%;min-height:42px;margin-top:10px}.danger-button{color:var(--danger);background:#fff0f2}.icon-button{width:34px;height:34px;color:inherit;background:#ffffff1f;flex:none;place-items:center;font-size:22px;display:grid}.sheet-backdrop{z-index:80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#081b2b8a;justify-content:center;align-items:flex-end;padding:12px 0 0;display:flex;position:fixed;inset:0}.bottom-sheet{width:min(100%,520px);max-height:88vh;padding:9px 18px calc(22px + env(safe-area-inset-bottom));background:#fff;border-radius:24px 24px 0 0;overflow-y:auto;box-shadow:0 -16px 42px #0000002e}.sheet-handle{background:#d6dee5;border-radius:2px;width:38px;height:4px;margin:0 auto 14px}.bottom-sheet .icon-button{color:#617486;background:#edf2f5}.business-form{gap:13px;margin-top:18px;display:grid}.business-form label,.action-remark{gap:6px;display:grid}.business-form label>span,.action-remark>span{color:#53697b;font-size:11px;font-weight:600}.business-form label.required>span:after{content:" *";color:#d23d4b}.business-form input,.business-form select,.business-form textarea,.action-remark input,.action-remark textarea{color:#173046;background:#f8fafb;border:1px solid #d9e3ea;border-radius:11px;outline:none;width:100%;padding:11px 12px}.business-form input:focus,.business-form select:focus,.business-form textarea:focus,.action-remark input:focus,.action-remark textarea:focus{border-color:#6ba3ca;box-shadow:0 0 0 3px #e8f3fa}.upload-field{background:#f3f8fb;border:1px dashed #8fb3cc;border-radius:11px;align-items:center;min-height:45px;padding:9px 11px;display:flex;position:relative}.upload-field input{opacity:0;position:absolute;inset:0}.upload-field span{color:#4f6c80;font-size:10px}.action-sheet>p{color:var(--muted);font-size:11px;line-height:1.6}.action-remark{margin:14px 0}.feedback{z-index:100;color:#fff;width:min(100% - 32px,480px);box-shadow:var(--shadow);border-radius:12px;padding:11px 14px;font-size:11px;position:fixed;top:80px;left:50%;transform:translate(-50%)}.feedback.error{background:#a93643}.feedback.success{background:#277357}.loading-mask{z-index:120;color:#fff;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#071b2c8f;place-content:center;justify-items:center;display:grid;position:fixed;inset:0}.loading-mask p{font-size:11px}.spinner{border:3px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:34px;height:34px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{color:var(--muted);text-align:center;padding:24px 12px;font-size:11px}.page-empty{background:#fff;border:1px dashed #bdcad4;border-radius:18px;margin-top:30px}@media (width>=521px){body{padding:24px 0}.mobile-shell,.login-page{border-radius:28px;min-height:calc(100vh - 48px);overflow:hidden}.tabbar{border-radius:0 0 28px 28px;bottom:24px}.app-header{border-radius:28px 28px 0 0}}@media (width<=360px){.module-grid{grid-template-columns:repeat(3,1fr)}.detail-grid{grid-template-columns:1fr}.role-badge{display:none}}
