/* IST Asset + (Plus): shared product tokens. Printing and the IDC board keep their own layouts. */
:root {
  --app-primary:#6744d9; --app-primary-strong:#5133b4; --app-accent:#6744d9;
  --app-bg:#f8f9fc; --app-surface:#fff; --app-text:#25233a; --app-text-muted:#606276;
  --app-border:#e3e4ed; --app-border-strong:#bcbecf;
  --app-shadow-sm:0 2px 8px rgba(32,27,54,.035); --app-shadow-md:0 8px 28px rgba(32,27,54,.08);
  --app-topbar-height:56px; --app-sidebar-width:232px; --app-control-height:34px;
  --app-space-xs:4px; --app-space-sm:8px; --app-space-md:12px; --app-space-lg:16px;
  --bs-primary:#6744d9; --bs-primary-rgb:103,68,217;
}
body.app-admin,body.app-public { background:var(--app-bg); color:var(--app-text); font-size:16px; line-height:1.6; }
body.app-admin { padding-top:var(--app-topbar-height); padding-left:var(--app-sidebar-width); }
.app-admin .app-shell { width:100%; max-width:1600px; padding:12px 20px; }
@media screen { .app-admin main.app-shell { padding-block:12px!important; } }
.app-admin .app-shell > .container,.app-admin .app-shell > .container-fluid { padding-left:0; padding-right:0; }
.app-admin .card,.app-public .card,.app-admin .modal-content { border-radius:12px; box-shadow:var(--app-shadow-sm); }
.app-admin .btn,.app-public .btn { min-height:44px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; gap:.3rem; }
.app-admin .btn-primary,.app-public .btn-primary { background:var(--app-primary); border-color:var(--app-primary); color:#fff; }
.app-admin .btn-primary:hover,.app-public .btn-primary:hover { background:var(--app-primary-strong); border-color:var(--app-primary-strong); }
.app-admin .form-control,.app-admin .form-select,.app-public .form-control,.app-public .form-select { min-height:44px; border-radius:8px!important; }
.app-admin :focus-visible,.app-public :focus-visible { outline:3px solid #6744d9; outline-offset:3px; }
.app-admin .badge,.app-public .badge { border-radius:5px; font-weight:600; line-height:1.5; }
.app-admin .text-bg-success,.app-public .text-bg-success { color:#106541!important; background:#eaf7ef!important; }
.app-admin .text-bg-warning,.app-public .text-bg-warning { color:#80500d!important; background:#fff3df!important; }
.app-admin .text-bg-danger,.app-public .text-bg-danger { color:#a52b3c!important; background:#ffedf0!important; }
.app-admin .text-bg-info,.app-public .text-bg-info { color:#155a76!important; background:#e9f5fc!important; }
.app-admin .app-page-title,.app-public .app-page-title { font-size:clamp(1.25rem,1.6vw,1.5rem); line-height:1.4; margin:0; }
.app-admin .app-page-header,.app-public .app-page-header { padding:0; margin-bottom:12px; border:0; border-radius:0; background:none; box-shadow:none; align-items:center; gap:12px; }
.app-admin .app-eyebrow,.app-public .app-eyebrow { display:none; }
.app-admin .app-page-subtitle,.app-public .app-page-subtitle { font-size:13px; margin-top:2px; }
.app-admin .app-header-actions,.app-public .app-header-actions { gap:8px; width:auto; }
.app-public main.app-shell { margin-top:12px!important; margin-bottom:12px!important; }
.app-admin .app-table-toolbar,.app-public .app-table-toolbar { padding:8px 12px; gap:8px; }
.app-admin .app-table-toolbar-title,.app-public .app-table-toolbar-title { font-size:18px; }
.app-admin .app-table-toolbar-subtitle,.app-public .app-table-toolbar-subtitle { font-size:13px; }
.app-admin .app-toolbar-card,.app-public .app-toolbar-card { padding:10px 12px; border-radius:8px; }
.app-admin .app-summary-card,.app-public .app-summary-card { padding:10px 12px; border-radius:8px; }
.app-admin .app-inline-actions,.app-public .app-inline-actions { gap:8px; }
.app-admin .text-muted,.app-public .text-muted { color:var(--app-text-muted)!important; }
.app-skip-link { position:fixed; z-index:1100; left:16px; top:-100px; padding:12px; background:#fff; color:#5133b4; border:2px solid #6744d9; }
.app-skip-link:focus { top:12px; }
.app-sidebar { --bs-offcanvas-width:var(--app-sidebar-width); width:var(--app-sidebar-width); background:#201b36!important; color:#fff; position:fixed!important; inset:0 auto 0 0; overflow-y:auto; z-index:1045; border:0!important; border-radius:0!important; box-shadow:none!important; }
.app-sidebar .offcanvas-body { padding:14px 12px; overflow-y:visible; }
.app-brand { display:flex; align-items:center; gap:10px; color:#fff; margin:2px 8px 14px; text-decoration:none; }
.app-brand:hover { color:#fff; }
.app-brand img { object-fit:contain; background:#fff; border-radius:8px; padding:3px; }
.app-brand strong { display:block; font-size:17px; letter-spacing:-.5px; white-space:nowrap; }
.app-brand strong small { font-size:11px; }
.app-brand span span { color:#d1c9e6; font-size:11px; display:block; }
.app-nav-group,.app-nav-details summary { font-size:12px; color:#c2b8d8; margin:12px 10px 4px; }
.app-nav-details summary { cursor:pointer; min-height:44px; display:list-item; padding-top:10px; }
.app-nav-link { display:flex; align-items:center; gap:10px; color:#e7e0f7; padding:6px 10px; min-height:36px; margin:2px 0; border-radius:8px; font-size:13px; text-decoration:none; }
.app-nav-link:hover { background:#352c4f; color:#fff; }
.app-nav-link.active { background:#6744d9; color:#fff; }
.app-nav-link .bi { font-size:17px; flex-shrink:0; }
.app-nav-count { margin-left:auto; padding:0 6px; background:#fff; color:#5133b4; border-radius:5px; }
.app-sidebar-foot { margin:24px 8px 0; padding-top:20px; border-top:1px solid #4a405f; font-size:11px; color:#c2b8d8; }
.app-topbar { position:fixed; top:0; right:0; left:var(--app-sidebar-width); min-height:var(--app-topbar-height); padding:6px 20px; display:flex; align-items:center; gap:16px; border-bottom:1px solid var(--app-border); background:#fff; z-index:1030; }
.app-breadcrumb { display:flex; align-items:center; gap:10px; font-size:13px; color:var(--app-text-muted); }
.app-breadcrumb a { color:var(--app-text-muted); }
.app-global-search { margin-left:auto; align-items:center; gap:8px; background:#f8f9fc; border:1px solid #e3e4ed; border-radius:8px; padding:0 12px; }
.app-global-search input { min-height:32px; border:0; background:transparent; width:190px; font-size:13px; }
.app-topbar-actions { display:flex; align-items:center; gap:10px; margin-left:auto; }
.app-avatar { width:30px; height:30px; display:grid; place-items:center; border-radius:50%; background:#ede7ff; color:#5133b4; font-weight:700; }
.app-account { font-size:13px; border:0; }
.app-admin .app-footer-nav { background:#fff; }
.app-admin .app-footer-nav .container { max-width:1600px; }
.app-admin .app-footer-nav .card { box-shadow:none; }
.app-metric-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-bottom:12px; }
.app-metric { display:block; padding:12px 14px; background:#fff; border:1px solid var(--app-border); border-radius:12px; color:var(--app-text); }
.app-metric:hover { border-color:#b9a7ed; color:var(--app-text); }
.app-metric-label { font-size:14px; color:var(--app-text-muted); }
.app-metric-value { display:block; font-size:28px; font-weight:700; line-height:1.3; margin:2px 0; font-variant-numeric:tabular-nums; }
.app-metric-note { font-size:12px; color:var(--app-text-muted); }
.app-overview-grid { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr); gap:12px; }
.app-work-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:10px 0 12px; }
.app-work-summary a { padding:10px 12px; border-radius:8px; background:#f4f1ff; color:#493080; font-size:13px; }
.app-work-summary strong { display:block; font-size:26px; }
.app-activity-item { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid var(--app-border); }
.app-activity-item:last-child { border-bottom:0; }
.app-location-row { margin:10px 0; }
.app-location-label { display:flex; justify-content:space-between; gap:16px; font-size:13px; margin-bottom:6px; }
.app-location-bar { height:7px; width:100%; background:#f0ecfa; border-radius:4px; }
.app-location-bar span { display:block; height:100%; background:#6744d9; border-radius:4px; }
.app-admin table th { text-transform:none; letter-spacing:0; font-size:13px; }
.app-inline-message { padding:16px; background:#fff3df; color:#80500d; border-radius:8px; }
.app-user-nav { background:#fff; border-bottom:1px solid var(--app-border); }
.app-user-nav .navbar-brand { color:#25233a; font-size:18px; }
.app-user-nav .nav-link { color:#493080; border-radius:8px; min-height:44px; display:flex; align-items:center; }
.app-user-nav .nav-link.active { background:#f4f1ff; }
.app-profile-nav { display:flex; gap:8px; overflow:auto; padding:4px 0 12px; border-bottom:1px solid var(--app-border); }
.app-profile-nav a { display:flex; align-items:center; white-space:nowrap; padding:8px 14px; min-height:44px; border-radius:8px; background:#fff; color:#493080; border:1px solid var(--app-border); }
.app-profile-nav a:hover { background:#f4f1ff; }
.app-profile-qr { display:block; width:180px; height:180px; object-fit:contain; margin:16px 0; }
.app-admin [id^="asset-"] { scroll-margin-top:calc(var(--app-topbar-height) + 12px); }
.app-quick-view { --bs-offcanvas-width:560px; max-width:100vw; }
.app-select-target { display:grid; place-items:center; min-width:44px; min-height:44px; cursor:pointer; }
.app-select-target input { width:19px; height:19px; accent-color:#6744d9; }
.asset-actions-cell { white-space:nowrap; }
.app-admin #assetsTable { text-align:left!important; }
.app-admin #assetsTable th { white-space:nowrap; }

.app-admin #asset-create-panel #addAssetForm { max-width:1000px; }
.app-admin #asset-create-panel #addAssetForm .app-inline-actions { justify-content:space-between; }
@media(max-width:767.98px) {
  .app-admin .app-page-header,.app-public .app-page-header { display:flex; flex-wrap:wrap; }
  .app-admin .app-header-actions,.app-public .app-header-actions { display:flex; flex-wrap:wrap; width:auto; margin-top:0; gap:8px; justify-content:flex-start; }
  .app-admin .app-header-actions .btn,.app-public .app-header-actions .btn { width:auto; white-space:nowrap; }
  .app-admin .app-activity-item { flex-wrap:wrap; }
  .app-admin #assetsTable,.app-admin #assetsTable tbody { display:block; }
  .app-admin #assetsTable { width:100%!important; }
  .app-admin #assetsTable thead { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  .app-admin #assetsTable tr { display:block; border-bottom:1px solid var(--app-border); padding:16px 0; }
  .app-admin #assetsTable td { display:block; width:auto!important; min-width:0!important; padding:5px 8px; border:0; text-align:left!important; white-space:normal; }
  .app-admin #assetsTable .asset-code-cell { font-size:12px; color:var(--app-text-muted); }
  .app-admin #assetsTable .asset-name-cell { font-weight:600; }
  .app-admin #assetsTable .asset-location-cell::before { content:'สถานที่: '; color:var(--app-text-muted); }
  .app-admin #assetsTable .asset-owner-cell::before { content:'ผู้รับผิดชอบ: '; color:var(--app-text-muted); }
  .app-admin #assetsTable .asset-actions-cell { padding-top:12px; }
  .app-admin #assetsTable .dataTables_empty { text-align:center!important; }
  .app-admin .dataTables_paginate .pagination { flex-wrap:wrap; }
}
.app-admin .labels-controls.offcanvas-lg .offcanvas-body { overflow-y:auto; }
.app-admin .labels-controls fieldset label { min-height:44px; display:flex!important; align-items:center; gap:8px; }
.app-admin .btn-close,.app-public .btn-close { min-width:24px; min-height:24px; padding:10px; }
@media(max-width:991.98px) {
  .app-admin .labels-workspace { padding-bottom:96px; }
  .app-admin .labels-controls.offcanvas-lg { --bs-offcanvas-height:min(85dvh,720px); display:block; padding:20px; max-height:85dvh; border-radius:16px 16px 0 0; z-index:1045; }
  .app-admin .labels-controls .offcanvas-body { height:calc(100% - 44px); }
  .app-admin .labels-controls .labels-summary { margin-bottom:16px; }
  .app-admin .labels-controls .labels-print-actions { margin-top:16px; }
  .app-admin .labels-mobile-dock { position:fixed; bottom:0; right:0; left:0; z-index:1020; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 16px calc(12px + env(safe-area-inset-bottom)); background:#fff; border-top:1px solid var(--app-border); box-shadow:0 -4px 18px #201b3610; }
}
@media(max-width:575.98px) {
  .app-admin .labels-table { min-width:0; width:100%; }
  .app-admin .labels-table thead { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  .app-admin .labels-table tbody,.app-admin .labels-table tr { display:block; }
  .app-admin .labels-table tr { display:grid; grid-template-columns:40px minmax(0,1fr) 76px; padding:12px 4px; border-bottom:1px solid var(--app-border); }
  .app-admin .labels-table td { width:auto; border:0; padding:6px; }
  .app-admin .labels-table td:first-child { grid-column:1; grid-row:1 / span 2; }
  .app-admin .labels-table td:nth-child(2) { grid-column:2; }
  .app-admin .labels-table td:nth-child(3) { grid-column:2; grid-row:2; }
  .app-admin .labels-table td:nth-child(4) { grid-column:3; grid-row:1 / span 2; }
  .app-admin .labels-table .labels-empty { grid-column:1 / -1; }
}
.app-work-center .idc-appbar { position:static; top:auto; }
.app-work-center .idc-board { padding:12px 16px; }
.app-work-center .idc-appbar__inner { padding:8px 16px; }
.idc-work-filters { display:flex; flex-wrap:wrap; align-items:end; gap:8px; margin:8px 0; }
.idc-work-filters label { display:flex; flex-direction:column; gap:6px; color:var(--gray-600); font-size:13px; }
.idc-work-filters label:nth-child(2) { flex:1; min-width:180px; }
.idc-work-filters select,.idc-work-filters input { min-height:44px; border:1px solid var(--gray-300); border-radius:8px; padding:8px 12px; background:var(--idc-surface); color:var(--gray-800); }
:root[data-theme="dark"] .app-work-center { background:var(--idc-canvas); color:var(--gray-800); }
:root[data-theme="dark"] .app-work-center .app-topbar { background:var(--idc-surface); border-color:var(--gray-300); }
:root[data-theme="dark"] .app-work-center .app-breadcrumb,:root[data-theme="dark"] .app-work-center .app-breadcrumb a { color:var(--gray-600); }
:root[data-theme="dark"] .app-work-center .app-topbar .btn-light { background:var(--gray-100); color:var(--gray-800); border-color:var(--gray-300); }
:root[data-theme="dark"] .app-work-center .app-global-search { background:var(--gray-100); border-color:var(--gray-300); }
:root[data-theme="dark"] .app-work-center .app-global-search input { color:var(--gray-800); }
@media(min-width:992px) { .app-sidebar .offcanvas-body { display:block!important; } }
@media(max-width:1199.98px) { .app-topbar { padding:6px 16px; } .app-admin .app-shell { padding:12px 16px; } .app-metric-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .app-overview-grid { grid-template-columns:1fr; } }
@media(max-width:991.98px) { body.app-admin { padding-left:0; } .app-topbar { left:0; } .app-sidebar .offcanvas-header { border-bottom:1px solid #4a405f; } .app-sidebar .offcanvas-body { padding-top:16px; } .app-breadcrumb { min-width:0; } .app-breadcrumb a { display:none; } .app-breadcrumb > span:first-of-type { display:none; } }
@media(max-width:575.98px) { .app-topbar { padding:6px 12px; gap:8px; } .app-topbar-actions { gap:4px; } .app-admin .app-shell { padding:12px; } .app-metric-grid { gap:10px; } .app-metric { padding:10px 12px; } .app-metric-value { font-size:28px; } .app-work-summary { grid-template-columns:1fr; } .app-work-summary a { display:flex; justify-content:space-between; align-items:center; } .app-work-summary strong { font-size:22px; } .app-activity-item { align-items:flex-start; } .app-user-nav .navbar-brand { font-size:16px; } }
/* Shared compact UI contract: loaded once through istap_ui_render_styles(). */
.app-admin .form-label,.app-public .form-label { margin-bottom:4px; }
.app-admin .card-body,.app-public .card-body { padding:12px; }
.app-admin .card-body.p-4,.app-public .card-body.p-4 { padding:16px!important; }
.app-admin .app-profile-nav,.app-public .app-profile-nav { padding-bottom:8px; gap:8px; }
.app-admin .app-check-grid,.app-public .app-check-grid { gap:8px 16px; }
.app-admin .app-check-grid label,.app-public .app-check-grid label { display:inline-flex; align-items:center; gap:6px; min-height:32px; }
.asset-register-summary { display:flex; flex-wrap:wrap; align-items:center; gap:6px 24px; margin:0 0 10px; padding:8px 12px; background:var(--app-surface); border:1px solid var(--app-border); border-radius:8px; }
.asset-register-summary > div { display:flex; align-items:baseline; gap:8px; }
.asset-register-summary dt { color:var(--app-text-muted); font-size:13px; font-weight:400; }
.asset-register-summary dd { margin:0; font-size:20px; font-weight:700; line-height:1.4; font-variant-numeric:tabular-nums; }
.asset-register-tools { padding:10px 12px; border-bottom:1px solid var(--app-border); }
.asset-register-search-row,.asset-register-options,.asset-selection-actions,.asset-dt-controls { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.asset-register-options { margin-top:8px; }
#asset-search-slot { flex:0 1 380px; min-width:200px; }
#asset-search-slot .dataTables_filter,#asset-search-slot label { margin:0; width:100%; text-align:left; }
#asset-search-slot input[type="search"] { width:100%!important; margin:0; padding:5px 10px; font-size:14px; }
#asset-table-controls .dataTables_length label { display:flex; align-items:center; gap:6px; margin:0; font-size:13px; white-space:nowrap; }
#asset-table-controls .dataTables_length select { margin:0; width:auto; }
#asset-table-controls .dt-buttons { margin:0; }
.asset-dt-search:empty { display:none; }
.asset-register-card .table-responsive { padding:0 8px 8px!important; }
.asset-register-card .dataTables_info { font-size:13px; padding-top:8px; }
.asset-register-card .dataTables_paginate { padding-top:8px; }
.asset-register-card .dataTables_wrapper > .row { margin:0; }
.asset-register-options #asset-results-summary { margin:0 0 0 auto; color:var(--app-text-muted); }
.asset-register-tools .asset-tool-disclosure { padding:0; border:0; background:none; box-shadow:none; }
.asset-tool-disclosure > summary { list-style:none; user-select:none; }
.asset-tool-disclosure > summary::-webkit-details-marker { display:none; }
.asset-tool-disclosure > summary::after { content:'▾'; margin-left:4px; }
.asset-tool-disclosure[open] { flex:1 0 100%; order:1; }
.asset-tool-disclosure[open] > summary::after { content:'▴'; }
.asset-tool-panel { padding:12px 0 4px; }
.asset-tool-panel .app-check-grid { gap:8px 16px; }
.asset-tool-panel p:empty { display:none; }
@media (min-width:992px) and (pointer:fine) {
  .app-admin .btn,.app-public .btn { min-height:var(--app-control-height); padding:4px 10px; font-size:14px; }
  .app-admin input.form-control,.app-admin select.form-select,.app-public input.form-control,.app-public select.form-select { min-height:var(--app-control-height); padding-top:4px; padding-bottom:4px; font-size:14px; }
  .app-admin .input-group-text,.app-public .input-group-text { min-height:var(--app-control-height); padding:4px 8px; }
  .app-admin .ts-wrapper.single .ts-control,.app-admin .select2-selection--single { min-height:var(--app-control-height); padding-top:4px; padding-bottom:4px; }
  .app-admin .table > :not(caption) > * > *,.app-public .table > :not(caption) > * > * { padding:6px 8px; }
  .app-admin .app-select-target { min-width:32px; min-height:32px; }
  .app-admin .app-profile-nav a,.app-public .app-profile-nav a { min-height:var(--app-control-height); padding:4px 10px; }
  .app-work-center .idc-btn,.app-work-center .idc-work-filters input,.app-work-center .idc-work-filters select { min-height:var(--app-control-height); padding-top:4px; padding-bottom:4px; }
}
@media (pointer:coarse), (max-width:991.98px) {
  .app-nav-link,.app-nav-details summary { min-height:44px; }
  .app-admin .app-check-grid label,.app-public .app-check-grid label { min-height:44px; }
}
@media (max-width:767.98px) {
  .asset-register-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px 12px; }
  .asset-register-summary > div { justify-content:space-between; min-width:0; }
  .asset-register-summary dt { font-size:12px; }
  .asset-register-summary dd { font-size:18px; }
  #asset-search-slot { flex:1 0 100%; min-width:0; }
  #asset-table-controls { flex:1; }
  .asset-register-options #asset-results-summary { width:100%; margin-left:0; }
  .asset-register-options > .asset-selection-actions { width:100%; }
  .asset-tool-disclosure > summary { font-size:13px; padding:6px 8px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto!important; } *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; } }
@media print { body.app-admin { padding:0!important; } .app-topbar,.app-sidebar,.app-skip-link,.app-footer-nav,.app-user-nav { display:none!important; } .app-admin .app-shell { padding:0; max-width:none; } }
