:root{--navy:#172f3d;--navy-2:#234553;--ink:#17232b;--muted:#647982;--line:#dce6e8;--bg:#f3f7f7;--card:#fff;--teal:#137f75;--teal-soft:#e2f2ef;--orange:#e95f25;--orange-soft:#fff0e9;--yellow:#b7780b;--yellow-soft:#fff4dd;--red:#b64236;--red-soft:#fcecea;--shadow:0 12px 35px rgba(23,47,61,.08);--radius:12px;--focus:0 0 0 3px rgba(19,127,117,.24)}*{box-sizing:border-box}html{min-width:320px}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 Arial,"PingFang SC","Microsoft YaHei",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:not-allowed;opacity:.55}input,select,textarea{color:var(--ink)}:focus-visible{outline:none;box-shadow:var(--focus)}[hidden]{display:none!important}.skip-link{position:fixed;left:12px;top:8px;z-index:200;background:#fff;color:var(--ink);padding:10px 14px;border-radius:7px;transform:translateY(-150%)}.skip-link:focus{transform:none;box-shadow:var(--focus)}.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}.boot{min-height:100vh;display:grid;place-content:center;text-align:center;color:var(--muted);gap:12px}.boot .brand-mark{margin:auto;animation:pulse 1.4s ease-in-out infinite}.brand-mark{width:31px;height:31px;border:2px solid currentColor;border-radius:8px;position:relative;display:inline-block;color:inherit}.brand-mark>span{position:absolute;width:9px;height:9px;border-radius:50%;background:var(--orange);right:-5px;bottom:-5px;border:2px solid var(--navy)}@keyframes pulse{50%{opacity:.45;transform:scale(.95)}}.mono-label{font:700 11px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.14em;color:#8eabb2;margin:0 0 10px}.mono-label.accent{color:var(--orange)}.subtle{color:var(--muted);margin:0}.login-view{min-height:100vh;display:grid;grid-template-columns:minmax(420px,1.15fr) minmax(380px,.85fr)}.login-story{background:var(--navy);color:#fff;padding:48px clamp(38px,6vw,90px);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative}.login-story:after{content:"";position:absolute;width:440px;height:440px;border:1px solid #2f5562;border-radius:50%;right:-250px;top:20%;box-shadow:0 0 0 70px #193541,0 0 0 71px #2f5562}.brand{display:flex;align-items:center;gap:11px;color:#dcecee;padding:0 8px}.brand b{letter-spacing:.06em}.brand small{display:block;font:10px ui-monospace,monospace;color:#7fa0a9;margin-top:2px}.brand-light{padding:0;position:relative;z-index:1}.login-story h1{font-family:Georgia,"Songti SC",serif;font-size:clamp(38px,5vw,68px);font-weight:500;line-height:1.08;letter-spacing:-.04em;max-width:760px;margin:10px 0 22px;position:relative;z-index:1}.login-story>div>p:last-child{color:#a8c0c5;font-size:17px;position:relative;z-index:1}.route-preview{display:grid;grid-template-columns:repeat(4,1fr);gap:0;position:relative;z-index:1;max-width:650px}.route-preview:before{content:"";position:absolute;height:1px;background:#45616b;top:8px;left:8px;right:8px}.route-preview i{width:17px;height:17px;border-radius:50%;background:#294b58;border:4px solid var(--navy);box-shadow:0 0 0 1px #58737c;z-index:1}.route-preview i.passed{background:var(--teal);box-shadow:0 0 0 1px #54b1a5}.route-preview i.current{background:var(--orange);box-shadow:0 0 0 4px rgba(233,95,37,.18)}.route-preview span{font:10px ui-monospace,monospace;letter-spacing:.08em;color:#7fa0a9;margin-top:10px}.login-panel{display:grid;place-items:center;padding:40px;background:#fff}.login-form{width:min(410px,100%);display:grid;gap:20px}.login-form h2{font-family:Georgia,"Songti SC",serif;font-size:33px;margin:0 0 6px}.login-form label,.form-grid label{display:grid;gap:7px;font-size:13px;font-weight:700}.login-form input,.form-grid input,.form-grid select,.form-grid textarea,.toolbar input,.toolbar select,.inline-form input,.inline-form select{border:1px solid var(--line);background:#fff;border-radius:8px;padding:11px 12px;outline:none;width:100%}.login-form input{padding:13px}.login-form input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.toolbar input:focus,.toolbar select:focus,.inline-form input:focus,.inline-form select:focus{border-color:var(--teal);box-shadow:var(--focus)}.alert{padding:11px 13px;border-radius:8px;font-size:13px}.alert.error{background:var(--red-soft);color:var(--red)}.app{min-height:100vh;display:flex}.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:var(--navy);color:#c6dade;padding:24px 14px;display:flex;flex-direction:column;z-index:30}.sidebar .brand{margin-bottom:34px}.sidebar nav{display:grid;gap:4px}.nav-label{font:700 10px ui-monospace,monospace;letter-spacing:.16em;color:#6f929c;margin:0 11px 7px}.nav-item{border:0;background:none;color:#b4cbd0;border-radius:8px;min-height:44px;padding:10px 11px;display:flex;align-items:center;gap:11px;text-align:left;transition:background .18s,color .18s;width:100%}.nav-item svg,.icon-btn svg,.btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.nav-item:hover{background:#234754;color:#fff}.nav-item.active{background:#294d5a;color:#fff;box-shadow:inset 3px 0 var(--orange)}.sidebar-foot{margin-top:auto;border-top:1px solid #2a4d59;padding-top:8px}.sync-note{display:flex;gap:9px;align-items:center;margin:14px 9px 2px;color:#b8ced2}.sync-note>span{width:8px;height:8px;background:#48b6a5;border-radius:50%;box-shadow:0 0 0 4px #48b6a519}.sync-note b,.sync-note small{display:block;font-size:10px}.sync-note small{color:#71949e;margin-top:2px}.shell{padding-left:236px;min-width:0;flex:1}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:20}.breadcrumb{margin:0;color:var(--muted);font-size:13px}.breadcrumb b{color:var(--ink)}.user-chip{display:flex;align-items:center;gap:9px}.user-chip b,.user-chip small{display:block}.user-chip b{font-size:12px}.user-chip small{font-size:10px;color:var(--muted);margin-top:1px}.avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:var(--teal);color:#fff;font-weight:700;font-size:12px;flex:none}.content{padding:30px;max-width:1560px;margin:auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}.page-head h1{font-family:Georgia,"Songti SC",serif;font-size:32px;font-weight:500;letter-spacing:-.025em;margin:0 0 6px}.page-head p{margin:0;color:var(--muted)}.head-actions{display:flex;gap:8px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;min-height:42px;padding:9px 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:700;font-size:13px}.btn:hover{border-color:#b8cacc;background:#f9fbfb}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn.primary:hover{background:#244754}.btn.accent{background:var(--orange);border-color:var(--orange);color:#fff}.btn.danger{color:var(--red);border-color:#edc8c4}.btn.wide{width:100%}.icon-btn{border:0;background:transparent;width:44px;height:44px;display:grid;place-items:center;border-radius:8px;color:var(--muted)}.icon-btn:hover{background:#eef3f4;color:var(--ink)}.mobile-menu{display:none}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:17px}.metric{border:1px solid var(--line);background:var(--card);border-radius:var(--radius);padding:16px 18px;min-height:105px;position:relative;overflow:hidden}.metric:after{content:"";position:absolute;width:58px;height:58px;border-radius:50%;background:var(--teal-soft);right:-20px;top:-20px}.metric small{color:var(--muted);font-size:12px}.metric strong{font:700 28px ui-monospace,monospace;display:block;margin:7px 0 0}.metric em{font-size:11px;font-style:normal;color:var(--teal);margin-left:3px}.grid-main{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(350px,.75fr);gap:15px}.panel{border:1px solid var(--line);background:var(--card);border-radius:var(--radius);box-shadow:0 4px 14px rgba(23,47,61,.025);overflow:hidden}.panel-head{min-height:58px;border-bottom:1px solid var(--line);padding:13px 17px;display:flex;align-items:center;justify-content:space-between;gap:15px}.panel-head h2{font-size:15px;margin:0}.panel-head small{color:var(--muted)}.toolbar{display:flex;gap:8px;padding:11px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap}.search-box{position:relative;flex:1;min-width:200px}.search-box svg{position:absolute;width:17px;height:17px;left:11px;top:11px;fill:none;stroke:var(--muted);stroke-width:2}.search-box input{padding-left:36px;background:#f8fafa}.toolbar select{width:auto;min-width:118px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:800px}.data-table th{text-align:left;padding:10px 13px;background:#fafcfc;color:#758991;font:700 10px ui-monospace,monospace;letter-spacing:.05em;white-space:nowrap}.data-table td{border-top:1px solid #edf2f3;padding:12px 13px;vertical-align:middle}.data-table tbody tr{cursor:pointer;transition:background .15s}.data-table tbody tr:hover,.data-table tbody tr.selected{background:#f4f9f8}.project-cell{display:flex;align-items:center;gap:10px}.project-dot{width:9px;height:9px;border-radius:50%;background:var(--orange);flex:none}.project-cell b,.project-cell small{display:block}.project-cell b{font-size:13px}.project-cell small{font-size:10px;color:var(--muted);margin-top:2px}.badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700;white-space:nowrap}.badge:before{content:"";width:5px;height:5px;background:currentColor;border-radius:50%}.badge.teal{background:var(--teal-soft);color:var(--teal)}.badge.orange{background:var(--orange-soft);color:#b44d22}.badge.yellow{background:var(--yellow-soft);color:var(--yellow)}.badge.gray{background:#edf2f3;color:#687a82}.badge.red{background:var(--red-soft);color:var(--red)}.priority{font:700 11px ui-monospace,monospace;color:var(--orange)}.progress-mini{display:flex;align-items:center;gap:7px}.progress-mini i{display:block;width:72px;height:6px;background:#e9eff0;border-radius:99px;overflow:hidden}.progress-mini i:after{content:"";display:block;width:var(--p);height:100%;background:var(--teal);border-radius:inherit}.progress-mini small{font:10px ui-monospace,monospace;color:var(--muted)}.empty{padding:46px 24px;text-align:center;color:var(--muted)}.empty b{display:block;color:var(--ink);margin-bottom:5px}.detail{padding:20px}.detail-top{display:flex;justify-content:space-between;gap:14px}.detail h2{font-family:Georgia,"Songti SC",serif;font-size:23px;font-weight:500;margin:3px 0 5px}.detail-meta{font-size:11px;color:var(--muted)}.compact-actions{display:flex;gap:3px}.overall{margin:20px 0 23px}.overall-label{display:flex;justify-content:space-between;font-size:11px;margin-bottom:7px}.overall-label b{font:700 11px ui-monospace,monospace;color:var(--teal)}.progress-track{height:8px;background:#eaf0f1;border-radius:99px;overflow:hidden}.progress-track i{display:block;height:100%;background:var(--teal);width:var(--p);border-radius:inherit;transition:width .25s}.delivery-route{position:relative;padding-left:38px}.delivery-route:before{content:"";position:absolute;left:12px;top:17px;bottom:20px;border-left:1px solid var(--line)}.route-step{position:relative;min-height:64px;padding:3px 0 16px}.route-marker{position:absolute;left:-38px;top:0;width:25px;height:25px;border:1px solid var(--line);background:#fff;border-radius:50%;display:grid;place-items:center;color:#81939a;font:700 9px ui-monospace,monospace;z-index:1}.route-step.done .route-marker{background:var(--teal);border-color:var(--teal);color:#fff}.route-step.current .route-marker{background:var(--orange-soft);border-color:#f3a17f;color:var(--orange);box-shadow:0 0 0 4px rgba(233,95,37,.08)}.route-step b{font-size:12px}.route-step p{font-size:10px;color:var(--muted);margin:3px 0}.route-step>span{position:absolute;right:0;top:3px;font-size:9px;color:var(--muted)}.route-step>.route-marker{left:-38px;right:auto;top:0}.route-marker svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.subhead{display:flex;justify-content:space-between;align-items:center;margin:14px 0 9px;border-top:1px solid var(--line);padding-top:15px}.subhead b{font-size:12px}.text-btn{border:0;background:none;color:var(--teal);font-size:11px;font-weight:700;padding:8px}.page-list{display:grid;gap:6px}.page-row{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:7px 7px 7px 10px}.page-row b{font-size:11px;flex:1}.page-row select{border:0;background:#edf4f3;border-radius:6px;padding:6px;font-size:10px;color:var(--ink)}.page-row .icon-btn{width:34px;height:34px}.page-row .icon-btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8}.note-box{background:#f7fafa;border-left:2px solid var(--teal);padding:9px 10px;font-size:11px;color:var(--muted);margin-top:13px}.activity-feed{padding:5px 17px 14px}.activity-item{display:flex;gap:10px;padding:11px 0;border-bottom:1px solid #edf2f3}.activity-item:last-child{border:0}.activity-item .avatar{width:28px;height:28px;font-size:10px}.activity-item p{margin:0;font-size:11px}.activity-item time{display:block;color:var(--muted);font-size:9px;margin-top:2px}.schedule-grid{display:grid;grid-template-columns:repeat(5,minmax(180px,1fr));gap:10px;overflow:auto;padding-bottom:8px}.schedule-col{border:1px solid var(--line);background:#f8fbfb;border-radius:10px;min-height:410px}.schedule-head{padding:13px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.schedule-head b{font-size:12px}.schedule-head span{font:10px ui-monospace,monospace;color:var(--muted)}.schedule-list{padding:8px;display:grid;gap:8px}.schedule-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px;cursor:pointer}.schedule-card:hover{border-color:#a9c6c4}.schedule-card b,.schedule-card small{display:block}.schedule-card b{font-size:12px}.schedule-card small{color:var(--muted);font-size:10px;margin-top:5px}.schedule-card.overdue{border-left:3px solid var(--red)}.team-grid,.template-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.member-card,.template-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px}.member-top{display:flex;align-items:center;gap:11px}.member-top .avatar{width:42px;height:42px}.member-top b,.member-top small{display:block}.member-top small{color:var(--muted);font-size:11px}.member-stats{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:15px;padding-top:12px;font-size:11px}.member-stats span{color:var(--muted)}.card-actions{display:flex;justify-content:flex-end;gap:5px;margin-top:12px}.template-card h3{font-size:15px;margin:0 0 5px}.template-card>p{color:var(--muted);font-size:11px;min-height:34px}.step-chips{display:flex;flex-wrap:wrap;gap:5px}.step-chip{background:#edf4f3;color:#42645f;border-radius:5px;padding:4px 6px;font-size:9px}.timeline{max-width:850px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:10px 22px}.timeline .activity-item{padding:15px 0}.modal-layer{position:fixed;inset:0;background:rgba(11,29,37,.58);display:grid;place-items:center;padding:20px;z-index:80}.modal{width:min(620px,100%);max-height:min(860px,92vh);overflow:auto;background:#fff;border-radius:14px;box-shadow:0 30px 100px rgba(5,23,31,.3)}.modal>header{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.modal h2{font-family:Georgia,"Songti SC",serif;font-size:23px;font-weight:500;margin:0}.modal-form{padding:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-grid .full{grid-column:1/-1}.form-grid textarea{min-height:88px;resize:vertical}.helper{font-size:10px;color:var(--muted);font-weight:400}.form-actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);margin:20px -20px -20px;padding:15px 20px}.inline-form{display:flex;gap:7px;padding:10px;background:#f7fafa;border-radius:8px;margin-top:10px}.inline-form select{width:140px;flex:none}.inline-form button{flex:none}.inline-form input{flex:1;min-width:0;width:auto}.step-editor{display:grid;gap:7px}.step-input{display:flex;gap:6px}.step-input .icon-btn{flex:none}.toast-region{position:fixed;right:22px;bottom:22px;z-index:120;display:grid;gap:8px}.toast{background:var(--navy);color:#fff;border-radius:9px;padding:11px 14px;box-shadow:var(--shadow);font-size:12px;animation:toastIn .2s ease}.toast.error{background:var(--red)}@keyframes toastIn{from{opacity:0;transform:translateY(8px)}}.scrim{display:none}
@media(max-width:1200px){.grid-main{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}.team-grid,.template-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.login-view{grid-template-columns:1fr}.login-story{min-height:330px;padding:30px}.route-preview{margin-top:35px}.sidebar{transform:translateX(-100%);transition:transform .2s}.sidebar.open{transform:none}.shell{padding-left:0}.mobile-menu{display:grid}.scrim{position:fixed;inset:0;background:#10283270;z-index:25}.scrim.open{display:block}.topbar{padding:0 15px}.content{padding:22px 15px}.team-grid,.template-grid{grid-template-columns:1fr}}
@media(max-width:600px){body{font-size:16px}.login-story{min-height:300px}.login-story h1{font-size:34px}.login-panel{padding:30px 20px}.page-head{display:block}.page-head h1{font-size:28px}.head-actions{margin-top:15px}.metrics{grid-template-columns:1fr 1fr;gap:8px}.metric{padding:13px;min-height:90px}.metric strong{font-size:24px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.user-chip>div{display:none}.content{padding-bottom:80px}.modal-layer{padding:10px;align-items:end}.modal{max-height:94vh;border-radius:14px 14px 0 0}.schedule-grid{margin-right:-15px}.toast-region{left:14px;right:14px;bottom:14px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
