:root{font-family:Inter,"Microsoft YaHei","PingFang SC",sans-serif;color:#172b4d;background:#f3f6fb;font-size:14px;--blue:#246bfd;--ink:#172b4d;--muted:#8290a5;--line:#e6ebf3;--green:#099b62}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #a8c8ff;outline-offset:2px}.shell{display:flex;min-height:100vh}.sidebar{width:216px;flex:none;background:#fff;border-right:1px solid var(--line);position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.brand{height:72px;display:flex;align-items:center;gap:11px;padding:0 22px;border-bottom:1px solid #f0f3f8;font-weight:700;font-size:17px;color:#14274b}.brand-mark{width:32px;height:32px;background:#246bfd;border-radius:9px;color:#fff;display:grid;place-items:center;font-size:18px}.brand small{display:block;font-size:10px;color:#99a5b4;font-weight:500;letter-spacing:.12em;margin-top:2px}.nav{padding:20px 12px;overflow:auto}.nav-label{padding:12px 13px 8px;color:#a1adbd;font-size:11px}.nav-button{border:0;background:transparent;width:100%;text-align:left;color:#61718a;height:42px;border-radius:7px;display:flex;align-items:center;gap:12px;padding:0 13px;margin:2px 0;font-weight:500}.nav-button:hover{background:#f5f8fd;color:#246bfd}.nav-button.active{background:#eaf2ff;color:#246bfd;font-weight:700}.nav-icon{width:18px;text-align:center;font-size:16px;color:inherit}.sidebar-foot{margin:auto 16px 20px;border-top:1px solid var(--line);padding:18px 8px 0;color:#91a0b2;font-size:12px}.main{min-width:0;flex:1}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);padding:0 32px}.breadcrumb{color:#8a98ab;font-size:13px}.breadcrumb strong{color:#334764}.top-actions{display:flex;align-items:center;gap:18px;color:#677891}.avatar{width:32px;height:32px;background:#e6efff;color:#246bfd;border-radius:50%;display:grid;place-items:center;font-weight:700}.content{padding:28px 32px 56px;max-width:1700px;margin:auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}.page-title{margin:0;font-size:22px;line-height:1.4;color:#102443;font-weight:700}.page-subtitle{font-size:13px;color:#8a99ad;margin:6px 0 0}.panel{background:#fff;border:1px solid #e7edf5;border-radius:9px;padding:20px;margin-bottom:16px;box-shadow:0 2px 8px rgba(27,62,109,.025)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.panel-head h2,.section-title{margin:0;color:#142846;font-size:16px}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.btn{border:1px solid #dce4ef;background:white;color:#344760;border-radius:6px;padding:8px 14px;line-height:18px;min-height:36px}.btn:hover{border-color:#91b7ff;color:#246bfd}.btn-primary{background:#246bfd;border-color:#246bfd;color:#fff}.btn-primary:hover{background:#165eea;color:white}.btn-ghost{background:#f4f7fb;border-color:#f4f7fb}.muted{color:#91a0b2}.input,.select,input:not([type=checkbox]):not([type=radio]),select{height:36px;border:1px solid #dce4ee;border-radius:6px;padding:0 11px;color:#344760;background:#fff;min-width:0}.input::placeholder,input::placeholder{color:#a7b3c1}.field{display:flex;flex-direction:column;gap:7px;color:#5f718b;font-size:12px}.table-wrap{width:100%;overflow:auto}.data-table{width:100%;border-collapse:collapse;white-space:nowrap}.data-table th{text-align:left;background:#f5f7fb;color:#7b8ba1;font-size:12px;font-weight:500;padding:13px 14px}.data-table td{padding:15px 14px;border-bottom:1px solid #edf1f6;font-size:13px}.data-table tr:last-child td{border-bottom:0}.badge{display:inline-flex;padding:3px 8px;border-radius:4px;background:#edf4ff;color:#246bfd;font-size:12px}.tabs{display:flex;gap:5px;align-items:center}.tab{border:0;background:transparent;color:#8190a4;padding:8px 13px;border-radius:6px}.tab.active{background:#eaf2ff;color:#246bfd;font-weight:600}.empty{padding:55px 20px;text-align:center;color:#9aa8b9}.link{border:0;background:none;color:#246bfd;padding:0;cursor:pointer}.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:16px}.metric{background:white;border:1px solid #e7edf5;border-radius:9px;padding:18px;min-width:0}.metric-top{display:flex;align-items:center;gap:10px;color:#718199;font-size:13px}.metric-icon{height:34px;width:34px;border-radius:8px;display:grid;place-items:center;background:#eaf2ff;color:#246bfd;font-size:16px}.metric strong{display:block;font-size:25px;letter-spacing:-.04em;color:#132c50;margin:13px 0 5px}.metric small{font-size:11px;color:#9ba8b8}.positive{color:#0b9c61!important}.brand-tabs{display:flex;gap:8px;align-items:center}.brand-chip{border:1px solid #dce5f0;background:#fff;color:#667890;border-radius:6px;padding:8px 16px}.brand-chip.active{background:#246bfd;border-color:#246bfd;color:white}.dashboard-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}.dashboard-grid .panel{margin:0}.trend{height:180px;display:flex;align-items:end;gap:5%;padding:20px 6% 0;border-bottom:1px solid #e6ecf4;background:repeating-linear-gradient(to top,transparent 0,transparent 44px,#eff3f8 45px)}.trend-bar{background:#5a91fd;border-radius:4px 4px 0 0;flex:1;min-width:12px;max-width:46px}.trend-labels{display:flex;justify-content:space-around;font-size:11px;color:#9caabc;margin-top:10px}.summary-row{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-bottom:1px solid #edf1f6}.summary-row:last-child{border-bottom:0}.summary-row strong{font-size:16px}.notice{background:#f0f6ff;border:1px solid #deebff;border-radius:7px;padding:14px 16px;color:#58739a;font-size:13px;line-height:1.6}.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:#fff}.login-aside{background:#102b53;color:white;padding:64px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-aside:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.1);width:480px;height:480px;border-radius:50%;right:-180px;bottom:-150px;box-shadow:0 0 0 65px rgba(255,255,255,.025),0 0 0 130px rgba(255,255,255,.02)}.login-aside .brand{padding:0;border:0;color:#fff}.login-aside h1{font-size:34px;line-height:1.45;margin:0 0 18px}.login-aside p{color:#9fb5d4;font-size:15px;line-height:1.9}.login-aside footer{color:#8ca4c5;font-size:12px}.login-main{display:grid;place-items:center;padding:30px}.login-box{width:min(360px,100%)}.login-box h2{font-size:26px;margin:0 0 8px}.login-box p{color:#91a0b2;margin:0 0 30px}.login-box label{display:block;margin:18px 0 8px;font-weight:600;font-size:13px}.login-box input{width:100%;height:44px!important}.login-box button{width:100%;height:44px;margin-top:26px}.login-note{font-size:12px;color:#9faabd;margin-top:18px;line-height:1.7}.toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);padding:12px 18px;background:#fff;border:1px solid #dce6f3;box-shadow:0 8px 30px #172b4d24;border-radius:8px;z-index:999;color:#405875}.modal-mask{position:fixed;inset:0;background:#14243a77;display:flex;justify-content:flex-end;z-index:100}.drawer{background:#fff;width:min(560px,100%);height:100%;overflow:auto}.drawer-header{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid var(--line);font-size:16px;font-weight:700}.drawer-body{padding:24px}.drawer-close{border:0;background:none;font-size:22px;color:#8090a3}.drawer-footer{padding:16px 24px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(3,1fr)}.dashboard-grid{grid-template-columns:1fr}}@media(max-width:720px){.sidebar{width:65px}.brand{padding:0 16px}.brand-text,.nav-button span:last-child,.nav-label,.sidebar-foot{display:none}.nav{padding:20px 8px}.nav-button{justify-content:center;padding:0}.topbar{padding:0 16px}.content{padding:22px 16px}.metric-grid{grid-template-columns:repeat(2,1fr)}.login{grid-template-columns:1fr}.login-aside{display:none}.page-head{align-items:flex-start;flex-direction:column}}
:root .nav-parent .nav-chevron{margin-left:auto;color:#a2afbf;font-size:16px;line-height:1}
.nav-parent.current-parent{color:#246bfd}
.nav-children{margin:0 0 4px 21px;padding-left:10px;border-left:1px solid #e7edf5}
.nav-child{display:block;width:100%;height:36px;padding:0 12px;border:0;border-radius:6px;background:transparent;text-align:left;color:#718199;font-size:13px}
.nav-child:hover{background:#f5f8fd;color:#246bfd}
.nav-child.active{background:#eaf2ff;color:#246bfd;font-weight:600}
@media(max-width:720px){.nav-parent span:nth-child(2),.nav-parent .nav-chevron{display:none}.nav-children{margin:0;padding:0;border:0}.nav-child{font-size:0;height:28px;padding:0;text-align:center}.nav-child:before{content:'•';font-size:16px}}
:root .required-star{display:inline;color:#f16b72;margin-left:4px;font-weight:600}
html[data-theme="light"] .required-star{color:#d84444}

/* 商家后台的内容面板共用无描边外观。 */
#content .panel,
#content .sl-supplier-grid > .sl-supplier-card,
#content .tkt > .tkt-panel {
  border: 0;
}

.voucher-field { margin:0 0 18px; }
.voucher-label { margin-bottom:8px; font-size:13px; color:var(--ink); }
.voucher-label span,.voucher-pick small { color:var(--muted); }
.voucher-zone { border:1px dashed color-mix(in srgb,var(--muted) 40%,var(--line)); border-radius:8px; background:var(--surface-raised); }
.voucher-zone:hover,.voucher-zone:focus-within,.voucher-zone.is-dragging { border-color:var(--accent); }
.voucher-zone.is-dragging { background:color-mix(in srgb,var(--accent) 9%,var(--surface)); }
.voucher-pick { display:grid; justify-items:center; gap:6px; width:100%; padding:16px; border:0; border-radius:inherit; background:transparent; font:inherit; font-size:13px; color:var(--muted); }
.voucher-pick svg,.voucher-pick strong { color:var(--accent); }
.voucher-pick small { font-size:12px; }
.voucher-file { display:flex; align-items:center; gap:14px; min-height:98px; padding:12px; }
.voucher-zone [hidden] { display:none; }
.voucher-file img { width:76px; height:72px; object-fit:contain; border-radius:4px; background:var(--surface); }
.voucher-info { flex:1; min-width:0; }
.voucher-info strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--ink); font-size:13px; }
.voucher-actions { display:flex; gap:14px; margin-top:8px; font-size:13px; }
.voucher-actions [data-remove] { color:var(--muted); }
.ledger-voucher { margin:16px 0 0; }
.ledger-voucher figcaption { margin-bottom:8px; color:var(--muted); font-size:13px; }
.ledger-voucher img { display:block; max-width:100%; height:auto; }
.rz-switch { display:inline-flex; align-items:center; gap:8px; color:var(--muted); white-space:nowrap; cursor:pointer; }
.rz-switch input { appearance:none; flex:none; position:relative; width:38px; min-width:38px; height:22px; margin:0; padding:0; border:0; border-radius:12px; background:var(--muted); cursor:pointer; }
.rz-switch input:checked { background:var(--accent); }
.rz-switch input::before { content:""; position:absolute; left:3px; top:3px; width:16px; height:16px; border-radius:50%; background:white; }
.rz-switch input:checked::before { transform:translateX(16px); }
.rz-switch input:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
.rz-config-help p { margin:8px 0 0; color:var(--muted); line-height:1.7; }
.rz-config-help strong { margin-right:10px; color:var(--ink); }
#rz-ledger { width:100%; }
html[data-theme] :is(input,select,textarea,.po-account-list)[aria-invalid="true"],
html[data-theme] .ri-file-box:has(input[aria-invalid="true"]) {
  border-color:var(--field-error-color,#d63939) !important;
  box-shadow:0 0 0 1px var(--field-error-color,#d63939) !important;
  outline-color:var(--field-error-color,#d63939);
}
html[data-theme="dark"] { --field-error-color:#ff8585; }
html[data-theme] .toast.field-warning {
  color:var(--field-error-color,#d63939);
  border:1px solid currentColor;
  background:var(--surface);
}

/* The overlay controls placement; each module keeps its own form and actions. */
html .drawer-layout {
  display:flex;
  justify-content:flex-end;
  align-items:stretch;
  padding:0;
}
html .drawer-layout > [role="dialog"] {
  display:flex;
  flex-direction:column;
  width:min(480px,100%);
  height:100%;
  max-height:none;
  min-width:0;
  overflow:hidden;
  border-radius:0;
}
html .drawer-layout > .drawer-wide {width:min(1000px,100%)}
html .drawer-layout > .tkt-preview-panel {width:min(740px,100%)}
html .drawer-layout form:is(.ro-create-form,#sale-modal-form) {
  display:flex;
  flex:1;
  flex-direction:column;
  min-height:0;
}
html .drawer-layout :is(.ro-create-body,.sale-modal-body,.po-body,.pr-modal-body,.ps-drawer-body,.tkt-preview-body) {
  flex:1;
  min-height:0;
  overflow:auto;
  overscroll-behavior:contain;
}
html .drawer-layout :is(.ro-create-head,.sale-modal-head,.po-head,.pr-modal-head,.ps-drawer-head,.tkt-preview-head),
html .ro-side-dialog .ro-create-head {
  flex:0 0 64px;
  padding:0 24px;
}
html .compact-layout {
  display:flex;
  align-items:center;
  justify-content:center;
  padding:16px;
}
html .compact-layout > [role="dialog"] {
  width:min(460px,100%);
  height:auto;
  max-height:100%;
  overflow:auto;
  border-radius:10px;
}
