/* ylsys 租戶／平台後台共用：緊湊版面元件 */

:root {
    /* 產品為淺色後台；宣告 light 避免 Chrome／Edge「自動深色網頁」反色後按鈕白底白字 */
    color-scheme: light;
    --input-border: #cbd5e1;
    --input-border-required: #800000;
    --input-focus-ring-required: rgba(128, 0, 0, 0.22);
    --input-bg: #ffffff;
    --input-toolbar-bg: #f8fafc;
    --input-radius: 4px;
    --input-padding-y: 0.12rem;
    --input-padding-x: 0.5rem;
    --input-font-size: 0.9rem;
    --input-line-height: 1.25;
    /* 文字框／下拉同高（border-box：含 padding＋1px 上下邊框） */
    --input-control-height: calc(
        (var(--input-font-size) * var(--input-line-height))
        + (2 * var(--input-padding-y))
        + 2px
    );
    --form-label-w: 5rem;
    --layout-sticky-top: 2.35rem;
    --list-scroll-offset: 6.75rem;
    --table-font-size: 0.9rem;
    --table-head-bg: #eff6ff;
    --table-head-border: #dbeafe;
    --doc-line-head-bg: var(--table-head-bg);
    --doc-line-head-border: var(--table-head-border);
    --hint-tip-bg: #ffffe1;
    --hint-tip-color: #111827;
    --hint-tip-border: #d4c878;
    --btn-radius: 4px;
    /* 全站 .btn 預設高度＝單行輸入／查詢鈕（列表分頁右側操作鈕同此） */
    --btn-control-height: var(--input-control-height);
}

/* 全站按鈕圓角＋統一高度（見 .cursor/rules/ylsys-button-radius.mdc） */
.btn,
a.btn,
button.btn,
input[type="submit"].btn,
input[type="button"].btn {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: var(--btn-control-height);
    min-height: var(--btn-control-height);
    max-height: var(--btn-control-height);
    padding: 0 0.65rem;
    font-size: var(--input-font-size);
    line-height: var(--input-line-height);
    white-space: nowrap;
    border-radius: var(--btn-radius);
}

.login-submit,
.login-form .login-submit,
.icon-btn,
button.nav-group-toggle,
.sidebar .nav-group-toggle {
    border-radius: var(--btn-radius);
}

/* ── 表單輸入框（租戶／平台／登入共用） ── */

.form-input,
.search-input,
.select,
textarea.form-input,
.login-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):not([type="button"]),
.login-form .form-input {
    border: 1px solid var(--input-border);
    border-radius: var(--input-radius);
    padding: var(--input-padding-y) var(--input-padding-x);
    font: inherit;
    font-size: var(--input-font-size);
    font-weight: 500; /* 與 body 正文同重；muted／hint 另鎖 400 */
    line-height: var(--input-line-height);
    width: 100%;
    background: var(--input-bg);
    color: var(--text);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

/* 單行控件同高；textarea 除外 */
input.form-input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="range"]),
.search-input,
select.form-input,
select.select,
.login-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="range"]) {
    height: var(--input-control-height);
    min-height: var(--input-control-height);
}

.search-input,
.select {
    background-color: var(--input-toolbar-bg);
}

/* 壓矮原生 select：去掉系統內建高度，自繪箭頭後對齊文字框 */
select.form-input,
select.select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-top: var(--input-padding-y);
    padding-bottom: var(--input-padding-y);
    padding-right: 1.55rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.4rem center;
    background-size: 0.7rem;
}

select.form-input {
    background-color: var(--input-bg);
}

select.select:not(.form-input) {
    background-color: var(--input-toolbar-bg);
}

/* 防漏：表單／工具列內裸 select 仍同高（新碼仍應加 form-input select） */
.app-shell .form-field > select:not(.form-input):not(.select),
.app-shell .toolbar select:not(.form-input):not(.select) {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    height: var(--input-control-height);
    min-height: var(--input-control-height);
    padding: var(--input-padding-y) 1.55rem var(--input-padding-y) var(--input-padding-x);
    font-size: var(--input-font-size);
    line-height: var(--input-line-height);
    border: 1px solid var(--input-border);
    border-radius: var(--input-radius);
    background-color: var(--input-bg);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.4rem center;
    background-size: 0.7rem;
}

.form-input:focus,
.search-input:focus,
.select:focus,
textarea.form-input:focus,
.login-form input:focus:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):not([type="button"]),
.login-form .form-input:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 2px var(--input-focus-ring);
}

.form-input:disabled,
.search-input:disabled,
.select:disabled,
.form-input[readonly] {
    background-color: #f1f5f9;
    color: var(--muted);
    cursor: not-allowed;
}

select.form-input:disabled,
select.select:disabled {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.4rem center;
    background-size: 0.7rem;
}

/* 必填：label 不加 *，以框線顏色（maroon）提示；使用者教育訓練後即懂 */
.form-field input:required:not([disabled]):not([readonly]),
.form-field select:required:not([disabled]),
.form-field textarea:required:not([disabled]):not([readonly]),
.product-price-types-row input:required:not([disabled]):not([readonly]),
.price-matrix input:required:not([disabled]):not([readonly]) {
    border-color: var(--input-border-required);
}

.form-field input:required:not([disabled]):not([readonly]):focus,
.form-field select:required:not([disabled]):focus,
.form-field textarea:required:not([disabled]):not([readonly]):focus,
.product-price-types-row input:required:not([disabled]):not([readonly]):focus,
.price-matrix input:required:not([disabled]):not([readonly]):focus {
    border-color: var(--input-border-required);
    box-shadow: 0 0 0 2px var(--input-focus-ring-required);
}

.textarea {
    min-height: 5rem;
    resize: vertical;
}

/* ── 表單 field-hint（租戶／平台共用；併入 label 內） ── */

.form-field label .field-hint {
    font-weight: 400; /* 次要說明：維持細字＋ muted 色 */
    font-size: 0.8rem;
    color: var(--muted);
}

.form-field label .field-hint code {
    font-size: 0.85em;
}

/* ── 表單 hint tooltip（`title` → JS 自訂；淡黃底黑字，對齊 YLS／Windows 提示） ── */

.ylsys-hint-tip {
    position: fixed;
    z-index: 10000;
    max-width: 22rem;
    padding: 0.35rem 0.55rem;
    font-size: 0.85rem;
    line-height: 1.4;
    color: var(--hint-tip-color);
    background: var(--hint-tip-bg);
    border: 1px solid var(--hint-tip-border);
    border-radius: 4px;
    box-shadow: 0 1px 4px rgba(15, 23, 42, 0.12);
    pointer-events: none;
    white-space: pre-wrap;
    overflow-wrap: break-word;
}

.ylsys-hint-tip[hidden] {
    display: none !important;
}

/* ── 緊湊版面（租戶／平台 .app-shell 後台） ── */

.app-shell .topbar {
    padding: 0.3rem 1rem;
    gap: 0.5rem;
}

.app-shell .topbar .icon-btn,
.app-shell .topbar .menu-toggle {
    width: 2rem;
    height: 2rem;
    font-size: 1rem;
}

.app-shell .topbar-title h1 {
    font-size: 0.95rem;
    line-height: 1.25;
}

/* topbar 麵包屑（取代單一 h1；仍佔同一列，不另加垂直列） */
.app-shell .ylsys-breadcrumb {
    min-width: 0;
}

.app-shell .ylsys-breadcrumb__list {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.15rem 0;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 0.94rem;
    font-weight: 600;
    line-height: 1.25;
    color: var(--text, #0f172a);
}

.app-shell .ylsys-breadcrumb__item {
    display: inline-flex;
    align-items: baseline;
    min-width: 0;
}

.app-shell .ylsys-breadcrumb__sep {
    margin: 0 0.28rem;
    color: var(--muted, #94a3b8);
    font-weight: 500;
}

.app-shell .ylsys-breadcrumb__link {
    /* 導覽強調：租戶 --nav-accent＝Teal；未設時退回 --primary（平台 indigo） */
    color: var(--nav-accent, var(--primary, #0d9488));
    text-decoration: none;
    font-weight: 600;
}

.app-shell .ylsys-breadcrumb__link:hover {
    text-decoration: underline;
}

.app-shell .ylsys-breadcrumb__text {
    color: var(--text, #0f172a);
    font-weight: 600;
}

.app-shell .ylsys-breadcrumb__item.is-current .ylsys-breadcrumb__text,
.app-shell .ylsys-breadcrumb__item.is-current .ylsys-breadcrumb__link {
    color: var(--text, #0f172a);
    font-weight: 700;
}

.app-shell .user-pill {
    padding: 0.18rem 0.5rem;
    font-size: 0.8rem;
}

.app-shell .content {
    padding: 0.35rem 1rem 0.65rem;
    gap: 0.5rem;
}

.app-shell .btn {
    /* 高度／直向 padding 走全域 --btn-control-height；此處只補後台字級 */
    font-size: var(--table-font-size);
    border-radius: var(--btn-radius);
    white-space: nowrap;
}

.app-shell .panel {
    padding: 0.65rem 0.85rem;
}

.app-shell .panel--list-compact {
    padding: 0.45rem 0.85rem 0.55rem;
}

.app-shell .panel--list-compact .panel-head {
    margin-bottom: 0;
    min-height: 0;
    gap: 0.5rem;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
}

/* 列表 toolbar：單行（搜尋 + 篩選 + 新增） */
.app-shell .toolbar--list {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.2rem;
}

.app-shell .toolbar--list .toolbar-form {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.5rem;
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
}

.app-shell .toolbar .search-input,
.app-shell .toolbar .select {
    width: auto;
    flex: 1 1 12rem;
    min-width: 9rem;
    max-width: 22rem;
}

.app-shell .toolbar-actions {
    margin-left: auto;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

@media (max-width: 640px) {
    .app-shell .toolbar--list {
        flex-wrap: wrap;
    }

    .app-shell .toolbar--list .toolbar-form {
        flex-wrap: wrap;
        width: 100%;
    }

    .app-shell .toolbar .search-input,
    .app-shell .toolbar .select {
        flex: 1 1 100%;
        max-width: none;
    }

    .app-shell .toolbar-actions {
        margin-left: 0;
        width: 100%;
        justify-content: flex-end;
    }
}

.app-shell .panel-head {
    margin-bottom: 0.6rem;
    gap: 0.65rem;
}

.app-shell details.help-fold {
    padding: 0.35rem 0.7rem;
    font-size: 0.85rem;
}

.app-shell .table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.app-shell .table-wrap--list-scroll,
.app-shell .table-wrap--medium {
    max-height: calc(100dvh - var(--layout-sticky-top) - var(--list-scroll-offset));
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

.app-shell .panel--list-compact .table-wrap--list-scroll,
.app-shell .panel--list-compact .table-wrap--medium {
    margin-top: 0.2rem;
}

.app-shell .data-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: var(--table-font-size);
}

.app-shell .data-table:not(.detail-kv) th,
.app-shell .data-table:not(.detail-kv) td {
    padding: 0.17rem 0.3rem;
    vertical-align: middle;
    line-height: 1;
    border-bottom: 1px solid var(--border);
    text-align: left;
}

/* 表內列文字：純黑、字重 500（Alan 2026-07-28） */
.app-shell .data-table:not(.detail-kv) tbody td,
.doc-lookup-pick-modal .data-table tbody td {
    color: #000;
    font-weight: 500;
}

/* 全站預設：資料表欄標題列淡藍底（勿只依賴 list-scroll／medium） */
.app-shell .data-table:not(.detail-kv) thead th,
.doc-lookup-pick-modal .data-table thead th {
    font-size: var(--table-font-size);
    font-weight: 600;
    color: var(--text);
    background: var(--table-head-bg);
    box-shadow: 0 1px 0 var(--table-head-border);
    white-space: nowrap;
}

/* sticky 僅長列表容器；底色沿用上列全站預設 */
.app-shell .table-wrap--list-scroll .data-table thead th,
.app-shell .table-wrap--medium .data-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
}

/* 金額／數量：必須右對齊（權重須高於上方 th/td 的 text-align:left + :not） */
.app-shell .data-table:not(.detail-kv) th.num,
.app-shell .data-table:not(.detail-kv) td.num,
.app-shell .data-table th.num,
.app-shell .data-table td.num {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.app-shell .badge {
    padding: 0.1rem 0.4rem;
    font-size: 0.72rem;
}

.app-shell .actions-cell {
    gap: 0.35rem 0.55rem;
}

.app-shell .link,
.app-shell .btn-link {
    font-size: var(--table-font-size);
}

.topbar-actions {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.logout-link {
    font-size: 0.85rem;
    color: var(--muted);
    text-decoration: none;
}

.logout-link:hover {
    color: var(--primary-dark);
    text-decoration: underline;
}

.panel-head--actions-only {
    justify-content: flex-end;
}

.panel-head-meta {
    font-size: 0.85rem;
    color: var(--muted);
    font-weight: 400; /* 次要說明 */
}

details.help-fold {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    padding: 0.45rem 0.85rem;
    font-size: 0.88rem;
}

details.help-fold summary {
    cursor: pointer;
    font-weight: 600;
    color: var(--muted);
    user-select: none;
}

.help-fold-body {
    margin-top: 0.5rem;
    color: var(--muted);
    font-weight: 400; /* 說明內文：不跟 body 500 */
}

.help-fold-body p {
    margin: 0.35rem 0 0;
}

.form-panel-narrow {
    max-width: 44rem;
}

.form-panel-wide {
    max-width: 52rem;
}

.form-panel-document {
    max-width: 64rem;
}

/* 單據／庫存同族列表：撐滿可用寬（編輯 form 仍用 form-panel-document 適寬） */
.form-panel-document.doc-list-panel,
.doc-list-panel {
    max-width: none;
    width: 100%;
}

/* 單據工作區：panel 撐滿畫面；內層物件靠左適寬 */
.doc-workspace-panel {
    overflow: hidden;
}

.doc-workspace-inner {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    max-width: 64rem;
    align-self: flex-start;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.doc-workspace-header {
    flex: 0 0 auto;
}

.doc-commitment-hint {
    margin: 0.2rem 0 0;
    font-size: 0.82rem;
    line-height: 1.4;
}

.doc-commitment-hint.doc-convert-links code,
.doc-commitment-hint a code {
    font-size: 0.9em;
}

.doc-workspace-form.form-grid--document {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    gap: 0.35rem;
}

.doc-workspace-fields {
    flex: 0 0 auto;
}

/* 圖3：吃 header／footer 剩餘高度；外框；內容一列起、超過框內捲 */
.doc-workspace-body {
    flex: 1 1 auto;
    min-height: 0;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 4px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    background: var(--surface, #fff);
}

.doc-workspace-footer {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* ── 版型 B：主檔＋明細分欄（layout_split）── */
/* 外層勿沿用 classic 的 64rem，否則左右欄被擠、明細品名裁字 */
.form-panel-document.doc-workspace-panel--split {
    max-width: none;
    width: 100%;
}

.doc-workspace-inner--split {
    max-width: none;
}

.doc-workspace-form--split {
    gap: 0.4rem;
}

.doc-split-columns {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    gap: 0.65rem;
    align-items: stretch;
}

.doc-split-aside {
    flex: 0 0 22.5rem;
    max-width: 36%;
    min-width: 18rem;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 4px;
    background: var(--surface, #fff);
    padding: 0.45rem 0.7rem 0.55rem;
    box-sizing: border-box;
}

.doc-split-aside-title {
    font-size: 0.78rem;
    font-weight: 600;
    margin: 0 0 0.4rem;
    letter-spacing: 0.02em;
}

.doc-split-detail {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.doc-workspace-panel--split .doc-split-detail .doc-workspace-body {
    flex: 1 1 auto;
}

/*
 * 左欄表頭：必須單欄堆疊。
 * classic 的 grid-column／grid-row（4 欄定位）若未清掉，
 * 會在 1fr 模板外長出隱式欄 → 水平捲軸、日期／單號擠成窄格。
 */
.doc-workspace-panel--split .doc-header-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0.32rem 0;
    align-items: start;
}

.doc-workspace-panel--split .doc-header-grid > .form-field,
.doc-workspace-panel--split .doc-header-grid .doc-header-partner,
.doc-workspace-panel--split .doc-header-grid .doc-header-tax,
.doc-workspace-panel--split .doc-header-grid .doc-header-date,
.doc-workspace-panel--split .doc-header-grid .doc-header-docno,
.doc-workspace-panel--split .doc-header-grid .doc-header-order,
.doc-workspace-panel--split .doc-header-grid .doc-header-extref,
.doc-workspace-panel--split .doc-header-grid .doc-header-addr-partner,
.doc-workspace-panel--split .doc-header-grid .doc-header-addr-delivery {
    grid-column: 1;
    grid-row: auto;
    min-width: 0;
}

.doc-workspace-panel--split .doc-header-grid .form-field {
    grid-template-columns: 5rem minmax(0, 1fr);
    column-gap: 0.4rem;
    align-items: center;
}

.doc-workspace-panel--split .doc-header-grid .form-field > label {
    white-space: nowrap;
}

/* 客戶＋門市：lookup 全寬；門市另列（label｜select）對齊其他欄 */
.doc-workspace-panel--split .doc-header-partner-with-store {
    display: grid;
    grid-template-columns: 5rem minmax(0, 1fr);
    gap: 0.32rem 0.4rem;
    align-items: center;
    width: 100%;
    min-width: 0;
}

.doc-workspace-panel--split .doc-header-partner-with-store .doc-lookup-wrap {
    grid-column: 1 / -1;
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.doc-workspace-panel--split .doc-header-partner-with-store .doc-lookup-input {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
}

.doc-workspace-panel--split .doc-header-store-label {
    justify-self: stretch;
    text-align: right;
    font-weight: 600;
    font-size: 0.85rem;
    line-height: 1.3;
    color: var(--text, #0f172a);
    margin: 0;
    white-space: nowrap;
}

.doc-workspace-panel--split .doc-header-partner-with-store > select.form-input {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.doc-workspace-panel--split .doc-header-grid .form-input,
.doc-workspace-panel--split .doc-header-grid .form-input--w-sm,
.doc-workspace-panel--split .doc-header-grid .form-input--w-date,
.doc-workspace-panel--split .doc-header-grid .form-input--w-md,
.doc-workspace-panel--split .doc-header-grid .form-input--w-xs {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

/* 右欄合計：沿用 classic 尾區三列橫排；勿硬壓成兩欄 */
@media (max-width: 1200px) {
    .doc-workspace-panel--split .doc-footer-strip {
        gap: 0.25rem 0.65rem;
    }
}

@media (max-width: 1100px) {
    .doc-split-aside {
        flex-basis: 20rem;
        max-width: 40%;
    }
}

@media (max-width: 960px) {
    .doc-split-columns {
        flex-direction: column;
    }

    .doc-split-aside {
        flex: 0 0 auto;
        max-width: none;
        width: 100%;
        overflow: visible;
    }

    .doc-split-detail {
        flex: 1 1 auto;
        min-height: 12rem;
    }

    /* 堆疊後表頭可兩欄；仍須清掉 classic 的絕對 row／column */
    .doc-workspace-panel--split .doc-header-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.28rem 0.65rem;
    }

    .doc-workspace-panel--split .doc-header-grid > .form-field {
        grid-column: auto;
        grid-row: auto;
    }

    .doc-workspace-panel--split .doc-header-grid .doc-header-partner,
    .doc-workspace-panel--split .doc-header-grid .doc-header-addr-partner,
    .doc-workspace-panel--split .doc-header-grid .doc-header-addr-delivery {
        grid-column: 1 / -1;
    }

    .doc-workspace-panel--split .doc-header-partner-with-store {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .doc-workspace-panel--split .doc-header-partner-with-store .doc-lookup-wrap {
        grid-column: 1 / -1;
    }
}

@media (max-width: 640px) {
    .doc-workspace-panel--split .doc-header-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .doc-workspace-panel--split .doc-header-grid > .form-field {
        grid-column: 1;
    }
}

/* 單據表單：緊湊間距（對齊 Pegasus／選品 Modal 精神） */
.form-grid--document {
    gap: 0.2rem 0.75rem;
}

.form-grid--document .form-field {
    column-gap: 0.4rem;
    row-gap: 0.05rem;
}

.form-grid--document .form-field > label {
    font-size: 0.82rem;
}

/* 單據表單頂：查詢列＋主檔操作列變形＋「查詢單據」同一列 */
.doc-form-toolbar {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    margin: 0 0 0.45rem;
    min-width: 0;
    flex-wrap: wrap;
}

.form-panel-document .doc-form-search {
    margin: 0;
    flex: 0 1 auto;
}

.doc-form-toolbar .doc-form-actions {
    margin: 0;
    padding: 0;
    gap: 0.4rem;
    flex: 0 1 auto;
    min-width: 0;
}

.doc-form-actions-note {
    font-size: 0.82rem;
    white-space: nowrap;
}

.doc-form-list-link {
    margin-left: auto;
    white-space: nowrap;
    flex: 0 0 auto;
}

.doc-header-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.15rem 0.65rem;
    align-items: center;
}

.doc-header-grid .form-field {
    grid-template-columns: 4.25rem minmax(0, 1fr);
    column-gap: 0.35rem;
}

.doc-header-partner {
    grid-column: 1 / 3;
    grid-row: 1;
}

/* 廠商／客戶名稱 … 右側緊接門市（窄下拉，約 4 中文字） */
.doc-header-partner-with-store {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    min-width: 0;
    width: 100%;
}

.doc-header-partner-with-store .doc-lookup-wrap {
    flex: 1 1 auto;
    width: auto;
    max-width: none;
    min-width: 0;
}

.doc-header-store-label {
    flex: 0 0 auto;
    margin: 0;
    white-space: nowrap;
    /* 與表頭其他 .form-field > label 同字級／字重／色（勿 muted 小字） */
    font-size: 0.85rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--text, #0f172a);
}

.doc-header-partner-with-store > select.form-input {
    flex: 0 0 auto;
}

.doc-header-tax {
    grid-column: 3;
    grid-row: 1;
}

.doc-header-date {
    grid-column: 1;
    grid-row: 2;
}

.doc-header-docno {
    grid-column: 2;
    grid-row: 2;
}

.doc-header-order {
    grid-column: 3;
    grid-row: 2;
}

.doc-header-extref {
    grid-column: 4;
    grid-row: 2;
}

.doc-header-span-4 {
    grid-column: 1 / -1;
}

/* 廠商／客戶地址＋送貨地址：同一列各佔半寬（省垂直空間） */
.doc-header-addr-partner {
    grid-column: 1 / 3;
}

.doc-header-addr-delivery {
    grid-column: 3 / 5;
}

@media (max-width: 720px) {
    .doc-header-addr-partner,
    .doc-header-addr-delivery {
        grid-column: 1 / -1;
    }
}

.doc-lookup-wrap {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    width: fit-content;
    max-width: 100%;
}

.doc-lookup-wrap .doc-lookup-input {
    flex: 0 1 auto;
    min-width: 0;
}

/* 全站開窗「…」鈕（Alan 2026-08-06）
 * 錨點：收票／付票旁粗點有框（原 .doc-note-ellipsis）。
 * 勿掛 .link——button.link 會洗成透明細藍字，與粗體目標不一致。
 * 語意 class：.doc-lookup-pick／.doc-line-pick／.doc-note-ellipsis／.st-pick-btn／.sa-pick-btn
 */
button.doc-lookup-pick,
button.doc-line-pick,
button.doc-note-ellipsis,
button.st-pick-btn,
button.sa-pick-btn {
    appearance: none;
    -webkit-appearance: none;
    box-sizing: border-box;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--input-control-height, 1.75rem);
    height: var(--input-control-height, 1.75rem);
    min-width: var(--input-control-height, 1.75rem);
    padding: 0;
    margin: 0;
    line-height: 1;
    font-family: inherit;
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: var(--text, #0f172a);
    background: var(--surface, #fff);
    border: 1px solid var(--border, #e2e8f0);
    border-radius: var(--btn-radius, 4px);
    box-shadow: none;
    cursor: pointer;
    text-decoration: none;
}

button.doc-lookup-pick:hover:not(:disabled),
button.doc-line-pick:hover:not(:disabled),
button.doc-note-ellipsis:hover:not(:disabled),
button.st-pick-btn:hover:not(:disabled),
button.sa-pick-btn:hover:not(:disabled) {
    background: var(--table-head-bg, #e8f0fe);
    border-color: #94a3b8;
    color: var(--text, #0f172a);
    text-decoration: none;
}

button.doc-lookup-pick:focus-visible,
button.doc-line-pick:focus-visible,
button.doc-note-ellipsis:focus-visible,
button.st-pick-btn:focus-visible,
button.sa-pick-btn:focus-visible {
    outline: 2px solid rgba(37, 99, 235, 0.35);
    outline-offset: 1px;
}

button.doc-lookup-pick:disabled,
button.doc-line-pick:disabled,
button.doc-note-ellipsis:disabled,
button.st-pick-btn:disabled,
button.sa-pick-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

/* 合計／總計／餘款黃底：與相鄰 .form-input 同高（勿因字級／padding 變高） */
.doc-totals-value--calc {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    box-sizing: border-box;
    width: 100%;
    height: var(--input-control-height);
    min-height: var(--input-control-height);
    max-height: var(--input-control-height);
    padding: 0 var(--input-padding-x, 0.45rem);
    text-align: right;
    background: #fff9e6;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: var(--radius, 4px);
    font-size: inherit;
    font-weight: 600;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

.doc-totals-value--calc.doc-totals-value--total {
    font-size: inherit;
    font-weight: 700;
}

/* 廠商／客戶／人員選取 Modal：殼對齊選取商品（.doc-line-pick-*），單選較窄 */
.doc-lookup-pick-modal.doc-line-pick-modal {
    z-index: 1210;
}

.doc-lookup-pick-modal .doc-line-pick-panel.panel {
    width: min(32rem, calc(100vw - 1.25rem));
}

.doc-lookup-pick-table .doc-lookup-pick-col-code {
    width: 6.5rem;
}

.doc-lookup-pick-table .doc-lookup-pick-col-name {
    width: auto;
}

.doc-lookup-pick-table .doc-lookup-pick-col-st {
    width: 3.25rem;
    text-align: center;
}

.doc-lookup-pick-table td.doc-lookup-pick-col-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Lookup 浮層殼（單位主檔等；選品／客戶表格式挑選走 .doc-line-pick-modal） */
.doc-lookup-modal {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.5rem;
    background: rgba(15, 23, 42, 0.45);
}

.doc-lookup-modal[hidden] {
    display: none !important;
}

.doc-lookup-panel {
    position: relative;
    z-index: 1;
    box-sizing: border-box;
    width: min(28rem, calc(100vw - 1rem));
    max-height: min(24rem, 70vh);
    display: grid;
    grid-template-rows: auto auto minmax(0, 1fr);
    gap: 0.15rem;
    margin: 0;
    padding: 0.3rem 0.45rem 0.35rem;
    overflow: hidden;
    background: var(--surface, #fff);
    border: 1px solid var(--border, #e2e8f0);
    border-radius: var(--radius, 4px);
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
}

.doc-lookup-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    min-height: 0;
}

.doc-lookup-head strong {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
}

/* 單位主檔 Modal（挑選＋維護；對齊 YLS：一列 5 格） */
.unit-name-panel {
    width: min(28rem, calc(100vw - 1rem));
    max-height: min(30rem, 82vh);
    grid-template-rows: auto auto auto auto minmax(0, 1fr);
}

.unit-name-panel .unit-name-grid-wrap {
    min-height: 0;
}

/* 單位 Modal 頂部查詢列（與主檔左列同構：查詢＋輸入＋放大鏡） */
.unit-name-panel .unit-name-search {
    margin-bottom: 0.35rem;
}

.unit-name-panel .unit-name-search .partner-master-search-form {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.35rem;
    min-width: 0;
}

.unit-name-panel .unit-name-search .toolbar-actions {
    display: flex;
    align-items: center;
    margin-left: 0;
}

.unit-name-edit-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    padding: 0.2rem 0 0.3rem;
    border-bottom: 1px solid var(--border, #e2e8f0);
}

.unit-name-edit-label {
    flex: 0 0 auto;
    font-size: 0.85rem;
    margin: 0;
    /* 右移對齊上方查詢列框內「查詢」（border + padding-left ≈ 0.45rem） */
    margin-left: 0.45rem;
}

/* 主檔操作列緊貼單位輸入框右側；選取靠整列最右 */
.unit-name-edit-bar .unit-name-master-actions {
    flex: 0 0 auto;
    margin: 0;
    margin-left: 0.15rem;
    padding: 0;
    gap: 0.3rem;
}

.unit-name-edit-bar .unit-name-pick-btn {
    margin-left: auto;
}

.unit-name-grid-head {
    margin: 0;
    padding: 0.2rem 0.35rem;
    font-size: var(--table-font-size, 0.9rem);
    font-weight: 600;
    color: var(--text);
    background: var(--table-head-bg);
    box-shadow: 0 1px 0 var(--table-head-border);
}

.unit-name-grid-wrap {
    overflow: auto;
    min-height: 8rem;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: var(--radius, 4px);
}

.unit-name-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 1px;
    background: var(--border, #e2e8f0);
    min-height: 100%;
}

.unit-name-grid-cell {
    box-sizing: border-box;
    min-height: 1.75rem;
    padding: 0.28rem 0.2rem;
    text-align: center;
    font-size: 0.88rem;
    line-height: 1.25;
    color: #1d4ed8;
    background: #fffbeb;
    cursor: pointer;
    user-select: none;
    outline: none;
}

.unit-name-grid-cell:hover,
.unit-name-grid-cell:focus {
    background: #fef3c7;
}

.unit-name-grid-cell:focus-visible {
    outline: 2px solid #2563eb;
    outline-offset: -2px;
    z-index: 1;
    position: relative;
}

.unit-name-grid-cell.is-selected {
    background: #dbeafe;
    box-shadow: inset 0 0 0 2px #2563eb;
    font-weight: 600;
}

.unit-name-grid-cell.is-selected:focus-visible {
    background: #bfdbfe;
}

.unit-name-grid-empty {
    grid-column: 1 / -1;
    padding: 0.75rem 0.5rem;
    text-align: center;
    font-size: 0.85rem;
    color: var(--muted, #64748b);
    background: #fff;
    cursor: default;
}

/* ── 表單版面：label 左、input 右（全站一致，省空間；唯一定義於 shared） ── */

.form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.45rem 1.6rem;
}

.form-field {
    display: grid;
    grid-template-columns: var(--form-label-w) minmax(0, 1fr);
    align-items: center;
    column-gap: 0.55rem;
    row-gap: 0.1rem;
}

.form-field-full {
    grid-column: 1 / -1;
}

.form-field > label {
    text-align: right;
    font-size: 0.85rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--text);
}

/* 內容為表格／多個勾選等：label 改置於上方 */
.form-field--stack {
    display: block;
}

.form-field--stack > label {
    display: block;
    text-align: left;
    margin-bottom: 0.3rem;
}

/* 欄寬：依預期文字長度取最適寬度（省空間，貼近 YLS） */
.form-input--w-xs { max-width: 6rem; }
/* 中文短標籤下拉（例狀態「使用中」「已過帳」）：須含箭頭區，勿再用 4rem 裁字 */
select.form-input--w-xs {
    width: auto;
    min-width: 5.5rem;
    max-width: 6.5rem;
}
/* 純數字／1～2 碼下拉（小數位、流水位數）才用更窄 */
.form-input--w-digit,
select.form-input--w-digit {
    width: auto;
    min-width: 0;
    max-width: 4rem;
}
/* 更窄：單碼 0～4 等（系統設定小數位；旁加「位」） */
.form-input--w-digit-sm,
select.form-input--w-digit-sm {
    width: 2.85rem;
    max-width: 2.85rem;
    min-width: 0;
    box-sizing: border-box;
}
.settings-unit-control {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    min-width: 0;
}
.settings-unit-suffix {
    flex: 0 0 auto;
    font-size: 0.84rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--text, #0f172a);
}
/*
 * 日期 type=date：YYYY-MM-DD＋日曆鈕
 * 2026-07-24：自 9.25rem 收斂；須固定 width+flex（只改 max-width 畫面常沒變）。
 * 現行：7.5rem（≈120px @16px 根）。
 */
.form-input--w-date,
input.form-input.form-input--w-date[type="date"] {
    width: 7.5rem;
    max-width: 7.5rem;
    min-width: 0;
    flex: 0 0 7.5rem;
    box-sizing: border-box;
}
/* 查詢列／帳款／報表 toolbar 內再釘死（蓋過 toolbar form-input 規則） */
.partner-master-search .form-input--w-date,
.app-shell .toolbar .form-input--w-date,
.app-shell .arap-ledger-panel .toolbar .form-input--w-date,
.app-shell .report-center-panel .toolbar .form-input--w-date {
    width: 7.5rem;
    max-width: 7.5rem;
    min-width: 0;
    flex: 0 0 7.5rem;
}
.form-input--w-sm { max-width: 11rem; }
.form-input--w-md { max-width: 16rem; }

.form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 1rem;
    flex-wrap: wrap;
    padding-top: 0.4rem;
}

.form-actions .btn {
    padding-left: 1rem;
    padding-right: 1rem;
}

.checkbox-row {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.9rem;
    font-weight: 600; /* 全站勾選說明字（Alan 預覽 2026-07-24；與 form label 同重） */
    cursor: pointer;
}

.checkbox-row input {
    width: auto;
}

/* 勾選列＋說明 icon 同行（說明鈕在 label 外，避免點說明誤切勾選） */
.checkbox-row-line {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    flex-wrap: wrap;
    max-width: 100%;
}

/* 欄位／功能說明：圓框灰 i → alarmTP（data-tp-help）；勿用句尾 ?／警告 ! */
.ylsys-help-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 1.05rem;
    height: 1.05rem;
    margin: 0;
    padding: 0;
    border: 1px solid #94a3b8;
    border-radius: 50%;
    background: transparent;
    color: #64748b;
    font-family: Georgia, "Times New Roman", "Noto Serif TC", serif;
    font-size: 0.72rem;
    font-weight: 700;
    font-style: italic;
    line-height: 1;
    cursor: pointer;
    flex-shrink: 0;
    appearance: none;
    vertical-align: middle;
}

.ylsys-help-btn:hover,
.ylsys-help-btn:focus-visible {
    color: var(--primary, #0d9488);
    border-color: var(--primary, #0d9488);
    background: rgba(15, 23, 42, 0.04);
    outline: none;
}

.checkbox-row-group {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 1.25rem;
}

.checkbox-row-group .checkbox-row {
    margin: 0;
}

@media (max-width: 768px) {
    .form-grid {
        grid-template-columns: 1fr;
    }

    /* 窄螢幕：地址與郵遞區號回退為兩列（label｜input） */
    .partner-addr-line {
        grid-template-columns: var(--form-label-w) minmax(0, 1fr);
    }

    .partner-addr-line .partner-addr-zip-label {
        padding-left: 0;
    }
}

.panel-actions {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

/* 系統設定：手風琴分區 */
.settings-accordion-tools {
    align-items: center;
    gap: 0.5rem;
}

.panel-head.settings-accordion-tools {
    margin-bottom: 0.5rem;
}

.settings-accordion-item {
    border: 1px solid var(--table-head-border, #dbeafe);
    border-radius: var(--radius, 4px);
    background: var(--surface, #fff);
    overflow: hidden;
}

.settings-accordion-summary {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0 0.75rem; /* 上下 0（Alan 2026-07-24；0.2 幾乎無感） */
    font-weight: 600;
    font-size: 0.92rem;
    cursor: pointer;
    list-style: none;
    user-select: none;
    background: var(--table-head-bg, #eff6ff);
    border-bottom: 1px solid transparent;
}

.settings-accordion-item[open] > .settings-accordion-summary {
    border-bottom-color: var(--table-head-border, #dbeafe);
}

.settings-accordion-summary::-webkit-details-marker {
    display: none;
}

.settings-accordion-summary::before {
    content: '▼';
    flex-shrink: 0;
    width: 1rem;
    font-size: 0.68rem;
    line-height: 1;
    text-align: center;
    color: var(--muted, #64748b);
}

.settings-accordion-item[open] > .settings-accordion-summary::before {
    content: '▲';
}

.btn-linkish {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    font-size: 0.85rem;
    color: var(--accent, #2563eb);
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.btn-linkish:hover {
    opacity: 0.85;
}

.settings-accordion {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.settings-accordion-body {
    padding: 0.3rem 0.65rem 0.4rem;
    border-top: none;
    --form-label-w: 6.5rem;
}

/* 單據編號：標籤較長（一般單流水位數）；控制項＋i 同行 */
.settings-accordion-body--doc-no {
    --form-label-w: 8rem;
}

.settings-field-control {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    min-width: 0;
    max-width: 100%;
}

/* 系統設定內容緊湊（Alan 2026-07-24：勿大段空白） */
.settings-accordion-body .form-field > label {
    white-space: nowrap;
    font-size: 0.84rem;
    line-height: 1.2;
}

.settings-accordion-body .form-grid {
    padding-top: 0;
    gap: 0.28rem 1rem;
}

.settings-accordion-body .form-grid + .form-grid {
    margin-top: 0.2rem;
}

.settings-accordion-body .form-field {
    column-gap: 0.4rem;
}

/* 勾選列：勿走 label 左欄 7rem 格，改單欄左對齊省高 */
.settings-accordion-body .form-field:has(> .checkbox-row),
.settings-accordion-body .form-field:has(> .checkbox-row-group) {
    display: block;
    grid-template-columns: none;
}

.settings-accordion-body .checkbox-row {
    font-size: 0.86rem;
    gap: 0.3rem;
    line-height: 1.25;
}

.settings-accordion-body .checkbox-row-group {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
}

.settings-subheading {
    margin: 0.4rem 0 0.2rem;
    padding: 0;
    font-size: 0.84rem;
    font-weight: 700;
    line-height: 1.25;
    color: var(--text, #0f172a);
}

.settings-subheading:first-child {
    margin-top: 0;
}

/* 金額進位等：標題＋兩組 label/select 同一列（緊湊） */
.settings-inline-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.45rem;
    margin-top: 0.28rem;
    min-width: 0;
}

.settings-inline-row__title {
    flex: 0 0 auto;
    font-size: 0.84rem;
    font-weight: 700;
    line-height: 1.2;
    color: var(--text, #0f172a);
    margin-right: 0.15rem;
    white-space: nowrap;
}

.settings-inline-row__lab {
    flex: 0 0 auto;
    font-size: 0.84rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--text, #0f172a);
    white-space: nowrap;
}

.settings-inline-row .form-input,
.settings-inline-row select.form-input {
    flex: 0 0 auto;
    width: auto;
}

@media (max-width: 640px) {
    .settings-inline-row {
        row-gap: 0.35rem;
    }
}

.settings-accordion-form .form-actions {
    margin-top: 0.5rem;
    padding-top: 0.25rem;
}

.detail-kv th {
    width: 7rem;
    white-space: nowrap;
    color: var(--muted);
    font-weight: 600;
    font-size: 0.85rem;
}

.panel-grid--split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.inline-store-form {
    margin-top: 0.75rem;
}

@media (max-width: 900px) {
    .panel-grid--split { grid-template-columns: 1fr; }
}

/* ── 側欄寬度拖曳（租戶／平台後台共用） ── */

.sidebar-resizer {
    flex-shrink: 0;
    width: 5px;
    margin: 0 -2px 0 0;
    cursor: col-resize;
    touch-action: none;
    position: relative;
    z-index: 2;
    background: transparent;
    transition: background 0.15s;
}

.sidebar-resizer::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 2px;
    width: 1px;
    background: rgba(255, 255, 255, 0.08);
    transition: background 0.15s, width 0.15s, left 0.15s;
}

.sidebar-resizer:hover::after,
.sidebar-resizer.is-dragging::after,
.app-shell.is-sidebar-resizing .sidebar-resizer::after {
    left: 1px;
    width: 2px;
    background: rgba(45, 212, 191, 0.55);
}

.app-shell.is-sidebar-resizing {
    user-select: none;
    cursor: col-resize;
}

.app-shell.is-sidebar-resizing .main {
    pointer-events: none;
}

@media (max-width: 768px) {
    .sidebar-resizer { display: none; }
}

/* ── 側欄右緣收合鈕（桌面；與 topbar ☰ 共用收合狀態） ── */
.sidebar-edge-toggle {
    position: fixed;
    top: 50%;
    left: var(--sidebar-width, 160px);
    z-index: 40;
    display: grid;
    place-items: center;
    width: 1.15rem;
    height: 2.5rem;
    margin: 0;
    padding: 0;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 4px;
    background: #ffffff;
    color: var(--primary, #0d9488);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.1);
    cursor: pointer;
    transform: translate(-50%, -50%);
    transition:
        left 0.2s ease,
        background 0.15s ease,
        color 0.15s ease,
        border-color 0.15s ease,
        box-shadow 0.15s ease;
}

.sidebar-edge-toggle:hover,
.sidebar-edge-toggle:focus-visible {
    background: color-mix(in srgb, var(--primary, #0d9488) 8%, #ffffff);
    border-color: color-mix(in srgb, var(--primary, #0d9488) 35%, var(--border, #e2e8f0));
    color: var(--primary-dark, var(--primary, #0f766e));
    box-shadow: 0 2px 6px rgba(15, 23, 42, 0.12);
    outline: none;
}

.sidebar-edge-toggle:focus-visible {
    box-shadow:
        0 0 0 2px color-mix(in srgb, var(--primary, #0d9488) 28%, transparent),
        0 2px 6px rgba(15, 23, 42, 0.12);
}

.sidebar-edge-toggle__icon {
    display: block;
    transition: transform 0.2s ease;
}

html.is-sidebar-collapsed .sidebar-edge-toggle,
.app-shell.is-sidebar-collapsed .sidebar-edge-toggle {
    left: 0;
    transform: translate(0, -50%);
    width: 1.25rem;
    height: 2.75rem;
    border-left: none;
    border-radius: 0 4px 4px 0;
    box-shadow: 1px 1px 4px rgba(15, 23, 42, 0.12);
}

html.is-sidebar-collapsed .sidebar-edge-toggle__icon,
.app-shell.is-sidebar-collapsed .sidebar-edge-toggle__icon,
.sidebar-edge-toggle.is-collapsed .sidebar-edge-toggle__icon {
    transform: rotate(180deg);
}

@media (max-width: 768px) {
    .sidebar-edge-toggle { display: none !important; }
}

/* ── 側欄頂部與導覽（租戶／平台共用緊湊） ── */

:root {
    --sidebar-nav-fg: #ffffff;
    --sidebar-nav-hover: #5eead4;
    --sidebar-nav-active: #2dd4bf;
    --sidebar-nav-hover-bg: rgba(45, 212, 191, 0.12);
    --sidebar-nav-active-bg: rgba(45, 212, 191, 0.18);
}

.sidebar {
    padding: 0.65rem 0.6rem;
    gap: 0.45rem;
}

.brand {
    align-items: center;
    gap: 0.45rem;
    padding: 0.1rem 0.2rem;
    flex-shrink: 0;
}

.brand-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    background: none;
    border-radius: 0;
    line-height: 0;
    overflow: visible;
}

.brand-mark__img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: contain;
}

.brand-title {
    color: #fff;
    font-size: 0.92rem;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.01em;
}

.tenant-chip,
.env-chip {
    padding: 0.4rem 0.55rem;
    border-radius: 4px;
    gap: 0.08rem;
    flex-shrink: 0;
}

.tenant-chip strong {
    font-size: 0.88rem;
    color: #fff;
    line-height: 1.25;
}

.tenant-chip code,
.env-chip code {
    font-size: 0.78rem;
    line-height: 1.2;
}

.sidebar .nav {
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding-right: 0.1rem;
    line-height: 1.3;
}

.sidebar .nav-link,
.sidebar .nav-group-toggle {
    display: flex;
    align-items: center;
    padding: 0.4rem 0.55rem;
    font-size: 0.92rem;
    font-weight: 600;
    line-height: 1.35;
    gap: 0.45rem;
    color: var(--sidebar-nav-fg);
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}

.sidebar .nav-link:hover,
.sidebar .nav-group-toggle:hover {
    background: var(--sidebar-nav-hover-bg);
    color: var(--sidebar-nav-hover);
    text-decoration: none;
}

.sidebar .nav-link {
    border-radius: 4px;
}

.sidebar .nav-link.is-active {
    background: var(--sidebar-nav-active-bg);
    color: #ffffff;
}

.sidebar .nav-group-toggle {
    justify-content: space-between;
    border: none;
    background: transparent;
    cursor: pointer;
    text-align: left;
    width: 100%;
    border-radius: var(--btn-radius);
}

.sidebar .nav-group-label {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex: 1;
    min-width: 0;
    color: inherit;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
}

.sidebar .nav-sublink {
    padding: 0.32rem 0.45rem 0.32rem 1.45rem;
    font-size: 0.86rem;
    border-radius: 4px;
    line-height: 1.3;
    color: var(--sidebar-nav-fg);
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}

.sidebar .nav-sublink:hover {
    background: var(--sidebar-nav-hover-bg);
    color: var(--sidebar-nav-hover);
    text-decoration: none;
}

.sidebar .nav-sublink.is-active {
    background: var(--sidebar-nav-active-bg);
    color: var(--sidebar-nav-active);
}

.sidebar .nav-sublink.is-soon {
    opacity: 1;
}

.sidebar .nav-group-items {
    gap: 0.02rem;
    padding: 0.05rem 0 0.12rem 0.2rem;
}

.sidebar .nav-icon,
.sidebar .nav-chevron {
    color: inherit;
    opacity: 1;
}

.sidebar .nav-icon {
    width: 1rem;
    font-size: 0.92rem;
}

.sidebar .nav-chevron {
    font-size: 0.68rem;
}

.sidebar .nav-tag {
    color: #cbd5e1;
}

/* 單據明細：代碼輸入 + 品名（line_grid） */
.doc-line-table {
    table-layout: fixed;
    width: 100%;
}

.doc-line-table .doc-col-code { width: 11rem; }
.doc-line-table .doc-col-name { width: auto; }
.doc-line-table .doc-col-qty { width: 4.5rem; }
.doc-line-table .doc-col-unit { width: 3.25rem; }
.doc-line-table .doc-col-price { width: 6.5rem; }
.doc-line-table .doc-col-disc { width: 5.25rem; }
.doc-line-table .doc-col-amt { width: 6.5rem; }
.doc-line-table .doc-col-cost { width: 6.5rem; }
.doc-line-table .doc-col-act { width: 3.25rem; }

/* P12d 部分轉單 Modal */
.doc-convert-partial-modal {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.75rem;
}
.doc-convert-partial-modal[hidden] {
    display: none !important;
}
.doc-convert-partial-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
}
.doc-convert-partial-panel.panel {
    position: relative;
    z-index: 1;
    width: min(52rem, calc(100vw - 1.5rem));
    max-height: min(85vh, 40rem);
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin: 0;
    padding: 0.45rem 0.6rem 0.5rem;
    overflow: hidden;
    border-radius: var(--radius, 4px);
}
.doc-convert-partial-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}
.doc-convert-partial-head h3 {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
}
.doc-convert-partial-hint {
    margin: 0;
    font-size: 0.8125rem;
}
.doc-convert-partial-table-wrap {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
}
.doc-convert-partial-table {
    table-layout: fixed;
    width: 100%;
}
.doc-convert-partial-table .doc-convert-col-code { width: 7rem; }
.doc-convert-partial-table .doc-convert-col-name { width: auto; }
.doc-convert-partial-table .doc-convert-col-num { width: 4.5rem; }
.doc-convert-partial-table .doc-convert-col-qty { width: 6rem; }
.doc-convert-partial-actions {
    flex: 0 0 auto;
    margin-top: 0.15rem;
}

.doc-line-wrapper {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    margin: 0;
}

/* 明細捲動區填滿圖3外框；表頭 sticky */
.doc-line-wrapper .table-wrap.doc-line-scroll {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    overflow-x: auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.doc-workspace-panel .doc-form-toolbar {
    margin-bottom: 0;
}

.doc-workspace-footer .doc-footer-bar {
    border-top: none;
    padding-top: 0;
}

.doc-line-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--doc-line-head-bg);
    border-bottom: 2px solid var(--doc-line-head-border);
    box-shadow: 0 1px 0 var(--doc-line-head-border);
    font-weight: 600;
    font-size: 0.82rem;
    color: #1e3a5f;
    white-space: nowrap;
}

.doc-line-table th,
.doc-line-table td {
    vertical-align: middle;
    padding: 0.28rem 0.35rem;
}

.doc-line-disc-cell {
    text-align: right;
}

.doc-line-disc-cell .doc-line-disc {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.doc-line-table .form-input {
    width: 100%;
    min-width: 0;
    padding: 0.22rem 0.35rem;
    font-size: 0.88rem;
}

.doc-line-code-wrap {
    display: flex;
    align-items: center;
    gap: 0.15rem;
}

.doc-line-code-wrap .doc-line-code {
    flex: 1 1 auto;
    min-width: 0;
}

/* 明細選品「…」尺寸／粗體見上方全站開窗「…」鈕 */

.doc-line-name-cell {
    overflow: hidden;
}

.doc-line-name {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--text, #0f172a);
    font-size: 0.88rem;
    line-height: 1.35;
    cursor: default;
}

.doc-line-unit-cell {
    text-align: center;
    color: var(--text-muted, #64748b);
    font-size: 0.85rem;
}

.doc-line-unit {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.doc-line-amount {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.doc-line-act-cell {
    text-align: center;
    white-space: nowrap;
}

.doc-line-remove {
    white-space: nowrap;
    writing-mode: horizontal-tb;
    font-size: 0.82rem;
    padding: 0.1rem 0.2rem;
}

/* button 當 .link：去掉 UA 預設按鈕底／邊，淺色與強制深色皆避免白底白字 */
button.link,
button.btn-link,
button.doc-line-remove {
    appearance: none;
    -webkit-appearance: none;
    background: transparent;
    border: none;
    box-shadow: none;
    color: var(--accent, #2563eb);
    cursor: pointer;
    font: inherit;
    text-decoration: none;
}
button.link:hover,
button.btn-link:hover,
button.doc-line-remove:hover {
    text-decoration: underline;
    color: var(--primary-dark, #0f766e);
}

/* 開窗「…」若誤掛 .link：蓋過上方 button.link 透明／藍字／underline */
button.link.doc-lookup-pick,
button.link.doc-line-pick,
button.link.st-pick-btn,
button.link.sa-pick-btn {
    appearance: none;
    -webkit-appearance: none;
    background: var(--surface, #fff);
    border: 1px solid var(--border, #e2e8f0);
    box-shadow: none;
    color: var(--text, #0f172a);
    font-family: inherit;
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1;
    text-decoration: none;
}

button.link.doc-lookup-pick:hover:not(:disabled),
button.link.doc-line-pick:hover:not(:disabled),
button.link.st-pick-btn:hover:not(:disabled),
button.link.sa-pick-btn:hover:not(:disabled) {
    background: var(--table-head-bg, #e8f0fe);
    border-color: #94a3b8;
    color: var(--text, #0f172a);
    text-decoration: none;
}

/* 單據數字欄：右對齊、隱藏 number spinner（綁 class 本身，勿限定父容器以免重構漏套） */
.doc-num-input {
    text-align: right;
    -moz-appearance: textfield;
    appearance: textfield;
}

.doc-num-input::-webkit-outer-spin-button,
.doc-num-input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.doc-line-table .doc-num-input {
    text-align: right;
}

.doc-totals-bar {
    display: flex;
    justify-content: flex-end;
    padding-top: 0.25rem;
}

.doc-totals-dl {
    --doc-totals-value-width: 6.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: calc(3.5rem + 0.6rem + var(--doc-totals-value-width));
    margin: 0;
}

.doc-totals-row {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.doc-totals-row dt {
    flex: 0 0 3.5rem;
    text-align: right;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--text);
    white-space: nowrap;
}

.doc-totals-row--tax-type dd.doc-tax-type-dd {
    flex: 1 1 auto;
    width: auto;
    min-width: var(--doc-totals-value-width);
    text-align: right;
}

.doc-tax-type {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.4rem;
    flex-wrap: nowrap;
    font-size: 0.8rem;
    font-weight: 500;
}

.doc-tax-type-opt {
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    margin: 0;
    white-space: nowrap;
    cursor: pointer;
    font-weight: 500;
    color: var(--text);
}

.doc-tax-type-opt input {
    margin: 0;
}

.doc-totals-row dd {
    flex: 0 0 var(--doc-totals-value-width);
    width: var(--doc-totals-value-width);
    margin: 0;
    min-width: 0;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.doc-totals-input {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.doc-totals-row--total dt,
.doc-totals-row--total dd {
    border-top: 1px solid var(--border, #e2e8f0);
    padding-top: 0.25rem;
}

.doc-totals-value {
    display: block;
    width: 100%;
    box-sizing: border-box;
    text-align: right;
    padding-right: var(--input-padding-x);
    font-variant-numeric: tabular-nums;
}

.doc-totals-value--total {
    font-size: 1.1rem;
    font-weight: 700;
}

.doc-payment-bar {
    display: flex;
    justify-content: flex-end;
    padding-top: 0.15rem;
    margin-top: -0.1rem;
}

.doc-payment-dl .doc-totals-row dt {
    flex: 0 0 3.5rem;
}

.doc-payment-note-dd {
    flex: 0 0 calc(var(--doc-totals-value-width) + 1.35rem);
    width: calc(var(--doc-totals-value-width) + 1.35rem);
    min-width: calc(var(--doc-totals-value-width) + 1.35rem);
}

.doc-payment-note-wrap {
    display: flex;
    align-items: center;
    gap: 0.15rem;
    width: 100%;
}

.doc-payment-note-wrap .doc-totals-input {
    flex: 1 1 auto;
    min-width: 0;
    width: auto;
}

/* 收票／付票「…」樣式已併入全站開窗「…」鈕（button.doc-note-ellipsis） */

/* 進銷收票／付票 Modal（TPAIMS 左列右編） */
.doc-notes-modal {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.5rem;
}

.doc-notes-modal[hidden] {
    display: none !important;
}

.doc-notes-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
}

.doc-notes-modal-panel {
    position: relative;
    z-index: 1;
    box-sizing: border-box;
    width: min(52rem, calc(100vw - 1rem));
    max-height: min(32rem, 90vh);
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    gap: 0.35rem;
    padding: 0.4rem 0.55rem 0.45rem;
    background: var(--surface, #fff);
    border: 1px solid var(--border, #e2e8f0);
    border-radius: var(--radius, 4px);
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
}

.doc-notes-modal-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.doc-notes-modal-head h3 {
    margin: 0;
    font-size: 0.95rem;
}

.doc-notes-modal-body {
    display: grid;
    grid-template-columns: minmax(12rem, 15rem) minmax(0, 1fr);
    gap: 0.55rem;
    min-height: 0;
    overflow: hidden;
}

.doc-notes-modal-left,
.doc-notes-modal-right {
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.doc-notes-list-wrap {
    flex: 1 1 auto;
    min-height: 10rem;
    max-height: 18rem;
    overflow: auto;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: var(--radius, 4px);
}

.doc-notes-list-table thead th {
    background: var(--table-head-bg, #e8f0fe);
}

.doc-notes-list-row {
    cursor: pointer;
}

.doc-notes-list-row.is-active {
    background: #dbeafe;
}

.doc-notes-list-actions {
    display: flex;
    gap: 0.35rem;
}

.doc-notes-detail-grid {
    overflow: auto;
    max-height: 20rem;
}

.doc-notes-checks {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem;
    padding-top: 1.35rem;
}

.doc-notes-check-label {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.85rem;
    font-weight: 500;
    white-space: nowrap;
}

.doc-notes-modal-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding-top: 0.25rem;
    border-top: 1px solid var(--border, #e2e8f0);
}

.doc-notes-total {
    display: inline-flex;
    align-items: baseline;
    gap: 0.5rem;
    font-size: 0.9rem;
    font-weight: 600;
}

.doc-notes-total .num {
    min-width: 5rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

@media (max-width: 720px) {
    .doc-notes-modal-body {
        grid-template-columns: 1fr;
    }
}

/* 單據表尾：三列橫排＋六欄對齊（金額列含折扣）；label 隨字寬緊貼 input
 * 預設 flex 直欄靠左（Chrome 109／無 subgrid）：避免父六欄 grid 把三 strip 自動右排成階梯。
 * 有 subgrid 時再升級為父六欄＋子 subgrid（跨列對齊）。 */
.doc-footer-bar {
    --doc-totals-value-width: 6.5rem;
    --doc-footer-label-gap: 0.35rem; /* label↔input 緊距 */
    --doc-footer-row-gap: 0.28rem;
    --doc-footer-col-gap: 0.75rem;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--doc-footer-row-gap);
    padding-top: 0.2rem;
    border-top: 1px solid var(--border, #e2e8f0);
}

.doc-footer-strip {
    display: grid;
    grid-template-columns: repeat(6, max-content);
    align-items: center;
    align-self: flex-start;
    width: max-content;
    max-width: 100%;
    min-width: 0;
    margin-left: 0;
    margin-right: auto;
    column-gap: var(--doc-footer-col-gap);
}

@supports (grid-template-columns: subgrid) {
    .doc-footer-bar {
        display: grid;
        grid-template-columns: repeat(6, max-content);
        column-gap: var(--doc-footer-col-gap);
        row-gap: var(--doc-footer-row-gap);
        justify-content: start;
        align-items: center;
        gap: unset;
    }

    .doc-footer-strip {
        grid-template-columns: subgrid;
        grid-column: 1 / -1;
        align-self: stretch;
        width: auto;
        margin-right: 0;
    }

    .doc-footer-strip--meta .doc-footer-remark-row {
        min-width: 0; /* 有 subgrid 可真跨欄，不需後備加寬 */
    }
}

.doc-footer-strip .doc-totals-row {
    margin: 0;
    min-width: 0;
    gap: var(--doc-footer-label-gap);
}

/* label 隨文字寬；可輸入物件緊貼 label（Alan：非不得已勿離太遠） */
.doc-footer-strip .doc-totals-row dt {
    flex: 0 0 auto;
    width: auto;
    max-width: none;
    text-align: left;
    white-space: nowrap;
}

.doc-footer-strip .doc-totals-row--total dt,
.doc-footer-strip .doc-totals-row--total dd {
    border-top: none;
    padding-top: 0;
}

.doc-footer-strip .doc-totals-row--tax-type dd.doc-tax-type-dd {
    flex: 0 0 auto;
    width: auto;
    min-width: 0;
    max-width: none;
}

.doc-footer-strip .doc-tax-type {
    justify-content: flex-start;
}

/* 金額列：合計｜折扣｜稅別｜未稅｜營業稅｜總計（未稅隱藏時欄位仍占位） */
.doc-footer-strip--money > .doc-totals-row:nth-child(1) { grid-column: 1; }
.doc-footer-strip--money > .doc-totals-row:nth-child(2) { grid-column: 2; }
.doc-footer-strip--money > .doc-totals-row:nth-child(3) { grid-column: 3; }
.doc-footer-strip--money > .doc-totals-row:nth-child(4) { grid-column: 4; }
.doc-footer-strip--money > .doc-totals-row:nth-child(5) { grid-column: 5; }
.doc-footer-strip--money > .doc-totals-row:nth-child(6) { grid-column: 6; }

.doc-footer-strip--pay > .doc-totals-row:nth-child(1) { grid-column: 1; }
.doc-footer-strip--pay > .doc-totals-row:nth-child(2) { grid-column: 2; }
.doc-footer-strip--pay > .doc-totals-row:nth-child(3) { grid-column: 3; }
.doc-footer-strip--pay > .doc-totals-row:nth-child(4) { grid-column: 4; }
/* 餘款對齊總計（第 6 欄） */
.doc-footer-strip--pay > .doc-totals-row:nth-child(5) { grid-column: 6; }

.doc-footer-strip--meta .doc-footer-operator { grid-column: 1; }
.doc-footer-strip--meta .doc-footer-entry { grid-column: 2; }
.doc-footer-strip--meta .doc-footer-remark-row {
    grid-column: 3 / -1; /* 自收票欄起右切齊餘款；無 subgrid 時僅占位加寬 */
    min-width: 16rem;
    width: 100%;
}

.doc-footer-strip--meta .doc-footer-operator-dd {
    flex: 0 0 6.5rem;
    width: 6.5rem;
    min-width: 0;
    max-width: 6.5rem;
}

.doc-footer-strip--meta .doc-footer-operator-dd .doc-lookup-wrap {
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.doc-footer-strip--meta .doc-footer-operator-dd .doc-lookup-input {
    min-width: 0;
    text-align: left;
}

.doc-footer-strip--meta .doc-footer-entry dd {
    flex: 0 0 5.5rem;
    width: 5.5rem;
    min-width: 0;
}

.doc-footer-strip--meta .doc-footer-entry .doc-totals-input {
    text-align: left;
}

.doc-footer-remark-dd {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 8rem !important;
    text-align: left !important;
}

.doc-footer-remark-dd .form-input {
    width: 100%;
    text-align: left;
}

@media (max-width: 720px) {
    .doc-footer-bar {
        align-items: stretch;
    }

    .doc-footer-strip {
        grid-template-columns: minmax(0, 1fr);
        grid-column: auto;
        width: 100%;
        max-width: none;
        margin-right: 0;
    }

    .doc-footer-strip--money > .doc-totals-row,
    .doc-footer-strip--pay > .doc-totals-row,
    .doc-footer-strip--meta .doc-footer-operator,
    .doc-footer-strip--meta .doc-footer-entry,
    .doc-footer-strip--meta .doc-footer-remark-row {
        grid-column: 1;
    }

    @supports (grid-template-columns: subgrid) {
        .doc-footer-bar {
            grid-template-columns: minmax(0, 1fr);
        }
    }
}

.panel-head-links {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-left: auto;
}

.doc-query-toolbar {
    margin-bottom: 0.35rem;
}

.doc-query-fields {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.75rem;
    width: fit-content;
    max-width: 100%;
}

.doc-query-fields .form-field {
    flex: 0 0 auto;
    grid-template-columns: auto auto;
    column-gap: 0.35rem;
    justify-items: start;
}

.doc-query-fields .form-field > label {
    font-size: 0.82rem;
    white-space: nowrap;
}

/* 覆寫 toolbar .select 的 flex 撐寬；欄寬交由 --w-* token（須蓋過 .form-input{width:100%}） */
.app-shell .doc-query-fields .form-input,
.app-shell .doc-query-fields .select {
    flex: 0 0 auto;
    min-width: 0;
    box-sizing: border-box;
}

/* 查詢列單號／盤點單號：14 字例 SH202607160010 → 適寬 8.5rem（蓋 width:100%） */
.app-shell .doc-query-fields input.form-input--w-docno,
.app-shell .doc-query-fields input.form-input--w-sm {
    width: 8.5rem;
    max-width: 8.5rem;
    flex: 0 0 8.5rem;
}

/* 查詢列倉庫等中文下拉：維持 w-sm */
.app-shell .doc-query-fields select.form-input--w-sm {
    width: 11rem;
    max-width: 11rem;
    flex: 0 0 11rem;
}

/* 狀態／轉單等短中文下拉（最長「已過帳」「進行中」＋箭頭） */
.app-shell .doc-query-fields select.form-input--w-xs {
    width: 5rem;
    min-width: 5rem;
    max-width: 5rem;
    flex: 0 0 5rem;
}

.form-input--w-docno {
    width: 8.5rem;
    max-width: 8.5rem;
}

/* 查詢列日期區間：日期 + from ~ to（單組 label） */
.date-range-inputs {
    display: inline-flex;
    align-items: center;
    gap: 0.28rem;
    flex: 0 0 auto;
    min-width: 0;
}

.date-range-sep {
    flex: 0 0 auto;
    color: var(--muted, #6b7280);
    font-size: 0.9rem;
    line-height: 1;
    user-select: none;
}

.doc-query-fields .form-field--date-range {
    grid-template-columns: auto auto;
}

.doc-query-fields .form-field--date-range .date-range-inputs .form-input--w-date {
    flex: 0 0 auto;
}

.doc-query-fields > .btn,
.doc-query-fields > a.btn {
    flex: 0 0 auto;
    /* 高度已由全域 .btn＝--btn-control-height；此處只保查詢列排版 */
}

/* 查詢列按鈕：與同列輸入對齊（高度同全域 .btn） */
.app-shell .doc-query-fields > .btn,
.app-shell .doc-query-fields > a.btn {
    flex: 0 0 auto;
}

.doc-query-hint {
    margin: 0.25rem 0 0;
    font-size: 0.88rem;
    line-height: 1.45;
}

.doc-query-hint .link {
    white-space: nowrap;
}

.st-empty-hint {
    margin: 0.35rem 0.5rem 0.15rem;
}

@media (max-width: 720px) {
    /* 窄螢幕尾區改單欄：見上方 .doc-footer-bar 規則 */
}

.doc-line-pick-modal {
    --pick-page-rows: 15;
    --pick-row-block: 1.35rem;
    --pick-head-block: 1.55rem;
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}

.doc-line-pick-modal[hidden] {
    display: none !important;
}

.doc-line-pick-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
}

/* 選品 Modal：緊湊行距（對齊 TPAIMS 選取商品窗精神） */
.doc-line-pick-modal .doc-line-pick-panel.panel {
    position: relative;
    z-index: 1;
    flex: 0 0 auto;
    box-sizing: border-box;
    width: min(40rem, calc(100vw - 1.25rem));
    height: 85dvh;
    height: 85vh;
    min-height: 85dvh;
    min-height: 85vh;
    max-height: 85dvh;
    max-height: 85vh;
    display: grid;
    grid-template-rows: auto auto auto minmax(0, 1fr) auto auto;
    gap: 0.15rem;
    margin: 0;
    padding: 0.3rem 0.45rem 0.35rem;
    overflow: hidden;
}

.doc-line-pick-panel .doc-line-pick-head.panel-head {
    margin-bottom: 0;
    min-height: 0;
    gap: 0.35rem;
}

.doc-line-pick-panel .doc-line-pick-head h3 {
    margin: 0;
    font-size: 0.88rem;
    font-weight: 600;
    line-height: 1.2;
}

.doc-line-pick-toolbar .btn,
.doc-line-pick-actions .btn {
    padding: 0.16rem 0.75rem;
    font-size: 0.85rem;
    line-height: 1.25;
    border-radius: var(--btn-radius);
    min-height: 0;
    flex-shrink: 0;
}

.doc-line-pick-modal .doc-line-pick-table-wrap {
    min-height: 0;
    margin: 0;
    max-height: min(100%, calc(var(--pick-head-block) + var(--pick-page-rows) * var(--pick-row-block)));
    overflow-x: auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    border: 1px solid var(--border);
    border-radius: 4px;
}

.doc-line-pick-table {
    table-layout: fixed;
    font-size: 0.78rem;
}

.doc-line-pick-table th,
.doc-line-pick-table td {
    padding: 0.14rem 0.32rem !important;
    line-height: 1.22 !important;
    font-size: 0.78rem;
    vertical-align: middle;
}

.doc-line-pick-modal .doc-line-pick-table-wrap .doc-line-pick-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    padding: 0.16rem 0.32rem !important;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text, #1f2937);
    background: var(--table-head-bg);
    box-shadow: 0 1px 0 var(--table-head-border);
    white-space: nowrap;
    border-bottom: 1px solid var(--table-head-border);
}

.doc-line-pick-table tbody tr {
    cursor: pointer;
}

.doc-line-pick-table tbody tr:hover {
    background: #f8fafc;
}

.doc-line-pick-toolbar {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.25rem 0.35rem;
    margin: 0;
}

.doc-line-pick-filter-wrap {
    --pick-filter-border: #87ceeb;
    position: relative;
    display: flex;
    align-items: stretch;
    flex: 0 1 15rem;
    width: 15rem;
    min-width: 9rem;
    max-width: 18rem;
    border: 1px solid var(--pick-filter-border);
    border-radius: 4px;
    background: #fff;
    box-sizing: border-box;
}

.doc-line-pick-filter-wrap:focus-within {
    border-color: var(--primary);
    box-shadow: 0 0 0 2px var(--input-focus-ring);
}

.doc-line-pick-toolbar .doc-line-pick-filter-wrap .doc-line-pick-filter {
    flex: 1 1 auto;
    min-width: 0;
    width: auto;
    box-sizing: border-box;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    padding: 0.1rem 0.35rem;
    font-size: 0.8rem;
    line-height: 1.2;
    background: transparent;
}

.doc-line-pick-toolbar .doc-line-pick-filter-wrap .doc-line-pick-filter:focus {
    outline: none;
    border: none !important;
    box-shadow: none !important;
}

.doc-line-pick-recent-toggle {
    position: relative;
    flex: 0 0 1.35rem;
    width: 1.35rem;
    padding: 0;
    margin: 0;
    border: none;
    border-left: 1px solid var(--pick-filter-border);
    background: #f8fafc;
    border-radius: 0;
    cursor: pointer;
    color: #475569;
    align-self: stretch;
}

.doc-line-pick-recent-toggle[hidden] {
    display: none !important;
}

.doc-line-pick-recent-toggle:hover {
    background: #e2e8f0;
}

.doc-line-pick-recent-toggle:focus {
    outline: none;
    background: #e2e8f0;
    box-shadow: inset 0 0 0 2px var(--primary);
}

.doc-line-pick-recent-toggle-icon {
    display: block;
    width: 0;
    height: 0;
    margin: 0 auto;
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 5px solid currentColor;
}

.doc-line-pick-recent-menu {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 12;
    margin-top: 2px;
    background: #fff;
    border: 1px solid var(--pick-filter-border);
    border-radius: 4px;
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.12);
    max-height: 10.5rem;
    overflow-y: auto;
}

.doc-line-pick-recent-menu[hidden] {
    display: none !important;
}

.doc-line-pick-recent-menu-hd {
    padding: 0.18rem 0.45rem;
    font-size: 0.68rem;
    color: #64748b;
    border-bottom: 1px solid #e2e8f0;
    background: #f8fafc;
}

.doc-line-pick-recent-menu-list {
    padding: 0.12rem 0;
}

.doc-line-pick-recent-menu-item {
    display: block;
    width: 100%;
    padding: 0.22rem 0.45rem;
    font: inherit;
    font-size: 0.78rem;
    line-height: 1.25;
    text-align: left;
    color: #334155;
    border: none;
    background: transparent;
    cursor: pointer;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.doc-line-pick-recent-menu-item:hover,
.doc-line-pick-recent-menu-item:focus {
    background: #f1f5f9;
    outline: none;
}

.doc-line-pick-inactive-label {
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    font-size: 0.78rem;
    white-space: nowrap;
    cursor: pointer;
    user-select: none;
    flex-shrink: 0;
}

.doc-line-pick-inactive-label input[type="checkbox"] {
    width: 0.85rem;
    height: 0.85rem;
    margin: 0;
}

.doc-line-pick-status {
    margin: 0;
    font-size: 0.78rem;
    color: #475569;
    white-space: nowrap;
    flex-shrink: 0;
}

.doc-line-pick-toolbar .doc-line-pick-new {
    margin-left: auto;
    font-size: 0.78rem;
    flex-shrink: 0;
}

.doc-line-pick-meta {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    min-height: 0;
    justify-content: space-between;
    flex-wrap: wrap;
    font-size: 0.78rem;
    color: #475569;
    padding: 0.1rem 0.1rem 0.2rem;
}

.doc-line-pick-pager-wrap {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 0.28rem 0;
    border-top: 1px solid #e2e8f0;
}

.doc-line-pick-pager.ylsys-pager {
    flex-wrap: wrap;
    max-width: 100%;
}

.doc-line-pick-meta-spacer {
    flex: 1;
}

.doc-line-pick-checked {
    white-space: nowrap;
}

.doc-line-pick-status--error {
    color: #b91c1c;
}

.doc-line-pick-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: nowrap;
    gap: 0.35rem;
    padding-top: 0.2rem;
    border-top: 1px solid #e2e8f0;
}

.doc-line-pick-actions .link {
    font-size: 0.78rem;
}

.doc-line-pick-actions-spacer {
    flex: 1;
}

.doc-line-pick-actions .btn {
    min-width: 3.6rem;
}

.doc-line-pick-table .doc-pick-col-sel {
    width: 1.35rem;
    text-align: center;
    padding-left: 0.15rem !important;
    padding-right: 0.15rem !important;
}

.doc-line-pick-table .doc-pick-col-sel input[type="checkbox"] {
    width: 0.85rem;
    height: 0.85rem;
    margin: 0;
    vertical-align: middle;
}

.doc-line-pick-table .doc-pick-col-code {
    width: 4.25rem;
}

.doc-line-pick-table .doc-pick-col-name {
    width: 9rem;
    max-width: 9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.doc-line-pick-table .doc-pick-col-unit {
    width: 2rem;
}

.doc-line-pick-table .doc-pick-col-barcode {
    width: 6.75rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.doc-line-pick-table .doc-pick-col-price {
    width: 3.5rem;
}

.doc-line-pick-table .doc-pick-col-stock {
    width: 3.25rem;
}

.doc-line-pick-table .doc-pick-col-st {
    width: 2rem;
}

.doc-line-pick-row--active {
    background: #fef3c7 !important;
    box-shadow: inset 3px 0 0 #f59e0b;
}

.doc-line-pick-row--inactive td {
    color: #94a3b8;
}

.doc-line-pick-row--empty,
.doc-line-pick-row--empty:hover {
    cursor: default;
    background: #fff !important;
    box-shadow: none;
}

.doc-pick-st-inactive {
    font-size: 0.72rem;
    color: #b91c1c;
}

.doc-line-pick-table-wrap:focus {
    outline: none;
}

@media (max-width: 640px) {
    .doc-line-pick-toolbar {
        flex-wrap: wrap;
    }

    .doc-line-pick-status {
        margin-left: 0;
        width: 100%;
    }
}

/* 售價矩陣（商品表單）：適寬不拉滿（權重須高於 .app-shell .data-table） */
.product-price-matrix-wrap {
    width: fit-content;
    max-width: 100%;
}

.app-shell .product-price-matrix-wrap .data-table.price-matrix {
    width: auto;
    table-layout: auto;
}

.app-shell .product-price-matrix-wrap .price-matrix th[scope="row"],
.app-shell .product-price-matrix-wrap .price-matrix thead th:first-child {
    white-space: nowrap;
    font-weight: 500;
    width: 1%;
}

/* 消費型態（金額）欄：固定 6rem，勿隨內容撐寬 */
.app-shell .product-price-matrix-wrap .price-matrix td.num,
.app-shell .product-price-matrix-wrap .price-matrix thead th.num {
    padding: 0.25rem 0.4rem;
    width: 6rem;
    min-width: 6rem;
    max-width: 6rem;
    box-sizing: border-box;
}

.app-shell .product-price-matrix-wrap .price-matrix .form-input--price {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.form-input--price {
    width: 6rem;
    max-width: 6rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.partner-master-panel {
    padding: 0.65rem 0.85rem 0.75rem;
}

.partner-master-layout {
    display: grid;
    grid-template-columns: minmax(250px, 300px) minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
}

/* 主檔工作區撐滿時：左列＋右表同高填滿 panel */
.main:has(.partner-master-panel) .partner-master-layout {
    flex: 1 1 auto;
    min-height: 0;
    align-items: stretch;
    height: 100%;
}

.partner-master-list,
.partner-master-detail {
    min-width: 0;
}

.main:has(.partner-master-panel) .partner-master-list {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: 100%;
}

.main:has(.partner-master-panel) .partner-master-search,
.main:has(.partner-master-panel) .partner-master-list-pager,
.main:has(.partner-master-panel) .partner-master-list-meta {
    flex: 0 0 auto;
}

.main:has(.partner-master-panel) .partner-master-detail {
    min-height: 0;
    height: 100%;
    overflow: auto;
}

/*
 * 右表內容：固定度量、靠左（不隨寬螢幕攤開灌滿）。
 * 外殼／工作區仍可撐滿；多餘寬度留在 detail-inner 右側。
 * 殼底下垂直留白可接受。
 */
.partner-master-detail-inner {
    --partner-detail-content-max: 52rem; /* 對齊 form-panel-wide */
    width: 100%;
    max-width: var(--partner-detail-content-max);
    box-sizing: border-box;
    margin-right: auto; /* 靠左，右側留白 */
}

.partner-master-search {
    /* 查詢列：依內容取合適寬，勿拉滿左列／Modal（Alan 2026-07-15） */
    width: fit-content;
    max-width: 100%;
    margin-bottom: 0.28rem;
    padding: 0.28rem 0.4rem;
    border: 1px solid var(--border);
    border-radius: 4px;
    background: #fff;
    display: grid;
    grid-template-columns: auto auto;
    align-items: center;
    column-gap: 0.4rem;
    box-sizing: border-box;
}

.partner-master-search-form {
    gap: 0.35rem;
    align-items: center;
    flex-wrap: nowrap;
    min-width: 0;
}

.partner-master-search-label {
    flex: 0 0 auto;
    white-space: nowrap;
    font-size: 0.85rem; /* 與右表 label 一致；兩字「查詢」略大於清單 */
    font-weight: 700;
    color: #334155;
    text-align: left;
    line-height: 1;
}

.partner-master-search .search-input {
    flex: 0 0 auto;
    width: 16rem; /* 預設＝w-md：左列多欄關鍵字 placeholder */
    max-width: 16rem;
    min-width: 0;
}

/* 較短查詢（例單位名 max 10 字）：HTML 加 form-input--w-sm */
.partner-master-search .search-input.form-input--w-sm {
    width: 11rem;
    max-width: 11rem;
}

.partner-master-search .search-input.form-input--w-xs {
    width: 6rem;
    max-width: 6rem;
}

/* 帳款／報表查詢列：短狀態下拉適寬（勿沿用 w-sm；蓋 width:100%） */
.app-shell .partner-master-search select.form-input--w-xs {
    width: 5rem;
    min-width: 5rem;
    max-width: 5rem;
    flex: 0 0 5rem;
    box-sizing: border-box;
}

.partner-master-search .toolbar-actions {
    margin-left: 0;
    gap: 0.35rem;
    flex-wrap: nowrap;
}

.partner-master-search .toolbar-actions .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.5rem;
    padding: 0.2rem 0.55rem;
    font-size: 0.88rem;
    font-weight: 700;
    line-height: 1;
    color: #2563eb;
    border-color: #bfdbfe;
    background: #eff6ff;
}

.partner-master-search .toolbar-actions .btn:hover {
    color: #1d4ed8;
    border-color: #93c5fd;
    background: #dbeafe;
}

/* 左列查詢：線條 SVG 放大鏡（純圖示鈕） */
.partner-master-search .toolbar-actions .btn.partner-master-search-submit {
    min-width: 1.65rem;
    padding: 0.2rem 0.35rem;
}

.partner-master-search-icon {
    display: block;
    width: 1rem;
    height: 1rem;
    flex: 0 0 auto;
}

.partner-master-list-wrap {
    --partner-list-page-rows: 15;
    --partner-list-head-block: 1.7rem;
    --partner-list-row-block: 1.52rem; /* 列高略增，約 +12% */
    /* 無 :has 撐滿時的後備高度（約 15 列）；撐滿時由 flex 覆寫 */
    --partner-list-fixed-height: calc(var(--partner-list-head-block) + var(--partner-list-page-rows) * var(--partner-list-row-block));
    border: 1px solid var(--border);
    border-radius: 4px;
    overflow: auto;
    height: var(--partner-list-fixed-height);
    min-height: var(--partner-list-fixed-height);
    max-height: var(--partner-list-fixed-height);
    background: #fff;
}

/* 主檔工作區撐滿：左列清單吃掉剩餘高度（任意解析度） */
.main:has(.partner-master-panel) .partner-master-list-wrap {
    flex: 1 1 auto;
    min-height: 0;
    height: auto;
    max-height: none;
}

/* 左列清單：字 0.84rem、列略高（Alan 2026-07-11） */
.partner-master-table {
    min-width: 100%;
    table-layout: fixed;
    font-size: 0.84rem;
}
.partner-master-table th:first-child {
    width: 30%;
}

.partner-master-table thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    padding: 0.18rem 0.36rem;
    font-size: 0.84rem;
    font-weight: 600;
    color: var(--text, #1f2937);
    background: var(--table-head-bg);
    box-shadow: 0 1px 0 var(--table-head-border);
    border-bottom: 1px solid var(--table-head-border);
    white-space: nowrap;
}

.partner-master-table td {
    padding: 0.22rem 0.36rem;
    line-height: 1.28;
    font-size: 0.84rem;
    vertical-align: middle;
}

.partner-master-table tbody tr.is-selected td {
    background: #fff7db;
    box-shadow: inset 3px 0 0 #f59e0b;
}

.partner-master-row-link {
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
    color: inherit;
    text-decoration: none;
    font-weight: 500; /* 主檔左列列文字；表頭仍 600（Alan 2026-07-24） */
}

.partner-master-row-link code {
    font-size: 0.84rem;
    line-height: 1.28;
    font-weight: 500;
}

.partner-master-row-link .partner-master-name {
    font-size: 0.84rem;
    line-height: 1.28;
    font-weight: 500;
}

.partner-master-row-link .muted {
    font-size: 0.8rem;
    line-height: 1.15;
}

.partner-master-empty {
    text-align: center;
    padding: 1.4rem 0.8rem;
}

.partner-master-empty-detail {
    margin: 1rem 0.15rem;
    font-size: 0.875rem;
}

.partner-master-hint {
    margin: 0.55rem 0 0;
    font-size: 0.8125rem;
    line-height: 1.45;
    max-width: 36rem;
}

.partner-master-list-meta {
    display: flex;
    align-items: center;
    font-size: 0.82rem;
    color: #475569;
    padding: 0.12rem 0.1rem 0.06rem;
}

/* ylsys-pager 四向分頁列（見 說明文件/ylsys四向分頁列.md） */
.ylsys-pager {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0.2rem;
    padding: 0.2rem 0.28rem;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    background: #f8fafc;
    min-width: 0;
}

/* 主檔左列：四向分頁在表格上方；筆數摘要在清單下方 */
.partner-master-list-pager {
    margin-top: 0.2rem;
    margin-bottom: 0.28rem;
}

.partner-master-list-meta.ylsys-pager__summary {
    margin-top: 0.2rem;
    margin-bottom: 0;
}

.ylsys-pager__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    min-width: 1.65rem;
    min-height: 1.35rem;
    padding: 0.12rem 0.35rem;
    border: 1px solid #cbd5e1;
    border-radius: var(--btn-radius, 4px);
    background: #fff;
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
}

.ylsys-pager__btn--nav {
    color: #2563eb;
    border-color: #bfdbfe;
    background: #eff6ff;
}

.ylsys-pager__btn--nav:hover:not(:disabled) {
    color: #1d4ed8;
    border-color: #93c5fd;
    background: #dbeafe;
}

.ylsys-pager__btn--boundary {
    color: #dc2626;
    border-color: #fecaca;
    background: #fef2f2;
}

.ylsys-pager__btn--boundary:hover:not(:disabled) {
    color: #b91c1c;
    border-color: #fca5a5;
    background: #fee2e2;
}

.ylsys-pager__btn--jump {
    color: #475569;
    border-color: #d7dee8;
    background: #fff;
    min-width: 2.35rem;
    padding: 0.12rem 0.4rem;
    font-weight: 600;
}

.ylsys-pager__btn--jump:hover:not(:disabled) {
    color: #334155;
    border-color: #cbd5e1;
    background: #f1f5f9;
}

.ylsys-pager__btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.ylsys-pager__btn:focus-visible {
    outline: 2px solid var(--primary, #0d9488);
    outline-offset: 1px;
}

.ylsys-pager__meta {
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    flex: 1 1 auto;
    min-width: 0;
    justify-content: center;
    font-size: 0.76rem;
    color: #475569;
    white-space: nowrap;
}

.ylsys-pager__input {
    width: 2.35rem !important;
    min-width: 2.35rem;
    text-align: center;
    padding: 0.1rem 0.15rem !important;
    font-size: 0.76rem;
}

.partner-master-actions {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    margin-bottom: 0.7rem;
    padding: 0.05rem 0 0.15rem;
    flex-wrap: nowrap;
    white-space: nowrap;
}

/* 簡單主檔操作列：只留符號（少數窄版／Modal；文字靠 title／aria-label） */
.partner-master-actions--icon-only {
    gap: 0.3rem;
}

.partner-master-actions--icon-only .partner-master-action-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* 四顆符號鈕：固定正方形外框（勿只靠 min-*＋emoji 撐開，否則尺寸不一致） */
.partner-master-actions--icon-only .partner-master-action-link,
.partner-master-actions--icon-only .partner-master-action-btn {
    box-sizing: border-box;
    width: 1.75rem;
    height: 1.75rem;
    min-width: 1.75rem;
    min-height: 1.75rem;
    max-width: 1.75rem;
    max-height: 1.75rem;
    padding: 0;
    margin: 0;
    gap: 0;
    flex: 0 0 1.75rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    font: inherit;
    font-size: 0.88rem;
    font-weight: 700;
    line-height: 1;
}

.partner-master-actions--icon-only [class^="partner-master-action-icon"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.15rem;
    height: 1.15rem;
    font-size: 0.95rem;
    line-height: 1;
    flex: 0 0 auto;
}

.partner-master-action-form {
    margin: 0;
    display: inline-flex;
    align-items: center;
}

.partner-master-action-link,
.partner-master-action-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    height: var(--btn-control-height);
    min-height: var(--btn-control-height);
    max-height: var(--btn-control-height);
    padding: 0 0.55rem;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    background: #fff;
    color: #2563eb;
    font-size: 0.88rem;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
    line-height: 1;
    gap: 0.24rem;
    white-space: nowrap;
}

.partner-master-action-link:hover,
.partner-master-action-btn:hover {
    color: #1d4ed8;
    border-color: #93c5fd;
    background: #f8fbff;
    text-decoration: none;
}

/* 鍵盤焦點：主色焦點環（滑鼠點按不顯示），與輸入框 focus 一致 */
.partner-master-action-link:focus-visible,
.partner-master-action-btn:focus-visible,
.partner-master-detail .partner-master-actions button.partner-master-action-btn:focus-visible {
    outline: 2px solid var(--primary, #0d9488) !important;
    outline-offset: 2px;
    border-color: var(--primary, #0d9488) !important;
}

.partner-master-action-btn {
    font: inherit;
    appearance: none;
    -webkit-appearance: none;
    border: 1px solid #cbd5e1 !important;
    background-image: none !important;
    box-shadow: none !important;
    outline: none;
}

.partner-master-action-link--pill {
    color: #2563eb;
    border-color: #bfdbfe;
    background: #eff6ff;
}

.partner-master-action-link--pill:hover {
    border-color: #93c5fd;
    background: #dbeafe;
}

.partner-master-action-link--cancel {
    color: #475569;
    border-color: #d7dee8;
    background: #f8fafc;
}

.partner-master-action-link--cancel:hover {
    color: #334155;
    border-color: #cbd5e1;
    background: #f1f5f9;
}

.partner-master-action-btn--danger {
    color: #c2410c;
    border-color: #fed7aa;
    background: #fff7ed;
}

.partner-master-action-btn--save {
    color: var(--primary-dark, #1e40af);
    border-color: #93c5fd;
    background: #eff6ff;
}

.partner-master-action-link--disabled {
    color: #94a3b8;
    border-color: #e2e8f0;
    background: #f8fafc;
    cursor: default;
    pointer-events: none;
}

.partner-master-action-icon--blue {
    color: #2563eb;
}

.partner-master-action-icon--danger {
    color: #dc2626;
}

.partner-master-action-icon--save {
    color: #059669;
}

.partner-master-action-icon--cancel {
    color: #475569;
}

.partner-master-detail .partner-master-actions .partner-master-action-link,
.partner-master-detail .partner-master-actions .partner-master-action-btn {
    height: var(--btn-control-height) !important;
    min-height: var(--btn-control-height) !important;
    max-height: var(--btn-control-height) !important;
    padding: 0 0.55rem !important;
    gap: 0.24rem !important;
}

.partner-master-detail .partner-master-actions .partner-master-action-link--pill {
    background: #eff6ff !important;
    border-color: #bfdbfe !important;
}

.partner-master-detail .partner-master-actions .partner-master-action-link--cancel {
    color: #475569 !important;
    background: #f8fafc !important;
    border-color: #d7dee8 !important;
}

.partner-master-detail .partner-master-actions .partner-master-action-btn--danger {
    color: #c2410c !important;
    background: #fff7ed !important;
    border-color: #fed7aa !important;
}

.partner-master-detail .partner-master-actions .partner-master-action-btn--save {
    color: var(--primary-dark, #1e40af) !important;
    background: #eff6ff !important;
    border-color: #93c5fd !important;
}

.partner-master-detail .partner-master-actions button.partner-master-action-btn {
    all: unset;
    box-sizing: border-box;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: var(--btn-control-height) !important;
    min-height: var(--btn-control-height) !important;
    max-height: var(--btn-control-height) !important;
    padding: 0 0.55rem !important;
    gap: 0.24rem !important;
    border-width: 1px !important;
    border-style: solid !important;
    border-radius: 4px !important;
    font-family: inherit !important;
    font-size: 0.88rem !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    cursor: pointer !important;
    text-decoration: none !important;
}

.partner-master-detail .partner-master-actions button.partner-master-action-btn::-moz-focus-inner {
    border: 0;
    padding: 0;
}

.partner-master-detail .partner-master-actions button.partner-master-action-btn--danger {
    color: #c2410c !important;
    background: #fff7ed !important;
    border-color: #fed7aa !important;
}

.partner-master-detail .partner-master-actions button.partner-master-action-btn--save {
    color: var(--primary-dark, #1e40af) !important;
    background: #eff6ff !important;
    border-color: #93c5fd !important;
}

.partner-master-form {
    gap: 0.5rem 1.6rem;
}

/* 地址 + 郵遞區號同列：label｜地址(填滿)｜郵遞label｜郵遞input，消除右側空白 */
.partner-addr-line {
    grid-template-columns: var(--form-label-w) minmax(0, 1fr) auto auto;
}

.partner-addr-line .partner-addr-zip-label {
    width: auto;
    padding-left: 0.35rem;
}

/* 備註：label 與其他欄同右對齊，多行時 label 貼齊頂端 */
.partner-master-notes-field {
    align-items: start;
}

.partner-master-notes-field > label {
    padding-top: 0.2rem;
}

.partner-master-notes {
    min-height: 4.5rem;
    resize: vertical;
}

@media (max-width: 980px) {
    .partner-master-layout {
        grid-template-columns: 1fr;
    }

    .partner-master-list-wrap {
        height: 22rem;
        min-height: 22rem;
        max-height: 22rem;
    }

    /* 窄屏仍撐滿時：清單改吃可用高度，勿鎖死 22rem */
    .main:has(.partner-master-panel) .partner-master-list-wrap {
        flex: 1 1 auto;
        min-height: 12rem;
        height: auto;
        max-height: none;
    }
}

@media (max-width: 640px) {
    .partner-master-search {
        padding: 0.45rem;
        width: 100%;
        grid-template-columns: minmax(0, 1fr) auto;
        row-gap: 0.35rem;
    }

    .partner-master-search .search-input,
    .partner-master-search .search-input.form-input--w-sm,
    .partner-master-search .search-input.form-input--w-xs {
        width: 100%;
        max-width: none;
        flex: 1 1 auto;
    }

    .partner-master-search-form {
        gap: 0.3rem;
        min-width: 0;
    }

    .partner-master-search .toolbar-actions {
        justify-content: flex-end;
    }

    .partner-master-actions {
        overflow-x: auto;
        padding-bottom: 0.25rem;
    }
}

.form-section-title {
    margin: 0.35rem 0 0;
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--text-muted, #64748b);
}

/* 員工左列：有登入時編號右側小藍點（覆寫 column flex；用 ::after 避免 Unicode/空 span 問題） */
.partner-master-table a.partner-master-row-link.partner-master-row-link--code {
    display: inline-flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center;
    gap: 0.22rem;
    white-space: nowrap;
    max-width: 100%;
}

.partner-master-table a.partner-master-row-link.partner-master-row-link--code.is-login::after {
    content: '';
    display: block;
    width: 5px;
    height: 5px;
    flex: 0 0 5px;
    border-radius: 50%;
    background-color: #2563eb;
}

/* ── 員工主檔：分頁（segmented tabs，緊湊 B2B） ── */

.employee-master-form--tabs {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.employee-form-tabs {
    margin: 0;
    padding-bottom: 0.1rem;
    border-bottom: 1px solid #e2e8f0;
}

.ylsys-segmented-tabs {
    display: inline-flex;
    align-items: stretch;
    gap: 0.12rem;
    padding: 0.12rem;
    border: 1px solid #dbeafe;
    border-radius: 4px;
    background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85);
}

.ylsys-segmented-tab {
    appearance: none;
    border: 1px solid transparent;
    border-radius: 4px;
    margin: 0;
    padding: 0.28rem 0.82rem;
    font: inherit;
    font-size: 0.86rem;
    font-weight: 600;
    line-height: 1.35;
    color: #64748b;
    background: transparent;
    cursor: pointer;
    transition: color 0.15s ease, background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
    white-space: nowrap;
}

.ylsys-segmented-tab:hover:not(.is-active) {
    color: #334155;
    background: rgba(255, 255, 255, 0.55);
}

.ylsys-segmented-tab:focus-visible {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 2px var(--input-focus-ring);
}

.ylsys-segmented-tab.is-active {
    color: var(--primary);
    background: #ffffff;
    border-color: #bfdbfe;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
}

.employee-tab-panels {
    min-width: 0;
}

.employee-tab-panel:not(.is-active) {
    display: none;
}

.employee-tab-grid {
    margin-top: 0.05rem;
}

.employee-tab-grid--auth {
    max-width: 36rem;
}

.employee-auth-readonly-note {
    display: block;
}

.employee-auth-readonly-note > .muted,
.employee-auth-hint > .muted {
    margin: 0;
    font-size: 0.84rem;
    line-height: 1.4;
}

.employee-auth-hint {
    display: block;
}

.employee-readonly-value {
    display: inline-block;
    min-height: calc(var(--input-line-height) * 1em + var(--input-padding-y) * 2);
    padding: var(--input-padding-y) 0;
    font-size: var(--input-font-size);
    line-height: var(--input-line-height);
    color: var(--text);
}

/* ── 商品主檔（左列右表，對齊 partner／員工） ── */

.product-master-detail-inner {
    /* 售價矩陣略寬於一般主檔；仍靠左、不拉滿 1920 */
    --partner-detail-content-max: 56rem;
}

.product-master-form--tabs {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.product-tab-grid {
    margin-top: 0.05rem;
    /* 略緊於預設 form-grid，基本資料一屏更穩 */
    gap: 0.38rem 1.35rem;
}

.product-basic-flow-wrap {
    display: flex;
    flex-direction: column;
    gap: 0.38rem;
    min-width: 0;
}

/*
 * 基本資料兩欄流式：先填滿第 1 欄（上→下），高度不夠再溢到第 2 欄。
 * column-fill:auto 需有限高；限高由 JS 依視窗可用高度寫入（fallback 見下）。
 */
.product-tab-grid.product-tab-grid--flow {
    display: block;
    column-count: 2;
    column-gap: 1.35rem;
    column-fill: auto;
    max-height: calc(100dvh - var(--layout-sticky-top, 2.35rem) - 11.5rem);
}

.product-tab-grid--flow > .form-field {
    break-inside: avoid;
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
    width: 100%;
    margin: 0 0 0.38rem;
}

.product-tab-grid--flow > .form-field:last-child {
    margin-bottom: 0;
}

.product-basic-options.form-field-full {
    grid-column: unset;
}

.product-tab-grid .form-field > .checkbox-row,
.product-tab-grid .form-field > .checkbox-row-group,
.product-basic-options > .checkbox-row-group {
    min-height: var(--input-control-height);
}

@media (max-width: 768px) {
    .product-tab-grid.product-tab-grid--flow {
        column-count: 1;
        max-height: none;
    }
}

.product-master-cat-hint {
    margin: 0.2rem 0 0;
    font-size: 0.82rem;
    line-height: 1.35;
    grid-column: 2;
}

/* 多檔售價：基本資料內（參考進價區下方、選項上方）；兩欄緊湊、適寬不拉滿 */
.product-price-types-block {
    width: fit-content;
    max-width: 100%;
    margin-top: 0.15rem;
    padding-top: 0.45rem;
    border-top: 1px solid var(--border, #e2e8f0);
}

.product-price-types-empty {
    margin: 0;
    font-size: 0.85rem;
}

.product-price-types-list {
    display: flex;
    flex-direction: column;
    gap: 0.38rem;
    width: 100%;
    max-width: 100%;
}

.product-price-types-list--basic {
    display: grid;
    grid-template-columns: repeat(2, max-content);
    column-gap: 1.75rem;
    row-gap: 0.38rem;
    align-items: center;
}

.product-price-types-row {
    display: grid;
    grid-template-columns: max-content 6rem;
    align-items: center;
    column-gap: 0.45rem;
}

.product-price-types-row > label {
    margin: 0;
    white-space: nowrap;
    text-align: right;
    font-size: 0.85rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--text);
    min-width: 4.5rem;
}

.product-price-types-row .form-input--price {
    width: 6rem;
    max-width: 6rem;
}

@media (max-width: 768px) {
    .product-price-types-list--basic {
        grid-template-columns: max-content;
        column-gap: 0;
    }
}

.partner-master-table tr.is-inactive-row .partner-master-row-link.is-inactive,
.partner-master-table .partner-master-row-link.is-inactive {
    color: #94a3b8;
}

.partner-master-table tr.is-inactive-row .partner-master-row-link.is-inactive code {
    color: #94a3b8;
}

/* ── toastTP / alarmTP（全站浮動提示與對話框） ── */

#tp-toast-container {
    display: flex;
    justify-content: center;
    position: fixed;
    left: 50%;
    z-index: 9998;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.35s ease-in-out, visibility 0.35s ease-in-out;
}

#tp-toast-container.show {
    opacity: 1;
    visibility: visible;
}

#tp-toast-box,
.tp-toast-box {
    border-radius: var(--input-radius, 4px);
    padding: 0.55rem 1.25rem;
    text-align: center;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.12);
    min-width: 16rem;
    max-width: min(36rem, 90vw);
    font-size: 0.92rem;
    font-weight: 500;
    line-height: 1.35;
    box-sizing: border-box;
}

.tp-toast-box--success {
    background: #ecfdf5;
    border: 1px solid #a7f3d0;
    color: #047857;
}

.tp-toast-box--error {
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #b91c1c;
}

.tp-toast-box--info {
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    color: #1d4ed8;
}

#tp-alarm-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(15, 23, 42, 0.35);
    z-index: 9999;
    justify-content: center;
    align-items: center;
    padding: 1rem;
    box-sizing: border-box;
}

#tp-alarm-box {
    background: #ffffff;
    border: 1px solid var(--input-border, #cbd5e1);
    border-radius: var(--input-radius, 4px);
    padding: 1rem 1.1rem 0.85rem;
    max-width: 26rem;
    width: 100%;
    text-align: center;
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.14);
    box-sizing: border-box;
}

#tp-alarm-message {
    font-size: 0.95rem;
    margin-bottom: 1rem;
    color: #1e293b;
    font-weight: 500;
    line-height: 1.45;
}

#tp-alarm-buttons {
    display: flex;
    justify-content: center;
    gap: 0.65rem;
    flex-wrap: wrap;
}

.tp-alarm-btn {
    background: var(--primary, #2563eb);
    color: #ffffff;
    border: none;
    padding: 0.4rem 1rem;
    border-radius: var(--btn-radius, 4px);
    cursor: pointer;
    font-size: 0.9rem;
    font-weight: 500;
    transition: background-color 0.15s ease, box-shadow 0.15s ease;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
}

.tp-alarm-btn--secondary {
    background: #ffffff;
    color: var(--text, #0f172a);
    border: 1px solid var(--input-border, #cbd5e1);
    box-shadow: none;
}

.tp-alarm-btn:hover {
    filter: brightness(0.95);
}

.tp-alarm-btn--secondary:hover {
    filter: none;
    background: #f8fafc;
}

.tp-alarm-btn:focus {
    outline: none;
    box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.25);
}

/* 商品分類：次分類表（欄寬緊湊，不撐滿右表全寬） */
.category-subcat-table-wrap {
    overflow-x: auto;
}

.category-subcat-table {
    table-layout: fixed;
    width: auto;
    max-width: 100%;
}

.category-subcat-table col.col-subcat-code { width: 4.5rem; }
.category-subcat-table col.col-subcat-name { width: 16rem; }
.category-subcat-table col.col-subcat-sort { width: 5.5rem; }
.category-subcat-table col.col-subcat-active { width: 3.25rem; }
.category-subcat-table col.col-subcat-actions { width: 3.5rem; }

.category-subcat-table td .form-input {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

.category-subcat-table td.num {
    text-align: right;
}

/* 庫存調整單：頭欄／尾欄（對齊單據工作區） */
.sa-header-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, max-content));
    gap: 0.45rem 0.85rem;
    align-items: end;
}

.sa-header-grid .form-field-full {
    grid-column: 1 / -1;
}

.sa-footer-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1.25rem;
    padding: 0.35rem 0;
}

.sa-footer-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1.25rem;
    align-items: baseline;
    font-size: 0.88rem;
}

.st-book.num-display,
.st-diff {
    display: block;
    text-align: right;
    font-variant-numeric: tabular-nums;
    padding-right: var(--input-padding-x, 0.45rem);
    min-height: var(--input-control-height, 1.85rem);
    line-height: var(--input-control-height, 1.85rem);
}

/* 帳款總覽雙欄 */
.arap-summary-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem 1rem;
    margin-top: 0.35rem;
}
@media (max-width: 960px) {
    .arap-summary-grid {
        grid-template-columns: 1fr;
    }
}
.arap-summary-heading {
    margin: 0 0 0.4rem;
    font-size: 0.9rem;
    font-weight: 600;
}
.arap-ledger-table tr.is-open-row td {
    font-weight: 500;
}

/*
 * 應收／應付：禁止整頁／表區橫向捲軸
 * 根因：toolbar--list nowrap + .toolbar .select { min-width: 9rem } 把面板撐超寬
 */
.app-shell .content:has(.arap-ledger-panel),
.app-shell .content:has(.arap-summary-grid),
.app-shell .content:has(.report-center-panel),
.app-shell .content:has(.doc-list-panel) {
    min-width: 0;
    max-width: 100%;
    overflow-x: hidden;
}
.app-shell .arap-ledger-panel,
.app-shell .report-center-panel {
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    /* 一頁內：由 admin.css flex 鏈撐滿；fallback 防未套 has() 時撐破 */
    max-height: calc(100dvh - var(--layout-sticky-top, 2.35rem) - 0.5rem);
    min-height: 0;
}

/* 單據列表／盤點／調整／庫存查詢：同族一頁內殼（對齊帳款／報表） */
.app-shell .doc-list-panel {
    min-width: 0;
    max-width: none;
    width: 100%;
    overflow: hidden;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    max-height: calc(100dvh - var(--layout-sticky-top, 2.35rem) - 0.5rem);
    min-height: 0;
}
.app-shell .doc-list-panel > .panel-head,
.app-shell .doc-list-panel > .toolbar,
.app-shell .doc-list-panel > .doc-query-hint,
.app-shell .doc-list-panel > .partner-master-actions,
.app-shell .doc-list-panel > .inventory-recal-actions,
.app-shell .doc-list-panel > .arap-ledger-pager-bar,
.app-shell .doc-list-panel > .doc-list-pager-bar {
    flex: 0 0 auto;
}
.app-shell .doc-list-pager-placeholder {
    font-size: 0.85rem;
    padding: 0.2rem 0;
}
.app-shell .doc-list-pager-bar .arap-ledger-pager-actions .link,
.app-shell .doc-list-pager-bar .arap-ledger-pager-actions .btn {
    white-space: nowrap;
    text-decoration: none;
}
.app-shell .doc-list-panel > .table-wrap--list-scroll,
.app-shell .doc-list-panel > .table-wrap--medium {
    flex: 1 1 auto;
    min-height: 0;
    min-width: 0;
    max-width: 100%;
    max-height: none !important;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}
.app-shell .arap-ledger-panel > .toolbar,
.app-shell .arap-ledger-panel > .report-profit-hint,
.app-shell .arap-ledger-panel > .report-hint-actions,
.app-shell .arap-ledger-panel > .report-profit-summary,
.app-shell .arap-ledger-panel > .arap-ledger-pager-bar,
.app-shell .report-center-panel > .toolbar,
.app-shell .report-center-panel > .report-profit-hint,
.app-shell .report-center-panel > .report-stat-hint,
.app-shell .report-center-panel > .report-hint-actions,
.app-shell .report-center-panel > .report-profit-summary,
.app-shell .report-center-panel > .report-stat-summary,
.app-shell .report-center-panel > .arap-ledger-pager-bar {
    flex: 0 0 auto;
}
/* 分頁列＋右側操作：單據同族緊鄰分頁；帳款列印／匯出仍靠右（無 .doc-list-pager-bar） */
.app-shell .arap-ledger-pager-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.35rem 0.75rem;
    margin: 0.2rem 0 0.3rem;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}
.app-shell .doc-list-pager-bar {
    justify-content: flex-start;
    gap: 0.35rem 0.4rem;
}
/* 表上方四向分頁：依內容寬，不拉滿（對齊主檔 ylsys-pager） */
.app-shell .arap-ledger-pager {
    flex-wrap: wrap;
    row-gap: 0.2rem;
    width: auto;
    max-width: 100%;
    box-sizing: border-box;
}
.app-shell .arap-ledger-pager .ylsys-pager__summary {
    margin-left: 0.5rem;
    font-size: 0.8rem;
    white-space: nowrap;
}
.app-shell .arap-ledger-pager-actions {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.35rem;
    margin-left: auto;
}
.app-shell .doc-list-pager-bar .arap-ledger-pager-actions {
    margin-left: 0;
}
/* 同族列表操作鈕／說明列捷徑：淡藍底＋navy 字（次要導覽；勿實心 primary；高度＝--btn-control-height） */
.app-shell .doc-list-pager-bar .arap-ledger-pager-actions .btn,
.app-shell .doc-list-pager-bar .arap-ledger-action-btn,
.app-shell .report-hint-actions .btn,
.app-shell .report-hint-actions .arap-ledger-action-btn {
    font-weight: 400;
    text-decoration: none;
    border: 1px solid #93c5fd;
    background: #dbeafe;
    color: navy;
}
.app-shell .doc-list-pager-bar .arap-ledger-pager-actions .btn:hover,
.app-shell .doc-list-pager-bar .arap-ledger-action-btn:hover,
.app-shell .report-hint-actions .btn:hover,
.app-shell .report-hint-actions .arap-ledger-action-btn:hover {
    background: #bfdbfe;
    border-color: #60a5fa;
    color: navy;
}
.app-shell .doc-list-pager-bar .arap-ledger-pager-actions .btn.primary,
.app-shell .doc-list-pager-bar .arap-ledger-action-btn.primary,
.app-shell .report-hint-actions .btn.primary,
.app-shell .report-hint-actions .arap-ledger-action-btn.primary {
    /* 防殘留 primary：仍淡藍 navy 字，勿實心主色 */
    background: #dbeafe;
    border-color: #93c5fd;
    color: navy;
}
.app-shell .arap-ledger-action-btn {
    white-space: nowrap;
    border-radius: var(--btn-radius, 4px);
}
/* 說明列下方模組捷徑（取代「連結 · 連結」） */
.app-shell .report-hint-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    margin: 0 0 0.45rem;
}
/* 應收／應付正式列印改走 export=print 專頁；此處僅避免誤按 Ctrl+P 時側欄干擾 */
.app-shell .arap-ledger-panel .report-profit-summary {
    margin-bottom: 0.15rem;
}
/* 中間表身 + 底欄合計：表列吃剩餘高，footer 固定 */
.app-shell .arap-ledger-body {
    flex: 1 1 auto;
    min-height: 0;
    min-width: 0;
    max-width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 4px;
    background: #fff;
}
.app-shell .arap-ledger-foot {
    flex: 0 0 auto;
    border-top: 1px solid var(--border, #e2e8f0);
    background: var(--table-head-bg, #e8f0fe);
}
.app-shell .arap-ledger-foot-table {
    margin: 0;
}
.app-shell .arap-ledger-foot-table td {
    font-weight: 600;
    background: var(--table-head-bg, #e8f0fe);
    border-bottom: none;
}
/*
 * 帳款查詢列：強制單列（省一列；放大鏡跟在關鍵字後）
 * 勿 flex-wrap 把 actions 擠到第二行；過窄時表單區橫向微捲
 */
.app-shell .arap-ledger-panel form.partner-master-search.toolbar--list,
.app-shell .report-center-panel form.partner-master-search.toolbar--list {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    width: fit-content;
    max-width: 100%;
    column-gap: 0.35rem;
    row-gap: 0;
    box-sizing: border-box;
}
.app-shell .arap-ledger-panel .toolbar--list .toolbar-form,
.app-shell .report-center-panel .toolbar--list .toolbar-form {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    flex: 0 1 auto;
    min-width: 0;
    max-width: 100%;
    width: auto;
    gap: 0.3rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.app-shell .report-center-panel .toolbar .search-input,
.app-shell .report-center-panel .toolbar .select,
.app-shell .report-center-panel .toolbar .form-input {
    flex: 0 0 auto;
    min-width: 0;
}
/* 日期：壓過上方 .toolbar .form-input { flex:0 0 auto }，固定 7.5rem */
.app-shell .report-center-panel .toolbar .form-input--w-date,
.app-shell .arap-ledger-panel .toolbar .form-input--w-date {
    width: 7.5rem !important;
    max-width: 7.5rem !important;
    min-width: 0 !important;
    flex: 0 0 7.5rem !important;
    box-sizing: border-box;
}
.app-shell .report-center-panel .toolbar-form .toolbar-actions {
    flex: 0 0 auto;
    margin-left: 0;
}
/* 報表中心表身／底合計：複用帳款 body／foot */
.app-shell .report-center-panel .arap-ledger-body {
    flex: 1 1 auto;
    min-height: 0;
}
.app-shell .report-center-panel .arap-ledger-wrap {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    max-height: none;
}
.app-shell .arap-ledger-panel .toolbar .search-input,
.app-shell .arap-ledger-panel .toolbar .select,
.app-shell .arap-ledger-panel .toolbar .form-input {
    flex: 0 0 auto;
    min-width: 0;
}
.app-shell .arap-ledger-panel .toolbar-form .toolbar-actions {
    flex: 0 0 auto;
    margin-left: 0.15rem;
}
.app-shell .arap-ledger-panel .report-profit-hint {
    overflow-wrap: anywhere;
    word-break: break-word;
    white-space: normal;
}
.app-shell .arap-ledger-wrap {
    overflow-x: hidden !important;
    overflow-y: auto;
    max-width: 100%;
    min-width: 0;
    flex: 1 1 auto;
    min-height: 6rem;
    /* 覆蓋 list-scroll 固定 max-height；邊框改由 .arap-ledger-body */
    max-height: none !important;
    border: none;
    border-radius: 0;
    background: transparent;
}
.app-shell .arap-ledger-wrap .data-table thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: #f8fafc;
}
.app-shell .arap-ledger-table {
    table-layout: fixed;
    width: 100% !important;
    max-width: 100%;
    font-size: 0.8125rem;
}
.app-shell .arap-ledger-table th,
.app-shell .arap-ledger-table td {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    padding-left: 0.28rem;
    padding-right: 0.28rem;
}
/* 單據：單號 日期 類型 門市 往來 金額×3 ≈ 100% */
.app-shell .arap-ledger-table .arap-col-doc { width: 12%; }
.app-shell .arap-ledger-table .arap-col-date { width: 9%; }
.app-shell .arap-ledger-table .arap-col-type { width: 5%; }
.app-shell .arap-ledger-table .arap-col-store { width: 9%; }
.app-shell .arap-ledger-table .arap-col-name { width: 20%; }
.app-shell .arap-ledger-table .arap-col-money { width: 15%; }
.app-shell .arap-ledger-table .arap-col-code { width: 10%; }
.app-shell .arap-ledger-table .arap-col-num { width: 8%; }
.app-shell .arap-ledger-table .arap-cell-date,
.app-shell .arap-ledger-table .arap-cell-type {
    font-variant-numeric: tabular-nums;
}
.app-shell .arap-ledger-table th.num,
.app-shell .arap-ledger-table td.num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.01em;
}
.app-shell .arap-ledger-table code {
    font-size: 0.78rem;
    white-space: nowrap;
}
/* P22b 沖帳表單／列表：一頁內；操作列固定 footer 不溢出 */
.app-shell .arap-settle-panel {
    min-width: 0;
    max-width: 100%;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.app-shell .arap-settle-panel > .panel-head,
.app-shell .arap-settle-panel > .alert {
    flex: 0 0 auto;
}
.app-shell .arap-settle-form {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.app-shell .arap-settle-form-main {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.app-shell .arap-settle-head-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.15rem 0.65rem;
    align-items: center;
    max-width: 56rem;
    width: 100%;
    flex: 0 0 auto;
    margin-bottom: 0.35rem;
}
.app-shell .arap-settle-head-grid .form-field {
    grid-template-columns: 3.75rem minmax(0, 1fr);
    column-gap: 0.35rem;
}
.app-shell .arap-settle-head-grid .form-field > label {
    font-size: 0.82rem;
}
.app-shell .arap-settle-head-grid .arap-settle-partner-field {
    grid-column: span 2;
}
.app-shell .arap-settle-head-grid .arap-settle-remark-field {
    grid-column: 2 / -1;
}
.app-shell .arap-settle-head-grid .doc-header-partner-with-store .doc-lookup-wrap {
    flex: 1 1 auto;
    min-width: 0;
}
.app-shell .arap-settle-head-grid .doc-header-partner-with-store > select.form-input {
    flex: 0 0 auto;
}
@media (max-width: 960px) {
    .app-shell .arap-settle-head-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        max-width: none;
    }
    .app-shell .arap-settle-head-grid .arap-settle-partner-field {
        grid-column: 1 / -1;
    }
    .app-shell .arap-settle-head-grid .arap-settle-remark-field {
        grid-column: 1 / -1;
    }
}
.app-shell .arap-settle-form-main > .report-profit-hint {
    flex: 0 0 auto;
}
.app-shell .arap-settle-lines-wrap {
    flex: 1 1 auto;
    min-height: 6rem;
    margin-top: 0.35rem;
    max-height: none;
    overflow: auto;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 4px;
    background: #fff;
}
.app-shell .arap-settle-lines-wrap .data-table thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--table-head-bg, #eff6ff);
}
/* focus／↑↓ 捲入可視區時預留 sticky 表頭高度，避免首列被蓋 */
.app-shell .arap-settle-lines-wrap .data-table tbody tr {
    scroll-margin-top: 2.75rem;
}
.app-shell .arap-settle-lines-wrap .data-table tbody td .form-input {
    scroll-margin-top: 2.75rem;
}
/* 底欄：沖銷合計 + 取消／草稿／過帳（永不被表列擠出視窗） */
.app-shell .arap-settle-foot {
    flex: 0 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem 1rem;
    margin-top: 0.4rem;
    padding: 0.45rem 0.55rem;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 4px;
    background: var(--table-head-bg, #e8f0fe);
    box-sizing: border-box;
}
.app-shell .arap-settle-foot-sum {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    font-size: 0.9rem;
}
.app-shell .arap-settle-foot-sum-label {
    font-weight: 600;
    color: #334155;
}
.app-shell .arap-settle-foot-sum .num {
    font-size: 1.05rem;
    font-variant-numeric: tabular-nums;
}
.app-shell .arap-settle-actions {
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
    justify-content: flex-end;
}
.app-shell .arap-settle-pager {
    width: auto;
    max-width: 100%;
    align-self: flex-start;
    margin: 0.25rem 0 0.35rem;
}
.app-shell .arap-settle-panel .partner-master-search {
    margin-bottom: 0.35rem;
}
.app-shell .arap-settle-panel input.num {
    text-align: right;
}
.app-shell .arap-settle-kind-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.55rem 0.85rem;
}
.app-shell .arap-settle-kind-opt {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.875rem;
    font-weight: 600;
    cursor: pointer;
}
.app-shell .arap-settle-deposit-bal {
    margin-left: auto;
    font-size: 0.85rem;
}
.app-shell .arap-settle-foot-sum {
    gap: 0.35rem 0.75rem;
}

/* 總覽頁同防橫捲 */
.app-shell .panel:has(.arap-summary-grid) {
    min-width: 0;
    max-width: 100%;
    overflow-x: hidden;
}
.app-shell .panel:has(.arap-summary-grid) .toolbar--list,
.app-shell .panel:has(.arap-summary-grid) .toolbar--list .toolbar-form {
    flex-wrap: wrap;
    max-width: 100%;
}
.app-shell .panel:has(.arap-summary-grid) .toolbar .select,
.app-shell .panel:has(.arap-summary-grid) .toolbar .form-input {
    flex: 0 1 auto;
    min-width: 0;
    max-width: none;
}

/* P17／P18／P20／P22 報表彙總卡／表腳（利潤＋進銷退貨＋業務業績＋帳款共用風格） */
.report-profit-hint,
.report-stat-hint {
    margin: 0.35rem 0 0.35rem;
    font-size: 0.8125rem;
}
.report-profit-summary,
.report-stat-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 0.65rem;
    margin: 0 0 0.55rem;
    align-items: stretch;
}
.report-profit-summary-item,
.report-stat-summary-item {
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
    min-width: 7rem;
    padding: 0.2rem 0.65rem;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: var(--radius, 4px);
    background: var(--surface, #fff);
}
.report-profit-summary-item--accent,
.report-stat-summary-item--accent {
    border-color: #93c5fd;
    background: var(--table-head-bg, #e8f0fe);
}
.report-profit-summary-label,
.report-stat-summary-label {
    font-size: 0.75rem;
    color: var(--muted, #64748b);
}
.report-profit-summary-value,
.report-stat-summary-value {
    font-size: 1.05rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.report-profit-table,
.report-stat-table {
    table-layout: fixed;
    width: 100%;
}
.report-profit-table .report-col-code { width: 7rem; }
.report-profit-table .report-col-name { width: auto; }
.report-profit-table .report-col-num { width: 5rem; }
.report-profit-table .report-col-money { width: 7rem; }
.report-profit-table .report-col-pct { width: 5rem; }
.report-profit-table .report-col-doc { width: 9rem; }
.report-profit-table .report-col-date { width: 8.5rem; }
.report-profit-table .report-col-type { width: 3.5rem; }
.report-profit-table .report-col-store { width: 7rem; }
.report-profit-table tfoot .report-profit-foot td,
.report-stat-table tfoot .report-stat-foot td {
    font-weight: 600;
    background: var(--table-head-bg, #e8f0fe);
    border-top: 1px solid var(--border, #e2e8f0);
}
.report-profit-table tr.is-warn td,
.report-stat-table tr.is-warn td {
    color: var(--danger, #b91c1c);
}
.report-profit-table tr.is-muted-row td,
.report-stat-table tr.is-muted-row td {
    color: var(--muted, #64748b);
}
.report-sales-staff-table .report-col-code { width: 5.5rem; }
.report-stat-check-label {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    white-space: nowrap;
    font-weight: 400;
    cursor: pointer;
}
.report-stat-check-label input[type="checkbox"] {
    margin: 0;
}
.report-stock-compare-table {
    min-width: 68rem;
}
.report-stock-compare-table th:nth-child(1),
.report-stock-compare-table td:nth-child(1) { width: 7rem; }
.report-stock-compare-table th:nth-child(2),
.report-stock-compare-table td:nth-child(2) { width: auto; min-width: 10rem; }
.report-stock-compare-table th:nth-child(3),
.report-stock-compare-table td:nth-child(3) { width: 7rem; }
.report-stock-compare-table th:nth-child(n+4),
.report-stock-compare-table td:nth-child(n+4) {
    width: 4.75rem;
    font-variant-numeric: tabular-nums;
}

/* ── 強制深色／Windows 高對比（forced-colors）：按鈕／類按鈕對比 ──
 * 淺色主題寫死 #fff／藍字時，瀏覽器自動深色或系統高對比會變「淺底淺字」。
 * 此處改用系統色（ButtonFace／ButtonText／LinkText），全站同族一次覆蓋。
 */
@media (forced-colors: active) {
    .btn,
    a.btn,
    button.btn,
    input[type="submit"].btn,
    input[type="button"].btn,
    .login-submit,
    .login-form .login-submit,
    .icon-btn,
    button.nav-group-toggle,
    .sidebar .nav-group-toggle,
    .partner-master-action-btn,
    .partner-master-action-link,
    .partner-master-action-link--pill,
    .partner-master-action-link--cancel,
    .partner-master-action-btn--save,
    .partner-master-action-btn--danger,
    .partner-master-action-link--disabled,
    .partner-master-search .toolbar-actions .btn,
    .partner-master-search .toolbar-actions .btn.partner-master-search-submit,
    .ylsys-pager__btn,
    .ylsys-pager__btn--nav,
    .ylsys-pager__btn--boundary,
    .ylsys-pager__btn--jump,
    .btn-linkish,
    .doc-query-fields > .btn,
    .doc-query-fields > a.btn,
    .doc-line-pick-toolbar .btn,
    .doc-line-pick-actions .btn,
    .doc-lookup-pick-modal .doc-line-pick-toolbar .btn,
    .doc-lookup-pick-modal .doc-line-pick-actions .btn,
    .form-actions .btn,
    button.link,
    button.btn-link,
    button.doc-line-remove,
    .doc-line-remove,
    .doc-line-pick,
    .doc-line-pick-recent-toggle,
    .ylsys-help-btn {
        background: ButtonFace !important;
        color: ButtonText !important;
        border: 1px solid ButtonBorder !important;
        forced-color-adjust: none;
    }

    .btn:hover,
    a.btn:hover,
    button.btn:hover,
    .partner-master-action-btn:hover,
    .partner-master-action-link:hover,
    .partner-master-action-btn--save:hover,
    .partner-master-action-btn--danger:hover,
    .partner-master-action-link--pill:hover,
    .partner-master-action-link--cancel:hover,
    .ylsys-pager__btn:hover:not(:disabled),
    button.link:hover,
    .doc-line-remove:hover {
        background: Highlight !important;
        color: HighlightText !important;
        border-color: Highlight !important;
    }

    .btn:disabled,
    button.btn:disabled,
    .ylsys-pager__btn:disabled,
    .partner-master-action-link--disabled {
        color: GrayText !important;
        border-color: GrayText !important;
    }

    /* 純文字連結（非 button）：用 LinkText，勿鋪 ButtonFace */
    a.link,
    a.btn-link,
    .app-shell a.link,
    .app-shell a.btn-link,
    .doc-query-hint .link,
    .doc-line-pick-actions a.link,
    .doc-line-pick-new,
    .logout-link {
        background: transparent !important;
        color: LinkText !important;
        border-color: transparent !important;
        forced-color-adjust: none;
    }

    a.link:hover,
    a.btn-link:hover,
    .logout-link:hover {
        color: LinkText !important;
        text-decoration: underline;
    }

    /* 操作列圖示與文字同色，避免圖示殘留亮色／深色 */
    .partner-master-action-icon--blue,
    .partner-master-action-icon--danger,
    .partner-master-action-icon--save,
    .partner-master-action-icon--cancel,
    [class^="partner-master-action-icon"] {
        color: inherit !important;
    }
}


