
:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#24303a;background:#f5f6f8;font-synthesis:none;--red:#cf0044;--ink:#1e2935;--muted:#78838e;--line:#e8ebef;--green:#147760;--amber:#a96617}
*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.6}button,input,textarea,select{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}a:hover{color:var(--red)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ec85a7;outline-offset:2px}
.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.sidebar{background:white;border-right:1px solid var(--line);padding:28px 16px 18px;position:fixed;width:220px;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:20}.brand img{width:155px;height:auto;display:block;margin:0 12px 9px}.brand small{display:block;margin:0 13px;color:#929ba5;letter-spacing:3px;font-size:10px}.nav-label{margin:30px 14px 10px;color:#9aa3ac;font-size:10px;letter-spacing:1.5px}.nav{display:flex;flex-direction:column;gap:5px}.nav a{display:flex;gap:12px;align-items:center;padding:10px 13px;border-radius:8px;color:#5e6975;font-weight:500}.nav a:hover{background:#f6f7f9}.nav a.active{background:#fff0f5;color:var(--red);font-weight:650}.nav svg{width:18px;height:18px;flex-shrink:0}.nav .count{margin-left:auto;font-size:11px;background:#ffffffb3;padding:0 6px;border-radius:4px}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding:18px 10px 0}.profile{display:flex;align-items:center;gap:10px}.avatar{height:34px;width:34px;flex-shrink:0;background:#f6e9ef;color:#8f234b;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700}.profile small{display:block;font-size:11px;color:var(--muted)}.sidebar-foot button{margin-top:12px}.main{grid-column:2;min-width:0}.topbar{height:68px;background:#ffffffdb;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:16px;position:sticky;top:0;z-index:10;backdrop-filter:blur(12px)}.breadcrumb{color:#858f99;font-size:12px}.breadcrumb b{font-weight:500;color:#404d59}.topbar-right{display:flex;gap:18px;align-items:center;font-size:12px;color:var(--muted)}.online{display:flex;align-items:center;gap:6px}.online:before{content:"";width:6px;height:6px;border-radius:50%;background:#299e7c}.content{padding:30px 36px 50px;max-width:1600px;margin:0 auto}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;gap:20px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--red);font-weight:700;margin-bottom:5px}h1{font-size:27px;letter-spacing:-.7px;line-height:1.35;margin:0 0 7px;font-weight:650}h2{font-size:16px;font-weight:650;margin:0}h3{font-size:15px;margin:0 0 8px}p{margin:8px 0}.muted{color:var(--muted)}.small{font-size:12px}.tiny{font-size:10px}.sub{font-size:13px;color:var(--muted)}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn{border:1px solid #dce1e7;background:#fff;padding:8px 13px;border-radius:6px;color:#3c4955;display:inline-flex;gap:7px;align-items:center;justify-content:center;font-size:12px;font-weight:550;white-space:nowrap}.btn:hover{background:#f7f8fa;border-color:#bbc4ce;color:#25313a}.btn.primary{background:var(--red);color:white;border-color:var(--red)}.btn.primary:hover{background:#ad003b}.btn.dark{background:var(--ink);color:#fff;border-color:var(--ink)}.btn.quiet{background:transparent;border-color:transparent;padding:5px 7px;color:var(--muted)}.btn.danger{color:#b22e4b;border-color:#f0d5dc}.btn svg{height:15px;width:15px}.link{color:var(--red);font-size:12px;border:0;background:none;padding:0;cursor:pointer;font-weight:550}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.stat{background:white;border:1px solid var(--line);border-radius:10px;padding:20px 22px}.stat-top{display:flex;justify-content:space-between;color:#7c8792;font-size:12px}.stat-top svg{width:18px;height:18px;opacity:.6}.stat strong{display:block;font-size:30px;line-height:1.4;font-weight:600;letter-spacing:-1px;margin:9px 0 3px;font-variant-numeric:tabular-nums}.stat small{font-size:11px;color:#8b949d}.stat.highlight{background:#27333e;color:white;border-color:#27333e}.stat.highlight .stat-top,.stat.highlight small{color:#bac6ce}.grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr);gap:22px}.panel{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:22px}.panel-head{padding:19px 22px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #eff1f4;gap:12px}.panel-body{padding:22px}.panel-head small{color:var(--muted);font-size:11px}.empty{padding:44px 20px;text-align:center;color:#8b949e;font-size:13px}.empty svg{width:30px;height:30px;color:#c3c9d0;margin-bottom:10px}.empty strong{display:block;font-weight:550;color:#64717c;margin-bottom:6px}.notice{display:flex;align-items:flex-start;gap:10px;background:#f0f4f7;border:1px solid #e2e9ee;color:#596d7b;font-size:12px;padding:13px 17px;border-radius:7px;margin-bottom:20px}.notice.warn{background:#fff8ed;border-color:#f3e5ce;color:#8e6b32}.notice.rose{background:#fff2f6;border-color:#f4dce5;color:#9b4562}.notice svg{width:17px;height:17px;flex-shrink:0;margin-top:2px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th{padding:12px 20px;font-size:11px;font-weight:550;color:#8a949e;white-space:nowrap;background:#fcfcfd;border-bottom:1px solid var(--line)}td{padding:16px 20px;border-bottom:1px solid #f0f2f5;font-size:12px;vertical-align:middle}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fdfdfe}.name{font-weight:600;color:#33414d;font-size:13px}.cell-sub{display:block;color:#95a0aa;font-size:10px;margin-top:3px}.mono{font-variant-numeric:tabular-nums}.money{font-weight:600;color:#384651}.badge{display:inline-block;font-size:10px;padding:3px 8px;line-height:1.5;border-radius:4px;background:#f0f2f5;color:#7c8791;white-space:nowrap}.badge.green{background:#eaf6ef;color:#258260}.badge.amber{background:#fff4df;color:#aa7a27}.badge.red{background:#fff0f3;color:#bf3d60}.badge.blue{background:#edf3ff;color:#5d7da8}.badge.purple{background:#f2effb;color:#8166b1}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.toolbar .search{flex:1;min-width:180px;max-width:350px}.toolbar input,.toolbar select{height:37px;background:white;font-size:12px}.filter-tabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:20px;border-bottom:1px solid var(--line);padding-bottom:0}.filter-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;padding:10px 17px;font-size:12px;color:var(--muted)}.filter-tabs button.active{border-bottom-color:var(--red);color:var(--red);font-weight:600}.pagination{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:11px;color:var(--muted);align-items:center}.task-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.task-card{border:1px solid var(--line);background:#fff;border-radius:9px;padding:22px;display:flex;flex-direction:column;gap:14px}.task-card h3{font-size:15px}.task-card .reward{border-top:1px solid var(--line);padding-top:14px;display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.reward strong{color:var(--red);font-size:20px;display:block;font-weight:600}.task-card .task-foot{margin-top:auto;display:flex;justify-content:space-between;align-items:center}.kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.kv div{min-width:0}.kv dt{color:#89949e;font-size:11px;margin-bottom:5px}.kv dd{margin:0;font-size:13px;overflow-wrap:anywhere}.project-banner{background:linear-gradient(110deg,#fff,#fff6f9);border:1px solid #ecdde4;padding:26px;border-radius:10px;margin-bottom:22px}.project-banner h1{font-size:24px}.progress{display:flex;gap:10px;margin:24px 0 0}.progress-step{flex:1;font-size:11px;color:#89929d;border-top:3px solid #e6e9ed;padding-top:10px}.progress-step b{display:block;font-size:13px;color:#5b6773;font-weight:550;margin-bottom:3px}.progress-step.done{border-color:#4b9a7e}.progress-step.done b{color:#338369}.progress-step.current{border-color:var(--red)}.progress-step.current b{color:var(--red)}.stage{scroll-margin-top:85px}.stage-head{display:flex;gap:12px;align-items:center}.step-number{background:#f1f3f6;border-radius:7px;width:34px;height:34px;display:grid;place-items:center;font-size:12px;color:#81909c}.delivery{background:#f8fafb;border:1px solid #edf0f3;padding:16px;border-radius:7px;margin-bottom:14px}.delivery p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px}.attachments{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.attachments a{border:1px solid #e3e6eb;background:white;padding:6px 9px;border-radius:4px;color:#5e6d7a;font-size:11px;max-width:100%;overflow-wrap:anywhere}.feedback{border-left:2px solid #e7acc1;padding-left:15px;margin-top:15px;font-size:12px}.feedback small{display:block;color:#8c98a2}.timeline-item{display:flex;gap:12px;padding:17px 22px;border-bottom:1px solid #f0f2f5}.timeline-item:last-child{border:0}.timeline-dot{width:7px;height:7px;border-radius:50%;background:#c7d1d8;margin-top:7px;flex-shrink:0}.timeline-text{min-width:0;flex:1;font-size:12px}.timeline-text small{display:block;color:#99a2aa;font-size:10px;margin-top:4px}.bars{display:flex;align-items:flex-end;gap:12px;height:135px;padding:10px 0 0}.bar{flex:1;background:#f3d2de;border-radius:4px 4px 0 0;min-height:3px;position:relative}.bar:hover{background:#d06a8c}.bar span{position:absolute;bottom:-25px;left:0;width:100%;text-align:center;font-size:10px;color:#8b949f}.bar em{position:absolute;top:-22px;width:100%;text-align:center;font-size:10px;font-style:normal;color:#8b6272}
label{display:flex;flex-direction:column;gap:7px;font-size:12px;color:#63717f;margin-bottom:16px}input,textarea,select{padding:10px 11px;border:1px solid #dfe4ea;border-radius:6px;background:#fff;color:#344551;min-width:0;width:100%}input::placeholder,textarea::placeholder{color:#aeb6bf}textarea{min-height:88px;resize:vertical}input[type=checkbox]{width:16px;height:16px;accent-color:var(--red);flex-shrink:0}input[type=file]{font-size:11px;padding:8px}.check{flex-direction:row;align-items:center;gap:9px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.full{grid-column:1/-1}.form-section{border-top:1px solid var(--line);padding-top:20px;margin-top:10px}.form-section h3{margin-bottom:18px}.hint{font-size:11px;color:#98a1a9}.error{font-size:12px;color:#b53250;background:#fff0f3;padding:10px 12px;border-radius:5px;margin:12px 0;white-space:pre-wrap}.error:empty{display:none}dialog{border:0;border-radius:12px;padding:0;box-shadow:0 30px 100px #1827383d;width:min(740px,calc(100% - 30px));max-height:90dvh;color:var(--ink)}dialog::backdrop{background:#1b283a77;backdrop-filter:blur(3px)}.modal-head{padding:20px 25px;display:flex;justify-content:space-between;border-bottom:1px solid var(--line);align-items:center}.modal-head h2{font-size:18px}.modal-body{padding:24px 25px;max-height:68dvh;overflow:auto}.modal-footer{padding:16px 25px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px;background:#fcfcfd}.modal-footer .hint{margin-right:auto;align-self:center}.close{border:0;background:transparent;font-size:22px;color:#84909b;padding:0 5px}.screen-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}.screen-grid img{width:100%;max-height:380px;object-fit:cover;object-position:top;border:1px solid var(--line);border-radius:5px}.screen-grid a{font-size:11px;color:#81909a}.report-check{display:flex;padding:16px 0;border-bottom:1px solid var(--line);gap:14px;align-items:flex-start}.report-check:last-child{border:0}.report-check .body{flex:1;min-width:0}.report-check p{font-size:12px;color:#7a8994;white-space:pre-wrap}.pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f6f8fa;padding:14px;font-size:12px;border-radius:5px;max-height:450px;overflow:auto}.token{user-select:all;word-break:break-all;color:#9d2c51}.login-page{min-height:100dvh;display:grid;grid-template-columns:1.1fr 1fr;background:white}.login-brand{background:#f6f1f3;padding:80px 15%;display:flex;flex-direction:column;justify-content:space-between;min-height:100dvh}.login-brand img{width:230px;max-width:100%}.login-brand h1{font-size:42px;line-height:1.6;font-weight:550;letter-spacing:-1px}.login-brand .line{height:4px;width:45px;background:var(--red);margin-bottom:25px}.login-brand p{color:#8b717d}.login-main{display:grid;place-items:center;padding:40px}.login-form{width:100%;max-width:350px}.login-form h2{font-size:25px;margin-bottom:8px}.login-form form{margin-top:30px}.login-form .btn{width:100%;padding:11px}.login-foot{font-size:11px;color:#a8aeb5;margin-top:32px}.mobile-toggle{display:none}.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:#253746;color:#fff;padding:11px 22px;border-radius:7px;box-shadow:0 6px 24px #0002;font-size:13px;z-index:1000;max-width:90%;opacity:0;pointer-events:none;transition:opacity .15s}.toast.show{opacity:1}.loading{display:grid;place-items:center;min-height:100vh;color:#9a6478}.dotload{height:25px;width:25px;border:2px solid #f1d4e0;border-top-color:var(--red);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.row-gap{display:flex;gap:10px;align-items:center}.wrap{overflow-wrap:anywhere}.no-margin{margin:0}
@media(min-width:1600px){.content{padding-top:38px}}
@media(max-width:1150px){.shell{grid-template-columns:190px minmax(0,1fr)}.sidebar{width:190px;padding:24px 12px}.brand img{width:140px}.content{padding:25px}.topbar{padding:0 25px}.stats{gap:12px}.stat{padding:17px}.grid{grid-template-columns:minmax(0,1fr)}.task-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.kv{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.shell{display:block}.sidebar{transform:translateX(-100%);transition:transform .2s;width:230px;box-shadow:15px 0 60px #14293820}.sidebar.open{transform:translateX(0)}.main{width:100%}.topbar{padding:0 18px;height:59px}.topbar-right .online,.topbar-right time{display:none}.mobile-toggle{display:block;background:none;border:0;font-size:19px;color:#6b7882}.breadcrumb{margin-right:auto;font-size:11px}.content{padding:22px 16px 40px}.heading{gap:12px;align-items:flex-start;margin-bottom:20px}.heading h1{font-size:23px}.heading .sub{font-size:12px;max-width:240px}.heading>.actions{justify-content:flex-end}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:14px 16px}.stat strong{font-size:26px}.stat small{font-size:10px}.stat-top{font-size:11px}.task-cards{grid-template-columns:1fr}.grid{display:block}.panel-head{padding:17px}.panel-body{padding:17px}.kv{grid-template-columns:1fr 1fr;gap:18px}.project-banner{padding:20px}.project-banner h1{font-size:20px}.progress{gap:7px}.progress-step b{font-size:12px}.progress-step{font-size:9px}.form-grid{grid-template-columns:1fr}.modal-body{padding:20px;max-height:65dvh}.modal-head,.modal-footer{padding:17px 20px}.modal-footer .hint{display:none}.login-page{display:block}.login-brand{display:none}.login-main{min-height:100dvh;padding:30px}.filter-tabs button{padding:10px 12px}.toolbar .search{max-width:none}.report-check{flex-wrap:wrap}.screen-grid{grid-template-columns:1fr}.topbar-right{gap:8px}.row-gap{flex-wrap:wrap}th,td{padding:13px 16px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:760px){.table-wrap table{min-width:640px}.table-wrap td:first-child{min-width:180px;max-width:250px}.heading{display:block}.heading>.actions{justify-content:flex-start;margin-top:15px}.heading .sub{max-width:none}.heading h1{font-size:21px}.table-wrap{overscroll-behavior-x:contain}}

svg{width:18px;height:18px;flex-shrink:0}.attachments svg{width:12px;height:12px;vertical-align:middle}.toolbar select{width:auto;max-width:340px}.toolbar input[type=month]{width:170px}

.website-url{display:block;width:200px;max-width:200px}.website-url .link{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Feedback stays light so the workspace remains comfortable throughout the day. */
:root{--ease:cubic-bezier(.2,.7,.2,1);--hover-shadow:0 10px 25px -14px #4a304b42}
.stat,.task-card{position:relative;transition:transform .22s var(--ease),box-shadow .22s var(--ease),border-color .22s ease}
.stat{min-width:0;color:var(--ink);text-align:left;line-height:1.6;box-shadow:0 2px 5px #26334403}
.stat-top{display:flex}.stat-note{display:block;font-size:11px;color:#84909b;padding-right:16px}
.stat.highlight{background:linear-gradient(130deg,#293944,#26303c);box-shadow:0 6px 18px -12px #17252f70}
.stat.highlight .stat-note{color:#bdc8d1}.stat-top svg{transition:transform .25s var(--ease),opacity .2s}
.stat-arrow{position:absolute;right:20px;bottom:18px;color:var(--red);opacity:0;transform:translateX(-6px);transition:opacity .2s,transform .22s var(--ease)}
.stat.highlight .stat-arrow{color:#fff}.stat-arrow svg{width:15px;height:15px}
.stat-link:focus-visible{box-shadow:var(--hover-shadow);outline-offset:4px}
.btn,.nav a,.filter-tabs button,.attachments a{transition:background .18s,border-color .18s,color .18s,box-shadow .18s,transform .18s var(--ease)}
.nav a.active{box-shadow:inset 3px 0 var(--red)}
.link{transition:color .18s,text-decoration-color .18s}
tbody tr{transition:background .18s,box-shadow .18s}.panel{box-shadow:0 2px 5px #25333e02}
input,select,textarea{transition:border-color .18s,box-shadow .18s,background .18s}
input:focus,select:focus,textarea:focus{border-color:#d97b9a;box-shadow:0 0 0 3px #cf00440a}
.btn:active:not(:disabled),.stat-link:active:not(:disabled){transform:translateY(1px) scale(.995)}
.btn[aria-busy=true]::before{content:"";width:12px;height:12px;border:1.5px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
dialog[open]{animation:dialog-in .2s var(--ease)}dialog[open]::backdrop{animation:backdrop-in .18s ease}
.modal-footer .btn.primary{min-width:96px}.error:not(:empty){animation:dialog-in .15s ease}
.toast{transition:opacity .2s,transform .25s var(--ease);transform:translate(-50%,8px)}.toast.show{transform:translate(-50%,0)}
.project-banner{background:linear-gradient(120deg,#fff 15%,#fff8fb);border-color:#eadfe5;box-shadow:0 4px 18px -14px #a3365e30}
.progress-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:24px;padding-top:20px;border-top:1px solid #eee3e9}
.progress-caption{font-size:11px;color:#89909a}.progress-caption strong{font-size:13px;color:#3d4855;margin-left:8px}
.progress{gap:12px;margin-top:14px}
.progress-step{position:relative;min-width:0;flex:1;text-align:left;font:inherit;border:1px solid #e8eaf0;border-top:3px solid #e2e6eb;border-radius:8px;padding:14px 14px 12px;background:#ffffffb8;color:#8f99a4;transition:background .2s,border-color .2s,box-shadow .2s,transform .2s var(--ease)}
.progress-step-top{display:flex;align-items:center;gap:9px}.progress-step b{margin:0;font-size:13px;color:#79838e}
.progress-dot{display:grid;place-items:center;flex-shrink:0;width:24px;height:24px;border-radius:50%;font-size:10px;font-weight:650;background:#f1f3f6;color:#8c96a2}
.progress-dot svg{width:13px;height:13px}.progress-status{display:block;font-size:11px;margin:9px 0 0 33px;white-space:nowrap}
.progress-go{margin-left:auto;font-size:13px;opacity:0;transform:translate(-3px,2px);transition:opacity .2s,transform .2s}
.progress-step.current{border-color:#edbfd0;border-top-color:var(--red);background:linear-gradient(110deg,#fff0f5,#fff8fa);box-shadow:0 5px 16px -10px #be326061;color:#b92b5a}
.progress-step.current b{color:#b91048}.progress-step.current .progress-dot{background:var(--red);color:white;box-shadow:0 0 0 4px #cf00440a}
.progress-step.done,.progress-step.past{border-color:#e1ece7;border-top-color:#96bfb0;background:#f8fbf9;color:#70897d}.progress-step.done b,.progress-step.past b{color:#538471}
.progress-step.done .progress-dot,.progress-step.past .progress-dot{background:#e7f2ec;color:#318061}
.progress-step.live{border-color:#afd8c6;border-top-color:#208467;background:#edf8f2;color:#28765c;box-shadow:0 5px 16px -10px #31846a50}.progress-step.live b{color:#177558}.progress-step.live .progress-dot{background:#208467;color:white}
.progress-step.paused{border-color:#ecd5b6;border-top-color:#bf8431;background:#fff8ec;color:#98702e}.progress-step.paused b{color:#98702e}.progress-step.paused .progress-dot{background:#ba822d;color:white}
.progress-step.skipped{border-style:dashed;opacity:.55}.stage-current{border-color:#e5b6c8}.stage-current>.panel-head{background:linear-gradient(90deg,#fff7fa,#fff)}
.stage-current .step-number{background:#ffe9f1;color:#bd1a50}.stage:focus{outline:none}.stage:focus-visible{outline:3px solid #ec85a7;outline-offset:3px}
@media(hover:hover) and (pointer:fine){
  .stat:hover{transform:translateY(-4px);border-color:#dbafbe;box-shadow:var(--hover-shadow)}
  .stat.highlight:hover{border-color:#52616d;box-shadow:0 13px 25px -14px #17252f80}
  .stat:hover .stat-top svg{transform:translateY(-2px) rotate(-5deg);opacity:1}
  .stat-link:hover .stat-arrow{opacity:1;transform:translateX(0)}
  .task-card:hover{transform:translateY(-3px);border-color:#e0bac7;box-shadow:var(--hover-shadow)}
  .btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 10px -6px #26334445}
  .btn.primary:hover:not(:disabled){box-shadow:0 5px 14px -7px #cf004477}.btn.quiet:hover{box-shadow:none;background:#f1f3f6}
  .nav a:hover{transform:translateX(3px)}.filter-tabs button:hover{color:var(--red);background:#fff5f8;border-radius:6px 6px 0 0}
  tbody tr:hover{background:#fff8fb;box-shadow:inset 3px 0 #e1a0b6}
  .link:hover{text-decoration:underline;text-underline-offset:3px}.attachments a:hover{border-color:#dc9bb3;transform:translateY(-1px);background:#fff9fb}
  .progress-step:hover:not(:disabled){transform:translateY(-3px);box-shadow:var(--hover-shadow);border-color:#d9a3b7}
  .progress-step:hover .progress-go{opacity:1;transform:translate(0,0)}
}
@media(max-width:760px){
  .stat-note{font-size:10px}.stat-arrow{right:12px;bottom:12px}
  .progress-summary{align-items:flex-start;flex-direction:column;gap:4px;margin-top:20px}
  .progress{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .progress-step{padding:12px 10px}.progress-step b{font-size:12px}.progress-status{font-size:10px;margin-left:0}.progress-dot{width:22px;height:22px}
  .stage>.panel-head{flex-wrap:wrap}.stage-head{min-width:0}.stage-head small{display:block;overflow-wrap:anywhere}
}
@keyframes dialog-in{from{opacity:.45;transform:translateY(9px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes backdrop-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.stat:hover,.task-card:hover,.progress-step:hover,.nav a:hover,.btn:hover{transform:none!important}}
.attention-list{padding:8px 16px 16px}.attention-group-label{font-size:10px;font-weight:600;color:#97a0aa;letter-spacing:.4px;padding:14px 8px 5px}
.attention-row{display:flex;gap:14px;justify-content:space-between;align-items:center;padding:11px 9px;border-radius:6px;font-size:12px;transition:background .18s,color .18s}
.attention-row small{display:block;font-size:10px;color:#9aa4ae;margin-top:3px}.attention-row strong{color:var(--red);font-size:12px;font-weight:550;white-space:nowrap}.attention-row strong span{display:inline-block;transition:transform .18s}
.attention-foot{margin:7px 9px 2px;padding-bottom:13px;border-bottom:1px solid var(--line);font-size:10px;line-height:1.8;color:#9aa4ae}
.filter-context{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;border:1px solid #eedde5;background:#fff7fa;color:#8a4760;border-radius:7px;padding:10px 15px;margin-bottom:16px;font-size:12px}
.filter-context .btn.quiet{color:#a04463}.sort-explainer{color:#949da7;font-size:11px;margin:-6px 0 15px}.delivery-date{font-variant-numeric:tabular-nums;white-space:nowrap;color:#4b5864}.delivery-date.overdue{color:#be2954;font-weight:650}.delivery-date.soon{color:#a06c20;font-weight:650}
.project-tools .search{max-width:310px}.project-tools select{max-width:220px}.cell-sub .btn.quiet{padding:3px 0;font-size:10px;color:var(--red)}
@media(hover:hover) and (pointer:fine){.attention-row:hover{background:#fff3f7}.attention-row:hover strong span{transform:translateX(3px)}}
@media(max-width:760px){.project-tools .search{flex-basis:100%;max-width:none}.project-tools select{max-width:100%;flex:1;min-width:0}.attention-list{padding:5px 10px 12px}}

.duration-value.complete{color:var(--green);font-weight:650;font-variant-numeric:tabular-nums}.duration-value.invalid{color:#ad5b20}.duration-value.missing{color:var(--muted)}.duration-preview{padding:10px 14px;background:#f5f8f8;border-radius:6px;font-size:13px}.project-row-actions{display:flex;flex-direction:column;align-items:flex-start;gap:5px;white-space:nowrap}.project-row-actions .btn.quiet{padding:2px 0;font-size:10px;color:#8e566a}.confirmation-record{padding:12px 15px;background:#f0f8f5;border:1px solid #deece5;border-radius:6px;margin-top:16px;font-size:12px;overflow-wrap:anywhere}
.customer-confirm-page{background:radial-gradient(ellipse at 10% 0%,#fceff4 0,transparent 45%),#f5f6f8;min-height:100vh}.confirmation-shell{max-width:880px;margin:auto;padding:34px 24px 50px}.confirmation-brand{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e6dce1;padding:0 0 22px}.confirmation-brand img{width:150px;height:auto}.confirmation-brand span{font-size:12px;color:#927180}.confirmation-intro{padding:34px 0 25px}.confirmation-intro h1{font-size:29px;margin:10px 0 6px;line-height:1.4;overflow-wrap:anywhere}.confirmation-intro p{color:#63717d;margin-top:0}.confirmation-tabs{display:flex;gap:12px;margin-bottom:20px}.confirmation-tabs button{flex:1;text-align:left;border:1px solid var(--line);background:#fff;border-radius:9px;padding:16px 20px;transition:border-color .2s,background .2s}.confirmation-tabs strong,.confirmation-tabs small{display:block}.confirmation-tabs small{font-size:11px;color:var(--muted);margin-top:4px}.confirmation-tabs button.active{border-color:#d54876;background:#fff5f8;box-shadow:0 3px 12px #ce004408}.confirmation-tabs button.active strong{color:#bd124c}.confirmation-card{box-shadow:0 10px 35px #26334404}.confirmation-card .panel-body{padding:28px 30px}.delivery-copy{white-space:pre-wrap;margin-top:0;overflow-wrap:anywhere}.confirmation-form{margin-top:30px;padding-top:10px;border-top:1px solid var(--line)}.confirmation-form h3{font-size:17px}.confirmation-form .btn.primary{padding:12px 24px}.confirmation-feedback{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.confirmation-feedback summary{cursor:pointer;font-size:13px;color:#6d7883}.confirmation-feedback form{margin-top:20px}.confirmation-report{margin-top:24px;padding:20px;background:#f7f8fb;border:1px solid var(--line);border-radius:8px}.confirmation-receipt{margin-top:28px;padding:24px;border:1px solid #cbe4d9;border-radius:8px;background:#f0f8f5;color:#245d4d}.confirmation-receipt>span{font-size:12px;font-weight:650}.confirmation-receipt h3{margin:10px 0}.confirmation-receipt p{font-size:13px}.confirmation-receipt small{font-size:11px}.confirmation-footer{text-align:center;color:#949ba3;font-size:11px;margin-top:28px}.confirmation-card .attachments{flex-wrap:wrap}.confirmation-card .attachments button{white-space:normal;overflow-wrap:anywhere;text-align:left;max-width:100%}#report-preview{width:min(1050px,calc(100% - 24px));height:90dvh}#report-preview iframe{border:0;width:100%;height:calc(100% - 85px);background:white}
@media(max-width:760px){.confirmation-shell{padding:22px 16px 35px}.confirmation-brand img{width:128px}.confirmation-brand span{font-size:10px}.confirmation-intro{padding-top:26px}.confirmation-intro h1{font-size:23px}.confirmation-tabs{gap:8px}.confirmation-tabs button{padding:13px 10px;min-width:0}.confirmation-tabs strong{font-size:13px}.confirmation-tabs small{font-size:10px}.confirmation-card .panel-body{padding:20px}.confirmation-form .btn.primary{width:100%;white-space:normal}.confirmation-report{padding:15px}.confirmation-receipt{padding:18px}.confirmation-card .form-grid{display:block}.confirmation-card input,.confirmation-card select,.confirmation-card textarea{font-size:16px}.confirmation-card input[type=checkbox]{flex-shrink:0}.confirmation-footer{font-size:10px}.confirmation-card .notice{overflow-wrap:anywhere}}
.confirmation-preparation-row{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.confirmation-preparation-row:last-child{border-bottom:0}.confirmation-preparation-row strong{font-size:13px}
@media(max-width:760px){.confirmation-preparation-row{flex-wrap:wrap}}
.portal-summary{display:flex;align-items:center;gap:15px;flex-wrap:wrap;margin:15px 0}.portal-refresh{display:flex;align-items:center;justify-content:space-between;gap:14px}.portal-progress{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 24px}.portal-step{appearance:none;text-align:left;background:white;border:1px solid var(--line);border-radius:10px;padding:18px;color:var(--ink);cursor:pointer;transition:transform .18s,border-color .18s,box-shadow .18s}.portal-step strong,.portal-step small{display:block}.portal-step strong{font-size:15px;margin:12px 0 5px}.portal-step small{color:var(--muted);font-size:11px}.portal-step-number{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:#eef1f5;color:#86909c;font-size:11px;font-weight:700}.portal-step.current,.portal-step.paused{border-color:#d95781;background:#fff5f8}.portal-step.current .portal-step-number{background:#cc0044;color:white}.portal-step.done .portal-step-number,.portal-step.live .portal-step-number{background:#e7f4ee;color:#287e64}.portal-step.skipped{background:#f1f3f5;color:#8b939b}.portal-step.selected{box-shadow:0 0 0 2px #cc004422}.portal-step:hover{transform:translateY(-2px);border-color:#d95781;box-shadow:0 6px 20px #cc00440c}.portal-step:focus-visible{outline:3px solid #e687a5;outline-offset:3px}.portal-stage-message{padding:24px 10px 30px;text-align:center}.portal-stage-symbol{font-size:24px;display:inline-flex;align-items:center;justify-content:center;width:62px;height:62px;border-radius:50%;background:#fbeaf0;color:#b82857;font-weight:650}.portal-stage-message h3{margin:20px 0 8px}.portal-stage-message p{color:var(--muted);font-size:14px;line-height:1.8;max-width:470px;margin:0 auto 15px}.portal-next{font-size:13px;line-height:1.8;padding:2px 0 20px;color:#52676b}.confirmation-card .panel-head{gap:12px}.confirmation-card .panel-head h2{overflow-wrap:anywhere}
@media(max-width:600px){.portal-progress{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.portal-step{padding:14px}.portal-step strong{margin-top:8px}.portal-refresh{align-items:flex-start}.portal-refresh .btn{flex-shrink:0;padding:4px}.portal-summary{gap:10px}.portal-stage-message{padding:15px 0}.confirmation-card .panel-head{padding:20px}.confirmation-card .panel-head h2{font-size:15px}.confirmation-intro h1{font-size:24px}}
@media(prefers-reduced-motion:reduce){.portal-step{transition:none}.portal-step:hover{transform:none}}

.btn.design-owner{padding:5px 9px;border:1px solid transparent;white-space:nowrap}.btn.design-owner:hover{border-color:#ead0d9;background:#fff4f7}.btn.danger-text{color:#b83251}.btn.danger-text:hover{background:#fff0f3;color:#9e1434}

/* Keep labels legible while long project names, notes and URLs wrap naturally. */
.heading>div,.panel-head>div,.stage-head>div,.profile>div,.notice>span,.attention-row>span{min-width:0}
.heading{flex-wrap:wrap}.heading>div:first-child{flex:1 1 300px}.heading>.actions{flex:0 1 auto}
h1,h2,h3,.sub,.timeline-text,.feedback,.report-check .body,.empty,.hint,.error,.toast,.portal-next,.confirmation-receipt{overflow-wrap:anywhere}
.panel-head{flex-wrap:wrap}.panel-head h2{min-width:0;flex:1 1 160px}.panel-head>.actions{max-width:100%}
.btn,.close,.step-number{flex-shrink:0}.btn{max-width:100%}.filter-tabs button,.topbar-right,.money{white-space:nowrap}
.stat-top{gap:10px;align-items:center}.stat strong{overflow-wrap:anywhere}.stat-note{overflow-wrap:anywhere}
.table-wrap{max-width:100%;overscroll-behavior-x:contain;scrollbar-gutter:stable}
td{min-width:88px;overflow-wrap:anywhere;word-break:normal}
td.col-name{min-width:190px;max-width:320px}td.col-copy{min-width:220px;max-width:440px}
td.col-label,td.col-date,td.col-money{white-space:nowrap}td.col-label{min-width:100px}
td.col-label .cell-sub,td.col-date .cell-sub{white-space:normal;min-width:110px}
td.col-actions{min-width:160px}td.col-actions>.btn+.btn{margin-top:5px}
td .actions{min-width:135px;gap:7px}.maintenance-website .website-url{margin-top:5px;width:220px;max-width:100%}
.maintenance-website .website-url .link{white-space:normal;overflow-wrap:anywhere;text-overflow:clip}
.panel>.notice{margin:16px 20px}.notice>span{overflow-wrap:anywhere}
.task-card{min-width:0}.task-card .reward,.task-card .task-foot{flex-wrap:wrap;gap:12px}.reward>div{min-width:0}.reward strong{white-space:nowrap}
.pagination{gap:12px;flex-wrap:wrap}.attention-row>span{overflow-wrap:anywhere}.attention-row>strong{flex-shrink:0}
.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid>*,label{min-width:0;overflow-wrap:anywhere}
.modal-head{gap:16px}.modal-head h2{min-width:0;overflow-wrap:anywhere}.modal-footer{flex-wrap:wrap}.modal-footer .btn{white-space:normal;text-align:center}
.sidebar{overflow-y:auto}.brand,.sidebar-foot,.nav-label{flex-shrink:0}.nav a{white-space:nowrap}.profile>div{overflow-wrap:anywhere}
.screen-grid{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.screen-grid a{min-width:0;overflow-wrap:anywhere}
.portal-refresh>div,.confirmation-brand>span{min-width:0;overflow-wrap:anywhere}.confirmation-brand{gap:16px}.confirmation-brand img{flex-shrink:0}
@media(min-width:761px) and (max-width:1100px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.progress-status{margin-left:0;white-space:normal}}
@media(max-width:760px){
  .form-grid,.screen-grid{grid-template-columns:minmax(0,1fr)}.toolbar select{max-width:100%}.toolbar .search{min-width:0;flex-basis:100%}
  .table-wrap td:first-child{min-width:180px}.modal-footer .btn{flex:1 1 110px}.stat strong{font-size:clamp(20px,5.8vw,26px)}
  .stat-top{align-items:flex-start}.confirmation-brand>span{text-align:right}.confirmation-receipt small{overflow-wrap:anywhere}
  .panel>.notice{margin:14px 16px}.timeline-item{padding:15px 17px;flex-wrap:wrap}.timeline-text{flex-basis:160px}
}

.grid>*{min-width:0}
.kv .website-url{width:auto;max-width:100%}.kv .website-url .link{white-space:normal;overflow-wrap:anywhere;text-overflow:clip}
@media(max-width:520px){.kv{grid-template-columns:minmax(0,1fr)}}

.stat strong.stat-money{font-size:clamp(16px,1.6vw,22px);white-space:nowrap;letter-spacing:-.5px}

.inventory-filter-label{margin:0 0 8px;font-weight:600}
.applicant-list{margin:18px 0;padding:14px;background:#fff3f7;border:1px solid #f1cedb;border-radius:10px;font-size:12px}.applicant-list>div{display:flex;justify-content:space-between;gap:12px;margin-top:9px}.applicant-list small{color:var(--muted)}
.review-basis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.review-basis article{min-width:0;background:#f7f9fb;padding:20px;border-radius:12px}.review-basis small{display:block;margin-top:16px;color:var(--muted)}.review-basis a{overflow-wrap:anywhere}.review-progress{display:flex;align-items:center;gap:18px;margin:20px 0;font-size:13px}.review-progress progress{flex:1;height:8px;accent-color:var(--red)}.walkthrough-item{padding:20px;margin-bottom:14px;border:1px solid var(--line);border-radius:12px;transition:background .2s,border-color .2s}.walkthrough-item.is-checked{background:#f2faf6;border-color:#b8dac8}.walkthrough-toggle{display:flex;flex-direction:row;align-items:flex-start;gap:14px;margin:0;cursor:pointer}.walkthrough-toggle input{width:19px;height:19px;flex:0 0 19px;margin-top:2px;accent-color:var(--green)}.walkthrough-toggle strong{font-size:14px}.walkthrough-toggle p{font-size:12px;line-height:1.8;font-weight:400;color:var(--muted);margin:8px 0 0}.review-by{margin:12px 0 0 33px}.review-final{display:flex;align-items:center;justify-content:flex-end;gap:14px;flex-wrap:wrap;margin:24px 0 40px}.review-final .btn:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:800px){.review-basis{grid-template-columns:1fr}.review-final{justify-content:flex-start}}

/* Renewal queues use real links so reminders can open the matching filtered list. */
.renewal-tabs a{display:inline-flex;align-items:center;gap:8px;padding:11px 16px;border-bottom:2px solid transparent;font-size:12px;color:var(--muted);text-decoration:none;white-space:nowrap;transition:color .18s,background .18s}
.renewal-tabs a:hover{color:var(--red);background:#fff4f7}.renewal-tabs a.active{color:var(--red);border-bottom-color:var(--red);font-weight:600}.renewal-tabs a span{font-variant-numeric:tabular-nums;font-size:11px;color:inherit;opacity:.8}.renewal-preview{display:block}.renewal-preview p{margin:8px 0 0}

/* Administrator staffing view, with the same cards and motion as the workspace. */
.personnel-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-bottom:22px}
.personnel-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:20px;text-align:left;min-width:0;color:var(--ink);transition:border-color .2s,box-shadow .2s,transform .2s}
.personnel-card.selected{border-color:var(--red);box-shadow:0 0 0 1px var(--red);background:#fff8fa}
.personnel-name{display:flex;gap:12px;align-items:center;min-width:0}.personnel-name>span:last-child{min-width:0}
.personnel-name strong{display:block;font-size:14px;overflow-wrap:anywhere}.personnel-name small{display:block;color:var(--muted);font-size:11px;margin-top:3px}
.personnel-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.personnel-counts span{color:var(--muted);font-size:11px}.personnel-counts b{display:block;font-size:24px;line-height:1.4;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}.personnel-counts span:first-child b{color:var(--red)}
@media(hover:hover){.personnel-card:hover{transform:translateY(-3px);border-color:#dba6b8;box-shadow:var(--hover-shadow)}}
@media(prefers-reduced-motion:reduce){.personnel-card{transition:none}.personnel-card:hover{transform:none}}
@media(max-width:760px){.personnel-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.personnel-card{padding:14px}.personnel-name{gap:8px}.personnel-name .avatar{width:30px;height:30px;font-size:11px}.personnel-counts{gap:6px}.personnel-counts b{font-size:20px}}
@media(max-width:420px){.personnel-cards{grid-template-columns:1fr}}
.workload-projects table{min-width:1120px}.workload-projects th:nth-child(1),.workload-projects td:nth-child(1){min-width:90px}.workload-projects th:nth-child(4),.workload-projects td:nth-child(4){min-width:110px}.workload-projects th:nth-child(5),.workload-projects td:nth-child(5){min-width:120px}.workload-projects th:nth-child(6),.workload-projects td:nth-child(6){min-width:150px}
