:root{--ml-brand: #0e8a67;--ml-brand-deep: #0a6a4f;--ml-brand-mid: #17a078;--ml-brand-soft: #e3f5ed;--ml-ink: #12261e;--ml-muted: #5a7167;--ml-line: #e1eae5;--ml-panel: #ffffff;--ml-warm: #c2410c;--ml-warm-soft: #fff4ea;--ml-sidebar: #0b1c16;--ml-radius: 14px;--ml-shadow: 0 1px 2px rgba(16, 36, 28, .04), 0 8px 24px rgba(16, 36, 28, .05);--ml-ease: cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{color:var(--ml-ink);background:#f6f9f7;-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 1}.w-full{width:100%}.mt-16{margin-top:16px}.section-gap{margin-bottom:16px}.cell-sub{font-size:12px}.page-loading,.boot-screen{min-height:60vh;display:grid;place-items:center}.boot-screen{min-height:100vh;background:linear-gradient(180deg,#eef5f1,#f6f9f7)}.boot-screen__pad{width:240px;height:120px}.panel{background:var(--ml-panel);border:1px solid var(--ml-line);border-radius:var(--ml-radius);padding:20px 22px;box-shadow:var(--ml-shadow);height:100%}.panel h5.ant-typography{margin-top:0;margin-bottom:14px}.panel__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.panel__head h5.ant-typography{margin:0}.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-bottom:16px}.toolbar__search{max-width:340px}.toolbar__filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.kpi{position:relative;background:var(--ml-panel);border:1px solid var(--ml-line);border-radius:var(--ml-radius);padding:18px 20px 16px;box-shadow:var(--ml-shadow);height:100%;overflow:hidden;transition:transform .35s var(--ml-ease),box-shadow .35s var(--ml-ease)}.kpi:hover{transform:translateY(-2px);box-shadow:0 14px 30px #10241c14}.kpi:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--ml-line)}.kpi--brand:before{background:var(--ml-brand)}.kpi--warm:before{background:var(--ml-warm)}.kpi--sky:before{background:#1d4ed8}.kpi__icon{position:absolute;top:16px;right:18px;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--ml-brand-deep);background:var(--ml-brand-soft);font-size:16px}.kpi--warm .kpi__icon{color:var(--ml-warm);background:var(--ml-warm-soft)}.kpi .ant-statistic-title{color:var(--ml-muted);font-size:13px;margin-bottom:6px}.kpi .ant-statistic-content{font-weight:700;letter-spacing:-.01em}.kpi__hint{margin-top:6px;color:var(--ml-muted);font-size:12.5px}a.kpi{display:block;color:inherit}.amount{font-weight:600;color:var(--ml-warm);font-variant-numeric:tabular-nums}.amount--in{color:var(--ml-brand-deep)}.person{display:flex;align-items:center;gap:10px}.person__avatar{background:var(--ml-brand-soft)!important;color:var(--ml-brand-deep)!important;font-weight:600}.msg-body{white-space:pre-wrap;color:var(--ml-ink)}.msg-reply{margin-top:8px;padding:8px 12px;border-radius:8px;background:var(--ml-brand-soft);color:var(--ml-brand-deep)}.msg-head{display:inline-flex;gap:8px;align-items:center}.route-fade{animation:ml-fade-up .42s var(--ml-ease) both}@keyframes ml-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.route-fade,.kpi{animation:none!important;transition:none!important}}@media(max-width:640px){.panel{padding:16px}.toolbar__search{max-width:none;width:100%}}.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr);background:#fff}.login-stage{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:56px 64px 36px;color:#eaf6f0;background:radial-gradient(120% 90% at 0% 100%,rgba(23,160,120,.35) 0%,transparent 55%),linear-gradient(155deg,#134034,#0b1c16 55%,#06110d)}.login-stage__glow{position:absolute;width:720px;height:720px;right:-220px;top:-260px;border-radius:50%;background:radial-gradient(circle,#5ed6aa47,#5ed6aa00 65%);animation:stage-drift 16s ease-in-out infinite alternate;pointer-events:none}.login-stage__grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(ellipse at 30% 60%,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse at 30% 60%,#000 20%,transparent 75%);pointer-events:none}.login-stage__inner{position:relative;margin:auto 0;max-width:620px}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:28px;animation:stage-in .8s var(--ml-ease) both}.login-brand__mark{border-radius:16px;box-shadow:0 10px 30px #00000059}.login-brand__tag{font-size:13px;letter-spacing:.24em;color:#9fd8c1;border-left:1px solid rgba(255,255,255,.2);padding-left:14px}.login-stage__title{margin:0;font-size:clamp(56px,7.2vw,104px);line-height:1;font-weight:900;letter-spacing:.02em;color:#fff;animation:stage-in .9s .08s var(--ml-ease) both}.login-stage__headline{margin:26px 0 10px;font-size:clamp(20px,2vw,26px);font-weight:500;color:#d8efe5;animation:stage-in .9s .18s var(--ml-ease) both}.login-stage__sub{margin:0;font-size:15px;color:#93b8a8;animation:stage-in .9s .26s var(--ml-ease) both}.login-stage__foot{position:relative;display:flex;gap:10px;font-size:13px;color:#7fa595}.login-stage__foot a{color:#bfe3d3;text-decoration:none}.login-stage__foot a:hover{color:#fff}@keyframes stage-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes stage-drift{0%{transform:translate(0) scale(1)}to{transform:translate(-80px,60px) scale(1.12)}}.login-panel{display:flex;align-items:center;justify-content:center;padding:48px 32px;background:linear-gradient(180deg,#fff,#f5faf7)}.login-panel__box{width:100%;max-width:380px;animation:stage-in .7s .15s var(--ml-ease) both}.login-panel__title.ant-typography{margin-bottom:4px}.login-panel__desc.ant-typography,.login-panel__switch{margin-bottom:22px}.login-panel__links{display:flex;justify-content:space-between;margin-top:10px}.login-panel__links .ant-btn-link{padding-inline:0}.login-panel__error{margin-top:16px}.sms-btn{min-width:112px}.qr-login{display:flex;flex-direction:column;align-items:center;gap:10px;padding:6px 0 4px}.qr-login__code{padding:14px;border-radius:18px;background:#fff;border:1px solid var(--ml-line);box-shadow:0 16px 40px #0b1c1614;animation:qr-pop .5s var(--ml-ease) both}.qr-login__hint{margin-top:8px}.qr-login__sub{font-size:12.5px;text-align:center;max-width:300px}.qr-login__scanned{color:var(--ml-brand-deep);font-weight:600}.wx-login__frame{position:relative;width:186px;height:186px;border-radius:18px;background:#fff;border:1px solid var(--ml-line);box-shadow:0 16px 40px #0b1c1614;overflow:hidden;animation:qr-pop .5s var(--ml-ease) both}.wx-login__box{width:300px;height:400px;margin-left:-56px;margin-top:12px}.wx-login__box iframe{display:block;width:300px!important;height:400px;max-width:none;border:0}.wx-login__spin{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}@keyframes qr-pop{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}.portal-layout .ant-pro-sider-logo img{border-radius:8px}.portal-layout .ant-pro-sider-logo h1{font-weight:700;letter-spacing:.04em}.portal-layout .ant-pro-layout-header,.portal-layout .ant-layout-header{-webkit-backdrop-filter:saturate(160%) blur(10px);backdrop-filter:saturate(160%) blur(10px);border-bottom:1px solid var(--ml-line)}.menu-footer{display:flex;align-items:center;gap:10px;margin:8px 12px 12px;padding:10px 12px;border-radius:12px;background:#ffffff0f;color:#e7f4ee}.menu-footer__meta{display:flex;flex-direction:column;min-width:0;line-height:1.3}.menu-footer__meta strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-footer__meta span{font-size:12px;color:#9fbcae}.menu-link{display:flex;align-items:center;justify-content:space-between;gap:8px}.menu-badge .ant-badge-count{box-shadow:none}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;height:60px;padding:0 28px;background:#f6faf8d1;-webkit-backdrop-filter:saturate(160%) blur(12px);backdrop-filter:saturate(160%) blur(12px);border-bottom:1px solid var(--ml-line)}.topbar__brand{font-size:13px;letter-spacing:.18em;color:var(--ml-muted)}.topbar__right{display:flex;align-items:center;gap:14px}.topbar__icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;color:var(--ml-ink);font-size:17px;transition:background .2s}.topbar__icon:hover{background:#0e8a6714;color:var(--ml-brand-deep)}.topbar__user{display:inline-flex;align-items:center;gap:8px;padding:3px 10px 3px 3px;border:1px solid var(--ml-line);border-radius:999px;background:#fff;cursor:pointer;font:inherit;color:var(--ml-ink)}.topbar__name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.sync-actions{margin-right:4px}.sync-state{font-size:13px;color:var(--ml-muted);display:inline-flex;gap:6px;align-items:center}.sync-state .anticon{color:var(--ml-brand)}.sync-tag{margin-inline-end:0}.sync-tag--off{color:var(--ml-muted)}.pulse-once{animation:pulse-ring 1.6s var(--ml-ease) 2}@keyframes pulse-ring{0%{box-shadow:0 0 #0e8a6773}to{box-shadow:0 0 0 12px #0e8a6700}}.kind-chip{padding:4px 14px;border-radius:8px;border:1px solid var(--ml-line);font-size:13.5px}.kind-chip.ant-tag-checkable-checked{border-color:var(--ml-brand)}.editor-note{display:block;font-size:12.5px}.tier{--tier: var(--ml-brand);--tier-bg: var(--ml-brand-soft);display:flex;flex-direction:column;gap:10px;height:100%;padding:22px;border-radius:16px;background:#fff;border:1px solid var(--ml-line);box-shadow:var(--ml-shadow);transition:transform .35s var(--ml-ease),box-shadow .35s var(--ml-ease),border-color .35s}.tier:hover{transform:translateY(-3px);box-shadow:0 18px 36px #10241c1a;border-color:var(--tier)}.tier--current{border:2px solid var(--tier)}.tier__head{display:flex;align-items:center;justify-content:space-between;gap:8px}.tier__badge{display:inline-flex;gap:6px;align-items:center;padding:4px 10px;border-radius:8px;font-weight:600;color:var(--tier);background:var(--tier-bg)}.tier__title{min-height:22px}.tier__price{font-size:36px;font-weight:800;letter-spacing:-.02em;color:var(--ml-ink)}.tier__currency{font-size:18px;margin-right:2px}.tier__list{font-size:14px;font-weight:400;color:var(--ml-muted);margin-left:8px}.tier__unit{font-size:14px;font-weight:500;color:var(--ml-muted);margin-left:2px}.tier__note{display:block;margin-top:8px;font-size:12px;text-align:center}.pay-qr{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 0 4px;text-align:center}.pay-qr__title{display:inline-flex;align-items:center;gap:6px;font-size:16px;font-weight:600}.pay-qr__title .anticon{color:#07c160;font-size:20px}.pay-qr__title .anticon-alipay-circle{color:#1677ff}.pay-qr__amount{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ml-ink);line-height:1.2}.pay-qr__amount span{font-size:16px;margin-right:2px}.pay-qr__code{margin:6px 0;padding:8px;border:1px solid var(--ml-line);border-radius:12px}.pay-qr__hint{font-size:13px}.pay-qr__order{font-size:12px}.ledger-tags{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.ledger-tags__label{margin-right:4px;font-weight:600}.ledger-tags .ant-tag{margin:0}.ledger-tags__add{border-style:dashed;cursor:pointer;background:#fff}.ledger-tags__input{width:120px}.ledger-tags+.cell-sub{display:block;margin-top:8px}.plans-years{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.plans-years__opt{display:inline-flex;align-items:center;gap:6px;padding:0 4px}.plans-years__opt .ant-tag{margin:0}.pay-channel{display:inline-flex;gap:8px;margin-left:auto}.pay-channel__opt{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--ml-line);border-radius:8px;background:#fff;cursor:pointer}.pay-channel__opt.is-active{border-color:#1677ff;box-shadow:0 0 0 1px #1677ff inset}.pay-channel__alipay{color:#1677ff;font-size:22px}.pay-channel__wechat{color:#07c160;font-size:22px}.tier__per-year{min-height:18px;margin:-4px 0 8px;font-size:13px;font-weight:600;color:#059669}.tier__perks{list-style:none;margin:0 0 8px;padding:0;flex:1;color:var(--ml-muted);font-size:13.5px}.tier__perks li{padding:4px 0}.tier__perks .anticon{color:var(--ml-brand);margin-right:6px}.notice-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:var(--ml-brand-deep);background:var(--ml-brand-soft)}.cal-toolbar{align-items:center}.cal-nav{display:inline-flex;align-items:center}.cal-nav__title{padding-right:4px}.cal-nav__title input{font-size:16px;font-weight:600;color:var(--ml-ink);cursor:pointer}.cal-stats{margin-left:auto;font-size:13px}.cal-ev{display:flex;align-items:center;gap:4px;min-width:0;padding:1px 6px;border-radius:5px;font-size:12px;line-height:18px;color:var(--ml-brand-deep);background:var(--ml-brand-soft);border-left:3px solid var(--ml-brand);cursor:pointer;transition:filter .15s}.cal-ev:hover{filter:brightness(.96)}.cal-ev--money{color:#9a4b00;background:#fff4e5;border-left-color:#f59e0b}.cal-ev--done{color:var(--ml-muted);background:#f2f4f3;border-left-color:#c5ccc9;text-decoration:line-through}.cal-ev__time{flex:none;font-variant-numeric:tabular-nums;opacity:.8}.cal-ev__title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-ev__amount{flex:none;font-variant-numeric:tabular-nums}.cal-month{border:1px solid var(--ml-line);border-radius:12px;overflow:hidden}.cal-month__head,.cal-month__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-month__head span{padding:8px 10px;font-size:12.5px;color:var(--ml-muted);background:#f7faf8;border-bottom:1px solid var(--ml-line)}.cal-slot{position:relative;display:flex;min-width:0;border-right:1px solid var(--ml-line);border-bottom:1px solid var(--ml-line)}.cal-month__grid>.cal-slot:nth-child(7n){border-right:0}.cal-month__grid>.cal-slot:nth-last-child(-n+7){border-bottom:0}.cal-slot--over .cal-cell,.cal-cell--over,.cal-cell--over:hover{background:var(--ml-brand-soft);outline:2px dashed var(--ml-brand);outline-offset:-2px}.cal-cell{position:relative;flex:1;width:100%;min-height:112px;margin:0;padding:6px 6px 8px;border:0;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:background .15s}.cal-cell:hover{background:#fafcfb}.cal-cell--weekend{background:#fcfdfc}.cal-cell--rest{background:snow}.cal-cell--muted .cal-cell__num{color:#b8c1bd}.cal-cell--muted .cal-ev{opacity:.55}.cal-cell__top{display:flex;align-items:center;gap:4px;margin-bottom:4px;padding-right:22px}.cal-cell__num{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 4px;border-radius:12px;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ml-ink)}.cal-cell__num--rest{color:#dc2626}.cal-cell--today .cal-cell__num{color:#fff;background:var(--ml-brand)}.cal-cell--today .cal-cell__num--rest{color:#fff}.cal-day-badges{display:inline-flex;align-items:center;gap:2px;margin-right:auto;min-width:0}.cal-day-badges__icon{font-size:12px;line-height:1}.cal-day-badges__rest{display:inline-grid;place-items:center;min-width:16px;height:16px;padding:0 3px;border-radius:4px;background:#fee2e2;color:#dc2626;font-size:10px;font-weight:700;line-height:1}.cal-cell__add{display:grid;place-items:center;position:absolute;top:6px;right:4px;width:22px;height:22px;padding:0;border:0;border-radius:6px;color:var(--ml-brand-deep);background:transparent;cursor:pointer;opacity:0;transition:opacity .15s,background .15s}.cal-slot:hover .cal-cell__add,.cal-cell__add:focus-visible{opacity:1}.cal-cell__add:hover{background:var(--ml-brand-soft)}.cal-cell__events{display:flex;flex-direction:column;gap:3px}.cal-more{font-size:12px;color:var(--ml-muted);padding-left:4px}.cal-cell__compact{display:none}.cal-week{display:flex;flex-direction:column;border:1px solid var(--ml-line);border-radius:12px;overflow:hidden;background:#fff}.cal-week__row{display:grid;grid-template-columns:108px minmax(0,1fr);min-height:64px;border-bottom:1px solid var(--ml-line);transition:background .15s}.cal-week__row:last-child{border-bottom:0}.cal-week__row--today{background:#f7fcfa}.cal-week__row--rest{background:snow}.cal-week__row--today.cal-week__row--rest{background:#f7fcfa}.cal-week__row.cal-cell--over{background:var(--ml-brand-soft);outline:2px dashed var(--ml-brand);outline-offset:-2px}.cal-week__label{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;padding:12px 10px 12px 14px;border:0;border-right:1px solid var(--ml-line);background:transparent;text-align:left;cursor:pointer}.cal-week__row--today .cal-week__label{box-shadow:inset 3px 0 0 var(--ml-brand)}.cal-week__wd{width:100%;font-size:12px;color:var(--ml-muted);line-height:1.2}.cal-week__num{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ml-ink);line-height:1}.cal-week__num--rest{color:#dc2626}.cal-week__row--today .cal-week__num{color:var(--ml-brand)}.cal-week__count{margin-left:auto;font-style:normal;font-size:11px;color:var(--ml-muted)}.cal-week__events{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 12px;min-width:0}.cal-week__events .cal-ev{max-width:220px}.cal-week__add{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px dashed var(--ml-line);border-radius:8px;background:transparent;color:var(--ml-muted);font-size:12.5px;cursor:pointer;opacity:0;transition:opacity .15s,color .15s,border-color .15s}.cal-week__row:hover .cal-week__add,.cal-week__add:focus-visible{opacity:1}.cal-week__add:hover{color:var(--ml-brand-deep);border-color:var(--ml-brand)}.cal-year{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.cal-mini{padding:12px;border:1px solid var(--ml-line);border-radius:12px}.cal-mini--current{border-color:var(--ml-brand);box-shadow:0 0 0 1px var(--ml-brand) inset}.cal-mini__title{display:flex;align-items:baseline;justify-content:space-between;width:100%;margin-bottom:8px;padding:0;border:0;background:transparent;color:var(--ml-ink);cursor:pointer}.cal-mini__title strong{font-size:15px}.cal-mini__title:hover strong{color:var(--ml-brand-deep)}.cal-mini__title span{font-size:12px;color:var(--ml-muted)}.cal-mini__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;text-align:center}.cal-mini__wd{font-size:11px;color:var(--ml-muted);padding-bottom:2px}.cal-mini__day{height:26px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--ml-ink);font-size:12px;font-variant-numeric:tabular-nums;cursor:pointer}.cal-mini__day:hover{background:#eef3f1}.cal-mini__day--l1{background:#d9f2e8}.cal-mini__day--l2{background:#9ddcc2}.cal-mini__day--l3{background:var(--ml-brand);color:#fff}.cal-mini__day--today{box-shadow:0 0 0 2px var(--ml-brand-deep) inset;font-weight:700}.cal-mini__day--rest{color:#dc2626}.cal-legend{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:12px;font-size:12.5px;color:var(--ml-muted)}.cal-legend span{display:inline-flex;align-items:center;gap:6px}.cal-legend .ant-typography{margin-left:auto;font-size:12.5px}.cal-dot{width:10px;height:10px;border-radius:3px;background:var(--ml-brand-soft);border-left:3px solid var(--ml-brand)}.cal-dot--money{background:#fff4e5;border-left-color:#f59e0b}.cal-dot--done{background:#f2f4f3;border-left-color:#c5ccc9}.day-list{display:flex;flex-direction:column;gap:10px}.day-item{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--ml-line);border-radius:10px}.day-item--done{background:#fafbfa}.day-item__main{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.cal-ev--p1{box-shadow:inset -3px 0 #f59e0b}.cal-ev--p2{box-shadow:inset -3px 0 #ef4444;font-weight:600}.quick-add{margin-bottom:14px}.quick-add__icon{color:var(--ml-brand)}.quick-add__preview{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:13px}.quick-add__preview .ant-tag{margin:0}.quick-add__tip{margin-left:auto;font-size:12px}.smart-hint{display:flex;align-items:center;gap:8px;margin:-12px 0 14px;padding:6px 10px;font-size:13px;color:var(--ml-brand-deep);background:var(--ml-brand-soft);border-radius:8px}.smart-hint>span{flex:1;min-width:0}.row-clickable{cursor:pointer}.person__text{display:flex;flex-direction:column;min-width:0;line-height:1.35}.person__text strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person__tags{display:flex;flex-wrap:wrap;gap:2px;margin-top:2px}.person__tags .ant-tag{margin:0;font-size:11px;line-height:16px;padding:0 5px}.btn-badge{margin-left:6px}.batch-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;background:var(--ml-brand-soft);border-radius:8px;font-size:13px}.link-btn{padding:0;border:0;background:none;color:var(--ml-brand-deep);font:inherit;cursor:pointer}.link-btn:hover{text-decoration:underline}.pre-wrap{white-space:pre-wrap;word-break:break-word}.contact-tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.contact-tags .ant-tag{margin:0}.contact-desc .ant-descriptions-item-label{width:56px;color:var(--ml-muted)}.contact-ledger{margin-top:12px;font-size:12.5px}.rel-list{display:flex;flex-direction:column;gap:6px;margin-top:12px}.rel-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--ml-line);border-radius:8px}.rel-item__type{margin:0;flex:none}.rel-item__sub{flex:1;min-width:0;font-size:12px}.rel-opt{display:inline-flex;align-items:center;gap:6px}.rel-opt i{width:10px;height:10px;border-radius:50%}.rel-fixed{font-size:14px;padding:4px 10px}.rel-ai__bar{margin:10px 0}.rel-ai__rows{display:flex;flex-direction:column;gap:8px}.rel-ai__row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.rel-ai__person{width:150px}.rel-ai__person .ant-select{width:100%}.rel-ai__person--missing .ant-select-selector{border-color:#ff7875!important}.rel-ai__note{font-size:12px;flex-basis:100%;padding-left:24px}.it-form{display:flex;flex-direction:column;gap:8px;padding:10px;margin-bottom:14px;background:#f7faf8;border-radius:10px}.it-timeline{margin-top:6px}.it-item__head{display:flex;align-items:center;gap:6px}.it-item__head .ant-btn{margin-left:auto}.import-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin:10px 0}.import-cards{display:flex;flex-direction:column;gap:12px;max-height:62vh;overflow:auto;padding-right:4px}.import-card{padding:12px;border:1px solid var(--ml-line);border-radius:10px;transition:opacity .15s}.import-card--off{opacity:.55}.import-card__head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.import-card__head .ant-checkbox-wrapper{flex:1}.import-card__rels{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:8px}.import-card__dup{margin-top:8px}.dup-groups{display:flex;flex-direction:column;gap:12px;max-height:60vh;overflow:auto}.dup-group{padding:10px 12px;border:1px solid var(--ml-line);border-radius:10px}.dup-group__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.graph-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px}.graph-legend__item{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;font-size:12.5px;border:1px solid var(--ml-line);border-radius:999px;background:#fff;cursor:pointer}.graph-legend__item i{width:10px;height:10px;border-radius:50%}.graph-legend__item.is-off{opacity:.4;text-decoration:line-through}.graph-stage{position:relative}.graph-wrap{position:relative;height:min(68vh,720px);min-height:420px;border:1px solid var(--ml-line);border-radius:12px;overflow:hidden;background:radial-gradient(circle at 1px 1px,#e3ebe7 1px,transparent 0) 0 0 / 22px 22px,#fbfdfc}.graph-svg{width:100%;height:100%;display:block;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}.graph-svg:active{cursor:grabbing}.graph-edge line{stroke-opacity:.55}.graph-edge.is-dim{opacity:.08}.graph-edge__label{font-size:10px;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:3px}.graph-node{cursor:pointer}.graph-node circle{fill:var(--ml-brand);stroke:#fff;stroke-width:2px;transition:fill .15s}.graph-node:hover circle{fill:var(--ml-brand-deep)}.graph-node.is-active circle{fill:#f59e0b;stroke:#fff;stroke-width:3px}.graph-node.is-dim{opacity:.15}.graph-node__label{font-size:11px;text-anchor:middle;fill:var(--ml-ink);paint-order:stroke;stroke:#fff;stroke-width:3px;pointer-events:none}.graph-tools{position:absolute;right:10px;top:10px}.graph-card{position:absolute;left:12px;top:12px;width:260px;max-width:calc(100% - 70px);padding:12px;background:#fffffff5;border:1px solid var(--ml-line);border-radius:12px;box-shadow:0 10px 30px #10241c1a}.graph-card__rels{display:flex;flex-direction:column;gap:4px;margin:10px 0;max-height:220px;overflow:auto}.graph-card__rel{display:flex;align-items:center;gap:6px;font-size:13px}.graph-card__rel .ant-tag{margin:0}.graph-hint{position:absolute;left:12px;bottom:10px;padding:4px 10px;font-size:12px;color:var(--ml-muted);background:#ffffffe6;border-radius:6px;pointer-events:none}.graph-empty{padding:60px 0}.net-search__input{flex:1;min-width:240px}@media(max-width:1200px){.cal-year{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:900px){.cal-year{grid-template-columns:repeat(2,minmax(0,1fr))}.cal-week__row{grid-template-columns:88px minmax(0,1fr)}.cal-week__add{opacity:1}.cal-stats{margin-left:0}}@media(max-width:640px){.cal-cell{min-height:58px;padding:4px}.cal-cell__events,.cal-cell__add{display:none}.cal-cell__compact{display:block;margin-top:2px;overflow:hidden;font-size:10px;line-height:1.3;color:var(--ml-ink);text-overflow:ellipsis;white-space:nowrap}.cal-month__head span{padding:6px 4px;text-align:center}.cal-cell__top{justify-content:center;padding-right:0}.cal-year{grid-template-columns:1fr}.cal-legend .ant-typography{margin-left:0}}@media(max-width:960px){.login-page{grid-template-columns:1fr}.login-stage{padding:36px 24px 28px;min-height:300px}.login-stage__inner{margin:12px 0 20px}.login-stage__headline{margin-top:16px}.login-panel{padding:32px 20px 48px}}@media(max-width:640px){.sync-state,.sync-tag--dirty,.topbar__brand,.topbar__name{display:none}.topbar{padding:0 12px}.topbar__right{gap:8px}.topbar__icon,.topbar__user,.topbar .ant-btn{min-width:44px;min-height:44px}.topbar__icon{width:44px;height:44px}}@media(prefers-reduced-motion:reduce){.login-stage__glow,.login-brand,.login-stage__title,.login-stage__headline,.login-stage__sub,.login-panel__box,.qr-login__code,.pulse-once{animation:none!important}}.trash-notes{margin:8px 0 0;padding-left:18px}
