/* v4.1 — shared surface polish; geometry and information hierarchy preserved. */
html:root{--bg:#f4f6fa;--surface:#fff;--soft:#f7f9fc;--input:#f8fafc;--line:#dce3ed;--control:#a5b2c5;--shadow:0 2px 3px #10254a03,0 8px 28px #10254a05;--focus-ring:0 0 0 3px #3068f51a;--raised:#fff;--surface-highlight:#ffffff;--hover-surface:#edf2fb}
html[data-theme=dark]{--bg:#0b1120;--surface:#121c2e;--soft:#19253a;--input:#101a2c;--nav:#101a2b;--header:#101a2b;--raised:#1a2840;--line:#2c3b54;--control:#61748e;--ink:#edf3fc;--muted:#b2c1d7;--icon:#d2def0;--blue:#a2beff;--blue-soft:#22365a;--selected:#22365a;--row-alt:#152035;--shadow:0 2px 4px #0002,0 12px 32px #0002;--focus-ring:0 0 0 3px #739dff26;--surface-highlight:#ffffff09;--hover-surface:#20304a;--danger-bg:#3a2234;--success-bg:#14382f;--warning-bg:#3b301e}
body.catalog .card,body.catalog .ds-kpi{border-radius:12px;box-shadow:var(--shadow);border-color:var(--line)}body.catalog .card.pad{background:linear-gradient(150deg,var(--surface-highlight),transparent 48%),var(--surface)}body.catalog .ref-card{box-shadow:var(--shadow)}body.catalog .button,body.catalog .icon-button{border-radius:7px;box-shadow:0 1px 2px #0c1b3408,inset 0 1px 0 var(--surface-highlight);transition:background-color 140ms,border-color 140ms,box-shadow 140ms,transform 120ms}body.catalog .button:hover:not(:disabled),body.catalog .icon-button:hover:not(:disabled){background:var(--hover-surface);box-shadow:0 2px 5px #091b3210}body.catalog .button.primary{background:linear-gradient(180deg,#3a73ff,#265cf0);border-color:#2c62ed;color:#fff;box-shadow:0 2px 5px #245cf329,inset 0 1px 0 #ffffff29}body.catalog .button.primary:hover:not(:disabled){background:linear-gradient(180deg,#316af5,#1f52dc);box-shadow:0 3px 10px #245cf33b}body.catalog .button:active:not(:disabled){transform:translateY(1px);box-shadow:inset 0 1px 3px #0002}body.catalog .button.ghost{box-shadow:none}body.catalog .button.soft{background:var(--blue-soft);border-color:transparent;color:var(--blue)}body.catalog .button.danger-button{background:linear-gradient(180deg,#cc2850,#b5123b);border-color:#b5123b;color:#fff}body.catalog .button.success-button{background:linear-gradient(180deg,#098668,#077358);color:#fff;border-color:#077358}body.catalog .ds-field{border-radius:7px;background-color:var(--input);box-shadow:inset 0 1px 2px #0d1a3304;transition:background-color 140ms,border-color 140ms,box-shadow 140ms}body.catalog .ds-field:focus{box-shadow:var(--focus-ring);background-color:var(--surface);border-color:var(--blue)}body.catalog .input-addon{border-radius:7px}body.catalog .input-addon:focus-within{box-shadow:var(--focus-ring)}body.catalog select.ds-field{appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%237888a3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat}body.catalog .cat-link{border-radius:7px}body.catalog .cat-link:hover{background:var(--hover-surface)}body.catalog .cat-link.active{box-shadow:inset 0 1px 0 var(--surface-highlight)}body.catalog .chip{transition:background-color 140ms,border-color 140ms;box-shadow:0 1px 2px #10254a04}body.catalog .chip:hover{background:var(--hover-surface)}body.catalog .badge,body.catalog .ref-table .ref-badge{border-radius:6px}body.catalog .ref-thumb{border-radius:7px;background:linear-gradient(135deg,var(--soft),var(--surface))}body.catalog .ref-actions button:hover,body.catalog .ds-icon-action:hover{box-shadow:0 2px 6px #0001}body.catalog table.ds-table th{background:var(--soft)}body.catalog table.ds-table tbody tr{transition:background-color 120ms}body.catalog .dialog{border:1px solid var(--control);border-radius:14px;background:var(--raised);box-shadow:0 24px 80px #0005}body.catalog .popover-panel,body.catalog .action-menu,body.catalog .combobox-wrap ul{border-radius:10px;box-shadow:0 12px 36px #0002;background:var(--raised)}body.catalog .disclosure{border-radius:9px}body.catalog .disclosure summary{padding:12px 14px}body.catalog .alert{border-radius:9px}body.catalog .ds-switch:focus-visible{outline-offset:4px}body.catalog .ds-switch:before{box-shadow:0 1px 3px #0003}body.catalog .ds-kpi strong{letter-spacing:-.6px}body.catalog .ds-chart .grid-line{opacity:.7}body.catalog .toast{border-radius:10px;padding:14px 18px;box-shadow:0 8px 32px #0003}
/* A shared date/time editor with a custom, keyboard-operated calendar. */
.ds-date-control{display:flex;align-items:center;position:relative;min-width:0;width:100%}body.catalog .ds-date-control>.ds-field{width:100%;padding-right:42px}body.catalog .ds-date-control input::-webkit-calendar-picker-indicator{display:none}body.catalog .ds-date-trigger{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:30px;height:28px;display:grid;place-items:center;background:transparent;border:0;border-radius:5px;color:var(--icon);cursor:pointer}.ds-date-trigger svg{width:18px;height:18px}body.catalog .ds-date-trigger:hover{background:var(--blue-soft);color:var(--blue)}body.catalog .ds-date-trigger:disabled{pointer-events:none}.ds-picker{position:fixed;inset:auto;margin:0;padding:18px;width:330px;max-width:calc(100vw - 24px);border:1px solid var(--control);border-radius:13px;background:var(--raised);color:var(--ink);box-shadow:0 10px 25px #0002,0 24px 65px #0002;z-index:150;overflow:auto;max-height:calc(100dvh - 24px);font:14px/1.4 Roboto,Arial}.ds-picker:popover-open{animation:catalog-enter 140ms var(--ease)}.ds-picker::backdrop{background:transparent}.ds-picker-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px}.ds-picker-heading strong{font-size:14px}.ds-picker-month{display:flex;align-items:center;gap:8px;flex:1}.ds-picker-month select{background:var(--input);border:1px solid var(--line);color:var(--ink);border-radius:6px;min-height:32px;padding:4px;font:500 13px Roboto;max-width:116px}.ds-picker-controls{display:flex;gap:3px}.ds-picker button{font:500 13px Roboto;cursor:pointer}.ds-picker-nav{background:transparent;color:var(--icon);border:1px solid var(--line);border-radius:6px;width:29px;height:29px;display:grid;place-items:center}.ds-picker-nav:hover{background:var(--hover-surface)}.ds-picker-week,.ds-picker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.ds-picker-week span{text-align:center;font-size:11px;color:var(--muted);padding:5px 0 10px;font-weight:500}.ds-picker-grid button{height:34px;min-width:0;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--ink);padding:0;font-variant-numeric:tabular-nums}.ds-picker-grid button:hover:not(:disabled){background:var(--hover-surface)}.ds-picker-grid button.outside{color:var(--muted);opacity:.55}.ds-picker-grid button[aria-current=date]{border-color:var(--blue);color:var(--blue)}.ds-picker-grid button[aria-selected=true]{background:var(--action-fill);border-color:var(--action-fill);color:white;box-shadow:0 2px 5px #245cf329}.ds-picker-grid button:disabled{opacity:.25;cursor:not-allowed}.ds-picker-time{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);margin-top:14px;padding-top:14px;color:var(--muted)}.ds-picker-time label{margin-right:auto;font-size:12px}.ds-picker-time select{background:var(--input);color:var(--ink);border:1px solid var(--control);border-radius:6px;padding:6px;min-height:34px;width:63px}.ds-picker-footer{display:flex;gap:8px;align-items:center;justify-content:space-between;border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.ds-picker-footer button{padding:7px 11px;border:1px solid var(--control);border-radius:6px;background:var(--surface);color:var(--ink)}.ds-picker-footer .picker-apply{background:var(--action-fill);border-color:var(--action-fill);color:#fff}.ds-picker-footer .picker-today{color:var(--blue);border-color:transparent;background:transparent}.ds-picker-error{color:var(--red);font-size:12px;margin-top:8px}.ds-picker-hint{font-size:11px;color:var(--muted);margin:10px 0 0}.ds-picker :focus-visible{outline:2px solid var(--blue);outline-offset:2px}
/* File input remains accessible; the native chrome is replaced by a drop zone. */
body.catalog .upload-zone{position:relative;padding:28px 20px;text-align:center;background:linear-gradient(145deg,var(--blue-soft),var(--surface) 75%);border:1.5px dashed var(--control);border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:10px;cursor:pointer;transition:background 140ms,border-color 140ms,box-shadow 140ms}body.catalog .upload-zone:hover,body.catalog .upload-zone.dragging{border-color:var(--blue);box-shadow:var(--focus-ring);background:var(--blue-soft)}body.catalog .upload-zone:focus-within{outline:3px solid var(--blue);outline-offset:3px}body.catalog .upload-zone input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;z-index:1}body.catalog .upload-zone .upload-symbol{width:48px;height:48px;border:1px solid var(--line);background:var(--raised);color:var(--blue);border-radius:12px;display:grid;place-items:center;box-shadow:0 3px 8px #0001;margin-bottom:4px}.upload-symbol svg{width:23px;height:23px}.upload-zone .upload-title{font-size:14px;font-weight:500;color:var(--ink)}.upload-zone .upload-title b{color:var(--blue);font-weight:500}.upload-zone .upload-caption{color:var(--muted);font-size:12px;font-weight:400}.upload-zone .upload-types{display:flex;gap:6px;margin-top:3px}.upload-types span{background:var(--surface);color:var(--muted);padding:3px 7px;border:1px solid var(--line);border-radius:5px;font-size:10px;font-weight:500}.upload-selected{display:flex;align-items:center;gap:12px;padding:14px;background:var(--soft);border:1px solid var(--line);border-radius:9px;margin-top:14px}.upload-selected .upload-file-icon{width:38px;height:42px;display:grid;place-items:center;border-radius:7px;background:var(--blue-soft);color:var(--blue);flex-shrink:0}.upload-selected .upload-file-info{flex:1;min-width:0}.upload-file-info strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-file-info small{display:block;color:var(--muted);margin-top:3px;font-size:12px}.upload-selected button{border:0;background:none;color:var(--red);border-radius:5px;width:32px;height:32px;display:grid;place-items:center}.upload-selected button:hover{background:var(--danger-bg)}.upload-selection-note{font-size:12px;color:var(--muted);margin-top:12px}
@media(max-width:600px){body.catalog .ds-date-trigger{height:32px;width:32px}.ds-picker{padding:14px;width:330px}.ds-picker-grid button{height:36px}body.catalog .upload-zone{padding:24px 16px}}
body.catalog .ds-picker .ds-picker-hint{font-size:11px;line-height:16px;margin-top:9px;color:var(--muted)}body.catalog .ds-picker .ds-picker-error{font-size:12px;line-height:16px;color:var(--red)}body.catalog .ds-picker .ds-picker-error:empty{display:none}.ds-picker-grid button.outside{opacity:1;color:var(--muted)}body.catalog .ds-picker strong{color:var(--ink)}body.catalog .upload-zone .upload-caption{font-size:12px}body.catalog .upload-selection-note{font-size:12px}
