/* Canonical component layer. All specimens use these same primitives. */
html:root{--bg:#f3f4f6;--surface:#ffffff;--soft:#f7f9fc;--input:#f3f4f6;--ink:#152033;--muted:#475569;--line:#d8e0ea;--control:#94a3b8;--blue:#245cf3;--blue-soft:#eaf0ff;--action-fill:#245cf3;--action-on:#fff;--green:#087f65;--success-bg:#e5f5ee;--amber:#865500;--warning-bg:#fff4d9;--red:#be123c;--danger-bg:#fff0f3;--icon:#334155;--row-alt:#f8fafc;--selected:#eaf0ff;--nav:#ffffff;--header:#ffffff;--switch-track:#94a3b8;--shadow:0 4px 16px #0f172a0a;--chart-1:#245cf3;--chart-2:#07836b;--chart-3:#8b5cf6;--chart-4:#b96900;color-scheme:light}
html[data-theme=dark]{--bg:#0b1220;--surface:#101728;--soft:#162036;--input:#16203a;--ink:#f1f5f9;--muted:#b7c4d8;--line:#2b3950;--control:#60748e;--blue:#91b4ff;--blue-soft:#1b2b4b;--action-fill:#3068f5;--action-on:#fff;--green:#6ee7b7;--success-bg:#10382f;--amber:#fbd17a;--warning-bg:#392c15;--red:#ff8fa8;--danger-bg:#351c30;--icon:#d2dded;--row-alt:#131d30;--selected:#1b2b4b;--nav:#101728;--header:#111a2e;--switch-track:#53657e;--shadow:0 8px 24px #0003;--chart-1:#91b4ff;--chart-2:#6ee7b7;--chart-3:#c4a5ff;--chart-4:#fbd17a;color-scheme:dark}
body.catalog{background:var(--bg);color:var(--ink);font-weight:400}body.catalog header{background:var(--header);border-color:var(--line)}body.catalog aside{background:var(--nav);border-color:var(--line)}body.catalog .shell,body.catalog main{background:var(--bg)}body.catalog .card,body.catalog dialog,body.catalog .popover-panel,body.catalog .action-menu,body.catalog .combobox-wrap ul{background:var(--surface);color:var(--ink);border-color:var(--line)}body.catalog .cat-link{color:var(--ink);font-size:14px;font-weight:500}body.catalog .cat-link svg{color:var(--icon);stroke-width:1.9}body.catalog .cat-link.active{color:var(--blue);background:var(--selected)}body.catalog .cat-link.active svg{color:var(--blue)}body.catalog .cat-group>summary{color:var(--muted);font-size:11px;font-weight:700}body.catalog .muted,body.catalog .section-note,body.catalog .page-heading p,body.catalog .breadcrumb,body.catalog .ref-table small,body.catalog .table-footer,body.catalog .ref-footer,body.catalog .ref-views,body.catalog .ref-quick,body.catalog .variant-label{color:var(--muted)}body.catalog h1,body.catalog h2,body.catalog h3,body.catalog strong,body.catalog .brand{color:var(--ink)}body.catalog a,body.catalog .text-button{color:var(--blue)}body.catalog .menu-search,body.catalog .global-search{background:var(--input);border-color:var(--line);color:var(--muted)}body.catalog .menu-search input,body.catalog .global-search input{background:transparent;color:var(--ink)}body.catalog input::placeholder,body.catalog textarea::placeholder{color:var(--muted);opacity:1}body.catalog svg{stroke-width:1.9}body.catalog :focus-visible{outline:3px solid var(--blue);outline-offset:3px}
/* Every text-like field: identical height, border, radius, font, states. */
body.catalog .ds-field{height:36px;min-height:36px;max-width:100%;padding:7px 11px;border:1px solid var(--control);border-radius:6px;background-color:var(--input);color:var(--ink);font:400 var(--user-font,14px)/20px Roboto,"Segoe UI",Arial,sans-serif;box-shadow:none;transition:border-color 120ms,box-shadow 120ms,background-color 120ms}body.catalog textarea.ds-field{height:auto;min-height:84px;resize:vertical}body.catalog .ds-field:hover:not(:disabled):not([readonly]){border-color:var(--muted)}body.catalog .ds-field:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);outline:0}body.catalog .ds-field:disabled{opacity:1;color:var(--muted);background:var(--soft);border-style:dashed;cursor:not-allowed}body.catalog .ds-field[readonly]{background:var(--soft);color:var(--ink)}body.catalog .ds-field[aria-invalid=true],body.catalog .ds-field.input-invalid{border-color:var(--red);background:var(--danger-bg)}body.catalog .ds-field.input-valid{border-color:var(--green)}body.catalog .field{font-size:14px;font-weight:500;color:var(--ink);gap:7px}body.catalog .field small{font-weight:400}body.catalog .error{color:var(--red)}body.catalog .input-addon{background:var(--input);border:1px solid var(--control);border-radius:6px}body.catalog .input-addon .ds-field{border:0;border-radius:0;box-shadow:none}body.catalog .input-addon span,body.catalog .input-addon button{background:var(--soft);color:var(--ink)}body.catalog .input-addon:focus-within{outline:0;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}body.catalog .ref-toolbar .ds-field{min-height:36px;height:36px}body.catalog .ref-toolbar input[type=search]{background-color:var(--input)}body.catalog .choice{font-size:14px;font-weight:400;color:var(--ink)}body.catalog input.ds-choice{width:18px;height:18px;min-height:18px;padding:0;margin:0;accent-color:var(--action-fill);vertical-align:middle;flex-shrink:0}body.catalog input.ds-switch{appearance:none!important;width:40px!important;min-width:40px!important;height:22px!important;min-height:22px!important;max-width:40px!important;border:0!important;border-radius:20px!important;background:var(--switch-track)!important;padding:0!important;position:relative;cursor:pointer;box-shadow:none!important;flex-shrink:0;vertical-align:middle}body.catalog input.ds-switch:before{content:'';width:18px;height:18px;position:absolute;top:2px;left:2px;background:#fff;border-radius:50%;transform:none;transition:transform 120ms}body.catalog input.ds-switch:checked{background:#0b9c77!important}body.catalog input.ds-switch:checked:before{transform:translateX(18px)}body.catalog .switch{display:inline-flex;align-items:center;gap:9px;cursor:pointer}body.catalog .switch>span:not(.switch-label){display:none}body.catalog input[type=range]{accent-color:var(--action-fill)}
/* Actions, including table icon buttons, use one high-contrast treatment. */
body.catalog .button,body.catalog .icon-button,body.catalog .ds-button{background:var(--surface);border:1px solid var(--control);border-radius:6px;min-height:36px;color:var(--ink);font:500 var(--user-font,14px)/20px Roboto,"Segoe UI",Arial,sans-serif;box-shadow:none}body.catalog .button:hover,body.catalog .icon-button:hover,body.catalog .ds-button:hover{background:var(--soft);border-color:var(--muted)}body.catalog .button.primary{background:var(--action-fill);border-color:var(--action-fill);color:var(--action-on)}body.catalog .button.primary:hover{background:#194ee0;border-color:#194ee0}body.catalog .button.primary strong{color:inherit}body.catalog .button.soft{background:var(--blue-soft);color:var(--blue);border-color:var(--blue-soft)}body.catalog .button.ghost{background:transparent;border-color:transparent;color:var(--ink)}body.catalog .button.success-button{background:#087f65;border-color:#087f65;color:white}body.catalog .button.danger-button{background:#be123c;border-color:#be123c;color:white}body.catalog .button.small{min-height:28px;font-size:12px}body.catalog .button.large{min-height:44px}body.catalog button:disabled{opacity:.5;cursor:not-allowed}body.catalog .ref-actions{gap:5px}body.catalog .ref-actions button,body.catalog .ds-icon-action{display:inline-grid;place-items:center;width:32px;height:32px;padding:5px;background:transparent;border:1px solid transparent;border-radius:5px;color:var(--icon)}body.catalog .ref-actions button:hover,body.catalog .ds-icon-action:hover{background:var(--selected);border-color:var(--control)}body.catalog .ref-actions button svg,body.catalog .ds-icon-action svg{width:18px;height:18px;stroke-width:2}body.catalog .ref-actions button[data-action=trash],body.catalog .ds-icon-action.danger-action{color:var(--red)}body.catalog .ref-actions button[data-action=trash]:hover{background:var(--danger-bg);border-color:var(--red)}body.catalog .icon-button svg{color:var(--icon);stroke-width:2}body.catalog .chip{background:var(--surface);border-color:var(--control);color:var(--ink);font-weight:500}body.catalog .chip.active{background:var(--selected);border-color:var(--blue);color:var(--blue)}
/* One table primitive, used for registers, editable lines and nested reports. */
body.catalog table.ds-table{border-collapse:separate;border-spacing:0;width:100%;background:var(--surface);color:var(--ink);font-size:14px;font-variant-numeric:tabular-nums}body.catalog table.ds-table th{background:var(--soft);color:var(--ink);font-size:14px;font-weight:500;letter-spacing:0;text-transform:none;line-height:22px;padding:12px 12px;border:0;border-bottom:1px solid var(--line);height:47px;text-align:left;white-space:nowrap;position:sticky;top:0;z-index:1}body.catalog table.ds-table td{padding:10px 12px;height:62px;font-size:14px;line-height:22px;color:var(--ink);border:0;border-bottom:1px solid var(--line);background:transparent;vertical-align:middle}body.catalog table.ds-table tbody tr{background:var(--surface)}body.catalog table.ds-table tbody tr:nth-child(even){background:var(--row-alt)}body.catalog table.ds-table tbody tr.unpaid{background:var(--danger-bg)}body.catalog table.ds-table tbody tr.unpaid td:first-child{box-shadow:inset 3px 0 var(--red)}body.catalog table.ds-table tbody tr:hover,body.catalog table.ds-table tbody tr:has(input[data-select]:checked){background:var(--selected)}body.catalog table.ds-table th.number,body.catalog table.ds-table td.number,body.catalog table.ds-table td.ref-num{text-align:right}body.catalog table.ds-table td strong{color:var(--ink);font-weight:500}body.catalog table.ds-table a,body.catalog table.ds-table a strong{color:var(--blue)}body.catalog table.ds-table small{color:var(--muted);font-size:12px}body.catalog table.ds-table td:first-child,body.catalog table.ds-table th:first-child{border-right:0;text-align:left}body.catalog table.ref-table td:first-child,body.catalog table.ref-table th:first-child{width:46px;text-align:center;border-right:1px solid var(--line)}body.catalog table.ds-table .ds-field{min-width:90px;width:100%}body.catalog table.ds-table th button{font:inherit;color:inherit}body.catalog table.ds-table th svg{color:var(--icon)}body.catalog table.ds-table th .col-resizer{color:var(--icon)}body.catalog .table-scroll,body.catalog .ref-scroll{border:1px solid var(--line);border-radius:8px;overflow:auto;max-width:100%}body.catalog .ref-card .ref-scroll{border:0;border-radius:0}body.catalog .ref-toolbar,body.catalog .ref-quick,body.catalog .ref-views,body.catalog .ref-footer{background:var(--surface);border-color:var(--line)}body.catalog .ref-quick,body.catalog .ref-views{min-height:45px}body.catalog .ref-table .ref-badge,body.catalog .badge{background:var(--soft);color:var(--ink);border:1px solid var(--line);font-size:12px;font-weight:500;border-radius:5px;padding:3px 8px}body.catalog .badge.success{background:var(--success-bg);color:var(--green);border-color:transparent}body.catalog .badge.warning{background:var(--warning-bg);color:var(--amber);border-color:transparent}body.catalog .badge.danger{background:var(--danger-bg);color:var(--red);border-color:transparent}body.catalog .badge.blue-badge{background:var(--blue-soft);color:var(--blue);border-color:transparent}body.catalog .ref-thumb{background:var(--soft);border-color:var(--line);color:var(--icon)}body.catalog .ref-pages button{background:var(--surface);color:var(--ink);border-color:var(--control)}body.catalog .ref-pages button.active{background:var(--action-fill);color:#fff}body.catalog .ds-grid-head,body.catalog .ds-grid-foot{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:12px 14px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:12px}body.catalog .ds-grid-head{border-radius:8px 8px 0 0;border-bottom:0;margin-top:16px}body.catalog .ds-grid-head+ .table-scroll{margin-top:0;border-radius:0}body.catalog .ds-grid-head .ds-field{width:220px;max-width:60%}body.catalog .ds-grid-foot{border-top:0;border-radius:0 0 8px 8px}body.catalog.compact table.ds-table td{height:44px;padding:5px 12px}body.catalog .ds-table td.ds-money{white-space:nowrap;text-align:right}
/* State, overlay and specialised surfaces all consume semantic tokens. */
body.catalog .alert{background:var(--blue-soft);color:var(--blue);border:1px solid var(--line)}body.catalog .alert strong,body.catalog .alert p{color:inherit}body.catalog .warning-alert{background:var(--warning-bg);color:var(--amber)}body.catalog .success-alert{background:var(--success-bg);color:var(--green)}body.catalog .error-alert,body.catalog .danger-alert{background:var(--danger-bg);color:var(--red)}body.catalog .form-total,body.catalog .project-card,body.catalog .disclosure,body.catalog .upload-zone,body.catalog .comments article,body.catalog .notification-item,body.catalog .widget-preview div{background:var(--soft);border-color:var(--line);color:var(--ink)}body.catalog .form-total strong,body.catalog .form-total span,body.catalog .disclosure summary{color:var(--ink)}body.catalog .bill-row,body.catalog .type-row,body.catalog .variant-row{border-color:var(--line)}body.catalog .avatar,body.catalog .tile-icon{background:var(--blue-soft);color:var(--blue)}body.catalog .avatar.blue,body.catalog .tile-icon.blue,body.catalog .tile-icon.cyan{background:var(--blue-soft);color:var(--blue)}body.catalog .tile-icon.amber{background:var(--warning-bg);color:var(--amber)}body.catalog .tile-icon.red{background:var(--danger-bg);color:var(--red)}body.catalog .toast{background:var(--ink);color:var(--bg);border:1px solid var(--control);box-shadow:var(--shadow)}body.catalog .toast button{color:inherit}body.catalog .popover-panel label,body.catalog .command-results button{color:var(--ink)}body.catalog .density-switch{background:var(--soft);border-color:var(--line)}body.catalog .density-switch button{color:var(--muted)}body.catalog .density-switch button[aria-pressed=true]{background:var(--selected);color:var(--blue)}body.catalog .font-tools,body.catalog .font-tools button{border-color:var(--line);color:var(--muted)}body.catalog .ref-filters,body.catalog .ref-bulk{background:var(--soft);color:var(--ink)}body.catalog .quote-best,body.catalog #expandedReceipt td{background:var(--selected)}body.catalog .delivery-live{color:var(--green)}body.catalog .delivery-spec{color:var(--amber)}body.catalog .schedule-track{border-color:var(--line)}body.catalog .schedule-bar{background:var(--action-fill)}body.catalog .motion-object{background:var(--action-fill);color:#fff}body.catalog .skeleton{background:var(--control)}body.catalog .token-tile,body.catalog .icon-cell{background:var(--surface);border-color:var(--line);color:var(--muted)}
.ds-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.ds-kpi{padding:20px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.ds-kpi small{display:block;color:var(--muted)}.ds-kpi strong{display:block;font-size:26px;margin:8px 0;font-variant-numeric:tabular-nums}.ds-chart{height:auto;width:100%;display:block;margin-top:16px;overflow:visible}.ds-chart text{fill:var(--muted);font:12px Roboto,Arial}.ds-chart .grid-line{stroke:var(--line);stroke-dasharray:3 4}.ds-chart .series-a{stroke:var(--chart-1)}.ds-chart .series-b{stroke:var(--chart-2)}.ds-chart .bar-a{fill:var(--chart-1)}.ds-chart .bar-b{fill:var(--chart-2)}.ds-chart-legend{display:flex;flex-wrap:wrap;gap:16px;margin:12px 0;color:var(--muted);font-size:12px}.ds-chart-legend button{background:none;border:0;color:var(--ink);display:flex;align-items:center;gap:7px}.ds-chart-legend i{width:10px;height:10px;border-radius:3px;background:var(--chart-1)}.ds-chart-legend button[aria-pressed=false]{opacity:.5;text-decoration:line-through}.ds-chart-controls{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.ds-chart-status{min-height:24px;font-size:13px;color:var(--muted)}.ds-donut-wrap{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.ds-donut{width:200px;height:200px;border-radius:50%;background:conic-gradient(var(--chart-1) 0 55%,var(--chart-2) 55% 80%,var(--chart-4) 80% 100%);display:grid;place-items:center;margin:24px}.ds-donut>div{width:145px;height:145px;border-radius:50%;background:var(--surface);display:grid;place-content:center;text-align:center}.ds-donut strong{font-size:28px}.ds-donut small{color:var(--muted)}.ds-chart-values{list-style:none;padding:0}.ds-chart-values li{padding:9px 0;color:var(--ink)}.ds-meter{height:10px;background:var(--line);border-radius:8px;overflow:hidden}.ds-meter>span{display:block;height:100%;background:var(--chart-1)}.ds-detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.ds-detail-grid dt{color:var(--muted);font-size:12px}.ds-detail-grid dd{margin:5px 0 0;font-weight:500}.ds-report-sheet{border:1px solid var(--line);padding:24px;border-radius:8px;background:var(--surface);margin-top:20px}.ds-board{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.ds-board-column{background:var(--soft);padding:14px;border:1px solid var(--line);border-radius:8px}.ds-task{padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:6px;margin-top:12px}.ds-task p{margin:8px 0;color:var(--muted)}.ds-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;border:1px solid var(--line);background:var(--line);margin-top:16px}.ds-calendar>div{min-height:70px;padding:8px;background:var(--surface);font-size:12px}.ds-calendar .day-label{min-height:28px;background:var(--soft);font-weight:500}.ds-calendar .event{display:block;margin-top:6px;padding:4px;background:var(--blue-soft);color:var(--blue);border-radius:4px}.ds-switch-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 0;border-bottom:1px solid var(--line)}.ds-switch-row small{display:block;color:var(--muted);margin-top:4px}.ds-coverage-link{font-weight:500}.ds-chart svg:focus-visible{outline:3px solid var(--blue)}
@media(max-width:900px){.ds-kpis{grid-template-columns:repeat(2,1fr)}.ds-detail-grid{grid-template-columns:1fr 1fr}.ds-board{grid-template-columns:1fr}.ds-calendar>div{min-height:55px;padding:4px}.ds-calendar .event{font-size:10px}}
@media(max-width:600px){.ds-detail-grid{grid-template-columns:1fr}.ds-grid-head{flex-wrap:wrap}.ds-grid-head .ds-field{max-width:100%;width:100%}.ds-kpi{padding:14px}.ds-kpi strong{font-size:22px}body.catalog .ds-field{min-height:40px;height:40px}body.catalog table.ds-table td{height:62px}.ds-calendar .event{overflow:hidden;max-width:35px;text-overflow:ellipsis}.ds-report-sheet{padding:14px}.ds-donut{margin:15px auto}}
@media print{body.catalog aside,body.catalog header,body.catalog .page-heading,body.catalog footer,body.catalog .ds-chart-controls{display:none!important}body.catalog .shell{margin:0;padding:0}body.catalog main{padding:0}html[data-theme=dark]{--bg:white;--surface:white;--ink:#111;--muted:#444;--line:#ccc}.ds-report-sheet{border:0}}
@media(prefers-reduced-motion:reduce){body.catalog *,body.catalog *:before{animation:none!important;transition:none!important}}body.catalog.reduce-motion *,body.catalog.reduce-motion *:before{animation:none!important;transition:none!important}
html:not([data-theme=dark]){--green:#06745c}body.catalog .brand-icon{background:var(--action-fill);color:#fff}body.catalog .ds-chart-legend strong{color:inherit}body.catalog .card .ds-chart-controls .section-note{margin:0}body.catalog .ref-table .ref-num{font-weight:500}
body.catalog #catalog-data-grid>.two-col{grid-template-columns:1fr}body.catalog .ds-grid-head{justify-content:flex-start;flex-wrap:wrap;gap:8px;padding:10px 16px}body.catalog .ds-grid-head .ds-grid-mode{font-size:14px;font-weight:400;background:var(--input);border:1px solid var(--control);border-radius:6px;padding:7px 12px;min-height:36px;color:var(--ink)}body.catalog .ds-grid-head .ds-field{width:256px;max-width:100%}body.catalog .ds-grid-head .icon-button{width:36px}body.catalog .ds-grid-foot{padding:14px 16px}body.catalog .ds-grid-head .popover-panel{z-index:30}body.catalog .ds-grid-head .choice{display:flex;margin:8px 0;align-items:center;gap:8px}body.catalog .ds-field[type=number]{font-variant-numeric:tabular-nums}
@media(max-width:600px){body.catalog .ref-toolbar .ds-field{height:40px;min-height:40px}.ds-grid-head .ds-grid-mode{min-height:40px}body.catalog .ds-grid-head .ds-field{width:100%}}
