:root{--ink:#20302d;--muted:#6d7875;--paper:#f6f7f3;--card:#ffffff;--line:#e2e7e2;--accent:#52796f;--danger:#a45151}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Microsoft YaHei,PingFang SC,system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{min-height:100vh}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;justify-content:space-between;padding:16px 4vw;background:rgba(246,247,243,.94);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand,.topbar{display:flex;align-items:center}.brand{gap:12px;font-weight:800}.brand-mark{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:var(--ink);color:white}.nav{display:flex;gap:8px}.nav a{padding:9px 13px;border-radius:9px;color:var(--muted)}.nav a:hover{background:white;color:var(--ink)}.main{width:min(1500px,94vw);margin:0 auto;padding:38px 0 70px}.eyebrow{color:var(--accent);font-size:13px;font-weight:800;letter-spacing:.12em}h1{margin:8px 0;font-size:clamp(28px,4vw,46px);line-height:1.15}h2{margin:0 0 16px}.subtitle{margin:0;color:var(--muted);line-height:1.7}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:28px}.danger,.primary,.secondary{border:0;border-radius:10px;padding:11px 16px;font-weight:700}.primary{background:var(--ink);color:white}.secondary{background:white;color:var(--ink);border:1px solid var(--line)}.danger{background:#fff1f1;color:var(--danger)}.demo-banner{margin-bottom:22px;padding:14px 16px;display:flex;justify-content:space-between;gap:16px;align-items:center;background:#edf4ef;border:1px solid #d5e5da;border-radius:12px;color:#40584f}.board{display:grid;grid-template-columns:repeat(5,minmax(220px,1fr));grid-gap:14px;gap:14px;overflow-x:auto;padding-bottom:12px}.column{min-height:430px;padding:14px;background:#edf0eb;border-radius:16px;border-top:4px solid var(--stage)}.column-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:12px}.column-title,.count{font-weight:800}.count{min-width:27px;height:27px;display:grid;place-items:center;background:white;border-radius:99px}.stage-help{margin:0 0 14px;color:var(--muted);font-size:12px;line-height:1.5}.customer-card{display:block;margin-bottom:10px;padding:14px;background:white;border:1px solid var(--line);border-radius:12px;box-shadow:0 3px 12px rgba(32,48,45,.04)}.customer-card[draggable=true]{cursor:-webkit-grab;cursor:grab}.customer-name{display:flex;justify-content:space-between;gap:8px;font-weight:800}.tag{padding:3px 7px;background:#eff1ee;border-radius:99px;font-size:11px}.card-meta,.tag{color:var(--muted)}.card-meta{margin-top:9px;font-size:12px;line-height:1.6}.stalled{color:var(--danger);font-weight:700}.filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}.field{display:flex;flex-direction:column;gap:7px}.field label{font-size:13px;font-weight:700}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #ced6d0;border-radius:9px;background:white;color:var(--ink)}textarea{min-height:88px;resize:vertical}.list{display:grid;grid-gap:10px;gap:10px}.list-row{display:grid;grid-template-columns:1.2fr 1.1fr .7fr 1.7fr auto;grid-gap:16px;gap:16px;align-items:center;padding:16px 18px;background:white;border:1px solid var(--line);border-radius:12px}.muted{color:var(--muted)}.panel{background:white;border:1px solid var(--line);border-radius:15px;padding:22px}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px}.detail-layout{display:grid;grid-template-columns:1.2fr .8fr;grid-gap:18px;gap:18px}.facts{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:16px;gap:16px}.fact span{display:block;margin-bottom:5px;color:var(--muted);font-size:12px}.timeline{list-style:none;margin:0;padding:0}.timeline li{position:relative;padding:0 0 20px 22px;border-left:2px solid var(--line)}.timeline li:before{content:"";position:absolute;left:-6px;top:2px;width:10px;height:10px;border-radius:50%;background:var(--accent)}.task-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px}.task-section h2{font-size:18px}.empty{padding:28px 10px;text-align:center;color:var(--muted)}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;margin-bottom:18px}.metric strong{display:block;margin-top:7px;font-size:34px}.bars{display:grid;grid-gap:14px;gap:14px}.bar-row{display:grid;grid-template-columns:160px 1fr 32px;align-items:center;grid-gap:12px;gap:12px}.bar-track{height:12px;overflow:hidden;background:#edf0eb;border-radius:99px}.bar-fill{height:100%;border-radius:99px}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:rgba(24,35,32,.45)}.modal{width:min(560px,100%);max-height:90vh;overflow:auto;background:var(--card);border-radius:18px;padding:24px;box-shadow:0 25px 70px rgba(0,0,0,.25)}.form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.full{grid-column:1/-1}.actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:9px;margin-top:20px}.toast{position:fixed;left:50%;bottom:24px;z-index:60;transform:translateX(-50%);padding:12px 18px;border-radius:10px;background:var(--ink);color:white;box-shadow:0 8px 30px rgba(0,0,0,.2)}.swipe-hint{margin:-12px 0 16px;color:var(--muted);font-size:13px}.family-column{background:#f3ecee}.family-metrics{display:grid;grid-gap:8px;gap:8px}.family-metric{display:grid;grid-template-columns:22px 1fr auto;align-items:center;grid-gap:7px;gap:7px;padding:10px 11px;background:white;border:1px solid #eadde0;border-radius:10px;font-size:13px}.family-metric strong{font-size:18px}.demo-note{margin:12px 0 0;color:var(--muted);font-size:12px}.drop-family{margin-top:14px;padding:14px 8px;border:1px dashed #cdaeb5;border-radius:10px;color:#815661;text-align:center;font-size:12px;line-height:1.6}.section-tabs,.segmented{display:inline-flex;padding:4px;gap:4px;background:#e9ede9;border-radius:11px}.section-tabs a,.segmented button{border:0;padding:9px 14px;background:transparent;border-radius:8px;color:var(--muted)}.section-tabs a.active,.segmented button.active{background:white;color:var(--ink);font-weight:800;box-shadow:0 1px 5px rgba(32,48,45,.08)}.section-tabs{margin-bottom:26px}.form-error{color:var(--danger);font-weight:700}.check-grid{display:flex;flex-wrap:wrap;gap:8px}.check{display:flex;align-items:center;gap:7px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-weight:500!important}.check input{width:auto}.tag-list{display:flex;flex-wrap:wrap;gap:6px}.family-row{grid-template-columns:1.2fr .8fr 1.1fr 1.2fr auto}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.family-detail-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px;margin-top:18px}.inline-count{display:inline-grid;margin-left:5px;font-size:13px;vertical-align:3px}.record-list{display:grid;grid-gap:10px;gap:10px}.record-card{padding:14px;background:#f8f9f6;border:1px solid var(--line);border-radius:11px}.record-title{display:flex;justify-content:space-between;gap:12px}.record-title span{color:var(--muted);font-size:12px}.record-meta{margin-top:8px;color:var(--muted);font-size:13px;line-height:1.7}.task-group{margin-top:34px}.task-group-head{margin-bottom:16px}.family-task-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px}.cycle-wrap{display:grid;grid-template-columns:minmax(760px,1.55fr) minmax(270px,.45fr);grid-gap:24px;gap:24px;align-items:center;margin-bottom:24px}.cycle-ring{position:relative;width:min(900px,100%);aspect-ratio:1.28;min-height:690px;margin:0 auto}.cycle-ring-line{position:absolute;inset:11% 18% 9%;border:3px solid #d8e2dc;border-radius:50%}.cycle-node{position:absolute;z-index:2;width:230px;height:210px;padding:14px 14px 12px;display:flex;flex-direction:column;background:white;border:1px solid var(--line);border-top:5px solid var(--stage);border-radius:16px;box-shadow:0 10px 32px rgba(32,48,45,.08);transition:transform .18s ease,box-shadow .18s ease,outline-color .18s ease}.cycle-node:hover{transform:translateY(-3px);box-shadow:0 14px 36px rgba(32,48,45,.13)}.cycle-node.drop-active{outline:3px solid var(--stage);outline-offset:4px;box-shadow:0 15px 40px rgba(32,48,45,.18)}.cycle-node-head>a{display:flex;justify-content:space-between;align-items:center;gap:8px}.cycle-node-head strong{font-size:16px}.cycle-node-head b{font-size:21px;white-space:nowrap}.cycle-node-head>small{display:block;margin-top:4px;color:var(--muted);font-size:11px}.cycle-card-list{min-height:50px;max-height:93px;margin:9px -3px 7px 0;padding-right:4px;display:grid;grid-gap:6px;gap:6px;overflow-y:auto}.cycle-mini-card{min-height:41px;display:flex;align-items:center;gap:6px;padding:7px 8px 7px 5px;border:1px solid var(--line);border-radius:9px;background:#f8faf7;cursor:-webkit-grab;cursor:grab}.cycle-mini-card:active{cursor:-webkit-grabbing;cursor:grabbing}.cycle-mini-card>svg{flex:0 0 auto;color:#94a39e}.cycle-mini-card>span{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:6px;flex:1 1}.cycle-mini-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.cycle-mini-card small{flex:0 0 auto;color:var(--muted);font-size:10px}.cycle-node-empty{padding:13px 8px;color:var(--muted);font-size:12px;text-align:center}.cycle-node-more{margin-top:auto;padding-top:6px;border-top:1px solid var(--line);color:var(--accent);font-size:11px;font-weight:800;text-align:right}.cycle-step{position:absolute;top:-12px;right:12px;width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:var(--stage);color:white;font-size:12px;font-weight:800}.cycle-node-0{left:4%;top:2%}.cycle-node-1{right:4%;top:2%}.cycle-node-2{right:0;bottom:6%}.cycle-node-3{left:50%;bottom:0;transform:translateX(-50%)}.cycle-node-3:hover{transform:translate(-50%,-3px)}.cycle-node-3.drop-active{transform:translateX(-50%)}.cycle-node-4{left:0;bottom:6%}.cycle-center{position:absolute;z-index:3;left:50%;top:49%;width:205px;height:205px;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:50%;background:var(--ink);color:white;box-shadow:0 16px 42px rgba(32,48,45,.22);text-align:center}.cycle-center strong{font-size:49px;line-height:1.05}.cycle-center small{color:#dbe6e1}.cycle-center em{margin-top:9px;padding:5px 9px;border-radius:99px;background:rgba(255,255,255,.12);font-size:11px;font-style:normal}.cycle-arrow{position:absolute;z-index:1;color:#89a49a;font-size:27px;font-weight:800}.cycle-arrow-0{left:48%;top:9%}.cycle-arrow-1{right:8%;top:43%;transform:rotate(62deg)}.cycle-arrow-2{right:30%;bottom:8%;transform:rotate(158deg)}.cycle-arrow-3{left:25%;bottom:8%;transform:rotate(202deg)}.cycle-arrow-4{left:7%;top:43%;transform:rotate(296deg)}.cycle-explain{padding:27px;background:#edf4ef;border:1px solid #d5e5da;border-radius:18px}.cycle-explain h2{margin-top:7px}.cycle-explain p{color:#4f625c;line-height:1.8}.drag-rule{margin:16px 0 8px;padding:11px 12px;display:flex;align-items:center;gap:8px;border:1px dashed #9db8ae;border-radius:10px;background:rgba(255,255,255,.55);color:#40584f;font-size:13px;font-weight:800}.inline-button{display:inline-block;margin-top:5px}.cycle-metrics{grid-template-columns:repeat(4,1fr)}.cycle-metrics .muted{display:flex;align-items:center;gap:5px}.cycle-customer-row{grid-template-columns:1.1fr .85fr .72fr 1.35fr 1.3fr}.strong-tag{font-weight:800}.tag-source{background:#eef5ff;color:#426792}.tag-family{background:#fff4e7;color:#93642f}.tag-classification{background:#edf5ef;color:#4e7258}.tag-referral{background:#f5ecf7;color:#795581}.detail-tag-groups{display:grid;grid-gap:15px;gap:15px}.tag-group-edit{margin-top:18px}.tag-group-edit>strong{display:block;margin-bottom:9px}.new-tag-box{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.accent-button{border-color:#9ab8ad;background:#edf4ef;color:#355c50}.cycle-history-group{margin-top:18px;padding:17px 18px 2px;border:1px solid var(--line);border-radius:12px}.cycle-history-group h3{margin:0 0 14px;font-size:16px}.compact-history li{padding-bottom:14px}.task-total{margin-bottom:18px;padding:15px 18px;background:#edf4ef;border:1px solid #d5e5da;border-radius:12px;color:#40584f}.task-list{display:grid;grid-gap:12px;gap:12px}.task-card-wide{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(250px,1.5fr) minmax(180px,1fr) auto;grid-gap:20px;gap:20px;align-items:center;padding:18px 20px}.task-reasons{margin:0;padding-left:20px;color:var(--danger);line-height:1.8}.task-next small,.task-next strong,.task-reasons span{display:block}.task-next{color:var(--muted);line-height:1.6}.task-go{white-space:nowrap;font-weight:800;color:var(--accent)}.user-menu{display:flex;align-items:center;gap:10px;margin-left:auto;color:var(--muted);font-size:13px;font-weight:700}.user-menu form{margin:0}.logout-button{padding:7px 10px}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#eef6f1,var(--bg) 55%)}.login-card{width:min(420px,100%);padding:34px;border:1px solid var(--line);border-radius:22px;background:var(--card);box-shadow:0 24px 70px rgba(42,62,55,.13)}.login-brand{display:flex;align-items:center;gap:11px;margin-bottom:30px}.login-brand div{display:grid;grid-gap:2px;gap:2px}.login-brand strong{font-size:17px}.login-brand small,.login-help{color:var(--muted)}.login-card h1{margin-top:5px}.login-submit{width:100%;margin-top:20px}.login-help{margin:18px 0 0;text-align:center;font-size:12px}@media (max-width:900px){.topbar{align-items:flex-start;flex-direction:column}.nav{width:100%;overflow-x:auto}.user-menu{width:100%;margin-left:0;justify-content:space-between}.main{padding-top:26px}.demo-banner,.page-head{align-items:flex-start;flex-direction:column}.detail-layout,.family-detail-grid,.family-task-grid,.grid-2,.task-grid{grid-template-columns:1fr}.list-row{grid-template-columns:1fr 1fr}.list-row>:last-child{grid-column:1/-1}.cycle-wrap{grid-template-columns:1fr}.cycle-ring{width:min(860px,100%)}.cycle-metrics{grid-template-columns:repeat(2,1fr)}.task-card-wide{grid-template-columns:1fr 1fr}.task-card-wide>:last-child{grid-column:1/-1}}@media (max-width:760px){.cycle-ring{min-height:auto;aspect-ratio:auto;padding:14px;display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;border:2px solid #d8e2dc;border-radius:34px}.cycle-arrow,.cycle-ring-line{display:none}.cycle-node,.cycle-node-0,.cycle-node-1,.cycle-node-2,.cycle-node-3,.cycle-node-4{position:static;width:auto;height:205px;transform:none}.cycle-center,.cycle-node-3.drop-active,.cycle-node-3:hover,.cycle-node:hover{transform:none}.cycle-center{position:static;grid-column:1/-1;justify-self:center;width:180px;height:180px}}@media (max-width:600px){.brand small{display:none}.nav a{white-space:nowrap;padding:8px 10px}.facts,.form-grid,.metric-grid{grid-template-columns:1fr}.full{grid-column:auto}.bar-row{grid-template-columns:110px 1fr 25px;font-size:13px}.cycle-metrics,.task-card-wide{grid-template-columns:1fr}.task-card-wide>:last-child{grid-column:auto}}.button-link{display:inline-flex;align-items:center;justify-content:center}.task-complete-check{grid-column:1/-1;background:#edf4ef;border-color:#d5e5da}.team-setup{width:min(620px,100%);display:grid;grid-gap:20px;gap:20px}.team-setup h2{margin:6px 0 7px}.team-page-head{align-items:center}.invite-box{min-width:250px;padding:15px 18px;display:grid;grid-gap:4px;gap:4px;border:1px dashed #94aea4;border-radius:13px;background:#edf4ef}.invite-box small,.invite-box span{color:#587067;font-size:12px}.invite-box strong{font-size:23px;letter-spacing:.08em}.team-switcher{margin-bottom:18px;padding:12px 16px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.team-switcher a{padding:7px 10px;border-radius:8px}.team-switcher a.active{background:var(--ink);color:white}.team-member-metrics,.team-metrics{grid-template-columns:repeat(5,1fr)}.team-overview-grid{display:grid;grid-template-columns:1.12fr .88fr;grid-gap:18px;gap:18px;margin-bottom:18px}.section-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-title-row h2{margin-top:6px}.health-count{min-width:56px;padding:8px 10px;border-radius:99px;background:#edf4ef;color:var(--accent);text-align:center;font-weight:800}.health-count.warning{background:#fff1e8;color:#9b5c31}.health-list{display:grid;grid-gap:10px;gap:10px}.health-card{display:grid;grid-template-columns:140px 1fr;grid-gap:14px;gap:14px;padding:14px;border:1px solid #ecd9cc;border-radius:11px;background:#fffaf6}.health-card:hover,.team-member-row:hover{border-color:#a9beb6;box-shadow:0 7px 20px rgba(32,48,45,.07)}.health-card>div{display:grid;align-content:start;grid-gap:3px;gap:3px}.health-card small{color:var(--muted)}.health-card ul,.member-issues{margin:0;padding-left:19px;color:#8c4f32;line-height:1.7}.healthy-empty{background:#f5f8f5;border-radius:10px}.team-bars{margin-top:22px}.team-members-panel{margin-top:18px}.team-member-list{display:grid;grid-gap:9px;gap:9px}.team-member-row{display:grid;grid-template-columns:minmax(150px,1.25fr) repeat(4,minmax(90px,.75fr)) auto;grid-gap:14px;gap:14px;align-items:center;padding:14px 15px;border:1px solid var(--line);border-radius:11px;transition:border-color .18s ease,box-shadow .18s ease}.team-member-row>div:not(.member-identity){display:grid;grid-gap:3px;gap:3px}.member-identity small,.team-member-row span{color:var(--muted);font-size:12px}.member-identity{display:grid;grid-gap:3px;gap:3px}.metric-date{font-size:19px!important}.member-issues{display:grid;grid-gap:9px;gap:9px;margin-top:20px}.privacy-note{margin-top:22px;padding:13px 14px;border-radius:10px;background:#f3f5f2;color:var(--muted);font-size:13px;line-height:1.7}@media (max-width:1100px){.team-member-metrics,.team-metrics{grid-template-columns:repeat(3,1fr)}.team-member-row{grid-template-columns:1.2fr repeat(2,.8fr) auto}.team-member-row>div:nth-of-type(4),.team-member-row>div:nth-of-type(5){display:none}}@media (max-width:800px){.team-overview-grid{grid-template-columns:1fr}.invite-box{width:100%}.health-card{grid-template-columns:1fr}}@media (max-width:600px){.team-member-metrics,.team-metrics{grid-template-columns:repeat(2,1fr)}.team-member-row{grid-template-columns:1fr 1fr auto}.team-member-row>div:nth-of-type(3){display:none}.team-member-row .task-go{font-size:0}.team-member-row .task-go:after{content:"→";font-size:16px}.team-switcher{align-items:flex-start;flex-direction:column}}