:root{color:#172033;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f6f8fb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Arial,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}.app-shell{background:radial-gradient(circle at 16% 10%,#2f75ff17,#0000 26%),linear-gradient(#f6f9fd 0%,#eef3f9 100%);width:100%;min-height:100vh;overflow:hidden}.app-sider{border-right:1px solid #dfe7f3;height:100vh;top:0;overflow:auto;box-shadow:12px 0 34px #142d5214;background:#fffffff5!important;position:sticky!important}.brand{background:linear-gradient(#fffffffa,#f7fbffeb);border-bottom:1px solid #e6edf7;align-items:center;gap:12px;min-height:64px;padding:0 16px;display:flex}.brand.large{border:0;padding:0}.brand-mark{color:#fff;background:radial-gradient(circle at 35% 30%,#63e6be 0,#2563eb 46%,#182b80 100%);border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:12px;font-weight:800;display:grid;box-shadow:0 8px 20px #2563eb57}.brand-copy{min-width:0}.brand-copy strong{color:#071833;font-size:15px;line-height:20px;display:block}.brand-copy span{color:#718096;font-size:12px;line-height:18px;display:block}.app-sider .ant-menu{color:#334155;padding:12px 10px;background:0 0!important}.app-sider .ant-menu-item,.app-sider .ant-menu-submenu-title{border-radius:8px;height:40px;margin:5px 0;line-height:40px;color:#334155!important}.app-sider .ant-menu-submenu-arrow,.app-sider .ant-menu-item-icon,.app-sider .ant-menu-submenu-title .ant-menu-item-icon{color:#64748b!important}.app-sider .ant-menu-item-selected{font-weight:700;box-shadow:inset 3px 0 #2f75ff;color:#1d5dff!important;background:linear-gradient(90deg,#eaf2ff 0%,#f7fbff 100%)!important}.app-sider .ant-menu-item-selected .ant-menu-item-icon{color:#1d5dff!important}.app-sider .ant-menu-item:hover,.app-sider .ant-menu-submenu-title:hover{color:#1d5dff!important;background:#f3f7fd!important}.app-main{min-width:0}.app-header{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffdb;border-bottom:1px solid #dfe7f3;justify-content:space-between;align-items:center;gap:14px;height:64px;padding:0 24px;display:flex;box-shadow:0 8px 28px #122d540f}.app-header-context{gap:2px;display:grid}.app-header-context strong{color:#071833;font-size:15px;line-height:20px}.app-header-context span{color:#718096;font-size:12px;line-height:18px}.app-content{background:0 0;width:100%;min-width:0;padding:24px 24px 28px;overflow:hidden auto}.page-stack{width:100%;max-width:1480px;margin:0 auto}.page-heading{justify-content:space-between;align-items:center;gap:16px;min-height:72px;display:flex}.page-heading h3{color:#071833;margin:0 0 6px;font-weight:800}.panel-card,.metric-card{background:#fffffff0;border:1px solid #dfe7f3;border-radius:10px;box-shadow:0 18px 44px #142d5212}.panel-card .ant-card-head{background:linear-gradient(#fffffff5,#f8fbffe6);border-bottom:1px solid #edf2f8;min-height:48px}.panel-card .ant-card-head-title{color:#22304a;font-size:14px;font-weight:700}.metric-card .ant-card-body{padding:16px 18px}.metric-card .ant-statistic-title{color:#60708a;font-size:12px}.metric-card .ant-statistic-content{color:#071833;font-size:24px;font-weight:800}.content-tabs>.ant-tabs-nav{margin-bottom:12px}.inline-alert{margin-bottom:14px}.note{color:#33506f;background:#f8fbff;border:1px solid #dbeafe;border-radius:8px;margin:2px 0 16px;padding:10px 12px;font-size:13px;line-height:1.65}.rule-summary{border-bottom:1px solid #edf2f8;gap:8px;padding-bottom:14px;display:grid}.rule-summary strong{color:#172033;font-size:18px}.rule-summary span{color:#53627a;font-size:13px;line-height:1.6}.rule-steps{gap:10px;margin:14px 0 16px;display:grid}.rule-steps div{grid-template-columns:24px 1fr;align-items:start;gap:8px;display:grid}.rule-steps b{color:#1d4ed8;background:#eaf2ff;border-radius:50%;place-items:center;width:24px;height:24px;font-size:12px;display:grid}.rule-steps span{color:#26364f;line-height:1.65}.setting-list{color:#17233d;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;font-size:14px;display:grid}.region-group-expanded{background:linear-gradient(#f8fbff 0%,#fff 100%);border:1px solid #cfe0ff;border-left:4px solid #2f75ff;border-radius:10px;margin:0 12px 10px 42px;padding:14px;box-shadow:0 12px 28px #2563eb14}.region-group-expanded-title{color:#17468a;margin-bottom:10px;font-size:13px;font-weight:700}.config-drawer .ant-drawer-body{background:#f5f8fd;padding:18px}.region-group-form{gap:14px;display:grid}.drawer-hero{background:linear-gradient(135deg,#f7fbff 0%,#eef5ff 100%);border:1px solid #d8e6ff;border-radius:12px;justify-content:space-between;gap:16px;padding:18px;display:flex}.drawer-hero h4{color:#10213c;margin:4px 0 6px}.drawer-hero .ant-typography{color:#61708a;margin-bottom:0}.drawer-hero-stats{grid-template-columns:1fr 1fr;align-content:center;gap:8px;min-width:150px;display:grid}.drawer-hero-stats span{color:#64748b;text-align:center;background:#fff;border:1px solid #d8e6ff;border-radius:10px;gap:2px;padding:10px;display:grid}.drawer-hero-stats b{color:#1d4ed8;font-size:22px;line-height:1}.config-section{background:#fff;border:1px solid #e1e8f5;border-radius:12px;padding:16px;box-shadow:0 10px 24px #0f23460a}.config-section-head{gap:4px;margin-bottom:14px;display:grid}.config-section-head b{color:#10213c;font-size:15px}.config-section-head span{color:#64748b;font-size:13px;line-height:1.6}.switch-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.switch-grid .ant-form-item{background:#f8fbff;border:1px solid #e1e8f5;border-radius:10px;margin-bottom:0;padding:12px}.member-weight-table .ant-table{border-radius:10px;overflow:hidden}.member-weight-table .ant-table-thead>tr>th{color:#334155;background:#f3f7ff}.calendar-control-card .ant-card-body{padding:16px 18px}.calendar-control{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.calendar-title{gap:4px;min-width:220px;display:grid}.calendar-title strong{color:#172033;font-size:20px;line-height:1.25}.calendar-title span{color:#64748b;font-size:13px;font-weight:400}.calendar-toolbar{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;max-width:980px;display:flex}.calendar-year-input{width:112px}.calendar-month-select{width:96px}.calendar-summary{border-top:1px solid #edf2f8;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:16px;padding-top:14px;display:grid}.calendar-summary div{background:#f7faff;border:1px solid #e6eefb;border-radius:10px;min-height:56px;padding:10px 12px}.calendar-summary span{color:#64748b;font-size:12px;display:block}.calendar-summary strong{color:#172033;margin-top:4px;font-size:22px;line-height:1.2;display:block}.calendar-card .ant-card-body{padding:16px}.oncall-calendar-head{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-bottom:8px;display:grid}.oncall-calendar-head div{color:#5b6b83;background:#f6f9fd;border-radius:8px;padding:8px 10px;font-size:12px;font-weight:700}.oncall-day{text-align:left;cursor:pointer;background:#fff;border:1px solid #dfe7f3;border-radius:10px;flex-direction:column;gap:8px;min-height:178px;padding:12px;transition:border-color .16s,box-shadow .16s,transform .16s;display:flex}.oncall-day:hover{border-color:#8db4ff;transform:translateY(-1px);box-shadow:0 8px 22px #2563eb1f}.oncall-day.is-muted{opacity:.52}.oncall-day.has-schedule{background:linear-gradient(#f8fbff 0%,#fff 100%);border-color:#9cc0ff}.oncall-day.holiday{background:#fff7f7;border-color:#ffd6d6}.oncall-day.weekend{background:#fbf8ff;border-color:#e7d7ff}.oncall-day.adjusted_workday{background:#fffaf0;border-color:#ffe1a6}.oncall-day-top strong{color:#172033;font-size:18px}.oncall-day span{color:#53627a;font-size:12px;line-height:1.45}.oncall-day em{color:#1d4ed8;word-break:break-word;font-size:12px;font-style:normal;line-height:1.5}.oncall-time-block{background:#f7faff;border:1px solid #e7eefb;border-radius:8px;gap:2px;padding:6px 8px;display:grid}.oncall-time-block span{color:#64748b;font-size:11px;font-weight:700}.oncall-time-block em{color:#1d4ed8;font-size:12px}.oncall-people{gap:4px;margin-top:auto;display:grid}.oncall-people small{color:#26364f;text-overflow:ellipsis;white-space:nowrap;grid-template-columns:44px minmax(0,1fr);gap:4px;font-size:12px;display:grid;overflow:hidden}.oncall-people b{color:#64748b;font-weight:700}.full-width{width:100%}.json-preview{white-space:pre-wrap;word-break:break-word;color:#0f172a;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;max-height:360px;margin:0;padding:12px;font-size:12px;line-height:1.6;overflow:auto}.trace-node{background:#fff;border:1px solid #e2e8f0;border-radius:8px;width:100%}.trace-node .ant-collapse-header{align-items:flex-start!important}.trace-node .ant-collapse-content-box{padding:10px 12px!important}.trace-body{gap:10px;display:grid}.trace-timeline .ant-timeline-item-content{min-height:0}.trace-event-card{background:linear-gradient(#fff 0%,#f8fbff 100%);border:1px solid #dbe7f7;border-radius:10px;gap:10px;padding:12px 14px;display:grid;box-shadow:0 10px 24px #142d520d}.trace-event-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.trace-event-head strong{color:#071833;font-size:14px}.trace-readable{color:#25324a;background:#f8fbff;border:1px solid #dbeafe;border-radius:8px;gap:8px;padding:12px 14px;line-height:1.7;display:grid}.trace-readable p{margin:0}.trace-readable ul{margin:0;padding-left:18px}.trace-readable li+li{margin-top:4px}.ant-table-wrapper .ant-table{color:#25324a;border-radius:10px;font-size:12px}.ant-table-wrapper .ant-table-thead>tr>th{color:#5b6b83;background:#f3f7fd;border-bottom:1px solid #e7eef8;font-size:12px;font-weight:700}.ant-table-wrapper .ant-table-tbody>tr>td{border-bottom:1px solid #edf2f8;padding:10px 12px}.ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#f8fbff!important}.ant-btn{border-radius:8px;font-weight:600}.ant-btn-primary{background:linear-gradient(90deg,#2f75ff 0%,#225eff 100%);border-color:#2f75ff;box-shadow:0 6px 14px #2f75ff33}.ant-btn-default{color:#26364f;border-color:#d5dfed}.ant-select-selector,.ant-input,.ant-input-number,.ant-picker{border-radius:8px!important}.ant-card{color:#172033}.ant-drawer-content{background:#fff}.ant-drawer-header{min-height:64px;border-bottom:1px solid #e6edf7!important}.ant-drawer-title{color:#071833!important;font-weight:800!important}.ant-modal-content{border-radius:12px!important}.ant-tabs .ant-tabs-tab{color:#53627a;font-weight:600}.ant-tabs .ant-tabs-tab-active .ant-tabs-tab-btn{color:#1d5dff!important}.ant-tag{border-radius:6px;font-weight:600}.login-page{background:#eef3f9;grid-template-columns:minmax(480px,.92fr) minmax(520px,1fr);min-height:100vh;padding:28px;display:grid}.login-visual{color:#fff;background:linear-gradient(#185cc438 0%,#185cc400 46%),linear-gradient(145deg,#061b3f 0%,#08285c 54%,#06182f 100%);border-radius:14px 0 0 14px;min-height:calc(100vh - 56px);padding:56px 64px;position:relative;overflow:hidden;box-shadow:0 24px 60px #142d522e}.login-visual:before{content:"";background:linear-gradient(90deg,#0000,#5ba6ffb8,#0000);height:1px;position:absolute;bottom:140px;left:56px;right:56px}.login-visual:after{content:"";border:1px solid #599cf533;border-radius:50%;height:220px;position:absolute;bottom:84px;left:72px;right:72px;transform:perspective(500px)rotateX(64deg)}.login-brand{z-index:1;align-items:center;gap:14px;display:flex;position:relative}.login-brand strong{color:#fff;font-size:26px;line-height:1.1;display:block}.login-brand span{color:#b8ccef;margin-top:6px;font-size:15px;display:block}.login-visual-main{z-index:1;max-width:560px;margin-top:86px;position:relative}.login-kicker{color:#74bbff;letter-spacing:0;text-transform:uppercase;margin:0 0 18px;font-size:13px;font-weight:700}.login-visual-main h1{color:#fff;margin:0;font-size:42px;font-weight:800;line-height:1.35}.login-visual-main p{color:#d8e5f8;max-width:480px;margin:24px 0 0;font-size:16px;line-height:1.85}.login-feature-list{z-index:1;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid;position:absolute;bottom:58px;left:64px;right:64px}.login-feature-list div{background:#ffffff14;border:1px solid #ffffff1f;border-radius:8px;grid-template-columns:28px 1fr;align-items:center;column-gap:12px;min-height:74px;padding:14px 16px;display:grid}.login-feature-list .anticon{color:#63b3ff;grid-row:span 2;font-size:22px}.login-feature-list span{color:#fff;font-size:15px;font-weight:700}.login-feature-list small{color:#b9cae6;font-size:12px}.login-form-side{background:#fffffff5;border-radius:0 14px 14px 0;justify-content:center;align-items:center;min-height:calc(100vh - 56px);padding:64px;display:flex;position:relative;box-shadow:0 24px 60px #142d5224}.login-language{color:#4f5f75;font-size:14px;position:absolute;top:42px;right:52px}.login-card{width:min(100%,520px);box-shadow:none;background:0 0}.login-card .ant-card-body{padding:0}.login-card h2.ant-typography{color:#071833;margin-bottom:8px;font-size:34px;line-height:1.25}.login-card h2 span{color:#2f75ff}.login-card .ant-typography-secondary{color:#66758d;font-size:16px}.login-card form{margin-top:40px}.login-card .ant-input-affix-wrapper,.login-card .ant-input{border-radius:6px!important}.login-card .ant-input-affix-wrapper-lg{padding:10px 14px}.login-options{justify-content:space-between;align-items:center;margin:-2px 0 28px;display:flex}.login-card .ant-btn-lg{height:52px;font-size:16px;font-weight:700}.login-footer{color:#8290a5;text-align:center;margin:0;font-size:13px;position:absolute;bottom:44px;left:64px;right:64px}.roster-calendar-panel .ant-card-head{align-items:flex-start;padding-top:12px;padding-bottom:12px}.roster-calendar-card{background:linear-gradient(#fff 0%,#f8fbff 100%);border:1px solid #d9e5f5;border-radius:8px;min-height:238px;transition:border-color .18s,box-shadow .18s,transform .18s}.roster-calendar-card:hover{border-color:#2f75ff;transform:translateY(-2px);box-shadow:0 12px 28px #2f75ff24}.roster-calendar-card.is-empty{background:#fff}.roster-calendar-card .ant-card-body{flex-direction:column;gap:14px;min-height:236px;padding:18px;display:flex}.roster-card-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.roster-card-month{color:#071833;font-size:22px;font-weight:800;line-height:1.25}.roster-card-body{background:#f3f7fd;border-radius:8px;gap:10px;padding:12px;display:grid}.roster-card-row{color:#6a7890;justify-content:space-between;gap:12px;font-size:13px;display:flex}.roster-card-row b{color:#14233b;text-align:right;overflow-wrap:anywhere;max-width:62%;font-weight:700}.roster-card-members{flex-wrap:wrap;align-items:flex-start;gap:6px;min-height:28px;display:flex}.roster-month-group-list{gap:10px;max-height:328px;padding-right:2px;display:grid;overflow:auto}.roster-month-group{background:#f8fbff;border:1px solid #e2eaf6;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:10px;display:flex}.roster-month-group:hover{background:#fff;border-color:#9ec0ff}.roster-month-group-main{min-width:0}.roster-month-group-title{align-items:center;gap:8px;margin-bottom:4px;display:flex}.roster-month-group-title b{color:#10213c;font-size:14px}.roster-month-group-meta{color:#6a7890;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12px;line-height:1.5;overflow:hidden}.roster-config-drawer .drawer-hero{margin-bottom:18px}.roster-calendar-table .ant-table-cell{vertical-align:top}.roster-group-cell{gap:9px;display:grid}.roster-group-name{color:#071833;font-size:15px;font-weight:800}.roster-group-regions{color:#66758d;font-size:12px;line-height:1.5}.roster-group-strategy{color:#3f536f;font-size:12px;line-height:1.45}.roster-month-cell{color:#14233b;text-align:left;cursor:pointer;background:#f8fbff;border:1px solid #dce7f7;border-radius:8px;align-content:start;gap:6px;width:100%;height:184px;padding:12px;display:grid}.roster-month-cell:hover{background:#fff;border-color:#2f75ff;box-shadow:0 8px 18px #2f75ff1f}.roster-month-cell.is-configured{background:linear-gradient(#eef5ff 0%,#f8fbff 100%);border-color:#9ec0ff}.roster-month-status{color:#53657d;background:#eaf1fb;border-radius:999px;width:fit-content;padding:2px 8px;font-size:12px}.roster-month-cell b{color:#071833;overflow-wrap:anywhere;font-size:14px}.roster-month-members{flex-wrap:wrap;align-content:flex-start;gap:5px;padding-top:2px;display:flex;overflow:hidden}.roster-month-members span{color:#30445f;text-overflow:ellipsis;white-space:nowrap;background:#fff;border:1px solid #d8e3f2;border-radius:999px;max-width:100%;padding:2px 7px;font-size:12px;line-height:1.45;overflow:hidden}.roster-month-members span.is-more{color:#3730a3;background:#eef2ff;border-color:#c7d2fe;font-weight:800}@media (width<=1200px){.app-sider{flex:0 0 220px!important;width:220px!important;min-width:220px!important;max-width:220px!important}.page-stack{max-width:100%}.calendar-control{display:grid}.calendar-toolbar{justify-content:flex-start}}@media (width<=760px){.app-sider{display:none}.app-content{padding:12px}.calendar-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.oncall-calendar-grid,.oncall-calendar-head{gap:6px}.oncall-day{min-height:168px;padding:8px}.login-page{padding:14px;display:block}.login-visual,.login-form-side{border-radius:12px;padding:28px}.login-form-side{min-height:auto}.login-feature-list,.login-footer,.login-language{margin-top:24px;position:static}}.roster-calendar-panel{border:1.5px solid #dde8f7;border-radius:12px;box-shadow:0 2px 14px #0f1f3d0f}.roster-calendar-panel .ant-card-body{padding:16px 20px 20px}.roster-calendar-panel .ant-card-head{border-bottom:1.5px solid #e4ecf5;min-height:56px}.roster-calendar-panel .ant-card-head-title{color:#0f1f3d;font-size:16px;font-weight:800}.roster-calendar-panel .ant-alert{background:#f4f8ff!important;border-color:#c8dcff!important;border-radius:8px!important;margin-bottom:14px!important;padding:8px 14px!important}.roster-calendar-panel .ant-alert-message{color:#415575!important;font-size:12px!important}.roster-calendar-table{border:1.5px solid #e4ecf7;border-radius:10px;overflow:hidden}.roster-calendar-table .ant-table-thead>tr>th,body .roster-calendar-table .ant-table-thead>tr>th{color:#4a6080!important;background:#f0f5fc!important;border-bottom:1.5px solid #d8e5f5!important;padding:10px 12px!important;font-size:12px!important;font-weight:700!important}.roster-calendar-table .ant-table-tbody>tr>td,body .roster-calendar-table .ant-table-tbody>tr>td{vertical-align:top!important;border-bottom:1px solid #edf2f9!important;padding:10px!important}.roster-calendar-table .ant-table-tbody>tr:last-child>td{border-bottom:none!important}.roster-group-cell,body .roster-group-cell{flex-direction:column!important;gap:8px!important;min-height:260px!important;padding:4px 2px!important;display:flex!important}.roster-group-name{color:#0f1f3d;align-items:center;gap:8px;font-size:15px;font-weight:800;line-height:1.3;display:flex}.roster-group-name:before{content:"";background:linear-gradient(#2f75ff 0%,#74aaff 100%);border-radius:99px;flex-shrink:0;width:4px;height:18px;display:inline-block}.roster-group-region{background:linear-gradient(135deg,#f6f9ff 0%,#edf5ff 100%);border:1.5px solid #cfe0ff;border-radius:8px;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:8px;padding:8px 10px;display:grid}.roster-group-region span{color:#2f70ff;font-size:11px;font-weight:700}.roster-group-region strong{color:#10233f;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;overflow:hidden}.roster-group-meta{background:#f7f9fc;border:1px solid #e8edf5;border-radius:8px;grid-template-columns:1fr 1fr;gap:5px 10px;padding:8px 10px;display:grid}.roster-group-meta div{flex-direction:column;gap:2px;display:flex}.roster-group-meta span{color:#8a98a8;letter-spacing:.2px;font-size:10px;font-weight:600}.roster-group-meta strong{color:#374151;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;overflow:hidden}.roster-group-meta strong.is-on{color:#16a34a}.roster-group-meta strong.is-off{color:#94a3b8}.roster-group-tags{flex-wrap:wrap;gap:4px;display:flex}.roster-group-tags .ant-tag{margin-inline-end:0}.roster-group-actions{border-top:1px solid #edf2f9;margin-top:auto;padding-top:8px}.roster-group-actions .ant-btn{border-radius:6px}.roster-month-cell,body .roster-month-cell{text-align:left;cursor:pointer;border-radius:10px;width:100%;transition:all .16s;overflow:hidden;flex-direction:column!important;gap:8px!important;height:260px!important;min-height:260px!important;padding:12px!important;display:flex!important}.roster-month-cell.is-past{opacity:.72;box-shadow:none!important;cursor:default!important;background:#f4f5f7!important;border:1px solid #e2e6ed!important}.roster-month-cell.is-past:hover{box-shadow:none!important;border-color:#e2e6ed!important;transform:none!important}.roster-month-cell.is-past .roster-month-status{color:#9ca3af;background:#e5e7eb}.roster-month-cell.is-past .roster-month-members span{color:#9aa0ab;background:#f4f5f7;border-color:#dde1e9}.roster-month-cell.is-past .roster-month-section label{color:#9aa0ab}.roster-month-cell.is-past .roster-month-members span.is-leader{color:#9aa0ab;background:#eceef1;border-color:#dde1e9}.roster-month-cell.is-empty{background:#f9fbff;border:1.5px dashed #c4d8f0}.roster-month-cell.is-empty:hover{background:#f0f7ff;border-color:#4080ff;box-shadow:0 4px 14px #2f75ff1a}.roster-month-cell.is-configured{background:linear-gradient(160deg,#f0f7ff 0%,#e8f1ff 100%);border:1.5px solid #93c5fd;box-shadow:0 2px 6px #2f75ff0f}.roster-month-cell.is-configured:hover{border-color:#2f75ff;transform:translateY(-1px);box-shadow:0 6px 20px #2f75ff24}body .roster-month-cell.is-current{border:2px solid #2f75ff!important;box-shadow:0 0 0 3px #2f75ff1f,0 4px 14px #2f75ff1f!important}.roster-month-top{justify-content:space-between;align-items:center;gap:6px;display:flex}.roster-month-top strong{color:#1d4ed8;font-size:12px;font-weight:700}.roster-month-status{color:#52627a;background:#e8eef6;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;line-height:18px}.roster-month-cell.is-configured .roster-month-status{color:#15803d;background:#d8f4e6}.roster-month-section{gap:5px;display:grid}.roster-month-section label{color:#6b7a8d;letter-spacing:.3px;font-size:11px;font-weight:700;line-height:1}.roster-month-cell b{color:#1e3a5f;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;line-height:1.35;overflow:hidden}.roster-month-cell.is-empty b{color:#4a6080}.roster-month-cell em{color:#8a9ab0;font-size:11px;font-style:normal}.roster-month-members,body .roster-month-members{flex-wrap:wrap;align-content:flex-start;gap:4px;display:flex;overflow:hidden;max-height:160px!important}.roster-month-members span,body .roster-month-members span{color:#1e4db7;text-overflow:ellipsis;white-space:nowrap;background:#fff;border:1.5px solid #cce0ff;border-radius:999px;font-weight:500;overflow:hidden;max-width:132px!important;padding:2px 8px!important;font-size:11px!important;line-height:20px!important}.roster-month-members span.is-leader{color:#1a3bbf;background:linear-gradient(135deg,#e6eeff 0%,#d8e6ff 100%);border-color:#6da4ff;font-weight:700}.roster-month-members .is-more{color:#4e6070;background:#f0f4f9;border-color:#d4dce8;font-weight:700}.roster-config-drawer .drawer-hero{background:linear-gradient(135deg,#f0f6ff 0%,#e8f0ff 100%);border:1px solid #c8deff;border-radius:10px;margin-bottom:20px;padding:16px 20px}.roster-config-drawer .config-section{margin-bottom:20px}.roster-month-title{align-items:center;gap:5px;display:inline-flex}.roster-month-title em{color:#2868d8;background:#e8f1ff;border-radius:999px;padding:1px 6px;font-size:11px;font-style:normal}.oncall-calendar-card .ant-card-body{padding:16px}.oncall-week-header{grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin-bottom:10px;display:grid}.oncall-week-header span{color:#52627a;text-align:center;background:#f3f6fb;border-radius:8px;padding:8px 10px;font-size:12px;font-weight:800}.oncall-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;display:grid}.oncall-day-card{text-align:left;cursor:pointer;background:#fff;border:1.5px solid #e2e8f4;border-radius:12px;flex-direction:column;gap:6px;min-height:162px;padding:12px 14px;transition:all .18s;display:flex;position:relative;box-shadow:0 1px 4px #0f1f3d0a}.oncall-day-card:hover{border-color:#4080ff;transform:translateY(-2px);box-shadow:0 6px 20px #2f70ff24}.oncall-day-card.is-today{background:linear-gradient(145deg,#eef4ff 0%,#f7f9ff 100%);border:2px solid #2f75ff;box-shadow:0 0 0 3px #2f75ff24,0 4px 16px #2f75ff29}.oncall-day-card.is-today:hover{transform:translateY(-2px);box-shadow:0 0 0 4px #2f75ff38,0 8px 24px #2f75ff33}.oncall-day-card.is-today:before{content:"今天";color:#fff;letter-spacing:1px;background:#2f75ff;border-radius:0 11px 0 9px;padding:3px 9px;font-size:10px;font-weight:700;position:absolute;top:-1px;right:-1px}.oncall-day-card.is-today .oncall-day-top b{color:#2f75ff;font-size:22px}.oncall-day-card.is-past{cursor:not-allowed;box-shadow:none;background:#f3f4f6;border-color:#dde1e8}.oncall-day-card.is-past:hover{box-shadow:none;border-color:#dde1e8;transform:none}.oncall-day-card.is-past .oncall-day-top b{color:#b0b6c1}.oncall-day-card.is-past .oncall-day-top span{color:#9fa6b1;background:#e8eaed}.oncall-day-card.is-past .oncall-day-line{color:#b8bec9}.oncall-day-card.is-past .oncall-day-line label{color:#c2c8d4}.oncall-day-card.is-past .oncall-day-line strong{color:#b8bec9}.oncall-day-card.is-past .oncall-day-tags .ant-tag{opacity:.5;filter:grayscale(60%)}.oncall-day-card.is-past.is-restday{background:#f3f4f6;border-color:#dde1e8}.oncall-day-card.is-outside{opacity:.38;background:#f9fafb}.oncall-day-card.is-workday{background:#fff;border-color:#dce8f8}.oncall-day-card.is-restday{background:#fff8f2;border-color:#fcdcba}.oncall-day-card.is-restday .oncall-day-top span{color:#b85a00;background:#ffe8cc}.oncall-day-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.oncall-day-top b{color:#0f1f3d;font-size:20px;font-weight:800;line-height:1}.oncall-day-top span{color:#3f6db5;text-overflow:ellipsis;white-space:nowrap;background:#eef5ff;border-radius:999px;max-width:86px;padding:2px 8px;font-size:11px;font-weight:500;overflow:hidden}.oncall-day-line{color:#65758c;grid-template-columns:22px minmax(0,1fr);align-items:start;gap:6px;font-size:12px;display:grid}.oncall-day-line label{color:#2f70ff;font-size:13px;font-weight:800}.oncall-day-line strong{color:#22324d;text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.45;overflow:hidden}.oncall-day-tags{flex-wrap:wrap;gap:4px;margin-top:auto;display:flex}
