:root{--navy:#20223d;--navy-2:#2b2f57;--accent:#e84224;--accent-soft:#fff0ec;--bg:#f5f6f8;--surface:#fff;--text:#292b3d;--muted:#73768a;--line:#e4e3e8;--success:#19845c;--warning:#b56c00;--danger:#c63c3c;--radius:12px;font-family:"MiSans","HarmonyOS Sans SC","Microsoft YaHei",system-ui,sans-serif;color-scheme:light}
*{box-sizing:border-box}
html,body{min-height:100%;margin:0;background:var(--bg);color:var(--text)}
body{font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
:focus-visible{outline:3px solid rgba(232,66,36,.25);outline-offset:2px}
.eyebrow{margin:0 0 8px;color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.12em}
.brand{display:flex;align-items:center;gap:11px;font-weight:750}
.brand-mark{display:grid;width:34px;height:34px;place-items:center;color:#fff;background:var(--accent);border-radius:8px}
.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(420px,1.1fr) minmax(420px,.9fr)}
.login-story{position:relative;display:flex;min-height:100vh;flex-direction:column;padding:54px clamp(38px,6vw,92px);overflow:hidden;color:#fff;background:var(--navy)}
.login-story:after{content:"";position:absolute;width:540px;height:540px;right:-230px;bottom:-220px;border:1px solid rgba(255,255,255,.13);border-radius:50%;box-shadow:0 0 0 70px rgba(232,66,36,.05),0 0 0 140px rgba(232,66,36,.035)}
.story-copy{position:relative;z-index:1;margin:auto 0;max-width:660px}
.story-copy h1{margin:0;font-size:clamp(40px,5.2vw,72px);line-height:1.08;letter-spacing:-.06em}
.story-copy>p:last-child{max-width:520px;margin:26px 0 0;color:#cfd0dc;font-size:17px}
.story-status{position:relative;z-index:1;display:flex;align-items:center;gap:9px;color:#cfd0dc;font-size:13px}
.story-status span{width:8px;height:8px;background:#28ba82;border-radius:50%;box-shadow:0 0 0 5px rgba(40,186,130,.12)}
.login-panel{display:grid;place-items:center;padding:40px;background:#fff}
.login-form{width:min(100%,420px)}
.login-form h2{margin:0;font-size:31px;letter-spacing:-.04em}
.form-intro{margin:8px 0 28px;color:var(--muted)}
.login-form label{display:block;margin:17px 0;color:#55586c;font-size:13px;font-weight:650}
.login-form input{width:100%;height:48px;margin-top:8px;padding:0 13px;color:var(--text);background:#fff;border:1px solid #d7d7df;border-radius:8px;transition:border-color .16s,box-shadow .16s}
.login-form input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(232,66,36,.1);outline:0}
.password-wrap{position:relative;display:block}
.password-wrap input{padding-right:62px}
.password-toggle{position:absolute;right:5px;bottom:5px;height:38px;padding:0 10px;color:var(--accent);background:transparent;border:0;cursor:pointer}
.primary-button{display:inline-flex;width:100%;min-height:48px;align-items:center;justify-content:center;margin-top:7px;color:#fff;background:var(--accent);border:0;border-radius:8px;font-weight:750;cursor:pointer}
.primary-button:hover{background:#ce351d}
.support-copy{margin-top:20px;color:#8a8c9b;font-size:12px;text-align:center}
.notice{margin-bottom:18px;padding:11px 13px;border-radius:8px;font-size:13px}
.notice-error{color:#922d2d;background:#fff0f0;border:1px solid #f2caca}
.app-shell{min-height:100vh;display:grid;grid-template-columns:238px minmax(0,1fr)}
.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:24px 16px;color:#fff;background:var(--navy)}
.brand-sidebar{padding:0 9px 25px;font-size:18px}
.sidebar nav{display:grid;gap:6px;margin-top:18px}
.nav-item{min-height:46px;display:flex;align-items:center;justify-content:space-between;padding:0 13px;color:#cfd0dc;border-radius:8px}
.nav-item.active{color:#fff;background:rgba(232,66,36,.18);box-shadow:inset 3px 0 0 var(--accent)}
.nav-item.disabled{color:#888ba2}
.nav-item small{font-size:9px}
.sidebar-footer{margin-top:auto;padding:16px 12px;border-top:1px solid rgba(255,255,255,.1)}
.sidebar-footer p{margin:0;color:#9295aa;font-size:11px}
.sidebar-footer strong{font-size:12px}
.app-main{min-width:0}
.topbar{height:66px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,3vw,38px);background:#fff;border-bottom:1px solid var(--line)}
.topbar p{margin:0;color:#888b9a;font-size:10px;letter-spacing:.08em}
.user-menu{display:flex;align-items:center;gap:16px}
.user-menu form{margin:0}
.user-menu button{padding:7px 10px;color:#66697b;background:#f3f4f6;border:0;border-radius:6px;cursor:pointer}
.content{width:min(100%,1560px);margin:0 auto;padding:34px clamp(18px,3vw,38px) 54px}
.page-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:24px}
.page-header h1,.product-hero h1{margin:0;font-size:32px;letter-spacing:-.045em}
.page-header p:last-child,.product-hero p:last-child{margin:7px 0 0;color:var(--muted)}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.stat{min-height:126px;padding:21px;background:#fff;border:1px solid var(--line);border-radius:10px}
.stat span{display:block;color:#6c6f82;font-size:13px}
.stat strong{display:block;margin:12px 0 7px;font-size:30px;font-variant-numeric:tabular-nums}
.stat small{color:#9294a1}
.panel{overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:10px}
.panel+.panel{margin-top:18px}
.panel-header{min-height:67px;display:flex;align-items:center;padding:0 20px;border-bottom:1px solid #efeff2}
.panel-header h2{margin:0;font-size:17px}
.panel-header p{margin:3px 0 0;color:#8a8c9b;font-size:11px}
.product-list{display:grid}
.product-row{display:grid;grid-template-columns:42px minmax(220px,1fr) 110px 180px 32px;gap:14px;align-items:center;min-height:76px;padding:12px 20px;border-bottom:1px solid #f0f0f3;transition:background .16s}
.product-row:last-child{border-bottom:0}
.product-row:hover{background:#fafafb}
.product-icon{display:grid;width:38px;height:38px;place-items:center;color:var(--accent);background:var(--accent-soft);border-radius:8px;font-weight:800}
.product-main{min-width:0}
.product-main strong,.product-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.product-main small{margin-top:4px;color:#8d8f9d;font-size:11px}
.status{width:max-content;display:inline-flex;padding:5px 9px;color:#5f6272;background:#eef0f3;border-radius:5px;font-size:10px;font-weight:750;text-transform:uppercase}
.status-active,.status-in_progress{color:#126a49;background:#e8f7f0}
.status-planning{color:#8a5900;background:#fff4de}
.status-completed{color:#315e9a;background:#eaf2ff}
.progress-cell{display:grid;grid-template-columns:1fr 38px;gap:8px;align-items:center}
.progress-cell progress{width:100%;height:6px;overflow:hidden;border:0;border-radius:5px;background:#eeeef1;appearance:none}
.progress-cell progress::-webkit-progress-bar{background:#eeeef1}
.progress-cell progress::-webkit-progress-value{background:var(--accent)}
.progress-cell progress::-moz-progress-bar{background:var(--accent)}
.progress-cell small{color:#8b8d99;font-size:10px}
.arrow{color:#a1a3ad;font-size:18px}
.empty-state{padding:58px 24px;color:#7c7f8d;text-align:center}
.empty-state strong{display:block;color:#44475b;font-size:17px}
.empty-state p{margin:7px 0 0}
.empty-state.compact{padding:28px}
.back-link{display:inline-flex;margin-bottom:19px;color:var(--accent);font-size:13px;font-weight:700}
.product-hero{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;padding:26px;color:#fff;background:var(--navy-2);border-radius:12px}
.product-hero .eyebrow{color:#ffab99}
.product-hero p:last-child{color:#cfd0db}
.detail-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:18px}
.detail-grid .panel{margin:0}
.detail-list{margin:0;padding:7px 20px 15px}
.detail-list div{display:grid;grid-template-columns:130px 1fr;padding:13px 0;border-bottom:1px solid #f0f0f3}
.detail-list div:last-child{border-bottom:0}
.detail-list dt{color:#8a8d9a}
.detail-list dd{margin:0;font-weight:650}
.timeline{margin:0;padding:20px 24px 24px;list-style:none}
.timeline li{position:relative;display:grid;grid-template-columns:18px 1fr;gap:12px;padding-bottom:20px}
.timeline li:before{content:"";position:absolute;left:6px;top:14px;bottom:-2px;width:1px;background:#dedfe4}
.timeline li:last-child:before{display:none}
.timeline li>span{position:relative;z-index:1;width:13px;height:13px;margin-top:3px;background:#d9dae0;border:3px solid #f5f5f7;border-radius:50%}
.timeline .milestone-completed>span{background:var(--success)}
.timeline .milestone-active>span,.timeline .milestone-in_progress>span{background:var(--accent)}
.timeline strong{font-size:14px}
.timeline p{margin:4px 0;color:#858795;font-size:12px}
.timeline small{color:#a0a2ac;font-size:10px;text-transform:uppercase}
.activity-list article{display:grid;grid-template-columns:170px 1fr;gap:18px;padding:18px 20px;border-bottom:1px solid #f0f0f3}
.activity-list article:last-child{border-bottom:0}
.activity-list time{color:#999ba7;font-size:11px}
.activity-list strong{font-size:14px}
.activity-list p{margin:5px 0 0;color:#767987;font-size:12px}
.error-state{min-height:420px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.inline-button{width:auto;padding:0 18px;margin-top:18px}
.text-link{color:var(--accent);font-weight:700}
.notice-success{color:#126a49;background:#e8f7f0;border:1px solid #bde5d1}
.stat-text{overflow:hidden;font-size:18px!important;text-overflow:ellipsis;white-space:nowrap}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.metric{padding:19px;background:var(--navy-2);color:#fff;border-radius:10px}
.metric>span{display:block;color:#bfc2d6;font-size:12px}
.metric>strong{display:block;margin-top:8px;font-size:25px}
.metric>strong small{margin-left:5px;color:#cfd1dd;font-size:11px}
.metric p{margin:7px 0 0;color:#9296b2;font-size:10px}
.compact-panel{margin-top:18px!important}
.compact-panel .panel-header{justify-content:space-between}
.simple-list{display:grid}
.simple-list>div{display:flex;align-items:center;gap:12px;padding:15px 20px;border-bottom:1px solid #f0f0f3}
.simple-list>div:last-child{border-bottom:0}
.simple-list p{display:grid;margin:0}
.simple-list small{color:var(--muted)}
.dot{flex:0 0 auto;width:8px;height:8px;background:#a9abb7;border-radius:50%}
.dot-unread{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.auth-page{min-height:100vh;display:grid;place-items:center;padding:28px;background:var(--navy)}
.auth-card{width:min(100%,510px);padding:38px;background:#fff;border-radius:14px}
.auth-card .brand{margin-bottom:34px}
.auth-card h1{margin:0;font-size:32px;letter-spacing:-.04em}
.auth-card>p:not(.eyebrow){color:var(--muted)}
.stack-form{display:grid;gap:15px}
.stack-form label{display:grid;gap:7px;color:#55586c;font-size:13px;font-weight:650}
.stack-form input,.stack-form textarea,.stack-form select{width:100%;padding:11px 12px;color:var(--text);background:#fff;border:1px solid #d7d7df;border-radius:8px;font:inherit}
.stack-form input,.stack-form select{height:46px}
.stack-form textarea{resize:vertical}
.auth-card .back-link{margin:22px 0 0}
.data-table-wrap{overflow-x:auto}
.data-table{width:100%;border-collapse:collapse}
.data-table th,.data-table td{padding:14px 18px;border-bottom:1px solid #f0f0f3;text-align:left;white-space:nowrap}
.data-table th{color:#747787;background:#fafafb;font-size:11px;text-transform:uppercase}
.data-table td{font-size:13px}
.data-table td strong,.data-table td small{display:block}
.data-table td small{margin-top:3px;color:var(--muted)}
.small-button{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 12px;color:var(--accent);background:var(--accent-soft);border:0;border-radius:7px;font-weight:700;cursor:pointer}
.approval-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.approval-card .panel-header{justify-content:space-between}
.card-body{padding:20px}
.card-body>p{color:var(--muted)}
.mini-dl{display:grid;gap:0;margin:18px 0}
.mini-dl div{display:grid;grid-template-columns:120px 1fr;padding:10px 0;border-bottom:1px solid #f0f0f3}
.mini-dl dt{color:var(--muted)}
.mini-dl dd{margin:0;font-weight:650}
.button-row{display:flex;justify-content:flex-end;gap:10px}
.auto-width{width:auto;padding:0 18px;margin:0}
.secondary-button{min-height:48px;padding:0 18px;color:var(--accent);background:#fff;border:1px solid #e9a596;border-radius:8px;font-weight:750;cursor:pointer}
.response-box{margin-top:17px;padding:14px;color:#46495e;background:#f7f7f9;border-radius:8px}
.response-box p{margin:5px 0 0}
.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}
.two-columns>.panel{margin:0}
.simple-records article{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:16px 20px;border-bottom:1px solid #f0f0f3}
.simple-records article>div:last-child{text-align:right}
.simple-records p,.simple-records small{display:block;margin:3px 0 0;color:var(--muted);font-size:11px}
.ticket-layout{grid-template-columns:1.15fr .85fr;margin-top:0}
.ticket-list{display:grid}
.ticket-list>a{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 20px;border-bottom:1px solid #f0f0f3}
.ticket-list>a:hover{background:#fafafb}
.ticket-list strong,.ticket-list small{display:block}
.ticket-list small{margin-top:4px;color:var(--muted)}
.conversation{padding:24px;background:#f8f8fa}
.message{width:min(84%,760px);margin-bottom:16px;padding:15px 17px;background:#fff;border:1px solid var(--line);border-radius:10px}
.message-staff{margin-left:auto;color:#fff;background:var(--navy-2);border-color:var(--navy-2)}
.message>div{display:flex;justify-content:space-between;gap:14px}
.message time{color:#999bad;font-size:10px}
.message-staff time{color:#bfc2d3}
.message p{margin:8px 0 0}
.reply-form{padding:20px;border-top:1px solid var(--line)}
.notification-list{display:grid}
.notification{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:14px;align-items:flex-start;padding:18px 20px;border-bottom:1px solid #f0f0f3}
.notification p{margin:5px 0;color:var(--muted)}
.notification small{color:#999baa}
.notification-read{opacity:.7}
.profile-panel{max-width:720px}
.profile-panel .stack-form{max-width:480px;margin-top:26px}
.status-approved,.status-paid,.status-resolved{color:#126a49;background:#e8f7f0}
.status-changes_requested,.status-overdue{color:#922d2d;background:#fff0f0}
.status-waiting_customer{color:#8a5900;background:#fff4de}
@media(max-width:900px){.login-shell{grid-template-columns:1fr}
.login-story{display:none}
.login-panel{min-height:100vh}
.app-shell{grid-template-columns:1fr}
.sidebar{position:static;width:100%;height:auto;display:block;padding:15px}
.sidebar nav{grid-template-columns:repeat(4,1fr);margin:10px 0 0}
.sidebar-footer{display:none}
.brand-sidebar{padding:0}
.stat-grid{grid-template-columns:repeat(2,1fr)}
.detail-grid{grid-template-columns:1fr}
.product-row{grid-template-columns:42px minmax(150px,1fr) 90px 28px}
.progress-cell{display:none}
.metric-grid{grid-template-columns:repeat(2,1fr)}
.approval-grid,.two-columns,.ticket-layout{grid-template-columns:1fr}
}
@media(max-width:560px){.topbar{height:auto;min-height:64px;padding:12px 16px}
.user-menu>span{display:none}
.content{padding:24px 14px 40px}
.sidebar nav{grid-template-columns:1fr 1fr}
.page-header h1,.product-hero h1{font-size:26px}
.stat-grid{grid-template-columns:1fr 1fr;gap:9px}
.stat{min-height:110px;padding:16px}
.stat strong{font-size:25px}
.product-row{grid-template-columns:36px minmax(130px,1fr) 28px;padding:12px 14px}
.product-row>.status{display:none}
.product-hero{display:block}
.product-hero>.status{margin-top:15px}
.activity-list article{grid-template-columns:1fr;gap:4px}
}
