.asset-button, .asset-icon, .asset-tabs button { font: inherit; cursor: pointer; letter-spacing: 0; }
.asset-button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 38px; padding: 8px 13px; border: 1px solid #cedadd; border-radius: 6px; background: #fff; color: #21464d; font-size: 13px; font-weight: 650; white-space: nowrap; }
.asset-button.primary { border-color: #165969; background: #165969; color: #fff; }
.asset-button:hover { filter: brightness(.96); }
.asset-button:disabled, .asset-icon:disabled { cursor: wait; opacity: .55; }
.asset-icon { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 36px; height: 36px; padding: 8px; border: 1px solid #d5dfe1; border-radius: 6px; background: #fff; color: #31545c; }
.asset-icon.danger { color: #ad3535; }
.asset-icon:hover { background: #f0f5f5; }
.asset-button svg, .asset-icon svg, .asset-map-title svg, .asset-search svg, .asset-map-search svg, .asset-room-switch svg { width: 17px; height: 17px; flex-shrink: 0; }
.asset-auth-nav { display: flex; align-items: center; gap: 10px; }
.asset-auth-nav > span { color: #35565d; font-size: 13px; }
.asset-map-toolbar { align-items: center; justify-content: space-between; }
.asset-map-title { display: inline-flex; align-items: center; gap: 8px; color: #24464e; font-weight: 650; font-size: 14px; }
.asset-map-search, .asset-search { display: flex; align-items: center; gap: 7px; min-width: 0; border: 1px solid #d0dce0; border-radius: 6px; padding: 0 10px; background: #fff; color: #61787f; }
.asset-map-search input, .asset-search input { width: 100%; min-width: 0; height: 36px; padding: 4px 0; border: 0; background: transparent; color: #173c45; font: inherit; font-size: 13px; box-shadow: none; }
.asset-map-search { width: 210px; }
.asset-map-search-results { display: flex; flex-wrap: wrap; gap: 6px; padding-top: 12px; }
/* Use the available workspace instead of sizing its width from an aspect ratio. */
.meeting-body.asset-map-page { display: flex; flex-direction: column; height: 100vh; height: 100dvh; min-height: 0; overflow: hidden; }
.asset-map-page .meeting-header { flex: 0 0 64px; height: 64px; }
.meeting-body.asset-map-page .meeting-shell { display: flex; flex: 1; flex-direction: column; width: calc(100% - 24px); max-width: none; min-height: 0; padding: 8px 0 10px; }
.asset-map-page .meeting-map-layout { display: flex; flex: 1; flex-direction: column; align-items: stretch; min-height: 0; }
.meeting-body.asset-map-page .meeting-map-panel { position: relative; display: flex; flex: 1; flex-direction: column; min-height: 0; padding: 10px 12px 12px; }
.meeting-body.asset-map-page .meeting-map-toolbar { flex: 0 0 auto; margin: 0 0 8px; }
.meeting-body.asset-map-page .meeting-map-viewport { display: flex; flex: 1; width: 100%; max-height: none; min-height: 0; margin: 0; padding: 3px; border: 0; border-radius: 0; overflow: hidden; background: #fff; box-shadow: none; }
.asset-map-page .meeting-floorplan-canvas { flex: 1; width: 100%; height: 100%; min-width: 0; min-height: 0; aspect-ratio: auto; }
.asset-map-page .meeting-floorplan-module strong { font-size: 18px; letter-spacing: 0; }
.asset-map-page .meeting-floorplan-module.is-compact strong { font-size: 12px; }
.asset-map-page .asset-map-search-results { position: absolute; top: 54px; right: 12px; z-index: 20; width: min(360px,calc(100% - 24px)); max-height: min(300px,50dvh); overflow-y: auto; padding: 10px; border: 1px solid #cedadd; border-radius: 6px; background: #fff; box-shadow: 0 8px 24px #19394120; }
.asset-map-page .asset-map-search-results button { max-width: 100%; white-space: normal; overflow-wrap: anywhere; text-align: left; }
.meeting-floorplan-module.state-asset { background: var(--room-fill); border-color: var(--room-border); border-width: 1px; color: var(--room-text,#11272e); text-shadow: none; }
.meeting-floorplan-module.is-search-dim { opacity: .22; }
.asset-drawer, .asset-login-dialog { box-sizing: border-box; border: 0; background: #fff; color: #18363e; padding: 0; }
.asset-drawer { position: fixed; inset: 0 0 0 auto; width: min(760px, 90vw); height: 100dvh; max-width: 100vw; max-height: 100dvh; margin: 0; overflow: hidden; border-left: 1px solid #cad8dc; box-shadow: -16px 0 48px #19394125; }
.asset-drawer[open] { display: flex; flex-direction: column; }
.asset-drawer::backdrop, .asset-login-dialog::backdrop { background: rgba(16,35,40,.32); }
.asset-drawer-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 22px 24px 12px; }
.asset-drawer-header > div { min-width: 0; }
.asset-eyebrow { color: #687e84; font-size: 12px; }
.asset-drawer h1 { margin: 5px 0 0; font-size: 24px; font-weight: 650; line-height: 1.4; overflow-wrap: anywhere; letter-spacing: 0; }
.asset-room-switch { display: flex; align-items: center; gap: 9px; margin: 0 24px 14px; color: #5b757e; }
.asset-room-switch select { flex: 1; min-width: 0; height: 36px; border: 1px solid #d7e1e3; border-radius: 5px; color: #31535b; background: #f6f9f9; padding: 4px 8px; font: inherit; font-size: 13px; }
.asset-room-stats { display: grid; grid-template-columns: 1fr 1fr 1.4fr; gap: 12px; padding: 14px 24px; background: #f3f7f7; border-block: 1px solid #e1e9ea; }
.asset-room-stats span { min-width: 0; color: #5a7278; font-size: 12px; }
.asset-room-stats b { display: block; margin-top: 6px; color: #193e48; font-size: 21px; font-weight: 650; overflow-wrap: anywhere; }
.asset-tabs { display: flex; flex-shrink: 0; gap: 22px; padding: 0 24px; border-bottom: 1px solid #d9e3e5; }
.asset-tabs button { padding: 15px 0 12px; border: 0; border-bottom: 3px solid transparent; background: transparent; color: #5c737b; font-size: 14px; font-weight: 600; }
.asset-tabs button[aria-selected=true] { color: #165969; border-bottom-color: #165969; }
.asset-drawer-body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 20px 24px 26px; }
.asset-drawer-footer { display: flex; flex-shrink: 0; align-items: center; justify-content: space-between; min-height: 54px; gap: 12px; padding: 10px 24px; border-top: 1px solid #dde6e8; background: #fafcfc; font-size: 11px; color: #647a81; }
.asset-list-toolbar { display: flex; gap: 10px; margin-bottom: 16px; }
.asset-search { flex: 1; }
.asset-list { display: flex; flex-direction: column; }
.asset-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 10px 16px; padding: 17px 0; border-bottom: 1px solid #e0e8ea; }
.asset-row:first-child { padding-top: 3px; }
.asset-row-main { min-width: 0; }
.asset-row-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 7px 10px; }
.asset-row h3 { margin: 0; color: #173a44; font-size: 15px; font-weight: 650; overflow-wrap: anywhere; }
.asset-status { background: #e7f3ee; color: #276346; border-radius: 4px; padding: 3px 6px; font-size: 11px; white-space: nowrap; }
.asset-status[data-status="闲置"] { color: #4d6478; background: #eaf0f4; }
.asset-status[data-status="维修中"] { color: #886223; background: #f8f0db; }
.asset-status[data-status="已报废"] { color: #93504c; background: #f7e9e7; }
.asset-row-meta { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 9px; color: #61767e; font-size: 12px; overflow-wrap: anywhere; }
.asset-row-note { margin: 8px 0 0; color: #5a727a; font-size: 12px; white-space: pre-wrap; overflow-wrap: anywhere; }
.asset-row-side { text-align: right; }
.asset-row-quantity { display: block; font-size: 20px; color: #1d4651; }
.asset-row-quantity small { font-size: 11px; margin-left: 4px; }
.asset-row-value { font-size: 11px; color: #6d8188; margin-top: 3px; }
.asset-row-actions { display: flex; justify-content: flex-end; gap: 6px; margin-top: 10px; }
.asset-empty { padding: 64px 16px; text-align: center; color: #647980; font-size: 13px; }
.asset-empty svg { width: 34px; height: 34px; color: #91a8af; margin-bottom: 12px; }
.asset-empty p { margin: 0; }
.asset-form { display: flex; flex-direction: column; gap: 16px; }
.asset-form-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 3px; }
.asset-form h2 { margin: 0; font-size: 18px; font-weight: 650; }
.asset-form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }
.asset-form .span-two { grid-column: 1/-1; }
.asset-form label { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; color: #46626b; font-size: 13px; }
.asset-form label > span { color: #b54242; }
.asset-form input, .asset-form select, .asset-form textarea { flex-basis: 100%; width: 100%; min-width: 0; box-sizing: border-box; margin: 0; padding: 10px 11px; border: 1px solid #cbd9de; border-radius: 5px; background: #fff; color: #203d47; font: inherit; font-size: 14px; box-shadow: none; }
.asset-form textarea { resize: vertical; line-height: 1.5; }
.asset-form input:disabled, .asset-form textarea:disabled { color: #46626b; background: #f6f9f9; opacity: 1; }
.asset-form input[type=color] { height: 44px; padding: 5px; cursor: pointer; }
.asset-form input:focus, .asset-form select:focus, .asset-form textarea:focus, .asset-search:focus-within, .asset-map-search:focus-within { outline: 2px solid #76b3bd; outline-offset: 2px; }
.asset-form-actions { display: flex; justify-content: flex-end; gap: 9px; padding-top: 9px; }
.asset-color-presets { display: flex; flex-wrap: wrap; gap: 9px; }
.asset-color-presets button { width: 30px; height: 30px; border: 1px solid #859a9f; border-radius: 4px; background: var(--swatch); cursor: pointer; }
.asset-color-presets button[aria-pressed=true] { outline: 2px solid #165969; outline-offset: 3px; }
.asset-room-preview { display: flex; flex-direction: column; justify-content: center; gap: 4px; align-items: center; min-height: 86px; border: 2px solid #53646c; border-radius: 3px; text-align: center; padding: 12px; overflow-wrap: anywhere; }
.asset-room-preview strong { font-size: 17px; }
.asset-room-preview span { font-size: 12px; }
.asset-message { border: 1px solid #e5bdb8; background: #fff4f2; color: #9a3833; border-radius: 5px; padding: 11px 12px; font-size: 13px; line-height: 1.5; }
.asset-loading { display: flex; flex-direction: column; gap: 20px; padding-top: 10px; }
.asset-loading div { height: 65px; border-radius: 5px; background: #edf2f3; animation: asset-pulse 1s ease-in-out infinite alternate; }
.asset-change { display: flex; flex-direction: column; gap: 6px; padding: 15px 0; border-bottom: 1px solid #e1e8ea; }
.asset-change strong { font-size: 13px; }
.asset-change small { color: #6b7e85; font-size: 11px; }
.asset-change p { margin: 0; color: #48636c; font-size: 12px; overflow-wrap: anywhere; }
.asset-transfer-summary { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 10px 16px; margin: 0; padding: 14px 0; border-block: 1px solid #dde6e8; font-size: 13px; }
.asset-transfer-summary dt { color: #647980; }
.asset-transfer-summary dd { margin: 0; color: #21464d; overflow-wrap: anywhere; }
.asset-transfer-record { padding: 18px 0; border-bottom: 1px solid #e0e8ea; }
.asset-transfer-record h3 { margin: 0; font-size: 15px; overflow-wrap: anywhere; }
.asset-transfer-route { display: grid; grid-template-columns: minmax(0,1fr) 18px minmax(0,1fr); align-items: center; gap: 12px; margin-top: 12px; color: #31545c; font-size: 14px; }
.asset-transfer-route span { overflow-wrap: anywhere; }
.asset-transfer-route svg { width: 18px; height: 18px; color: #7c9197; }
.asset-load-more { display: flex; margin: 20px auto 0; }
.asset-hover-list { display: flex; flex-direction: column; gap: 0; list-style: none; margin: 10px 0 0; padding: 0; max-height: min(360px,60vh); overflow-y: auto; overscroll-behavior: contain; pointer-events: auto; }
.asset-hover-list li { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 7px 0; border-top: 1px solid #ffffff24; color: #d8e7e4; font-size: 13px; line-height: 1.45; overflow-wrap: anywhere; }
.asset-hover-list li span { min-width: 0; }
.asset-hover-list li b { flex-shrink: 0; max-width: 45%; color: #fff; font-size: 13px; font-weight: 650; text-align: right; }
.asset-login-dialog { width: min(390px,calc(100vw - 32px)); border-radius: 8px; padding: 24px; box-shadow: 0 22px 80px #19394140; }
.asset-login-dialog .asset-form { margin-top: 20px; }
.asset-toast { position: fixed; z-index: 1500; bottom: 24px; left: 50%; transform: translateX(-50%); max-width: calc(100vw - 40px); padding: 12px 18px; border-radius: 6px; background: #153b45; color: #fff; font-size: 13px; text-align: center; box-shadow: 0 4px 18px #112f3933; }
[hidden] { display: none !important; }
@keyframes asset-pulse { from { opacity: .5; } to { opacity: 1; } }
@media(max-width:760px) {
  .meeting-body.asset-map-page .meeting-header { flex-basis: 58px; height: 58px; padding: 8px 12px; flex-direction: row; flex-wrap: nowrap; gap: 12px; }
  .meeting-body.asset-map-page .meeting-logo img { width: 128px; max-height: 36px; }
  .meeting-body.asset-map-page .meeting-shell { width: calc(100% - 16px); padding: 6px 0 8px; }
  .meeting-body.asset-map-page .meeting-map-panel { padding: 8px; }
  .meeting-body.asset-map-page .meeting-header .asset-auth-nav { display: flex; align-items: center; flex-wrap: nowrap; width: auto; min-width: 0; overflow: visible; }
  .asset-map-page .asset-auth-nav > span { max-width: 90px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .asset-map-page .meeting-floorplan-module strong { font-size: 11px; }
  .asset-map-page .meeting-floorplan-module.is-compact strong { font-size: 9px; }
  .asset-map-toolbar { flex-direction: row; gap: 8px; }
  .asset-map-title { font-size: 12px; }
  .asset-map-search { width: 155px; }
  .asset-drawer { width: 100vw; border-left: 0; }
  .asset-drawer-header { padding: 16px 16px 10px; }
  .asset-drawer h1 { font-size: 21px; }
  .asset-room-switch { margin: 0 16px 12px; }
  .asset-room-stats { padding: 12px 16px; gap: 8px; }
  .asset-room-stats b { font-size: 18px; }
  .asset-tabs { padding: 0 16px; gap: 0; justify-content: space-between; }
  .asset-drawer-body { padding: 16px 16px 24px; }
  .asset-drawer-footer { padding: 10px 16px max(10px,env(safe-area-inset-bottom)); }
  .asset-list-toolbar { flex-wrap: wrap; }
  .asset-search { min-width: 140px; }
  .asset-form input, .asset-form select, .asset-form textarea { font-size: 16px; }
  .asset-auth-nav { width: 100%; justify-content: flex-end; }
  .asset-auth-nav .asset-button { flex: 1; }
}
@media(max-width:760px) and (orientation:portrait) {
  .meeting-body.asset-map-page .meeting-map-viewport { align-items: center; }
  .asset-map-page .meeting-floorplan-canvas { flex: 0 0 100%; height: auto; aspect-ratio: var(--floorplan-aspect,1.835); }
}
@media(max-width:420px) {
  .asset-form-grid { grid-template-columns: minmax(0,1fr); }
  .asset-row { grid-template-columns: minmax(0,1fr); gap: 12px; }
  .asset-row-side { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px; text-align: left; }
  .asset-row-actions { margin: 0; }
}
@media(prefers-reduced-motion:reduce) { .asset-loading div { animation: none; } }
