/* ==========================================================================
 * PMT 设计令牌 (Design Tokens)
 * --------------------------------------------------------------------------
 * 1:1 对标 ZenTaoPMS v22.6 ZUI3 (www/js/zui3/zui.zentao.css :root)
 * 所有命名、取值、RGB 伴生变量均与禅道保持一致，任何修改都会造成视觉偏差。
 * 详见 docs/05-UI还原规范.md
 * ========================================================================== */

@font-face {
    font-family: "Figtree";
    font-weight: 400;
    font-style: normal;
    font-display: fallback;
    src: url("fonts/Figtree-Regular.ttf") format("truetype");
}
@font-face {
    font-family: "Figtree";
    font-weight: 700;
    font-style: normal;
    font-display: fallback;
    src: url("fonts/Figtree-Bold.ttf") format("truetype");
}
@font-face {
    font-family: "Figtree";
    font-weight: 300;
    font-style: normal;
    font-display: fallback;
    src: url("fonts/Figtree-Light.ttf") format("truetype");
}

@font-face {
    font-family: "D-DIN-PRO";
    font-weight: 400;
    font-style: normal;
    font-display: fallback;
    src: url("fonts/D-DIN-PRO-400-Regular.otf") format("opentype");
}
@font-face {
    font-family: "D-DIN-PRO";
    font-weight: 700;
    font-style: normal;
    font-display: fallback;
    src: url("fonts/D-DIN-PRO-700-Bold.otf") format("opentype");
}

:root {
    /* ---------------- 断点 ---------------- */
    --screen-sm: 640px;
    --screen-md: 768px;
    --screen-lg: 1024px;
    --screen-xl: 1280px;
    --screen-2xl: 1720px;

    /* ---------------- 中性色 gray ---------------- */
    --color-gray-50: #fcfdfe;
    --color-gray-100: #eff1f3;
    --color-gray-200: #ebedf3;
    --color-gray-300: #d2d6e5;
    --color-gray-400: #b2b9c5;
    --color-gray-500: #64758b;
    --color-gray-600: #4a577f;
    --color-gray-700: #3d4667;
    --color-gray-800: #353d57;
    --color-gray-900: #30394a;
    --color-gray-950: #0b0f18;
    --color-gray-50-rgb: 252,253,254;
    --color-gray-100-rgb: 239,241,243;
    --color-gray-200-rgb: 235,237,243;
    --color-gray-300-rgb: 210,214,229;
    --color-gray-400-rgb: 178,185,197;
    --color-gray-500-rgb: 100,117,139;
    --color-gray-600-rgb: 74,87,127;
    --color-gray-700-rgb: 61,70,103;
    --color-gray-800-rgb: 53,61,87;
    --color-gray-900-rgb: 48,57,74;
    --color-gray-950-rgb: 11,15,24;

    /* ---------------- 主色 primary ---------------- */
    --color-primary-50: #eef6ff;
    --color-primary-100: #d9eaff;
    --color-primary-200: #bcdcff;
    --color-primary-300: #8ec6ff;
    --color-primary-400: #59a5ff;
    --color-primary-500: #3883fa;
    --color-primary-600: #2b67e5;
    --color-primary-700: #144ce1;
    --color-primary-800: #173db6;
    --color-primary-900: #19388f;
    --color-primary-950: #142457;
    /* 实心主色：用于「主色底 + 白字/白图标」的场景。
       primary-500 与白色对比度仅 2.9~4.5:1（green 2.89、default 3.62），
       不满足 WCAG AA 4.5:1，浅底白字会发虚看不清；故实心面统一降到 600/700。 */
    --color-primary-solid: var(--color-primary-600);
    --color-primary-solid-hover: var(--color-primary-700);
    --color-primary-50-rgb: 238,246,255;
    --color-primary-100-rgb: 217,234,255;
    --color-primary-200-rgb: 188,220,255;
    --color-primary-300-rgb: 142,198,255;
    --color-primary-400-rgb: 89,165,255;
    --color-primary-500-rgb: 56,131,250;
    --color-primary-600-rgb: 43,103,229;
    --color-primary-700-rgb: 20,76,225;
    --color-primary-800-rgb: 23,61,182;
    --color-primary-900-rgb: 25,56,143;
    --color-primary-950-rgb: 20,36,87;

    /* ---------------- 辅色 secondary ---------------- */
    --color-secondary-50: #e7f6ff;
    --color-secondary-100: #cdecff;
    --color-secondary-200: #9bd9ff;
    --color-secondary-300: #77cbff;
    --color-secondary-400: #60c2ff;
    --color-secondary-500: #37b2fe;
    --color-secondary-600: #18a6fd;
    --color-secondary-700: #1099ed;
    --color-secondary-800: #078ada;
    --color-secondary-900: #046bab;
    --color-secondary-950: #062a4b;
    --color-secondary-50-rgb: 231,246,255;
    --color-secondary-100-rgb: 205,236,255;
    --color-secondary-200-rgb: 155,217,255;
    --color-secondary-300-rgb: 119,203,255;
    --color-secondary-400-rgb: 96,194,255;
    --color-secondary-500-rgb: 55,178,254;
    --color-secondary-600-rgb: 24,166,253;
    --color-secondary-700-rgb: 16,153,237;
    --color-secondary-800-rgb: 7,138,218;
    --color-secondary-900-rgb: 4,107,171;
    --color-secondary-950-rgb: 6,42,75;

    /* ---------------- 成功 success ---------------- */
    --color-success-50: #effaf6;
    --color-success-100: #d6f2e7;
    --color-success-200: #ade5ce;
    --color-success-300: #83d7b6;
    --color-success-400: #5aca9d;
    --color-success-500: #31bd85;
    --color-success-600: #2ba675;
    --color-success-700: #28996c;
    --color-success-800: #21805a;
    --color-success-900: #185e3b;
    --color-success-950: #0e3421;
    --color-success-50-rgb: 239,250,246;
    --color-success-100-rgb: 214,242,231;
    --color-success-200-rgb: 173,229,206;
    --color-success-300-rgb: 131,215,182;
    --color-success-400-rgb: 90,202,157;
    --color-success-500-rgb: 49,189,133;
    --color-success-600-rgb: 43,166,117;
    --color-success-700-rgb: 40,153,108;
    --color-success-800-rgb: 33,128,90;
    --color-success-900-rgb: 24,94,59;
    --color-success-950-rgb: 14,52,33;

    /* ---------------- 警告 warning ---------------- */
    --color-warning-50: #fff4ea;
    --color-warning-100: #ffecdb;
    --color-warning-200: #ffd2a9;
    --color-warning-300: #ffbc7e;
    --color-warning-400: #ffaf65;
    --color-warning-500: #ff9f46;
    --color-warning-600: #f38f19;
    --color-warning-700: #ed8307;
    --color-warning-800: #d17100;
    --color-warning-900: #af5f01;
    --color-warning-950: #441506;
    --color-warning-50-rgb: 255,244,234;
    --color-warning-100-rgb: 255,236,219;
    --color-warning-200-rgb: 255,210,169;
    --color-warning-300-rgb: 255,188,126;
    --color-warning-400-rgb: 255,175,101;
    --color-warning-500-rgb: 255,159,70;
    --color-warning-600-rgb: 243,143,25;
    --color-warning-700-rgb: 237,131,7;
    --color-warning-800-rgb: 209,113,0;
    --color-warning-900-rgb: 175,95,1;
    --color-warning-950-rgb: 68,21,6;

    /* ---------------- 危险 danger ---------------- */
    --color-danger-50: #ffebeb;
    --color-danger-100: #ffd5d5;
    --color-danger-200: #ffb1b1;
    --color-danger-300: #ff9292;
    --color-danger-400: #ff7c7c;
    --color-danger-500: #fc5959;
    --color-danger-600: #fb2b2b;
    --color-danger-700: #d91b1b;
    --color-danger-800: #ba1313;
    --color-danger-900: #a20606;
    --color-danger-950: #470808;
    --color-danger-50-rgb: 255,235,235;
    --color-danger-100-rgb: 255,213,213;
    --color-danger-200-rgb: 255,177,177;
    --color-danger-300-rgb: 255,146,146;
    --color-danger-400-rgb: 255,124,124;
    --color-danger-500-rgb: 252,89,89;
    --color-danger-600-rgb: 251,43,43;
    --color-danger-700-rgb: 217,27,27;
    --color-danger-800-rgb: 186,19,19;
    --color-danger-900-rgb: 162,6,6;
    --color-danger-950-rgb: 71,8,8;

    /* ---------------- 强调 important ---------------- */
    --color-important-50: #fff8f5;
    --color-important-100: #ffe2d9;
    --color-important-200: #ffcebf;
    --color-important-300: #ffb29b;
    --color-important-400: #ff8c68;
    --color-important-500: #ff8058;
    --color-important-600: #ff6f42;
    --color-important-700: #ff4912;
    --color-important-800: #c83509;
    --color-important-900: #611700;
    --color-important-950: #440609;
    --color-important-50-rgb: 255,248,245;
    --color-important-100-rgb: 255,226,217;
    --color-important-200-rgb: 255,206,191;
    --color-important-300-rgb: 255,178,155;
    --color-important-400-rgb: 255,140,104;
    --color-important-500-rgb: 255,128,88;
    --color-important-600-rgb: 255,111,66;
    --color-important-700-rgb: 255,73,18;
    --color-important-800-rgb: 200,53,9;
    --color-important-900-rgb: 97,23,0;
    --color-important-950-rgb: 68,6,9;

    /* ---------------- 特殊 special（紫） ---------------- */
    --color-special-50: #efecfa;
    --color-special-100: #e4dff7;
    --color-special-200: #c4b6ff;
    --color-special-300: #a38cff;
    --color-special-400: #8a6ff5;
    --color-special-500: #8166ee;
    --color-special-600: #7055df;
    --color-special-700: #513baa;
    --color-special-800: #452da5;
    --color-special-900: #30216e;
    --color-special-950: #271560;
    --color-special-50-rgb: 239,236,250;
    --color-special-100-rgb: 228,223,247;
    --color-special-200-rgb: 196,182,255;
    --color-special-300-rgb: 163,140,255;
    --color-special-400-rgb: 138,111,245;
    --color-special-500-rgb: 129,102,238;
    --color-special-600-rgb: 112,85,223;
    --color-special-700-rgb: 81,59,170;
    --color-special-800-rgb: 69,45,165;
    --color-special-900-rgb: 48,33,110;
    --color-special-950-rgb: 39,21,96;

    /* ---------------- 语义色 ---------------- */
    --color-inherit: inherit;
    --color-transparent: transparent;
    --color-current: currentColor;
    --color-black: #000;
    --color-white: #fff;
    --color-canvas: #fff;
    --color-canvas-light: #fff;
    --color-canvas-dark: #fcfdfe;
    --color-inverse: #000;
    --color-surface: #eff1f3;
    --color-surface-light: #fcfdfe;
    --color-surface-strong: #ebedf3;
    --color-fore: #30394a;
    --color-fore-in-light: #30394a;
    --color-fore-in-dark: #fff;
    --color-focus: #bcdcff;
    --color-link: #2b47a2;
    --color-link-hover: #144ce1;
    --color-link-visited: #6328a4;
    --color-link-active: #144ce1;
    --color-placeholder: #64758b;
    --color-border: #ebedf3;
    --color-border-strong: #d2d6e5;
    --color-border-light: #eff1f3;
    --color-black-rgb: 0,0,0;
    --color-white-rgb: 255,255,255;
    --color-canvas-rgb: 255,255,255;
    --color-canvas-light-rgb: 255,255,255;
    --color-canvas-dark-rgb: 252,253,254;
    --color-inverse-rgb: 0,0,0;
    --color-surface-rgb: 239,241,243;
    --color-surface-light-rgb: 252,253,254;
    --color-surface-strong-rgb: 235,237,243;
    --color-fore-rgb: 48,57,74;
    --color-fore-in-light-rgb: 48,57,74;
    --color-fore-in-dark-rgb: 255,255,255;
    --color-focus-rgb: 188,220,255;
    --color-link-rgb: 43,71,162;
    --color-link-hover-rgb: 20,76,225;
    --color-link-visited-rgb: 99,40,164;
    --color-link-active-rgb: 20,76,225;
    --color-placeholder-rgb: 100,117,139;
    --color-border-rgb: 235,237,243;
    --color-border-strong-rgb: 210,214,229;
    --color-border-light-rgb: 239,241,243;

    /* ---------------- 圆角 ---------------- */
    --radius-none: 0;
    --radius-sm: .0625rem;
    --radius: .125rem;
    --radius-md: .25rem;
    --radius-lg: .375rem;
    --radius-xl: .5rem;
    --radius-2xl: .75rem;
    --radius-3xl: 1rem;
    --radius-full: 9999px;

    /* ---------------- 阴影 ---------------- */
    --shadow-sm: 0 1px 2px 0 rgba(0,0,0,.04), 0 0 2px -1px rgba(0,0,0,.01);
    --shadow: 0 3px 8px 0 rgba(0,0,0,.04), 0 1px 2px -1px rgba(0,0,0,.01);
    --shadow-md: 0 2px 6px -1px rgba(0,0,0,.2), 0 1px 4px -2px rgba(0,0,0,.15);
    --shadow-lg: 0 5px 15px -3px rgba(0,0,0,.2), 0 2px 6px -4px rgba(0,0,0,.15);
    --shadow-xl: 0 10px 25px -5px rgba(0,0,0,.2), 0 4px 10px -6px rgba(0,0,0,.15);
    --shadow-2xl: 0 10px 50px -10px rgba(0,0,0,.4), 0 8px 20px -10px rgba(0,0,0,.3);
    --shadow-inner: inset 0 2px 4px 0 rgba(0,0,0,.05);
    --shadow-none: none;

    /* ---------------- 间距与字体 ---------------- */
    --space: .25rem;
    --font-size-article: .875rem;
    --font-size-root: 16px;
    --font-size-page-lineHeight: 1.5384615385;
    --font-h1-size: 2.25rem;
    --article-p-space: .5em;
    --article-heading-space: .5em;
    --article-hr-space: 1.5em;
    --article-cell-padding: .25rem .75rem;
    --font-monospace: "Monaco", "SF Mono", "Source Code Pro", "Consolas", monospace;
    --font-family-sans: "Figtree", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
        "Helvetica Neue", "PingFang SC", "Noto Sans CJK SC", "Source Han Sans SC",
        "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;

    /* ---------------- 状态 ---------------- */
    --state-color: rgba(0,0,0,.05);
    --state-scale: .9;
    --state-active-opacity: 0;
    --state-focus-opacity: 0;
    --opacity-disabled: .7;
    --opacity-muted: .5;
    --load-indicator-duration: 300ms;
    --load-indicator-delay: .5s;
    --caret-opacity: .5;

    /* ---------------- 组件：Alert ---------------- */
    --alert-bg: var(--color-surface);

    /* ---------------- 组件：Breadcrumb ---------------- */
    --breadcrumb-divider: "/";
    --breadcrumb-divider-color: var(--color-gray-500);
    --breadcrumb-color-active: var(--color-gray-500);

    /* ---------------- 组件：Button ---------------- */
    --btn-radius: var(--radius);
    --btn-bg: var(--color-surface);
    --btn-border-color: var(--color-gray-300);
    --btn-height: 2rem;

    /* ---------------- 组件：Checkbox ---------------- */
    --checkbox-size: 12px;
    --checkbox-color: var(--color-primary-500);

    /* ---------------- 组件：Toggle ---------------- */
    --toggle-icon-size: calc(var(--font-size-root) * 3 / 4 + 1px);

    /* ---------------- 组件：Form ---------------- */
    --form-control-radius: var(--radius);
    --form-control-border: var(--color-border-strong);
    --form-control-focus: var(--color-primary-500);
    --form-control-disabled: var(--color-surface);
    --form-control-readonly: var(--color-surface);
    --input-group-addon-bg: var(--color-gray-50);
    --form-tip-color: var(--color-gray-400);
    --form-label-color: var(--color-gray-700);
    --form-horz-label-width: 6rem;
    --form-grid-gap-x: 1.25rem;
    --form-grid-gap-y: .75rem;
    --input-control-fix-width-sm: 2rem;
    --input-control-fix-width: 4.375rem;
    --input-control-fix-width-lg: 6.75rem;

    /* ---------------- 组件：Menu ---------------- */
    --menu-bg: var(--color-canvas);
    --menu-active-bg: var(--color-primary-500);
    --menu-active-color: var(--color-canvas);
    --menu-selected-bg: var(--color-primary-50);
    --menu-selected-color: var(--color-primary-500);
    --menu-icon-opacity: .5;
    --menu-icon-margin: 1.75rem;
    --menu-min-width: 3rem;
    --menu-heading-color: var(--color-gray-500);

    /* ---------------- 组件：Progress ---------------- */
    --progress-radius: var(--radius);
    --progress-striped-size: 40px;
    --progress-bg: var(--color-surface);
    --progress-bar-color: var(--color-primary-500);

    /* ---------------- 组件：Scrollbar ---------------- */
    --scrollbar-size: 10px;
    --scrollbar-opacity: .6;
    --scrollbar-bg: rgba(var(--color-inverse-rgb), .15);
    --scrollbar-inset: inset 0 0 0 1px rgba(var(--color-inverse-rgb), .05);
    --scrollbar-bar-bg: rgba(var(--color-inverse-rgb), .3);
    --scrollbar-hover-bg: rgba(var(--color-inverse-rgb), .4);
    --scrollbar-drag-bg: rgba(var(--color-inverse-rgb), .5);
    --scrollbar-radius: var(--radius-sm);
    --scrollbar-duration: .7s;

    /* ---------------- 组件：Avatar ---------------- */
    --avatar-radius: 12.5%;
    --avatar-bg: var(--color-gray-200);

    /* ---------------- 组件：Tooltip ---------------- */
    --tooltip-bg: var(--skin-color, var(--color-inverse));
    --tooltip-text: var(--skin-text, var(--color-canvas));
    --tooltip-arrow: 6px;
    --tooltip-delay: .5s;

    /* ---------------- 组件：Modal ---------------- */
    --modal-radius: var(--radius);
    --modal-bg: rgba(var(--color-inverse-rgb), .4);
    --modal-sm: 37.5rem;
    --modal-base: 50rem;
    --modal-lg: 75rem;
    --modal-xl: 90rem;

    /* ---------------- 组件：Nav ---------------- */
    --nav-radius: var(--radius);
    --nav-active-color: var(--color-primary-500);
    --nav-active-bg: var(--color-inherit);
    --nav-heading-color: var(--color-gray-500);
    --nav-gap: .25rem;
    --nav-item-color: inherit;
    --nav-item-bg: transparent;
    --nav-item-padding: 1rem;
    --nav-item-height: 2rem;
    --nav-item-gap: .75rem;
    --nav-divider-height: calc(var(--nav-item-height) / 2);
    --nav-divider-margin: .5rem;

    /* ---------------- 组件：Panel ---------------- */
    --panel-heading-bg: transparent;
    --panel-footer-bg: transparent;
    --zt-panel-form-max-width: 1000px;

    /* ---------------- 组件：Label ---------------- */
    --label-bg: var(--color-gray-100);
    --label-color: var(--color-gray-800);

    /* ---------------- 组件：dtable（数据表格） ---------------- */
    --dtable-bg: var(--color-canvas);
    --dtable-striped-bg: var(--color-gray-50);
    --dtable-header-bg: var(--color-surface);
    --dtable-footer-bg: var(--color-surface);
    --dtable-hover-bg: rgba(var(--color-primary-500-rgb), .05);
    --dtable-border-color: var(--color-border);
    --dtable-checked-bg: var(--color-warning-50);
    --dtable-checked-bg-hover: var(--color-warning-100);
    --dtable-checked-border: var(--color-border-strong);
    --dtable-nt-size: calc(var(--font-size-root) * 3 / 4 + 1px);
    --dtable-col-splitter-width: 7px;
    --dtable-col-splitter-color: var(--color-primary-500);
    --dtable-editing-color: var(--color-success-600);
    --dtable-selected-color: var(--color-primary-300);
    --dtable-selected-bg: var(--color-primary-50);
    --dtable-selecting-bg: var(--color-primary-100);
    --dtable-highlight-color: var(--color-primary-600);

    /* ---------------- 组件：Table（静态表格） ---------------- */
    --table-head-bg: var(--color-surface);
    --table-striped-color: var(--color-gray-50);
    --table-hover-color: rgba(var(--color-primary-500-rgb), .05);
    --table-border-color: var(--color-border);

    /* ---------------- 布局：PMT 顶层 ---------------- */
    --zt-page-bg: #f8f9fa;
    --zt-header-height: 3rem;
    --zt-header-bg: var(--color-canvas);
    --zt-header-color: var(--color-fore);
    --zt-sidebar-width: 160px;
    --zt-navbar-active-color: var(--color-primary-500);
    --zt-container-width: 1800px;
}
