:root{--navy:#071d2c;--navy2:#0a2d42;--ink:#102638;--muted:#6a8294;--line:#d8e5ed;--bg:#eef6fa;--card:#fff;--blue:#0d90df;--cyan:#28c9f5;--green:#22b58b;--amber:#f6a523;--red:#e65353;--shadow:0 12px 30px rgba(34,75,99,.09)}
*{box-sizing:border-box}html{font-family:"Microsoft YaHei UI","Microsoft YaHei","PingFang SC",Arial,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{margin:0;background:var(--bg);font-size:15px}.sidebar{position:fixed;left:0;top:0;bottom:0;width:250px;background:var(--navy);color:#fff;padding:26px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:13px;padding:0 7px 25px}.brand-mark{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#13b7f0,#ff9b21);font-size:25px;font-weight:900;font-style:italic}.brand strong{display:block;font-size:20px}.brand small{display:block;color:#9ab1c0;margin-top:3px}.sidebar nav{display:grid;gap:6px}.sidebar nav a{display:flex;gap:12px;align-items:center;color:#c5d6e0;text-decoration:none;padding:13px 14px;border-radius:10px;font-size:16px}.sidebar nav a span{width:20px;text-align:center}.sidebar nav a:hover,.sidebar nav a.active{background:#0d405b;color:#fff}.sidebar nav a.active{box-shadow:inset 3px 0 #27c5f7}.sidebar-foot{margin-top:auto;padding:18px 12px 0;border-top:1px solid #1c4358;display:grid;grid-template-columns:1fr auto}.sidebar-foot strong,.sidebar-foot small{display:block}.sidebar-foot small{color:#88a1b0}.sidebar-foot form{grid-row:1/3;grid-column:2}.link-button{border:0;background:none;color:#b7c9d4;cursor:pointer;font:inherit}.shell{margin-left:250px;min-height:100vh}.topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:sticky;top:0;z-index:10}.topbar h1{display:inline;margin:0;font-size:24px}.topbar span,.topbar-time{color:#8195a4;margin-left:12px}.content{padding:26px 32px 44px;max-width:1900px;margin:0 auto}.flash{padding:13px 16px;border-radius:9px;margin-bottom:16px;border:1px solid}.flash.success{background:#e9faf4;color:#147b61;border-color:#a8e0cf}.flash.error{background:#fff0f0;color:#a62d2d;border-color:#efb9b9}.panel{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:22px;margin-bottom:20px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.panel h2,.panel h3{margin:0 0 5px}.panel-head p,.muted{margin:0;color:var(--muted)}.toolbar{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin-bottom:20px}.toolbar.compact{margin:0}.toolbar label,label{display:grid;gap:7px;color:#506b7d}.toolbar-spacer{flex:1}input,select,textarea{width:100%;border:1px solid #cbdbe4;border-radius:9px;background:#fff;color:var(--ink);font:inherit;padding:11px 13px;outline:none}input:focus,select:focus,textarea:focus{border-color:#39aee8;box-shadow:0 0 0 3px rgba(57,174,232,.13)}textarea{min-height:220px;resize:vertical;line-height:1.7}.button{border:0;border-radius:9px;padding:11px 17px;font:inherit;font-weight:700;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.button.primary{background:#108fd9;color:#fff}.button.secondary{background:#e9f4fa;color:#0d74ac}.button.warning{background:#fff2d7;color:#a46b00}.button.danger{background:#ffeaea;color:#b73131}.button.wide{width:100%}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.metric{background:#fff;border:1px solid var(--line);border-radius:14px;padding:19px;box-shadow:var(--shadow)}.metric small{color:var(--muted)}.metric strong{display:block;font-size:30px;margin-top:10px}.metric.accent{border-top:4px solid var(--blue)}.metric.warn{border-top:4px solid var(--amber)}.metric.danger{border-top:4px solid var(--red)}.metric.success{border-top:4px solid var(--green)}.table-wrap{overflow:auto;border:1px solid #e2ebf0;border-radius:11px}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:left;padding:13px 14px;border-bottom:1px solid #e5edf2}th{background:#f5f9fb;color:#597183;font-weight:700}tr:last-child td{border-bottom:0}.tag{display:inline-flex;padding:4px 9px;border-radius:99px;background:#e9f5fb;color:#1979aa;font-size:13px}.tag.amber{background:#fff1ca;color:#9b6900}.tag.red{background:#ffe3e3;color:#b63131}.tag.green{background:#dff6ee;color:#12785e}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.form-grid .span-2{grid-column:span 2}.form-grid .span-4{grid-column:1/-1}.split{display:grid;grid-template-columns:1fr 1fr;gap:20px}.card-grid{display:grid;grid-template-columns:repeat(4,minmax(260px,1fr));gap:18px}.zone-card{border:1px solid #c9dde8;border-radius:15px;overflow:hidden;background:#fff}.zone-card-head{background:#0b455e;color:#fff;padding:16px 18px;display:flex;justify-content:space-between}.zone-card-head h3{font-size:20px;margin:0}.zone-card-head small{color:#c4e8f5}.assignment{display:grid;grid-template-columns:48px 1fr auto;gap:11px;align-items:center;margin:12px 14px;padding:10px;background:#f3f7f9;border-radius:10px}.avatar{width:42px;height:42px;border-radius:10px;background:#d9f1fa;display:grid;place-items:center;color:#087cae;font-size:20px;font-weight:800}.assignment strong,.assignment small{display:block}.assignment small{color:var(--muted);margin-top:2px}.assignment .phone{font-size:12px;color:#c55e25;text-align:right}.empty{padding:28px;color:#8aa0ae;text-align:center}.login-body{min-height:100vh;display:grid;place-items:center;background:#eef5f8}.login-card{width:min(440px,calc(100vw - 34px));background:#fff;border:1px solid var(--line);border-radius:20px;padding:36px;box-shadow:0 25px 60px rgba(17,51,70,.15)}.login-brand{padding:0 0 28px}.login-card h1{margin:0 0 8px}.login-card p{color:var(--muted);margin:0 0 25px}.login-card form{display:grid;gap:17px}.login-note{display:block;color:#8397a5;margin-top:18px;text-align:center}
/* 驾驶舱保持深色；其他功能页统一浅色、无光晕。 */
body.dashboard-page{background:#061522}.dashboard-page .content{background:#061522;color:#eaf6ff}.dashboard-page .topbar{background:#f7fafc}.cockpit-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.eyebrow{color:#35bfea;font-size:12px;letter-spacing:2px;font-weight:800}.cockpit-head h2{font-size:27px;margin:8px 0 4px}.cockpit-head p{margin:0;color:#7f9bad}.dashboard-page .metric,.dark-panel{background:#091e2d;border-color:#16384d;box-shadow:none;color:#eef8ff}.dashboard-page .metric small,.dashboard-page .muted{color:#7995a8}.dashboard-page .metric strong{color:#fff}.dashboard-page .summary-grid{grid-template-columns:repeat(6,minmax(150px,1fr))}.dashboard-layout{display:grid;grid-template-columns:2.2fr 1fr;gap:16px}.dark-panel{border:1px solid #16384d;border-radius:14px;padding:20px}.chart{height:270px;display:flex;align-items:end;gap:7px;padding-top:30px;border-bottom:1px solid #234052}.bar-wrap{height:100%;flex:1;display:flex;align-items:end;position:relative}.bar{width:100%;min-height:3px;background:#1d9fe9}.bar.peak{background:#f5a62e}.bar-label{position:absolute;bottom:-23px;width:100%;text-align:center;color:#67879a;font-size:11px}.bar-value{position:absolute;bottom:calc(var(--h) + 6px);width:100%;text-align:center;color:#9bc5d9;font-size:10px}.dashboard-bottom{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:16px}.dark-list{display:grid;gap:10px}.dark-list-item{background:#0d2636;border-left:3px solid var(--amber);padding:11px 12px}.dark-list-item strong{display:block}.dark-list-item small{color:#7896a9}.progress{height:8px;background:#173549;border-radius:99px;overflow:hidden}.progress span{display:block;height:100%;background:#1ba4ee}.weather-big{font-size:28px;font-weight:800;margin:12px 0}
@media(max-width:1200px){.summary-grid,.dashboard-page .summary-grid{grid-template-columns:repeat(3,1fr)}.card-grid{grid-template-columns:repeat(2,1fr)}.dashboard-bottom{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.sidebar{width:78px;padding:18px 9px}.brand div,.sidebar nav a:not(.active){font-size:0}.sidebar nav a{justify-content:center}.sidebar nav a span{font-size:18px}.sidebar-foot{display:none}.shell{margin-left:78px}.topbar{padding:0 17px}.topbar span{display:none}.content{padding:18px}.summary-grid,.dashboard-page .summary-grid,.split,.dashboard-layout,.dashboard-bottom,.card-grid,.form-grid{grid-template-columns:1fr}.form-grid .span-2,.form-grid .span-4{grid-column:auto}}

/* 御膳枢品牌、天气和权限页 */
.brand{display:block;padding:0 7px 20px}.brand-logo{display:block;width:192px;height:58px;object-fit:contain;object-position:left center;margin-bottom:8px}.brand strong{font-size:21px;letter-spacing:2px}.sidebar-foot small a{color:#88a1b0;text-decoration:none}.login-card{width:min(460px,calc(100vw - 34px))}.login-brand-block{background:var(--navy);border-radius:15px;padding:20px;margin-bottom:27px}.login-brand-block img{display:block;width:100%;height:72px;object-fit:contain}.login-brand-block strong{display:block;color:#fff;font-size:25px;letter-spacing:3px;margin-top:8px}.login-brand-block small{color:#9ab7c8}.notice{display:flex;gap:12px;align-items:center;padding:14px 17px;border-radius:11px;border:1px solid;margin-bottom:20px}.notice strong{white-space:nowrap}.notice.warning{background:#fff7df;border-color:#f2d389;color:#885e00}.notice.success{background:#eaf9f4;border-color:#a9dfcf;color:#15765e}.weather-now{background:#0b354b;color:#fff;display:grid;grid-template-columns:1.1fr 2fr;gap:30px;border:0;box-shadow:none}.weather-now-main{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.weather-now-main .eyebrow{width:100%}.weather-now-main>strong{font-size:65px;line-height:1}.weather-now-main h2{font-size:26px}.weather-now-main p{color:#acd0df;margin:5px 0}.weather-now-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#245063;border:1px solid #245063;border-radius:12px;overflow:hidden}.weather-now-grid>div{background:#103f55;padding:15px}.weather-now-grid small,.weather-now-grid b,.weather-now-grid em{display:block}.weather-now-grid small{color:#9fc2d1}.weather-now-grid b{font-size:20px;margin-top:7px}.weather-now-grid b.small-value{font-size:16px}.weather-now-grid em{color:#7da6b8;font-size:12px;font-style:normal}.section-kicker{font-size:11px;letter-spacing:2px;color:#0d91d7;font-weight:800}.business-weather-grid{display:grid;grid-template-columns:repeat(3,minmax(280px,1fr));gap:14px}.business-weather-card{border:1px solid #d9e7ee;border-top:4px solid var(--green);border-radius:13px;padding:18px}.business-weather-card.risk-medium{border-top-color:var(--amber)}.business-weather-card.risk-high{border-top-color:var(--red)}.business-card-head{display:flex;justify-content:space-between}.business-card-head small{color:var(--muted)}.risk-score{font-size:28px;font-weight:800;color:#17384a}.risk-score small{display:block;font-size:10px;text-align:right}.weather-condition{display:flex;justify-content:space-between;margin:18px 0;font-size:18px}.business-weather-card dl{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0}.business-weather-card dl div{background:#f3f8fa;border-radius:9px;padding:10px}.business-weather-card dt{font-size:12px;color:var(--muted)}.business-weather-card dd{margin:4px 0 0;font-weight:800}.business-weather-card>p{margin:14px 0 0;color:#536e7f;line-height:1.6}.wide-empty{grid-column:1/-1}.source-link{color:#087db9;text-decoration:none;font-size:13px}.hourly-table .business-hour td{background:#eef9fe}.hourly-table .tag{margin-left:7px;padding:2px 6px;font-size:11px}.rain-prob.high{color:#c23b3b;font-weight:800}.password-panel{max-width:560px;margin:20px auto}.stack-form{display:grid;gap:16px}.section-label{margin:22px 0 12px}.permission-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.permission-item{grid-template-columns:20px 1fr;display:grid;align-items:start;background:#f4f8fa;padding:12px;border-radius:10px;cursor:pointer}.permission-item input,.switch-line input{width:auto}.permission-item strong,.permission-item small{display:block}.permission-item small{color:var(--muted);font-size:12px;line-height:1.45;margin-top:3px}.switch-line{display:flex;align-items:center;gap:8px;margin-top:15px}.form-actions{margin-top:18px}.account-layout{grid-template-columns:1.15fr .85fr}.account-form{grid-template-columns:1fr 1fr}.account-list{display:grid;gap:10px}.account-row{display:grid;grid-template-columns:46px 1fr auto auto;gap:12px;align-items:center;border:1px solid #e0eaf0;border-radius:11px;padding:12px}.account-row.disabled{opacity:.6}.account-avatar{width:42px;height:42px;border-radius:10px;background:#dff2fa;color:#087daa;font-size:20px;font-weight:800;display:grid;place-items:center}.account-row strong,.account-row small{display:block}.account-row small{color:var(--muted);margin-top:3px}
@media(max-width:1200px){.business-weather-grid{grid-template-columns:repeat(2,1fr)}.weather-now{grid-template-columns:1fr}.account-layout{grid-template-columns:1fr}}
@media(max-width:800px){.brand-logo{width:58px;height:45px;margin:0}.brand>div{display:none}.weather-now-grid,.business-weather-grid,.permission-grid{grid-template-columns:1fr}.weather-now-main>strong{font-size:50px}.account-form{grid-template-columns:1fr}.account-row{grid-template-columns:46px 1fr auto}.account-row .button{grid-column:1/-1}}

/* 2026-08 视觉升级：高端科技感、清晰排版、无发光与模糊。 */
:root{
  --navy:#061d2b;
  --navy2:#0a354b;
  --ink:#102c3f;
  --muted:#627b8b;
  --line:#d8e5ec;
  --bg:#f2f7fa;
  --card:#fff;
  --blue:#078fce;
  --cyan:#22bce9;
  --green:#159c7a;
  --amber:#f39b19;
  --red:#d84c4c;
  --shadow:0 9px 24px rgba(25,58,76,.075)
}
html{
  font-family:"Microsoft YaHei UI","PingFang SC","Microsoft YaHei","Noto Sans CJK SC",Arial,sans-serif;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:auto
}
body{font-size:15px;line-height:1.55;letter-spacing:0;background:var(--bg)}
body,button,input,select,textarea{font-family:inherit}
body *{text-shadow:none}
.sidebar{
  width:264px;
  padding:24px 18px 20px;
  background:#061d2b;
  border-right:1px solid #153848;
  box-shadow:none
}
.brand{padding:0 10px 23px;margin-bottom:8px;border-bottom:1px solid #173b4c}
.brand-logo{width:206px;height:59px;margin:0 0 11px;object-fit:contain;object-position:left center;filter:none}
.brand strong{font-size:22px;line-height:1.25;letter-spacing:3px;color:#fff}
.brand small{margin-top:5px;color:#91aabb;font-size:12px;letter-spacing:.4px}
.sidebar nav{gap:5px}
.sidebar nav a{
  min-height:47px;
  padding:11px 14px;
  border:1px solid transparent;
  border-radius:9px;
  color:#bed0da;
  font-size:15px;
  font-weight:500;
  transition:background-color .16s ease,color .16s ease,border-color .16s ease
}
.sidebar nav a span{color:#67c8ea;font-size:17px}
.sidebar nav a:hover{background:#0a3145;border-color:#17475d;color:#fff}
.sidebar nav a.active{
  background:#0b4059;
  border-color:#1b5870;
  color:#fff;
  box-shadow:inset 3px 0 #27bde8
}
.sidebar-foot{padding:17px 11px 0;border-color:#173b4c}
.sidebar-foot strong{font-size:14px;color:#f3f8fa}.sidebar-foot small,.sidebar-foot small a{color:#89a3b2}
.shell{margin-left:264px}
.topbar{
  height:76px;
  padding:0 34px;
  background:#fff;
  border-bottom:1px solid #d9e6ed;
  box-shadow:none
}
.topbar h1{font-size:24px;line-height:1.25;letter-spacing:.2px;color:#0c2c42}
.topbar span,.topbar-time{font-size:13px;color:#7c909d}
.content{padding:28px 34px 48px;max-width:1920px}
.panel{
  border:1px solid var(--line);
  border-radius:14px;
  padding:23px;
  box-shadow:var(--shadow)
}
.panel-head{padding-bottom:16px;margin-bottom:19px;border-bottom:1px solid #e6eef2}
.panel h2{font-size:21px;color:#0d2d41}.panel h3{color:#14374b}
.panel-head p,.muted{color:var(--muted)}
input,select,textarea{
  border-color:#c9d9e2;
  border-radius:8px;
  min-height:43px;
  color:#173447;
  background:#fff;
  box-shadow:none
}
input:focus,select:focus,textarea:focus{border-color:#168fc8;box-shadow:0 0 0 2px rgba(22,143,200,.12)}
.button{min-height:42px;border-radius:8px;box-shadow:none;transition:background-color .16s ease,border-color .16s ease}
.button.primary{background:#087fb8;color:#fff}.button.primary:hover{background:#086e9f}
.button.secondary{background:#edf6fa;color:#096e9d;border:1px solid #cde4ee}
.summary-grid{gap:15px}
.metric{
  position:relative;
  overflow:hidden;
  min-height:126px;
  border:1px solid var(--line);
  border-top:1px solid var(--line);
  border-radius:13px;
  padding:20px;
  box-shadow:var(--shadow)
}
.metric:before{content:"";position:absolute;left:0;top:0;width:100%;height:3px;background:#78a5bb}
.metric.accent:before{background:var(--blue)}.metric.warn:before{background:var(--amber)}
.metric.danger:before{background:var(--red)}.metric.success:before{background:var(--green)}
.metric.accent,.metric.warn,.metric.danger,.metric.success{border-top:1px solid var(--line)}
.metric small{color:#688090;font-size:13px}.metric strong{font-size:31px;line-height:1.2;color:#102f43}
.table-wrap{border-color:#dbe7ed;border-radius:10px;background:#fff}
th{background:#f4f8fa;color:#496778;font-size:13px;letter-spacing:.2px}
th,td{padding:13px 15px;border-color:#e6eef2}
tbody tr:hover td{background:#f8fbfc}
.zone-card{border-color:#cbdfe8;border-radius:13px;box-shadow:0 6px 18px rgba(28,67,87,.06)}
.zone-card-head{background:#0b4057;padding:16px 18px}.zone-card-head small{color:#a8d6e7}
.assignment{background:#f4f8fa;border:1px solid #e8f0f3}
.avatar{background:#dceff6;color:#0878a3}
.notice,.flash{box-shadow:none}
.login-body{background:#edf4f7}
.login-card{border-radius:16px;border-color:#d5e3ea;box-shadow:0 18px 46px rgba(12,45,62,.13)}
.login-brand-block{background:transparent;border:0;border-bottom:1px solid #dce7ec;border-radius:0;padding:4px 0 20px}
.login-brand-block img{height:72px;object-fit:contain;object-position:left center;filter:none;margin-bottom:13px}
.login-brand-block strong{font-size:24px;color:#0c2c42}.login-brand-block small{color:#6d8391}

/* 驾驶舱保留深色数据氛围，但不使用光晕。 */
body.dashboard-page{background:#071926}
.dashboard-page .content{background:#071926}
.dashboard-page .topbar{background:#fff;border-color:#d9e6ed}
.dashboard-page .metric,.dark-panel{background:#0a2231;border:1px solid #183b4e;box-shadow:none}
.dashboard-page .metric:before{height:3px}
.dark-panel{border-radius:13px}
.bar{background:#159bd6}.bar.peak{background:#f3a127}
.dark-list-item{background:#0d293a;border-left-color:#ef9c23}
.progress{background:#173a4d}.progress span{background:#179ed8}
.weather-now{background:#0a354b;border:1px solid #1c5168;border-radius:14px}
.weather-now-grid{background:#28586c;border-color:#28586c}.weather-now-grid>div{background:#104259}

@media(max-width:1200px){.sidebar{width:238px}.shell{margin-left:238px}.brand-logo{width:181px}}
@media(max-width:800px){
  .sidebar{width:76px;padding:18px 8px}.shell{margin-left:76px}.brand{padding:0 8px 17px}.brand-logo{width:52px;height:43px;margin:0}
  .topbar{height:68px;padding:0 17px}.topbar h1{font-size:21px}.content{padding:18px}
}
