:root {
  font-family: "Microsoft YaHei UI", "PingFang SC", "Segoe UI", sans-serif;
  color: var(--text);
  background: var(--bg);
  font-synthesis: none;
  --bg: #f4f1ec;
  --surface: #fffdfb;
  --surface-soft: #f8f5f1;
  --surface-deep: #eee8e0;
  --text: #252320;
  --muted: #77716a;
  --subtle: #a29b93;
  --line: #e7e1da;
  --accent: #887367;
  --accent-dark: #69584f;
  --accent-soft: #ede4dd;
  --rose: #a98280;
  --success: #688071;
  --success-soft: #e8f0ea;
  --danger: #9c5c55;
  --danger-soft: #f6e8e5;
  --processing: #677b8c;
  --shadow: 0 10px 32px rgba(66, 53, 43, 0.07);
  --radius: 12px;
  --window-bg: #f5f2ed;
  --panel: var(--surface);
  --panel-soft: var(--surface-soft);
  --surface-2: var(--surface-soft);
  --border: var(--line);
  --primary: var(--accent);
  --ink: var(--text);
  --input-bg: #ffffff;
  --control-bg: #ffffff;
  --control-hover: #fbf8f5;
  --line-strong: #cbbfb5;
  --focus-border: #b9a89d;
  --focus-ring: rgba(136, 115, 103, .18);
  --on-accent: #ffffff;
  --on-media: #ffffff;
  --sidebar-bg: #292725;
  --sidebar-text: #eae6e1;
  --sidebar-muted: #aaa49e;
  --sidebar-subtle: #8d8781;
  --sidebar-line: #3b3835;
  --sidebar-hover-bg: rgba(255, 255, 255, .045);
  --sidebar-active-bg: #403b37;
  --sidebar-active-text: #ffffff;
  --sidebar-active-icon: #cfb9aa;
  --brand-bg: #c7b5a8;
  --brand-text: #302c29;
  --brand-muted: #9f9992;
  --topbar-bg: rgba(255, 253, 251, .9);
  --floating-bg: rgba(255, 253, 251, .96);
  --backdrop: rgba(38, 34, 31, .42);
  --preview-backdrop: rgba(29, 26, 24, .82);
  --overlay-chip: rgba(39, 36, 34, .72);
  --media-bg: #211f1d;
  --media-soft: #ece6e0;
  --editor-bg: #272421;
  --editor-toolbar: #302d2b;
  --editor-line: #504943;
  --code-bg: #242220;
  --code-head: #302d2b;
  --code-text: #eeeeee;
  --code-muted: #bdb5af;
  --warning: #9b6d27;
  --warning-soft: #faf0d9;
  --warning-line: #e8c996;
  --danger-line: #dec2bd;
  --danger-button: #9c605b;
  --scrollbar-thumb: #d6cec6;
  --shadow-color: rgba(66, 53, 43, .14);
  --selection-bg: rgba(136, 115, 103, .2);
  --checker-a: #2c2926;
  --checker-b: #312e2b;
}

:root[data-theme="mono"] {
  --bg: #050505;
  --surface: #101010;
  --surface-soft: #181818;
  --surface-deep: #252525;
  --text: #ffffff;
  --muted: #b8b8b8;
  --subtle: #858585;
  --line: #303030;
  --accent: #f2f2f2;
  --accent-dark: #ffffff;
  --accent-soft: #252525;
  --rose: #d0d0d0;
  --success: #79d99b;
  --success-soft: #102419;
  --danger: #ff8585;
  --danger-soft: #2a1313;
  --processing: #9cc9ff;
  --shadow: 0 12px 36px rgba(0, 0, 0, .46);
  --window-bg: #050505;
  --input-bg: #151515;
  --control-bg: #151515;
  --control-hover: #202020;
  --line-strong: #5a5a5a;
  --focus-border: #f2f2f2;
  --focus-ring: rgba(255, 255, 255, .2);
  --on-accent: #050505;
  --sidebar-bg: #000000;
  --sidebar-text: #ffffff;
  --sidebar-muted: #bdbdbd;
  --sidebar-subtle: #8a8a8a;
  --sidebar-line: #292929;
  --sidebar-hover-bg: rgba(255, 255, 255, .09);
  --sidebar-active-bg: #ffffff;
  --sidebar-active-text: #050505;
  --sidebar-active-icon: #050505;
  --brand-bg: #ffffff;
  --brand-text: #050505;
  --brand-muted: #9d9d9d;
  --topbar-bg: rgba(10, 10, 10, .92);
  --floating-bg: rgba(16, 16, 16, .97);
  --backdrop: rgba(0, 0, 0, .72);
  --preview-backdrop: rgba(0, 0, 0, .92);
  --overlay-chip: rgba(0, 0, 0, .78);
  --media-bg: #000000;
  --media-soft: #1b1b1b;
  --editor-bg: #050505;
  --editor-toolbar: #101010;
  --editor-line: #353535;
  --code-bg: #050505;
  --code-head: #151515;
  --code-text: #f5f5f5;
  --code-muted: #aaaaaa;
  --warning: #ffd37a;
  --warning-soft: #2c220b;
  --warning-line: #6e5722;
  --danger-line: #704040;
  --danger-button: #b83e3e;
  --scrollbar-thumb: #555555;
  --shadow-color: rgba(0, 0, 0, .58);
  --selection-bg: rgba(255, 255, 255, .22);
  --checker-a: #151515;
  --checker-b: #222222;
}

:root {
  --shell-inset: 0px;
  --topbar-height: 72px;
  --page-height: calc(100vh - var(--shell-inset) * 2 - var(--topbar-height));
  --radius: 18px;
  --radius-panel: 24px;
  --radius-control: 12px;
  --ss-accent: var(--accent);
  --ss-soft: var(--accent-soft);
  --soft-highlight: rgba(255, 255, 255, .65);
  --card-shadow: 0 5px 18px color-mix(in srgb, var(--shadow-color) 38%, transparent);
}

:root[data-theme="charcoal"] {
  --bg: #222426;
  --window-bg: #191a1b;
  --surface: #2b2d2f;
  --surface-soft: #252729;
  --surface-deep: #383a3c;
  --text: #f3eee7;
  --muted: #c0bcb6;
  --subtle: #a5a29d;
  --line: #404244;
  --line-strong: #727271;
  --accent: #e5a080;
  --accent-dark: #f2b899;
  --accent-soft: #46372f;
  --on-accent: #251b16;
  --rose: #d7a3a0;
  --success: #9bb99e;
  --success-soft: #293a2f;
  --danger: #f0a09a;
  --danger-soft: #422d2d;
  --danger-line: #78514b;
  --danger-button: #9c514b;
  --processing: #aabaca;
  --warning: #e2c28d;
  --warning-soft: #403827;
  --warning-line: #756341;
  --input-bg: #242628;
  --control-bg: #333537;
  --control-hover: #3c3e40;
  --focus-border: #e5a080;
  --focus-ring: #e5a08038;
  --sidebar-bg: #202122;
  --sidebar-text: #f3eee7;
  --sidebar-muted: #c0bcb6;
  --sidebar-subtle: #a5a29d;
  --sidebar-line: #3c3d3e;
  --sidebar-hover-bg: #ffffff0c;
  --sidebar-active-bg: #3d332d;
  --sidebar-active-text: #f3eee7;
  --sidebar-active-icon: #e5a080;
  --brand-bg: #e5a080;
  --brand-text: #251b16;
  --brand-muted: #a5a29d;
  --topbar-bg: #2b2d2fed;
  --floating-bg: #2b2d2ff7;
  --backdrop: #0b0c0db3;
  --preview-backdrop: #0b0c0deb;
  --overlay-chip: #141516cc;
  --media-bg: #191a1b;
  --media-soft: #222426;
  --editor-bg: #191a1b;
  --editor-toolbar: #252729;
  --editor-line: #494b4d;
  --code-bg: #191a1b;
  --code-head: #252729;
  --code-text: #f3eee7;
  --code-muted: #bcb9b3;
  --scrollbar-thumb: #606264;
  --shadow-color: #00000066;
  --shadow: 0 12px 32px #00000033;
  --selection-bg: #e5a08040;
  --checker-a: #222426;
  --checker-b: #2b2d2f;
}

/* Palette variables are copied from the desktop application's source files. */
:root {
  --font-family-primary: "Microsoft YaHei UI", "PingFang SC", "Segoe UI", sans-serif;
  --body-fg: var(--text); --body-bg: var(--bg); --body-quiet-color: var(--muted); --body-loud-color: var(--text);
  --primary: var(--accent); --secondary: var(--accent-dark); --header-color: var(--text); --header-branding-color: var(--text); --header-bg: var(--surface);
  --header-link-color: var(--muted); --breadcrumbs-fg: var(--muted); --breadcrumbs-link-fg: var(--accent-dark); --breadcrumbs-bg: var(--bg);
  --link-fg: var(--accent-dark); --link-hover-color: var(--accent); --link-selected-fg: var(--accent-dark);
  --hairline-color: var(--line); --border-color: var(--line); --error-fg: var(--danger);
  --message-success-bg: var(--success-soft); --message-warning-bg: var(--warning-soft); --message-error-bg: var(--danger-soft);
  --darkened-bg: var(--surface-soft); --selected-bg: var(--accent-soft); --selected-row: var(--accent-soft);
  --button-fg: var(--on-accent); --button-bg: var(--accent); --button-hover-bg: var(--accent-dark); --default-button-bg: var(--accent); --default-button-hover-bg: var(--accent-dark);
  --close-button-bg: var(--accent); --close-button-hover-bg: var(--accent-dark); --delete-button-bg: var(--danger-button); --delete-button-hover-bg: var(--danger);
  --object-tools-fg: var(--on-accent); --object-tools-bg: var(--accent); --object-tools-hover-bg: var(--accent-dark);
}
* { box-sizing: border-box; }
html, body { min-width: 0; min-height: 100%; margin: 0; }
body { font-family: var(--font-family-primary); font-size: 14px; line-height: 1.6; color: var(--text); background: var(--bg); }
button, input, select, textarea { font-family: inherit; }
a { text-decoration: none; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--focus-border); outline-offset: 3px; }
#container { min-width: 0; width: 100%; min-height: 100vh; }
#header { min-height: 72px; height: auto; margin-left: 232px; padding: 16px 32px; border-bottom: 1px solid var(--line); background: var(--topbar-bg); color: var(--text); position: sticky; top: 0; z-index: 30; }
.js-top-title { display: grid; gap: 3px; }.js-top-title span { font-size: 9px; letter-spacing: .18em; color: var(--subtle); font-weight: 700; }.js-top-title strong { font-size: 16px; font-weight: 650; }
#user-tools.js-user-tools { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; margin: 0; padding: 0; color: var(--muted); font-size: 12px; letter-spacing: 0; text-transform: none; }
#user-tools a, #user-tools button { border: 0; color: var(--muted); font-size: 12px; font-weight: 400; padding: 0; }#user-tools a:hover, #user-tools button:hover { color: var(--text); }
.js-user-chip { display: flex; align-items: center; gap: 9px; color: var(--text); }.js-avatar { width: 29px; height: 29px; border: 1px solid var(--line); background: var(--surface-soft); border-radius: 50%; display: grid; place-items: center; color: var(--accent-dark); font-size: 11px; }
.js-theme-control select, .js-login-theme select { height: 32px; max-width: 170px; padding: 5px 28px 5px 11px; border: 1px solid var(--line); border-radius: 9px; font-size: 11px; color: var(--muted); background: var(--control-bg); }
#logout-form { margin: 0; padding: 0; }#logout-form button { cursor: pointer; background: transparent; }
#container > nav { margin-left: 232px; }.breadcrumbs { padding: 13px 32px; font-size: 12px; color: var(--muted); background: var(--bg); border-bottom: 1px solid var(--line); }.breadcrumbs a { color: var(--muted); }
.main { margin-left: 232px; min-width: 0; }.main > .content { min-width: 0; width: 100%; }
#content { padding: 28px 32px 20px; margin: 0; min-width: 0; max-width: none; width: 100%; }
.js-dashboard-page #content { width: 100%; max-width: none; }
#content > h1 { color: var(--text); font-size: 24px; font-weight: 650; margin: 0 0 22px; letter-spacing: -.02em; }#content > h2 { color: var(--muted); font-size: 14px; }
#footer { margin-left: 232px; padding: 0 32px 20px; min-height: 0; }.js-footer { color: var(--subtle); font-size: 10px; }
#js-sidebar { position: fixed; z-index: 40; top: 0; left: 0; bottom: 0; width: 232px; padding: 27px 16px 20px; background: var(--sidebar-bg); display: flex; flex-direction: column; color: var(--sidebar-text); overflow-y: auto; }
.js-brand { display: flex; align-items: center; gap: 12px; padding: 0 8px; color: var(--sidebar-text); }.js-brand:hover { color: var(--sidebar-text); }.js-brand strong { display: block; font-size: 19px; font-weight: 750; letter-spacing: .16em; line-height: 1.3; }.js-brand small { display: block; color: var(--sidebar-muted); font-size: 10px; margin-top: 6px; letter-spacing: .1em; }
.js-brand:link, .js-brand:visited { color: var(--sidebar-text); }
.js-brand-mark { width: 42px; height: 42px; flex: 0 0 42px; display: grid; place-items: center; background: var(--brand-bg); color: var(--brand-text); border-radius: 13px; }.js-brand-mark svg { width: 27px; height: 27px; }
.js-nav-label { margin: 38px 12px 13px; color: var(--sidebar-subtle); font-size: 10px; letter-spacing: .1em; }.js-nav { display: grid; gap: 6px; }.js-nav a { display: flex; align-items: center; gap: 12px; min-height: 43px; padding: 11px 13px; border-radius: 11px; color: var(--sidebar-muted); font-size: 13px; transition: background .15s, color .15s; }.js-nav a svg { flex: 0 0 18px; }.js-nav a:hover { color: var(--sidebar-text); background: var(--sidebar-hover-bg); }.js-nav a.active { color: var(--sidebar-active-text); background: var(--sidebar-active-bg); }.js-nav a.active svg { color: var(--sidebar-active-icon); }
.js-sidebar-bottom { margin-top: auto; padding: 28px 12px 0; }.js-sidebar-rule { display: block; height: 1px; background: var(--sidebar-line); margin-bottom: 19px; }.js-sidebar-bottom p { color: var(--sidebar-muted); font-size: 12px; margin: 0 0 6px; }.js-sidebar-note { color: var(--sidebar-subtle); font-size: 10px; }
.js-eyebrow { display: block; color: var(--subtle); font-size: 10px; font-weight: 650; letter-spacing: .16em; }
.js-page-heading { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 26px; }.js-page-heading h1 { font-size: 28px; line-height: 1.4; color: var(--text); margin: 6px 0 8px; font-weight: 650; }.js-page-heading p { font-size: 12px; color: var(--muted); margin: 0; }
.js-button { display: inline-flex; justify-content: center; align-items: center; gap: 8px; min-height: 40px; padding: 10px 17px; border: 1px solid var(--line); border-radius: 11px; font-size: 12px; font-weight: 550; color: var(--text); background: var(--control-bg); cursor: pointer; white-space: nowrap; transition: background .15s, border-color .15s; }.js-button:hover { background: var(--control-hover); border-color: var(--line-strong); color: var(--text); }.js-button.js-primary { background: var(--accent); color: var(--on-accent); border-color: var(--accent); }.js-button.js-primary:hover { background: var(--accent-dark); color: var(--on-accent); border-color: var(--accent-dark); }
.js-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-bottom: 23px; }.js-stat { display: flex; flex-direction: column; padding: 20px 23px 18px; border: 1px solid var(--line); border-radius: 20px; background: var(--surface); color: var(--text); box-shadow: var(--card-shadow); transition: border-color .15s; }.js-stat:hover { border-color: var(--line-strong); color: var(--text); }.js-stat-label { display: flex; justify-content: space-between; align-items: center; color: var(--muted); font-size: 12px; gap: 10px; }.js-stat-icon { width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; color: var(--accent-dark); background: var(--accent-soft); }.js-stat-icon.good { color: var(--success); background: var(--success-soft); }.js-stat-icon.warn { color: var(--warning); background: var(--warning-soft); }.js-stat-icon.muted { color: var(--muted); background: var(--surface-soft); }.js-stat strong { font-size: 34px; line-height: 1.2; font-weight: 600; font-variant-numeric: tabular-nums; margin-top: 10px; }.js-stat small { color: var(--subtle); font-size: 10px; margin-top: 11px; }
.js-stat strong { color: var(--text); }
.js-dashboard-grid { display: grid; grid-template-columns: minmax(0, 1fr) 310px; align-items: start; gap: 20px; }.js-panel { border: 1px solid var(--line); border-radius: 22px; background: var(--surface); box-shadow: var(--card-shadow); min-width: 0; overflow: hidden; }.js-panel-heading { display: flex; align-items: center; justify-content: space-between; padding: 22px 23px 18px; gap: 12px; }.js-panel-heading h2 { font-size: 15px; color: var(--text); margin: 0 0 5px; font-weight: 600; }.js-panel-heading p { color: var(--muted); font-size: 10px; margin: 0; }.js-panel-symbol { color: var(--muted); }.js-link { color: var(--muted); font-size: 11px; display: flex; align-items: center; gap: 5px; white-space: nowrap; }.js-link svg { width: 14px; }.js-link:hover { color: var(--accent-dark); }
.js-search { display: flex; gap: 9px; margin: 0 23px 19px; }.js-search input[type=search] { width: 100%; min-width: 0; min-height: 38px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--input-bg); color: var(--text); font-size: 11px; }.js-search .js-button { min-height: 38px; }
.js-table-scroll { overflow-x: auto; }.js-account-table { width: 100%; border-collapse: collapse; }.js-account-table thead th { padding: 13px 22px; background: var(--surface-soft); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: 10px; color: var(--muted); font-weight: 500; text-transform: none; white-space: nowrap; }.js-account-table tbody td { padding: 17px 22px; border-bottom: 1px solid var(--line); background: transparent; font-size: 12px; vertical-align: middle; }.js-account-table tbody tr:last-child td { border-bottom: 0; }.js-account-table tbody tr:hover { background: var(--surface-soft); }.js-cell-end { text-align: right; }.js-account-name { display: flex; align-items: center; gap: 10px; }.js-account-name strong { font-size: 12px; font-weight: 550; color: var(--text); }.js-account-name small { display: block; margin-top: 2px; color: var(--subtle); font-size: 9px; }.js-account-avatar { flex: 0 0 32px; width: 32px; height: 32px; display: grid; place-items: center; border: 1px solid var(--line); color: var(--accent-dark); background: var(--surface-soft); border-radius: 10px; font-size: 12px; }.js-date { color: var(--muted); font-size: 11px !important; font-variant-numeric: tabular-nums; white-space: nowrap; }.js-table-action { color: var(--accent-dark); border: 1px solid var(--line); background: var(--control-bg); padding: 5px 10px; border-radius: 8px; font-size: 10px; }
.js-badge { display: inline-flex; align-items: center; min-height: 24px; padding: 3px 9px; font-size: 10px; line-height: 1.4; border-radius: 7px; white-space: nowrap; color: var(--muted); background: var(--surface-soft); }.js-badge[data-status="正常"] { color: var(--success); background: var(--success-soft); }.js-badge[data-status="已到期"], .js-badge[data-status="未授权"] { color: var(--warning); background: var(--warning-soft); }.js-badge[data-status="已停用"] { color: var(--danger); background: var(--danger-soft); }.js-badge[data-status="管理员"] { color: var(--accent-dark); background: var(--accent-soft); }
.js-activity-list { list-style: none; margin: 0; padding: 0 23px 23px; }.js-activity-list li { display: flex; gap: 13px; padding: 15px 0; border-top: 1px solid var(--line); }.js-activity-dot { width: 7px; height: 7px; margin-top: 6px; flex: 0 0 7px; background: var(--accent); border-radius: 50%; }.js-activity-list strong { font-size: 11px; font-weight: 500; display: block; word-break: break-word; }.js-activity-list small { display: block; font-size: 9px; color: var(--subtle); margin-top: 6px; }
.js-empty { padding: 42px 22px; text-align: center; }.js-empty > span { width: 46px; height: 46px; margin: 0 auto 16px; display: grid; place-items: center; border: 1px solid var(--line); background: var(--surface-soft); border-radius: 14px; color: var(--muted); }.js-empty > span svg { width: 22px; height: 22px; }.js-empty h3 { margin: 0 0 7px; font-size: 14px; font-weight: 550; }.js-empty p { color: var(--muted); font-size: 11px; margin: 0 0 20px; }.js-empty-small { padding-top: 30px; }.js-empty-small p { max-width: 205px; margin: 0 auto; line-height: 1.8; }
.js-empty h3 { color: var(--text); }
.aligned .field-password .readonly { flex: 1; min-width: 0; }
.js-password-status-widget { display: flex; align-items: center; justify-content: space-between; gap: 20px; max-width: 650px; min-height: 48px; }
.js-password-status-text { display: grid; gap: 5px; min-width: 0; }
.js-password-status-text strong { color: var(--text); font-size: 13px; font-weight: 550; }
.js-password-status-text span { color: var(--muted); font-size: 11px; line-height: 1.7; }
.js-password-status-widget .js-password-reset { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; margin: 0; white-space: nowrap; }
ul.messagelist li { background-position: 17px 50%; background-size: 16px; padding-left: 45px; }
/* All native admin pages keep their original forms, validation and widgets. */
.module { border: 1px solid var(--line); border-radius: 16px; background: var(--surface); overflow: hidden; margin-bottom: 22px; }.module h2, .module caption, .inline-group h2 { background: var(--surface-soft); color: var(--text); padding: 15px 20px; font-size: 13px; font-weight: 600; border-bottom: 1px solid var(--line); }.module caption a, .module caption a:link, .module caption a:visited { color: var(--text); }
.form-row { padding: 18px 23px; border-bottom: 1px solid var(--line); background: var(--surface); font-size: 13px; }.form-row label { color: var(--muted); font-size: 12px; }.aligned label { width: 170px; }.aligned .help, .aligned div.help { margin-left: 170px; padding-left: 10px; }.help, p.help, form p.help, div.help { color: var(--subtle); font-size: 11px; line-height: 1.8; }.readonly, .form-row p { color: var(--text); }
input[type=text], input[type=password], input[type=email], input[type=number], input[type=url], input[type=search], select, textarea { color: var(--text); background: var(--input-bg); border: 1px solid var(--line); border-radius: 10px; min-height: 38px; padding: 9px 12px; font-size: 12px; }input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, input[type=number]:focus, select:focus, textarea:focus { border-color: var(--focus-border); box-shadow: 0 0 0 3px var(--focus-ring); }input[type=checkbox] { accent-color: var(--accent); }
textarea { width: min(650px, 100%); min-height: 110px; }.vTextField { width: min(420px, calc(100% - 190px)); }.vDateField { min-width: 130px; }.vTimeField { min-width: 110px; }.datetimeshortcuts { padding-left: 8px; color: var(--muted); }.datetime { color: var(--muted); }.calendarbox, .clockbox { background: var(--surface); border-color: var(--line); border-radius: 12px; box-shadow: var(--shadow); }.calendarbox .calendar th, .calendarbox .calendar td, .calendarbox .calendar caption { color: var(--text); background: var(--surface); }.calendarbox h2, .clockbox h2 { background: var(--surface-soft); color: var(--text); }
.aligned input[type=password] { width: min(420px, calc(100% - 190px)); }.form-row textarea { height: 110px; min-height: 88px; resize: vertical; }.datetime { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }.datetime br { display: none; }.datetime .datetimeshortcuts { display: inline-flex; align-items: center; gap: 5px; padding-left: 0; }
.js-form-intro { color: var(--muted); font-size: 12px; margin: 0 0 18px; }html[data-theme="charcoal"] :is(.date-icon, .clock-icon) { filter: grayscale(1) brightness(1.4); }
.submit-row { background: var(--surface); border: 1px solid var(--line); border-radius: 15px; padding: 15px 20px; margin-top: 22px; }.button, input[type=submit], input[type=button], .submit-row input, a.button { border-radius: 10px; min-height: 38px; padding: 10px 17px; font-size: 12px; line-height: 1.4; border: 1px solid transparent; background: var(--accent); color: var(--on-accent); }.button:hover, input[type=submit]:hover, input[type=button]:hover { background: var(--accent-dark); }.button.default, input[type=submit].default, .submit-row input.default { background: var(--accent); color: var(--on-accent); font-weight: 600; }.submit-row input:not(.default) { background: var(--control-bg); color: var(--text); border-color: var(--line); }.submit-row input:not(.default):hover { background: var(--control-hover); }
.object-tools { margin-top: -53px; }.object-tools a:link, .object-tools a:visited { min-height: 36px; display: inline-flex; align-items: center; border-radius: 10px; padding: 8px 15px; background-color: var(--accent); color: var(--on-accent); font-size: 11px; letter-spacing: 0; text-transform: none; }.object-tools a:hover { background-color: var(--accent-dark); }
#toolbar { border-bottom: 1px solid var(--line); background: var(--surface); padding: 18px 20px; }#toolbar input[type=submit] { min-height: 37px; padding: 8px 15px; background: var(--accent); color: var(--on-accent); border: 0; }#toolbar form input[type=text] { min-height: 37px; padding: 8px 12px; border: 1px solid var(--line); background: var(--input-bg); }
#changelist { border-radius: 18px; border-color: var(--line); background: var(--surface); }#changelist .changelist-form-container { min-width: 0; }#changelist .results { min-width: 0; }#changelist table thead th { background: var(--surface-soft); padding: 14px 18px; border-color: var(--line); color: var(--muted); font-size: 11px; text-transform: none; font-weight: 500; }#changelist table thead th.sorted { background: var(--surface-soft); }#changelist tbody td, #changelist tbody th { padding: 16px 18px; border-color: var(--line); color: var(--muted); background: var(--surface); font-size: 12px; vertical-align: middle; }#changelist tbody tr:hover td, #changelist tbody tr:hover th { background: var(--surface-soft); }#changelist tbody th a { color: var(--text); font-weight: 550; }#changelist table tbody tr.selected td, #changelist table tbody tr.selected th { background: var(--accent-soft); }
#changelist-filter { background: var(--surface-soft); border-left: 1px solid var(--line); }#changelist-filter h2 { background: var(--surface-soft); color: var(--text); font-size: 13px; border-bottom: 1px solid var(--line); }#changelist-filter h3 { color: var(--text); font-size: 11px; }#changelist-filter li a { color: var(--muted); font-size: 11px; }#changelist-filter li.selected a { color: var(--accent-dark); }#changelist .actions, #changelist .paginator { background: var(--surface); border-color: var(--line); padding: 13px 20px; color: var(--muted); font-size: 11px; }#changelist .actions select { color: var(--text); background: var(--input-bg); border-color: var(--line); }.paginator a:link, .paginator a:visited { border-radius: 6px; background: var(--surface-soft); color: var(--text); }
ul.messagelist { margin: 20px 32px 0; }ul.messagelist li { border-radius: 12px; border: 1px solid var(--line); padding: 13px 20px 13px 40px; font-size: 12px; color: var(--text); }.errornote, ul.errorlist { color: var(--danger); background: var(--danger-soft); border: 1px solid var(--danger-line); border-radius: 10px; font-size: 12px; }.errornote { padding: 13px 16px; }.errorlist li { padding: 8px 12px; }
/* A complete login composition replaces the default narrow blue box. */
.js-login #container { background: var(--bg); width: 100%; min-height: 100vh; padding: 28px; }.js-login .main { margin: 0; }.js-login #content { padding: 0; width: 100%; }.js-login #footer { display: none; }.js-login-wrap { min-height: calc(100vh - 56px); display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 25px 0; }.js-login-shell { width: min(1030px, 100%); min-height: 600px; display: grid; grid-template-columns: 1.04fr 1fr; border: 1px solid var(--line); border-radius: 28px; background: var(--surface); box-shadow: 0 24px 90px var(--shadow-color); overflow: hidden; }.js-login-story { position: relative; display: flex; flex-direction: column; padding: 43px 43px 32px; background: var(--sidebar-bg); color: var(--sidebar-text); overflow: hidden; }.js-login-story .js-brand { padding: 0; }.js-login-message { margin-top: 56px; z-index: 1; }.js-login-message .js-eyebrow { color: var(--sidebar-subtle); font-size: 9px; }.js-login-message h1 { color: var(--sidebar-text); font-size: 40px; font-weight: 550; letter-spacing: -.035em; line-height: 1.4; margin: 15px 0 17px; }.js-login-message h1 em { color: var(--sidebar-active-icon); font-style: normal; }.js-login-message p { font-size: 12px; color: var(--sidebar-muted); line-height: 1.9; margin: 0; }.js-story-footer { font-size: 10px; letter-spacing: .14em; color: var(--sidebar-subtle); margin-top: auto; padding-top: 178px; }
.js-login-art { position: absolute; width: 250px; height: 210px; bottom: 51px; right: 7px; pointer-events: none; }.js-art-orbit { position: absolute; border: 1px solid var(--sidebar-line); border-radius: 50%; }.orbit-one { width: 270px; height: 170px; top: 44px; left: -13px; transform: rotate(-20deg); }.orbit-two { width: 190px; height: 190px; top: 17px; left: 20px; opacity: .5; }.js-art-card { position: absolute; width: 145px; height: 175px; border: 1px solid var(--sidebar-line); border-radius: 19px; background: var(--sidebar-hover-bg); }.art-back { top: 1px; left: 70px; transform: rotate(14deg); }.art-front { top: 20px; left: 38px; transform: rotate(-10deg); padding: 22px; background: var(--sidebar-active-bg); box-shadow: 0 20px 50px #00000020; }.js-art-icon { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--sidebar-line); border-radius: 13px; color: var(--sidebar-active-icon); }.js-art-icon svg { width: 27px; height: 27px; }.js-art-line { display: block; height: 5px; border-radius: 4px; background: var(--sidebar-muted); opacity: .2; margin-top: 17px; width: 75px; }.js-art-line.line-two { width: 50px; margin-top: 9px; }.js-art-dots { display: flex; gap: 5px; margin-top: 22px; }.js-art-dots i { height: 5px; width: 5px; border-radius: 50%; background: var(--sidebar-active-icon); opacity: .6; }
.js-login-panel { position: relative; padding: 76px 57px 45px; display: flex; flex-direction: column; justify-content: center; }.js-login-theme { position: absolute; top: 24px; right: 26px; }.js-login-heading { margin-bottom: 28px; }.js-login-lock { width: 40px; height: 40px; border-radius: 12px; color: var(--accent-dark); background: var(--accent-soft); display: grid; place-items: center; margin-bottom: 22px; }.js-login-heading h2 { font-size: 27px; font-weight: 600; color: var(--text); margin: 0 0 9px; }.js-login-heading p { color: var(--muted); font-size: 12px; margin: 0; }.js-login-field { margin-bottom: 19px; }.js-login-field label { display: block; font-size: 12px; font-weight: 500; color: var(--muted); margin: 0 0 9px; }.js-login-field input { width: 100%; height: 45px; padding: 11px 13px; border: 1px solid var(--line); background: var(--input-bg); border-radius: 11px; color: var(--text); font-size: 13px; }.js-password-wrap { position: relative; }.js-password-wrap input { padding-right: 61px; }.js-password-wrap button { position: absolute; right: 11px; top: 0; height: 45px; border: 0; background: transparent; color: var(--muted); font-size: 10px; cursor: pointer; }.js-login-submit { width: 100%; min-height: 46px; margin-top: 7px; justify-content: space-between; font-size: 12px; }.js-login-note { display: flex; gap: 7px; align-items: center; margin-top: 28px; padding-top: 21px; border-top: 1px solid var(--line); font-size: 9px; color: var(--subtle); line-height: 1.8; }.js-login-note svg { flex: 0 0 13px; height: 13px; width: 13px; }.js-login-footer { color: var(--subtle); font-size: 10px; margin: 24px 0 0; letter-spacing: .12em; }.js-login-errors { background: var(--danger-soft); border: 1px solid var(--danger-line); color: var(--danger); border-radius: 10px; font-size: 11px; padding: 10px 12px; margin: 0 0 17px; }.js-login-errors ul { list-style: none; margin: 0; padding: 0; }.js-login-field ul.errorlist { list-style: none; margin: 7px 0 0; padding: 0; font-size: 10px; }
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition: none !important; } }
@media (max-width: 1200px) { .js-dashboard-grid { grid-template-columns: minmax(0, 1fr) 265px; }.js-account-table th, .js-account-table td { padding-left: 15px !important; padding-right: 15px !important; }.js-stat { padding: 17px; }.js-stat small { font-size: 9px; } }
@media (max-width: 1000px) { #js-sidebar { width: 194px; }#header, .main, #container > nav, #footer { margin-left: 194px; }#header { padding: 15px 22px; }#content { padding: 24px 22px; }.js-dashboard-grid { grid-template-columns: 1fr; }.js-stats { gap: 10px; }.js-stat { padding: 15px; }.js-user-chip { display: none; }.js-login-panel { padding-left: 38px; padding-right: 38px; }.js-login-story { padding-left: 33px; padding-right: 33px; }.js-login-message h1 { font-size: 34px; } }
@media (max-width: 700px) { #js-sidebar { position: static; width: 100%; padding: 14px 18px; height: auto; }.main { flex-direction: column; }#header, .main, #container > nav, #footer { margin-left: 0; }#header { position: relative; flex-wrap: wrap; gap: 15px; }.js-nav { display: flex; overflow: auto; margin-top: 13px; }.js-nav a { flex: 0 0 auto; font-size: 11px; padding: 8px 11px; min-height: 36px; }.js-nav-label, .js-sidebar-bottom { display: none; }.js-brand strong { font-size: 16px; }.js-brand small { font-size: 9px; }.js-brand-mark { width: 36px; height: 36px; flex-basis: 36px; }.js-top-title strong { font-size: 14px; }#user-tools.js-user-tools { gap: 12px; }.js-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }.js-page-heading { align-items: flex-start; }.js-page-heading h1 { font-size: 23px; }.js-page-heading .js-button { margin-top: 15px; padding: 9px 12px; }.js-panel-heading { padding: 19px; }.js-search { margin-left: 19px; margin-right: 19px; }.js-login-shell { max-width: 470px; grid-template-columns: 1fr; min-height: 0; }.js-login-story { padding: 24px; }.js-login-message { display: none; }.js-login-art, .js-story-footer { display: none; }.js-login-panel { padding: 72px 27px 32px; }.js-login-heading { margin-bottom: 22px; }.js-login #container { padding: 20px; }.js-login-wrap { min-height: calc(100vh - 40px); }.object-tools { float: none; margin: 0 0 15px; padding: 0; }.aligned label { width: 100%; margin-bottom: 8px; }.vTextField { width: 100%; }.aligned .help, .aligned div.help { margin-left: 0; padding-left: 0; }.form-row { padding: 17px; }.submit-row { display: flex; flex-wrap: wrap; gap: 8px; }.submit-row input { flex: 1; }#changelist-filter { border-left: 0; }ul.messagelist { margin: 15px 20px 0; } }
@media (max-width: 700px) { .aligned input[type=password] { width: 100%; } }
@media (max-width: 700px) { .js-password-status-widget { align-items: flex-start; flex-direction: column; gap: 12px; }.js-password-status-widget .js-password-reset { align-self: flex-start; } }

.js-device-panel { margin: 24px 0; }
.js-device-panel .js-panel-heading h2 { border: 0; background: transparent; padding: 0; display: flex; align-items: center; gap: 10px; }
.js-devices-table strong { color: var(--text); font-size: 12px; }
.js-device-remove { color: var(--danger); }
.js-device-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 20px; }
.js-device-heading p { color: var(--muted); margin: 0; font-size: 12px; }
.js-device-heading strong { color: var(--text); }
.js-device-actions { display: flex; align-items: center; gap: 15px; margin: 16px 0 24px; }
.js-device-actions > span { color: var(--muted); font-size: 11px; }
.js-danger-button, .js-danger-button:link, .js-danger-button:visited { color: var(--danger); background: var(--danger-soft); border-color: var(--danger-line); }
.js-danger-button:hover { color: var(--danger); background: var(--danger-soft); border-color: var(--danger); }
.js-unbind-confirm { max-width: 740px; padding: 32px; }
.js-confirm-symbol { width: 42px; height: 42px; display: grid; place-items: center; margin-bottom: 20px; border-radius: 13px; background: var(--accent-soft); color: var(--accent-dark); }
.js-unbind-confirm h2 { color: var(--text); font-size: 21px; margin: 0 0 16px; }
.js-unbind-confirm p { color: var(--muted); font-size: 12px; line-height: 1.9; margin: 10px 0; }
.js-unbind-confirm .js-confirm-quota { color: var(--accent-dark); background: var(--surface-soft); border-radius: 10px; padding: 11px 14px; margin-top: 22px; }
.js-confirm-actions { display: flex; justify-content: flex-end; gap: 10px; padding-top: 23px; }
@media (max-width:700px) { .js-device-heading, .js-device-actions { align-items:flex-start; flex-direction:column; gap:12px; }.js-unbind-confirm { padding:23px; } }
