/* source: login.css */
:root{font-family:"Microsoft YaHei",system-ui,sans-serif;color:#15233c;background:#0b3b92}*{box-sizing:border-box}body{margin:0;min-height:100vh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 15% 10%,#3976f6 0,#174bb7 30%,#082b6c 100%)}.login-shell{display:grid;grid-template-columns:minmax(390px,42%) minmax(600px,58%);width:min(1380px,96vw);min-height:min(780px,92vh);overflow:hidden;background:#fff;border:1px solid #ffffff66;border-radius:28px;box-shadow:0 30px 90px #001b5477}.login-panel{display:flex;flex-direction:column;padding:48px 58px;background:linear-gradient(150deg,#fff 0%,#f3f7ff 100%)}.brand{display:flex;align-items:center;gap:13px}.brand img{width:48px;height:48px;border-radius:13px;box-shadow:0 8px 20px #3976f633}.brand div{display:flex;flex-direction:column}.brand strong{font-size:17px}.brand small{margin-top:4px;color:#7790b5;font-size:9px;letter-spacing:1.4px}.welcome{margin-top:auto}.welcome>span{display:inline-block;padding:5px 9px;color:#3976f6;background:#eaf1ff;border-radius:7px;font-size:11px;font-weight:800}.welcome h1{margin:15px 0 8px;font-size:38px}.welcome p{margin:0;color:#75849c;font-size:14px}form{display:grid;gap:18px;margin:30px 0}label{display:grid;gap:7px;color:#4c5c75;font-size:13px;font-weight:700}select,input{width:100%;height:49px;padding:0 14px;color:#18263d;background:#fff;border:1px solid #d8e1f0;border-radius:11px;font:inherit;outline:0}select:focus,input:focus{border-color:#3976f6;box-shadow:0 0 0 3px #3976f61c}.password-wrap{position:relative}.password-wrap input{padding-right:62px}.password-wrap button{position:absolute;right:8px;top:8px;height:33px;color:#3976f6;background:#edf3ff;border:0;border-radius:7px;cursor:pointer}.login-button{display:flex;align-items:center;justify-content:space-between;height:52px;padding:0 20px;color:#fff;background:linear-gradient(90deg,#3976f6,#1d54d3);border:0;border-radius:11px;font-size:15px;font-weight:800;cursor:pointer;box-shadow:0 10px 24px #3976f63d}.login-button:disabled{opacity:.65;cursor:wait}.error{min-height:18px;margin:-7px 0;color:#d73d32;font-size:12px}.login-note{display:flex;align-items:center;gap:8px;margin-top:auto;color:#8c9ab0;font-size:11px}.login-note i{width:7px;height:7px;background:#21b879;border-radius:50%;box-shadow:0 0 0 4px #21b87919}.hero{position:relative;min-width:0;background:#0d47a5}.hero>img{width:100%;height:100%;object-fit:cover;object-position:center}.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,#062b70cc 100%);pointer-events:none}.hero-copy{position:absolute;left:45px;bottom:38px;z-index:1;display:flex;align-items:end;justify-content:space-between;width:calc(100% - 90px);color:#fff}.hero-copy b{font-size:25px;line-height:1.35}.hero-copy span{font-size:11px;letter-spacing:1px;opacity:.8}@media(max-width:900px){body{padding:0}.login-shell{grid-template-columns:1fr;width:100%;min-height:100vh;border-radius:0}.hero{display:none}.login-panel{padding:32px min(10vw,58px)}.welcome{margin-top:12vh}}


/* source: login-ux.css */
.brand small { font-size: 11px; }
.welcome > span { font-size: 12px; }
.welcome p { font-size: 14.5px; line-height: 1.65; }
.forgot { justify-self: end; margin: -7px 0 -4px; padding: 2px 0; color: #285ed3; background: transparent; border: 0; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.forgot:hover { color: #1746b9; text-decoration: underline; }
.forgot:focus-visible, .login-button:focus-visible, .password-wrap button:focus-visible { outline: 3px solid #8eb0ff; outline-offset: 2px; }
select:focus, input:focus { border-color: #3976f6; box-shadow: 0 0 0 4px #3976f626; }
.error { font-size: 12.5px; line-height: 1.45; }
.login-note { font-size: 12px; }

@media (max-width: 420px) {
  .brand small { font-size: 10px; letter-spacing: .8px; }
  .welcome p { font-size: 13px; }
}


/* source: ui-v15-tokens.css */
/* V1.15 shared UI tokens. Apply .v15-ui or data-ui-version="15" to a page root. */
:where(.v15-ui, [data-ui-version="15"]) {
  --v15-font-family: "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
  --v15-font-caption: 12px;
  --v15-font-body: 14px;
  --v15-font-subtitle: 16px;
  --v15-font-title: 24px;
  --v15-line-height: 1.55;
  --v15-space-1: 4px;
  --v15-space-2: 8px;
  --v15-space-3: 12px;
  --v15-space-4: 16px;
  --v15-space-5: 24px;
  --v15-space-6: 32px;
  --v15-radius-sm: 8px;
  --v15-radius-md: 12px;
  --v15-radius-lg: 16px;
  --v15-control-height: 44px;
  --v15-content-max: 1440px;
  --v15-color-text: #20324a;
  --v15-color-muted: #66768c;
  --v15-color-surface: #ffffff;
  --v15-color-subtle: #f5f7fb;
  --v15-color-border: #dbe3ef;
  --v15-color-primary: #356ff6;
  --v15-color-primary-strong: #245bd8;
  --v15-color-primary-soft: #edf3ff;
  --v15-color-success: #087754;
  --v15-color-success-soft: #e7f7f0;
  --v15-color-warning: #a76507;
  --v15-color-warning-soft: #fff4dc;
  --v15-color-danger: #c83838;
  --v15-color-danger-soft: #fff0f0;
  --v15-shadow-card: 0 4px 14px rgb(23 59 114 / 6%);
  --v15-shadow-dialog: 0 20px 64px rgb(18 36 66 / 24%);
  --v15-focus-ring: 0 0 0 3px rgb(53 111 246 / 26%);
  --v15-motion-fast: 120ms;
  --v15-motion-normal: 180ms;
  --v15-motion-slow: 240ms;
  --v15-safe-top: env(safe-area-inset-top, 0px);
  --v15-safe-bottom: env(safe-area-inset-bottom, 0px);
}


/* source: ui-v15-base.css */
/* V1.15 base rules are opt-in and deliberately avoid legacy selectors. */
:where(.v15-ui, [data-ui-version="15"]) {
  color: var(--v15-color-text);
  font-family: var(--v15-font-family);
  font-size: var(--v15-font-body);
  line-height: var(--v15-line-height);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

:where(.v15-ui, [data-ui-version="15"]) *,
:where(.v15-ui, [data-ui-version="15"]) *::before,
:where(.v15-ui, [data-ui-version="15"]) *::after { box-sizing: border-box; }

:where(.v15-ui, [data-ui-version="15"]) :where(button, input, select, textarea) { font: inherit; }
:where(.v15-ui, [data-ui-version="15"]) :where(button, a, input, select, textarea):focus-visible {
  outline: 0;
  box-shadow: var(--v15-focus-ring);
}
:where(.v15-ui, [data-ui-version="15"]) :where([hidden]) { display: none; }
:where(.v15-ui, [data-ui-version="15"]) :where(img, svg, video, canvas) { max-width: 100%; }

@media (prefers-reduced-motion: reduce) {
  :where(.v15-ui, [data-ui-version="15"]) *,
  :where(.v15-ui, [data-ui-version="15"]) *::before,
  :where(.v15-ui, [data-ui-version="15"]) *::after {
    scroll-behavior: auto;
    transition-duration: 1ms;
    animation-duration: 1ms;
    animation-iteration-count: 1;
  }
}


/* source: ui-v15-components.css */
/* Components require the v15-* class/data hook; no legacy class is restyled globally. */
:where(.v15-ui, [data-ui-version="15"]) .v15-page {
  width: min(100%, var(--v15-content-max));
  margin-inline: auto;
}

:where(.v15-ui, [data-ui-version="15"]) :where(.v15-button, [data-v15-button]) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--v15-control-height);
  gap: var(--v15-space-2);
  padding: 10px var(--v15-space-3);
  border: 1px solid var(--v15-color-border);
  border-radius: var(--v15-radius-sm);
  color: var(--v15-color-text);
  background: var(--v15-color-surface);
  font-weight: 700;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
  transition: color var(--v15-motion-fast), background var(--v15-motion-fast), border-color var(--v15-motion-fast), transform var(--v15-motion-fast);
}
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-button, [data-v15-button]):where(:hover, :focus-visible) { border-color: var(--v15-color-primary); color: var(--v15-color-primary-strong); background: var(--v15-color-primary-soft); }
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-button, [data-v15-button]):active { transform: translateY(1px); }
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-button, [data-v15-button])[data-variant="primary"] { border-color: var(--v15-color-primary); color: #fff; background: var(--v15-color-primary); }
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-button, [data-v15-button])[data-variant="danger"] { border-color: #f0b7b7; color: var(--v15-color-danger); background: var(--v15-color-danger-soft); }
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-button, [data-v15-button]):disabled,
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-button, [data-v15-button])[aria-disabled="true"] { cursor: not-allowed; opacity: .5; transform: none; }

:where(.v15-ui, [data-ui-version="15"]) :where(.v15-field, [data-v15-field]) { display: grid; gap: var(--v15-space-2); min-width: 0; color: var(--v15-color-text); font-weight: 600; }
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-field, [data-v15-field]) :where(input, select, textarea) {
  width: 100%;
  min-height: var(--v15-control-height);
  padding: 10px var(--v15-space-3);
  border: 1px solid var(--v15-color-border);
  border-radius: var(--v15-radius-sm);
  color: var(--v15-color-text);
  background: var(--v15-color-surface);
}
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-field, [data-v15-field]) textarea { min-height: 96px; resize: vertical; }
:where(.v15-ui, [data-ui-version="15"]) .v15-field-help { color: var(--v15-color-muted); font-size: var(--v15-font-caption); font-weight: 400; }

:where(.v15-ui, [data-ui-version="15"]) :where(.v15-status, [data-v15-status]) { display: inline-flex; align-items: center; min-height: 24px; max-width: 100%; padding: 3px 8px; border-radius: 999px; color: #315b9a; background: var(--v15-color-primary-soft); font-size: var(--v15-font-caption); font-weight: 700; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-status, [data-v15-status])[data-tone="success"] { color: var(--v15-color-success); background: var(--v15-color-success-soft); }
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-status, [data-v15-status])[data-tone="warning"] { color: var(--v15-color-warning); background: var(--v15-color-warning-soft); }
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-status, [data-v15-status])[data-tone="danger"] { color: var(--v15-color-danger); background: var(--v15-color-danger-soft); }

:where(.v15-ui, [data-ui-version="15"]) :where(.v15-task-card, [data-v15-task-card]) { display: grid; gap: var(--v15-space-3); min-width: 0; min-height: 156px; padding: var(--v15-space-4); border: 1px solid var(--v15-color-border); border-radius: var(--v15-radius-md); background: var(--v15-color-surface); box-shadow: var(--v15-shadow-card); }
:where(.v15-ui, [data-ui-version="15"]) .v15-task-card__head { display: flex; align-items: flex-start; justify-content: space-between; min-width: 0; gap: var(--v15-space-2); }
:where(.v15-ui, [data-ui-version="15"]) .v15-task-card__title { display: -webkit-box; min-width: 0; margin: 0; overflow: hidden; color: var(--v15-color-text); font-size: var(--v15-font-subtitle); line-height: 1.4; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
:where(.v15-ui, [data-ui-version="15"]) .v15-task-card__meta { display: flex; flex-wrap: wrap; gap: var(--v15-space-2); max-height: 48px; overflow: hidden; color: var(--v15-color-muted); font-size: var(--v15-font-caption); }
:where(.v15-ui, [data-ui-version="15"]) .v15-task-card__footer { display: flex; align-items: center; justify-content: space-between; gap: var(--v15-space-2); margin-top: auto; }

:where(.v15-ui, [data-ui-version="15"]) :where(.v15-pagination, [data-v15-pagination]) { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: var(--v15-space-2); color: var(--v15-color-muted); font-size: var(--v15-font-caption); }
:where(.v15-ui, [data-ui-version="15"]) :where(.v15-pagination, [data-v15-pagination]) :where(button, select, input) { min-height: 36px; padding: 6px 10px; border: 1px solid var(--v15-color-border); border-radius: var(--v15-radius-sm); background: var(--v15-color-surface); color: var(--v15-color-text); }

:where(.v15-ui, [data-ui-version="15"]) :where(dialog.v15-dialog, dialog[data-v15-dialog]) { width: min(720px, calc(100vw - 32px)); max-height: min(800px, calc(100dvh - 32px)); margin: auto; padding: 0; border: 0; border-radius: var(--v15-radius-lg); color: var(--v15-color-text); background: var(--v15-color-surface); box-shadow: var(--v15-shadow-dialog); overflow: hidden; }
:where(.v15-ui, [data-ui-version="15"]) :where(dialog.v15-dialog, dialog[data-v15-dialog])::backdrop { background: rgb(17 34 62 / 52%); }
:where(.v15-ui, [data-ui-version="15"]) .v15-dialog__body { max-height: inherit; overflow: auto; overscroll-behavior: contain; padding: var(--v15-space-5); }
:where(.v15-ui, [data-ui-version="15"]) .v15-dialog__head { position: sticky; top: 0; z-index: 1; display: flex; align-items: flex-start; justify-content: space-between; gap: var(--v15-space-3); margin: calc(var(--v15-space-5) * -1) calc(var(--v15-space-5) * -1) var(--v15-space-4); padding: var(--v15-space-4) var(--v15-space-5); border-bottom: 1px solid var(--v15-color-border); background: var(--v15-color-surface); }
:where(.v15-ui, [data-ui-version="15"]) .v15-dialog__actions { position: sticky; bottom: 0; z-index: 1; display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--v15-space-2); margin: var(--v15-space-5) calc(var(--v15-space-5) * -1) calc(var(--v15-space-5) * -1); padding: var(--v15-space-3) var(--v15-space-5) calc(var(--v15-space-3) + var(--v15-safe-bottom)); border-top: 1px solid var(--v15-color-border); background: var(--v15-color-surface); }


/* source: ui-v15-mobile.css */
/* Mobile overrides for the explicit V1.15 hooks. */
@media (max-width: 768px) {
  :where(.v15-ui, [data-ui-version="15"]) { padding-bottom: var(--v15-safe-bottom); }
  :where(.v15-ui, [data-ui-version="15"]) .v15-page { min-width: 0; }
  :where(.v15-ui, [data-ui-version="15"]) .v15-task-card { min-height: 140px; padding: var(--v15-space-3); }
  :where(.v15-ui, [data-ui-version="15"]) :where(.v15-pagination, [data-v15-pagination]) { justify-content: center; }
  :where(.v15-ui, [data-ui-version="15"]) :where(.v15-pagination, [data-v15-pagination]) [data-v15-page-summary] { flex: 1 0 100%; text-align: center; }
  :where(.v15-ui, [data-ui-version="15"]) :where(dialog.v15-dialog, dialog[data-v15-dialog])[data-dialog-kind="form"] { width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; border-radius: 0; }
  :where(.v15-ui, [data-ui-version="15"]) :where(dialog.v15-dialog, dialog[data-v15-dialog])[data-dialog-kind="sheet"] { width: 100%; max-width: none; max-height: min(82dvh, 720px); margin: auto 0 0; border-radius: var(--v15-radius-lg) var(--v15-radius-lg) 0 0; }
  :where(.v15-ui, [data-ui-version="15"]) .v15-dialog__body { padding: var(--v15-space-4); padding-top: calc(var(--v15-space-4) + var(--v15-safe-top)); }
  :where(.v15-ui, [data-ui-version="15"]) .v15-dialog__head { margin: calc(var(--v15-space-4) * -1) calc(var(--v15-space-4) * -1) var(--v15-space-3); padding: var(--v15-space-3) var(--v15-space-4); }
  :where(.v15-ui, [data-ui-version="15"]) .v15-dialog__actions { margin: var(--v15-space-4) calc(var(--v15-space-4) * -1) calc(var(--v15-space-4) * -1); padding-inline: var(--v15-space-4); }
  :where(.v15-ui, [data-ui-version="15"]) .v15-dialog__actions > :where(button, a) { flex: 1 1 132px; }
}

@media (max-width: 420px) {
  :where(.v15-ui, [data-ui-version="15"]) :where(.v15-pagination, [data-v15-pagination]) > :where(button, select, label) { flex: 1 1 calc(50% - var(--v15-space-2)); }
}


/* source: ui-v15-legacy-bridge.css */
/*
 * V1.15 opt-in compatibility bridge for legacy markup.
 * Load after the legacy page CSS and opt in at the page root with .v15-ui.
 * This file changes presentation only: no display:none overflow masking, fixed card heights,
 * or selectors coupled to API, upload, or permission state.
 */

.v15-ui :is(p, li, td, th, label, .sub, .muted, .meta, .legend, .field-help, .detail-copy) {
  font-size: max(14px, 1em);
  line-height: 1.55;
}

.v15-ui :is(small, .eyebrow, .caption, .hint, .helper, .field-help, .task-code, .workflow-code, .campaign-code, .store-code, .order-foot, .detail-metric span, .timeline-item time) {
  font-size: 12px;
  line-height: 1.45;
}

.v15-ui :is(button, .primary, .secondary, .ghost, .btn, .action-button, .quick button, .actions a, .header-actions a, .head-actions a):not(.icon):not(.close):not(.modal-close):not(.sheet-close):not(.icon-btn):not(.text-button):not(.text-btn) {
  min-height: 44px;
}

.v15-ui :is(input, select, textarea):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]) {
  min-height: 44px;
  font-size: max(14px, 1em);
}

.v15-ui :is(.actions, .modal-actions, .detail-actions, .feedback-actions, .notification-actions, .global-notice-actions, .head-actions, .header-actions) {
  flex-wrap: wrap;
  row-gap: 8px;
}

.v15-ui :is(.task, .order, .workflow-card, .campaign-card, .store-card, .feedback-card, .pulse-card, .module-card, .project-item, .month-card, .channel-card, .mobile-order) {
  min-width: 0;
}

.v15-ui :is(.task, .order, .workflow-card, .campaign-card, .store-card, .feedback-card, .pulse-card, .module-card, .project-item, .month-card, .channel-card, .mobile-order) :is(h2, h3, h4, .title, .task-title, .order-title) {
  overflow-wrap: anywhere;
}

.v15-ui :is(.task .title, .order h3, .workflow-card h3, .campaign-card h3, .store-card h3, .feedback-card h3, .pulse-title strong, .project-item h3, .mobile-order h3) {
  display: -webkit-box;
  overflow: hidden;
  text-overflow: ellipsis;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
}

.v15-ui :is(.pagination, .list-pagination, .video-pagination) {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
}

.v15-ui :is(.pagination, .list-pagination, .video-pagination) :is(button, select, input) {
  min-height: 40px;
}

.v15-ui :is(.toast, .global-notice-button, .global-feedback-button, .notification-button, .feedback-launch) {
  max-width: min(320px, calc(100vw - 24px));
}

.v15-ui .global-notice-button,
.v15-ui .notification-button {
  right: max(12px, var(--v15-safe-right, env(safe-area-inset-right, 0px)));
  bottom: calc(12px + env(safe-area-inset-bottom, 0px));
}

.v15-ui .global-feedback-button,
.v15-ui .feedback-launch {
  right: max(12px, var(--v15-safe-right, env(safe-area-inset-right, 0px)));
  bottom: calc(64px + env(safe-area-inset-bottom, 0px));
}

.v15-ui :is(.toast, .global-notice-button, .global-feedback-button, .notification-button, .feedback-launch) {
  z-index: 45;
}

.v15-ui dialog {
  width: min(920px, calc(100vw - 24px));
  max-width: calc(100vw - 24px);
  max-height: calc(100dvh - 24px);
}

.v15-ui dialog :is(form, .dialog-shell, .workflow-form, .workflow-detail-shell, .global-notice-shell, .global-feedback-shell) {
  min-width: 0;
}

.v15-ui dialog :is(.dialog-head, .modal-head, .sheet-head, .detail-top) {
  gap: 12px;
}

@media (max-width: 768px) {
  .v15-ui :is(main, .workflow-main, .campaign-main, .commerce-main, .page-shell, .mobile-main) {
    min-width: 0;
    padding-bottom: calc(24px + env(safe-area-inset-bottom, 0px));
  }

  .v15-ui :is(.toolbar, .workflow-toolbar, .campaign-toolbar, .video-toolbar, .feedback-toolbar, .head-actions, .header-actions, .commerce-user, .schedule-toolbar) {
    min-width: 0;
    gap: 8px;
  }

  .v15-ui :is(.toolbar, .workflow-toolbar, .campaign-toolbar, .video-toolbar, .feedback-toolbar) :is(input, select, button) {
    min-width: 0;
  }

  .v15-ui :is(main > header, .workflow-header, .commerce-header, .app-header) {
    align-items: stretch;
    flex-wrap: wrap;
    gap: 12px;
  }

  .v15-ui :is(.head-actions, .header-actions, .commerce-user) {
    width: 100%;
    min-width: 0;
  }

  .v15-ui :is(.head-actions, .header-actions, .commerce-user, .actions, .modal-actions, .detail-actions, .feedback-actions, .notification-actions, .global-notice-actions) > :is(button, a) {
    min-width: 0;
  }

  .v15-ui aside > nav,
  .v15-ui aside .nav-list,
  .v15-ui aside .module-list {
    min-width: 0;
  }

  .v15-ui :is(.task-list, .workflow-board, .campaign-list, .feedback-list, .annual-board, .channel-summaries, .orders, .module-grid, .pulse-grid) > * {
    min-width: 0;
  }

  .v15-ui dialog {
    width: calc(100vw - 16px);
    max-width: calc(100vw - 16px);
    max-height: calc(100dvh - 16px);
  }

  .v15-ui dialog :is(form, .dialog-shell, .workflow-form, .workflow-detail-shell, .global-notice-shell, .global-feedback-shell) {
    max-width: 100%;
    padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  }

  .v15-ui dialog :is(.actions, .modal-actions, .detail-actions, .feedback-actions, .notification-actions, .global-notice-actions) {
    padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
  }
}

@media (max-width: 420px) {
  .v15-ui :is(.pagination, .list-pagination, .video-pagination) {
    justify-content: center;
  }

  .v15-ui :is(.pagination, .list-pagination, .video-pagination) :is(button, label, select) {
    flex: 1 1 calc(50% - 4px);
  }
}


/* source: ui-v15-portals.css */
/* V1.15 portal and login-shell migration. Scoped to pages opted into .v15-ui. */
body.v15-ui {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body.v15-ui .portal-brand span,
body.v15-ui .service-copy span {
  font-size: 12px;
}

body.v15-ui button,
body.v15-ui input {
  font: inherit;
}

body.v15-ui .portal-head {
  padding-top: env(safe-area-inset-top);
}

body.v15-ui .portal-head-inner,
body.v15-ui main {
  width: min(1080px, calc(100% - 32px));
}

body.v15-ui .portal-head-inner {
  min-height: 72px;
}

body.v15-ui .service-card button,
body.v15-ui .login-form input,
body.v15-ui .login-form .submit-main,
body.v15-ui .login-button,
body.v15-ui .password-wrap button,
body.v15-ui .mini-button,
body.v15-ui .portal-back-link {
  min-height: 44px;
}

body.v15-ui :is(.portal-guide b, .service-copy > span) {
  font-size: 12px;
}

body.v15-ui .service-card button,
body.v15-ui .login-form .submit-main,
body.v15-ui .login-button {
  touch-action: manipulation;
}

body.v15-ui.login-page {
  min-height: 100dvh;
  padding: max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));
}

body.v15-ui .login-card {
  width: min(420px, 100%);
}

body.v15-ui .login-brand span,
body.v15-ui .login-title > span,
body.v15-ui .login-help,
body.v15-ui .form-error,
body.v15-ui .login-form label {
  font-size: max(12px, 0.75rem);
}

body.v15-ui .login-title p {
  font-size: 14px;
  line-height: 1.6;
}

body.v15-ui .login-form {
  gap: 14px;
}

body.v15-ui .login-form input {
  padding: 12px;
}

body.v15-ui .login-form .mini-button {
  justify-self: start;
  min-height: 40px;
}

body.v15-ui .portal-back-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  margin: -8px 0 12px;
}

body.v15-ui:not(.login-page) .login-shell {
  min-height: min(780px, 92dvh);
}

body.v15-ui:not(.login-page) .login-panel {
  padding-bottom: max(48px, env(safe-area-inset-bottom));
}

@media (max-width: 520px) {
  body.v15-ui .portal-head-inner,
  body.v15-ui main {
    width: calc(100% - 24px);
  }

  body.v15-ui .portal-head-inner {
    min-height: 64px;
  }

  body.v15-ui .portal-guide {
    display: none;
  }

  body.v15-ui .portal-hero {
    margin-top: 14px;
  }

  body.v15-ui .service-card {
    min-height: 0;
    padding: 17px;
  }

  body.v15-ui .service-card ul {
    display: none;
  }

  body.v15-ui .service-copy {
    margin-top: 12px;
  }

  body.v15-ui .service-copy p {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  body.v15-ui .service-card button {
    margin-top: 16px;
  }

  body.v15-ui .login-page {
    place-items: start center;
    padding: max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom));
  }

  body.v15-ui .login-card {
    margin: auto 0;
    padding: 20px 18px;
    border-radius: 16px;
  }

  body.v15-ui .login-title {
    margin: 24px 0 18px;
  }

  body.v15-ui .login-title h1 {
    font-size: 26px;
  }

  body.v15-ui:not(.login-page) .login-panel {
    padding: max(24px, env(safe-area-inset-top)) 22px max(24px, env(safe-area-inset-bottom));
  }

  body.v15-ui:not(.login-page) .welcome {
    margin-top: 10vh;
  }

  body.v15-ui:not(.login-page) .hero {
    display: none;
  }
}

@media (max-width: 380px) {
  body.v15-ui .session-status {
    display: none;
  }

  body.v15-ui .portal-hero h1 {
    font-size: 24px;
  }

  body.v15-ui .login-card {
    padding: 18px 16px;
  }
}

@media (min-width: 900px) {
  body.v15-ui.login-page .login-card {
    margin: auto;
  }
}


/* source: ui-v16-layout-preserve.css */
/* V1.16.1 layout-only preservation after reverting the V1.16 brand colors. */
@media (max-width: 800px) {
  body.v15-ui > aside nav {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }

  body.v15-ui > aside nav::-webkit-scrollbar {
    display: none;
  }

  body.v15-ui > aside :is(.nav, .module-link) {
    flex: 0 0 auto;
    width: auto;
    min-width: max-content;
    white-space: nowrap;
    word-break: keep-all;
  }

  body.v15-ui :is(.global-feedback-button, .global-notice-button) {
    min-width: 48px;
    min-height: 44px;
    font-size: 13px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.v15-ui *,
  body.v15-ui *::before,
  body.v15-ui *::after {
    scroll-behavior: auto;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

