/* 码境: final theme layer, shared by the original shell and its iframe pages. */
:root {
  --ea-primary:#256d60; --ea-primary-dark:#195448; --ea-primary-soft:#e9f3ef;
  --ea-primary-ring:rgba(37,109,96,.14); --ea8-theme-main-color:#256d60;
  --ea-action:#256d60; --ea-action-hover:#195448; --ea-action-soft:#e9f3ef;
  --ea-bg:#f5f7f6; --ea-surface:#fff; --ea-surface-2:#f8faf9;
  --ea-text:#213332; --ea-muted:#768481; --ea-border:#e4e9e6; --ea-field-border:#d9e1dd;
  --ea-sidebar:#fbfcfb; --ea-sidebar-text:#596965;
  --ea-shadow-sm:0 2px 6px #142c2510; --ea-shadow:0 10px 32px #142c2508;
  --mj-mint:#bce8d5; --mj-nav:#fbfcfb; --mj-nav-muted:#596965;
}
:root.dark {
  --ea-primary:#9bd4bc; --ea-primary-dark:#bce8d5; --ea-primary-soft:#243e35;
  --ea-primary-ring:rgba(155,212,188,.15); --ea8-theme-main-color:#9bd4bc;
  --ea-action:#286c59; --ea-action-hover:#35866e; --ea-action-soft:#243e35;
  --ea-bg:#14201f; --ea-surface:#1d2c2a; --ea-surface-2:#233431;
  --ea-text:#e3eee8; --ea-muted:#a0b6ad; --ea-border:#344841; --ea-field-border:#476056;
  --ea-sidebar:#132326; --ea-sidebar-text:#b7c7c5;
  --mj-nav:#132326; --mj-nav-muted:#b7c7c5;
}
html body {font-family:Inter,'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif;-webkit-font-smoothing:antialiased}
html.dark body {background:var(--ea-bg)!important}
html {scrollbar-color:#c6d1ca transparent}
::selection {background:#c9e8d9;color:#173b31}

/* Quiet, high contrast navigation. Original menu and tab behaviour stays native. */
.layui-layout-admin .layuimini-logo {border-right:1px solid var(--ea-border)!important;background:var(--mj-nav)!important}
.layui-layout-admin .layuimini-logo a {gap:10px;padding-left:22px}
.layui-layout-admin .layuimini-logo img {width:35px;height:35px;border-radius:10px;box-shadow:0 2px 8px #0002}
.layui-layout-admin .layuimini-logo h1 {font-size:14px!important;color:var(--ea-text)!important;letter-spacing:.3px;font-weight:600!important;line-height:1.4}
.layui-layout-admin .layuimini-logo h1::after {content:'MAJING CONSOLE';display:block;font-size:8px;letter-spacing:2px;color:var(--ea-muted);font-weight:400;margin-top:4px}
.layui-layout-admin .layuimini-menu-left {border-right:1px solid var(--ea-border);padding-top:26px!important}
.layui-layout-admin .layui-side.layui-bg-black,
.layui-layout-admin .layuimini-menu-left,
.layui-layout-admin .layuimini-menu-left>ul,
.layui-layout-admin .layuimini-menu-left .layui-nav {background:var(--mj-nav)!important}
.layui-layout-admin .layuimini-menu-left::before {content:'工作空间';color:var(--ea-muted);padding:0 25px 17px;font-size:11px;letter-spacing:1.2px}
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item a {color:var(--mj-nav-muted)!important;font-size:13px;letter-spacing:.3px}
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item>a {height:44px;line-height:44px;border-radius:7px;margin:0 12px}
.layui-layout-admin .layuimini-menu-left .layui-nav-item {margin-bottom:5px}
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item a:hover {background:var(--ea-primary-soft)!important;color:var(--ea-primary)!important}
.layui-layout-admin .layuimini-menu-left .layui-nav-tree .layui-this>a,
.layui-layout-admin .layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this a {background:var(--ea-primary-soft)!important;color:var(--ea-primary)!important}
.layui-layout-admin .layuimini-menu-left .layui-nav-itemed>a {color:var(--ea-text)!important}
.layui-layout-admin .layuimini-menu-left .layui-nav-tree .layui-nav-child {padding:2px 12px 5px;background:transparent!important}
.layui-layout-admin .layuimini-menu-left .layui-nav-tree .layui-nav-child a {font-size:12px;height:37px;line-height:37px;padding-left:28px}
.layui-layout-admin .layuimini-menu-left .layui-nav-tree .layui-nav-child .fa {font-size:12px;width:23px;opacity:.75}
.layui-layout-admin .layuimini-menu-left .layui-nav-item a .fa {opacity:.8;font-size:14px}
.layui-layout-admin .layuimini-menu-left .layui-nav-more {color:#72948a!important}
.layui-layout-admin .layui-header {border-bottom:1px solid var(--ea-border)!important}
.layui-header .layuimini-header-content .layuimini-menu-header-pc .layui-nav-item>a {font-size:13px;font-weight:500;letter-spacing:.4px}
.layui-header .layuimini-header-content .layuimini-menu-header-pc .layui-nav-item.layui-this>a {color:var(--ea-primary)!important}
.layui-header .layuimini-header-content .layuimini-menu-header-pc .layui-nav-item.layui-this::after {content:'';position:absolute;height:3px;left:25px;right:25px;bottom:0;background:var(--ea-primary);border-radius:3px 3px 0 0}
.layui-header .layui-nav-img {filter:saturate(.55);border:2px solid var(--ea-border)!important}
.layuimini-tab>.layui-tabs-header {height:50px;padding-top:2px}
.layuimini-tab>.layui-tabs-header li {border-radius:7px!important;font-size:12px;height:29px;line-height:29px}
.layuimini-tab>.layui-tabs-body {height:calc(100% - 50px)!important}
.layuimini-mini .layui-layout-admin .layuimini-menu-left::before {content:'';padding:0 0 14px}
.layuimini-mini .layui-layout-admin .layuimini-logo a {padding-left:13px}
.layuimini-menu-left-zoom.layui-nav {background:var(--mj-nav)!important}
.layuimini-menu-left-zoom.layui-nav a {color:var(--mj-nav-muted)!important}

/* Page surfaces and existing Layui forms. */
body .layuimini-main {border-radius:14px;padding:28px!important;box-shadow:var(--ea-shadow)!important}
body .layuimini-container {border-color:var(--ea-border)!important;border-radius:14px}
.layui-input:focus,.layui-textarea:focus {border-color:var(--ea-primary)!important;box-shadow:0 0 0 3px var(--ea-primary-ring)}
.layui-btn {border-radius:7px!important}
.layui-table th {font-weight:500;color:var(--ea-muted)}
.ea-page-heading {border-bottom:1px solid var(--ea-border);padding-bottom:25px;margin-bottom:25px}
.ea-page-icon {background:var(--ea-primary-soft)!important;color:var(--ea-primary)!important;border-radius:12px!important}
.dashboard-panel,.metric-card {border-color:var(--ea-border)!important;box-shadow:var(--ea-shadow)!important}
.dashboard-heading h1 {letter-spacing:-.6px}
.dashboard-footer {color:var(--ea-muted)}

/* QR workspace: clear hierarchy and a branded opening panel. */
#qrcode-workspace {--brand:var(--ea-primary);--line:var(--ea-border);--muted:var(--ea-muted);--ink:var(--ea-text);--bg:var(--ea-bg);background:transparent!important;border:0!important;padding:0!important}
#qrcode-workspace>.layuimini-main {background:transparent!important;border:0;box-shadow:none!important;padding:0!important;min-height:calc(100vh - 24px)}
body:has(#qrcode-workspace) .layuimini-container {border:0!important;background:transparent}
#qrcode-workspace .topbar {position:relative;min-height:128px;padding:25px 28px;margin-bottom:22px;background:var(--ea-surface);border:1px solid var(--ea-border);border-radius:12px;color:var(--ea-text);box-shadow:var(--ea-shadow);gap:25px}
#qrcode-workspace .eyebrow {color:var(--ea-muted);font-size:10px;letter-spacing:2px}
#qrcode-workspace h1 {font-size:26px;font-weight:600;letter-spacing:.2px;line-height:1.4;margin-top:7px}
#qrcode-workspace .workspace-caption {color:var(--ea-muted);margin:7px 0 0;font-size:12px;letter-spacing:.3px}
#qrcode-workspace .header-actions {gap:10px;justify-content:flex-end;max-width:49%}
#qrcode-workspace .topbar select {background:var(--ea-surface);color:var(--ea-text);border:1px solid var(--ea-field-border);max-width:180px;font-size:12px}
#qrcode-workspace .topbar select option,#qrcode-workspace .topbar select optgroup {color:#213332;background:#fff}
#qrcode-workspace .topbar .button {background:var(--ea-action);color:#fff;border-color:var(--ea-action);font-size:12px}
#qrcode-workspace .environment {border:1px solid var(--ea-border);background:var(--ea-surface-2);color:var(--ea-muted);font-size:11px;padding:7px 10px;border-radius:5px}
#qrcode-workspace .metric-grid {gap:18px}
#qrcode-workspace .metric {min-height:171px;padding:24px;border-radius:12px;box-shadow:var(--ea-shadow);border:1px solid var(--ea-border);overflow:hidden}
#qrcode-workspace .metric::after {display:none}
#qrcode-workspace .metric .label {font-size:12px;font-weight:500}
#qrcode-workspace .metric strong {font-size:37px;letter-spacing:-1px;font-weight:600;line-height:1.15;margin:22px 0 13px;font-variant-numeric:tabular-nums;color:var(--ea-text)}
#qrcode-workspace .metric small {font-size:11px;color:var(--ea-muted)}
#qrcode-workspace .metric-icon {right:22px;top:20px;display:grid;place-items:center;width:32px;height:32px;padding:0;background:var(--ea-primary-soft);color:var(--ea-primary);border-radius:9px;font-size:16px}
#qrcode-workspace .dashboard-columns {grid-template-columns:1.65fr 1fr;gap:20px;margin-top:21px}
#qrcode-workspace .card {padding:25px;border-radius:12px;box-shadow:var(--ea-shadow);min-width:0}
#qrcode-workspace .card-head {margin-bottom:26px}
#qrcode-workspace h2 {font-size:15px;font-weight:600;letter-spacing:.3px;margin-bottom:0}
#qrcode-workspace .bars {height:220px;background:repeating-linear-gradient(to top,transparent,transparent calc(25% - 1px),var(--ea-border) calc(25% - 1px),var(--ea-border) 25%);border-color:var(--ea-border)}
#qrcode-workspace .bar {background:linear-gradient(#327e6c,#76b39d);border-radius:4px 4px 0 0;width:16px}
#qrcode-workspace .bar.uv {background:#ccddd4}
#qrcode-workspace .legend span::before {background:#327e6c}
#qrcode-workspace .legend span+span::before {background:#ccddd4}
#qrcode-workspace .legend {margin-top:22px;font-size:11px}
#qrcode-workspace .health-row {padding:12px 0;border-color:var(--ea-border)}
#qrcode-workspace .health-row span {color:var(--ea-muted);font-size:12px}
#qrcode-workspace .health-row strong {color:var(--ea-text);font-variant-numeric:tabular-nums}
#qrcode-workspace .button {background:var(--ea-surface);border-color:var(--ea-field-border);color:var(--ea-text);border-radius:7px;font-size:12px;transition:background .18s,border-color .18s,box-shadow .18s}
#qrcode-workspace .button:hover {border-color:var(--ea-primary);background:var(--ea-primary-soft);color:var(--ea-primary)}
#qrcode-workspace .button.primary {background:var(--ea-action);border-color:var(--ea-action);color:#fff}
#qrcode-workspace .button.primary:hover {background:var(--ea-action-hover);box-shadow:0 4px 12px #256d6020}
#qrcode-workspace .button.danger {color:#b33d3d;border-color:#e4c7c7}
#qrcode-workspace .filters {background:var(--ea-surface);padding:17px;border:1px solid var(--ea-border);border-radius:10px;gap:10px}
#qrcode-workspace input,#qrcode-workspace select,#qrcode-workspace textarea {background:var(--ea-surface);border-color:var(--ea-field-border);color:var(--ea-text);font-size:12px}
#qrcode-workspace input:focus,#qrcode-workspace select:focus,#qrcode-workspace textarea:focus {outline:2px solid var(--ea-primary-ring);border-color:var(--ea-primary)}
#qrcode-workspace .table-wrap {border-radius:10px;box-shadow:var(--ea-shadow)}
#qrcode-workspace th {padding:17px 18px;background:var(--ea-surface-2);color:var(--ea-muted);font-size:11px;letter-spacing:.4px}
#qrcode-workspace td {padding:18px;border-color:var(--ea-border);color:var(--ea-text)}
#qrcode-workspace tr:hover td {background:var(--ea-surface-2)}
#qrcode-workspace .text-button {color:var(--ea-primary)}
#qrcode-workspace .text-button.danger {color:#b33d3d}
#qrcode-workspace .tag {background:var(--ea-primary-soft);color:var(--ea-primary);padding:4px 8px}
#qrcode-workspace .tag.bad {background:#fbecec;color:#ac4545}
#qrcode-workspace .setting-group {border-radius:12px;padding:25px;box-shadow:var(--ea-shadow)}
#qrcode-workspace .setting-group h3 {padding-bottom:17px;border-bottom:1px solid var(--ea-border);font-size:14px}
#qrcode-workspace .capability-strip span {background:var(--ea-primary-soft);color:var(--ea-primary)}
#qrcode-workspace dialog {background:var(--ea-surface);color:var(--ea-text);border:1px solid var(--ea-border);box-shadow:0 30px 100px #0d272745;border-radius:14px}
#qrcode-workspace dialog::backdrop {background:#102b2b66;backdrop-filter:blur(4px)}
#qrcode-workspace .dialog-footer,#qrcode-workspace .builder-row {background:var(--ea-surface-2)}
#qrcode-workspace .field label {color:var(--ea-text)}
#qrcode-workspace .notice {background:var(--ea-primary-soft);color:var(--ea-primary)}
#qrcode-workspace .notice.error {background:#fff0f0;color:#a43a3a}

/* Login: architectural QR geometry replaces the former character illustration. */
body:has(.majing-login) {height:auto;min-height:100vh;overflow:auto;background:var(--ea-surface)!important}
.page.majing-login {grid-template-columns:1.05fr 1fr;min-height:100vh;height:auto}
.majing-login .left {background:#f0f5f1;padding:60px;min-height:100vh;align-items:flex-start;justify-content:center;border-right:1px solid #e3ebe5}
.majing-login .login-brand {top:44px;left:52px;color:#213332;gap:13px;font-size:20px;letter-spacing:2px}
.majing-login .login-brand img {width:39px;height:39px;border-radius:11px}
.majing-login .login-brand>span:last-child {font-size:11px;color:#728579;border-color:#d4e1d7;letter-spacing:.7px;padding-left:16px}
.majing-login .login-intro {margin:0;max-width:440px}
.majing-login .login-intro>span {font-size:10px;letter-spacing:4px;color:#578575}
.majing-login .login-intro h2 {color:#2c473c;font-size:43px;line-height:1.55;font-weight:500;letter-spacing:3px;margin:25px 0 20px}
.majing-login .login-intro p {color:#728579;font-size:13px;line-height:2;max-width:320px}
.majing-login .brand-art {width:300px;height:300px;position:absolute;right:-65px;bottom:10%;opacity:.5;pointer-events:none}
.majing-login .brand-art img {width:100%;height:100%}
.majing-login .brand-footnote {position:absolute;left:54px;bottom:45px;font-size:10px;letter-spacing:2.5px;color:#829f92}
.majing-login .right {min-height:100vh;padding:65px 50px;background:var(--ea-surface)}
.majing-login .form-box {max-width:360px;width:100%}
.majing-login .login-kicker {font-size:10px;color:var(--ea-primary);letter-spacing:3px;margin-bottom:17px}
.majing-login .form-box .header h1 {font-size:27px;font-weight:600;letter-spacing:.5px;color:var(--ea-text)}
.majing-login .form-box .header .login-subtitle {font-size:12px;color:var(--ea-muted);line-height:1.8;margin-top:12px}
.majing-login .form-box .header {margin-bottom:36px}
.majing-login .field {margin-bottom:23px}
.majing-login .field input {border-radius:7px;height:49px;background:var(--ea-surface);border:1px solid var(--ea-field-border);font-size:13px;padding-left:14px}
.majing-login .field input:focus {border-color:var(--ea-primary);box-shadow:0 0 0 3px var(--ea-primary-ring)}
.majing-login .field label {font-size:12px;color:var(--ea-text);margin-bottom:10px;letter-spacing:.5px}
.majing-login .login-btn {height:48px;background:#256d60;border-radius:7px;box-shadow:0 6px 16px #256d6020;font-size:13px;letter-spacing:3px;margin-top:25px}
.majing-login .login-btn .overlay {background:#195448}
.majing-login .row a {color:var(--ea-primary);font-size:12px}
.majing-login .remember {font-size:12px;color:var(--ea-muted)}
.majing-login .footer {position:absolute;bottom:20px;left:51.22%;right:0;width:auto;text-align:center;color:var(--ea-muted);font-size:10px;letter-spacing:.3px;background:transparent}
.majing-login .toggle-pw {color:var(--ea-muted)}
@media(min-width:1500px){.majing-login .left {padding-left:13%}.majing-login .login-intro h2 {font-size:48px}}
@media(max-width:1100px){#qrcode-workspace .metric-grid {grid-template-columns:repeat(2,1fr)}#qrcode-workspace .dashboard-columns {grid-template-columns:1fr}#qrcode-workspace .topbar {padding:25px}#qrcode-workspace .header-actions {max-width:55%}}
@media(max-width:1024px){.page.majing-login {grid-template-columns:1fr}.majing-login .left {min-height:230px;padding:85px 32px 28px}.majing-login .login-brand {top:25px;left:32px;font-size:18px}.majing-login .login-intro h2 {font-size:27px;margin:0;line-height:1.5}.majing-login .login-intro h2 br {display:none}.majing-login .login-intro>span,.majing-login .login-intro p,.majing-login .brand-footnote {display:none}.majing-login .brand-art {width:220px;height:220px;bottom:-70px;right:20px}.majing-login .right {min-height:calc(100vh - 230px);padding:38px 24px 65px}.majing-login .footer {position:static;grid-column:1;padding:0 20px 20px;background:var(--ea-surface)}}
@media(max-width:767px){body .layuimini-main {padding:18px!important}#qrcode-workspace .topbar {min-height:auto;align-items:flex-start;flex-direction:column;padding:24px;gap:22px}#qrcode-workspace .header-actions {max-width:100%;justify-content:flex-start;gap:8px}#qrcode-workspace .environment {display:none}#qrcode-workspace .topbar::after {right:-70px;top:-50px;width:290px;height:290px}#qrcode-workspace h1 {font-size:25px}#qrcode-workspace .metric {padding:18px;min-height:153px}#qrcode-workspace .metric strong {font-size:31px;margin-top:23px}#qrcode-workspace .metric-icon {right:15px;top:14px;width:26px;height:26px;font-size:14px}#qrcode-workspace .metric::after {left:18px;right:18px}#qrcode-workspace .metric-grid {gap:12px}#qrcode-workspace .card {padding:20px}#qrcode-workspace .card-head {gap:12px}#qrcode-workspace .filters {padding:14px}#qrcode-workspace .section-head {gap:15px}.majing-login .login-brand>span:last-child {font-size:10px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media(max-width:480px){#qrcode-workspace .metric-grid{grid-template-columns:1fr}#qrcode-workspace .metric{min-height:145px}#qrcode-workspace .card-head{align-items:flex-start;flex-wrap:wrap}#qrcode-workspace .bars{gap:8px;padding-left:4px;padding-right:4px}#qrcode-workspace .bar{width:11px}}
