:root{
  --mr-bg:#09090c;
  --mr-bg-soft:#111116;
  --mr-surface:rgba(22,22,29,.68);
  --mr-surface-strong:rgba(29,29,38,.88);
  --mr-line:rgba(255,255,255,.095);
  --mr-text:#f5f5f7;
  --mr-muted:#9999a6;
  --mr-red:#e60012;
  --mr-red-bright:#ff3042;
  --mr-amber:#ffb35a;
  --mr-cyan:#79d8ff;
  --mr-green:#66e0ae;
  --mr-radius:22px;
  --mr-shadow:0 28px 80px rgba(0,0,0,.42);
  --mr-ease:cubic-bezier(.22,.8,.24,1);
}

*{scrollbar-color:rgba(255,255,255,.18) transparent;scrollbar-width:thin}
html{background:var(--mr-bg);color-scheme:dark}
body{background:var(--mr-bg);color:var(--mr-text);letter-spacing:.012em;overflow-x:hidden}
body:before{content:"";position:fixed;inset:0;z-index:-4;background:radial-gradient(circle at 78% 12%,rgba(230,0,18,.18),transparent 31%),radial-gradient(circle at 32% 88%,rgba(74,87,255,.14),transparent 34%),linear-gradient(145deg,#08080b 0%,#111117 52%,#09090d 100%)}

.mr-stage{position:fixed;inset:0;z-index:-3;overflow:hidden;pointer-events:none}
.mr-stage:before{content:"";position:absolute;inset:-18%;background:conic-gradient(from 210deg at 55% 48%,transparent 0 28%,rgba(230,0,18,.10) 35%,transparent 42% 68%,rgba(84,72,210,.11) 77%,transparent 85%);filter:blur(55px);animation:mr-aurora 22s linear infinite}
.mr-orbit{position:absolute;width:min(58vw,760px);aspect-ratio:1;right:-13vw;top:-30vh;border:1px solid rgba(255,255,255,.05);border-radius:50%;box-shadow:0 0 0 8vw rgba(255,255,255,.012),0 0 0 17vw rgba(255,255,255,.008);animation:mr-orbit 22s ease-in-out infinite}
.mr-particle{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff;opacity:.28;box-shadow:0 0 13px rgba(255,255,255,.7);animation:mr-drift var(--dur) ease-in-out infinite alternate;animation-delay:var(--delay)}
.mr-glow{position:fixed;left:var(--pointer-x,50%);top:var(--pointer-y,35%);width:520px;height:520px;z-index:-2;translate:-50% -50%;border-radius:50%;background:radial-gradient(circle,rgba(230,0,18,.08),transparent 65%);filter:blur(20px);pointer-events:none;transition:left .2s linear,top .2s linear}

/* 登录舞台 */
.login-shell{position:relative;isolation:isolate;grid-template-columns:minmax(430px,1.25fr) minmax(350px,440px);gap:clamp(34px,6vw,100px);padding:7vh clamp(28px,8vw,128px);background:transparent;overflow:hidden}
.login-shell:before{content:"EAM  /  CONTROL  ROOM";position:absolute;left:clamp(28px,8vw,128px);top:34px;color:rgba(255,255,255,.4);font:600 11px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.28em}
.login-visual{min-height:620px;position:relative;display:flex;align-items:flex-end;padding:58px;border:1px solid var(--mr-line);border-radius:36px;background:linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.018));backdrop-filter:blur(22px) saturate(130%);box-shadow:var(--mr-shadow);overflow:hidden}
.login-visual:before{content:"";position:absolute;width:min(42vw,520px);aspect-ratio:1;left:50%;top:43%;translate:-50% -50%;border:1px solid rgba(255,255,255,.08);border-radius:50%;box-shadow:0 0 0 46px rgba(255,255,255,.018),0 0 0 92px rgba(255,255,255,.012),inset 0 0 90px rgba(230,0,18,.05);animation:mr-breathe 6s ease-in-out infinite}
.login-visual:after{content:"LIVE SYSTEM";position:absolute;right:30px;top:28px;padding:8px 12px;border:1px solid rgba(102,224,174,.24);border-radius:999px;background:rgba(102,224,174,.06);color:var(--mr-green);font:700 10px/1 ui-monospace,Consolas,monospace;letter-spacing:.16em}
.login-brand-logo{position:absolute;width:min(24vw,260px);height:min(24vw,260px);left:50%;top:42%;translate:-50% -50%;object-fit:contain;filter:drop-shadow(0 0 35px rgba(230,0,18,.25));animation:mr-logo 8s var(--mr-ease) infinite}
.visual-copy{position:relative;z-index:1;max-width:570px}.visual-copy small{color:var(--mr-red-bright);font:800 11px/1.4 ui-monospace,Consolas,monospace;letter-spacing:.22em}.visual-copy h2{margin:14px 0 14px;color:#fff;font-size:clamp(38px,5vw,68px);line-height:1;letter-spacing:-.06em}.visual-copy p{margin:0;max-width:520px;color:var(--mr-muted);font-size:14px;line-height:1.9}
.login-card{width:min(440px,92vw);padding:42px;border:1px solid rgba(255,255,255,.13);border-radius:30px;background:linear-gradient(145deg,rgba(34,34,44,.96),rgba(17,17,23,.90));backdrop-filter:blur(28px) saturate(125%);box-shadow:var(--mr-shadow),inset 0 1px 0 rgba(255,255,255,.09),0 0 70px rgba(87,69,255,.055);text-align:left;animation:mr-rise .7s var(--mr-ease)}
.login-card .brand-mark{margin:0 0 24px;width:58px;height:58px;border-radius:18px;background:#fff url('/sany-logo.png') center/78% no-repeat;color:transparent;box-shadow:0 0 0 1px rgba(255,255,255,.12),0 14px 40px rgba(230,0,18,.22)}
.login-card h1{margin:0 0 8px;color:#fff;font-size:29px;letter-spacing:-.045em}.login-card>p{margin:0 0 30px;color:var(--mr-muted)}
.login-card label,.stack label,.form-grid label{color:#c8c8d1}
.login-card input,input,select,textarea{color:var(--mr-text);border:1px solid var(--mr-line);background:rgba(255,255,255,.045);box-shadow:inset 0 1px 0 rgba(255,255,255,.025);transition:border-color .22s,background .22s,box-shadow .22s,transform .22s}
.login-card input{height:50px;margin:8px 0 16px;background:rgba(255,255,255,.075)}.login-card input:hover,input:hover,select:hover,textarea:hover{background:rgba(255,255,255,.09)}.login-card input:focus,input:focus,select:focus,textarea:focus{border-color:rgba(255,48,66,.62);background:rgba(255,255,255,.10);box-shadow:0 0 0 4px rgba(230,0,18,.10),0 0 26px rgba(230,0,18,.06)}

/* 后台控制舱 */
.app{grid-template-columns:226px minmax(0,1fr);gap:18px;padding:14px;min-height:100vh;background:transparent}
aside{height:calc(100vh - 28px);top:14px;padding:20px 13px;border:1px solid var(--mr-line);border-radius:27px;background:linear-gradient(180deg,rgba(22,22,29,.94),rgba(12,12,17,.88));backdrop-filter:blur(24px);box-shadow:var(--mr-shadow);overflow:hidden}
aside:before{content:"";position:absolute;inset:-100px -120px auto auto;width:260px;height:260px;border-radius:50%;background:rgba(230,0,18,.20);filter:blur(75px);pointer-events:none}
.side-brand{position:relative;padding:0 10px 22px;color:#fff;display:flex;align-items:center;gap:12px}.side-brand>span{white-space:nowrap;word-break:keep-all;flex:none}.side-brand:after{display:none!important}.side-brand .brand-mark{width:40px;height:40px;flex:0 0 40px;background:#fff url('/sany-logo.png') center/76% no-repeat;color:transparent;box-shadow:0 10px 26px rgba(230,0,18,.18)}
aside nav{position:relative;gap:3px;overflow:auto}aside nav p{margin:18px 13px 6px;color:#656571;font:700 9px/1.4 ui-monospace,Consolas,monospace;letter-spacing:.18em;text-transform:uppercase}
aside nav button{position:relative;min-height:43px;padding:9px 12px;color:#a9a9b4;border:1px solid transparent;border-radius:12px;transition:transform .28s var(--mr-ease),background .28s,color .28s,border-color .28s}
aside nav button:hover{color:#fff;background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.07);transform:translateX(4px)}
aside nav button.active{color:#fff;background:linear-gradient(105deg,rgba(230,0,18,.94),rgba(139,0,13,.72));border-color:rgba(255,255,255,.10);box-shadow:0 10px 30px rgba(230,0,18,.20)}
.nav-line-icon{border-color:currentColor}.nav-line-icon:after{background:currentColor;border:0;width:4px;height:4px;left:4.5px;top:4.5px;box-shadow:0 0 8px currentColor}
.side-footer{border-color:var(--mr-line);color:#777784}.side-footer .link{color:#ff7883}
main{padding:0 14px 44px;overflow:hidden}header{height:104px;padding:0 8px}header h2{margin:0 0 5px;color:#fff;font-size:30px;font-weight:830;letter-spacing:-.045em}header p,.panel-title p{color:var(--mr-muted)}
.header-actions:before{content:"SYSTEM ONLINE";align-self:center;margin-right:4px;color:var(--mr-green);font:700 9px/1 ui-monospace,Consolas,monospace;letter-spacing:.14em}

.panel,.metric-grid article,.maintenance-stats article,.sany-culture{border:1px solid var(--mr-line);background:linear-gradient(145deg,rgba(28,28,36,.74),rgba(17,17,23,.61));backdrop-filter:blur(22px) saturate(125%);box-shadow:0 16px 48px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.035)}
.panel{border-radius:var(--mr-radius);padding:22px}.panel-title h3,.process-page h3,.panel h3{color:#f7f7f9}
.sany-culture{position:relative;grid-template-columns:auto 1.15fr repeat(3,1fr);padding:17px 22px;overflow:hidden}.sany-culture:before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(230,0,18,.11),transparent 34%);pointer-events:none}.sany-culture:after{content:"ON AIR";position:absolute;right:22px;top:13px;color:rgba(255,255,255,.11);font:800 30px/1 ui-monospace,Consolas,monospace;letter-spacing:.04em}.sany-culture img{filter:drop-shadow(0 0 15px rgba(230,0,18,.24))}.culture-main,.culture-value{position:relative;z-index:1}.culture-main b{color:#fff}.culture-main span{color:var(--mr-red-bright)}.culture-value{border-left-color:var(--mr-line)}.culture-value b{color:#dddde4}.culture-value small{color:#777784}

.metric-grid{gap:12px}.metric-grid article{position:relative;min-height:122px;padding:20px;border-radius:20px;overflow:hidden;transition:transform .32s var(--mr-ease),border-color .3s,box-shadow .3s}
.metric-grid article:before{content:"";position:absolute;right:-34px;top:-42px;width:118px;height:118px;border-radius:50%;background:radial-gradient(circle,rgba(121,216,255,.17),transparent 66%);transition:transform .5s var(--mr-ease)}
.metric-grid article:nth-child(1):before,.metric-grid article:nth-child(4):before,.metric-grid article:nth-child(6):before{background:radial-gradient(circle,rgba(230,0,18,.20),transparent 66%)}
.metric-grid article:after{content:"";position:absolute;left:20px;right:20px;bottom:12px;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.16),transparent);transform-origin:left;animation:mr-scan 4s ease-in-out infinite}
.metric-grid article:hover{transform:translateY(-5px) perspective(700px) rotateX(1deg);border-color:rgba(255,255,255,.17);box-shadow:0 24px 60px rgba(0,0,0,.34)}.metric-grid article:hover:before{transform:scale(1.25)}.metric-grid span{color:#a6a6b1}.metric-grid strong{color:#fff;font-size:34px;letter-spacing:-.04em}.metric-grid small{color:#696975}
.todo,.list-card,.record-list,.settings-grid div{border:1px solid var(--mr-line);background:rgba(255,255,255,.035);box-shadow:none;color:var(--mr-text);transition:transform .28s var(--mr-ease),background .28s,border-color .28s}.todo:hover,.list-card:hover{transform:translateY(-3px);background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.15)}.todo.hot{box-shadow:inset 3px 0 0 var(--mr-red)}.todo.hot b{color:var(--mr-red-bright)}.list-card p{color:#aaaab5}
.bar{color:#b8b8c1}.bar-track{height:7px;background:rgba(255,255,255,.065)}.bar-fill{position:relative;background:linear-gradient(90deg,var(--mr-red),#fa766f,var(--mr-cyan));box-shadow:0 0 18px rgba(230,0,18,.20)}.bar-fill:after{content:"";position:absolute;right:0;top:50%;width:6px;height:6px;translate:50% -50%;border-radius:50%;background:#fff;box-shadow:0 0 10px #fff}
.timeline{border-left-color:rgba(255,255,255,.10)}.timeline div:before{background:var(--mr-red);box-shadow:0 0 13px rgba(230,0,18,.7)}.timeline p,.timeline small{color:#8c8c98}

table{color:#d6d6de;border-collapse:separate;border-spacing:0}th{height:48px;color:#82828e;background:rgba(255,255,255,.035);border-bottom-color:var(--mr-line);font-size:11px;letter-spacing:.06em}td{height:58px;border-bottom-color:rgba(255,255,255,.065)}tbody tr:hover td{background:rgba(255,255,255,.035)}td small{color:#767682}
.badge{border:1px solid rgba(121,216,255,.17);background:rgba(121,216,255,.08);color:#9de3ff}.status-success{border-color:rgba(102,224,174,.18);background:rgba(102,224,174,.08);color:var(--mr-green)}.status-warning{border-color:rgba(255,179,90,.20);background:rgba(255,179,90,.08);color:var(--mr-amber)}.status-danger{border-color:rgba(255,75,91,.22);background:rgba(255,75,91,.09);color:#ff7883}.status-muted{border-color:var(--mr-line);background:rgba(255,255,255,.04);color:#868692}
.empty{border-color:var(--mr-line);background:rgba(255,255,255,.022);color:#747480}.empty:before{border-color:#666672}.approval-grid span{color:#d5d5dc}.approval-grid small{color:#777784}

button.primary,.primary.compact{border:1px solid rgba(255,255,255,.10);background:linear-gradient(105deg,var(--mr-red-bright),#a9000e);box-shadow:0 10px 30px rgba(230,0,18,.22)}button.primary:hover{background:linear-gradient(105deg,#ff4352,#c80011);box-shadow:0 16px 38px rgba(230,0,18,.32);transform:translateY(-2px)}
button.secondary,.mini{color:#d7d7df!important;border:1px solid var(--mr-line)!important;background:rgba(255,255,255,.045);box-shadow:none}button.secondary:hover,.mini:hover{color:#fff!important;border-color:rgba(255,255,255,.18)!important;background:rgba(255,255,255,.08);transform:translateY(-2px)}button.danger{border:1px solid rgba(255,75,91,.18);background:rgba(255,75,91,.08);color:#ff7883}.link{color:#ff7883}
.button-ripple{background:rgba(255,255,255,.30)}

dialog,dialog.drawer{color:var(--mr-text);border:1px solid var(--mr-line);background:rgba(20,20,27,.94);backdrop-filter:blur(28px) saturate(125%);box-shadow:0 35px 100px rgba(0,0,0,.62)}dialog::backdrop{background:rgba(0,0,0,.62);backdrop-filter:blur(9px)}.icon{color:#fff;background:rgba(255,255,255,.06)}.detail-grid div,.asset-hero{color:var(--mr-text);border:1px solid var(--mr-line);background:rgba(255,255,255,.035)}.detail-grid small,.asset-hero p{color:#82828e}.segmented{background:rgba(255,255,255,.055)}.segmented button{color:#9999a5}.segmented button:hover{color:#fff;background:rgba(255,255,255,.08);box-shadow:none}
.notice{border:1px solid var(--mr-line);background:rgba(22,22,29,.94);backdrop-filter:blur(22px);box-shadow:var(--mr-shadow)}

.view.active{animation:mr-view .48s var(--mr-ease)}
.view.active .panel,.view.active .metric-grid article{animation:mr-card .55s var(--mr-ease) both}.view.active .metric-grid article:nth-child(2){animation-delay:.035s}.view.active .metric-grid article:nth-child(3){animation-delay:.07s}.view.active .metric-grid article:nth-child(4){animation-delay:.105s}.view.active .metric-grid article:nth-child(5){animation-delay:.14s}.view.active .metric-grid article:nth-child(6){animation-delay:.175s}

@keyframes mr-view{from{opacity:0;filter:blur(6px);transform:translateY(10px)}to{opacity:1;filter:none;transform:none}}
@keyframes mr-card{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
@keyframes mr-rise{from{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:none}}
@keyframes mr-logo{0%,100%{transform:translateY(0) rotate(-1deg) scale(1)}50%{transform:translateY(-12px) rotate(1deg) scale(1.035)}}
@keyframes mr-breathe{0%,100%{transform:scale(.96);opacity:.65}50%{transform:scale(1.05);opacity:1}}
@keyframes mr-scan{0%,100%{transform:scaleX(.18);opacity:.18}50%{transform:scaleX(1);opacity:.65}}
@keyframes mr-orbit{0%,100%{transform:translate3d(0,0,0) rotate(0)}50%{transform:translate3d(-4vw,7vh,0) rotate(12deg)}}
@keyframes mr-aurora{to{transform:rotate(360deg)}}
@keyframes mr-drift{0%{transform:translate3d(0,0,0);opacity:.12}100%{transform:translate3d(var(--dx),var(--dy),0) scale(1.8);opacity:.55}}

@media(max-width:1100px){.sany-culture{grid-template-columns:auto 1fr repeat(2,1fr)}.culture-value:last-child{display:none}.app{grid-template-columns:205px minmax(0,1fr)}}
@media(max-width:920px){.login-shell{grid-template-columns:1fr;place-items:center}.login-visual{display:none}.login-shell:before{left:50%;translate:-50% 0;white-space:nowrap}.metric-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.app{display:block;padding:8px}.app aside{height:auto;max-height:40vh;position:static;border-radius:22px}.app main{padding:0 4px 28px}.header-actions:before{display:none}.metric-grid{grid-template-columns:repeat(2,1fr)}.sany-culture{grid-template-columns:auto 1fr}.culture-value{display:none}.login-shell{padding:70px 18px 24px}.login-card{padding:32px 24px}.panel{border-radius:18px}}
@media(prefers-reduced-motion:reduce){.mr-stage,.mr-glow{display:none}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Light canvas: retain the motion language while moving the workspace to white. */
:root{--mr-bg:#fff;--mr-bg-soft:#f6f7fa;--mr-surface:rgba(255,255,255,.82);--mr-surface-strong:rgba(255,255,255,.96);--mr-line:rgba(31,38,56,.11);--mr-text:#171922;--mr-muted:#747987;--mr-shadow:0 24px 70px rgba(44,52,76,.12)}
*{scrollbar-color:rgba(34,40,58,.20) transparent}html{background:#fff;color-scheme:light}body{background:#fff;color:var(--mr-text)}
body:before{background:radial-gradient(circle at 78% 12%,rgba(230,0,18,.055),transparent 31%),radial-gradient(circle at 30% 90%,rgba(74,87,255,.055),transparent 34%),linear-gradient(145deg,#fff 0%,#f8f9fc 52%,#fff 100%)}
.mr-stage:before{background:conic-gradient(from 210deg at 55% 48%,transparent 0 28%,rgba(230,0,18,.035) 35%,transparent 42% 68%,rgba(84,72,210,.04) 77%,transparent 85%)}
.mr-orbit{border-color:rgba(35,41,58,.07);box-shadow:0 0 0 8vw rgba(35,41,58,.012),0 0 0 17vw rgba(35,41,58,.008)}.mr-particle{background:#51596d;opacity:.16;box-shadow:0 0 10px rgba(81,89,109,.25)}.mr-glow{background:radial-gradient(circle,rgba(230,0,18,.045),transparent 65%)}
.login-shell:before{color:rgba(26,30,42,.42)}.login-visual{background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(246,247,251,.72));box-shadow:var(--mr-shadow),inset 0 1px 0 #fff}.login-visual:before{border-color:rgba(30,36,52,.08);box-shadow:0 0 0 46px rgba(30,36,52,.018),0 0 0 92px rgba(30,36,52,.012),inset 0 0 90px rgba(230,0,18,.035)}
.visual-copy h2,.login-card h1{color:var(--mr-text)}.login-card{border-color:var(--mr-line);background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(247,248,251,.94));box-shadow:var(--mr-shadow),inset 0 1px 0 #fff,0 0 70px rgba(87,69,255,.035)}.login-card label,.stack label,.form-grid label{color:#454a58}
.login-card input,input,select,textarea{color:var(--mr-text);background:rgba(246,247,250,.88);box-shadow:inset 0 1px 0 #fff}.login-card input{background:#f7f8fb}.login-card input:hover,input:hover,select:hover,textarea:hover{background:#fff}.login-card input:focus,input:focus,select:focus,textarea:focus{background:#fff}
main{background:transparent}header h2,.panel-title h3,.process-page h3,.panel h3{color:var(--mr-text)}
.panel,.metric-grid article,.maintenance-stats article,.sany-culture{background:linear-gradient(145deg,rgba(255,255,255,.94),rgba(248,249,252,.82));box-shadow:0 16px 48px rgba(39,48,73,.09),inset 0 1px 0 #fff}.sany-culture:before{background:linear-gradient(100deg,rgba(230,0,18,.055),transparent 34%)}.sany-culture:after{color:rgba(26,30,42,.07)}.culture-main b,.culture-value b{color:#252936}.culture-value small{color:#7d8290}
.metric-grid article:after{background:linear-gradient(90deg,rgba(31,38,56,.14),transparent)}.metric-grid article:hover{border-color:rgba(31,38,56,.18);box-shadow:0 24px 60px rgba(39,48,73,.14)}.metric-grid span{color:#686e7d}.metric-grid strong{color:#171922}.metric-grid small{color:#858a97}
.todo,.list-card,.record-list,.settings-grid div{background:rgba(248,249,252,.86)}.todo:hover,.list-card:hover{background:#fff;border-color:rgba(31,38,56,.17)}.list-card p{color:#626877}.bar{color:#565c6b}.bar-track{background:rgba(31,38,56,.07)}.timeline{border-left-color:rgba(31,38,56,.11)}.timeline p,.timeline small{color:#747a88}
table{color:#303543}th{color:#727887;background:rgba(242,244,248,.88)}td{border-bottom-color:rgba(31,38,56,.075)}tbody tr:hover td{background:rgba(245,247,250,.92)}td small{color:#7d8290}.status-muted{background:rgba(31,38,56,.04);color:#747a88}.empty{background:rgba(248,249,252,.72);color:#777d8b}.approval-grid span{color:#343947}.approval-grid small{color:#7d8290}
button.secondary,.mini{color:#3c4251!important;background:rgba(255,255,255,.82)}button.secondary:hover,.mini:hover{color:#151821!important;border-color:rgba(31,38,56,.19)!important;background:#fff}
dialog,dialog.drawer{background:rgba(255,255,255,.96);box-shadow:0 35px 100px rgba(34,42,63,.24)}dialog::backdrop{background:rgba(24,28,39,.38)}.icon{color:#303543;background:rgba(31,38,56,.055)}.detail-grid div,.asset-hero{background:rgba(247,248,251,.88)}.detail-grid small,.asset-hero p{color:#777d8b}.segmented{background:rgba(31,38,56,.055)}.segmented button{color:#686e7d}.segmented button:hover{color:#171922;background:#fff}.notice{background:rgba(255,255,255,.96)}
