:root {
  --bg: #f2f5f3;
  --surface: #ffffff;
  --surface-soft: #f7f9f8;
  --ink: #17211c;
  --muted: #6d7972;
  --line: #dfe6e2;
  --line-strong: #cbd6d0;
  --brand: #176b4c;
  --brand-strong: #0e5038;
  --brand-soft: #e6f3ed;
  --gold: #b8872b;
  --gold-soft: #f7efdf;
  --blue: #276b91;
  --blue-soft: #e7f1f7;
  --danger: #bc4b3b;
  --danger-soft: #faece9;
  --warning: #9d6c16;
  --warning-soft: #fbf2dc;
  --sidebar: #13231c;
  --shadow: 0 12px 34px rgba(18, 42, 31, .08);
  --radius: 12px;
  --font-family-ui: "Microsoft YaHei", "PingFang SC", "Noto Sans SC", Inter, system-ui, sans-serif;
  --font-size-caption: 12px;
  --font-size-small: 13px;
  --font-size-body: 14px;
  --font-size-card-title: 16px;
  --font-size-section: 20px;
  --font-size-page-title: 28px;
  --font-size-display: 44px;
  --text-primary: var(--ink);
  --text-secondary: var(--muted);
  --text-disabled: #929d97;
  --screen-bg: #020a0d;
  --screen-bg-soft: #031514;
  --screen-panel: rgba(2, 24, 22, .88);
  --screen-panel-soft: rgba(4, 45, 38, .58);
  --screen-accent: #24f3bb;
  --screen-accent-strong: #0bcf83;
  --screen-accent-soft: rgba(36, 243, 187, .16);
  --screen-line: rgba(36, 243, 187, .42);
  --screen-text: #d9fff2;
  --screen-muted: #79ad9c;
  --screen-gold: #e6b94b;
  --screen-danger: #ff5d57;
  font-family: var(--font-family-ui);
  color: var(--ink);
  background: var(--bg);
}

/* Company settings redesign */
.company-settings-page{display:grid;grid-template-columns:216px minmax(0,1fr);gap:24px;align-items:start;max-width:1540px;margin:0 auto}.company-settings-nav-redesign{position:sticky;top:18px;padding:15px 10px}.company-settings-nav-redesign .company-nav-title{padding:4px 12px 14px;font-size:14px;font-weight:800;color:#183c2d}.company-settings-nav-redesign small{display:block;margin:17px 12px 6px;color:#91a39a;font-size:10px;letter-spacing:.08em}.company-settings-nav-redesign button{display:flex;align-items:center;gap:9px;width:100%;border:0;background:transparent;border-radius:8px;padding:10px 12px;margin:2px 0;text-align:left;color:#527161;font-weight:700}.company-settings-nav-redesign button:hover{background:#f2f8f4}.company-settings-nav-redesign button.active{background:#e8f4ed;color:#126848}.company-settings-nav-redesign p{margin:17px 8px 2px;padding:11px;background:#f6faf7;border:1px solid #e8f0eb;border-radius:8px;color:#8fa197;font-size:11px;line-height:1.65}.company-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:4px 0 18px}.company-section-heading>div>span{display:block;margin-bottom:7px;color:#5c9878;font-size:10px;font-weight:800;letter-spacing:.08em}.company-section-heading h1{margin:0 0 6px;font-size:24px;letter-spacing:-.04em;color:#18372a}.company-section-heading p{margin:0;color:#82978c;font-size:12px;line-height:1.65}.company-overview-hero{display:flex;align-items:center;gap:16px;min-height:156px;padding:24px;border:1px solid #dcece1;border-radius:14px;background:linear-gradient(118deg,#eaf6ee 0%,#fff 72%);overflow:hidden}.company-overview-mark{display:grid;place-items:center;width:62px;height:62px;border-radius:14px;background:#176b4b;color:#fff;font-size:29px;font-weight:900;box-shadow:0 9px 20px #17704422}.company-overview-hero>div:nth-child(2){flex:1}.company-overview-hero small{color:#4b936d;font-size:10px;font-weight:800;letter-spacing:.08em}.company-overview-hero h2{margin:7px 0;font-size:21px;color:#18372a}.company-overview-hero p{margin:0 0 11px;color:#789084;font-size:12px}.company-setting-modules{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin:16px 0}.company-setting-modules button{border:1px solid #e2ebe5;background:#fff;border-radius:12px;padding:16px;text-align:left;transition:.16s ease;box-shadow:0 4px 18px #143b2908}.company-setting-modules button:hover{transform:translateY(-2px);border-color:#a8d4b9}.company-setting-modules i{display:grid;place-items:center;width:34px;height:34px;margin-bottom:13px;border-radius:9px;background:#eaf5ee;color:#16714d;font-style:normal;font-size:18px}.company-setting-modules strong,.company-setting-modules span{display:block}.company-setting-modules strong{color:#244636;font-size:13px}.company-setting-modules span{margin-top:6px;color:#91a298;font-size:10px;line-height:1.5}.company-overview-bottom{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(250px,.75fr);gap:16px}.company-overview-bottom>.panel{padding:19px}.company-overview-bottom>.panel>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.company-overview-bottom h2{margin:0;font-size:14px;color:#244636}.company-factory-summary{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid #edf2ee}.company-factory-summary i{display:grid;place-items:center;width:33px;height:33px;border-radius:8px;background:#f0f7f2;color:#22764f;font-style:normal}.company-factory-summary div{min-width:0;flex:1}.company-factory-summary strong,.company-factory-summary small{display:block}.company-factory-summary strong{font-size:12px}.company-factory-summary small{margin-top:4px;overflow:hidden;color:#8fa197;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.company-config-readiness>strong{display:block;margin:14px 0 8px;color:#176e4d;font-size:31px}.company-config-readiness>strong small{font-size:13px;color:#8fa197}.company-config-readiness progress{width:100%;height:7px;accent-color:#248057}.company-config-readiness p{color:#82978c;font-size:11px;line-height:1.7}.company-factory-panel{min-width:0}.company-factory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.company-factory-card{border:1px solid #e1eae4;background:#fff;border-radius:13px;padding:16px;box-shadow:0 5px 20px #143b2907}.company-factory-card>header,.company-factory-card footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.company-factory-card>header>span{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#edf7f0;color:#1c754f;font-size:20px}.company-factory-card h3{margin:16px 0 6px;color:#244636;font-size:14px}.company-factory-card p{height:32px;margin:0;color:#8da095;font-size:11px;line-height:1.45}.company-location-tags{display:flex;min-height:44px;flex-wrap:wrap;gap:6px;margin:14px 0;padding:11px 0;border-top:1px solid #eff3f0;border-bottom:1px solid #eff3f0}.company-location-tags span{max-width:100%;overflow:hidden;border-radius:99px;background:#edf7f0;padding:5px 8px;color:#287653;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.company-location-tags small{color:#9aa9a0;font-size:10px}.company-factory-card footer small{color:#8fa197;font-size:10px}.company-factory-card footer div{display:flex;gap:5px}.project-location-field small{display:block;margin-top:5px;color:#80958a;font-size:10px;line-height:1.5}.project-location-field input:disabled{display:none}@media(max-width:1120px){.company-setting-modules{grid-template-columns:repeat(2,minmax(0,1fr))}.company-factory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.company-settings-page{display:block}.company-settings-nav-redesign{position:static;display:flex;gap:4px;overflow:auto;margin-bottom:14px;padding:8px}.company-settings-nav-redesign .company-nav-title,.company-settings-nav-redesign small,.company-settings-nav-redesign p{display:none}.company-settings-nav-redesign button{width:auto;flex:0 0 auto;white-space:nowrap}.company-overview-hero{padding:16px}.company-overview-hero .button{display:none}.company-overview-bottom,.company-factory-grid{grid-template-columns:1fr}.company-section-heading h1{font-size:20px}}

* { box-sizing: border-box; }
html, body { min-height: 100%; }
body { margin: 0; color: var(--text-primary); background: var(--bg); font-family: var(--font-family-ui); font-size: var(--font-size-body); }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; opacity: .5; }
button:focus-visible, [tabindex]:focus-visible, summary:focus-visible {
  outline: 3px solid rgba(23,107,76,.26);
  outline-offset: 2px;
}
.hidden { display: none !important; }
.kicker { margin: 0; color: var(--brand); font-size: var(--font-size-caption); font-weight: 900; letter-spacing: .12em; }

.boot-screen { position: fixed; inset: 0; display: grid; place-content: center; justify-items: center; gap: 10px; background: var(--sidebar); color: #fff; z-index: 1000; }
.boot-screen span { color: #9eafa7; font-size: var(--font-size-caption); }
.boot-mark { width: 58px; height: 58px; display: grid; place-items: center; border-radius: 16px; color: var(--sidebar); background: var(--gold); font-size: var(--font-size-page-title); font-weight: 950; }

.login-screen { min-height: 100vh; display: grid; grid-template-columns: minmax(520px, 1.35fr) minmax(390px, .65fr); background: var(--surface); }
.login-brand { position: relative; min-height: 100vh; padding: 48px 7vw; display: flex; flex-direction: column; color: #fff; background: radial-gradient(circle at 80% 10%, rgba(184,135,43,.25), transparent 32%), linear-gradient(145deg, #13231c, #173b2c 70%, #0e5038); overflow: hidden; }
.login-brand::after { content: ""; position: absolute; right: -180px; bottom: -220px; width: 560px; height: 560px; border: 1px solid rgba(255,255,255,.08); border-radius: 50%; box-shadow: 0 0 0 70px rgba(255,255,255,.025), 0 0 0 140px rgba(255,255,255,.018); }
.brand-lockup { display: flex; align-items: center; gap: 12px; }
.brand-lockup > span { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 10px; color: var(--sidebar); background: var(--gold); font-size: var(--font-size-section); font-weight: 950; }
.brand-lockup strong, .brand-lockup small { display: block; }
.brand-lockup strong { font-size: var(--font-size-card-title); }
.brand-lockup small { margin-top: 3px; color: #9eafa7; font-size: var(--font-size-caption); letter-spacing: .13em; }
.login-brand-lockup { align-self: flex-start; }
.login-brand-logo { display: block; width: 210px; height: 74px; padding: 7px 12px; object-fit: contain; background: rgba(255,255,255,.96); border: 1px solid rgba(255,255,255,.28); border-radius: 14px; box-shadow: 0 16px 40px rgba(0,0,0,.18); }
.login-intro { position: relative; z-index: 1; max-width: 720px; margin: auto 0; }
.login-intro .kicker { color: #d0ac68; }
.login-intro h1 { margin: 18px 0 22px; font-size: clamp(42px, 4.3vw, 68px); line-height: 1.15; letter-spacing: -.04em; }
.login-intro > p:not(.kicker) { max-width: 600px; color: #bdd0c6; font-size: var(--font-size-card-title); line-height: 1.9; }
.login-points { margin-top: 34px; display: flex; flex-wrap: wrap; gap: 9px; }
.login-points span { padding: 8px 12px; border: 1px solid rgba(255,255,255,.12); border-radius: 999px; color: #d8e3dd; font-size: var(--font-size-caption); background: rgba(255,255,255,.05); }
.login-foot { position: relative; z-index: 1; margin: 0; color: #81968b; font-size: var(--font-size-caption); }
.login-card { width: min(410px, calc(100% - 64px)); margin: auto; display: grid; gap: 20px; }
.login-card h2 { margin: 7px 0 8px; font-size: var(--font-size-page-title); }
.login-card > div > p:last-child { margin: 0; color: var(--muted); font-size: var(--font-size-small); }
.login-card label { display: grid; gap: 8px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 750; }
.login-card .login-remember { display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 10px; margin-top: -4px; cursor: pointer; }
.login-remember input { width: 18px; height: 18px; margin: 0; accent-color: var(--brand); }
.login-remember > span { display: grid; gap: 2px; }
.login-remember strong { color: var(--ink); font-size: var(--font-size-caption); }
.login-remember small { color: var(--muted); font-size: 11px; font-weight: 500; }
.form-message { min-height: 18px; margin: -8px 0 0; color: var(--danger); font-size: var(--font-size-caption); text-align: center; }

.app-shell { min-height: 100vh; }
.sidebar { position: fixed; inset: 0 auto 0 0; z-index: 30; width: 254px; display: flex; flex-direction: column; color: #fff; background: var(--sidebar); }
.sidebar-brand { height: 78px; padding: 17px 20px; border-bottom: 1px solid rgba(255,255,255,.08); }
.sidebar-brand .sidebar-brand-logo { overflow:hidden; background:#fff; }
.sidebar-brand .sidebar-brand-logo img { display:block; width:auto; max-width:none; height:42px; }
.sidebar-nav { flex: 1; padding: 14px 10px 24px; overflow-y: auto; }
.nav-group-title { margin: 18px 12px 7px; color: #81968b; font-size: var(--font-size-caption); font-weight: 900; letter-spacing: .1em; }
.nav-item { width: 100%; min-height: 42px; padding: 0 11px; border: 0; border-radius: 8px; display: grid; grid-template-columns: 28px 1fr auto; gap: 8px; align-items: center; color: #a9bab1; background: transparent; text-align: left; }
.nav-item:hover { color: #fff; background: rgba(255,255,255,.055); }
.nav-item.active { color: #fff; background: rgba(255,255,255,.09); box-shadow: inset 3px 0 var(--gold); }
.nav-icon { width: 24px; height: 24px; display: grid; place-items: center; color: #d0ac68; font-size: var(--font-size-caption); font-weight: 950; }
.nav-icon img { width: 17px; height: 17px; object-fit: contain; opacity: .9; }
.nav-label { font-size: var(--font-size-body); font-weight: 750; }
.nav-badge { min-width: 20px; padding: 2px 6px; border-radius: 99px; color: #dce8e1; background: rgba(255,255,255,.08); font-size: var(--font-size-caption); text-align: center; }
.sidebar-user { min-height: 72px; padding: 12px 14px; display: grid; grid-template-columns: 36px 1fr 34px; gap: 10px; align-items: center; border-top: 1px solid rgba(255,255,255,.08); }
.sidebar-user strong, .sidebar-user small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar-user strong { font-size: var(--font-size-body); }
.sidebar-user small { margin-top: 3px; color: #93a69c; font-size: var(--font-size-caption); }
.avatar { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; color: var(--brand-strong); background: #dce9e2; font-weight: 950; }
.sidebar-backdrop { position: fixed; inset: 0; z-index: 29; padding: 0; border: 0; background: rgba(8, 20, 14, .48); }

.main-area { min-height: 100vh; margin-left: 254px; }
.topbar { position: sticky; top: 0; z-index: 20; height: 78px; padding: 0 28px; display: flex; align-items: center; justify-content: space-between; gap: 24px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.95); backdrop-filter: blur(14px); }
.page-heading { flex: 1; min-width: 0; }
.page-heading h1 { margin: 3px 0 0; overflow: hidden; font-size: var(--font-size-page-title); letter-spacing: -.02em; text-overflow: ellipsis; white-space: nowrap; }
.topbar-actions { display: flex; align-items: center; gap: 9px; }
.factory-web-switch { display:flex; align-items:center; gap:8px; padding:5px 8px; border:1px solid #cfe4d9; border-radius:9px; color:var(--text-secondary); background:#eef7f1; font-size:12px; font-weight:400; }.factory-web-switch > span { flex:0 0 auto; white-space:nowrap; }.factory-web-switch select { max-width:170px; padding:8px 28px 8px 10px; border:1px solid var(--border); border-radius:8px; color:var(--text-primary); background:var(--surface); font:inherit; }
.server-state { display: flex; align-items: center; gap: 7px; margin-right: 2px; color: var(--text-secondary); font-size: var(--font-size-small); }
.server-state i { width: 7px; height: 7px; border-radius: 50%; background: #2ca76f; box-shadow: 0 0 0 4px #e3f5ec; }
.world-clocks { min-height: 42px; padding: 5px 7px; display: flex; align-items: stretch; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); }
.world-clocks > span { min-width: 57px; padding: 0 8px; display: grid; align-content: center; justify-items: center; border-right: 1px solid var(--line); }
.world-clocks > span:last-child { border-right: 0; }
.world-clocks small, .world-clocks strong { display: block; white-space: nowrap; }
.world-clocks small { color: var(--text-secondary); font-size: var(--font-size-caption); font-weight: 650; }
.world-clocks strong { margin-top: 1px; color: var(--text-primary); font-size: var(--font-size-small); }
.page-content { padding: 24px 28px 46px; }

.button { min-height: 36px; padding: 0 14px; border: 1px solid transparent; border-radius: 7px; display: inline-flex; align-items: center; justify-content: center; text-align: center; line-height: 1; font-size: var(--font-size-small); font-weight: 850; }
.button.primary { color: #fff; background: var(--brand); }
.button.primary:hover { background: var(--brand-strong); }
.button.secondary { color: var(--ink); border-color: var(--line); background: #fff; }
.button.secondary.data-change { color: #fff; border-color: var(--danger); background: var(--danger); box-shadow: 0 0 0 3px rgba(192,61,48,.12); animation: data-change-pulse 1.8s ease-in-out infinite; }
.button.secondary.data-change:hover { background: #a9352c; }
@keyframes data-change-pulse { 50% { box-shadow: 0 0 0 6px rgba(192,61,48,.05); } }
.button.danger { color: #fff; background: var(--danger); }
.button.danger-outline { color: var(--danger); border-color: #e8b9b1; background: #fff; }
.button.warning { color: var(--warning); border-color: #ead39d; background: var(--warning-soft); }
.button.link { min-height: auto; padding: 0; border: 0; color: var(--brand); background: transparent; }
.button.large { min-height: 46px; font-size: var(--font-size-body); }
.button.small { min-height: 29px; padding: 0 10px; font-size: var(--font-size-caption); }
.icon-button { width: 34px; height: 34px; padding: 0; border: 0; border-radius: 8px; display: grid; place-items: center; color: inherit; background: rgba(127,144,135,.12); font-size: var(--font-size-card-title); }

.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.metric-card { min-height: 128px; padding: 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: 0 4px 16px rgba(18,42,31,.03); }
.metric-card .metric-head { display: flex; justify-content: space-between; color: var(--muted); font-size: var(--font-size-small); }
.metric-card .metric-icon { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 8px; color: var(--brand); background: var(--brand-soft); font-weight: 900; }
.metric-value { display: block; margin-top: 13px; font-size: var(--font-size-page-title); letter-spacing: -.03em; }
.metric-note { display: block; margin-top: 7px; color: var(--muted); font-size: var(--font-size-caption); }

.grid { display: grid; gap: 14px; }
.grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.dashboard-layout { margin-top: 14px; display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(340px, .55fr); gap: 14px; }
.dashboard-visual-route { overflow: hidden; background: #020a0c; }
.dashboard-visual-route .sidebar { display: none; }
.dashboard-visual-route .main-area { min-height: 100vh; margin-left: 0; }
.dashboard-visual-route .topbar { display: none; }
.dashboard-visual-route .page-content { height: 100vh; padding: 0; overflow: auto; background: #020a0c; }
.dashboard-visual-route > .toast-stack { z-index: 90; }

.visual-dashboard {
  --visual-cyan: #24f3bb;
  --visual-green: #0bcf83;
  --visual-blue: #28bffd;
  --visual-gold: #e6b94b;
  --visual-red: #ff5d57;
  position: relative;
  isolation: isolate;
  width: 100%;
  min-width: 1440px;
  min-height: 900px;
  height: 100vh;
  overflow: hidden;
  color: #d9fff2;
  background:
    radial-gradient(circle at 50% 44%, rgba(12,113,89,.24), transparent 30%),
    radial-gradient(circle at 11% 20%, rgba(16,157,124,.12), transparent 26%),
    linear-gradient(180deg, #031014 0%, #020a0d 54%, #02080b 100%);
  font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
}
.visual-dashboard::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -3;
  opacity: .27;
  background-image:
    linear-gradient(rgba(40,234,188,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(40,234,188,.055) 1px, transparent 1px);
  background-size: 38px 38px;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.55), transparent 78%);
}
.visual-dashboard::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 60;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(circle at center, rgba(210,255,243,.4), rgba(36,243,187,.08) 38%, transparent 72%);
}
.visual-dashboard.language-flash::after { animation: visualLanguageFlash .62s ease-out; }
.visual-grid-floor {
  position: absolute;
  right: 18%;
  bottom: -19%;
  left: 18%;
  z-index: -1;
  height: 49%;
  opacity: .48;
  background-image:
    linear-gradient(rgba(37,245,187,.18) 1px, transparent 1px),
    linear-gradient(90deg, rgba(37,245,187,.18) 1px, transparent 1px);
  background-size: 54px 34px;
  transform: perspective(380px) rotateX(62deg);
  transform-origin: center bottom;
  filter: drop-shadow(0 0 8px rgba(36,243,187,.2));
}
.visual-ambient { position: absolute; z-index: -2; width: 420px; height: 420px; border-radius: 50%; filter: blur(90px); opacity: .12; animation: visualAmbient 8s ease-in-out infinite alternate; }
.visual-ambient.ambient-a { top: 10%; left: 22%; background: #00e8aa; }
.visual-ambient.ambient-b { right: 14%; bottom: 8%; background: #0098ff; animation-delay: -3s; }

.visual-dashboard-header {
  position: relative;
  z-index: 10;
  height: 76px;
  padding: 0 20px;
  display: grid;
  grid-template-columns: 310px minmax(520px, 1fr) 520px;
  align-items: center;
  border-bottom: 1px solid rgba(47,235,180,.25);
  background: linear-gradient(180deg, rgba(2,18,21,.98), rgba(2,15,18,.78));
  box-shadow: 0 8px 28px rgba(0,0,0,.38);
}
.visual-dashboard-header::before,
.visual-dashboard-header::after {
  content: "";
  position: absolute;
  bottom: -2px;
  width: 31%;
  height: 3px;
  background: linear-gradient(90deg, transparent, var(--visual-cyan), transparent);
  filter: drop-shadow(0 0 8px var(--visual-cyan));
  animation: visualHeaderFlow 3.2s linear infinite;
}
.visual-dashboard-header::before { left: 0; }
.visual-dashboard-header::after { right: 0; animation-direction: reverse; }
.visual-brand { min-width: 0; display: flex; align-items: center; gap: 10px; }
.visual-brand img { width: 96px; height: 52px; object-fit: contain; filter: brightness(1.28) saturate(1.2) drop-shadow(0 0 8px rgba(36,243,187,.45)); }
.visual-dashboard-title { position: absolute; top: 50%; left: 50%; display: flex; align-items: center; justify-content: center; gap: 18px; text-align: center; pointer-events: none; transform: translate(-50%, -50%); }
.visual-dashboard-title > i { width: min(9vw, 145px); height: 14px; border-top: 2px solid rgba(44,245,187,.65); border-bottom: 1px solid rgba(44,245,187,.18); transform: skewX(-36deg); box-shadow: 0 -4px 10px rgba(36,243,187,.18); }
.visual-dashboard-title h1 { margin: 0; color: #caffea; text-shadow: 0 0 8px rgba(67,255,201,.7), 0 0 24px rgba(42,220,173,.32); font-size: clamp(24px, 2vw, 34px); letter-spacing: .12em; white-space: nowrap; }
.visual-dashboard-title p { margin: 3px 0 0; color: #428674; font-size: 9px; letter-spacing: .22em; }
.visual-dashboard.is-english .visual-dashboard-title { gap: 12px; }
.visual-dashboard.is-english .visual-dashboard-title > i { width: min(4vw, 58px); }
.visual-dashboard.is-english .visual-dashboard-title h1 { font-size: clamp(18px, 1.4vw, 23px); letter-spacing: .04em; }
.visual-dashboard-actions { grid-column: 3; display: flex; align-items: center; justify-content: flex-end; gap: 9px; color: #a4d9c9; font-size: 11px; }
.visual-dashboard-actions button { min-height: 29px; padding: 0 9px; border: 1px solid rgba(42,235,180,.2); border-radius: 10px; color: #9edaca; background: rgba(10,50,47,.28); font-size: 10px; }
.visual-dashboard-actions button:hover { color: #eafff8; border-color: rgba(42,235,180,.62); background: rgba(16,110,84,.35); box-shadow: 0 0 13px rgba(36,243,187,.15); }
.visual-dashboard-actions time { min-width: 150px; color: #d5f9ed; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.visual-online { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.visual-online i { width: 8px; height: 8px; border-radius: 50%; background: #19e58e; box-shadow: 0 0 0 4px rgba(25,229,142,.08), 0 0 12px #19e58e; animation: visualOnline 1.8s ease-in-out infinite; }

.visual-dashboard-body {
  height: calc(100vh - 76px);
  min-height: 824px;
  padding: 10px;
  display: grid;
  grid-template-columns: 310px minmax(760px, 1fr) 320px;
  gap: 10px;
}
.visual-dashboard-left,
.visual-dashboard-right,
.visual-dashboard-center { min-width: 0; min-height: 0; display: grid; gap: 8px; }
.visual-dashboard-left { grid-template-rows: auto auto auto auto minmax(132px, 1fr); }
.visual-dashboard-right { grid-template-rows: minmax(145px, .8fr) minmax(150px, .9fr) auto minmax(170px, 1fr); }
.visual-dashboard-center { grid-template-rows: minmax(410px, 1fr) minmax(205px, .42fr); }
.visual-dashboard-lower { min-width: 0; min-height: 0; display: grid; grid-template-columns: minmax(0, 42fr) minmax(0, 58fr); gap: 8px; }
.visual-dashboard-lower > .visual-panel { height: 100%; }

.visual-panel {
  position: relative;
  min-height: 0;
  overflow: hidden;
  border: 1px solid rgba(42,226,174,.27);
  border-radius: 15px;
  background: linear-gradient(145deg, rgba(6,38,39,.74), rgba(2,19,23,.76));
  box-shadow: inset 0 0 28px rgba(11,157,116,.045), 0 7px 22px rgba(0,0,0,.18);
  backdrop-filter: blur(8px);
}
.visual-panel::before,
.visual-panel::after { content: ""; position: absolute; width: 18px; height: 18px; pointer-events: none; }
.visual-panel::before { top: -1px; left: -1px; border-top: 2px solid var(--visual-cyan); border-left: 2px solid var(--visual-cyan); }
.visual-panel::after { right: -1px; bottom: -1px; border-right: 2px solid var(--visual-cyan); border-bottom: 2px solid var(--visual-cyan); }
.visual-panel > header { height: 39px; padding: 0 11px; display: flex; align-items: center; gap: 7px; border-bottom: 1px solid rgba(44,229,177,.14); background: linear-gradient(90deg, rgba(12,92,73,.17), transparent); }
.visual-panel > header > span { color: var(--visual-cyan); text-shadow: 0 0 8px rgba(36,243,187,.8); font-size: 18px; }
.visual-panel > header h2 { margin: 0; color: #d1f9ed; font-size: 18px; letter-spacing: .07em; }
.visual-panel > header i { flex: 1; height: 1px; margin-left: 5px; background: linear-gradient(90deg, rgba(36,243,187,.28), transparent); }
.visual-panel-body { height: calc(100% - 39px); min-height: 0; padding: 8px 11px; overflow: hidden; }

.visual-summary-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 7px; }
.visual-summary-grid article { position: relative; min-height: 74px; padding: 8px 10px; overflow: hidden; border: 1px solid rgba(36,243,187,.18); border-radius: 12px; background: linear-gradient(135deg, rgba(14,99,77,.22), rgba(3,34,36,.34)); }
.visual-summary-grid article::after { content: ""; position: absolute; right: -18px; bottom: -26px; width: 64px; height: 64px; border: 1px solid rgba(36,243,187,.14); border-radius: 50%; box-shadow: 0 0 0 11px rgba(36,243,187,.025); }
.visual-summary-grid span, .visual-summary-grid small { display: block; color: #78a99b; font-size: 14px; }
.visual-summary-grid strong { display: inline-block; margin: 2px 5px 1px 0; color: #aaffdf; text-shadow: 0 0 10px rgba(36,243,187,.48); font-size: 30px; line-height: 1; }
.visual-summary-grid .blue strong { color: #45caff; text-shadow: 0 0 10px rgba(69,202,255,.5); }
.visual-summary-grid .red strong { color: #ff6a62; text-shadow: 0 0 10px rgba(255,89,82,.42); }
.visual-summary-grid .gold strong { color: #eec55f; text-shadow: 0 0 10px rgba(238,197,95,.42); }

.visual-stage-distribution,
.visual-people-resource,
.visual-delivery { display: grid; grid-template-columns: 102px minmax(0, 1fr); align-items: center; gap: 9px; }
.visual-ring { --ring-value: 0deg; position: relative; width: 92px; height: 92px; display: grid; place-items: center; border-radius: 50%; background: conic-gradient(var(--visual-cyan) 0 var(--ring-value), rgba(37,105,91,.25) var(--ring-value) 360deg); box-shadow: 0 0 18px rgba(36,243,187,.12); }
.visual-ring::before { content: ""; position: absolute; inset: 9px; border: 1px solid rgba(36,243,187,.2); border-radius: 50%; background: #051a1d; box-shadow: inset 0 0 18px rgba(13,111,88,.22); }
.visual-ring > div { position: relative; z-index: 1; text-align: center; }
.visual-ring strong, .visual-ring span, .visual-ring small { display: block; }
.visual-ring strong { color: #dcfff3; text-shadow: 0 0 8px rgba(36,243,187,.55); font-size: 25px; }
.visual-ring span { margin-top: 1px; color: #87c5b4; font-size: 13px; }
.visual-ring small { margin-top: 1px; color: #4e8c7b; font-size: 12px; }
.visual-progress-row { margin: 5px 0; }
.visual-progress-row > div { display: flex; justify-content: space-between; gap: 8px; color: #86b8aa; font-size: 13px; }
.visual-progress-row > div b { color: #bdfbe8; font-weight: 700; }
.visual-progress-row > i { height: 4px; margin-top: 3px; display: block; overflow: hidden; border-radius: 8px; background: rgba(65,133,116,.2); }
.visual-progress-row > i em { height: 100%; display: block; border-radius: inherit; background: linear-gradient(90deg, #0cba79, #44f4bf); box-shadow: 0 0 9px #24f3bb; animation: visualBarGlow 2.2s ease-in-out infinite alternate; }

.visual-region-list { display: grid; gap: 5px; }
.visual-region-list article { display: grid; grid-template-columns: minmax(0, 1fr) 28px; align-items: center; gap: 5px; font-size: 14px; }
.visual-region-list article > span { overflow: hidden; display: flex; align-items: center; gap: 6px; color: #8ec2b3; text-overflow: ellipsis; white-space: nowrap; }
.visual-region-list article > span i { width: 6px; height: 6px; flex: 0 0 auto; border-radius: 50%; background: var(--visual-cyan); box-shadow: 0 0 9px var(--visual-cyan); animation: visualOnline 1.8s ease-in-out infinite; animation-delay: var(--delay); }
.visual-region-list article > b { color: #c9ffed; text-align: right; }
.visual-region-list article > em { grid-column: 1 / -1; height: 2px; overflow: hidden; background: rgba(40,156,124,.14); }
.visual-region-list article > em i { height: 100%; display: block; background: linear-gradient(90deg, rgba(36,243,187,.2), var(--visual-cyan)); box-shadow: 0 0 7px var(--visual-cyan); }
.visual-people-resource dl,
.visual-delivery dl { margin: 0; display: grid; gap: 6px; }
.visual-people-resource dl div,
.visual-delivery dl div { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(44,220,171,.1); color: #77ab9c; font-size: 14px; }
.visual-people-resource dd,
.visual-delivery dd { margin: 0; color: #baffE8; font-size: 16px; font-weight: 800; }
.visual-resource-bars { padding-top: 1px; }

.visual-project-showcase { position: relative; min-height: 0; overflow: hidden; isolation: isolate; }
.visual-project-showcase::before { content: ""; position: absolute; z-index: -2; inset: 5% 4% 0; border-radius: 50%; background: radial-gradient(ellipse at center, rgba(16,166,124,.12), rgba(3,25,29,.04) 42%, transparent 72%); box-shadow: inset 0 0 80px rgba(36,243,187,.06); }
.visual-project-routes { position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.visual-project-routes path { fill: none; stroke: rgba(34,226,171,.22); stroke-width: 1.2; vector-effect: non-scaling-stroke; filter: url(#visual-route-glow); }
.visual-project-routes marker path { fill: #62f7ca; stroke: none; }
.visual-project-routes .route-backdrop { stroke: rgba(38,178,139,.2); stroke-width: 20; opacity: .18; }
.visual-project-routes .route-inner { stroke-dasharray: 7 13; opacity: .48; }
.visual-project-routes .route-flow { stroke: rgba(72,255,204,.62); stroke-width: 1.6; stroke-dasharray: 10 16; animation: visualRouteFlow 7s linear infinite; }
.visual-project-orbit { position: absolute; z-index: 6; inset: 0; pointer-events: none; }
.visual-project-mini { position: absolute; width: clamp(158px, 19%, 232px); aspect-ratio: 16 / 9; margin: 0; padding: 0; overflow: hidden; translate: -50% -50%; border: 1px solid rgba(86,255,209,.9); border-radius: 10px; color: #d7fff2; background: #092225; box-shadow: inset 0 0 0 1px rgba(36,243,187,.16), 0 0 15px rgba(36,243,187,.32), 0 13px 24px rgba(0,0,0,.4); opacity: .94; text-align: left; pointer-events: auto; will-change: transform; transition: border-color .18s ease, box-shadow .18s ease, filter .18s ease; }
.visual-project-mini:hover { z-index: 12; border-color: #b5ffea; box-shadow: inset 0 0 0 1px rgba(150,255,226,.35), 0 0 25px rgba(36,243,187,.62), 0 16px 28px rgba(0,0,0,.48); filter: brightness(1.12); }
.visual-project-mini.is-promoting { z-index: 30; pointer-events: none; }
.visual-project-exit-clone { position: fixed; z-index: 80; margin: 0; translate: none; pointer-events: none; will-change: transform, opacity; }
.visual-project-mini > div { position: absolute; inset: 2px; overflow: hidden; border-radius: 8px; background: #0a2224; }
.visual-project-mini > div::after { content: ""; position: absolute; inset: 45% 0 0; background: linear-gradient(transparent, rgba(1,12,14,.86)); }
.visual-project-mini-image { width: 100%; height: 100%; display: block; object-fit: cover; object-position: center; border-radius: inherit; filter: saturate(1.02) brightness(.96); }
.visual-project-mini > span { position: absolute; right: 8px; bottom: 7px; left: 8px; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 5px; text-shadow: 0 1px 5px #000; }
.visual-project-mini > span strong { overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.visual-project-mini > span small { padding: 2px 4px; border-radius: 3px; color: #53e7b5; background: rgba(13,109,79,.38); font-size: 12px; white-space: nowrap; }
.visual-project-mini.orbit-slot-1 { top: 72%; left: 8%; }
.visual-project-mini.orbit-slot-2 { top: 39%; left: 8%; }
.visual-project-mini.orbit-slot-3 { top: 13%; left: 22%; }
.visual-project-mini.orbit-slot-4 { top: 10%; left: 50%; }
.visual-project-mini.orbit-slot-5 { top: 13%; left: 78%; }
.visual-project-mini.orbit-slot-6 { top: 39%; left: 92%; }
.visual-project-mini.orbit-slot-7 { top: 72%; left: 92%; }

.visual-focus-zone { position: absolute; z-index: 5; top: 31%; right: 21.5%; bottom: 3%; left: 21.5%; min-width: 0; min-height: 0; perspective: 1300px; }
.visual-focus-stage { position: absolute; inset: 0; margin: auto; overflow: visible; }
.visual-focus-card { position: absolute; inset: 0; overflow: hidden; border: 1px solid rgba(58,247,192,.7); border-radius: 20px; background: #020b0e; box-shadow: 0 0 0 1px rgba(58,247,192,.08), 0 20px 55px rgba(0,0,0,.48), 0 0 28px rgba(37,218,169,.13); transform-style: preserve-3d; }
.visual-focus-card.current { z-index: 2; opacity: 1; }
.visual-focus-card.incoming { z-index: 3; opacity: 0; transform-origin: center; will-change: transform, opacity; }
.visual-focus-image { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: #061517; }
.visual-focus-project-image { width: 100%; height: 100%; display: block; object-fit: contain; object-position: 50% 50%; filter: none; transform: none; }
.visual-focus-card.current .visual-focus-project-image { transform: none; }
.visual-focus-image::after { display: none; }
.visual-focus-frame { position: absolute; inset: 0; z-index: 5; pointer-events: none; }
.visual-focus-frame i { position: absolute; width: 48px; height: 48px; filter: drop-shadow(0 0 8px #24f3bb) drop-shadow(0 0 16px rgba(36,243,187,.55)); }
.visual-focus-frame i:nth-child(1) { top: -1px; left: -1px; border-top: 3px solid #8dffe4; border-left: 3px solid #8dffe4; border-radius: 19px 0 0; }
.visual-focus-frame i:nth-child(2) { top: -1px; right: -1px; border-top: 3px solid #8dffe4; border-right: 3px solid #8dffe4; border-radius: 0 19px 0 0; }
.visual-focus-frame i:nth-child(3) { right: -1px; bottom: -1px; border-right: 3px solid #8dffe4; border-bottom: 3px solid #8dffe4; border-radius: 0 0 19px; }
.visual-focus-frame i:nth-child(4) { bottom: -1px; left: -1px; border-bottom: 3px solid #8dffe4; border-left: 3px solid #8dffe4; border-radius: 0 0 0 19px; }
.visual-focus-side-flow { position: absolute; z-index: 6; top: 12%; bottom: 12%; width: 3px; overflow: hidden; pointer-events: none; background: rgba(51,244,190,.12); box-shadow: 0 0 10px rgba(36,243,187,.2); }
.visual-focus-side-flow.left { left: 0; }
.visual-focus-side-flow.right { right: 0; }
.visual-focus-side-flow::after { content: ""; position: absolute; top: -32%; left: 0; width: 100%; height: 30%; background: linear-gradient(180deg, transparent, #b5ffeb 38%, #26f5b9 62%, transparent); box-shadow: 0 0 12px #24f3bb, 0 0 24px rgba(36,243,187,.72); animation: visualSideFlow 2.8s linear infinite; }
.visual-focus-side-flow.right::after { animation-delay: -1.4s; }
.visual-focus-copy { position: absolute; z-index: 4; top: 20px; left: 20px; max-width: calc(100% - 40px); padding: 13px 17px 14px; overflow: hidden; border-left: 2px solid rgba(103,255,216,.92); border-radius: 3px 12px 12px 3px; color: #fff; background: linear-gradient(100deg, rgba(1,18,19,.9), rgba(2,30,27,.68) 72%, transparent); box-shadow: -7px 0 22px rgba(36,243,187,.13); pointer-events: none; }
.visual-focus-copy h2 { margin: 0 0 8px; overflow: hidden; color: #f4fffb; text-shadow: 0 2px 14px #000; font-size: clamp(24px, 1.9vw, 32px); text-overflow: ellipsis; white-space: nowrap; }
.visual-focus-copy p { margin: 0; display: flex; flex-wrap: wrap; gap: 7px 18px; color: #c4e8dc; font-size: 14px; }
.visual-focus-copy p span { white-space: nowrap; }
.visual-focus-empty { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 8px; border: 1px solid rgba(36,243,187,.35); border-radius: 20px; color: #6eb19f; background: rgba(6,35,36,.7); }
.visual-focus-empty span { width: 65px; height: 65px; display: grid; place-items: center; border: 1px solid rgba(36,243,187,.35); border-radius: 50%; color: #98f8dc; font-size: 26px; box-shadow: 0 0 28px rgba(36,243,187,.16); }
.visual-focus-empty strong { color: #c7f8e9; }
.visual-focus-empty small { font-size: 9px; }
.visual-carousel-arrow { position: absolute; z-index: 7; top: 43%; width: 30px; height: 56px; padding: 0; border: 1px solid rgba(36,243,187,.13); border-radius: 12px; color: #7bcab5; background: rgba(3,23,25,.44); font-size: 35px; line-height: 1; }
.visual-carousel-arrow.prev { left: 0; }
.visual-carousel-arrow.next { right: 0; }
.visual-carousel-arrow:hover { color: #d8fff3; border-color: rgba(36,243,187,.5); box-shadow: 0 0 14px rgba(36,243,187,.18); }

.milestone-panel .visual-panel-body { padding: 9px 10px; }
.visual-milestones { position: relative; min-height: 142px; display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); grid-auto-rows: minmax(64px, auto); align-items: start; column-gap: 2px; row-gap: 8px; }
.visual-milestone-line { position: absolute; top: 20px; right: 5%; left: 5%; height: 1px; background: linear-gradient(90deg, transparent, rgba(36,243,187,.62), rgba(36,243,187,.2), transparent); box-shadow: 0 72px 0 rgba(36,243,187,.28); }
.visual-milestones article { position: relative; z-index: 1; grid-column: span 2; display: grid; justify-items: center; gap: 3px; text-align: center; }
.visual-milestones article:nth-of-type(5) { grid-column: 4 / span 2; }
.visual-milestones:has(article:nth-of-type(6)) article:nth-of-type(5) { grid-column: 3 / span 2; }
.visual-milestones:has(article:nth-of-type(7)) article:nth-of-type(5) { grid-column: 2 / span 2; }
.visual-milestones article > span { width: 40px; height: 40px; display: grid; place-items: center; border: 1px solid rgba(83,151,131,.34); border-radius: 50%; color: #5e8d80; background: #071c1e; font-size: 14px; box-shadow: 0 0 0 5px rgba(6,35,34,.9); }
.visual-milestones article.done > span { color: #d8fff2; border-color: rgba(36,243,187,.65); background: rgba(24,137,99,.55); box-shadow: 0 0 0 5px rgba(6,35,34,.9), 0 0 15px rgba(36,243,187,.35); }
.visual-milestones article.active > span { color: #061813; border-color: #7bffe0; background: #58efbd; box-shadow: 0 0 0 5px rgba(6,35,34,.9), 0 0 18px rgba(36,243,187,.65); animation: visualMilestone 1.8s ease-in-out infinite; }
.visual-milestones strong { max-width: 92px; overflow: hidden; color: #9fcfc1; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.visual-milestones small { color: #477a6d; font-size: 12px; }
.visual-milestones article.done strong, .visual-milestones article.active strong { color: #d0f8ec; }

.visual-event-list,
.visual-risk-list,
.visual-todo-list,
.visual-plan-list { height: 100%; display: grid; align-content: start; overflow: hidden; }
.visual-event-list article { min-height: 34px; display: grid; grid-template-columns: 7px minmax(0, 1fr) auto; align-items: center; gap: 7px; border-bottom: 1px solid rgba(47,213,166,.09); }
.visual-event-list article > i { width: 5px; height: 5px; border-radius: 50%; background: #32e9b3; box-shadow: 0 0 8px #32e9b3; }
.visual-event-list div { min-width: 0; display: flex; gap: 7px; }
.visual-event-list strong, .visual-event-list span { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.visual-event-list strong { color: #a9ddcd; }
.visual-event-list span, .visual-event-list time { color: #527f73; }
.visual-event-list time { font-size: 12px; }

.visual-risk-list { gap: 6px; }
.visual-risk-list article { min-height: 46px; padding: 5px 7px; display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: 7px; border: 1px solid rgba(232,182,65,.12); border-radius: 11px; background: rgba(114,75,17,.12); }
.visual-risk-list article.high { border-color: rgba(255,89,82,.17); background: rgba(132,39,35,.14); }
.visual-risk-list article > span { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 5px; color: #f0c45c; background: rgba(198,131,22,.18); box-shadow: 0 0 11px rgba(225,174,49,.09); font-weight: 900; }
.visual-risk-list article.high > span { color: #ff716a; background: rgba(187,48,43,.23); }
.visual-risk-list strong, .visual-risk-list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.visual-risk-list strong { color: #d8eee7; font-size: 14px; }
.visual-risk-list small { margin-top: 3px; color: #8b9c96; font-size: 12px; }
.visual-risk-list article > b { color: #e0ae38; font-size: 12px; }
.visual-risk-list article.high > b { color: #ff615a; }
.visual-todo-list article { min-height: 34px; display: grid; grid-template-columns: 17px minmax(0, 1fr) auto; align-items: center; gap: 6px; border-bottom: 1px solid rgba(47,213,166,.09); }
.visual-todo-list article > span { width: 18px; height: 18px; display: grid; place-items: center; border-radius: 50%; color: #8cf6d6; background: rgba(36,190,143,.18); font-size: 12px; }
.visual-todo-list strong, .visual-todo-list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.visual-todo-list strong { color: #bdded4; font-size: 13px; }
.visual-todo-list small { color: #557e73; font-size: 12px; }
.visual-todo-list article > b { color: #79b9a7; font-size: 12px; }
.visual-delivery { grid-template-columns: 105px minmax(0, 1fr); }
.visual-delivery dl { grid-template-columns: repeat(2, 1fr); gap: 6px 9px; }
.visual-delivery dl div { padding-bottom: 4px; }
.visual-delivery dl .late dd { color: #ff6e67; }
.visual-plan-list article { min-height: 39px; display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center; gap: 8px; border-bottom: 1px solid rgba(47,213,166,.09); }
.visual-plan-list time { display: grid; justify-items: center; color: #55e6b8; }
.visual-plan-list time b { font-size: 14px; }
.visual-plan-list time small { color: #5f9586; font-size: 12px; }
.visual-plan-list strong, .visual-plan-list span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.visual-plan-list strong { color: #b8dcd1; font-size: 13px; }
.visual-plan-list span { margin-top: 2px; color: #517b70; font-size: 12px; }
.visual-list-empty { height: 100%; min-height: 48px; display: grid; place-content: center; justify-items: center; gap: 4px; color: #416f63; text-align: center; }
.visual-list-empty span { color: #4c9c87; font-size: 18px; }
.visual-list-empty p { margin: 0; font-size: 13px; }
.visual-deferred-link { width: 100%; min-height: 92px; display: grid; place-content: center; justify-items: center; gap: 5px; padding: 12px; border: 1px dashed rgba(82, 201, 166, .28); border-radius: 10px; color: #75d8bb; background: rgba(18, 65, 53, .2); text-align: center; cursor: pointer; }
.visual-deferred-link:hover { border-color: rgba(91, 224, 185, .55); background: rgba(22, 88, 68, .32); }
.visual-deferred-link span { color: #4c9c87; font-size: 11px; letter-spacing: .12em; }
.visual-deferred-link strong { color: #b8dcd1; font-size: 14px; }
.visual-deferred-link small { color: #5f9586; font-size: 12px; }

@keyframes visualHeaderFlow { from { transform: translateX(-35%); opacity: .25; } 50% { opacity: 1; } to { transform: translateX(35%); opacity: .25; } }
@keyframes visualOnline { 0%,100% { opacity: .55; transform: scale(.82); } 50% { opacity: 1; transform: scale(1.12); } }
@keyframes visualAmbient { from { transform: translate3d(-18px,-10px,0) scale(.9); } to { transform: translate3d(24px,18px,0) scale(1.12); } }
@keyframes visualBarGlow { from { filter: brightness(.8); } to { filter: brightness(1.25); } }
@keyframes visualRouteFlow { to { stroke-dashoffset: -104; } }
@keyframes visualScan { from { transform: translateY(-80%); } to { transform: translateY(670%); } }
@keyframes visualSideFlow { from { transform: translateY(0); opacity: 0; } 12% { opacity: 1; } 88% { opacity: 1; } to { transform: translateY(440%); opacity: 0; } }
@keyframes visualMilestone { 0%,100% { filter: brightness(.8); } 50% { filter: brightness(1.25); } }
@keyframes visualLanguageFlash { 0% { opacity: 0; } 18% { opacity: .72; } 42% { opacity: .2; } 100% { opacity: 0; } }

@media (max-width: 1650px) {
  .visual-dashboard { min-width: 1280px; }
  .visual-dashboard-header { grid-template-columns: 260px minmax(450px, 1fr) 470px; }
  .visual-dashboard-body { grid-template-columns: 280px minmax(680px, 1fr) 290px; }
  .visual-project-mini { width: clamp(148px, 18.5%, 205px); }
  .visual-focus-zone { right: 20.5%; left: 20.5%; }
  .visual-brand img { width: 82px; }
  .visual-dashboard-title { gap: 13px; }
  .visual-dashboard-title > i { width: min(5vw, 72px); }
  .visual-dashboard-title h1 { font-size: clamp(22px, 1.75vw, 29px); }
  .visual-dashboard.is-english .visual-dashboard-title > i { width: min(3vw, 46px); }
  .visual-dashboard.is-english .visual-dashboard-title h1 { font-size: clamp(17px, 1.3vw, 21px); }
}

@media (max-height: 940px) {
  .visual-dashboard { min-height: 820px; }
  .visual-dashboard-body { min-height: 744px; }
  .visual-dashboard-center { grid-template-rows: minmax(365px, 1fr) minmax(190px, .46fr); }
  .visual-summary-grid article { min-height: 58px; }
  .visual-summary-grid strong { font-size: 26px; }
}

@media (prefers-reduced-motion: reduce) {
  .visual-dashboard *,
  .visual-dashboard *::before,
  .visual-dashboard *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}
.stack { display: grid; gap: 14px; }
.panel { border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: 0 4px 16px rgba(18,42,31,.03); overflow: hidden; }
.panel-header { min-height: 66px; padding: 14px 18px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-bottom: 1px solid var(--line); }
.panel-header h2 { margin: 0 0 4px; font-size: var(--font-size-card-title); }
.panel-header p { margin: 0; color: var(--muted); font-size: var(--font-size-small); }
.panel-body { padding: 18px; }
.panel-body.flush { padding: 0; }
.toolbar { margin-bottom: 14px; padding: 12px; display: flex; flex-wrap: wrap; align-items: center; gap: 9px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.toolbar .spacer { flex: 1; }
.toolbar input[type="search"] { min-width: 280px; flex: 1; }
.tabs { display: flex; gap: 4px; padding: 4px; border-radius: 9px; background: #e9eeeb; }
.tab { min-height: 31px; padding: 0 12px; border: 0; border-radius: 6px; color: var(--muted); background: transparent; font-size: var(--font-size-small); font-weight: 800; }
.tab.active { color: var(--ink); background: #fff; box-shadow: 0 2px 7px rgba(0,0,0,.08); }

input, select, textarea { width: 100%; min-height: 38px; padding: 0 11px; border: 1px solid var(--line-strong); border-radius: 7px; color: var(--ink); outline: none; background: #fff; font-size: var(--font-size-body); }
input:focus, select:focus, textarea:focus { border-color: #6ba98e; box-shadow: 0 0 0 3px rgba(23,107,76,.1); }
textarea { min-height: 100px; padding-top: 10px; resize: vertical; }
textarea.json-editor { min-height: 320px; font: var(--font-size-caption)/1.65 Consolas, "SFMono-Regular", monospace; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.form-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.field { display: grid; gap: 7px; }
.field.full { grid-column: 1 / -1; }
.field > span { color: var(--muted); font-size: var(--font-size-small); font-weight: 800; }
.field small { color: #8a958f; font-size: var(--font-size-caption); line-height: 1.5; }
.quantity-formula-preview { min-height: 18px; color: #718177; }
.quantity-formula-preview.error { color: #c84e42; }
.project-create-form { display: grid; gap: 22px; }
.project-create-suggested-field { align-content: start; }
.project-date-range-field { align-content: start; }
.project-create-range-inputs { display: grid; grid-template-columns: minmax(0, 1fr) 16px minmax(0, 1fr); align-items: center; gap: 6px; }
.project-create-range-inputs b { color: var(--muted); text-align: center; }
.project-create-suggestions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.project-create-suggestions b { margin-right: 2px; color: #718078; font-size: var(--font-size-caption); }
.project-create-suggestions button { min-height: 26px; padding: 2px 9px; border: 1px solid #d3e2db; border-radius: 999px; color: var(--brand); background: #f3faf6; font-size: var(--font-size-caption); cursor: pointer; }
.project-create-suggestions button:hover { border-color: #8fbaa6; background: #e8f5ee; }
.project-create-dialog { width: min(1580px, calc(100vw - 44px)); max-height: 90vh; border-radius: 18px; }
.project-create-dialog::backdrop { background: rgba(11,24,18,.48); backdrop-filter: blur(2px); }
.project-create-dialog .modal-card { display: grid; grid-template-rows: 116px minmax(0,1fr) 80px; max-height: 90vh; }
.project-create-dialog .modal-card > header { position: relative; min-height: 116px; padding: 24px 34px; background: linear-gradient(90deg, var(--surface), var(--surface-soft)); }
.project-create-dialog .modal-card > header::after { content: 'BUILD IDEAS'; position: absolute; right: 100px; top: 32px; color: var(--brand); opacity: .1; font-size: 30px; font-style: italic; font-weight: 800; pointer-events: none; }
.project-create-dialog .modal-card h2 { margin-top: 5px; font-size: 31px; }
.project-create-dialog .modal-card > header > div:first-child::after { content: '创建项目信息，便于团队协作与后续管理'; display: block; margin-top: 5px; color: var(--muted); font-size: var(--font-size-small); font-weight: 500; }
.project-create-dialog .modal-body { max-height: none; padding: 22px 34px 30px; overflow-y: auto; background: #fcfdfc; }
.project-create-dialog .modal-card > footer { min-height: 80px; padding: 15px 34px; background: var(--surface); }
.project-create-dialog .modal-card > footer .button { min-height: 48px; padding: 0 25px; }
.project-create-dialog .modal-card > footer .button.primary { min-width: 150px; }
.project-create-erp-form { gap: 26px; }
.project-create-section { display: grid; gap: 14px; }
.project-create-section-title { min-height: 42px; padding: 0 12px; display: flex; align-items: center; gap: 10px; border-radius: 9px; color: var(--brand-strong); background: var(--brand-soft); }
.project-create-section-title i { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 7px; color: #fff; background: var(--brand); font-style: normal; font-size: 13px; }
.project-create-section-title strong { font-size: 16px; }
.project-create-dialog .field { gap: 8px; }
.project-create-dialog .field > span { color: var(--ink); font-size: 14px; }
.project-create-dialog input, .project-create-dialog select { min-height: 47px; border-radius: 9px; }
.project-create-dialog textarea { min-height: 82px; border-radius: 9px; }
.project-create-basic-grid, .project-create-people-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px 26px; }
.project-create-time-grid, .project-create-contract-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 20px; }
.project-create-time-grid .project-date-range-field { min-width: 0; }
.project-create-time-grid .project-create-range-inputs { grid-template-columns: minmax(0,1fr) 18px minmax(0,1fr); }
.project-create-time-grid input { min-width: 0; padding: 0 8px; font-size: 13px; }
.project-create-type-cards { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.project-create-type-cards > button { min-height: 88px; padding: 12px; border: 1px solid var(--line-strong); border-radius: 10px; display: grid; grid-template-columns: 34px 1fr 18px; gap: 10px; align-items: center; color: var(--ink); background: var(--surface); text-align: left; }
.project-create-type-cards > button.selected { border-color: var(--brand); background: var(--brand-soft); }
.project-create-factory-cards { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.project-create-factory-cards > button { min-height: 66px; padding: 10px 12px; border: 1px solid var(--line-strong); border-radius: 10px; display: grid; grid-template-columns: 30px 1fr 18px; gap: 8px; align-items: center; color: var(--ink); background: var(--surface); text-align: left; }
.project-create-factory-cards > button.selected { border-color: var(--brand); background: var(--brand-soft); }
.project-create-factory-cards b { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 7px; color: var(--brand); background: #fff; }.project-create-factory-cards strong,.project-create-factory-cards small { display:block; }.project-create-factory-cards small { margin-top:3px; color:var(--muted); font-size:11px; }.project-create-factory-cards em { visibility:hidden; color:var(--brand); font-style:normal; font-weight:900; }.project-create-factory-cards .selected em { visibility:visible; }
.project-create-type-cards b { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 8px; color: var(--brand); background: #fff; font-size: 19px; }
.project-create-type-cards strong, .project-create-type-cards small { display: block; }.project-create-type-cards small { margin-top: 4px; color: var(--muted); font-size: 12px; }.project-create-type-cards em { visibility: hidden; color: var(--brand); font-style: normal; font-weight: 900; }.project-create-type-cards .selected em { visibility: visible; }
.project-create-rate { min-height: 47px; padding: 0 13px; border: 1px solid var(--line); border-radius: 9px; display: flex; align-items: center; gap: 7px; color: var(--muted); background: var(--surface-soft); font-size: 13px; }.project-create-rate small { color: var(--muted); font-size: 12px; }
.project-create-reference { min-height: 47px; display: grid; align-content: center; gap: 10px; }.project-create-switch { display: flex; align-items: center; gap: 10px; color: var(--ink); font-size: 14px; font-weight: 700; cursor: pointer; }.project-create-switch input { position: absolute; opacity: 0; }.project-create-switch i { width: 38px; height: 22px; border-radius: 99px; background: var(--line-strong); transition: .16s; }.project-create-switch i::after { content:''; width: 18px; height: 18px; margin: 2px; display:block; border-radius:50%; background:#fff; transition:.16s; }.project-create-switch input:checked + i { background: var(--brand); }.project-create-switch input:checked + i::after { transform:translateX(16px); }.project-create-reference-picker { max-width: 440px; }.project-history-suggestions { align-items: center; }.project-date-suggestion-extra { display: none; }.project-history-suggestions.expanded .project-date-suggestion-extra { display: inline-flex; }.project-date-suggestion-more { background: var(--surface) !important; }
@media (max-width: 900px) { .project-create-dialog { width: calc(100vw - 16px); max-height: calc(100vh - 16px); }.project-create-dialog .modal-card { grid-template-rows: 92px minmax(0,1fr) 68px; max-height: calc(100vh - 16px); }.project-create-dialog .modal-card > header, .project-create-dialog .modal-body, .project-create-dialog .modal-card > footer { padding-left: 18px; padding-right: 18px; }.project-create-dialog .modal-card h2 { font-size: 23px; }.project-create-basic-grid, .project-create-people-grid, .project-create-time-grid, .project-create-contract-grid { grid-template-columns: 1fr; }.project-create-type-cards,.project-create-factory-cards { grid-template-columns: 1fr; } }
.checkbox-field { min-height: 38px; display: flex; align-items: center; gap: 8px; }
.checkbox-field input { width: 16px; min-height: 16px; }
.form-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 9px; padding-top: 5px; }

.data-table-wrap { width: 100%; overflow-x: auto; }
.data-table { width: 100%; min-width: 940px; border-collapse: collapse; }
.data-table th, .data-table td { padding: 12px 14px; border-bottom: 1px solid #edf1ef; text-align: left; vertical-align: middle; font-size: var(--font-size-small); }
.data-table th { position: sticky; top: 0; z-index: 1; color: var(--muted); background: #f7f9f8; font-size: var(--font-size-caption); letter-spacing: .03em; }
.data-table tbody tr:hover { background: #fbfcfb; }
.data-table td strong, .data-table td small { display: block; }
.data-table td small { margin-top: 4px; color: var(--muted); font-size: var(--font-size-caption); }
.table-actions { display: flex; justify-content: flex-end; gap: 6px; white-space: nowrap; }
.cell-main { display: flex; align-items: center; gap: 9px; min-width: 180px; }
.cell-code { flex: 0 0 auto; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 7px; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-weight: 950; }
.cell-code.media { overflow: hidden; background: #edf2ef; }
.cell-code.media img { width: 100%; height: 100%; object-fit: cover; }
.sort-button { border: 0; padding: 0; color: inherit; background: transparent; font-size: inherit; font-weight: inherit; }

.chip { display: inline-flex; align-items: center; min-height: 23px; padding: 0 8px; border-radius: 999px; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-weight: 850; white-space: nowrap; }
.chip.blue { color: var(--blue); background: var(--blue-soft); }
.chip.gold { color: var(--warning); background: var(--warning-soft); }
.chip.red { color: var(--danger); background: var(--danger-soft); }
.chip.gray { color: var(--muted); background: #edf1ef; }
.status-dot { display: inline-flex; align-items: center; gap: 6px; }
.status-dot::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #35a875; }
.status-dot.warning::before { background: #d49b2e; }
.status-dot.danger::before { background: #cf5b49; }
.progress-line { display: flex; align-items: center; gap: 8px; }
.progress-line progress { width: 100px; height: 7px; accent-color: var(--brand); }

.list { display: grid; }
.list-row { min-height: 64px; padding: 12px 0; display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; gap: 10px; align-items: center; border-bottom: 1px solid #edf1ef; }
.list-row:last-child { border-bottom: 0; }
.list-row-icon { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 8px; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-weight: 950; }
.list-row strong, .list-row small { display: block; }
.list-row small { margin-top: 4px; color: var(--muted); font-size: var(--font-size-caption); }
.quick-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.quick-card { min-height: 90px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; color: var(--ink); background: var(--surface-soft); text-align: left; }
.quick-icon { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-weight: 900; }
.quick-icon img { width: 19px; height: 19px; object-fit: contain; }
.quick-card b, .quick-card small { display: block; }
.quick-card b { margin-top: 14px; font-size: var(--font-size-caption); }
.quick-card small { margin-top: 4px; color: var(--muted); font-size: var(--font-size-caption); }

.empty-state { min-height: 240px; display: grid; place-content: center; justify-items: center; gap: 9px; color: var(--muted); text-align: center; }
.empty-state b { color: var(--ink); font-size: var(--font-size-card-title); }
.empty-state p { max-width: 380px; margin: 0; font-size: var(--font-size-caption); line-height: 1.7; }
.loading-block { min-height: 260px; display: grid; place-items: center; color: var(--muted); font-size: var(--font-size-caption); }
.danger-zone { padding: 14px; border: 1px solid #efc7c0; border-radius: 10px; background: var(--danger-soft); }
.danger-zone h3 { margin: 0 0 5px; color: var(--danger); font-size: var(--font-size-small); }
.danger-zone p { margin: 0 0 12px; color: #8d655f; font-size: var(--font-size-caption); line-height: 1.65; }
.code-box { padding: 12px; border: 1px solid var(--line); border-radius: 8px; overflow: auto; color: #244336; background: #f4f8f6; font: var(--font-size-caption)/1.65 Consolas, monospace; white-space: pre-wrap; word-break: break-word; }
.photo-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.photo-card { position: relative; aspect-ratio: 4/3; border: 1px solid var(--line); border-radius: 9px; overflow: hidden; background: var(--surface-soft); }
.photo-card img { width: 100%; height: 100%; object-fit: cover; }
.photo-card .button { position: absolute; right: 7px; bottom: 7px; }
.file-picker { padding: 16px; border: 1px dashed #9ebcac; border-radius: 9px; color: var(--brand); background: var(--brand-soft); text-align: center; }

.drawer-backdrop { position: fixed; inset: 0; z-index: 100; background: rgba(11,24,18,.34); }
.drawer { position: fixed; inset: 0 0 0 auto; z-index: 110; width: min(720px, 92vw); display: flex; flex-direction: column; background: var(--surface); box-shadow: -22px 0 60px rgba(10,28,19,.2); }
.drawer > header { min-height: 78px; padding: 16px 22px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--line); }
.drawer h2 { margin: 4px 0 0; font-size: var(--font-size-section); }
.drawer-body { flex: 1; padding: 20px 22px 34px; overflow-y: auto; }
.drawer-footer { min-height: 68px; padding: 12px 22px; display: flex; justify-content: flex-end; gap: 8px; border-top: 1px solid var(--line); background: #fff; }
.detail-section { margin-bottom: 22px; }
.detail-section > h3 { margin: 0 0 10px; font-size: var(--font-size-small); }
.detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border: 1px solid var(--line); border-radius: 9px; overflow: hidden; }
.detail-field { min-height: 65px; padding: 11px 13px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: #fff; }
.detail-field:nth-child(even) { border-right: 0; }
.detail-field small, .detail-field strong { display: block; }
.detail-field small { color: var(--muted); font-size: var(--font-size-caption); }
.detail-field strong { margin-top: 7px; font-size: var(--font-size-caption); word-break: break-word; }

dialog { width: min(760px, calc(100vw - 40px)); max-height: calc(100vh - 40px); padding: 0; border: 0; border-radius: 14px; box-shadow: var(--shadow); }
dialog::backdrop { background: rgba(11,24,18,.45); }
dialog.resource-workbench-dialog { width: min(1040px, calc(100vw - 48px)); }
dialog.project-import-dialog { width: min(1400px, calc(100vw - 32px)); }
.modal-card { margin: 0; }
.modal-card > header { min-height: 72px; padding: 15px 20px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--line); }
.modal-card h2 { margin: 4px 0 0; font-size: var(--font-size-section); }
.modal-body { max-height: calc(100vh - 190px); padding: 20px; overflow-y: auto; }
.modal-card > footer { min-height: 64px; padding: 12px 20px; display: flex; justify-content: flex-end; gap: 8px; border-top: 1px solid var(--line); }
.modal-card.is-submitting .modal-body { pointer-events: none; opacity: .82; transition: opacity .16s ease; }
.modal-card.is-submitting > footer { position: relative; }
.modal-card.is-submitting > footer::before { content: ''; position: absolute; top: -1px; left: 0; width: 38%; height: 3px; border-radius: 0 99px 99px 0; background: linear-gradient(90deg, transparent, var(--brand), #42bd89); box-shadow: 0 0 8px rgba(23,107,76,.28); animation: modal-submit-progress 1.15s ease-in-out infinite; }
.modal-card.is-submitting button[type="submit"] { display: inline-flex; align-items: center; gap: 8px; opacity: .88; }
.modal-submit-spinner { width: 15px; height: 15px; flex: 0 0 auto; border: 2px solid rgba(255,255,255,.45); border-top-color: #fff; border-radius: 50%; animation: modal-submit-spin .72s linear infinite; }
@keyframes modal-submit-progress { from { transform: translateX(-105%); } to { transform: translateX(265%); } }
@keyframes modal-submit-spin { to { transform: rotate(360deg); } }
.modal-header-actions { display: flex; align-items: center; gap: 8px; }
.inventory-action-dialog { width: min(720px, calc(100vw - 64px)); z-index: 20; }
.inventory-action-dialog.wide { width: min(980px, calc(100vw - 64px)); }
.inventory-action-dialog::backdrop { background: rgba(7,18,13,.58); backdrop-filter: blur(2px); }
.inventory-action-card .modal-body { max-height: calc(100vh - 210px); background: #fbfcfb; }
.record-photo-upload-dialog { width: min(1040px, calc(100vw - 72px)); }
.record-photo-upload-dialog::backdrop { background: rgba(7,18,13,.32); backdrop-filter: blur(1px); }
.record-photo-upload-card .modal-body { max-height: calc(100vh - 210px); padding: 22px 28px; background: #fbfdfc; }
.record-photo-upload-card > footer { justify-content: center; }

.toast-stack { position: fixed; right: 22px; bottom: 22px; z-index: 600; display: grid; gap: 8px; max-height: calc(100vh - 44px); overflow-y: auto; overscroll-behavior: contain; pointer-events: none; }
.project-detail-toast-stack { z-index: 100; }
.toast { min-width: 250px; max-width: 420px; padding: 12px 14px; border: 1px solid #b9d9ca; border-radius: 9px; color: var(--brand-strong); background: #f3faf6; box-shadow: var(--shadow); font-size: var(--font-size-caption); animation: toast-in .2s ease-out; pointer-events: none; }
.toast.warning { border-color: #e6b6ae; color: #8e2f24; background: #fff3f1; }
.toast.error { border-color: #ecc0b9; color: var(--danger); background: #fff5f3; }
.toast-error-persistent { position: relative; display: flex; align-items: flex-start; gap: 12px; padding-right: 10px; border-color: #e4a79e; color: #8e2f24; background: #fff5f3; box-shadow: 0 12px 34px rgba(118, 42, 31, .2); pointer-events: auto; }
.toast-error-copy { flex: 1; min-width: 0; display: grid; gap: 5px; }
.toast-error-copy strong { font-size: 13px; }
.toast-error-copy span { color: #702a21; line-height: 1.5; overflow-wrap: anywhere; white-space: pre-wrap; }
.toast-error-copy small { color: #a06d66; font-size: 11px; }
.toast-error-close { flex: 0 0 28px; width: 28px; height: 28px; border: 0; border-radius: 50%; color: #8e2f24; background: #f8dcd7; font-size: 20px; line-height: 1; cursor: pointer; }
.completion-dialog { width: min(1180px, calc(100vw - 48px)); border-radius: 22px; }
.completion-dialog .modal-card > header { min-height: 112px; padding: 24px 34px; }
.completion-dialog .modal-card h2 { font-size: 28px; }
.completion-dialog .modal-body { max-height: calc(100vh - 220px); padding: 30px 34px 34px; }
.completion-dialog .modal-card > footer { min-height: 78px; padding: 15px 34px; }
.completion-dialog .modal-card > footer .button { min-height: 46px; padding: 0 25px; }
.art-production-dialog { width: min(1280px, calc(100vw - 48px)); max-height: calc(100vh - 32px); border-radius: 18px; }
.art-production-dialog .modal-card > header { min-height: 108px; padding: 22px 42px; }
.art-production-dialog .modal-card h2 { font-size: 28px; }
.art-production-dialog .modal-body { max-height: calc(100vh - 222px); padding: 16px 42px; background: #fcfdfc; }
.art-production-dialog .modal-card > footer { min-height: 82px; padding: 15px 42px; }
.art-production-dialog .modal-card > footer .button { min-height: 47px; padding: 0 24px; }
.art-production-form { display: grid; gap: 16px; }
.art-production-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.art-production-field { min-width: 0; padding: 18px 20px 20px; border: 1px solid #dce5e0; border-radius: 12px; background: #fff; box-shadow: 0 5px 14px rgba(18,42,31,.045); }
.art-production-field.full { grid-column: 1 / -1; }
.art-production-field-head { min-height: 26px; margin-bottom: 10px; display: flex; align-items: center; gap: 12px; }
.art-production-field-head > strong { flex: 0 0 auto; color: #18271f; font-size: var(--font-size-small); }
.art-production-field-head > strong i { color: #db5347; font-style: normal; }
.art-inline-suggestions { min-width: 0; display: flex; align-items: center; gap: 7px; overflow-x: auto; scrollbar-width: thin; }
.art-inline-suggestions:empty { display: none; }
.art-inline-suggestions .tag-button { min-width: 68px; min-height: 31px; padding: 0 12px; border: 1px solid #d5e5dd; border-radius: 7px; color: var(--brand); background: #f4faf7; font-size: var(--font-size-caption); font-weight: 750; white-space: nowrap; }
.art-inline-suggestions .tag-button:hover { border-color: #91bda9; background: #eaf6f0; }
.art-production-field input { min-height: 44px; }
.art-production-field textarea { min-height: 76px; }
.art-production-field input::placeholder, .art-production-field textarea::placeholder { color: #a8b0ac; }
.art-production-support { display: grid; grid-template-columns: minmax(280px, .72fr) minmax(0, 1.28fr); gap: 14px; }
.art-production-tips, .art-design-upload-card { min-width: 0; padding: 20px 24px; border: 1px solid #dce5e0; border-radius: 12px; background: #fff; box-shadow: 0 5px 14px rgba(18,42,31,.045); }
.art-production-tips h3 { margin: 0; display: flex; align-items: center; gap: 8px; color: var(--brand); font-size: var(--font-size-small); }
.art-production-tips h3 span { width: 20px; height: 20px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--brand); font-family: Georgia, serif; font-size: 13px; }
.art-production-tips ul { margin: 16px 0 0; padding: 0; display: grid; gap: 11px; list-style: none; }
.art-production-tips li { position: relative; padding-left: 20px; color: #53625a; font-size: var(--font-size-caption); line-height: 1.55; }
.art-production-tips li::before { content: ""; position: absolute; top: .65em; left: 2px; width: 5px; height: 5px; border-radius: 50%; background: var(--brand); }
.art-design-upload-head { display: flex; align-items: center; justify-content: space-between; }
.art-design-upload-head strong { font-size: var(--font-size-small); }
.art-design-upload-head b { color: var(--muted); font-size: var(--font-size-small); }
.desktop-photo-compression { min-height: 36px; padding: 6px 9px; display: inline-flex; align-items: center; gap: 7px; border: 1px solid #d5e1db; border-radius: 9px; color: #526159; background: #f8fbf9; font-size: var(--font-size-caption); }
.desktop-photo-compression input { width: 74px; min-height: 28px; padding: 4px 7px; border: 1px solid #bdcec5; border-radius: 7px; color: var(--brand); background: #fff; font-weight: 800; text-align: right; }
.desktop-photo-compression b { color: var(--brand); }
.desktop-photo-compression small { color: var(--muted); white-space: nowrap; }
.art-design-upload-card > .desktop-photo-compression { margin-top: 12px; }
.art-design-preview { margin-top: 12px; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; }
.art-design-preview figure, .art-design-empty-slot { min-width: 0; aspect-ratio: 1.35; border: 1px dashed #ced8d3; border-radius: 9px; background: #fbfcfb; }
.art-design-preview figure { aspect-ratio: 1.35; }
.art-design-preview figure img { height: 100%; aspect-ratio: auto; }
.art-design-preview figure figcaption { position: absolute; right: 0; bottom: 0; left: 0; padding: 10px 4px 3px; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.66)); }
.art-design-empty-slot { display: grid; place-content: center; color: #cbd1ce; font-size: 23px; line-height: 1; }
.art-design-empty-slot small { margin: -11px -17px 0 0; color: #aeb6b2; font-size: 14px; font-weight: 900; }
.art-design-dropzone { min-height: 118px; margin-top: 12px; }
[data-photo-dropzone].drag-active { border-color: var(--brand); background: #e9f7f0; box-shadow: inset 0 0 0 2px rgba(23,107,76,.12); }
.record-detail-dialog { width: min(1160px, calc(100vw - 40px)); max-height: calc(100vh - 36px); }
.record-detail-dialog .modal-body { padding: 16px 24px 22px; background: #f7faf8; }
.record-detail-dialog .modal-card > footer { justify-content: center; }
.record-detail-dialog #modalFooter .button.secondary { display: inline-flex; }
.record-edit-photo-group { min-width: 0; padding: 14px; border: 1px solid #e0e8e4; border-radius: 12px; background: #f9fbfa; }
.record-edit-photo-group > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.record-edit-photo-group h3 { margin: 0; font-size: 14px; }
.record-edit-photo-group header small { color: var(--muted); }
.record-edit-photo-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; }
.record-edit-photo-grid figure { position: relative; margin: 0; min-width: 0; overflow: hidden; border: 1px solid #d5e0da; border-radius: 10px; background: #edf3f0; }
.record-edit-photo-grid [data-project-module-photo-sort-item] { cursor: grab; transition: opacity .16s ease, transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
.record-edit-photo-grid [data-project-module-photo-sort-item]:active { cursor: grabbing; }
.record-edit-photo-grid [data-project-module-photo-sort-item].dragging { opacity: .38; }
.record-edit-photo-grid [data-project-module-photo-sort-item].drag-over { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(23,107,76,.18); transform: scale(1.025); }
.record-edit-photo-image { width: 100%; aspect-ratio: 1.2; display: block; object-fit: cover; }
.record-edit-photo-drag-handle { position: absolute; left: 6px; bottom: 6px; width: 24px; height: 24px; display: grid; place-items: center; border-radius: 7px; color: #fff; background: rgba(11,51,35,.76); font-size: 17px; font-weight: 900; line-height: 1; letter-spacing: -4px; pointer-events: none; }
.record-edit-photo-grid figure > button { position: absolute; top: 5px; right: 5px; width: 25px; height: 25px; padding: 0; border: 0; border-radius: 999px; color: #fff; background: rgba(137,35,35,.88); font-size: 17px; cursor: pointer; }
.record-edit-photo-grid .record-detail-photo-empty { grid-column: 1 / -1; min-height: 92px; }
.record-detail-layout { display: grid; gap: 14px; }
.record-detail-layout.editing .record-detail-basic,
.record-detail-layout.editing .record-detail-photo-grid > .record-detail-card,
.record-detail-layout.editing .record-detail-note-editor { border-color: #86b69d; background: #f0faf5; box-shadow: inset 0 0 0 1px rgba(23,107,76,.06); }
.record-detail-layout.editing .record-detail-inline-fields .field { padding: 10px; border: 1px solid #b8d8c8; border-radius: 10px; background: #e8f6ef; }
.record-detail-layout.editing .record-detail-inline-fields input,
.record-detail-layout.editing .record-detail-inline-fields select,
.record-detail-layout.editing .record-detail-note-editor textarea,
.record-detail-layout.editing [name="photoGroup"] { border-color: #83b69b; background: #fff; }
.record-detail-layout.editing .record-edit-photo-group { border-color: #a8cdb9; background: #eaf7f0; }
.record-usage-combobox { position: relative; }
.record-usage-combobox-control { display: grid; grid-template-columns: minmax(0, 1fr) 38px; }
.record-usage-combobox-control input { border-radius: 7px 0 0 7px !important; }
.record-usage-combobox-control button { border: 1px solid #b8d8c8; border-left: 0; border-radius: 0 7px 7px 0; color: var(--brand); background: #fff; font-size: 16px; font-weight: 900; cursor: pointer; }
.record-usage-combobox-control button:hover, .record-usage-combobox-control button[aria-expanded="true"] { background: var(--brand-soft); }
.record-usage-combobox-options { position: absolute; top: calc(100% - 18px); left: 10px; right: 10px; z-index: 40; max-height: 260px; padding: 6px; overflow-y: auto; border: 1px solid #a8cdb9; border-radius: 9px; background: #fff; box-shadow: 0 14px 34px rgba(18,42,31,.18); }
.record-usage-combobox-options button { width: 100%; padding: 9px 10px; display: grid; gap: 3px; border: 0; border-radius: 6px; color: var(--ink); background: transparent; text-align: left; cursor: pointer; }
.record-usage-combobox-options button:hover, .record-usage-combobox-options button:focus-visible { outline: none; background: var(--brand-soft); }
.record-usage-combobox-options strong, .record-usage-combobox-options small { overflow-wrap: anywhere; }
.record-usage-combobox-options small, .record-usage-combobox-options p { color: var(--muted); font-size: 11px; }
.record-usage-combobox-options p { margin: 0; padding: 12px 10px; text-align: center; }
.record-usage-combobox-options .record-usage-material-option { grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 9px; min-height: 58px; padding: 7px 9px; }
.record-usage-material-thumb { width: 44px; height: 44px; display: grid; overflow: hidden; place-items: center; border: 1px solid #d6e4dc; border-radius: 7px; color: var(--brand); background: #eff7f2; font-size: 14px; font-weight: 800; }
.record-usage-material-thumb img { width: 100%; height: 100%; display: block; object-fit: cover; }
.record-usage-material-copy { min-width: 0; display: grid; gap: 3px; }
.record-usage-material-copy strong, .record-usage-material-copy small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.record-usage-material-stock { min-width: 86px; display: grid; gap: 3px; justify-items: end; color: var(--brand-strong); text-align: right; }
.record-usage-material-stock b { font-size: 12px; white-space: nowrap; }
.record-usage-material-stock small { white-space: nowrap; }
.record-usage-match-notice { margin: -2px 0 8px; padding: 10px 12px; border: 1px solid #b8d8c8; border-radius: 10px; background: #f2faf6; }
.record-usage-match-notice p { margin: 0; color: var(--muted); line-height: 1.6; }
.record-usage-match-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
.art-production-field.record-usage-combobox .record-usage-combobox-options { top: calc(100% - 16px); left: 20px; right: 20px; }
.art-production-field.record-usage-combobox .record-usage-combobox-control button { border-color: #c7d8cf; }
.record-detail-photo-add { grid-column: 1 / -1; border-color: #86b69d; background: #f0faf5; }
.record-detail-photo-add > .field { max-width: 360px; }
.record-detail-photo-add .completion-photo-section { margin-top: 16px; }
.record-detail-note-editor { margin: 0; padding: 12px; border: 1px solid transparent; border-radius: 10px; }
.record-detail-note-editor textarea { min-height: 120px; resize: vertical; }
.record-detail-summary { min-height: 122px; padding: 13px 16px; display: grid; grid-template-columns: 130px repeat(5, minmax(0, 1fr)); align-items: center; border: 1px solid #d6e1db; border-radius: 13px; background: #fff; }
.record-detail-cover { width: 112px; height: 92px; overflow: hidden; border-radius: 9px; background: #eef3f0; }
.record-detail-cover-image { width: 100%; height: 100%; display: block; object-fit: cover; }
.record-detail-cover .project-image-empty { width: 100%; height: 100%; display: grid; place-items: center; color: #7a8c82; font-size: 27px; font-weight: 800; }
.record-detail-summary-item { min-width: 0; min-height: 62px; padding: 4px 16px; display: flex; flex-direction: column; justify-content: center; border-left: 1px solid #e0e7e3; }
.record-detail-summary-item small, .record-detail-summary-item strong { display: block; }
.record-detail-summary-item small { margin-bottom: 8px; color: #75847c; font-size: 12px; font-weight: 700; }
.record-detail-summary-item strong { color: #192a21; font-size: 15px; line-height: 1.4; overflow-wrap: anywhere; }
.material-code-display { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: help; }
.material-code-field { min-width: 0; }
.material-code-editor { min-width: 0; padding: 8px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.material-code-tags { min-height: 4px; display: flex; flex-wrap: wrap; gap: 6px; }
.material-code-tags:empty { display: none; }
.material-code-tags span { max-width: 100%; padding: 4px 5px 4px 9px; display: inline-flex; align-items: center; gap: 6px; border: 1px solid #b8d8c8; border-radius: 999px; color: var(--brand-strong); background: #edf8f2; font-size: 12px; }
.material-code-tags span button { width: 19px; height: 19px; padding: 0; display: grid; place-items: center; border: 0; border-radius: 50%; color: #6d7d75; background: rgba(255,255,255,.8); cursor: pointer; }
.material-code-entry-row { margin-top: 7px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px; }
.material-code-entry-row input { min-width: 0; }
.detail-wide-table td:first-child .material-code-display { max-width: min(280px, 24vw); }
.record-detail-summary-item.status { padding-right: 10px; }
.record-detail-summary-item .module-status-select { width: 100%; min-width: 0; border-color: #cce1d6; color: var(--brand); background: #edf7f2; font-weight: 750; }
.record-detail-card { min-width: 0; padding: 18px 20px; border: 1px solid #d7e1dc; border-radius: 12px; background: #fff; }
.record-detail-card > h3 { margin: 0 0 15px; display: flex; align-items: center; gap: 8px; color: var(--brand-strong); font-size: 15px; }
.record-detail-card > h3 > span { width: 20px; height: 20px; display: grid; place-items: center; color: var(--brand); }
.record-detail-card > h3 small { margin-left: auto; color: var(--muted); font-size: 11px; font-weight: 600; }
.record-detail-facts { margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 34px; }
.record-detail-facts > div { min-width: 0; min-height: 38px; padding: 8px 0; display: grid; grid-template-columns: minmax(90px, .8fr) minmax(0, 1.2fr); align-items: baseline; border-bottom: 1px solid #edf1ef; }
.record-detail-facts dt { color: #728078; font-size: 12px; }
.record-detail-facts dd { min-width: 0; margin: 0; color: #26372e; font-size: 13px; line-height: 1.45; overflow-wrap: anywhere; }
.record-detail-logs { padding: 0; overflow: hidden; }
.record-detail-logs > summary { min-height: 56px; padding: 0 20px; display: flex; align-items: center; justify-content: space-between; color: var(--brand-strong); cursor: pointer; list-style: none; }
.record-detail-logs > summary::-webkit-details-marker { display: none; }
.record-detail-logs > summary span { display: flex; align-items: center; gap: 9px; font-size: 15px; font-weight: 750; }
.record-detail-logs > summary span b { color: var(--brand); }
.record-detail-logs > summary small { color: var(--muted); font-size: 11px; }
.record-detail-logs[open] > summary { border-bottom: 1px solid #e6ece9; }
.record-detail-log-content { padding: 16px 22px 19px; }
.record-detail-log-list { margin: 0; padding: 0; display: grid; gap: 0; list-style: none; }
.record-detail-log-list li { position: relative; min-height: 48px; padding: 3px 0 10px 32px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; }
.record-detail-log-list li::before { content: ""; position: absolute; top: 18px; bottom: -2px; left: 8px; width: 1px; background: #b8d8c9; }
.record-detail-log-list li:last-child::before { display: none; }
.record-detail-log-list li > span { position: absolute; top: 5px; left: 2px; width: 13px; height: 13px; border: 3px solid #d9eee4; border-radius: 50%; background: var(--brand); }
.record-detail-log-list strong, .record-detail-log-list small { display: block; }
.record-detail-log-list strong { color: #26372e; font-size: 13px; }
.record-detail-log-list small, .record-detail-log-list time { margin-top: 4px; color: var(--muted); font-size: 11px; }
.record-detail-photo-grid { display: grid; grid-template-columns: 1fr; gap: 14px; }
.record-detail-photo-gallery { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; }
.record-detail-photo-gallery button { min-width: 0; padding: 0; overflow: hidden; border: 1px solid #d9e2dd; border-radius: 9px; background: #eef3f0; cursor: zoom-in; }
.record-detail-photo-item { position: relative; min-width: 0; margin: 0; overflow: hidden; border-radius: 9px; }
.record-detail-photo-item > .record-detail-photo-preview { width: 100%; height: 100%; display: block; }
.record-detail-photo-item > .record-detail-photo-promote { position: absolute; right: 6px; bottom: 6px; left: 6px; width: calc(100% - 12px); min-height: 28px; padding: 4px 7px; border: 1px solid rgba(255,255,255,.82); border-radius: 7px; color: #fff; background: rgba(18,105,72,.9); box-shadow: 0 4px 12px rgba(8,44,29,.2); font-size: 11px; font-weight: 800; line-height: 1.2; cursor: pointer; }
.record-detail-photo-item > .record-detail-photo-promote:hover { background: var(--brand-strong); }
.record-detail-photo-image { width: 100%; aspect-ratio: 1.28; display: block; object-fit: cover; }
.record-detail-photo-add-tile { min-width: 0; aspect-ratio: 1.28; display: grid; place-content: center; justify-items: center; gap: 4px; border: 1px dashed #8fbda5; border-radius: 9px; color: var(--brand); background: #f1faf5; cursor: pointer; }
.record-detail-photo-add-tile span { font-size: 30px; font-weight: 400; line-height: 1; }
.record-detail-photo-add-tile small { font-size: 11px; font-weight: 700; }
.record-detail-photo-empty { min-height: 104px; display: grid; place-content: center; justify-items: center; gap: 5px; border: 1px dashed #d8e1dc; border-radius: 9px; color: #9aa7a0; background: #fbfcfb; }
.record-detail-photo-empty span { font-size: 24px; }
.record-detail-photo-empty p, .record-detail-empty-text, .record-detail-note { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.record-detail-creator { display: grid; gap: 2px; }
.record-detail-creator strong, .record-detail-creator span { display: block; }
.record-detail-creator span { color: var(--muted); font-size: 11px; }
.record-detail-creator-panel { display: grid; grid-template-columns: minmax(120px, .7fr) minmax(0, 1.3fr); gap: 24px; }
.record-detail-creator-panel dl { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.record-detail-creator-panel dl div { min-width: 0; }
.record-detail-creator-panel dt { color: var(--muted); font-size: 11px; }
.record-detail-creator-panel dd { margin: 4px 0 0; color: #26372e; font-size: 12px; overflow-wrap: anywhere; }
.record-detail-actions { margin-top: 14px; display: flex; justify-content: flex-end; }
.record-detail-field pre { max-height: 240px; margin: 0; overflow: auto; font: 11px/1.6 Consolas, monospace; white-space: pre-wrap; }
.record-detail-nested { margin: 0; display: grid; gap: 7px; }
.record-detail-nested > div { min-width: 0; padding: 7px 8px; border-radius: 6px; background: #f4f7f5; }
.record-detail-nested dt { color: var(--muted); font-size: 10px; }
.record-detail-nested dd { margin: 3px 0 0; }
.record-detail-list { margin: 0; padding-left: 20px; display: grid; gap: 7px; }
.record-detail-images { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.record-detail-images button { padding: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: #edf3f0; cursor: zoom-in; }
.record-detail-image { width: 100%; aspect-ratio: 1.25; display: block; object-fit: cover; }
.completion-summary { min-height: 76px; padding: 14px 20px; display: flex; align-items: center; gap: 20px; border: 1px solid #cfe0d6; border-radius: 14px; background: linear-gradient(90deg, #f6fbf8, #fbfdfc); }
.completion-summary-check { flex: 0 0 38px; width: 38px; height: 38px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--brand); font-size: 20px; font-weight: 900; }
.completion-summary-item { min-width: 112px; padding-right: 20px; border-right: 1px solid #dce8e2; }
.completion-summary-item small, .completion-summary-item strong { display: block; }
.completion-summary-item small { color: var(--muted); font-size: var(--font-size-small); font-weight: 750; }
.completion-summary-item strong { margin-top: 4px; color: var(--brand); font-size: var(--font-size-card-title); }
.completion-summary p { flex: 1; margin: 0; color: var(--muted); font-size: var(--font-size-small); line-height: 1.55; }
.completion-photo-section, .completion-consumption { margin-top: 25px; }
.completion-photo-section > h3, .completion-consumption > h3 { margin: 0 0 14px; font-size: var(--font-size-card-title); }
.completion-photo-heading { margin-bottom: 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.completion-photo-heading h3 { margin: 0; font-size: var(--font-size-card-title); }
.completion-consumption { padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: #fbfcfb; }
.completion-upload-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .96fr); gap: 18px; }
.completion-upload-card, .photo-handoff { min-width: 0; padding: 20px; border: 1px solid #d1ded7; border-radius: 16px; background: #fff; }
.completion-card-title { display: flex; align-items: center; gap: 11px; }
.completion-card-title > span, .photo-handoff-head > span { color: var(--brand); font-size: 25px; }
.completion-card-title > div, .photo-handoff-head > div { flex: 1; min-width: 0; }
.completion-card-title strong, .completion-card-title small { display: block; }
.completion-card-title strong { font-size: var(--font-size-card-title); }
.completion-card-title small { margin-top: 3px; color: var(--muted); font-size: var(--font-size-caption); }
.completion-card-title b { color: var(--muted); font-size: var(--font-size-small); }
.completion-dropzone { position: relative; min-height: 185px; margin-top: 16px; display: grid; place-content: center; justify-items: center; gap: 7px; overflow: hidden; border: 1px dashed #9fb9ac; border-radius: 13px; color: var(--ink); background: #fcfefd; text-align: center; cursor: pointer; }
.completion-dropzone:hover { border-color: var(--brand); background: var(--brand-soft); }
.completion-dropzone input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.completion-upload-icon { color: var(--brand); font-size: 38px; line-height: 1; }
.completion-dropzone strong { font-size: var(--font-size-small); }
.completion-dropzone small { color: var(--muted); font-size: var(--font-size-caption); }
.photo-paste-hint { min-height: 44px; margin-top: 12px; padding: 8px 12px; display: flex; align-items: center; justify-content: center; gap: 9px; border: 1px dashed #a9c6b7; border-radius: 9px; color: var(--muted); background: #f8fcfa; cursor: text; font-size: var(--font-size-caption); outline: none; }
.photo-paste-hint b { padding: 4px 8px; border-radius: 6px; color: #fff; background: var(--brand); font-size: 11px; letter-spacing: .04em; }
.photo-paste-hint:hover,
.photo-paste-hint:focus { border-color: var(--brand); color: var(--brand-strong); background: var(--brand-soft); box-shadow: 0 0 0 3px rgba(23,107,76,.1); }
.completion-local-preview { margin-top: 12px; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 7px; }
.completion-local-preview:empty { display: none; }
.completion-local-preview figure { position: relative; min-width: 0; margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); }
.completion-local-preview img { width: 100%; aspect-ratio: 1; display: block; object-fit: cover; }
.completion-local-preview button { position: absolute; top: 4px; right: 4px; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 50%; color: #fff; background: rgba(18, 31, 25, .76); font-size: 17px; line-height: 1; cursor: pointer; }
.completion-local-preview button:hover { background: var(--danger); }
.completion-local-preview figcaption { padding: 4px; overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.photo-handoff { background: linear-gradient(145deg, #f8fcfa, #f3f9f6); }
.photo-handoff-head { display: flex; align-items: center; gap: 11px; }
.photo-handoff-head strong, .photo-handoff-head small { display: block; }
.photo-handoff-head strong { color: var(--brand-strong); font-size: var(--font-size-card-title); }
.photo-handoff-head small { margin-top: 4px; color: var(--muted); font-size: var(--font-size-caption); line-height: 1.45; }
.photo-handoff-main { margin-top: 16px; display: grid; grid-template-columns: minmax(150px, 1fr) 174px; gap: 16px; align-items: center; }
.photo-handoff-actions .button { width: 100%; min-height: 50px; border-color: #79a98f; color: var(--brand); background: rgba(255,255,255,.72); font-weight: 900; }
.photo-handoff-code { min-height: 174px; padding: 8px; display: grid; place-content: center; justify-items: center; border: 1px dashed #bdd0c6; border-radius: 12px; color: #9baba3; background: #fff; text-align: center; }
.photo-handoff-code > span { font-size: var(--font-size-card-title); font-weight: 900; }
.photo-handoff-code img { display: block; width: 154px; height: 154px; border-radius: 8px; background: #fff; }
.photo-handoff-code small { display: block; margin-top: 6px; color: var(--muted); }
.photo-handoff-side { margin-top: 12px; }
.photo-handoff-side p { margin: 0; color: var(--muted); font-size: var(--font-size-caption); }
.photo-handoff-photos { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 9px; }
.photo-handoff-photos:empty { display: none; }
.photo-handoff-photos img { width: 62px; height: 62px; object-fit: cover; border-radius: 9px; border: 1px solid #cfddd6; background: #edf2ef; }
.photo-handoff-side .button { margin-top: 8px; }
@keyframes toast-in { from { opacity: 0; transform: translateY(8px); } }

.operation-grid { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 14px; }
.action-list { max-height: calc(100vh - 200px); padding: 7px; overflow-y: auto; }
.action-list button { width: 100%; padding: 9px 10px; border: 0; border-radius: 6px; color: var(--muted); background: transparent; text-align: left; font-size: var(--font-size-caption); }
.action-list button:hover, .action-list button.active { color: var(--brand); background: var(--brand-soft); }
.operation-log-page { display: grid; gap: 14px; }
.operation-log-filter { padding: 18px; }
.operation-log-filter-grid { display: grid; grid-template-columns: minmax(240px, 1.8fr) repeat(4, minmax(140px, 1fr)); gap: 13px; align-items: end; }
.operation-log-filter-grid .filter-field { min-width: 0; }
.operation-log-filter-actions { display: flex; justify-content: flex-end; gap: 8px; }
.operation-log-metrics { margin: 0; }
.operation-log-table-panel { overflow: hidden; }
.operation-log-table { min-width: 1280px; }
.operation-log-table th:nth-child(1) { width: 170px; }
.operation-log-table th:nth-child(2) { width: 145px; }
.operation-log-table th:nth-child(3) { width: 220px; }
.operation-log-table th:nth-child(4) { width: 210px; }
.operation-log-table th:nth-child(5), .operation-log-table th:nth-child(6) { width: 92px; }
.operation-log-table td { vertical-align: top; }
.operation-log-table td > strong, .operation-log-table td > small { display: block; }
.operation-log-table td > small { max-width: 250px; margin-top: 5px; overflow-wrap: anywhere; color: var(--muted); }
.operation-log-detail { min-width: 250px; }
.operation-log-detail > summary, .operation-log-raw > summary { color: var(--brand); cursor: pointer; font-weight: 800; }
.operation-log-detail[open] { width: min(650px, 55vw); }
.operation-log-batch, .operation-log-error, .operation-log-no-change { margin: 10px 0 0; padding: 9px 11px; border-radius: 7px; line-height: 1.55; }
.operation-log-batch { color: #315445; background: #edf7f2; }
.operation-log-error { color: #a33b31; background: #fff0ed; }
.operation-log-changes { margin-top: 10px; display: grid; gap: 7px; }
.operation-log-changes > div { padding: 9px 10px; display: grid; grid-template-columns: minmax(90px, .7fr) minmax(150px, 1fr) auto minmax(150px, 1fr); gap: 8px; align-items: start; border: 1px solid var(--line); border-radius: 7px; background: #fbfdfc; }
.operation-log-changes span { overflow-wrap: anywhere; white-space: pre-wrap; }
.operation-log-changes i { color: var(--muted); font-style: normal; }
.operation-log-changes .before { color: #7a5a51; }
.operation-log-changes .after { color: var(--brand-strong); }
.operation-log-raw { margin-top: 10px; }
.operation-log-raw pre { max-height: 360px; margin: 8px 0 0; padding: 12px; overflow: auto; border-radius: 7px; color: #d7e9df; background: #14241d; font: 12px/1.55 Consolas, monospace; white-space: pre-wrap; overflow-wrap: anywhere; }
.operation-log-table-panel .pagination b { min-width: 32px; text-align: center; }
.operation-log-table-panel .pagination button:disabled { opacity: .4; cursor: not-allowed; }

.managed-photo-page { display: grid; gap: 14px; }
.managed-photo-filter { padding: 18px; }
.managed-photo-filter-grid { display: grid; grid-template-columns: minmax(280px, 1.8fr) repeat(3, minmax(150px, .7fr)) auto; gap: 13px; align-items: end; }
.managed-photo-filter-actions { display: flex; gap: 8px; justify-content: flex-end; }
.managed-photo-metrics { margin: 0; }
.managed-photo-results { overflow: hidden; }
.managed-photo-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.managed-photo-card { position: relative; min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 13px; background: #fff; box-shadow: 0 5px 18px rgba(18, 42, 31, .05); }
.managed-photo-card.selected { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(23, 107, 76, .14), 0 8px 22px rgba(18, 42, 31, .09); }
.managed-photo-card.orphan { border-color: #e7c3bd; }
.managed-photo-card.missing { border-color: #dfcf9f; }
.managed-photo-preview { position: relative; width: 100%; aspect-ratio: 4 / 3; padding: 0; display: grid; place-items: center; overflow: hidden; border: 0; color: var(--muted); background: #edf3f0; cursor: pointer; }
.managed-photo-preview img { width: 100%; height: 100%; object-fit: cover; transition: transform .2s ease; }
.managed-photo-preview:hover img { transform: scale(1.025); }
.managed-photo-preview > i { position: absolute; right: 8px; bottom: 8px; padding: 4px 7px; border-radius: 6px; color: #fff; background: rgba(13, 35, 25, .72); font-size: 11px; font-style: normal; }
.managed-photo-selector { position: absolute; z-index: 2; top: 8px; left: 8px; min-height: 30px; padding: 5px 9px; display: flex; align-items: center; gap: 6px; border: 1px solid rgba(255, 255, 255, .7); border-radius: 8px; color: #fff; background: rgba(12, 42, 29, .82); font-size: 11px; font-weight: 900; cursor: pointer; backdrop-filter: blur(5px); }
.managed-photo-selector input { width: 15px; height: 15px; accent-color: var(--brand); }
.managed-photo-card-body { padding: 13px; }
.managed-photo-card-chips { min-height: 25px; display: flex; flex-wrap: wrap; gap: 5px; }
.managed-photo-card-body > strong, .managed-photo-card-body > p, .managed-photo-card-body > small { display: block; }
.managed-photo-card-body > strong { margin-top: 9px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
.managed-photo-card-body > p { margin: 5px 0 0; overflow: hidden; color: var(--muted); font: 11px/1.45 Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; }
.managed-photo-card-body > small { margin-top: 6px; color: var(--muted); }
.managed-photo-card-actions { margin-top: 12px; display: flex; gap: 7px; }
.managed-photo-card-actions .button { flex: 1; min-width: 0; padding-inline: 8px; }
.managed-photo-detail { display: grid; gap: 18px; }
.managed-photo-detail-preview { min-height: 220px; display: grid; place-items: center; overflow: hidden; border-radius: 12px; color: var(--muted); background: #edf3f0; }
.managed-photo-detail-preview img { width: 100%; max-height: 420px; object-fit: contain; }
.managed-photo-detail-meta h3 { margin: 12px 0 5px; overflow-wrap: anywhere; }
.managed-photo-detail-meta p { margin: 0; color: var(--muted); font: 12px/1.55 Consolas, monospace; overflow-wrap: anywhere; }
.managed-photo-detail-meta small { display: block; margin-top: 7px; color: var(--muted); }
.managed-photo-reference-list { display: grid; gap: 9px; }
.managed-photo-reference-list article { padding: 12px; border: 1px solid var(--line); border-radius: 9px; background: #f9fcfa; }
.managed-photo-reference-list article > div { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.managed-photo-reference-list p { margin: 8px 0 4px; color: var(--text); }
.managed-photo-reference-list small { color: var(--muted); overflow-wrap: anywhere; }
.managed-photo-reference-list details { margin-top: 8px; color: var(--muted); font-size: 12px; }
.managed-photo-reference-list summary { color: var(--brand); cursor: pointer; font-weight: 800; }
.managed-photo-reference-list details p { margin: 7px 0 0; color: var(--muted); font: 11px/1.55 Consolas, monospace; overflow-wrap: anywhere; }
.managed-photo-batch-bar { margin: 0 18px; padding: 13px 15px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border: 1px solid #c9ddd3; border-radius: 10px; background: #f4faf7; }
.managed-photo-batch-bar > div:first-child strong, .managed-photo-batch-bar > div:first-child small { display: block; }
.managed-photo-batch-bar > div:first-child strong { color: var(--brand-strong); }
.managed-photo-batch-bar > div:first-child small { margin-top: 3px; color: var(--muted); }
.managed-photo-batch-bar > div:last-child { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
.managed-photo-target { min-height: 38px; padding: 0 9px; display: flex; align-items: center; gap: 6px; border: 1px solid var(--line); border-radius: 7px; color: var(--muted); background: #fff; font-size: 12px; font-weight: 800; }
.managed-photo-target input { width: 74px; min-height: 30px; padding: 0 6px; border: 0; border-bottom: 1px solid #cbd9d2; border-radius: 0; text-align: right; background: transparent; }
.managed-photo-target b { color: var(--brand); }
.managed-photo-compression-result { display: grid; gap: 16px; }
.managed-photo-compression-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.managed-photo-compression-summary article { padding: 13px; border: 1px solid var(--line); border-radius: 9px; background: #f8fbf9; }
.managed-photo-compression-summary strong, .managed-photo-compression-summary span { display: block; }
.managed-photo-compression-summary strong { color: var(--brand); font-size: 22px; }
.managed-photo-compression-summary span { margin-top: 3px; color: var(--muted); font-size: 12px; }
.managed-photo-compression-list { display: grid; gap: 8px; }
.managed-photo-compression-list article { padding: 11px; border: 1px solid var(--line); border-radius: 9px; background: #fbfdfc; }
.managed-photo-compression-list article.failed { border-color: #e7c3bd; background: #fff8f7; }
.managed-photo-compression-list article > div { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.managed-photo-compression-list p { margin: 6px 0; color: var(--muted); font: 11px/1.45 Consolas, monospace; overflow-wrap: anywhere; }
.managed-photo-compression-list small { color: var(--muted); }
.public-hero { min-height: 340px; padding: 56px; display: grid; align-content: center; border-radius: 16px; color: #fff; background: linear-gradient(140deg, #13231c, #176b4c); }
.public-hero h1 { max-width: 760px; margin: 12px 0; font-size: var(--font-size-display); }
.public-hero p { max-width: 700px; color: #c2d4ca; line-height: 1.8; }

.reference-page { display: grid; gap: 14px; }
.reference-page .toolbar { margin: 0; }
.filter-toolbar { padding: 18px; align-items: end; box-shadow: 0 4px 16px rgba(18,42,31,.025); }
.filter-field { min-width: 150px; flex: 1; display: grid; gap: 7px; }
.filter-field.search-wide { flex: 1.55; min-width: 250px; }
.filter-field > span { color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.filter-reset { margin-bottom: 1px; white-space: nowrap; }
.reference-metrics .metric-card { min-height: 112px; padding: 17px 20px; display: grid; grid-template-columns: 58px minmax(0, 1fr); grid-template-rows: auto auto auto; column-gap: 14px; align-items: center; }
.reference-metrics .metric-head { display: contents; }
.reference-metrics .metric-head > span { grid-column: 2; grid-row: 1; align-self: end; color: var(--muted); font-size: var(--font-size-caption); }
.reference-metrics .metric-icon { grid-column: 1; grid-row: 1 / 4; width: 54px; height: 54px; border-radius: 50%; font-style: normal; font-size: var(--font-size-card-title); }
.reference-metrics .metric-value { grid-column: 2; grid-row: 2; min-height: 32px; margin: 1px 0 0; align-self: center; font-size: var(--font-size-page-title); }
.reference-metrics .metric-note { grid-column: 2; grid-row: 3; margin: 0; align-self: start; }
.reference-metrics .metric-card:nth-child(2) .metric-icon { color: #178a62; background: #e5f5ee; }
.reference-metrics .metric-card:nth-child(3) .metric-icon { color: #ce8b12; background: #fff2d9; }
.reference-metrics .metric-card:nth-child(4) .metric-icon { color: #cf4a3a; background: #fae8e5; }
.table-panel { overflow: hidden; }
.table-panel .data-table { min-width: 1120px; }
.table-panel .data-table th { height: 46px; padding-top: 14px; padding-bottom: 14px; font-size: var(--font-size-caption); }
.table-panel .data-table td { min-height: 58px; padding-top: 11px; padding-bottom: 11px; }
.table-footer { min-height: 56px; padding: 10px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: 1px solid var(--line); color: var(--muted); background: #fff; font-size: var(--font-size-caption); }
.pagination { display: flex; align-items: center; gap: 6px; }
.pagination button { width: 32px; height: 32px; border: 1px solid var(--line); border-radius: 6px; color: var(--muted); background: #fff; }
.pagination button.active { border-color: var(--brand); color: #fff; background: var(--brand); }
.empty-cell { display: inline-block; min-width: 22px; min-height: 16px; vertical-align: middle; }
.missing-field-label { display: block; margin-top: 4px; color: #98a39d; font-size: var(--font-size-caption); }

.scheduler-layout { display: grid; grid-template-columns: minmax(270px, .58fr) minmax(0, 1.72fr); gap: 14px; }
.available-panel, .schedule-board { min-height: 420px; }
.compact-list { padding: 8px 14px; }
.staff-list-row { min-height: 58px; padding: 9px 0; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 9px; border-bottom: 1px solid #edf1ef; }
.staff-list-row:last-child { border-bottom: 0; }
.staff-list-row strong, .staff-list-row small { display: block; }
.staff-list-row small { margin-top: 3px; color: var(--muted); font-size: var(--font-size-caption); }
.legend { color: var(--muted); font-size: var(--font-size-caption); white-space: nowrap; }
.legend i { display: inline-block; width: 7px; height: 7px; margin-right: 4px; border-radius: 50%; background: #24935f; }
.legend i.warning { background: #e5a12a; }
.project-schedule-grid { display: grid; grid-template-columns: repeat(3, minmax(220px, 1fr)); gap: 10px; }
.schedule-card { padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: #fbfcfb; }
.schedule-project { min-height: 42px; display: flex; align-items: center; gap: 9px; }
.schedule-project strong, .schedule-project small { display: block; }
.schedule-project strong { font-size: var(--font-size-caption); }
.schedule-project small { margin-top: 4px; color: var(--muted); font-size: var(--font-size-caption); }
.shift-block { min-height: 72px; margin-top: 10px; padding: 10px; border: 1px solid #e6ece9; border-radius: 8px; background: #fff; }
.shift-block strong, .shift-block small { display: block; }
.shift-block strong { font-size: var(--font-size-caption); }
.shift-block small { margin-top: 4px; color: var(--muted); font-size: var(--font-size-caption); }
.avatar-stack { min-height: 24px; margin-top: 8px; display: flex; align-items: center; }
.avatar-stack > span { width: 24px; height: 24px; margin-left: -4px; display: grid; place-items: center; border: 2px solid #fff; border-radius: 50%; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-weight: 900; }
.avatar-stack > span:first-child { margin-left: 0; }
.schedule-actions { margin-top: 10px; display: flex; gap: 7px; }
.schedule-actions .button { flex: 1; }

/* Attendance control: personnel, reviews, projects and reserved adjudication board */
.attendance-control-page { min-height: 0; grid-template-rows: auto minmax(0, 1fr); gap: 12px; }
.attendance-page-toolbar { padding: 10px 14px; display: grid; grid-template-columns: minmax(260px, 1.4fr) repeat(3, minmax(130px, .72fr)); gap: 9px; border: 1px solid var(--line); border-radius: 10px; background: #fff; box-shadow: 0 4px 16px rgba(18,42,31,.025); }
.attendance-control-grid { height: 100%; min-height: 0; display: grid; grid-template-columns: minmax(520px, 1.08fr) minmax(430px, .92fr); grid-template-rows: repeat(2, minmax(0, 1fr)); grid-template-areas: "people reviews" "projects adjudication"; gap: 12px; align-items: stretch; }
.attendance-control-grid > .panel { position: relative; min-width: 0; min-height: 0; overflow: hidden; }
.attendance-control-grid > .panel > .attendance-board-header { padding-right: 54px; }
.attendance-panel-fullscreen-toggle { position: absolute; top: 13px; right: 13px; z-index: 12; width: 32px; height: 32px; padding: 0; display: grid; place-items: center; border: 1px solid #cfe0d7; border-radius: 8px; color: var(--brand); background: rgba(255,255,255,.94); box-shadow: 0 5px 16px rgba(18,74,51,.12); backdrop-filter: blur(8px); cursor: pointer; transition: color .18s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease, transform .18s ease; }
.attendance-panel-fullscreen-toggle:hover { border-color: #8fbea9; color: #0d6848; background: #f4fbf7; box-shadow: 0 8px 20px rgba(18,74,51,.17); transform: translateY(-1px) scale(1.04); }
.attendance-panel-fullscreen-toggle:focus-visible { outline: 3px solid rgba(20,126,87,.22); outline-offset: 2px; }
.attendance-panel-fullscreen-toggle svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; }
body.attendance-fullscreen-open { overflow: hidden; }
body.attendance-fullscreen-open::before { content: ""; position: fixed; inset: 0; z-index: 1190; background: rgba(7,24,16,.56); backdrop-filter: blur(9px); animation: attendance-fullscreen-backdrop-in .32s ease both; }
.attendance-control-grid > .panel.attendance-panel-fullscreen { position: fixed; inset: 14px; z-index: 1200; width: auto; height: auto; min-height: 0; max-height: none; margin: 0; border-color: rgba(255,255,255,.72); border-radius: 16px; background: #fff; box-shadow: 0 28px 90px rgba(3,24,15,.36); }
.attendance-panel-fullscreen .attendance-person-grid,
.attendance-panel-fullscreen .attendance-review-table,
.attendance-panel-fullscreen .attendance-project-grid { max-height: none; }
.attendance-panel-fullscreen .attendance-panel-fullscreen-toggle { top: 14px; right: 14px; color: #fff; border-color: rgba(255,255,255,.2); background: var(--brand); box-shadow: 0 7px 20px rgba(15,94,65,.24); }
.attendance-panel-fullscreen .attendance-panel-fullscreen-toggle:hover { color: #fff; border-color: rgba(255,255,255,.42); background: #0d6848; }
@keyframes attendance-fullscreen-backdrop-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.attendance-personnel-panel { grid-area: people; }
.attendance-review-panel { grid-area: reviews; }
.attendance-project-panel { grid-area: projects; }
.attendance-adjudication-panel { grid-area: adjudication; }
.attendance-personnel-panel { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.attendance-review-panel { display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; }
.attendance-project-panel { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.attendance-adjudication-panel { display: grid; grid-template-rows: auto minmax(0, 1fr); }
.attendance-board-header { min-height: 58px; padding: 10px 14px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border-bottom: 1px solid var(--line); background: #fff; }
.attendance-board-title { display: flex; align-items: baseline; gap: 9px; white-space: nowrap; }
.attendance-board-title h2 { margin: 0; font-size: var(--font-size-card-title); }
.attendance-board-title > span { color: var(--muted); font-size: var(--font-size-caption); }
.attendance-summary-tabs { min-width: 0; display: flex; align-items: center; gap: 7px; overflow-x: auto; }
.attendance-summary-tabs button { min-width: 86px; min-height: 34px; padding: 0 10px; display: flex; align-items: center; justify-content: center; gap: 8px; border: 1px solid #e1e8e4; border-radius: 7px; color: var(--muted); background: #f8faf9; font-size: var(--font-size-caption); white-space: nowrap; }
.attendance-summary-tabs button b { color: var(--text-primary); }
.attendance-summary-tabs button.active { border-color: #c5e2d4; color: var(--brand); background: #eef8f3; }
.attendance-summary-tabs button.active b { color: var(--brand); }
.attendance-page-toolbar input, .attendance-page-toolbar select, .attendance-review-toolbar input, .attendance-project-tools select { min-width: 0; min-height: 34px; padding: 6px 9px; border-radius: 6px; font-size: var(--font-size-caption); }
.attendance-search { min-width: 0; display: flex; align-items: center; gap: 6px; padding-left: 9px; border: 1px solid var(--line-strong); border-radius: 6px; color: var(--muted); background: #fff; }
.attendance-search input { width: 100%; padding-left: 0; border: 0; background: transparent; box-shadow: none; }
.attendance-search input:focus { box-shadow: none; }
.attendance-person-grid { min-height: 0; padding: 10px 12px; display: grid; grid-template-columns: repeat(auto-fit, minmax(168px, 1fr)); align-content: start; gap: 8px; overflow-y: auto; background: #fff; }
.attendance-person-card { min-width: 0; min-height: 102px; padding: 10px; display: grid; align-content: space-between; gap: 10px; border: 1px solid #e1e8e4; border-radius: 8px; background: #fff; box-shadow: 0 2px 8px rgba(18,42,31,.025); cursor: pointer; transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.attendance-person-card:hover { border-color: #9bc8b4; box-shadow: 0 7px 18px rgba(18,74,51,.09); transform: translateY(-1px); }
.attendance-person-card.selected { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(20,126,87,.12); background: #fbfefc; }
.attendance-person-main { min-width: 0; display: grid; grid-template-columns: 34px minmax(0, 1fr); align-items: center; gap: 8px; }
.attendance-person-avatar { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; object-fit: cover; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-weight: 900; }
.attendance-default-avatar::before { content: ""; width: 12px; height: 12px; border-radius: 50%; background: var(--brand); box-shadow: 0 10px 0 4px var(--brand); transform: translateY(-4px); }
.attendance-person-main strong, .attendance-person-main p { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attendance-person-main strong { display: block; font-size: var(--font-size-caption); }
.attendance-person-main strong small { margin-left: 3px; color: var(--muted); font-size: 10px; font-weight: 600; }
.attendance-person-main p { margin-top: 4px; color: var(--muted); font-size: 10px; }
.attendance-person-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.attendance-person-foot button { min-width: 52px; min-height: 27px; padding: 0 9px; border: 0; border-radius: 5px; color: #fff; background: var(--brand); font-size: 10px; font-weight: 800; }
.attendance-person-foot button:disabled { color: #8d9791; background: #e2e6e4; cursor: not-allowed; }
.attendance-state { padding: 3px 7px; border: 1px solid #bfe2d1; border-radius: 5px; color: #15845d; background: #f2faf6; font-size: 10px; }
.attendance-state.assigned { border-color: #f0d49f; color: #aa710b; background: #fff8e9; }
.attendance-state.checked { border-color: #b9d2f2; color: #246ab3; background: #f2f7fd; }
.attendance-state.off { border-color: #d8ddda; color: #717d76; background: #f5f6f5; }
.attendance-board-footer { min-height: 42px; padding: 8px 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: 1px solid var(--line); color: var(--muted); background: #fbfcfb; font-size: var(--font-size-caption); }
.attendance-board-footer small { color: #87928c; }

.attendance-review-categories { min-width: 0; display: flex; align-items: center; gap: 5px; overflow-x: auto; }
.attendance-review-categories button { min-height: 30px; padding: 0 8px; display: inline-flex; align-items: center; gap: 6px; border: 1px solid #e1e8e4; border-radius: 6px; color: var(--muted); background: #f8faf9; font-size: 10px; white-space: nowrap; }
.attendance-review-categories button.active { border-color: #83bba3; color: var(--brand); background: #eff8f3; }
.attendance-review-categories button.pending { color: #b8750b; }
.attendance-review-categories button.exception { color: #c84b3e; }
.attendance-review-categories button.confirm { color: #286ec0; }
.attendance-review-categories button.done { color: #16845c; }
.attendance-review-toolbar { min-height: 48px; padding: 7px 14px; display: grid; grid-template-columns: minmax(180px, 1fr) auto auto; align-items: center; gap: 8px; border-bottom: 1px solid #edf1ef; background: #fbfcfb; }
.attendance-review-toolbar > span { color: var(--muted); font-size: 10px; }
.attendance-review-table { min-height: 0; overflow: auto; background: #fff; }
.attendance-review-table table { width: 100%; min-width: 760px; border-collapse: collapse; }
.attendance-review-table th, .attendance-review-table td { padding: 9px 8px; border-bottom: 1px solid #edf1ef; font-size: 10px; text-align: left; vertical-align: middle; }
.attendance-review-table th { position: sticky; top: 0; z-index: 2; color: var(--muted); background: #f7f9f8; white-space: nowrap; }
.attendance-review-table td strong, .attendance-review-table td small { display: block; white-space: nowrap; }
.attendance-review-table td small { margin-top: 3px; color: var(--muted); }
.attendance-review-row { cursor: pointer; transition: background .16s ease, box-shadow .16s ease; }
.attendance-review-row:hover { background: #f4faf7; }
.attendance-review-row:focus-visible { outline: 2px solid rgba(20,126,87,.32); outline-offset: -2px; }
.attendance-review-row.selected { background: #eaf6f0; box-shadow: inset 3px 0 0 var(--brand); }
.attendance-review-type, .attendance-review-status { display: inline-flex; padding: 3px 6px; border-radius: 5px; color: #a66c0b; background: #fff4dc; white-space: nowrap; }
.attendance-review-type.disputed, .attendance-review-type.correction_requested, .attendance-review-status.disputed, .attendance-review-status.correction_requested { color: #c84b3e; background: #fdecea; }
.attendance-review-type.attendance_exception, .attendance-review-status.attendance_exception { color: #c84b3e; background: #fdecea; }
.attendance-review-type.pending_employee, .attendance-review-status.pending_employee { color: #286ec0; background: #eaf3fd; }
.attendance-review-type.effective, .attendance-review-status.effective { color: #16845c; background: #eaf7f0; }
.attendance-review-status.pending_super_admin { color: #7652ad; background: #f1ebfb; }
.attendance-shift { display: inline-flex; padding: 3px 6px; border-radius: 5px; color: #16845c; background: #eaf7f0; white-space: nowrap; }
.attendance-shift.night { color: #286ec0; background: #eaf3fd; }

.attendance-project-tools { display: flex; align-items: center; gap: 8px; }
.attendance-project-tools select { width: 150px; }
.attendance-project-grid { min-height: 0; padding: 10px; display: grid; grid-template-columns: repeat(auto-fit, minmax(205px, 1fr)); grid-auto-rows: max-content; align-content: start; gap: 9px; overflow-y: auto; background: #fff; }
.attendance-project-card { min-width: 0; padding: 0; overflow: hidden; background: #fff; cursor: pointer; transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.attendance-project-card:hover { border-color: #9bc8b4; box-shadow: 0 7px 18px rgba(18,74,51,.09); transform: translateY(-1px); }
.attendance-project-card.selected { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(20,126,87,.12); }
.attendance-project-cover { position: relative; height: 82px; overflow: hidden; background: linear-gradient(135deg, #e8f2ed, #cfe4d9); }
.attendance-project-cover-image { width: 100%; height: 100%; display: block; object-fit: cover; }
.attendance-project-cover .project-image-empty { height: 100%; font-size: var(--font-size-page-title); }
.attendance-project-cover > span { position: absolute; right: 7px; bottom: 7px; padding: 3px 6px; border-radius: 4px; color: #fff; background: rgba(12,59,42,.78); font-size: 9px; }
.attendance-project-copy { padding: 9px 10px 7px; }
.attendance-project-copy strong, .attendance-project-copy small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attendance-project-copy strong { font-size: var(--font-size-caption); }
.attendance-project-copy small { margin-top: 5px; color: var(--muted); font-size: 10px; }
.attendance-project-actions { padding: 8px 10px 10px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.attendance-project-actions > span { overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.attendance-project-actions button { min-height: 27px; padding: 0 9px; border: 0; border-radius: 5px; color: #fff; background: var(--brand); font-size: 9px; font-weight: 800; }
.attendance-adjudication-panel { min-height: 0; container-name: attendance-adjudication; container-type: inline-size; }
.attendance-inline-review-body { min-height: 0; padding: 10px 11px 14px; overflow: auto; background: #f5f8f6; }
.attendance-inline-review-layout { min-height: 100%; display: grid; align-content: start; gap: 9px; }
.attendance-inline-review-sidebar, .attendance-inline-review-main { min-width: 0; }
.attendance-inline-review-main { display: grid; align-content: start; gap: 9px; }
.attendance-inline-review-card { margin: 0; padding: 10px; border: 1px solid #dfe8e3; border-radius: 9px; background: #fff; box-shadow: 0 3px 10px rgba(18,42,31,.035); }
.attendance-inline-review-sidebar .attendance-inline-review-card { height: 100%; }
.attendance-inline-review-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.attendance-inline-section-title { display: flex; align-items: center; gap: 7px; }
.attendance-inline-section-title > span { width: 4px; height: 18px; border-radius: 99px; background: #1aae6f; }
.attendance-inline-section-title strong { font-size: 11px; }
.attendance-inline-section-subtitle { margin: 5px 0 8px; color: var(--muted); font-size: 9px; line-height: 1.45; }
.attendance-inline-person { margin-top: 9px; padding-bottom: 9px; display: flex; align-items: center; gap: 9px; border-bottom: 1px solid #e7ece9; }
.attendance-inline-person > span { width: 42px; height: 42px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 50%; color: #149963; background: #e4f6ed; font-size: 16px; font-weight: 850; }
.attendance-inline-person > div { min-width: 0; }
.attendance-inline-person strong, .attendance-inline-person small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attendance-inline-person strong { font-size: 11px; }
.attendance-inline-person small { margin-top: 4px; color: var(--muted); font-size: 9px; }
.attendance-inline-facts { padding: 9px 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border-bottom: 1px solid #e7ece9; }
.attendance-inline-facts > div { min-width: 0; min-height: 43px; padding: 0 6px; display: grid; align-content: center; justify-items: center; border-right: 1px solid #e7ece9; text-align: center; }
.attendance-inline-facts > div:last-child { border-right: 0; }
.attendance-inline-facts small, .attendance-inline-facts span, .attendance-inline-facts strong { display: block; }
.attendance-inline-facts small { color: var(--muted); font-size: 8px; }
.attendance-inline-facts span { margin-top: 3px; color: #66736c; font-size: 8px; }
.attendance-inline-facts strong { margin-top: 2px; font-size: 10px; }
.attendance-inline-warning { margin-top: 8px; padding: 7px 8px; display: flex; align-items: center; gap: 8px; border: 1px solid #f0cb80; border-radius: 6px; color: #dc7906; background: #fff7e7; font-size: 9px; line-height: 1.4; }
.attendance-inline-warning strong { white-space: nowrap; }
.attendance-inline-assignment { margin-top: 8px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.attendance-inline-assignment label { min-width: 0; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 7px; color: var(--muted); font-size: 9px; }
.attendance-inline-assignment select { min-width: 0; min-height: 30px; padding: 4px 7px; font-size: 9px; }
.attendance-inline-hour-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
.attendance-inline-hour-grid.single { grid-template-columns: minmax(160px, 1fr); }
.attendance-inline-hour-grid label { min-width: 0; padding: 8px 6px; display: grid; justify-items: center; border: 1px solid #dae5df; border-radius: 7px; background: #f4f8f6; text-align: center; }
.attendance-inline-hour-grid small { min-height: 24px; color: #42554b; font-size: 8px; line-height: 1.4; }
.attendance-inline-hour-grid input { width: 74px; min-height: 34px; margin: 4px 0; padding: 4px; border-color: transparent; color: #12a767; background: transparent; font-size: 18px; text-align: center; box-shadow: none; }
.attendance-inline-hour-grid input:focus { border-color: #8cc8ad; background: #fff; }
.attendance-inline-hour-grid input:disabled { opacity: 1; cursor: default; }
.attendance-inline-hour-grid span, .attendance-inline-hour-grid b { font-size: 8px; font-weight: 500; }
.attendance-inline-hour-grid span { color: var(--muted); }
.attendance-inline-hour-grid b { margin-top: 3px; color: #506159; }
.attendance-inline-note { margin-top: 8px; display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 8px; }
.attendance-inline-note > span { font-size: 9px; }
.attendance-inline-note textarea { min-height: 48px; padding: 7px; resize: vertical; font-size: 9px; }
.attendance-inline-result { padding: 9px 10px; display: grid; grid-template-columns: minmax(90px, 1fr) repeat(3, minmax(70px, .7fr)); align-items: center; gap: 8px; border: 1px solid #f0cf8d; border-radius: 9px; background: #fff7e4; }
.attendance-inline-result > strong { font-size: 11px; }
.attendance-inline-result > div { display: grid; justify-items: center; }
.attendance-inline-result small { color: var(--muted); font-size: 8px; }
.attendance-inline-result b { margin-top: 3px; color: #e98113; font-size: 11px; }
.attendance-inline-timeline { margin-top: 9px; display: grid; }
.attendance-inline-timeline article { position: relative; min-width: 0; padding: 0 0 10px 15px; display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 8px; border-left: 1px dashed #d9e2dd; }
.attendance-inline-timeline article:last-child { padding-bottom: 0; }
.attendance-inline-timeline article > i { position: absolute; top: 2px; left: -5px; width: 9px; height: 9px; border: 2px solid #fff; border-radius: 50%; background: #7ebda1; box-shadow: 0 0 0 1px #b7d7c8; }
.attendance-inline-timeline article.latest > i { background: #ef5751; box-shadow: 0 0 0 2px #fde7e5; }
.attendance-inline-timeline time { color: var(--muted); font-size: 8px; }
.attendance-inline-timeline article > div { min-width: 0; }
.attendance-inline-timeline article strong { font-size: 9px; }
.attendance-inline-timeline article p { margin: 3px 0 0; color: #56665e; font-size: 8px; line-height: 1.45; }
.attendance-inline-allocation-list { display: grid; gap: 6px; }
.attendance-inline-allocation-row { display: grid; grid-template-columns: minmax(0, 1fr) 82px auto; align-items: center; gap: 6px; }
.attendance-inline-allocation-row select, .attendance-inline-allocation-row input { min-width: 0; min-height: 30px; padding: 4px 6px; font-size: 9px; }
.attendance-inline-allocation-row label { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 3px; }
.attendance-inline-allocation-row label span { color: var(--muted); font-size: 9px; }
.attendance-inline-allocation-row > button { min-height: 28px; padding: 0 6px; border: 0; color: #c84b3e; background: transparent; font-size: 8px; }
.attendance-inline-allocation-list + .button { margin-top: 7px; }
.attendance-inline-submit { position: sticky; bottom: -14px; z-index: 3; padding: 9px 0 0; background: linear-gradient(transparent, #f5f8f6 28%); }
.attendance-inline-submit .button { width: 100%; min-height: 39px; }
.attendance-inline-readonly { padding: 9px; border-radius: 7px; color: var(--muted); background: #e9eeeb; font-size: 9px; text-align: center; }

@container attendance-adjudication (min-width: 720px) {
  .attendance-inline-review-body { overflow: hidden; }
  .attendance-inline-review-layout { height: 100%; grid-template-columns: 220px minmax(0, 1fr); align-content: stretch; }
  .attendance-inline-review-sidebar { min-height: 0; overflow: auto; }
  .attendance-inline-review-main { min-height: 0; padding-right: 2px; overflow: auto; }
  .attendance-inline-basic-card { min-height: 100%; display: flex; flex-direction: column; }
  .attendance-inline-basic-card .attendance-inline-person { padding: 10px 0 14px; }
  .attendance-inline-basic-card .attendance-inline-facts { grid-template-columns: 1fr; }
  .attendance-inline-basic-card .attendance-inline-facts > div { min-height: 48px; padding: 7px 5px; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; justify-items: stretch; gap: 6px; border-right: 0; border-bottom: 1px solid #e7ece9; text-align: left; }
  .attendance-inline-basic-card .attendance-inline-facts > div:last-child { border-bottom: 0; }
  .attendance-inline-basic-card .attendance-inline-facts small { font-size: 9px; }
  .attendance-inline-basic-card .attendance-inline-facts span { margin: 0; text-align: right; }
  .attendance-inline-basic-card .attendance-inline-facts strong { margin: 0; color: var(--text-primary); font-size: 10px; text-align: right; }
  .attendance-inline-basic-card .attendance-inline-facts > div:last-child strong { color: var(--brand); }
  .attendance-inline-basic-card .attendance-inline-warning { align-items: flex-start; flex-direction: column; }
  .attendance-inline-basic-card .attendance-inline-assignment { margin-top: auto; padding-top: 10px; grid-template-columns: 1fr; }
  .attendance-inline-basic-card .attendance-inline-assignment label { grid-template-columns: 42px minmax(0, 1fr); }
  .attendance-inline-review-main-card { padding: 13px; }
  .attendance-inline-review-main-card .attendance-inline-hour-grid { gap: 10px; }
  .attendance-inline-review-main-card .attendance-inline-hour-grid label { min-height: 132px; align-content: center; }
  .attendance-inline-review-main-card .attendance-inline-hour-grid input { font-size: 22px; }
  .attendance-inline-result { min-height: 70px; }
  .attendance-inline-evidence-card { min-height: 130px; }
  .attendance-inline-submit { bottom: 0; padding: 10px 0 2px; display: flex; justify-content: flex-end; }
  .attendance-inline-submit .button { width: 180px; }
}
.attendance-adjudication-reserved { min-height: 0; display: grid; place-content: center; justify-items: center; border: 1px dashed #cfdbd5; border-radius: 9px; margin: 12px; color: #9aa59f; background: repeating-linear-gradient(135deg, #fbfcfb, #fbfcfb 12px, #f8faf9 12px, #f8faf9 24px); }
.attendance-adjudication-reserved span { font-size: var(--font-size-card-title); font-weight: 850; }
.attendance-adjudication-reserved p { margin: 7px 0 0; font-size: var(--font-size-caption); }
.attendance-adjudication-body { min-height: 0; padding: 11px 12px 14px; overflow: auto; background: #fff; }
.attendance-person-detail-summary { display: grid; grid-template-columns: auto minmax(150px, 1fr) repeat(3, minmax(86px, .55fr)); align-items: center; gap: 10px; }
.attendance-person-detail-summary .attendance-person-avatar { width: 42px; height: 42px; }
.attendance-person-detail-summary > div { min-width: 0; }
.attendance-person-detail-summary strong, .attendance-person-detail-summary small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attendance-person-detail-summary small { margin-top: 3px; color: var(--muted); font-size: 9px; }
.attendance-person-detail-metric { padding: 7px 8px; border: 1px solid #dfe8e3; border-radius: 7px; background: #f8fbf9; }
.attendance-person-detail-metric b { display: block; color: var(--brand); font-size: 15px; }
.attendance-person-detail-actions { margin-top: 9px; display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.attendance-person-detail-actions > span { margin-right: auto; color: var(--muted); font-size: 10px; }
.attendance-person-detail-grid { margin-top: 10px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.attendance-person-detail-section { min-width: 0; padding: 9px; border: 1px solid #e2e9e5; border-radius: 8px; background: #fbfcfb; }
.attendance-person-detail-section h3 { margin: 0 0 7px; font-size: 11px; }
.attendance-mini-list { display: grid; gap: 5px; }
.attendance-mini-row { min-width: 0; padding: 6px 7px; display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; align-items: center; gap: 7px; border-radius: 6px; background: #fff; font-size: 9px; }
.attendance-mini-row > span, .attendance-mini-row > strong, .attendance-mini-row > small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attendance-mini-row > span, .attendance-mini-row > small { color: var(--muted); }
.attendance-mini-row.flow { grid-template-columns: 82px minmax(0, 1fr); }
.attendance-mini-row button { min-height: 24px; padding: 0 7px; border: 1px solid #c8ddd3; border-radius: 5px; color: var(--brand); background: #fff; font-size: 9px; }
.attendance-related-projects { display: flex; flex-wrap: wrap; gap: 5px; }
.attendance-related-projects span { padding: 4px 7px; border-radius: 5px; color: #176f51; background: #eaf7f0; font-size: 9px; }
.attendance-adjudication-loading { min-height: 120px; display: grid; place-content: center; color: var(--muted); font-size: var(--font-size-caption); }
.attendance-person-basic { padding: 11px; display: grid; grid-template-columns: auto minmax(130px, 1fr) minmax(210px, .9fr); align-items: center; gap: 10px; border: 1px solid #dfe8e3; border-radius: 9px; background: linear-gradient(135deg, #fbfefc, #f3f9f6); }
.attendance-person-basic .attendance-person-avatar { width: 46px; height: 46px; }
.attendance-person-basic-copy { min-width: 0; }
.attendance-person-basic-copy strong, .attendance-person-basic-copy span, .attendance-person-basic-copy small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attendance-person-basic-copy strong { font-size: 13px; }
.attendance-person-basic-copy span { margin-top: 2px; color: var(--brand); font-size: 10px; font-weight: 750; }
.attendance-person-basic-copy small { margin-top: 4px; color: var(--muted); font-size: 9px; }
.attendance-person-basic dl { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.attendance-person-basic dl div { min-width: 0; padding: 6px 7px; border-radius: 6px; background: #fff; }
.attendance-person-basic dt { color: var(--muted); font-size: 9px; }
.attendance-person-basic dd { margin: 3px 0 0; overflow: hidden; font-size: 10px; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.attendance-person-accordion { margin-top: 9px; display: grid; gap: 8px; }
.attendance-detail-card { overflow: hidden; border: 1px solid #dfe8e3; border-radius: 9px; background: #fff; }
.attendance-detail-card.open { border-color: #bddbcc; box-shadow: 0 3px 12px rgba(18,74,51,.05); }
.attendance-detail-card-head { min-height: 42px; display: flex; align-items: center; border-bottom: 0 solid #e8eeeb; background: #fbfcfb; }
.attendance-detail-card.open .attendance-detail-card-head { border-bottom-width: 1px; }
.attendance-detail-card-toggle { min-width: 0; min-height: 42px; padding: 0 10px; flex: 1; display: grid; grid-template-columns: 14px minmax(0, 1fr) auto; align-items: center; gap: 7px; border: 0; text-align: left; background: transparent; }
.attendance-detail-card-toggle strong { font-size: 11px; }
.attendance-detail-card-toggle small { color: var(--muted); font-size: 9px; white-space: nowrap; }
.attendance-detail-card-head > .button { margin-right: 9px; }
.attendance-detail-chevron { color: var(--brand); font-size: 17px; line-height: 1; transition: transform .16s ease; }
.open > .attendance-detail-card-head .attendance-detail-chevron, .attendance-review-record.open .attendance-detail-chevron, .attendance-record-day.open .attendance-detail-chevron { transform: rotate(90deg); }
.attendance-detail-card-body { padding: 9px; }
.attendance-detail-inline-loading, .attendance-detail-empty { min-height: 54px; display: grid; place-items: center; color: var(--muted); font-size: 10px; text-align: center; }
.attendance-detail-empty.compact { min-height: 36px; margin-top: 8px; border-radius: 6px; background: #f7f9f8; }
.attendance-future-list { display: grid; gap: 6px; }
.attendance-future-list article { min-width: 0; padding: 7px 8px; display: grid; grid-template-columns: 76px minmax(0, 1fr) auto; align-items: center; gap: 8px; border-radius: 7px; background: #f7faf8; }
.attendance-future-list time { color: var(--brand); font-size: 9px; font-weight: 800; }
.attendance-future-list div { min-width: 0; }
.attendance-future-list strong, .attendance-future-list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attendance-future-list strong { font-size: 10px; }
.attendance-future-list small, .attendance-future-list > article > span { margin-top: 3px; color: var(--muted); font-size: 9px; }
.attendance-review-record-list, .attendance-record-list { display: grid; gap: 6px; }
.attendance-review-record, .attendance-record-day { overflow: hidden; border: 1px solid #e3eae6; border-radius: 7px; background: #fff; }
.attendance-review-record.open, .attendance-record-day.open { border-color: #bedbcc; }
.attendance-review-record-head, .attendance-record-day-head { width: 100%; min-height: 39px; padding: 6px 8px; display: grid; align-items: center; gap: 7px; border: 0; text-align: left; background: #f9fbfa; }
.attendance-review-record-head { grid-template-columns: 13px 76px minmax(0, 1fr) auto; }
.attendance-review-record-head time, .attendance-review-record-head small { color: var(--muted); font-size: 9px; }
.attendance-review-record-head strong { overflow: hidden; color: var(--brand); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.attendance-review-record-body, .attendance-record-day-body { padding: 8px; border-top: 1px solid #e8eeeb; }
.attendance-review-record-actions { margin-top: 8px; display: flex; justify-content: flex-end; }
.attendance-review-event-list { display: grid; gap: 6px; }
.attendance-review-event { padding: 7px 8px; border-left: 3px solid #9bcdb7; border-radius: 5px; background: #f7faf8; }
.attendance-review-event > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.attendance-review-event strong { font-size: 10px; }
.attendance-review-event time, .attendance-review-event small { color: var(--muted); font-size: 9px; }
.attendance-review-event p { margin: 4px 0; color: #526158; font-size: 9px; line-height: 1.5; }
.attendance-record-toolbar { margin-bottom: 8px; display: flex; align-items: center; gap: 7px; }
.attendance-record-toolbar span { margin: 0 auto; color: var(--muted); font-size: 9px; }
.attendance-record-day.today { border-color: #80bca2; box-shadow: inset 3px 0 0 var(--brand); }
.attendance-record-day-head { grid-template-columns: 13px 80px minmax(100px, 1fr) auto; }
.attendance-record-day-head time b, .attendance-record-day-head time small { display: block; }
.attendance-record-day-head time b { color: var(--brand); font-size: 10px; }
.attendance-record-day-head time small { margin-top: 2px; color: var(--muted); font-size: 8px; }
.attendance-record-day-head > strong { font-size: 10px; }
.attendance-record-day-head > span:last-child { color: var(--brand); font-size: 10px; font-weight: 800; }
.attendance-record-detail-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.attendance-record-detail-grid > div { padding: 6px; border-radius: 6px; background: #f7faf8; }
.attendance-record-detail-grid small, .attendance-record-detail-grid strong { display: block; }
.attendance-record-detail-grid small { color: var(--muted); font-size: 8px; }
.attendance-record-detail-grid strong { margin-top: 3px; font-size: 10px; }
.attendance-record-detail-copy { margin-top: 7px; padding: 6px 8px; border-radius: 6px; background: #fbfcfb; }
.attendance-record-detail-copy p { margin: 2px 0; color: #59675f; font-size: 9px; line-height: 1.45; }
.attendance-detail-photo-grid { margin-top: 8px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.attendance-detail-photo-grid button { height: 64px; padding: 0; overflow: hidden; border: 1px solid #dfe8e3; border-radius: 6px; background: #eef3f0; }
.attendance-detail-photo { width: 100%; height: 100%; display: block; object-fit: cover; }
.attendance-record-admin-action { margin-top: 8px; padding: 8px; display: flex; align-items: center; gap: 10px; border: 1px solid #ecd49e; border-radius: 7px; background: #fff9ea; }
.attendance-record-admin-action > div { min-width: 0; flex: 1; }
.attendance-record-admin-action strong, .attendance-record-admin-action small { display: block; }
.attendance-record-admin-action strong { color: #96630c; font-size: 10px; }
.attendance-record-admin-action small { margin-top: 3px; color: #816f4e; font-size: 9px; line-height: 1.4; }

.assignment-workbench { display: grid; gap: 18px; }
.assignment-person-summary { min-height: 96px; padding: 14px 16px; display: grid; grid-template-columns: 52px minmax(190px, 1fr) repeat(3, minmax(130px, .65fr)); align-items: center; gap: 15px; border: 1px solid #d4e2db; border-radius: 13px; background: linear-gradient(90deg, #fbfdfc, #f6faf8); }
.assignment-person-summary .attendance-person-avatar { width: 52px; height: 52px; }
.assignment-person-summary > div:nth-child(2) { min-width: 0; }
.assignment-person-summary > div:nth-child(2) > strong { display: block; overflow: hidden; font-size: var(--font-size-card-title); text-overflow: ellipsis; white-space: nowrap; }
.assignment-person-summary > div:nth-child(2) p { margin: 7px 0 0; color: var(--muted); font-size: var(--font-size-caption); }
.assignment-summary-metric { min-height: 66px; padding: 10px 13px; border: 1px solid #cfe0d6; border-radius: 10px; background: #f5fbf8; }
.assignment-summary-metric small, .assignment-summary-metric strong, .assignment-summary-metric span { display: block; }
.assignment-summary-metric small, .assignment-summary-metric span { color: var(--muted); font-size: 10px; }
.assignment-summary-metric strong { margin: 3px 0; color: var(--brand); font-size: var(--font-size-card-title); }
.assignment-summary-metric.warning { border-color: #efd9b8; background: #fff9f0; }
.assignment-summary-metric.warning strong { color: #c66d16; }
.assignment-workbench-main { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(300px, .72fr); gap: 18px; }
.assignment-editor { min-width: 0; }
.assignment-template-bar { display: grid; grid-template-columns: 1.35fr .72fr .72fr auto; align-items: end; gap: 10px; }
.assignment-template-bar label { min-width: 0; display: grid; gap: 6px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.assignment-template-bar select { min-width: 0; }
.assignment-date-range { min-height: 48px; margin-top: 12px; padding: 0 13px; display: flex; align-items: center; justify-content: space-between; border: 1px solid var(--line); border-radius: 9px; background: #fbfcfb; font-size: var(--font-size-caption); }
.assignment-date-range span { color: var(--muted); }
.assignment-day-grid { margin-top: 12px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.assignment-day-card { min-width: 0; padding: 11px; display: grid; gap: 8px; border: 1px solid #dfe6e2; border-radius: 10px; background: #fbfcfb; }
.assignment-day-card.scheduled { border-color: #70b493; background: #f7fcf9; box-shadow: inset 0 0 0 1px rgba(23,107,76,.05); }
.assignment-day-card header { display: flex; align-items: center; justify-content: space-between; gap: 7px; }
.assignment-day-card header label { display: flex; align-items: center; gap: 5px; font-size: var(--font-size-caption); }
.assignment-day-card header span { color: var(--muted); font-size: 10px; }
.assignment-day-card header b { padding: 3px 6px; border-radius: 5px; color: var(--muted); background: #e9edeb; font-size: 9px; white-space: nowrap; }
.assignment-day-card.scheduled header b { color: var(--brand); background: #e5f5ed; }
.assignment-day-card select { width: 100%; min-width: 0; min-height: 34px; padding: 5px 7px; font-size: 10px; }
.assignment-day-card > small { overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.assignment-batch-tools { margin-top: 10px; display: flex; gap: 8px; }
.assignment-note { margin-top: 12px; display: grid; gap: 7px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.assignment-note textarea { min-height: 64px; resize: vertical; }
.assignment-future-overview { min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: #fbfcfb; }
.assignment-future-overview > header { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.assignment-future-overview h3 { margin: 0; font-size: var(--font-size-card-title); }
.assignment-future-overview header span { color: var(--muted); font-size: 10px; }
.assignment-future-overview > div { margin-top: 12px; display: grid; }
.assignment-future-overview > div > div { min-height: 48px; display: grid; grid-template-columns: 48px minmax(0, 1fr) 44px minmax(70px, .8fr); align-items: center; gap: 8px; border-bottom: 1px solid #e5ebe8; font-size: 10px; }
.assignment-future-overview time { color: var(--muted); }
.assignment-future-overview strong, .assignment-future-overview small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.assignment-future-overview > div > div > span { padding: 3px 5px; border-radius: 4px; color: #7d8882; background: #edf0ee; text-align: center; }
.assignment-future-overview > div > div.scheduled > span { color: var(--brand); background: #e6f4ec; }
.assignment-future-overview small { color: var(--muted); }
.assignment-future-overview > footer { margin-top: 14px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.assignment-future-overview > footer span { min-height: 58px; padding: 10px; border: 1px solid #d8e4de; border-radius: 9px; color: var(--muted); background: #fff; text-align: center; font-size: 10px; }
.assignment-future-overview > footer b { display: block; margin-top: 4px; color: var(--brand); font-size: var(--font-size-card-title); }
.work-settlement-overview { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.work-settlement-overview > div { min-height: 72px; padding: 13px; border-right: 1px solid var(--line); }
.work-settlement-overview > div:last-child { border-right: 0; }
.work-settlement-overview small, .work-settlement-overview strong { display: block; }
.work-settlement-overview small { color: var(--muted); font-size: var(--font-size-caption); }
.work-settlement-overview strong { margin-top: 7px; font-size: var(--font-size-small); }
.work-settlement-timeline { margin-top: 18px; display: grid; gap: 10px; }
.work-settlement-timeline article { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 10px; }
.work-settlement-timeline article > span { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--brand); font-size: 10px; font-weight: 900; }
.work-settlement-timeline article > div { padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: #fbfcfb; }
.work-settlement-timeline strong, .work-settlement-timeline small { display: block; }
.work-settlement-timeline small { margin-top: 4px; color: var(--muted); font-size: 10px; }
.work-settlement-timeline p { margin: 7px 0 0; color: var(--muted); font-size: var(--font-size-caption); }


.text-success { color: #118256; }
.text-danger { color: #d74438; }

.finance-chart-grid { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(340px, .85fr); gap: 14px; }
.finance-chart-panel { min-height: 330px; overflow: hidden; }
.finance-bars { height: 228px; padding: 24px 28px 18px; display: flex; align-items: stretch; justify-content: space-around; gap: 14px; border-top: 1px solid var(--line); background: repeating-linear-gradient(to top, transparent 0 44px, #edf1ef 45px); }
.finance-bar-group { min-width: 48px; flex: 1; display: grid; grid-template-rows: minmax(0, 1fr) 32px; align-items: end; text-align: center; }
.finance-bar-pair { height: 100%; display: flex; align-items: end; justify-content: center; gap: 5px; }
.finance-bar { width: min(24px, 34%); min-height: 4px; display: block; border-radius: 5px 5px 0 0; box-shadow: 0 5px 12px rgba(16, 126, 84, .12); }
.finance-bar.contract { background: linear-gradient(180deg, #45c087, #118256); }
.finance-bar.received { background: linear-gradient(180deg, #7dacff, #3f77df); }
.finance-bar-group small { padding-top: 8px; overflow: hidden; color: var(--muted); font-size: var(--font-size-caption); text-overflow: ellipsis; white-space: nowrap; }
.cost-breakdown { min-height: 248px; padding: 20px 24px; display: grid; grid-template-columns: 172px minmax(0, 1fr); align-items: center; gap: 22px; border-top: 1px solid var(--line); }
.cost-donut { width: 164px; height: 164px; padding: 30px; display: grid; place-items: center; border-radius: 50%; }
.cost-donut > div { width: 104px; height: 104px; display: grid; place-content: center; border-radius: 50%; background: #fff; text-align: center; box-shadow: 0 2px 14px rgba(22, 70, 51, .08); }
.cost-donut strong, .cost-donut small { display: block; }
.cost-donut strong { font-size: var(--font-size-small); }
.cost-donut small { margin-top: 5px; color: var(--muted); font-size: var(--font-size-caption); }
.cost-legend { display: grid; gap: 12px; }
.cost-legend > div { display: grid; grid-template-columns: 8px minmax(70px, 1fr) auto 34px; align-items: center; gap: 8px; font-size: var(--font-size-caption); }
.cost-legend > div > span { width: 8px; height: 8px; border-radius: 50%; }
.cost-legend em { color: var(--muted); font-style: normal; }
.cost-legend small { color: var(--muted); text-align: right; }

.company-settings-layout { display: grid; grid-template-columns: 185px minmax(0, 1fr) 250px; align-items: start; gap: 14px; }
.company-settings-nav { padding: 10px; display: grid; gap: 6px; }
.company-settings-nav button { min-height: 44px; padding: 0 14px; border: 0; border-radius: 8px; color: #40514a; background: transparent; text-align: left; font-weight: 800; }
.company-settings-nav button:hover { background: var(--surface-soft); }
.company-settings-nav button.active { color: var(--brand); background: var(--brand-soft); box-shadow: inset 3px 0 0 var(--brand); }
.company-settings-status { padding: 20px; position: sticky; top: 94px; }
.company-settings-status h2 { margin: 0 0 14px; font-size: var(--font-size-card-title); }
.company-settings-status > div { min-height: 38px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--line); font-size: var(--font-size-caption); }
.company-settings-status > p { margin: 16px 0 0; color: var(--muted); font-size: var(--font-size-caption); line-height: 1.75; }
.company-config-panel { overflow: hidden; }
.company-config-panel .panel-body { padding: 22px; }
.company-config-panel h3 { margin: 22px 0 11px; font-size: var(--font-size-caption); }
.company-brand-card { min-height: 105px; padding: 18px; display: flex; align-items: center; gap: 18px; border: 1px solid var(--line); border-radius: 12px; background: linear-gradient(135deg, #f3faf6, #fff); }
.company-logo { width: 72px; height: 72px; display: grid; place-items: center; overflow: hidden; border-radius: 14px; color: #fff; background: var(--brand); font-size: var(--font-size-page-title); font-weight: 900; }
.company-logo img { width: 100%; height: 100%; object-fit: contain; background: #fff; }
.company-brand-card small, .company-brand-card p { color: var(--muted); font-size: var(--font-size-caption); }
.company-brand-card h2 { margin: 5px 0; font-size: var(--font-size-section); }
.company-brand-card p { margin: 0; }
.company-stat-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.company-stat-grid article, .company-contact-grid article { padding: 15px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-soft); }
.company-stat-grid strong, .company-stat-grid span, .company-contact-grid small, .company-contact-grid strong { display: block; }
.company-stat-grid strong { color: var(--brand); font-size: var(--font-size-section); }
.company-stat-grid span, .company-contact-grid small { margin-top: 5px; color: var(--muted); font-size: var(--font-size-caption); }
.company-contact-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.company-contact-grid strong { margin-top: 8px; font-size: var(--font-size-caption); line-height: 1.6; }
.config-json-details { margin-top: 22px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; }
.config-json-details summary { cursor: pointer; color: var(--brand); font-size: var(--font-size-caption); font-weight: 800; }
.config-json-details .json-editor { margin-top: 14px; min-height: 300px; }
.settings-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.settings-form-grid .filter-field { min-width: 0; }
.settings-summary { margin-top: 22px; padding: 18px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-soft); }
.settings-summary h3 { margin-top: 0; }
.settings-summary > div { min-height: 38px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--line); font-size: var(--font-size-caption); }
.settings-summary > div:last-child { border-bottom: 0; }
.settings-summary p { color: var(--muted); font-size: var(--font-size-caption); line-height: 1.7; }
.settings-check-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.settings-check-list label { min-height: 44px; padding: 10px 12px; display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; align-items: center; gap: 7px; border: 1px solid var(--line); border-radius: 8px; font-size: var(--font-size-caption); }
.settings-check-list small { color: var(--muted); }
.wecom-recipient-details { margin-top: 22px; }
.wecom-recipient-details > summary { cursor: pointer; color: var(--ink); font-size: var(--font-size-card-title); font-weight: 800; }
.wecom-recipient-details > summary small { margin-left: 8px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 500; }
.wecom-recipient-tools { margin: 12px 0; display: grid; gap: 7px; }
.wecom-recipient-tools input { width: 100%; }
.wecom-recipient-tools small, .wecom-search-empty { color: var(--muted); font-size: var(--font-size-caption); }
.wecom-recipient-list { display: grid; gap: 8px; }
.wecom-recipient-row { min-height: 52px; padding: 8px 10px 8px 12px; display: grid; grid-template-columns: minmax(260px, .9fr) minmax(280px, 1.2fr) auto; align-items: center; gap: 12px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }
.wecom-recipient-row[hidden] { display: none; }
.wecom-recipient-name { min-width: 0; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; column-gap: 8px; }
.wecom-recipient-name span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
.wecom-recipient-name small { grid-column: 2; overflow: hidden; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.wecom-user-id-input { min-width: 0; height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: 7px; background: #f8fbf9; color: var(--ink); }
.wecom-user-id-input[readonly] { border-color: transparent; background: transparent; cursor: default; }
.wecom-recipient-row.editing { border-color: #82b8a2; box-shadow: 0 0 0 3px rgba(23,107,76,.08); }
.wecom-recipient-row.editing .wecom-user-id-input { border-color: #82b8a2; background: #fff; }
.wecom-row-actions, .wecom-edit-actions { display: flex; align-items: center; gap: 6px; }
.wecom-row-actions > button, .wecom-edit-actions > button { white-space: nowrap; }
.wecom-load-more { margin-top: 12px; }
.wecom-search-empty { margin: 12px 0 0; }

@media (max-width: 1280px) {
  .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-layout { grid-template-columns: 1fr; }
  .quick-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid.three { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .project-schedule-grid { grid-template-columns: repeat(2, minmax(220px, 1fr)); }
  .company-settings-layout { grid-template-columns: 150px minmax(0, 1fr); }
  .company-settings-status { position: static; grid-column: 1 / -1; }
}

@media (max-width: 1050px) {
  .inventory-center-page {
    height: auto;
    overflow: visible;
  }

  .inventory-category-panel {
    min-height: 520px;
  }

  .attendance-control-page { height: auto !important; }
  .attendance-control-grid { height: auto; grid-template-columns: 1fr; grid-template-rows: auto; grid-template-areas: "people" "reviews" "projects" "adjudication"; }
  .attendance-control-grid > .panel { min-height: 390px; }
  .attendance-person-grid, .attendance-review-table, .attendance-project-grid { max-height: 430px; }
}

@media (max-width: 900px) {
  .photo-handoff-head { align-items: flex-start; flex-direction: column; }
  .photo-handoff-body { grid-template-columns: 1fr; }
  .photo-handoff-code img { margin: 0 auto; }
  dialog.resource-workbench-dialog { width: calc(100vw - 16px); }
  .resource-workbench-layout, .resource-demand-form, .module-detail-layout { grid-template-columns: 1fr; }
  .resource-stock-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .resource-stock-grid div:nth-child(2) { border-right: 0; }
  .resource-stock-grid div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .login-screen { grid-template-columns: 1fr; }
  .login-brand { display: none; }
  .login-card { min-height: 100vh; align-content: center; }
  .server-state { display: none; }
  .page-content { padding: 18px; }
  .topbar { height: auto; min-height: 78px; padding: 10px 18px; flex-wrap: wrap; }
  .topbar-actions { flex-wrap: wrap; justify-content: flex-end; }
  .metric-grid, .grid.two, .grid.three, .form-grid, .form-grid.three { grid-template-columns: 1fr; }
  .field.full, .form-actions { grid-column: auto; }
  .operation-grid { grid-template-columns: 1fr; }
  .operation-log-filter-grid { grid-template-columns: 1fr 1fr; }
  .operation-log-filter-grid .search-wide { grid-column: 1 / -1; }
  .operation-log-filter-actions { grid-column: 1 / -1; }
  .operation-log-detail[open] { width: 520px; }
  .managed-photo-filter-grid { grid-template-columns: 1fr 1fr; }
  .managed-photo-filter-grid .search-wide { grid-column: 1 / -1; }
  .managed-photo-filter-actions { grid-column: 1 / -1; }
  .managed-photo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .action-list { max-height: 220px; }
  .photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .scheduler-layout { grid-template-columns: 1fr; }
  .project-schedule-grid { grid-template-columns: 1fr; }
  .attendance-board-header { align-items: flex-start; flex-direction: column; }
  .attendance-summary-tabs, .attendance-review-categories { width: 100%; }
  .attendance-page-toolbar { grid-template-columns: 1fr 1fr; }
  .attendance-page-toolbar .attendance-search { grid-column: 1 / -1; }
  .attendance-review-toolbar { grid-template-columns: 1fr; }
  .attendance-review-toolbar > span { display: none; }
  .attendance-inline-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .attendance-inline-facts > div:nth-child(3) { border-right: 0; }
  .attendance-inline-facts > div:nth-child(-n+3) { padding-bottom: 7px; border-bottom: 1px solid #e7ece9; }
  .attendance-inline-facts > div:nth-child(n+4) { padding-top: 7px; }
  .attendance-person-basic { grid-template-columns: auto minmax(0, 1fr); }
  .attendance-person-basic dl { grid-column: 1 / -1; }
  .assignment-person-summary { grid-template-columns: 48px minmax(0, 1fr); }
  .assignment-summary-metric { display: none; }
  .assignment-workbench-main { grid-template-columns: 1fr; }
  .assignment-template-bar { grid-template-columns: 1fr 1fr; }
  .assignment-day-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .work-settlement-overview { grid-template-columns: 1fr 1fr; }
  .work-settlement-overview > div:nth-child(2) { border-right: 0; }
  .work-settlement-overview > div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .filter-field, .filter-field.search-wide { min-width: 100%; }
  .reference-metrics .metric-card { grid-template-columns: 50px minmax(0, 1fr); }
  .finance-chart-grid, .company-settings-layout, .settings-form-grid, .settings-check-list, .company-contact-grid { grid-template-columns: 1fr; }
  .wecom-recipient-row { grid-template-columns: minmax(0, 1fr) minmax(200px, 1fr) auto; }
  .company-settings-status { grid-column: auto; }
  .company-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .finance-bars { overflow-x: auto; justify-content: flex-start; }
  .finance-bar-group { min-width: 64px; }
  .cost-breakdown { grid-template-columns: 1fr; justify-items: center; }
}

@media (max-width: 520px) {
  .attendance-control-grid > .panel.attendance-panel-fullscreen { inset: 6px; border-radius: 12px; }
  .topbar { height: 68px; padding: 0 12px; gap: 10px; }
  .page-heading .kicker { display: none; }
  .page-heading h1 { margin: 0; font-size: var(--font-size-section); }
  .topbar-actions { min-width: 0; }
  #primaryActionButton { max-width: 116px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .page-content { padding: 14px 12px 36px; }
  .toast-stack { right: 12px; bottom: 12px; left: 12px; }
  .toast { min-width: 0; max-width: none; }
  .attendance-page-toolbar { grid-template-columns: 1fr; }
  .attendance-page-toolbar .attendance-search { grid-column: auto; }
  .attendance-person-grid, .attendance-project-grid { grid-template-columns: 1fr; }
  .attendance-board-footer { align-items: flex-start; flex-direction: column; }
  .attendance-record-detail-grid, .attendance-detail-photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .attendance-record-toolbar { align-items: stretch; flex-direction: column; }
  .attendance-record-toolbar span { margin: 0; text-align: center; }
  .attendance-record-day-head { grid-template-columns: 13px 68px minmax(80px, 1fr) auto; }
  .attendance-inline-hour-grid, .attendance-inline-result { grid-template-columns: 1fr; }
  .attendance-inline-assignment, .attendance-inline-allocation-row { grid-template-columns: 1fr; }
  .attendance-inline-result > div { justify-items: start; }
  .attendance-inline-note { grid-template-columns: 1fr; }
  .assignment-template-bar, .assignment-day-grid, .work-settlement-overview { grid-template-columns: 1fr; }
  .work-settlement-overview > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .work-settlement-overview > div:last-child { border-bottom: 0; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* Project center: responsive scrolling cards and desktop project detail */
.project-center-page { display: grid; gap: 14px; }
.project-command-bar { position: relative; z-index: 6; min-height: 58px; padding: 9px 0 13px; display: flex; align-items: center; gap: 18px; border-bottom: 1px solid var(--line); }
.project-status-tabs { display: flex; align-items: center; gap: 10px; }
.project-status-tabs button { min-height: 40px; padding: 0 14px; display: inline-flex; align-items: center; gap: 12px; border: 1px solid var(--line); border-radius: 9px; color: var(--text-secondary); background: var(--surface); font-size: var(--font-size-small); font-weight: 800; }
.project-status-tabs button b { min-width: 22px; color: var(--text-secondary); font-size: var(--font-size-caption); text-align: center; }
.project-status-tabs button.active { border-color: #72b497; color: var(--brand); background: #f7fcf9; box-shadow: inset 0 0 0 1px rgba(23,107,76,.05); }
.project-status-tabs button.active b { color: var(--brand); }
.project-command-main { min-width: 0; margin: 0 18px; display: flex; flex: 1 1 auto; align-items: center; justify-content: center; gap: 18px; }
.project-command-actions { display: flex; flex: 0 0 auto; align-items: center; justify-content: flex-end; gap: 10px; }
.project-search-box { width: min(310px, 26vw); min-height: 40px; padding: 0 12px; display: flex; align-items: center; gap: 8px; border: 1px solid var(--line-strong); border-radius: 9px; color: var(--text-secondary); background: var(--surface); }
.project-search-box:focus-within { border-color: #6ba98e; box-shadow: 0 0 0 3px rgba(23,107,76,.1); }
.project-search-box input { min-width: 0; min-height: 38px; padding: 0; border: 0; box-shadow: none; background: transparent; font-size: var(--font-size-small); }
.project-search-box input:focus { box-shadow: none; }
.project-filter-control { position: relative; }
.project-filter-button { min-height: 40px; font-size: var(--font-size-small); }
.project-filter-button b { min-width: 19px; height: 19px; padding: 0 5px; display: inline-grid; place-items: center; border-radius: 99px; color: #fff; background: var(--brand); font-size: var(--font-size-caption); }
.project-create-button { min-height: 40px; font-size: var(--font-size-small); }
.project-filter-popover { position: absolute; top: calc(100% + 10px); right: 0; z-index: 40; width: 430px; padding: 17px; border: 1px solid var(--line); border-radius: 12px; background: #fff; box-shadow: 0 22px 55px rgba(13,43,29,.2); }
.project-filter-popover header, .project-filter-popover footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.project-filter-popover header strong, .project-filter-popover header small { display: block; }
.project-filter-popover header strong { font-size: var(--font-size-section); }
.project-filter-popover header small { margin-top: 4px; color: var(--text-secondary); font-size: var(--font-size-caption); }
.project-filter-popover header > button { width: 30px; height: 30px; border: 0; border-radius: 7px; color: var(--text-secondary); background: var(--surface-soft); font-size: var(--font-size-section); }
.project-filter-fields { margin: 16px 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.project-filter-fields label { display: grid; gap: 7px; color: var(--text-secondary); font-size: var(--font-size-caption); font-weight: 800; }
.project-filter-fields input, .project-filter-fields select { min-width: 0; font-size: var(--font-size-small); }
.project-filter-search, .project-filter-sort { grid-column: 1 / -1; }
.project-filter-popover footer { justify-content: flex-end; padding-top: 14px; border-top: 1px solid var(--line); }

.project-workspace { display: grid; grid-template-columns: minmax(0, 1fr); min-width: 0; align-items: start; }
.project-list-panel { min-height: 240px; display: grid; grid-template-rows: minmax(0, 1fr); overflow: hidden; }
.project-center-page #projectTableBox { min-height: 0; }
.project-center-page:not(.list-mode) #projectTableBox { overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.project-center-page.list-mode #projectTableBox { min-height: 0; overflow: hidden; }
.project-center-page.list-mode .project-list-view { height: 100%; overflow: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.project-list-header { min-height: 62px; padding: 13px 17px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-bottom: 1px solid var(--line); }
.project-type-tabs { display: flex; align-items: center; gap: 4px; }
.project-type-tabs button { min-height: 36px; padding: 0 12px; display: inline-flex; align-items: center; gap: 7px; border: 0; border-radius: 8px; color: var(--text-secondary); background: transparent; font-size: var(--font-size-small); font-weight: 850; }
.project-type-tabs button:hover { color: var(--brand); background: #f2f8f5; }
.project-type-tabs button.active { color: var(--brand); background: var(--brand-soft); }
.project-type-tabs button b { min-width: 20px; padding: 1px 5px; border-radius: 99px; color: #718078; background: #eef2f0; font-size: var(--font-size-caption); text-align: center; }
.project-type-tabs button.active b { color: #fff; background: var(--brand); }
.project-list-tools { display: flex; align-items: center; justify-content: flex-end; gap: 9px; }
.project-view-toggle { padding: 3px; display: flex; align-items: center; gap: 2px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); }
.project-view-toggle button { min-height: 32px; padding: 0 10px; border: 0; border-radius: 6px; color: var(--text-secondary); background: transparent; font-size: var(--font-size-caption); font-weight: 800; }
.project-view-toggle button:hover { color: var(--brand); }
.project-view-toggle button.active { color: var(--brand); background: #fff; box-shadow: 0 2px 7px rgba(18,42,31,.09); }
.project-card-grid { min-height: 100%; padding: 14px; display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); align-content: start; gap: 12px; background: #fbfcfb; }
.web-project-card { width: 100%; min-width: 0; min-height: 252px; padding: 12px; overflow: hidden; display: grid; grid-template-rows: minmax(0, 1fr) auto; border: 1px solid #dfe6e2; border-radius: 12px; background: #fff; box-shadow: 0 4px 14px rgba(18,42,31,.045); cursor: pointer; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.web-project-card:hover, .web-project-card:focus-visible { transform: translateY(-2px); border-color: #83bba3; box-shadow: 0 13px 28px rgba(18,42,31,.11); outline: none; }
.web-project-card.risk { border-color: #efc0b8; }
.web-project-card-top { min-width: 0; display: grid; grid-template-columns: minmax(132px, 40%) minmax(0, 1fr); align-items: start; gap: 14px; }
.web-project-card-media { min-width: 0; display: grid; align-content: start; gap: 10px; }
.web-project-cover { position: relative; width: 100%; height: auto; aspect-ratio: 16 / 9; padding: 0; overflow: hidden; border: 0; border-radius: 8px; background: #fff; cursor: zoom-in; }
.web-project-cover-image { width: 100%; height: 100%; display: block; object-fit: contain; transition: transform .25s ease; }
.web-project-card:hover .web-project-cover-image { transform: scale(1.025); }
.web-project-cover.project-cover-unavailable { display: grid; place-items: center; background: #f3f6f4; cursor: default; }
.web-project-cover.project-cover-unavailable::after { content: '效果图文件已失效\A 请在项目详情重新上传'; white-space: pre-line; color: #6d7e74; font-size: 12px; font-weight: 700; line-height: 1.7; text-align: center; }
.web-project-cover.project-cover-unavailable .web-project-cover-image { display: none; }
.project-image-empty { height: 100%; display: grid; place-items: center; color: var(--brand); font-size: var(--font-size-page-title); font-weight: 950; }
.web-project-card-summary { min-width: 0; padding: 0; display: grid; align-content: start; gap: 7px; }
.web-project-card-title { min-width: 0; display: grid; gap: 4px; }
.web-project-card-title h3 { margin: 0; overflow: hidden; color: var(--text-primary); font-size: var(--font-size-card-title); line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.web-project-card-title small { display: block; margin: 0; overflow: hidden; color: var(--text-secondary); font-size: var(--font-size-caption); line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.web-project-booth { margin: 0; display: flex; align-items: center; gap: 8px; font-size: var(--font-size-caption); line-height: 1.4; }
.web-project-booth span { color: var(--text-secondary); }
.web-project-booth strong { overflow: hidden; color: var(--text-primary); text-overflow: ellipsis; white-space: nowrap; }
.web-project-stage-row { min-height: 27px; margin: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.web-project-card-details { min-width: 0; margin-top: 1px; display: grid; }
.web-project-card-people { display: grid; gap: 6px; padding: 8px 0 0; border-top: 1px solid #edf1ef; }
.web-project-card-people span { min-width: 0; display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.web-project-card-people small { flex: 0 0 auto; color: var(--text-secondary); font-size: 10px; }
.web-project-card-people b { min-width: 0; overflow: hidden; color: var(--text-primary); font-size: 11px; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.web-project-card-bottom { min-width: 0; margin-top: 10px; padding: 9px 0 0; display: flex; flex-direction: column; border-top: 1px solid #edf1ef; }
.web-project-meta { min-height: 40px; padding: 5px 0; display: grid; grid-template-columns: 17px minmax(0, 1fr); align-items: center; gap: 7px; border-top: 1px solid #edf1ef; color: #39473f; }
.web-project-card-details .web-project-meta:first-child { border-top: 0; }
.web-project-meta > span { color: var(--brand); font-size: var(--font-size-body); }
.web-project-meta div { min-width: 0; }
.web-project-meta small, .web-project-meta strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.web-project-meta small { color: var(--text-secondary); font-size: var(--font-size-caption); }
.web-project-meta strong { margin-top: 2px; font-size: var(--font-size-caption); }
.project-build-meta { align-items: start; cursor: help; }
.project-build-meta strong { overflow: visible; text-overflow: clip; white-space: normal; line-height: 1.45; }
.web-project-progress { margin-top: 0; padding-top: 0; display: grid; grid-template-columns: auto minmax(0, 1fr) 34px; align-items: center; gap: 8px; color: var(--text-secondary); font-size: var(--font-size-caption); }
.web-project-progress progress { width: 100%; height: 6px; accent-color: var(--brand); }
.web-project-progress strong { color: var(--brand); font-size: var(--font-size-caption); text-align: right; }
.project-list-view { width: 100%; overflow-x: auto; background: #fff; }
.project-list-view table { min-width: 900px; border-collapse: collapse; }
.project-list-view table:not([data-project-list-table]) { width: 100%; }
.project-list-view th, .project-list-view td { padding: 11px 12px; border-bottom: 1px solid #e8eeeb; font-size: var(--font-size-caption); text-align: left; vertical-align: middle; }
.project-list-view th { position: sticky; top: 0; z-index: 2; color: #66756d; background: #f5f8f6; font-weight: 850; white-space: nowrap; }
.project-list-row { cursor: pointer; transition: background .14s ease, box-shadow .14s ease; }
.project-list-row:hover, .project-list-row:focus-visible { background: #f4faf7; outline: none; }
.project-list-row.risk { box-shadow: inset 3px 0 #e37366; }
.project-list-row:last-child td { border-bottom: 0; }
.project-list-time { min-width: 340px; cursor: help; }
.project-list-time strong { display: block; white-space: nowrap; line-height: 1.5; }
.project-list-identity { min-width: 250px; display: grid; grid-template-columns: 92px minmax(0, 1fr); align-items: center; gap: 12px; }
.project-list-cover { width: 92px; height: 62px; padding: 0; overflow: hidden; border: 1px solid #e1e8e4; border-radius: 8px; background: var(--surface-soft); cursor: zoom-in; }
.project-list-cover-image { width: 100%; height: 100%; display: block; object-fit: cover; }
.project-list-cover .project-image-empty { height: 100%; font-size: var(--font-size-card-title); }
.project-list-identity strong, .project-list-identity small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-list-identity strong { color: var(--text-primary); font-size: 15px; }
.project-list-title { min-width: 0; display: flex; align-items: center; gap: 7px; }
.project-list-title strong { min-width: 0; flex: 0 1 auto; }
.project-third-party-badge { flex: 0 0 auto; padding: 3px 7px; border: 1px solid #f3b8b4; border-radius: 6px; color: #be342e; background: #fce4e2; font-size: 11px; font-weight: 900; line-height: 1.2; white-space: nowrap; }
.project-list-identity small { margin-top: 5px; color: var(--text-secondary); font-size: 12px; }
.project-list-location { display: block; max-width: 190px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-list-overview { width: min(38vw, 430px); min-width: 280px; max-width: 430px; display: grid; gap: 7px; }
.project-list-overview-main { min-width: 0; display: flex; align-items: center; gap: 7px; }
.project-list-overview-main .project-list-location { min-width: 0; max-width: none; flex: 1; }
.project-list-url { min-width: 0; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 6px; color: var(--text-secondary); }
.project-list-url small { font-size: 10px; font-weight: 800; }
.project-list-url a, .project-list-url span { min-width: 0; overflow: hidden; color: var(--brand); text-overflow: ellipsis; white-space: nowrap; }
.project-list-url a:hover { text-decoration: underline; }
.project-list-time { min-width: 250px; }
.project-list-time > strong { display: block; }
.project-list-time .project-list-url { margin-top: 8px; }
.project-list-people { display: flex; flex-wrap: wrap; gap: 7px; }
.project-list-people span { display: inline-flex; min-width: 0; align-items: center; gap: 4px; padding: 3px 6px; border-radius: 5px; background: #f2f7f4; }
.project-list-people small { color: var(--text-secondary); font-size: 10px; }
.project-list-people b { max-width: 86px; overflow: hidden; color: var(--text-primary); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.project-list-progress { min-width: 118px; display: grid; grid-template-columns: minmax(68px, 1fr) 34px; align-items: center; gap: 7px; }
.project-list-progress progress { width: 100%; height: 6px; accent-color: var(--brand); }
.project-list-progress strong { color: var(--brand); font-size: var(--font-size-caption); text-align: right; }
.project-list-view table { min-width: 1180px; }
.project-list-overview { width: min(34vw, 390px); min-width: 300px; }
.project-list-view table[data-project-list-table] { table-layout: fixed; }
.project-list-view table[data-project-list-table] th, .project-list-view table[data-project-list-table] td { min-width: 0; overflow: hidden; }
.project-list-view th[data-project-list-column] { position: sticky; cursor: col-resize; }
.project-list-column-resize-handle { position: absolute; top: 0; right: -7px; z-index: 4; width: 14px; height: 100%; cursor: col-resize; touch-action: none; }
.project-list-column-resize-handle::after { position: absolute; top: 8px; bottom: 8px; left: 6px; width: 2px; border-radius: 3px; background: #bdd5c9; content: ''; }
.project-list-view th[data-project-list-column]:hover .project-list-column-resize-handle::after, .project-list-column-resizing .project-list-column-resize-handle::after { background: var(--brand); }
.project-list-column-resizing, .project-list-column-resizing * { cursor: col-resize !important; user-select: none !important; }
.project-list-view th[data-project-list-column="3"] > span { display: block; text-align: center; }
.project-critical-header-labels { margin-top: 5px; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 5px; color: #52675c; font-size: 11px; font-weight: 900; text-align: center; }
.project-list-overview-main { display: grid; grid-template-columns: auto auto minmax(110px, 1fr); gap: 7px; }
.project-list-person { min-width: 0; display: inline-flex; align-items: center; gap: 4px; padding: 3px 6px; border-radius: 5px; background: #f2f7f4; white-space: nowrap; }
.project-list-person small { color: var(--text-secondary); font-size: 11px; }
.project-list-person b { max-width: 86px; overflow: hidden; color: var(--text-primary); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.project-list-overview .project-list-people { display: none; }
.project-list-view .project-list-identity, .project-list-view .project-list-overview { width: auto; min-width: 0; max-width: none; }
.project-list-view .project-list-location { min-width: 0; max-width: none; }
.project-list-time { min-width: 0; margin-top: 1px; cursor: help; }
.project-list-time small { display: block; color: var(--muted); font-size: 11px; font-weight: 800; }
.project-list-time strong { color: var(--ink); font-size: 12px; }
.project-list-time { display: flex; align-items: center; gap: 6px; }
.project-list-time small, .project-list-time strong { display: inline; }
.project-list-view th:nth-child(3), .project-list-view td:nth-child(3) { padding-right: 5px; padding-left: 5px; text-align: center; }
.project-admission-badge, .project-critical-badge { min-width: 76px; min-height: 70px; padding: 8px 7px 7px; display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; border-radius: 9px; font-size: 11px; font-weight: 850; line-height: 1.1; text-align: center; white-space: nowrap; }
.project-admission-badge img { width: 30px; height: 30px; display: block; object-fit: contain; }
.project-critical-badge img { width: 26px; height: 26px; display: block; object-fit: contain; }
.project-admission-badge b, .project-critical-badge b { display: block; color: inherit; font: inherit; }
.project-admission-badge { min-width: 0; width: 72px; }
.project-admission-badge.green, .project-critical-badge.green { color: #087b55; background: #e4f7ee; }
.project-admission-badge.gold, .project-critical-badge.gold { color: #ad7108; background: #fff2d8; }
.project-admission-badge.red, .project-critical-badge.red { color: #c8473f; background: #fde8e6; }
.project-admission-badge.gray, .project-critical-badge.gray { color: #7b8982; background: #edf1ef; }
.project-critical-list { min-width: 0; width: 100%; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 5px; }
.project-critical-list > div { min-width: 0; display: grid; gap: 4px; }
.project-critical-list small { color: var(--muted); font-size: 10px; font-weight: 800; text-align: center; }
.project-critical-list .project-critical-badge { width: 100%; min-width: 0; min-height: 66px; padding-inline: 2px; }
.project-insights { display: grid; gap: 12px; }
.project-insight-card { overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); box-shadow: 0 4px 16px rgba(18,42,31,.03); }
.project-insight-card > header { min-height: 51px; padding: 0 15px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--line); }
.project-insight-card > header h2 { margin: 0; font-size: var(--font-size-card-title); }
.project-insight-card > header span { color: var(--text-secondary); font-size: var(--font-size-caption); }
.project-activity-list, .project-risk-list { padding: 4px 14px; }
.project-activity-list article { min-height: 61px; display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; gap: 8px; align-items: center; border-bottom: 1px solid #edf1ef; }
.project-activity-list article:last-child, .project-risk-list article:last-child { border-bottom: 0; }
.project-activity-list i, .project-risk-list i { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 7px; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-style: normal; font-weight: 900; }
.project-activity-list strong, .project-risk-list strong { display: block; overflow: hidden; font-size: var(--font-size-small); text-overflow: ellipsis; white-space: nowrap; }
.project-activity-list p, .project-risk-list p { margin: 4px 0 0; color: var(--text-secondary); font-size: var(--font-size-caption); line-height: 1.4; }
.project-activity-list time { color: #8b9690; font-size: var(--font-size-caption); white-space: nowrap; }
.project-risk-list article { min-height: 60px; display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 8px; align-items: center; border-bottom: 1px solid #edf1ef; }
.project-risk-list i { color: var(--danger); background: var(--danger-soft); }
.project-insight-empty { margin: 0; padding: 20px 0; color: var(--text-secondary); font-size: var(--font-size-small); text-align: center; }
.project-quick-filter-card > header button { border: 0; color: var(--brand); background: transparent; font-size: var(--font-size-caption); }
.project-quick-filter-card > div { padding: 7px 12px 11px; display: grid; gap: 3px; }
.project-quick-filter-card > div button { min-height: 34px; padding: 0 8px; display: flex; align-items: center; justify-content: space-between; border: 0; border-radius: 7px; color: var(--text-primary); background: transparent; font-size: var(--font-size-small); text-align: left; }
.project-quick-filter-card > div button:hover, .project-quick-filter-card > div button.active { color: var(--brand); background: var(--brand-soft); }
.project-quick-filter-card > div b { min-width: 24px; padding: 2px 6px; border-radius: 99px; color: var(--text-secondary); background: var(--surface-soft); font-size: var(--font-size-caption); text-align: center; }
.project-quick-filter-card > div button.active b { color: #fff; background: var(--brand); }

.project-hover-card { position: fixed; z-index: 10000; pointer-events: none; border: 1px solid rgba(255,255,255,.7); border-radius: 12px; background: #fff; box-shadow: 0 18px 50px rgba(9,30,20,.24); animation: project-hover-in .12s ease-out; }
.project-hover-card:popover-open { inset: auto; margin: 0; }
.project-hover-card.image-preview { width: min(640px, calc(100vw - 32px)); height: min(480px, calc(100vh - 32px)); padding: 8px; background: #101713; }
.project-hover-card.image-preview img { width: 100%; height: 100%; display: block; border-radius: 8px; object-fit: contain; }
.project-hover-card.text-preview { width: min(520px, calc(100vw - 24px)); max-height: calc(100vh - 24px); padding: 13px 15px; overflow: hidden; }
.project-hover-card.text-preview strong { display: block; color: var(--brand); font-size: var(--font-size-caption); }
.project-hover-card.text-preview p { max-height: calc(100vh - 82px); margin: 7px 0 0; overflow: auto; color: #40514a; font-size: var(--font-size-caption); line-height: 1.7; overflow-wrap: anywhere; white-space: pre-wrap; }
.project-hover-card.auto-overflow-preview p { color: var(--ink); }
@keyframes project-hover-in { from { opacity: 0; transform: translateY(4px) scale(.985); } }

.project-image-dialog { width: min(1180px, calc(100vw - 48px)); max-width: none; height: min(820px, calc(100vh - 48px)); max-height: none; padding: 24px; overflow: hidden; border: 0; border-radius: 16px; background: rgba(9,16,12,.96); box-shadow: 0 30px 90px rgba(0,0,0,.4); }
.project-image-dialog[open] { display: grid; place-items: center; }
.project-image-dialog::backdrop { background: rgba(4,10,7,.78); backdrop-filter: blur(4px); }
.project-image-dialog > button { position: absolute; top: 14px; right: 14px; z-index: 2; width: 40px; height: 40px; border: 1px solid rgba(255,255,255,.2); border-radius: 50%; color: #fff; background: rgba(0,0,0,.45); font-size: var(--font-size-section); }
.project-image-dialog > img { width: auto; height: auto; min-width: 0; min-height: 0; max-width: 100%; max-height: 100%; display: block; object-fit: contain; transform-origin: center; will-change: transform; cursor: zoom-in; user-select: none; touch-action: none; -webkit-user-drag: none; }
.project-image-dialog > img.can-pan { cursor: grab; }
.project-image-dialog > img.dragging { cursor: grabbing; }
.project-detail-url { display: block; max-width: 100%; overflow: hidden; color: var(--brand); font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.project-detail-url:hover { text-decoration: underline; }

.project-detail-dialog { position: fixed; inset: 0; width: min(1500px, calc(100vw - 40px)); max-width: none; height: min(1000px, calc(100vh - 28px)); max-height: none; margin: auto; padding: 0; overflow: visible; border: 0; border-radius: 16px; box-shadow: 0 28px 80px rgba(6,19,13,.28); transform-origin: center; }
.project-detail-dialog[open] { display: grid; grid-template-rows: auto minmax(0, 1fr); animation: project-detail-dialog-in .2s cubic-bezier(.2,.75,.25,1); }
.project-detail-dialog[data-presentation="drawer"] { inset: 0 0 0 auto; width: min(var(--project-detail-drawer-width, 1420px), calc(100vw - 8px)); height: 100vh; margin: 0; border-radius: 16px 0 0 16px; transform-origin: right center; }
.project-detail-dialog[open][data-presentation="drawer"] { animation-name: project-detail-drawer-in; }
.project-detail-dialog.is-resizing { transition: none; user-select: none; }
body.project-detail-drawer-resizing { cursor: ew-resize; user-select: none; }
.project-detail-resize-handle { display: none; }
.project-detail-dialog[data-presentation="drawer"] .project-detail-resize-handle { position: absolute; z-index: 40; top: 0; bottom: 0; left: 0; width: 12px; display: block; cursor: ew-resize; touch-action: none; }
.project-detail-dialog[data-presentation="drawer"] .project-detail-resize-handle::before { content: ""; position: absolute; top: 50%; left: 3px; width: 4px; height: 72px; border-radius: 99px; background: rgba(23,107,76,.3); box-shadow: 0 0 0 1px rgba(255,255,255,.7); transform: translateY(-50%); transition: background .16s ease, height .16s ease; }
.project-detail-dialog[data-presentation="drawer"] .project-detail-resize-handle:hover::before,
.project-detail-dialog[data-presentation="drawer"].is-resizing .project-detail-resize-handle::before { height: 110px; background: var(--brand); }
.project-detail-dialog::backdrop { background: rgba(9,20,15,.55); backdrop-filter: blur(2px); }
.project-detail-shell-header { position: relative; z-index: 30; min-width: 0; min-height: 58px; padding: 10px 16px 10px 22px; display: flex; align-items: center; justify-content: space-between; gap: 18px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.97); box-shadow: 0 5px 16px rgba(18,55,37,.07); backdrop-filter: blur(12px); }
.project-detail-shell-header h2 { min-width: 0; margin: 0; overflow: hidden; color: var(--ink); font-size: var(--font-size-section); text-overflow: ellipsis; white-space: nowrap; }
.project-detail-shell-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 8px; }
.project-detail-load-status { min-width: 0; display: flex; align-items: center; gap: 7px; color: #5a7366; font-size: 11px; font-weight: 750; white-space: nowrap; }
.project-detail-load-status:empty { display: none; }
.project-detail-load-status-label { overflow: hidden; text-overflow: ellipsis; }
.project-detail-load-status progress { width: 68px; height: 5px; accent-color: var(--brand); }
.project-detail-load-status b { color: var(--brand); font-size: 11px; }
.project-detail-shell-edit-actions { display: flex; align-items: center; gap: 8px; }
.project-detail-shell-edit-actions:empty { display: none; }
.project-detail-shell-header .icon-button { flex: 0 0 38px; width: 38px; height: 38px; border: 1px solid #d4e0da; border-radius: 9px; color: var(--muted); background: #fff; font-size: 24px; line-height: 1; }
.project-detail-shell-header .icon-button:hover { color: #fff; border-color: var(--brand); background: var(--brand); }
.project-detail-shell-header .project-detail-refresh-button { font-size: 22px; font-weight: 800; }
.project-detail-shell-header .project-detail-refresh-button.is-loading { color: #fff; border-color: var(--brand); background: var(--brand); pointer-events: none; animation: project-detail-refresh-spin .7s linear infinite; }
.project-detail-modal-content { position: relative; min-height: 0; padding: 22px; overflow-y: auto; background: #fff; scrollbar-gutter: stable; }
.project-detail-back-to-top { position: absolute; right: 26px; bottom: 26px; z-index: 35; min-height: 40px; padding: 0 13px; display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--brand); border-radius: 999px; color: #fff; background: var(--brand); box-shadow: 0 8px 20px rgba(11, 82, 57, .26); cursor: pointer; transition: transform .16s ease, box-shadow .16s ease, background .16s ease; }
.project-detail-back-to-top:hover { background: #0f6548; box-shadow: 0 11px 24px rgba(11, 82, 57, .32); transform: translateY(-1px); }
.project-detail-back-to-top span { font-size: 17px; font-weight: 800; line-height: 1; }
.project-detail-back-to-top small { color: inherit; font-size: 12px; font-weight: 750; }
.project-detail-back-to-top.hidden { display: none; }
@keyframes project-detail-dialog-in {
  from { opacity: 0; transform: translateY(12px) scale(.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes project-detail-drawer-in {
  from { opacity: .6; transform: translateX(54px); }
  to { opacity: 1; transform: translateX(0); }
}
.project-detail-presentation-toggle { position: absolute; top: 10px; left: 0; z-index: 45; min-height: 38px; padding: 0 10px; border: 1px solid rgba(255,255,255,.58); border-radius: 9px; color: #fff; background: rgba(8,20,14,.72); box-shadow: 0 5px 16px rgba(8,20,14,.16); backdrop-filter: blur(7px); font-size: var(--font-size-caption); font-weight: 800; white-space: nowrap; transform: translateX(-100%); }
.project-detail-presentation-toggle:hover { background: rgba(13,104,72,.92); }
@keyframes project-detail-refresh-spin { to { transform: rotate(360deg); } }
.project-detail-loading { min-height: 480px; display: grid; place-items: center; color: var(--muted); font-size: var(--font-size-caption); }
.project-detail-inline-loading, .project-detail-deferred { min-height: 118px; display: grid; place-content: center; justify-items: center; gap: 8px; color: var(--muted); text-align: center; }
.project-detail-deferred { min-height: 320px; }
.project-detail-inline-loading .modal-submit-spinner, .project-detail-deferred .modal-submit-spinner { border-color: rgba(14,113,76,.2); border-top-color: var(--brand); }
.project-detail-deferred strong { color: var(--ink); }
.project-detail-deferred small { font-size: 12px; }
.project-detail-head { position: relative; }
.project-detail-head.editing { padding: 12px; border: 1px solid #b9dfcf; border-radius: 13px; background: #f7fcf9; }
.project-detail-identity { min-width: 0; display: grid; grid-template-columns: minmax(360px, 39%) minmax(0, 1fr); gap: 28px; align-items: start; }
.project-detail-render { position: relative; min-width: 0; }
.project-detail-cover { width: 100%; height: auto; min-height: 0; padding: 0; overflow: hidden; border: 0; border-radius: 11px; background: var(--surface-soft); cursor: zoom-in; }
.project-detail-cover-image { width: 100%; height: auto; display: block; object-fit: contain; }
.project-detail-cover .project-image-empty { width: 100%; aspect-ratio: 16 / 9; }
.project-render-expand { position: absolute; top: 10px; right: 10px; z-index: 3; min-height: 32px; padding: 0 11px; border: 1px solid rgba(255,255,255,.58); border-radius: 8px; color: #fff; background: rgba(8,20,14,.72); box-shadow: 0 5px 16px rgba(8,20,14,.16); backdrop-filter: blur(7px); }
.project-render-expand:hover { background: rgba(13,104,72,.92); }
.project-render-gallery { margin-top: 9px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.project-render-thumb { position: relative; min-width: 0; aspect-ratio: 16 / 10; border: 2px solid transparent; border-radius: 8px; background: var(--surface-soft); }
.project-render-thumb.active { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(14,113,76,.1); }
.project-render-thumb > button:first-child { width: 100%; height: 100%; padding: 0; overflow: hidden; border: 0; border-radius: 6px; background: transparent; }
.project-render-thumb-image { width: 100%; height: 100%; display: block; border-radius: 6px; object-fit: cover; }
.project-render-thumb .project-image-empty { width: 100%; height: 100%; }
.project-render-remove { position: absolute; top: -7px; right: -7px; z-index: 2; width: 23px; height: 23px; padding: 0; border: 2px solid #fff; border-radius: 50%; color: #fff; background: #d9544d; line-height: 18px; }
.project-render-upload { min-height: 68px; display: grid; place-items: center; border: 1px dashed #8bc6ad; border-radius: 8px; color: var(--brand); background: #f3fbf7; cursor: pointer; font-size: var(--font-size-caption); font-weight: 800; text-align: center; }
.project-render-upload:hover { border-color: var(--brand); background: #eaf8f1; }
.project-render-upload input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.project-detail-title { min-width: 0; }
.project-detail-title-row { min-height: 34px; display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.project-detail-title h2 { margin: 0; font-size: var(--font-size-section); letter-spacing: -.02em; }
.project-detail-name-input { width: min(520px, 100%); min-width: 180px; height: 40px; padding: 5px 10px; border: 1px solid #8fc8ae; border-radius: 8px; color: var(--ink); background: #fff; font-size: var(--font-size-section); font-weight: 850; letter-spacing: -.02em; outline: none; }
.project-detail-name-input:focus { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(14,113,76,.1); }
.project-detail-tags { margin-top: 5px; display: flex; flex-wrap: wrap; gap: 7px; }
.project-detail-progress { width: 100%; margin-top: 10px; display: grid; grid-template-columns: auto minmax(120px, 1fr) 38px; align-items: center; gap: 10px; color: var(--muted); font-size: var(--font-size-caption); }
.project-detail-progress progress { width: 100%; height: 7px; accent-color: var(--brand); }
.project-detail-progress strong { color: var(--ink); font-size: var(--font-size-caption); }
.project-detail-actions { display: flex; align-items: center; gap: 9px; }
.project-detail-actions .icon-button { color: var(--muted); background: transparent; font-size: var(--font-size-section); }
.project-detail-info { margin-top: 10px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--line); border-radius: 11px; background: #fff; }
.project-detail-fact-column { min-width: 0; display: grid; grid-auto-rows: 1fr; border-right: 1px solid var(--line); }
.project-detail-fact-column:last-child { border-right: 0; }
.project-detail-metric { min-width: 0; min-height: 56px; padding: 8px 10px; display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 7px; align-items: start; border-bottom: 1px solid var(--line); background: #fff; }
.project-detail-fact-column .project-detail-metric:last-child { border-bottom: 0; }
.project-detail-metric > span { color: #22a66e; font-size: var(--font-size-card-title); }
.project-detail-metric small, .project-detail-metric strong { display: block; }
.project-detail-metric small { color: var(--muted); font-size: var(--font-size-caption); }
.project-detail-metric strong { margin-top: 4px; overflow: hidden; font-size: var(--font-size-caption); line-height: 1.4; text-overflow: ellipsis; }
.project-detail-time-metric strong { white-space: nowrap; }
.project-detail-time-metric .project-detail-time-value { display: flex; flex-wrap: wrap; gap: 0 4px; overflow: visible; text-overflow: clip; white-space: normal; }
.project-detail-time-metric .project-detail-time-value > span { white-space: nowrap; }
.module-row-actions .project-return-revoke { flex-basis: 100%; justify-content: center; }
.project-detail-metric.editable, .project-time-strip p.editable { background: #fbfefc; }
.project-inline-input { width: 100%; min-width: 0; height: 34px; margin-top: 4px; padding: 6px 8px; border: 1px solid #a8d7c3; border-radius: 7px; color: var(--ink); background: #fff; font-size: var(--font-size-caption); outline: none; }
.project-inline-input:focus { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(14,113,76,.1); }
.project-contract-editor { margin-top: 4px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.project-contract-editor label { min-width: 0; display: grid; gap: 3px; }
.project-contract-editor label > span { color: var(--muted); font-size: 10px; }
.project-contract-editor .project-inline-input { margin-top: 0; }
.project-contract-editor > small { grid-column: 1 / -1; color: #718078; line-height: 1.35; }
.project-detail-metric .project-date-range-field { margin-top: 4px; gap: 5px; }
.project-detail-metric .project-date-range-field.compact .project-create-range-inputs { grid-template-columns: minmax(0, 1fr); gap: 3px; }
.project-detail-metric .project-date-range-field.compact .project-create-range-inputs b { padding-left: 2px; text-align: left; font-size: 10px; line-height: 1; }
.project-detail-metric .project-create-range-inputs input { min-width: 0; min-height: 32px; padding: 0 5px; border-color: #a8d7c3; font-size: 11px; }
.project-detail-metric .project-create-suggestions { display: flex; margin-top: 5px; }
.project-detail-metric .project-create-suggestions b { flex-basis: 100%; }
.project-detail-metric .project-create-suggestions button { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-history-empty { margin-top: 4px; }
@media (min-width: 1181px) {
  .project-detail-info.editing { grid-template-columns: minmax(170px, .85fr) minmax(190px, 1fr) minmax(310px, 1.55fr); }
  .project-detail-info.editing .project-detail-fact-column { grid-auto-rows: minmax(56px, auto); align-content: start; }
  .project-detail-info.editing .project-date-range-field.compact .project-create-range-inputs { grid-template-columns: minmax(0, 1fr) 18px minmax(0, 1fr); gap: 4px; }
  .project-detail-info.editing .project-date-range-field.compact .project-create-range-inputs b { padding-left: 0; text-align: center; line-height: normal; }
  .project-detail-info.editing .project-contract-editor { grid-template-columns: 1fr; }
  .project-detail-info.editing .project-contract-editor > small { grid-column: auto; }
}
.project-time-strip, .project-stage-path { min-width: 0; margin: 0; padding: 16px; border: 1px solid var(--line); border-radius: 11px; }
.project-time-strip > div { height: 100%; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(72px, 1fr)); }
.project-time-strip p { margin: 0; padding: 12px 14px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.project-time-strip p:nth-child(2n) { border-right: 0; }
.project-time-strip p:nth-last-child(-n + 2) { border-bottom: 0; }
.project-time-strip small, .project-time-strip strong { display: block; }
.project-time-strip small { color: var(--muted); font-size: var(--font-size-caption); }
.project-time-strip strong { margin-top: 5px; font-size: var(--font-size-caption); line-height: 1.5; }
.project-stage-path { position: relative; margin-top: 18px; display: block; overflow: visible; }
.project-stage-path h3 { margin: 0 0 14px; display: flex; align-items: center; gap: 6px; color: var(--brand); font-size: var(--font-size-caption); }
.project-stage-path h3 small { margin-left: auto; color: var(--muted); font-weight: 500; }
.project-stage-track { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); align-content: center; gap: 10px; }
.project-stage-node { position: relative; min-width: 0; }
.project-stage-node:not(:last-child)::after { content: "→"; position: absolute; top: 8px; right: -9px; z-index: 1; color: #8b9992; font-size: var(--font-size-card-title); font-weight: 400; }
.project-stage-step { position: relative; min-width: 0; display: grid; justify-items: center; gap: 7px; color: var(--muted); font-size: var(--font-size-caption); text-align: center; cursor: help; }
.project-stage-path.editing .project-stage-step { width: 100%; padding: 3px; border: 0; border-radius: 8px; background: transparent; cursor: pointer; }
.project-stage-path.editing .project-stage-step:hover { background: #eff8f3; }
.project-stage-step::after { display: none !important; }
.project-stage-step i { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; color: #7d8983; background: #edf1ef; font-style: normal; font-weight: 900; }
.project-stage-step.done i { color: #fff; background: #18a36b; }
.project-stage-step.active { color: var(--ink); font-weight: 850; }
.project-stage-step.active i { color: #fff; background: #f0a11d; box-shadow: 0 0 0 4px #fff4df; }
.project-stage-path.editing { display: block; padding: 16px; background: #fbfefc; }
.project-stage-workbench-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }
.project-stage-workbench-head h3 { margin: 0; font-size: var(--font-size-card-title); }
.project-stage-workbench-head p { margin: 5px 0 0; color: var(--muted); font-size: var(--font-size-caption); }
.project-stage-live-summary { display: flex; gap: 8px; }
.project-stage-live-summary > span { min-width: 150px; padding: 8px 11px; display: grid; gap: 3px; border: 1px solid #d8e8e0; border-radius: 8px; color: var(--muted); background: #fff; font-size: var(--font-size-caption); }
.project-stage-live-summary strong { overflow: hidden; color: var(--brand); text-overflow: ellipsis; white-space: nowrap; }
.project-stage-picker { margin-top: 0; grid-template-columns: repeat(8, minmax(0, 1fr)); align-items: start; gap: 10px; }
.project-stage-path.editing .project-stage-picker .project-stage-step { min-height: 64px; padding: 6px 4px; align-content: center; border: 1px solid transparent; }
.project-stage-path.editing .project-stage-picker .project-stage-step.selected { border-color: #89c9ad; background: #edf9f3; box-shadow: 0 0 0 3px rgba(14,113,76,.07); }
.project-stage-picker .project-stage-step small { color: var(--muted); font-size: var(--font-size-caption); font-weight: 600; }
.project-stage-quick-actions { margin-top: 14px; padding: 10px; display: flex; align-items: center; flex-wrap: wrap; gap: 8px; border-radius: 8px; background: #f0f6f3; }
.project-stage-quick-actions > span { margin-right: 3px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.project-stage-warnings { margin-top: 12px; padding: 8px 11px; border: 1px solid #f0d3a2; border-radius: 8px; color: #8a5b0a; background: #fff8e9; }
.project-stage-warnings p { margin: 3px 0; font-size: var(--font-size-caption); line-height: 1.55; }
.project-stage-editor-panel { margin-top: 14px; overflow: hidden; border: 1px solid #d8e8e0; border-radius: 10px; background: #fff; }
.project-stage-editor-title { min-height: 64px; padding: 11px 14px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border-bottom: 1px solid #e5eee9; background: #f7fbf9; }
.project-stage-editor-title small, .project-stage-editor-title strong { display: block; }
.project-stage-editor-title small { color: var(--muted); font-size: var(--font-size-caption); }
.project-stage-editor-title strong { margin-top: 3px; color: var(--ink); font-size: var(--font-size-card-title); }
.project-stage-status-toggle { min-height: 34px; padding: 0 12px; display: inline-flex; align-items: center; gap: 7px; border: 1px solid #e2b765; border-radius: 99px; color: #8b5b02; background: #fff7e8; font-weight: 800; }
.project-stage-status-toggle i, .project-substage-status i { width: 9px; height: 9px; border-radius: 50%; background: #e8a12a; }
.project-stage-status-toggle.done { color: #0d724b; border-color: #8bc8ad; background: #edf9f3; }
.project-stage-status-toggle.done i, .project-substage-status.done i { background: #18a36b; }
.project-substage-head { padding: 13px 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.project-substage-head strong, .project-substage-head small { display: block; }
.project-substage-head strong { color: var(--ink); font-size: var(--font-size-small); }
.project-substage-head small { margin-top: 3px; color: var(--muted); font-size: var(--font-size-caption); }
.project-substage-list { padding: 0 14px 14px; display: grid; gap: 8px; }
.project-substage-row { min-width: 0; display: grid; grid-template-columns: 112px minmax(0, 1fr) auto; align-items: center; gap: 9px; }
.project-substage-status { min-height: 36px; padding: 0 10px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid #ead2a5; border-radius: 7px; color: #8b5b02; background: #fff9ed; }
.project-substage-status.done { color: #0d724b; border-color: #a9d6c2; background: #f0faf5; }
.project-substage-row > input { width: 100%; min-width: 0; height: 36px; padding: 6px 9px; border: 1px solid #cbdcd4; border-radius: 7px; color: var(--ink); background: #fff; outline: none; }
.project-substage-row > input:focus { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(14,113,76,.09); }
.project-substage-actions { display: flex; gap: 5px; }
.project-substage-actions button { width: 34px; height: 34px; padding: 0; border: 1px solid #d7e2dc; border-radius: 7px; color: var(--muted); background: #fff; }
.project-substage-actions button:hover:not(:disabled) { color: var(--brand); border-color: #9acdb6; background: #f1faf6; }
.project-substage-actions button.danger { color: #bf4c46; }
.project-substage-empty { min-height: 62px; display: grid; place-items: center; border: 1px dashed #cadbd3; border-radius: 8px; color: var(--muted); background: #fbfdfc; font-size: var(--font-size-caption); text-align: center; }
.project-stage-node.popover-open { z-index: 30; }
.project-stage-popover { position: absolute; top: calc(100% + 10px); left: 50%; z-index: 40; width: min(440px, calc(100vw - 140px)); max-height: 390px; overflow-y: auto; border: 1px solid #c9ddd3; border-radius: 12px; background: #fff; box-shadow: 0 20px 48px rgba(8,35,22,.2); transform: translateX(-50%); text-align: left; }
.project-stage-popover.edge-start { left: 0; transform: none; }
.project-stage-popover.edge-end { right: 0; left: auto; transform: none; }
.project-stage-popover > header { position: sticky; top: 0; z-index: 2; min-height: 58px; padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid #e3ece7; background: rgba(247,251,249,.97); backdrop-filter: blur(8px); }
.project-stage-popover > header small, .project-stage-popover > header strong { display: block; }
.project-stage-popover > header small { color: var(--muted); font-size: var(--font-size-caption); }
.project-stage-popover > header strong { margin-top: 2px; color: var(--ink); font-size: var(--font-size-card-title); }
.project-stage-popover > header .icon-button { color: var(--muted); background: transparent; font-size: var(--font-size-card-title); }
.project-stage-popover-actions { padding: 12px 12px 0; display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.project-stage-popover .project-stage-warnings { margin: 10px 12px 0; }
.project-stage-popover .project-substage-head { padding: 12px; }
.project-stage-popover .project-substage-list { padding: 0 12px 12px; }
.project-stage-popover > footer { position: sticky; bottom: 0; z-index: 2; padding: 10px 12px; display: flex; align-items: center; justify-content: flex-end; gap: 7px; border-top: 1px solid #e3ece7; background: rgba(255,255,255,.97); backdrop-filter: blur(8px); }
.project-detail-tabs { margin-top: 16px; display: flex; gap: 24px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.96); }
.project-detail-tabs button { min-height: 44px; padding: 0 6px; border: 0; border-bottom: 2px solid transparent; color: var(--muted); background: transparent; font-size: var(--font-size-caption); font-weight: 800; }
.project-detail-tabs button.active { color: var(--brand); border-bottom-color: var(--brand); }
.project-detail-tabs button.project-batch-export-button,
.project-detail-tabs button.project-batch-import-button { min-height: 34px; margin: 5px 0; padding: 0 16px; border: 1px solid var(--brand); border-radius: 8px; box-shadow: 0 4px 12px rgba(18,112,78,.12); }
.project-detail-tabs button.project-inline-edit-button { min-height: 34px; margin: 5px 0 5px auto; padding: 0 14px; border: 1px solid #b8d4c7; border-radius: 8px; color: var(--brand); background: #fff; font-size: var(--font-size-caption); font-weight: 800; }
.project-detail-tabs button.project-inline-edit-button.primary { margin-left: -16px; color: #fff; border-color: var(--brand); background: var(--brand); }
.project-detail-tabs button.project-business-info-edit-button { min-height: 34px; margin: 5px 0 5px auto; padding: 0 14px; border: 1px solid #b8d4c7; border-radius: 8px; color: var(--brand); background: #fff; font-size: var(--font-size-caption); font-weight: 800; }
.project-detail-tabs button.project-business-info-edit-button:hover { color: #fff; border-color: var(--brand); background: var(--brand); }
.project-detail-tabs button.project-business-info-edit-button + .project-batch-export-button { margin-left: 0; }
.project-detail-tabs button.project-batch-export-button { margin-left: auto; color: var(--brand); background: #fff; }
.project-detail-tabs button.project-batch-export-button:hover { color: #fff; background: var(--brand); }
.project-detail-tabs button.project-batch-import-button { color: #fff; background: var(--brand); box-shadow: 0 4px 12px rgba(18,112,78,.16); }
.project-detail-tabs button.project-batch-import-button:hover { background: #0f6043; }
.project-detail-tab-body { padding-top: 4px; }
.project-detail-tabs { position: sticky; top: 0; z-index: 22; margin-top: 0; box-shadow: 0 8px 15px rgba(18,55,37,.08); }
.project-basic-tab { min-width: 0; }
.project-basic-tab .project-detail-head { padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: #fbfdfc; box-shadow: 0 8px 20px rgba(18,55,37,.08); }
.project-basic-tab .project-stage-path { margin-top: 16px; background: #fff; }
.project-basic-actions { margin-top: 16px; display: flex; justify-content: flex-end; gap: 8px; }
.project-detail-workspace { min-width: 0; display: grid; grid-template-columns: minmax(260px, 310px) minmax(0, 1fr); align-items: start; gap: 18px; }
.project-basic-sidebar { position: sticky; top: 0; min-width: 0; max-height: calc(100vh - 96px); overflow: auto; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: #fbfdfc; box-shadow: 0 8px 20px rgba(18,55,37,.08); scrollbar-gutter: stable; }
.project-basic-sidebar .project-detail-head { margin: 0; }
.project-basic-sidebar .project-detail-identity { grid-template-columns: 1fr; gap: 14px; }
.project-basic-sidebar .project-detail-title h2 { font-size: var(--font-size-card-title); }
.project-basic-sidebar .project-detail-info { grid-template-columns: 1fr; }
.project-basic-sidebar .project-detail-fact-column { border-right: 0; border-bottom: 1px solid var(--line); }
.project-basic-sidebar .project-detail-fact-column:last-child { border-bottom: 0; }
.project-basic-sidebar .project-detail-metric { padding: 9px 0; }
.project-basic-sidebar .project-stage-path { margin-top: 14px; padding: 12px; }
.project-basic-sidebar .project-stage-track { display: flex; overflow-x: auto; padding: 3px; }
.project-basic-sidebar .project-stage-node { flex: 0 0 104px; }
.project-basic-sidebar .project-stage-node::after { display: none; }
.project-detail-main-pane { min-width: 0; }
.project-detail-main-pane > .project-detail-tabs { position: sticky; top: 0; z-index: 22; margin-top: 0; box-shadow: 0 8px 15px rgba(18,55,37,.08); }
.project-execution-grid { --project-execution-tabs-offset: 44px; --project-execution-header-offset: 104px; --project-execution-table-header-offset: 174px; }
.project-execution-sticky-tabs { top: var(--project-execution-tabs-offset); z-index: 19; }
.project-execution-grid > .project-data-module-header { position: sticky; top: var(--project-execution-header-offset); z-index: 18; }
.project-execution-grid .detail-wide-table th { position: sticky; top: var(--project-execution-table-header-offset); z-index: 17; }
.project-module-group-actions { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.project-module-category-row td { padding: 0 !important; border-bottom: 1px solid #dce9e2 !important; background: #f2f8f5; }
.project-module-category-row button { width: 100%; min-height: 42px; padding: 8px 13px; display: flex; align-items: center; gap: 9px; border: 0; color: #315443; background: transparent; text-align: left; cursor: pointer; }
.project-module-category-row button:hover { background: #e7f3ec; }
.project-module-category-row button > span { width: 18px; color: var(--brand); font-size: 20px; font-weight: 900; text-align: center; }
.project-module-category-row strong { color: #234a37; font-size: var(--font-size-caption); }
.project-module-category-row small { padding: 2px 7px; border-radius: 999px; color: #4d7561; background: #deeee5; font-size: 11px; font-weight: 800; }
.project-module-category-row em { margin-left: auto; color: var(--muted); font-size: 11px; font-style: normal; }
.project-module-purpose-row td { padding: 9px 13px !important; border-top: 2px solid #d7d5b8 !important; border-bottom: 1px solid #dce9e2 !important; background: #f8f6e8; }
.project-module-purpose-row strong { color: #6d651f; font-size: var(--font-size-small); }
.project-module-purpose-row small { margin-left: 8px; color: #5c7c6b; font-size: 11px; font-weight: 800; }
.project-inline-usage-purpose-select { min-width: 76px; }
.project-execution-log-card { display: grid; gap: 14px; }
.project-execution-log-card > header { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.project-execution-log-card > header h2 { margin: 0; color: var(--ink); font-size: var(--font-size-card-title); }
.project-execution-log-card > header h2 small { margin-left: 7px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 700; }
.project-execution-log-card > header p { max-width: 760px; margin: 4px 0 0; color: var(--muted); font-size: var(--font-size-caption); line-height: 1.55; }
.project-execution-log-list { display: grid; gap: 10px; }
.project-execution-log-pager { display: flex; align-items: center; justify-content: flex-end; gap: 10px; padding-top: 2px; }
.project-execution-log-pager > span { color: var(--muted); font-size: var(--font-size-caption); font-weight: 750; }
.project-execution-log-entry { padding: 14px; border: 1px solid #dbe8e1; border-left: 4px solid var(--brand); border-radius: 10px; background: #fbfdfc; }
.project-execution-log-entry > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.project-execution-log-entry h3 { display: inline; margin: 0 0 0 8px; color: var(--ink); font-size: var(--font-size-small); }
.project-execution-log-entry p { margin: 6px 0 0; color: var(--muted); font-size: var(--font-size-caption); }
.project-execution-log-entry time { flex: 0 0 auto; color: var(--muted); font-size: var(--font-size-caption); white-space: nowrap; }
.project-execution-log-kind { display: inline-flex; align-items: center; min-height: 22px; padding: 0 8px; border-radius: 999px; color: #176c4b; background: #e5f5ec; font-size: 11px; font-weight: 850; }
.project-execution-log-kind.create { color: #176c4b; background: #e5f5ec; }
.project-execution-log-kind.delete { color: #b34035; background: #fff0ee; }
.project-execution-log-kind.update { color: #8a6110; background: #fff6df; }
.project-execution-log-entry > dl { display: flex; flex-wrap: wrap; gap: 5px 18px; margin: 12px 0; }
.project-execution-log-entry > dl div { display: inline-flex; gap: 5px; min-width: 0; }
.project-execution-log-entry dt { color: var(--muted); font-size: var(--font-size-caption); }
.project-execution-log-entry dd { margin: 0; color: var(--ink); font-size: var(--font-size-caption); }
.project-execution-log-deleted-record { padding: 11px 12px; border: 1px solid #efc8c2; border-radius: 8px; background: #fff7f5; }
.project-execution-log-deleted-record h4 { margin: 0 0 9px; color: #a94236; font-size: var(--font-size-small); }
.project-execution-log-deleted-record > p { margin: 0; color: #89534b; font-size: var(--font-size-caption); line-height: 1.55; }
.project-execution-log-deleted-record dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px 14px; margin: 0; }
.project-execution-log-deleted-record dl div { min-width: 0; }
.project-execution-log-deleted-record dt { color: #9b675f; font-size: 11px; }
.project-execution-log-deleted-record dd { margin: 2px 0 0; color: #542c26; overflow-wrap: anywhere; }
.project-execution-log-changes { display: grid; gap: 6px; padding: 10px 12px; border-radius: 8px; background: #f2f8f5; }
.project-execution-log-changes > div { display: grid; grid-template-columns: minmax(100px, 180px) minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 8px; color: var(--ink); font-size: var(--font-size-caption); }
.project-execution-log-changes strong { color: #376351; }
.project-execution-log-changes span { min-width: 0; color: #9a5a52; overflow-wrap: anywhere; }
.project-execution-log-changes i { color: var(--muted); font-style: normal; font-weight: 800; }
.project-execution-log-changes b { min-width: 0; color: #176c4b; overflow-wrap: anywhere; }
.project-execution-log-no-change { margin: 0; color: var(--muted); font-size: var(--font-size-caption); line-height: 1.5; }
.project-detail-delete-zone { margin-top: 24px; padding: 16px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border: 1px solid #efd0ca; border-radius: 10px; background: #fff8f6; }
.project-detail-delete-zone > div { min-width: 0; display: grid; gap: 4px; }
.project-detail-delete-zone strong { color: var(--danger); font-size: var(--font-size-caption); }
.project-detail-delete-zone span { color: var(--muted); font-size: var(--font-size-caption); }
.project-detail-delete-zone .button { flex: 0 0 auto; }
.project-stage-path h3 { display: flex; align-items: center; gap: 8px; }
.project-stage-path-actions { margin-left: auto; display: inline-flex; gap: 7px; }
.project-critical-panel { margin-top: 16px; padding: 16px; border: 1px solid #d9e7df; border-radius: 11px; background: #fbfefc; }
.project-critical-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.project-critical-panel h3 { margin: 0; color: var(--ink); font-size: var(--font-size-card-title); }
.project-critical-panel p { margin: 5px 0 0; color: var(--muted); font-size: var(--font-size-caption); }
.project-critical-editor { margin-top: 14px; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; }
.project-critical-editor > label { min-width: 0; display: grid; gap: 6px; padding: 10px; border: 1px solid #e1ebe5; border-radius: 8px; background: #fff; }
.project-critical-editor > label > span { color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.project-critical-editor select { width: 100%; min-height: 34px; border: 1px solid #bcd3c5; border-radius: 6px; color: var(--ink); background: #fff; font-size: var(--font-size-caption); font-weight: 750; }
.project-critical-editor textarea { width: 100%; min-height: 52px; resize: vertical; border: 1px solid #cfe0d6; border-radius: 6px; padding: 6px 7px; color: var(--ink); background: #fff; font: inherit; font-size: var(--font-size-caption); line-height: 1.4; }
.project-critical-editor .project-admission-editor { justify-items: center; }
.project-critical-editor .project-admission-editor > span { justify-self: stretch; }
.project-critical-editor .project-admission-editor textarea { justify-self: stretch; }
.project-critical-note-readonly { min-height: 52px; margin: 0; padding: 6px 7px; border-radius: 6px; color: var(--text-secondary); background: #f4f8f6; font-size: var(--font-size-caption); line-height: 1.4; white-space: pre-wrap; }
@media (max-width: 1180px) { .project-critical-editor { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 920px) { .project-critical-editor { grid-template-columns: repeat(2, minmax(0, 1fr)); } .project-critical-list { min-width: 0; } }
.project-overview-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.detail-module-card { min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.detail-module-card > h3 { margin: 0 0 12px; color: #1b3428; font-size: var(--font-size-caption); }
.detail-module-card > h3 small { float: right; color: var(--muted); font-size: var(--font-size-caption); font-weight: 600; }
.project-overview-grid > .detail-module-card,
.project-overview-grid > .project-overview-module { grid-column: auto; min-height: 168px; padding: 13px; }
.project-overview-preview-list { display: grid; }
.project-overview-preview-list article { min-height: 43px; padding: 7px 0; display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 9px; border-bottom: 1px solid #edf1ef; cursor: pointer; }
.project-overview-preview-list article:focus-visible { outline: 2px solid #78ad94; outline-offset: 2px; border-radius: 5px; }
.project-overview-preview-list article:last-child { border-bottom: 0; }
.project-overview-preview-list article > div { min-width: 0; }
.project-overview-preview-list strong, .project-overview-preview-list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-overview-preview-list strong { color: var(--ink); font-size: var(--font-size-small); }
.project-overview-preview-list small { margin-top: 3px; color: var(--muted); font-size: var(--font-size-caption); }
.project-overview-preview-list b { color: var(--muted); font-size: var(--font-size-caption); white-space: nowrap; }
.project-overview-assignment-grid { display: grid; gap: 8px; }
.project-overview-assignment-grid article { min-height: 42px; display: grid; grid-template-columns: 78px minmax(0, 1fr); align-items: center; gap: 8px; }
.project-overview-assignment-grid time { color: var(--brand); font-size: var(--font-size-caption); font-weight: 850; }
.project-overview-assignment-grid article > div { display: flex; flex-wrap: wrap; gap: 6px; }
.project-overview-assignment-grid span { padding: 5px 8px; border-radius: 99px; color: #31473c; background: #eef6f2; font-size: var(--font-size-caption); cursor: help; }
.project-overview-photo-strip { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 8px; }
.project-overview-photo-strip figure { position: relative; margin: 0; overflow: hidden; border-radius: 8px; background: var(--surface-soft); }
.project-overview-photo-strip .detail-photo-thumb { width: 100%; height: 82px; }
.project-overview-photo-strip figcaption { position: absolute; right: 0; bottom: 0; left: 0; padding: 14px 7px 5px; overflow: hidden; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.72)); font-size: var(--font-size-caption); text-overflow: ellipsis; white-space: nowrap; }
.detail-mini-list { display: grid; }
.detail-mini-list > div { min-height: 38px; padding: 6px 0; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid #edf1ef; }
.detail-mini-list > div:last-child { border-bottom: 0; }
.detail-mini-list b { overflow: hidden; font-size: var(--font-size-caption); text-overflow: ellipsis; white-space: nowrap; }
.detail-mini-list span { color: var(--muted); font-size: var(--font-size-caption); white-space: nowrap; }
.project-detail-empty { min-height: 92px; display: grid; place-content: center; justify-items: center; gap: 5px; color: #9ba59f; text-align: center; }
.project-detail-empty strong { font-size: var(--font-size-caption); }
.project-detail-empty span { font-size: var(--font-size-caption); line-height: 1.55; }
.project-overview-assignment { min-height: 92px; display: grid; place-content: center; gap: 7px; text-align: center; }
.project-overview-assignment strong { color: var(--brand); font-size: var(--font-size-caption); }
.project-overview-assignment span { color: var(--muted); font-size: var(--font-size-caption); line-height: 1.6; }
.detail-photo-preview > div:last-child { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; }
.detail-photo-thumb { width: 100%; height: 55px; display: block; border-radius: 6px; object-fit: cover; }

.project-execution-grid { display: grid; grid-template-columns: 1fr; gap: 6px; }
.project-execution-grid .project-execution-sticky-tabs { position: sticky; top: var(--project-execution-tabs-offset); z-index: 19; box-shadow: 0 8px 16px rgba(18,55,37,.09); }
.project-execution-tabs { padding: 5px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; border: 1px solid #cfddd6; border-radius: 11px; background: #eef4f1; }
.project-execution-tabs button { min-width: 0; min-height: 52px; padding: 8px 13px; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 9px; align-items: center; border: 1px solid transparent; border-radius: 8px; color: #52675d; background: transparent; cursor: pointer; }
.project-execution-tabs button:hover { color: var(--brand); border-color: #bfd5ca; background: rgba(255,255,255,.72); }
.project-execution-tabs button.active { color: #fff; border-color: var(--brand); background: var(--brand); box-shadow: 0 6px 16px rgba(18,112,78,.2); }
.project-execution-tabs button > span { font-size: 18px; }
.project-execution-tabs button > strong { min-width: 0; overflow: hidden; font-size: var(--font-size-small); text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.project-execution-tabs button > b { min-width: 26px; padding: 3px 7px; border-radius: 99px; color: var(--brand); background: #fff; font-size: 11px; text-align: center; }
.project-execution-tabs button:not(.active) > b { color: #52675d; background: #dfe9e4; }
.project-business-page { display: grid; gap: 14px; }
.project-business-summary { position: sticky; top: 20px; z-index: 4; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; padding: 10px; border: 1px solid #cfe0d7; border-radius: 11px; background: rgba(246,251,248,.97); box-shadow: 0 10px 28px rgba(14,57,37,.12); backdrop-filter: blur(12px); }
.project-business-summary article { min-width: 0; min-height: 108px; padding: 13px 14px; border: 1px solid #dce9e2; border-radius: 9px; background: #fff; }
.project-business-summary article > span, .project-business-summary article strong, .project-business-summary article small { display: block; }
.project-business-summary article > span { color: var(--muted); font-size: var(--font-size-caption); font-weight: 850; }
.project-business-summary article > div { margin-top: 8px; }
.project-business-summary article strong { color: var(--brand-strong); font-size: 17px; }
.project-business-summary article > div small { margin-top: 3px; color: #557065; font-size: var(--font-size-caption); }
.project-business-summary article > small { margin-top: 8px; overflow-wrap: anywhere; color: var(--muted); font-size: 11px; line-height: 1.45; }
.project-business-table-card { padding: 0; overflow: hidden; }
.project-business-table-card > header { min-height: 70px; padding: 13px 16px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border-bottom: 1px solid var(--line); background: #fbfdfc; }
.project-business-table-card > header h3 { margin: 0; color: #193c2b; font-size: var(--font-size-card-title); }
.project-business-table-card > header p { margin: 4px 0 0; color: var(--muted); font-size: var(--font-size-caption); }
.project-business-table-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
.project-business-table { min-width: 1080px !important; }
.project-business-table th:first-child, .project-business-table td:first-child { width: 240px; min-width: 220px; max-width: 280px; }
.project-business-select { min-width: 0; display: flex; align-items: center; gap: 8px; cursor: pointer; }
.project-business-select input[type="checkbox"] { flex: 0 0 16px; width: 16px; min-width: 16px; height: 16px; min-height: 16px; margin: 0; padding: 0; accent-color: var(--brand); }
.project-business-select strong { min-width: 0; overflow: hidden; overflow-wrap: normal; text-overflow: ellipsis; white-space: nowrap; }
.project-business-table .module-cell-main { min-width: 132px; }
.project-business-select-all { padding: 3px 7px; border: 1px solid #bcd2c7; border-radius: 5px; color: var(--brand); background: #fff; font-size: 11px; font-weight: 850; cursor: pointer; }
.project-business-table td > strong, .project-business-table td > small { display: block; }
.project-business-table td > small { margin-top: 4px; color: var(--muted); }
.project-business-note { display: -webkit-box; max-width: 230px; overflow: hidden; color: #586961; line-height: 1.55; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.project-business-empty { padding: 18px; }
.project-business-quick-values { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.project-business-quick-values b { margin-right: 2px; color: var(--muted); }
.project-business-quick-values button { padding: 3px 7px; border: 1px solid #c7dcd1; border-radius: 99px; color: var(--brand); background: #f5fbf8; font-size: 11px; cursor: pointer; }
.project-business-quick-values button:hover { border-color: var(--brand); background: var(--brand-soft); }
.project-execution-grid > .detail-module-card { min-height: 210px; }
.project-data-module { padding: 0; overflow: hidden; }
.project-data-module--usage,
.project-data-module--production { border: 1px solid #d4e3db; border-radius: 12px; background: #fff; box-shadow: 0 10px 24px rgba(18,55,37,.07); }
.project-data-module--usage .detail-wide-table,
.project-data-module--production .detail-wide-table { border-top: 1px solid #e4ede8; }
.project-data-module--usage thead th,
.project-data-module--production thead th { height: 44px; color: #426052; background: linear-gradient(180deg, #f7fbf9, #eef6f1); letter-spacing: .02em; }
.project-data-module--usage tbody tr[data-project-module-row] > td:first-child,
.project-data-module--production tbody tr[data-project-module-row] > td:first-child { box-shadow: inset 3px 0 0 transparent; }
.project-data-module--usage tbody tr[data-project-module-row]:hover > td:first-child { box-shadow: inset 3px 0 0 #2f8a61; }
.project-data-module--production tbody tr[data-project-module-row]:hover > td:first-child { box-shadow: inset 3px 0 0 #6b987c; }
.project-data-module--production .project-inline-unlinked-panel { border-color: #c9dacd; background: linear-gradient(180deg, #f8fbf8, #fff); }
.project-data-module--production .project-inline-unlinked-panel > header strong { color: #356046; }
.project-data-module > header, .project-data-module-header { min-height: 70px; padding: 13px 16px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border: 1px solid var(--line); border-radius: 11px; background: #fbfdfc; box-shadow: 0 8px 18px rgba(18,55,37,.09); }
.project-data-module > header h3, .project-data-module-header h3 { margin: 0; color: #193c2b; font-size: var(--font-size-card-title); }
.project-data-module > header p, .project-data-module-header p { margin: 4px 0 0; color: var(--muted); font-size: var(--font-size-caption); }
.project-module-header-actions { flex: 0 0 auto; display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.project-module-search-control { min-height: 34px; display: inline-flex; align-items: center; gap: 5px; padding: 0 9px; border: 1px solid #c9d8d0; border-radius: 7px; color: var(--brand); background: #fff; box-shadow: 0 2px 7px rgba(19,61,43,.05); }
.project-module-search-control > span { flex: 0 0 auto; font-size: 16px; font-weight: 900; }
.project-module-search-control input { width: 176px; min-width: 0; min-height: 32px; padding: 0; border: 0; color: var(--ink); background: transparent; font: inherit; font-size: var(--font-size-caption); }
.project-module-search-control input:focus { outline: 0; box-shadow: none; }
.project-module-sort-control { min-height: 34px; display: inline-flex; align-items: center; gap: 5px; padding-left: 9px; border: 1px solid #c9d8d0; border-radius: 7px; color: var(--brand); background: #fff; box-shadow: 0 2px 7px rgba(19,61,43,.05); }
.project-module-sort-control > span { flex: 0 0 auto; font-size: 15px; font-weight: 900; }
.project-module-sort-control select { width: auto; min-width: 150px; min-height: 32px; padding: 0 28px 0 2px; border: 0; color: #315443; background-color: transparent; font-size: var(--font-size-caption); font-weight: 800; cursor: pointer; }
.project-module-sort-control select:focus { box-shadow: none; }
.project-module-batch-edit { white-space: nowrap; }
.detail-wide-table { width: 100%; overflow-x: auto; }
.detail-wide-table table { width: 100%; min-width: 100%; table-layout: fixed; border-collapse: collapse; }
.detail-wide-table th, .detail-wide-table td { padding: 12px 11px; border-bottom: 1px solid #e9efec; font-size: var(--font-size-caption); text-align: left; vertical-align: middle; }
.detail-wide-table th { position: sticky; top: 0; z-index: 1; color: #627169; background: #f4f8f6; font-weight: 850; white-space: nowrap; }
.project-data-module .detail-wide-table thead { display: none; }
.project-module-sticky-column-header { position: sticky; top: var(--project-execution-table-header-offset); z-index: 17; overflow: hidden; border: 1px solid #d7e4de; border-radius: 10px 10px 0 0; background: #f4f8f6; box-shadow: 0 7px 14px rgba(18,55,37,.08); }
.project-module-sticky-column-header table { width: 100%; min-width: 100%; table-layout: fixed; border-collapse: collapse; }
.project-module-sticky-column-header th { position: relative; height: 44px; padding: 0 11px; border-right: 1px solid #c9dfd5; color: #466357; background: linear-gradient(180deg, #f7fbf9, #eef6f1); font-size: var(--font-size-caption); font-weight: 850; text-align: left; vertical-align: middle; white-space: nowrap; cursor: col-resize; }
.project-module-sticky-column-header th:last-child { border-right: 0; }
.detail-wide-table tbody tr { transition: background .12s ease; }
.detail-wide-table tbody tr:hover { background: #f5fbf8; }
.detail-wide-table tbody tr[data-project-module-row] { cursor: pointer; }
.detail-wide-table tbody tr[data-project-module-row].project-module-duplicate-highlight > td { background: #ffe3df !important; box-shadow: inset 0 1px #e97667, inset 0 -1px #e97667; }
.detail-wide-table tbody tr[data-project-module-row].project-module-duplicate-highlight > td:first-child { box-shadow: inset 4px 0 #d84b3c, inset 0 1px #e97667, inset 0 -1px #e97667; }
.detail-wide-table tbody tr[data-project-module-row]:focus-visible { outline: 2px solid #78ad94; outline-offset: -2px; background: #f0f9f4; }
.detail-wide-table tbody tr:last-child td { border-bottom: 0; }
.detail-wide-table .module-name-column { min-width: 68px; max-width: 520px; }
.detail-wide-table th:first-child, .detail-wide-table td:first-child { max-width: none; }
.project-module-column-resize-handle { position: absolute; top: 0; right: -7px; z-index: 3; width: 14px; height: 100%; cursor: col-resize; touch-action: none; }
.project-module-column-resize-handle::after { position: absolute; top: 8px; bottom: 8px; left: 6px; width: 2px; border-radius: 3px; background: #b7d3c5; content: ''; }
.project-execution-grid .detail-wide-table th { position: sticky; top: var(--project-execution-table-header-offset); z-index: 17; cursor: col-resize; }
.detail-wide-table th:hover .project-module-column-resize-handle::after, .project-module-column-resizing .project-module-column-resize-handle::after { background: #16835e; }
.project-module-column-resizing, .project-module-column-resizing * { cursor: col-resize !important; user-select: none !important; }
.module-cell-main { min-width: 0; }
.module-cell-main strong, .module-cell-main small { display: block; }
.project-data-module .module-cell-main strong, .project-data-module .module-cell-main small, .project-module-clamped-text { overflow: hidden; overflow-wrap: anywhere; text-overflow: ellipsis; white-space: normal; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.module-cell-main strong { color: var(--ink); font-size: var(--font-size-small); }
.module-cell-main small { margin-top: 4px; color: var(--muted); font-size: var(--font-size-caption); }
.project-module-clamped-text { line-height: 1.45; }
.material-note-attention,
.material-note-attention dt,
.material-note-attention dd,
.material-note-attention small,
.material-note-attention strong { color: #d64232 !important; font-weight: 800; }
.module-cell-tags { margin-top: 5px; display: flex; align-items: center; flex-wrap: wrap; gap: 4px; }
.module-cell-tags span { max-width: 100%; padding: 2px 6px; overflow: hidden; border: 1px solid #d7e6df; border-radius: 999px; color: #416456; background: #f2f8f5; font-size: 11px; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.module-cell-tags .module-addition-tag { border-color: #efb46d; color: #9f4d09; background: #fff1dc; }
.module-cell-tags .module-customer-select-tag { border-color: #e6bd36; color: #7d5b00; background: #fff3b8; }
.unit-conversion-editor { display: grid; gap: 8px; }
.unit-conversion-editor > div { display: grid; gap: 7px; }
.unit-conversion-relation { display: grid; grid-template-columns: minmax(70px,.6fr) minmax(90px,1fr) auto minmax(70px,.6fr) minmax(90px,1fr) auto; gap: 6px; align-items: center; }
.unit-conversion-relation input { min-width: 0; }
.unit-conversion-relation > b { color: var(--brand); text-align: center; }
.unit-conversion-editor > .button { justify-self: start; }
.project-customer-change-row > td { background: #fff1bd !important; color: #765300; }
.project-customer-change-row strong, .project-customer-change-row span { color: #8b5d00; font-weight: 800; }
.project-module-addition-row > td { background: #ffedd3 !important; }
.project-module-addition-row > td:first-child { box-shadow: inset 6px 0 #db7411; }
.project-module-addition-row:hover > td { background: #ffe2b9 !important; }
.project-module-addition-alert { margin: 0 18px 12px; padding: 9px 12px; border: 1px solid #efb46d; border-radius: 8px; color: #954707; background: #fff1dc; font-size: 12px; font-weight: 850; }
.customer-account-module { padding: 0; overflow: hidden; }
.customer-account-module > header { padding: 18px; border-bottom: 1px solid #e3ece7; }
.customer-account-module h2 small { margin-left: 10px; color: var(--muted); font-size: 13px; font-weight: 650; }
.customer-account-tools { display: flex; align-items: center; gap: 9px; }
.customer-account-tools .button.primary { min-width: 154px; white-space: nowrap; }
.customer-account-search { width: 390px; min-height: 35px; padding: 0 10px; display: flex; align-items: center; gap: 7px; border: 1px solid #d8e4de; border-radius: 8px; color: #557064; background: #fff; }
.customer-account-search input { width: 100%; border: 0; outline: 0; color: var(--ink); background: transparent; font-size: 12px; }
.customer-account-tools select { min-height: 35px; padding: 0 28px 0 10px; border: 1px solid #d8e4de; border-radius: 8px; color: var(--ink); background: #fff; font-weight: 700; }
.customer-account-list { padding: 12px 14px 16px; background: #fbfdfc; }
.customer-account-card { overflow: hidden; border: 1px solid #e0ebe5; border-radius: 10px; background: #fff; }
.customer-account-card + .customer-account-card { margin-top: 9px; }
.customer-account-table-head, .customer-account-row { min-width: 1135px; padding: 0 12px; display: grid; grid-template-columns: 34px 132px 150px minmax(145px,1fr) minmax(145px,1fr) 160px 185px 85px 130px; align-items: center; gap: 9px; }
.customer-account-table-head { min-height: 49px; color: #52675c; background: linear-gradient(90deg,#eef8f3,#f7fbf9); border: 1px solid #e0ebe5; border-bottom: 0; border-radius: 10px 10px 0 0; font-size: 12px; font-weight: 850; }
.customer-account-table-head span:last-child { text-align: right; }
.customer-account-row { min-height: 58px; color: #263a31; font-size: 13px; }
.customer-account-list:has(.customer-account-table-head) { overflow-x: auto; }
.customer-account-table-head + .customer-account-card { border-radius: 0 0 10px 10px; }
.customer-account-row > strong { color: #152d21; font-size: 14px; }
.customer-account-expand { width: 28px; height: 28px; border: 0; border-radius: 50%; color: var(--brand); background: #eef8f3; font-size: 23px; line-height: 1; cursor: pointer; }
.customer-account-password { display: inline-flex; align-items: center; gap: 8px; letter-spacing: 1px; }
.customer-account-password.visible { overflow: hidden; letter-spacing: 0; text-overflow: ellipsis; white-space: nowrap; }
.customer-account-password button { border: 0; color: #52695e; background: transparent; cursor: pointer; }
.customer-account-project { overflow: hidden; color: #40584c; text-overflow: ellipsis; white-space: nowrap; }
.customer-account-switch { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }
.customer-account-switch input { position: absolute; opacity: 0; pointer-events: none; }
.customer-account-switch i { width: 39px; height: 22px; position: relative; border-radius: 99px; background: #b8c2bd; transition: .16s; }
.customer-account-switch i::after { width: 16px; height: 16px; position: absolute; top: 3px; left: 3px; border-radius: 50%; background: #fff; content: ''; transition: .16s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.customer-account-switch input:checked + i { background: var(--brand); }
.customer-account-switch input:checked + i::after { transform: translateX(17px); }
.customer-account-switch b { color: #16704e; font-size: 12px; }
.customer-account-switch input:not(:checked) ~ b { color: #738078; }
.customer-account-actions { display: flex; justify-content: flex-end; gap: 6px; }
.customer-account-actions .danger { min-height: 28px; padding: 0 8px; }
.customer-submission-panel { margin: 0 10px 10px; padding: 14px; border: 1px solid #d8ede3; border-radius: 9px; background: linear-gradient(135deg,#f5fcf8,#edf8f4); }
.customer-submission-panel > header { margin-bottom: 10px; display: flex; align-items: center; gap: 12px; color: #126846; }
.customer-submission-panel > header span { padding-left: 12px; border-left: 1px solid #b9d6c7; color: #71867a; font-size: 12px; }
.customer-submission-card { min-height: 88px; padding: 10px 12px; display: grid; grid-template-columns: 145px minmax(0,1fr) 105px; align-items: center; gap: 13px; border: 1px solid #deebe4; border-radius: 8px; background: rgba(255,255,255,.92); }
.customer-submission-card + .customer-submission-card { margin-top: 8px; }
.customer-submission-card time { color: #6c7b73; font-size: 11px; line-height: 1.7; }
.customer-submission-card time strong { color: #273b31; font-size: 12px; }
.customer-submission-items { min-width: 0; display: flex; gap: 8px; overflow-x: auto; }
.customer-submission-item { width: 82px; flex: 0 0 82px; display: grid; gap: 2px; text-align: center; }
.customer-submission-image { width: 62px; height: 50px; margin: auto; border: 1px solid #d9e3de; border-radius: 5px; object-fit: cover; }
.customer-submission-item .project-image-empty { width: 62px; height: 50px; margin: auto; display: grid; place-items: center; border: 1px solid #d9e3de; border-radius: 5px; color: #829087; background: #f2f6f4; font-size: 10px; }
.customer-submission-item strong, .customer-submission-item small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.customer-submission-item strong { font-size: 11px; }.customer-submission-item small { color: #687b70; font-size: 10px; }
.customer-submission-confirmed { justify-self: end; padding: 7px 10px; border-radius: 99px; color: #14734f; background: #e7f7ef; font-size: 12px; font-weight: 800; }
.customer-account-empty { padding: 28px 14px; color: #77877e; text-align: center; font-size: 13px; }
.customer-account-login-summary { margin-top: 13px; padding: 10px 12px; border-radius: 7px; color: #53685d; background: #f3f8f5; font-size: 12px; }
.button.addition-button { border-color: #d87517; color: #a45109; background: #fff1dc; }
.button.addition-button:hover { border-color: #bd5e0c; color: #873d04; background: #ffe4bd; }
.module-allocation-cell strong, .module-allocation-cell small { display: block; white-space: nowrap; }
.module-allocation-cell small { margin-top: 4px; font-size: var(--font-size-caption); }
.module-row-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.onsite-module-header { margin-top: 18px; border-color: #9fc8b5; background: linear-gradient(135deg, #eff9f4, #fbfdfc); }
.onsite-project-module { border-color: #b8d8c9; box-shadow: inset 4px 0 0 #2f8a61; }
.inventory-return-choices { max-height: 320px; margin-bottom: 14px; display: grid; gap: 8px; overflow-y: auto; }
.inventory-return-group { display: grid; gap: 8px; margin-bottom: 14px; }
.inventory-return-group h4 { margin: 0; color: var(--ink); font-size: var(--font-size-small); }
.inventory-return-group > p { margin: 0; color: var(--muted); font-size: var(--font-size-caption); line-height: 1.55; }
.project-material-batch-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.project-material-batch-head > div:first-child { min-width: 0; display: grid; gap: 3px; }
.project-material-batch-head small { color: var(--muted); font-size: var(--font-size-caption); }
.project-material-batch-actions { display: flex; flex: 0 0 auto; gap: 6px; }
.project-material-batch-list { max-height: 280px; padding-right: 3px; display: grid; gap: 7px; overflow-y: auto; }
.project-material-batch-summary { padding: 9px 11px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 18px; border-radius: 8px; color: #426052; background: #edf7f1; font-size: var(--font-size-caption); }
.project-material-batch-summary strong { color: var(--brand-strong); }
.project-material-price-fields { margin-top: 14px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.inventory-return-choice { min-height: 54px; padding: 10px 12px; display: flex; align-items: center; gap: 10px; border: 1px solid #d7e6df; border-radius: 9px; background: #fbfdfc; cursor: pointer; }
.inventory-return-choice.readonly { cursor: default; background: #f5f8f6; }
.inventory-return-choice:hover { border-color: #8fbba6; background: #f2f9f5; }
.inventory-return-choice.readonly:hover { border-color: #d7e6df; background: #f5f8f6; }
.inventory-return-choice input { width: 18px; height: 18px; accent-color: var(--brand); }
.inventory-return-choice span, .inventory-return-choice strong, .inventory-return-choice small { display: block; }
.inventory-return-choice span { min-width: 0; }
.inventory-return-choice strong { color: var(--ink); font-size: var(--font-size-small); }
.inventory-return-choice small { margin-top: 3px; color: var(--muted); font-size: var(--font-size-caption); }
.inventory-return-summary { margin: -2px 0 14px; padding: 10px 12px; border-radius: 8px; color: var(--brand-strong); background: var(--brand-soft); font-size: var(--font-size-small); font-weight: 850; }
.inventory-operation-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(132px, 1fr)); gap: 1px; margin-bottom: 14px; overflow: hidden; border: 1px solid #d7e6df; border-radius: 9px; background: #d7e6df; }
.inventory-operation-summary > div { min-height: 72px; padding: 12px; background: #fbfdfc; }
.inventory-operation-summary small, .inventory-operation-summary strong { display: block; }
.inventory-operation-summary small { color: var(--muted); font-size: var(--font-size-caption); }
.inventory-operation-summary strong { margin-top: 6px; color: var(--brand-strong); font-size: var(--font-size-base); }
.project-module-price-action { display: grid; gap: 4px; }
.project-module-price-action > small { display: grid; gap: 2px; color: var(--muted); font-size: 10px; line-height: 1.25; white-space: nowrap; }
.project-module-price-editor { min-width: 156px; display: grid; gap: 5px; padding: 7px; border: 1px solid #b9d2c5; border-radius: 8px; background: #f4faf7; box-shadow: 0 5px 14px rgba(19,61,43,.08); }
.project-module-price-editor > label { display: grid; grid-template-columns: 34px minmax(0, 1fr); align-items: center; gap: 5px; }
.project-module-price-editor > label span { color: #557065; font-size: 10px; font-weight: 850; }
.project-module-price-editor input { width: 100%; min-width: 0; height: 30px; padding: 4px 6px; border: 1px solid #bfd4c9; border-radius: 6px; color: var(--ink); background: #fff; font: inherit; }
.project-module-price-editor input:focus { border-color: var(--brand); outline: 2px solid rgba(23,107,76,.12); }
.project-module-price-editor > small { color: var(--muted); font-size: 10px; white-space: nowrap; }
.project-module-price-editor > div { display: flex; gap: 5px; }
.project-module-inline-create td { background: #f1faf5; vertical-align: top; }
.project-module-inline-create:hover td { background: #edf8f2 !important; }
.project-module-inline-create input,
.project-module-inline-create select,
.project-module-inline-extra input,
.project-module-inline-extra textarea { width: 100%; min-width: 0; min-height: 34px; padding: 6px 8px; border: 1px solid #b9d2c5; border-radius: 6px; color: var(--ink); background: #fff; font: inherit; box-sizing: border-box; }
.project-module-inline-create input:focus,
.project-module-inline-create select:focus,
.project-module-inline-extra input:focus,
.project-module-inline-extra textarea:focus { border-color: var(--brand); outline: 2px solid rgba(23,107,76,.12); }
.project-module-inline-invalid,
.project-module-inline-invalid:focus {
  border-color: #d64b3d !important;
  background: #fff1ef !important;
  box-shadow: 0 0 0 3px rgba(214,75,61,.16) !important;
  outline: none !important;
}
.project-inline-source-cell { min-width: 210px; display: grid; gap: 6px; }
.project-inline-source-cell > div { display: grid; gap: 6px; }
.project-inline-source-cell > .project-inline-unified-material { min-width: 420px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; align-items: start; }
.project-module-inline-create > td:first-child { min-width: 420px; max-width: none !important; }
.project-module-inline-create .project-inline-source-cell,
.project-module-inline-create .project-inline-unified-material { width: 100%; }
.project-inline-unified-material > select,
.project-inline-unified-material > input { width: 100%; }
.project-inline-material-controls { min-width: 0; display: grid; gap: 6px; }
.project-inline-material-type-select {
  width: 180px !important;
  min-width: 180px !important;
  max-width: 180px !important;
  inline-size: 180px !important;
  box-sizing: border-box;
  justify-self: start;
}
.project-inline-usage-purpose-select {
  width: 180px !important;
  min-width: 180px !important;
  max-width: 180px !important;
  inline-size: 180px !important;
  box-sizing: border-box;
  justify-self: start;
}
.project-inline-name-row { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 6px; }
.project-inline-material-controls .project-inline-inventory-picker { margin-bottom: 0; }
.project-inline-material-lookup { width: 100%; display: grid; gap: 8px; }
.project-inline-material-lookup .project-inline-inventory-picker { width: 100%; margin-bottom: 0; }
.project-inline-material-lookup .project-inline-unlinked-panel { width: 100%; }
.project-inline-unlinked-panel { min-width: 0; padding: 9px; border: 1px solid #b9d2c5; border-radius: 9px; background: linear-gradient(180deg, #f5fbf7, #fff); }
.project-inline-unlinked-panel > header, .project-inline-inventory-picker > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.project-inline-unlinked-panel > header strong, .project-inline-inventory-picker > header strong { color: var(--brand-strong); font-size: var(--font-size-caption); }
.project-inline-unlinked-panel > header small, .project-inline-inventory-picker > header small { color: var(--muted); font-size: 10px; white-space: nowrap; }
.project-inline-unlinked-summary { margin: 5px 0 4px; color: var(--muted); font-size: 10px; }
.project-inline-unlinked-options { max-height: 104px; display: grid; gap: 4px; overflow-y: auto; }
.project-inline-unlinked-option { min-width: 0; padding: 5px 7px; display: grid; grid-template-columns: minmax(110px, .75fr) minmax(150px, 1fr) minmax(150px, 1fr); gap: 8px; align-items: center; border: 1px solid #d7e5de; border-radius: 7px; color: var(--ink); background: #fff; text-align: left; cursor: pointer; }
.project-inline-unlinked-option:hover { border-color: #85b69f; background: #f2faf5; }
.project-inline-unlinked-option.selected { border-color: var(--brand); background: var(--brand-soft); box-shadow: inset 3px 0 0 var(--brand); }
.project-inline-unlinked-project { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.project-inline-unlinked-project strong,
.project-inline-unlinked-project small,
.project-inline-unlinked-material,
.project-inline-unlinked-meta { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-inline-unlinked-project strong { color: #173d2b; font-size: 11px; }
.project-inline-unlinked-project small { color: var(--brand); font-size: 10px; }
.project-inline-unlinked-material { color: var(--ink); font-size: 11px; font-weight: 750; }
.project-inline-unlinked-meta { color: var(--muted); font-size: 10px; }
.project-inline-unlinked-empty { min-height: 42px; padding: 8px; display: grid; place-items: center; border: 1px dashed #bdd2c8; border-radius: 7px; color: var(--muted); background: #fff; font-size: 10px; text-align: center; line-height: 1.35; }
.project-inline-unlinked-empty.idle { min-height: 28px; padding: 4px; border-color: #d7e5de; }
.project-inline-unlinked-empty.success { color: var(--brand); border-color: #8fbba6; background: #f2faf5; }
.project-inline-unlinked-empty.error { color: var(--danger); border-color: #e8b3ad; background: var(--danger-soft); }
.project-inline-unlinked-selected { color: #355a48; border-style: solid; border-color: #8fbba6; }
.project-material-save-choice { display: grid; gap: 12px; }
.project-material-save-choice p { margin: 0; line-height: 1.7; }
.project-material-save-choice .button { justify-self: start; }
.project-inline-art-category-combobox { position: relative; min-width: 0; }
.project-inline-art-category-combobox .record-usage-combobox-control { gap: 0; }
.project-inline-art-category-combobox .record-usage-combobox-control button { min-height: 34px; border-color: #b9d2c5; }
.project-inline-art-category-combobox .record-usage-combobox-options { top: calc(100% + 4px); left: 0; right: 0; min-width: 230px; }
.project-inline-inventory-prompt { min-height: 38px; padding: 8px 10px; display: flex; align-items: center; border: 1px dashed #9bbfaf; border-radius: 7px; color: var(--brand); background: #fff; font-size: var(--font-size-caption); font-weight: 750; }
.project-inline-inventory-selected { min-width: 0; min-height: 42px; padding: 7px 9px; display: grid; align-content: center; gap: 3px; border: 1px solid #8ebba6; border-radius: 7px; background: #fff; }
.project-inline-inventory-selected strong,
.project-inline-inventory-selected small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-inline-inventory-selected strong { color: var(--brand-strong); font-size: var(--font-size-small); }
.project-inline-inventory-selected small { color: var(--muted); font-size: 11px; }
.project-inline-inventory-picker { margin-bottom: 0; padding: 9px; border: 1px solid #b9d2c5; border-radius: 9px; background: linear-gradient(180deg, #f5fbf7, #fff); }
.project-inline-inventory-search { display: grid; grid-template-columns: auto minmax(260px, 1fr); gap: 12px; align-items: center; color: #355a48; font-size: var(--font-size-caption); font-weight: 850; }
.project-inline-inventory-search input { min-height: 39px; padding-left: 36px; background: linear-gradient(90deg, #eef7f2 0 30px, #fff 30px); }
.project-inline-inventory-result-head { margin: 7px 0 5px; color: var(--muted); font-size: 11px; }
.project-inline-inventory-results { max-height: 230px; padding: 2px; display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 7px; overflow-y: auto; }
.project-inline-inventory-option { min-width: 0; min-height: 78px; padding: 7px; display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 9px; align-items: stretch; border: 1px solid #dce7e2; border-radius: 9px; color: var(--ink); background: #fbfdfc; text-align: left; cursor: pointer; }
.project-inline-inventory-option:hover { border-color: #91bda8; background: #f1f9f5; }
.project-inline-inventory-option.selected { border-color: var(--brand); background: var(--brand-soft); box-shadow: inset 3px 0 0 var(--brand); }
.project-inline-inventory-thumb { width: 76px; height: 76px; padding: 0; overflow: hidden; display: grid; place-items: center; border: 1px solid #d6e2dc; border-radius: 7px; color: var(--brand); background: #fff; }
button.project-inline-inventory-thumb { cursor: zoom-in; }
.project-inline-inventory-image { width: 100%; height: 100%; display: block; object-fit: contain; }
.project-inline-inventory-thumb b { font-size: var(--font-size-small); }
.project-inline-inventory-select { grid-column: 2; min-width: 0; min-height: 52px; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 9px; align-items: center; border: 0; color: inherit; background: transparent; text-align: left; cursor: pointer; }
.project-inline-inventory-copy { min-width: 0; display: grid; gap: 5px; }
.project-inline-inventory-copy strong,
.project-inline-inventory-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-inline-inventory-copy strong { color: #173d2b; font-size: var(--font-size-small); }
.project-inline-inventory-copy small { color: var(--muted); font-size: 11px; }
.project-inline-inventory-stock { min-width: 62px; display: grid; gap: 4px; text-align: right; white-space: nowrap; }
.project-inline-inventory-stock small { color: var(--muted); font-size: 10px; }
.project-inline-inventory-stock b { color: var(--brand); font-size: var(--font-size-caption); }
.project-inline-inventory-empty { padding: 24px 12px; color: var(--muted); text-align: center; }
.project-module-inline-spec { width: 128px; min-width: 112px; max-width: 140px; }
.project-module-inline-spec input { width: 100%; max-width: 128px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-inline-quantity { min-width: 178px; display: grid; grid-template-columns: minmax(104px, 1fr) minmax(58px, .7fr); gap: 5px; align-items: start; }
.project-inline-quantity .project-quantity-formula-field { gap: 3px; }
.project-inline-quantity .project-quantity-formula-field > span { display: none; }
.project-inline-quantity .project-quantity-formula-field > input { min-width: 0; }
.project-inline-quantity .project-quantity-formula-field > small { line-height: 1.25; }
.project-inline-photo-cell { min-width: 128px; display: flex; align-items: center; flex-wrap: wrap; gap: 5px; }
.project-inline-photo-cell > b { min-width: 26px; height: 34px; padding: 0 5px; display: grid; place-items: center; border-radius: 6px; color: var(--brand); background: var(--brand-soft); font-size: 11px; }
.project-inline-photo-thumb { width: 38px; height: 38px; padding: 0; overflow: hidden; border: 1px solid #cbdad3; border-radius: 6px; background: #eef3f0; cursor: zoom-in; }
.project-inline-photo-thumb img { width: 100%; height: 100%; display: block; object-fit: cover; }
.project-inline-photo { min-width: 88px; padding: 0; display: block; border: 0; color: inherit; background: transparent; text-align: left; }
.project-inline-photo input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.project-inline-photo span { min-height: 34px; padding: 0 9px; display: inline-flex; align-items: center; justify-content: center; border: 1px dashed #7ead96; border-radius: 6px; color: var(--brand); background: #fff; font-weight: 800; cursor: pointer; white-space: nowrap; }
.project-inline-photo small { margin-top: 4px; display: block; color: var(--muted); font-size: 11px; }
.project-inline-photo:hover span { border-color: var(--brand); background: var(--brand-soft); }
.project-inline-photo-progress { flex: 1 0 100%; display: grid; gap: 4px; padding-top: 2px; color: #176b4c; font-size: 11px; font-weight: 800; }
.project-inline-photo-progress[hidden] { display: none; }
.project-inline-photo-progress-track { height: 5px; overflow: hidden; border-radius: 99px; background: #d9ebe1; }
.project-inline-photo-progress-track i { width: 0; height: 100%; display: block; border-radius: inherit; background: linear-gradient(90deg, #24a470, #176b4c); transition: width .18s ease; }
.project-module-inline-extra > td { padding: 10px 12px !important; background: #f8fcfa; }
.project-module-inline-extra-grid { margin-bottom: 12px; display: grid; grid-template-columns: minmax(240px, 1.4fr) minmax(200px, 1fr) auto; gap: 10px; align-items: end; }
.project-module-inline-extra-grid label { min-width: 0; display: grid; gap: 5px; color: var(--muted); font-weight: 800; }
.project-inline-material-codes { min-width: 0; }
.project-inline-material-codes .material-code-field { display: grid; gap: 5px; }
.project-inline-material-codes .material-code-field > span { color: var(--muted); font-weight: 800; }
.project-inline-material-codes .material-code-editor { padding: 6px; border-color: #b9d2c5; }
.project-inline-material-codes .material-code-entry-row { margin-top: 5px; }
.project-inline-material-codes .material-code-entry-row input { min-height: 34px; }
.project-inline-material-codes .material-code-field > small { display: none; }
.project-module-inline-extra-grid textarea { min-height: 58px; resize: vertical; }
.project-module-inline-extra-grid small { align-self: center; color: var(--muted); line-height: 1.55; }
.project-module-inline-actions { position: sticky; right: 0; z-index: 4; min-width: 126px; width: 126px; background: #f1faf5 !important; box-shadow: -10px 0 16px rgba(30,75,54,.1); }
.project-module-inline-actions .module-row-actions { flex-wrap: nowrap; justify-content: flex-end; }
.project-data-module tbody tr[data-project-module-row] td:nth-child(2) { max-width: none; overflow: visible; text-overflow: clip; white-space: normal; }
@media (max-width: 1100px) {
  .project-execution-tabs { display: flex; overflow-x: auto; }
  .project-execution-tabs button { flex: 1 0 170px; }
  .project-module-inline-extra-grid { grid-template-columns: 1fr 1fr; }
  .project-module-inline-extra-grid small { grid-column: 1 / -1; }
  .project-inline-source-cell { min-width: 170px; }
  .project-module-inline-spec { width: 104px; min-width: 96px; max-width: 112px; }
  .project-module-inline-spec input { max-width: 100px; }
  .project-inline-quantity { min-width: 142px; grid-template-columns: minmax(84px, 1fr) 52px; }
  .project-inline-inventory-search { grid-template-columns: 1fr; gap: 6px; }
  .project-inline-inventory-results { grid-template-columns: 1fr; }
  .project-inline-source-cell > .project-inline-unified-material { min-width: 420px; grid-template-columns: minmax(0, 1fr); }
  .project-inline-unlinked-options { max-height: 104px; }
  .project-inline-unlinked-option { grid-template-columns: minmax(100px, .7fr) minmax(130px, 1fr) minmax(130px, 1fr); }
}
.module-status-select {
  min-width: 96px;
  height: 32px;
  padding: 0 28px 0 9px;
  border: 1px solid #b8d4c7;
  border-radius: 7px;
  color: var(--brand);
  background: #f3faf6;
  font-size: var(--font-size-caption);
  font-weight: 800;
  cursor: pointer;
}
.module-status-select:hover, .module-status-select:focus { border-color: var(--brand); outline: none; }
.module-status-select.status-red { color: var(--danger); border-color: #efb9b4; background: var(--danger-soft); }
.module-status-select.status-red:hover, .module-status-select.status-red:focus { border-color: var(--danger); }
.module-status-select.status-gold { color: var(--warning); border-color: #e4cf94; background: var(--warning-soft); }
.module-status-select.status-gold:hover, .module-status-select.status-gold:focus { border-color: var(--warning); }
.module-status-select.status-green { color: var(--brand); border-color: #b8d4c7; background: var(--brand-soft); }
.module-status-select.status-green:hover, .module-status-select.status-green:focus { border-color: var(--brand); }
.module-status-select:disabled { color: #617169; background: #f2f5f3; border-color: #d7dfdb; cursor: default; opacity: 1; }
.module-status-select.status-red:disabled { color: var(--danger); border-color: #efb9b4; background: var(--danger-soft); }
.module-status-select.status-gold:disabled { color: var(--warning); border-color: #e4cf94; background: var(--warning-soft); }
.module-status-select.status-green:disabled { color: var(--brand); border-color: #b8d4c7; background: var(--brand-soft); }

.module-photo-strip { min-width: 104px; display: flex; flex-wrap: wrap; align-items: center; gap: 5px; }
.module-photo-strip > button { width: 38px; height: 38px; padding: 0; overflow: hidden; border: 1px solid #d8e2dd; border-radius: 6px; background: #eef3f0; cursor: zoom-in; }
.module-photo-item { position: relative; width: 38px; height: 38px; flex: 0 0 38px; }
.module-photo-item > .module-photo-thumb { width: 100%; height: 100%; padding: 0; overflow: hidden; border: 1px solid #d8e2dd; border-radius: 6px; background: #eef3f0; cursor: zoom-in; }
.module-photo-item > .module-photo-delete { position: absolute; top: -6px; right: -6px; z-index: 2; width: 18px; height: 18px; padding: 0; display: grid; place-items: center; border: 1px solid #fff; border-radius: 50%; color: #fff; background: var(--danger); font-size: 13px; line-height: 1; cursor: pointer; }
.module-photo-item > .module-photo-delete:hover { filter: brightness(.88); }
.module-photo-strip > .module-photo-load { width: auto; height: 32px; padding: 0 10px; cursor: pointer; }
.module-photo-strip > .module-photo-count { width: 28px; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-weight: 850; cursor: pointer; }
.module-photo-strip > .module-photo-add { color: var(--brand); border-style: dashed; border-color: #8ab7a2; background: #f5fbf8; font-size: 22px; font-weight: 750; line-height: 1; cursor: pointer; }
.form-note { grid-column: 1 / -1; margin: 0; padding: 10px 12px; border-radius: 8px; color: #52635b; background: #f2f7f4; font-size: var(--font-size-caption); }
.module-table-photo { width: 100%; height: 100%; display: block; object-fit: cover; }
.module-detail-row > td { padding: 0 !important; background: #f8fbf9; }
.module-detail-content { padding: 16px; border-bottom: 1px solid var(--line); }
.module-detail-layout { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.module-detail-section { min-width: 0; padding: 13px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }
.module-detail-section h4 { margin: 0 0 10px; color: #214936; font-size: var(--font-size-small); }
.module-detail-section pre { margin: 0; color: #53625a; font: inherit; font-size: var(--font-size-caption); line-height: 1.7; white-space: pre-wrap; }
.module-detail-facts { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px; }
.module-detail-facts div { min-width: 0; }
.module-detail-facts dt { color: var(--muted); font-size: var(--font-size-caption); }
.module-detail-facts dd { margin: 4px 0 0; overflow-wrap: anywhere; font-size: var(--font-size-caption); font-weight: 750; }
.module-recipe-list { margin: 0; padding: 0; display: grid; gap: 7px; list-style: none; }
.module-recipe-list li { padding: 7px 8px; display: flex; justify-content: space-between; gap: 8px; border-radius: 7px; background: var(--surface-soft); }
.module-recipe-list strong, .module-recipe-list span { font-size: var(--font-size-caption); }
.module-recipe-list span { color: var(--muted); }

.resource-workbench { display: grid; gap: 14px; }
.project-batch-edit-workbench { display: grid; gap: 18px; }
.project-batch-mode-switch { width: fit-content; padding: 3px; display: flex; gap: 3px; border-radius: 9px; background: #eaf2ee; }
.project-batch-mode-switch button { min-height: 36px; padding: 0 17px; border: 0; border-radius: 7px; color: var(--muted); background: transparent; font-weight: 800; cursor: pointer; }
.project-batch-mode-switch button.active { color: #fff; background: var(--brand); box-shadow: 0 4px 12px rgba(18,112,78,.18); }
.project-batch-mode-switch button[data-project-batch-mode="delete"].active { background: var(--danger); box-shadow: 0 4px 12px rgba(164,47,37,.18); }
.project-batch-edit-controls { display: grid; grid-template-columns: minmax(150px,.75fr) minmax(170px,.85fr) minmax(180px,1fr) minmax(240px,1.4fr); gap: 12px; padding: 15px; border: 1px solid var(--line); border-radius: 11px; background: #f8fbf9; }
.project-batch-edit-controls label { min-width: 0; display: grid; align-content: start; gap: 7px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.project-batch-edit-controls textarea { min-height: 70px; padding: 9px 11px; resize: vertical; }
.project-batch-edit-warning { margin: -8px 0 0; padding: 10px 13px; border-left: 3px solid #d49a39; color: #73521b; background: #fff8e9; font-size: var(--font-size-caption); line-height: 1.6; }
.project-batch-delete-confirmation { padding: 15px; display: grid; gap: 10px; border: 1px solid #edb6b0; border-radius: 11px; background: #fff6f5; }
.project-batch-delete-confirmation.hidden { display: none; }
.project-batch-delete-confirmation h3, .project-batch-delete-confirmation p { margin: 0; }
.project-batch-delete-confirmation h3 { color: var(--danger); font-size: var(--font-size-card-title); }
.project-batch-delete-confirmation p { color: #80504b; font-size: var(--font-size-caption); line-height: 1.65; }
.project-batch-delete-confirmation label { display: grid; gap: 6px; color: #78433e; font-size: var(--font-size-caption); font-weight: 800; }
.project-batch-delete-confirmation textarea { min-height: 68px; padding: 9px 11px; resize: vertical; border-color: #dca39d; background: #fff; }
.project-batch-edit-empty { padding: 28px 16px; border: 1px dashed var(--line-strong); border-radius: 10px; color: var(--muted); text-align: center; background: #fbfcfb; }
.project-batch-edit-summary { padding: 10px 13px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border: 1px solid var(--line); border-bottom: 0; border-radius: 9px 9px 0 0; background: #f8fbf9; }
.project-batch-edit-summary > div { display: flex; align-items: center; gap: 12px; }
.project-batch-edit-summary.danger { border-color: #edb6b0; background: #fff4f3; }
.project-batch-edit-summary.danger strong { color: var(--danger); }
.project-batch-edit-summary span { color: var(--muted); font-size: var(--font-size-caption); }
.project-batch-edit-summary button { min-height: 28px; padding: 0 9px; border: 1px solid #cbd9d2; border-radius: 6px; color: var(--brand); background: #fff; font-size: var(--font-size-caption); font-weight: 750; cursor: pointer; }
.project-batch-edit-table { max-height: 390px; overflow: auto; border: 1px solid var(--line); border-radius: 0 0 9px 9px; }
.project-batch-edit-table table { width: 100%; min-width: 900px; border-collapse: collapse; }
.project-batch-edit-table th { position: sticky; top: 0; z-index: 1; padding: 9px 10px; color: #315443; background: #edf5f1; font-size: var(--font-size-caption); text-align: left; white-space: nowrap; }
.project-batch-edit-table td { max-width: 260px; padding: 9px 10px; overflow: hidden; border-top: 1px solid var(--line); color: var(--ink); font-size: var(--font-size-caption); text-overflow: ellipsis; white-space: nowrap; }
.project-batch-edit-table td:first-child { width: 58px; text-align: center; }
.project-batch-edit-table input[type="checkbox"] { width: 16px; min-height: 16px; height: 16px; margin: 0; accent-color: var(--brand); }
.project-batch-edit-table tr.excluded td { color: #87928d; background: #f4f6f5; opacity: .75; }
.project-batch-edit-table tr.delete-selected td { background: #fffafa; }
.project-import-progress.danger progress { accent-color: var(--danger); }
.project-import-workbench { display: grid; gap: 18px; }
.project-import-mode-switch { width: fit-content; padding: 3px; display: flex; gap: 3px; border-radius: 9px; background: #eaf2ee; }
.project-import-mode-switch button { min-height: 36px; padding: 0 17px; border: 0; border-radius: 7px; color: var(--muted); background: transparent; font-weight: 800; cursor: pointer; }
.project-import-mode-switch button.active { color: #fff; background: var(--brand); box-shadow: 0 4px 12px rgba(18,112,78,.18); }
.project-import-source { display: grid; grid-template-columns: minmax(160px,.35fr) minmax(0,1.65fr); gap: 12px; padding: 15px; border: 1px solid var(--line); border-radius: 11px; background: #f8fbf9; }
.project-import-source-fields { min-width: 0; display: grid; grid-template-columns: minmax(280px,1.35fr) minmax(160px,.7fr); gap: 12px; }
.project-import-json-source { min-width: 0; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.project-import-json-source.hidden { display: none; }
.project-import-photo-preparation { grid-column: 1 / -1; padding: 11px 13px; display: grid; grid-template-columns: minmax(220px,1fr) minmax(180px,1.5fr) auto; align-items: center; gap: 12px; border: 1px solid #cfe2d8; border-radius: 8px; color: var(--brand-strong); background: #f1f8f4; }
.project-import-photo-preparation.hidden { display: none; }
.project-import-photo-preparation > div { min-width: 0; display: grid; gap: 2px; }
.project-import-photo-preparation strong { font-size: 13px; }
.project-import-photo-preparation span, .project-import-photo-preparation small { color: var(--muted); font-size: 11px; }
.project-import-photo-preparation progress { width: 100%; height: 9px; accent-color: var(--brand); }
.project-import-photo-preparation > small { white-space: nowrap; }
.project-import-json-editor { grid-column: 1 / -1; }
.project-import-json-editor textarea { width: 100%; min-height: 190px; padding: 11px; resize: vertical; border: 1px solid var(--line-strong); border-radius: 8px; background: #fff; font: 12px/1.6 Consolas,Monaco,monospace; }
.project-import-json-source > button { align-self: end; justify-self: start; }
.project-import-source label { min-width: 0; display: grid; align-content: start; gap: 7px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.project-import-source select, .project-import-source input { width: 100%; min-height: 40px; border: 1px solid var(--line-strong); border-radius: 8px; background: #fff; }
.project-import-source input[type="file"] { padding: 7px; }
.project-import-help { margin: -8px 0 0; padding: 10px 13px; border-left: 3px solid #7bb79e; color: var(--muted); background: #f2f8f5; font-size: var(--font-size-caption); line-height: 1.65; }
.project-import-section-title { margin-bottom: 10px; display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.project-import-section-title strong { color: #193c2b; font-size: var(--font-size-card-title); }
.project-import-section-title span { color: var(--muted); font-size: var(--font-size-caption); }
.project-import-mapping { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.project-import-map-field { min-width: 0; display: grid; gap: 6px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }
.project-import-map-field.required { border-color: #b8d7c9; background: #fbfefc; }
.project-import-map-field span { color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.project-import-map-field > span { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.project-import-map-field > span small { padding: 2px 6px; border-radius: 999px; color: var(--brand); background: #e8f5ee; font-size: 11px; white-space: nowrap; }
.project-import-map-field select { width: 100%; min-height: 38px; border: 1px solid var(--line-strong); border-radius: 7px; background: #fff; }
.project-import-map-multi details { position: relative; min-width: 0; }
.project-import-map-multi summary { min-height: 38px; padding: 9px 30px 8px 10px; overflow: hidden; border: 1px solid var(--line-strong); border-radius: 7px; color: var(--ink); background: #fff; font-size: var(--font-size-caption); text-overflow: ellipsis; white-space: nowrap; cursor: pointer; list-style-position: inside; }
.project-import-map-multi details[open] summary { border-color: #7eb39c; box-shadow: 0 0 0 2px rgba(18,112,78,.08); }
.project-import-map-options { position: absolute; top: calc(100% + 5px); right: 0; left: 0; z-index: 12; max-height: 220px; padding: 6px; overflow-y: auto; border: 1px solid var(--line-strong); border-radius: 8px; background: #fff; box-shadow: var(--shadow); }
.project-import-map-options label { min-height: 34px; padding: 5px 7px; display: flex; align-items: center; gap: 8px; border-radius: 6px; cursor: pointer; }
.project-import-map-options label:hover { background: #eef7f2; }
.project-import-map-options input { flex: 0 0 auto; width: 16px; min-height: 16px; height: 16px; margin: 0; accent-color: var(--brand); }
.project-import-map-options label span { min-width: 0; overflow: hidden; color: var(--ink); font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.project-import-empty { grid-column: 1 / -1; padding: 28px 16px; border: 1px dashed var(--line-strong); border-radius: 10px; color: var(--muted); text-align: center; background: #fbfcfb; }
.project-import-json-detected { grid-column: 1 / -1; padding: 13px 15px; display: grid; grid-template-columns: auto 1fr; gap: 4px 14px; border: 1px solid #b8d7c9; border-radius: 9px; background: #f6fcf8; }
.project-import-json-detected strong { color: var(--brand); }
.project-import-json-detected span { color: var(--ink); font-size: var(--font-size-caption); }
.project-import-json-detected small { grid-column: 1 / -1; color: var(--muted); line-height: 1.55; }
.project-import-summary, .project-import-result-summary { padding: 10px 13px; display: flex; align-items: center; gap: 16px; border: 1px solid var(--line); border-bottom: 0; border-radius: 9px 9px 0 0; background: #f8fbf9; }
.project-import-summary span, .project-import-result-summary span { color: var(--muted); font-size: var(--font-size-caption); }
.project-import-result-summary .success { color: #16704e; }
.project-import-result-summary .error { color: var(--danger); }
.project-import-preview-table { max-height: 330px; overflow: auto; border: 1px solid var(--line); border-radius: 0 0 9px 9px; }
.project-import-preview-table table { width: 100%; min-width: 900px; border-collapse: collapse; }
.project-import-preview-table th { position: sticky; top: 0; z-index: 1; padding: 9px 10px; color: #315443; background: #edf5f1; font-size: var(--font-size-caption); text-align: left; white-space: nowrap; }
.project-import-preview-table td { max-width: 220px; padding: 9px 10px; border-top: 1px solid var(--line); color: var(--ink); font-size: var(--font-size-caption); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-import-photo-cell { min-width: 270px; display: grid; gap: 6px; }
.project-import-photo-group { min-width: 0; display: grid; grid-template-columns: 58px max-content max-content; justify-content: start; align-items: center; gap: 6px; }
.project-import-photo-group > span { color: var(--muted); font-size: 11px; font-weight: 750; }
.project-import-photo-group > span b { color: var(--brand); }
.project-import-photo-thumbnails { min-width: 0; display: flex; align-items: center; gap: 4px; }
.project-import-photo-thumbnails small { color: var(--muted); font-size: 10px; font-weight: 800; }
.project-import-photo-thumb { width: 30px; height: 30px; padding: 0; overflow: hidden; flex: 0 0 30px; border: 1px solid #cad8d1; border-radius: 5px; background: #f4f8f6; cursor: zoom-in; }
.project-import-photo-image { width: 100%; height: 100%; display: block; object-fit: cover; }
.project-import-photo-cell label { position: relative; padding: 4px 7px; overflow: hidden; border: 1px solid #cad8d1; border-radius: 5px; color: var(--brand); background: #fff; font-size: 11px; font-weight: 750; cursor: pointer; }
.project-import-photo-cell input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.project-import-preview-table tr.excluded td { color: #8a9690; background: #f4f6f5; text-decoration: line-through; opacity: .78; }
.project-import-preview-table tr.excluded td:last-child { text-decoration: none; opacity: 1; }
.project-import-status { max-width: 100%; padding: 3px 7px; overflow: hidden; display: inline-flex; border-radius: 999px; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.project-import-status.ready { color: #136b49; background: #e5f5ed; }
.project-import-status.error { color: #9c3328; background: #fbe9e6; }
.project-import-status.excluded { color: #66736d; background: #e6ebe8; text-decoration: none; }
.project-import-row-toggle { min-height: 30px; padding: 0 10px; border: 1px solid #cad8d1; border-radius: 6px; color: #52675d; background: #fff; font-size: var(--font-size-caption); font-weight: 750; cursor: pointer; }
.project-import-row-toggle:hover { border-color: var(--brand); color: var(--brand); background: #f1f8f4; }
.project-import-progress { display: grid; gap: 7px; padding: 12px; border: 1px solid var(--line); border-radius: 9px; background: #f8fbf9; }
.project-import-progress progress { width: 100%; accent-color: var(--brand); }
.project-import-result-list { max-height: 280px; overflow-y: auto; border: 1px solid var(--line); border-radius: 0 0 9px 9px; }
.project-import-result-list > div { padding: 9px 12px; display: grid; grid-template-columns: 90px 1fr; gap: 12px; border-top: 1px solid var(--line); font-size: var(--font-size-caption); }
.project-import-result-list > div:first-child { border-top: 0; }
.project-import-result-list > div.success strong { color: #16704e; }
.project-import-result-list > div.error strong, .project-import-result-list > div.error span { color: var(--danger); }
.resource-mode-switch { width: fit-content; padding: 3px; display: flex; gap: 3px; border-radius: 9px; background: #eef4f1; }
.resource-mode-switch button { min-height: 34px; padding: 0 15px; border: 0; border-radius: 7px; color: var(--muted); background: transparent; font-size: var(--font-size-caption); font-weight: 800; }
.resource-mode-switch button.active { color: #fff; background: var(--brand); box-shadow: 0 4px 12px rgba(18,112,78,.18); }
.resource-workbench-layout { min-height: 360px; display: grid; grid-template-columns: minmax(430px, .95fr) minmax(0, 1.05fr); gap: 14px; }
.resource-picker-panel, .resource-summary-panel, .resource-manual-form, .resource-demand-form { padding: 14px; border: 1px solid var(--line); border-radius: 11px; background: #fff; }
.usage-subcategory-field { align-content: start; }
.usage-subcategory-heading { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.usage-subcategory-heading b { flex: 0 0 auto; color: var(--muted); font-size: var(--font-size-small); }
.usage-subcategory-heading > span { min-width: 0; display: flex; justify-content: flex-end; gap: 5px; overflow-x: auto; scrollbar-width: thin; }
.usage-subcategory-heading button { min-height: 25px; padding: 2px 8px; border: 1px solid #d3e2db; border-radius: 999px; color: var(--brand); background: #f3faf6; font-size: var(--font-size-caption); font-weight: 750; white-space: nowrap; cursor: pointer; }
.usage-subcategory-heading button:hover { border-color: #8fbaa6; background: #e8f5ee; }
.usage-subcategory-field [data-usage-subcategory-match].is-existing { color: var(--brand); font-weight: 750; }
.resource-picker-panel { min-height: 0; display: flex; flex-direction: column; }
.resource-search { display: grid; gap: 7px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.resource-picker-browser { min-height: 0; margin-top: 10px; display: grid; grid-template-columns: 126px minmax(0, 1fr); gap: 10px; }
.resource-category-list { min-height: 0; max-height: 310px; padding-right: 7px; display: grid; align-content: start; gap: 5px; overflow-y: auto; border-right: 1px solid var(--line); }
.resource-category-list button { min-height: 42px; padding: 7px 8px; display: flex; align-items: center; justify-content: space-between; gap: 6px; border: 1px solid transparent; border-radius: 8px; color: var(--ink); background: #f4f7f5; text-align: left; }
.resource-category-list button:hover { border-color: #b9d9ca; background: #f2faf6; }
.resource-category-list button.active { border-color: var(--brand); color: var(--brand); background: var(--brand-soft); }
.resource-category-list button span { min-width: 0; overflow: hidden; font-size: var(--font-size-caption); font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.resource-category-list button small { flex: 0 0 auto; min-width: 20px; color: var(--muted); font-size: var(--font-size-caption); text-align: right; }
.resource-item-column { min-width: 0; min-height: 0; }
.resource-item-column-title { display: block; min-height: 22px; color: var(--ink); font-size: var(--font-size-caption); }
.resource-picker-list { min-height: 0; max-height: 310px; margin-top: 10px; display: grid; align-content: start; gap: 5px; overflow-y: auto; }
.resource-item-column .resource-picker-list { max-height: 278px; margin-top: 5px; }
.resource-picker-list button { min-height: 52px; padding: 8px 10px; display: grid; gap: 4px; border: 1px solid transparent; border-radius: 8px; color: var(--ink); background: #f8faf9; text-align: left; }
.resource-picker-list button:hover { border-color: #b9d9ca; background: #f2faf6; }
.resource-picker-list button.active { border-color: var(--brand); background: var(--brand-soft); box-shadow: inset 3px 0 0 var(--brand); }
.resource-picker-list button span { overflow: hidden; font-size: var(--font-size-small); font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.resource-picker-list button small { color: var(--muted); font-size: var(--font-size-caption); }
.resource-picker-empty { padding: 24px 8px; color: var(--muted); font-size: var(--font-size-caption); text-align: center; }
.resource-create-child { width: 100%; min-height: 36px; margin-top: 7px; border: 1px dashed #9bc7b3; border-radius: 8px; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-weight: 800; }
.resource-summary-panel { min-width: 0; background: #fbfdfc; }
.resource-selection-empty { min-height: 290px; display: grid; place-content: center; justify-items: center; gap: 7px; color: var(--muted); text-align: center; }
.resource-selection-empty strong { color: var(--ink); font-size: var(--font-size-small); }
.resource-selection-empty span, .resource-manual-note span { font-size: var(--font-size-caption); }
.resource-selected-card { padding: 14px; border: 1px solid #cfe1d8; border-radius: 10px; background: #fff; }
.resource-selected-head { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 13px; align-items: center; }
.resource-selected-image { width: 88px; height: 68px; padding: 0; overflow: hidden; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 8px; color: var(--brand); background: var(--brand-soft); cursor: zoom-in; }
.resource-selected-thumb { width: 100%; height: 100%; display: block; object-fit: cover; }
.resource-selected-head strong, .resource-selected-head small { display: block; }
.resource-selected-head strong { font-size: var(--font-size-card-title); }
.resource-selected-head small { margin-top: 4px; color: var(--muted); font-size: var(--font-size-caption); }
.resource-selected-head p { margin: 6px 0 0; color: #53635b; font-size: var(--font-size-caption); }
.resource-stock-grid { margin-top: 13px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--line); border-radius: 8px; }
.resource-stock-grid div { min-width: 0; padding: 9px; border-right: 1px solid var(--line); }
.resource-stock-grid div:last-child { border-right: 0; }
.resource-stock-grid small, .resource-stock-grid strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.resource-stock-grid small { color: var(--muted); font-size: var(--font-size-caption); }
.resource-stock-grid strong { margin-top: 5px; font-size: var(--font-size-small); }
.resource-detail-toggle { margin-top: 10px; padding: 5px 0; border: 0; color: var(--brand); background: transparent; font-size: var(--font-size-caption); font-weight: 800; }
.resource-template-button { margin: 10px 0 0 14px; padding: 5px 0; border: 0; color: #597065; background: transparent; font-size: var(--font-size-caption); font-weight: 800; }
.resource-inline-detail { margin-top: 7px; padding-top: 10px; border-top: 1px dashed var(--line); }
.resource-reservation-result { margin-top: 12px; padding: 11px 12px; display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; gap: 8px; align-items: center; border-radius: 9px; color: #176947; background: #edf9f3; }
.resource-reservation-result.has-shortage { color: #8a5a08; background: #fff7e6; }
.resource-reservation-result small, .resource-reservation-result strong { display: block; text-align: center; }
.resource-reservation-result small { font-size: var(--font-size-caption); opacity: .8; }
.resource-reservation-result strong { margin-top: 4px; font-size: var(--font-size-card-title); }
.resource-reservation-result > p { grid-column: 1 / -1; margin: 2px 0 0; text-align: center; }
.resource-manual-note { min-height: 80px; padding: 16px; display: grid; align-content: center; gap: 6px; border-radius: 9px; color: #52635b; background: #f2f7f4; }
.resource-manual-note strong { color: var(--ink); }
.resource-demand-form { display: grid; grid-template-columns: minmax(180px, .45fr) minmax(0, 1fr); gap: 14px; background: #fbfdfc; }
.detail-compact-table { overflow-x: auto; }
.detail-compact-table table { width: 100%; border-collapse: collapse; }
.detail-compact-table th, .detail-compact-table td { padding: 9px 8px; border-bottom: 1px solid #edf1ef; font-size: var(--font-size-caption); text-align: left; }
.detail-compact-table th { color: var(--muted); background: var(--surface-soft); }
.installation-summary { display: grid; gap: 8px; }
.installation-summary > div { min-height: 42px; padding: 7px 9px; display: flex; align-items: center; justify-content: space-between; border: 1px solid #edf1ef; border-radius: 7px; }
.installation-summary b { font-size: var(--font-size-caption); }

.project-dispatch-grid { display: grid; grid-template-columns: minmax(320px, .85fr) minmax(0, 1.15fr); gap: 12px; }
.project-assignment-panel, .project-photo-panel { min-height: 360px; }
.project-assignment-head-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
.assignment-timeline { display: grid; gap: 12px; }
.assignment-timeline article { display: grid; grid-template-columns: 78px minmax(0, 1fr); gap: 10px; }
.assignment-timeline article.today { padding: 8px; border: 1px solid #b9d9ca; border-radius: 10px; background: var(--brand-soft); }
.assignment-timeline time { padding-top: 9px; color: var(--brand); font-size: var(--font-size-caption); font-weight: 850; }
.assignment-timeline article > div { padding-left: 12px; border-left: 1px solid #b9d9ca; }
.assignment-person { min-height: 58px; padding: 5px 0; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto auto; gap: 9px; align-items: center; border-bottom: 1px solid #edf1ef; cursor: help; }
.assignment-avatar { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; color: var(--brand); background: var(--brand-soft); font-size: var(--font-size-caption); font-weight: 900; object-fit: cover; }
.assignment-person p { margin: 0; }
.assignment-person strong, .assignment-person small { display: block; }
.assignment-person strong { font-size: var(--font-size-caption); }
.assignment-person small { margin-top: 3px; color: var(--muted); font-size: var(--font-size-caption); }
.assignment-person > b { color: var(--muted); font-size: var(--font-size-caption); }
.project-photo-gallery { padding: 14px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.project-photo-gallery figure { margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 8px; cursor: zoom-in; }
.project-photo-gallery figure > button { width: 100%; padding: 0; display: block; overflow: hidden; border: 0; background: var(--surface-soft); cursor: zoom-in; }
.project-site-photo { width: 100%; aspect-ratio: 4/3; display: block; object-fit: cover; }
.project-photo-gallery figcaption { min-height: 50px; padding: 7px 8px; display: flex; align-items: center; justify-content: space-between; gap: 8px; cursor: default; }
.project-photo-gallery figcaption > div { min-width: 0; }
.project-photo-gallery strong, .project-photo-gallery small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-photo-gallery strong { font-size: var(--font-size-caption); }
.project-photo-gallery small { margin-top: 3px; color: var(--muted); font-size: var(--font-size-caption); }
.photo-delete-button { flex: 0 0 auto; padding: 4px 7px; border: 0; border-radius: 6px; color: var(--danger); background: var(--danger-soft); font-size: var(--font-size-caption); }

.project-bim-layout { display: grid; grid-template-columns: .9fr 1.1fr; gap: 12px; }
.bim-workflow { grid-column: 1 / -1; }
.bim-workflow > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.bim-workflow article { min-width: 150px; flex: 1; display: grid; grid-template-columns: 34px minmax(0, 1fr); align-items: center; gap: 10px; }
.bim-workflow article i { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: #aab5af; font-style: normal; font-size: var(--font-size-caption); font-weight: 900; }
.bim-workflow article.done i { background: #1ba56d; }
.bim-workflow article.active i { background: #f0a11d; }
.bim-workflow article p { margin: 0; }
.bim-workflow article strong, .bim-workflow article small { display: block; }
.bim-workflow article strong { font-size: var(--font-size-caption); }
.bim-workflow article small { margin-top: 4px; color: var(--muted); font-size: var(--font-size-caption); }
.bim-workflow > div > b { color: var(--muted); font-weight: 400; }
.bim-files, .bim-preview, .bim-element-properties { min-height: 310px; grid-column: 1 / -1; }
.bim-files { padding: 0; overflow: hidden; }
.bim-files:not([open]) { min-height: 0; }
.bim-files > summary { min-height: 58px; padding: 13px 15px; display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer; list-style: none; background: #fff; }
.bim-files > summary::-webkit-details-marker { display: none; }
.bim-files > summary span { display: grid; gap: 3px; }
.bim-files > summary strong { color: #1b3428; font-size: var(--font-size-small); }
.bim-files > summary small { color: var(--muted); font-size: var(--font-size-caption); font-weight: 500; }
.bim-files > summary > i { color: var(--muted); font-size: 18px; font-style: normal; transition: transform .18s ease; }
.bim-files[open] > summary > i { transform: rotate(180deg); }
.project-bim-files-body { padding: 13px 15px 15px; border-top: 1px solid var(--line); background: #fbfdfc; }
.project-bim-upload-error { margin-bottom: 11px; padding: 10px 12px; display: flex; gap: 9px; border: 1px solid #e9a9a3; border-radius: 8px; color: #8a2922; background: #fff3f1; font-size: var(--font-size-caption); }
.project-bim-upload-error strong { flex: 0 0 auto; }
.project-bim-files-body > header { margin-bottom: 11px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.project-bim-files-body > header p { margin: 0; color: var(--muted); font-size: var(--font-size-caption); line-height: 1.55; }
.project-bim-add { position: relative; flex: 0 0 auto; cursor: pointer; }
.project-bim-add.disabled { opacity: .58; pointer-events: none; }
.project-bim-add input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.project-bim-file-list { display: grid; gap: 7px; }
.project-bim-file-row { min-width: 0; min-height: 62px; padding: 8px 9px; display: grid; grid-template-columns: 42px minmax(180px, 1fr) auto auto; align-items: center; gap: 10px; border: 1px solid #dfe8e3; border-radius: 8px; background: #fff; }
.project-bim-file-row.uploading { position: relative; isolation: isolate; grid-template-columns: 42px minmax(180px, 1fr) auto; overflow: hidden; background: linear-gradient(90deg, #ccebdc 0 var(--upload-progress), #fff var(--upload-progress) 100%); transition: background .15s linear; }
.project-bim-file-row.uploading > * { position: relative; z-index: 1; }
.project-bim-file-row.uploading.failed { border-color: #e5a29c; background: #fff2f0; }
.project-bim-upload-percent { min-width: 44px; color: var(--brand-strong); text-align: right; font-size: 12px; }
.project-bim-file-row.failed .project-bim-upload-percent { color: #a33a32; }
.project-bim-file-row.selected { border-color: #65b590; background: #f3fbf7; box-shadow: inset 3px 0 0 var(--brand); }
.project-bim-file-icon { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 7px; color: #d8eee4; background: #183f30; font-size: 10px; font-weight: 900; letter-spacing: .05em; }
.project-bim-file-info { min-width: 0; display: grid; gap: 4px; }
.project-bim-file-info strong { overflow: hidden; color: var(--ink); font-size: var(--font-size-small); text-overflow: ellipsis; white-space: nowrap; }
.project-bim-file-info small { overflow: hidden; color: var(--muted); font-size: var(--font-size-caption); text-overflow: ellipsis; white-space: nowrap; }
.project-bim-cache-state { min-width: 58px; color: #9a6c14; font-size: var(--font-size-caption); font-weight: 750; text-align: center; }
.project-bim-cache-state.cached { color: var(--brand); }
.project-bim-file-actions { display: flex; align-items: center; gap: 6px; }
.bim-preview > h3 { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.bim-preview > h3 small { min-width: 0; overflow: hidden; color: var(--muted); font-size: var(--font-size-caption); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.bim-element-properties { min-height: 0; padding: 0; overflow: hidden; }
.bim-element-properties > summary { min-height: 58px; padding: 13px 15px; display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer; list-style: none; background: #fff; }
.bim-element-properties > summary::-webkit-details-marker { display: none; }
.bim-element-properties > summary span { min-width: 0; display: grid; gap: 3px; }
.bim-element-properties > summary strong { color: #1b3428; font-size: var(--font-size-small); }
.bim-element-properties > summary small { overflow: hidden; color: var(--muted); font-size: var(--font-size-caption); font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.bim-element-properties > summary > i { color: var(--muted); font-size: 18px; font-style: normal; transition: transform .18s ease; }
.bim-element-properties[open] > summary > i { transform: rotate(180deg); }
.bim-element-properties > div { padding: 14px; border-top: 1px solid var(--line); background: #f8fbf9; }
.bim-element-properties-empty { min-height: 92px; display: grid; place-items: center; border: 1px dashed #d5e1da; border-radius: 8px; color: var(--muted); background: #fff; font-size: var(--font-size-caption); }
.bim-element-properties-empty.error { color: var(--danger); }
.bim-element-property-groups { display: grid; gap: 12px; }
.bim-element-property-group { min-width: 0; overflow: hidden; border: 1px solid #d9e4de; border-radius: 9px; background: #fff; }
.bim-element-property-group > header { min-height: 52px; padding: 9px 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid #e7eeea; background: #f6faf8; }
.bim-element-property-group > header div { min-width: 0; display: grid; gap: 3px; }
.bim-element-property-group > header strong { color: var(--brand-strong); font-size: 13px; }
.bim-element-property-group > header small { color: var(--muted); font-size: 10px; }
.bim-element-property-group > header > span { flex: 0 0 auto; padding: 3px 7px; border-radius: 999px; color: var(--brand); background: #e6f4ec; font-size: 10px; font-weight: 750; }
.bim-element-property-table { overflow-x: auto; }
.bim-element-property-table table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.bim-element-property-table th, .bim-element-property-table td { padding: 8px 11px; border-bottom: 1px solid #edf2ef; text-align: left; vertical-align: top; font-size: 11px; line-height: 1.5; overflow-wrap: anywhere; }
.bim-element-property-table th { color: #708078; background: #fbfdfc; font-weight: 750; }
.bim-element-property-table th:nth-child(1), .bim-element-property-table td:nth-child(1) { width: 28%; }
.bim-element-property-table th:nth-child(3), .bim-element-property-table td:nth-child(3) { width: 20%; color: var(--muted); }
.bim-placeholder { min-height: 240px; display: grid; place-content: center; justify-items: center; gap: 9px; border-radius: 8px; color: #aeb8b2; background: radial-gradient(circle at center, #26342e, #111a16); }
.bim-placeholder span { width: 52px; height: 52px; display: grid; place-items: center; border: 1px solid #60746a; border-radius: 12px; color: #b8c8c0; font-size: var(--font-size-card-title); font-weight: 900; }
.bim-placeholder strong { color: #e4ebe7; font-size: var(--font-size-caption); }
.bim-placeholder small { font-size: var(--font-size-caption); }

@media (max-width: 900px) {
  .project-bim-file-row { grid-template-columns: 42px minmax(0, 1fr) auto; }
  .project-bim-cache-state { grid-column: 2; justify-self: start; }
  .project-bim-file-actions { grid-column: 2 / -1; flex-wrap: wrap; }
}

@media (max-width: 620px) {
  .project-bim-files-body > header { align-items: stretch; flex-direction: column; }
  .project-bim-add { justify-content: center; }
  .project-bim-file-row { grid-template-columns: 42px minmax(0, 1fr); }
  .project-bim-cache-state, .project-bim-file-actions { grid-column: 1 / -1; }
}

.project-detail-dialog { font-size: var(--font-size-body); }
.project-detail-dialog small,
.project-detail-dialog .project-stage-step,
.project-detail-dialog .detail-mini-list span,
.project-detail-dialog .detail-compact-table th,
.project-detail-dialog .detail-compact-table td,
.project-detail-dialog .assignment-timeline time,
.project-detail-dialog .assignment-person > b { font-size: var(--font-size-caption); }
.project-detail-dialog strong,
.project-detail-dialog b,
.project-detail-dialog button,
.project-detail-dialog p { font-size: var(--font-size-small); }
.project-detail-dialog h3,
.project-detail-dialog .detail-module-card > h3 { font-size: var(--font-size-card-title); }
.project-detail-dialog .project-detail-title h2 { font-size: var(--font-size-page-title); }
.project-detail-dialog .project-stage-editor-title strong { font-size: var(--font-size-card-title); }

@media (max-width: 1180px) {
  .project-detail-workspace { grid-template-columns: 1fr; }
  .project-basic-sidebar { position: static; max-height: none; }
  .project-basic-sidebar .project-detail-info { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .project-detail-identity { grid-template-columns: minmax(270px, 34%) minmax(0, 1fr); gap: 18px; }
  .project-detail-info { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .project-overview-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .project-overview-grid > .detail-module-card { grid-column: auto; }
  .project-dispatch-grid, .project-bim-layout { grid-template-columns: 1fr; }
  .bim-workflow, .bim-files, .bim-preview, .bim-element-properties { grid-column: auto; }
}

@media (max-width: 760px) {
  dialog.resource-workbench-dialog { width: calc(100vw - 16px); }
  .art-production-dialog { width: calc(100vw - 12px); max-height: calc(100vh - 12px); }
  .art-production-dialog .modal-card > header { min-height: 82px; padding: 15px 18px; }
  .art-production-dialog .modal-card h2 { font-size: 22px; }
  .art-production-dialog .modal-body { max-height: calc(100vh - 160px); padding: 12px; }
  .art-production-dialog .modal-card > footer { min-height: 66px; padding: 10px 14px; }
  .art-production-fields, .art-production-support { grid-template-columns: 1fr; }
  .art-production-field { padding: 14px; }
  .art-production-field.full { grid-column: auto; }
  .art-production-field-head { align-items: flex-start; flex-direction: column; }
  .art-inline-suggestions { width: 100%; }
  .art-production-tips, .art-design-upload-card { padding: 16px; }
  .art-design-preview { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .record-detail-dialog { width: calc(100vw - 16px); }
  .record-detail-dialog .modal-body { padding: 12px; }
  .record-edit-photo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .record-detail-summary { grid-template-columns: 86px repeat(2, minmax(0, 1fr)); gap: 0; padding: 10px; }
  .record-detail-cover { width: 74px; height: 74px; grid-row: span 2; }
  .record-detail-summary-item { min-height: 54px; padding: 4px 10px; }
  .record-detail-summary-item:nth-child(4) { border-left: 0; }
  .record-detail-facts { grid-template-columns: 1fr; }
  .record-detail-photo-grid, .record-detail-bottom-grid { grid-template-columns: 1fr; }
  .record-detail-photo-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .record-detail-creator-panel, .record-detail-creator-panel dl { grid-template-columns: 1fr; }
  .completion-dialog { width: calc(100vw - 12px); max-height: calc(100vh - 12px); }
  .completion-dialog .modal-card > header { min-height: 86px; padding: 18px; }
  .completion-dialog .modal-card h2 { font-size: 21px; }
  .completion-dialog .modal-body { max-height: calc(100vh - 176px); padding: 18px; }
  .completion-dialog .modal-card > footer { min-height: 66px; padding: 10px 18px; }
  .completion-summary { align-items: stretch; flex-wrap: wrap; gap: 12px; }
  .completion-summary-check { align-self: center; }
  .completion-summary-item { min-width: calc(50% - 34px); flex: 1; padding-right: 10px; }
  .completion-summary p { flex-basis: 100%; }
  .completion-upload-grid { grid-template-columns: 1fr; }
  .completion-local-preview { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .photo-handoff-main { grid-template-columns: minmax(130px, 1fr) 150px; }
  .photo-handoff-code { min-height: 150px; }
  .photo-handoff-code img { width: 132px; height: 132px; }
  .resource-workbench-layout, .resource-demand-form, .module-detail-layout { grid-template-columns: 1fr; }
  .resource-stock-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .resource-stock-grid div:nth-child(2) { border-right: 0; }
  .resource-stock-grid div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .project-card-grid { grid-template-columns: 1fr; padding: 12px; }
  .project-command-bar { align-items: stretch; flex-direction: column; }
  .project-status-tabs, .project-command-main, .project-command-actions { overflow-x: auto; justify-content: flex-start; }
  .project-status-tabs button, .project-command-main > *, .project-command-actions > * { flex: 0 0 auto; }
  .project-command-main { margin: 0; }
  .project-search-box { width: 270px; }
  .project-workspace { grid-template-columns: 1fr; }
  .project-insights { grid-template-columns: 1fr; }
  .project-type-tabs { overflow-x: visible; }
  .project-type-tabs button { flex: 0 0 auto; }
  .project-list-tools { width: auto; justify-content: flex-start; }
  .project-filter-popover { position: fixed; top: 50%; right: auto; left: 50%; width: min(430px, calc(100vw - 24px)); max-height: calc(100vh - 36px); overflow-y: auto; transform: translate(-50%, -50%); }
  .project-filter-fields { grid-template-columns: 1fr; }
  .project-filter-search, .project-filter-sort { grid-column: auto; }
  .project-detail-dialog { inset: 0; width: calc(100vw - 16px); height: calc(100vh - 16px); margin: auto; overflow: hidden; }
  .project-detail-dialog[data-presentation="drawer"] { width: calc(100vw - 8px); height: 100vh; }
  .project-detail-dialog[data-presentation="drawer"] .project-detail-resize-handle { display: none; }
  .project-detail-modal-content { padding: 14px; }
  .project-detail-back-to-top { right: 18px; bottom: 18px; }
  .project-detail-presentation-toggle { top: 72px; left: 18px; transform: none; }
  .project-detail-identity { grid-template-columns: 1fr; }
  .project-detail-cover { width: 100%; }
  .project-render-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .project-detail-actions { position: absolute; top: 14px; right: 14px; }
  .project-detail-actions .button { display: none; }
  .project-detail-head.editing .project-detail-title-row { flex-wrap: wrap; }
  .project-detail-head.editing .project-detail-actions { position: static; width: 100%; justify-content: flex-end; }
  .project-detail-head.editing .project-detail-actions .button { display: inline-flex; }
  .project-detail-actions .icon-button { color: #fff; background: rgba(0,0,0,.48); }
  .project-detail-info { grid-template-columns: 1fr; }
  .project-detail-fact-column { border-right: 0; border-bottom: 1px solid var(--line); }
  .project-detail-fact-column:last-child { border-bottom: 0; }
  .project-time-strip, .project-stage-path { padding: 13px; }
  .project-time-strip p { padding: 10px; }
  .project-stage-track { display: flex; overflow-x: auto; padding: 3px; }
  .project-stage-node { flex: 0 0 112px; }
  .project-stage-node::after { display: none; }
  .project-stage-workbench-head { flex-direction: column; }
  .project-stage-live-summary { width: 100%; }
  .project-stage-live-summary > span { min-width: 0; flex: 1; }
  .project-stage-picker { display: flex; overflow-x: auto; padding: 3px; }
  .project-stage-path.editing .project-stage-picker .project-stage-step { flex: 0 0 118px; }
  .project-stage-picker .project-stage-step:not(:last-child)::after { display: none; }
  .project-stage-popover, .project-stage-popover.edge-start, .project-stage-popover.edge-end { position: fixed; top: 50%; right: auto; left: 50%; width: min(440px, calc(100vw - 36px)); max-height: min(520px, calc(100vh - 72px)); transform: translate(-50%, -50%); }
  .project-stage-editor-title, .project-substage-head { align-items: stretch; flex-direction: column; }
  .project-stage-status-toggle { align-self: flex-start; }
  .project-substage-row { grid-template-columns: 1fr auto; }
  .project-substage-status { justify-self: start; grid-column: 1 / -1; }
  .project-detail-tabs { gap: 6px; overflow-x: auto; }
  .project-detail-tabs button { flex: 0 0 auto; }
  .project-detail-tabs button.project-batch-export-button { margin-left: 12px; }
  .project-execution-log-card > header, .project-execution-log-entry > header { align-items: flex-start; flex-direction: column; }
  .project-execution-log-pager { justify-content: space-between; }
  .project-execution-log-entry time { white-space: normal; }
  .project-execution-log-deleted-record dl { grid-template-columns: 1fr; }
  .project-execution-log-changes > div { grid-template-columns: 1fr; gap: 3px; }
  .project-execution-log-changes i { display: none; }
  .project-import-source, .project-import-source-fields, .project-import-json-source, .project-import-mapping, .project-batch-edit-controls { grid-template-columns: 1fr; }
  .project-import-json-editor { grid-column: 1; }
  .project-import-section-title, .project-import-summary, .project-import-result-summary { align-items: flex-start; flex-direction: column; gap: 5px; }
  .project-batch-edit-summary { align-items: flex-start; flex-direction: column; }
  .project-data-module > header, .project-data-module-header { align-items: stretch; flex-direction: column; }
  .project-module-header-actions { width: 100%; flex-wrap: wrap; }
  .project-module-group-actions { flex: 1 1 190px; }
  .project-module-group-actions .button { flex: 1; }
  .project-module-search-control { flex: 1 1 190px; }
  .project-module-search-control input { width: 100%; }
  .project-business-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .project-business-table-card > header { align-items: stretch; flex-direction: column; }
  .project-business-table-actions { justify-content: flex-start; }
  .project-module-sort-control { flex: 1 1 190px; }
  .project-module-sort-control select { width: 100%; min-width: 0; }
  .project-detail-delete-zone { align-items: stretch; flex-direction: column; }
  .project-overview-grid, .project-execution-grid { grid-template-columns: 1fr; }
  .project-overview-grid > .detail-module-card { grid-column: auto; }
  .project-photo-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bim-workflow > div { overflow-x: auto; justify-content: flex-start; }
  .bim-workflow article { flex: 0 0 160px; }
  .project-hover-card { display: none !important; }
}

.inquiry-create-form { padding:2px 0 10px; }.inquiry-create-form .field input[readonly] { color:#2d7058; background:#eef7f1; cursor:default; }.inquiry-file-drop { position:relative; display:flex; min-height:128px; flex-direction:column; align-items:center; justify-content:center; gap:7px; padding:18px; border:1px dashed #8fbdaa; border-radius:12px; color:#5b826f; background:#f8fcfa; text-align:center; transition:.18s ease; cursor:pointer; }.inquiry-file-drop:hover,.inquiry-file-drop.is-dragging,.inquiry-file-drop:focus { border-color:#16835d; outline:0; background:#eef9f2; box-shadow:inset 0 0 0 1px rgba(22,131,93,.12); }.inquiry-file-drop input { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }.inquiry-file-drop strong { color:#207456; font-size:13px; }.inquiry-file-drop small { color:#8ba197; font-size:11px; }.inquiry-file-list { display:grid; gap:7px; margin-top:9px; }.inquiry-file-list > p { margin:0; padding:9px 11px; color:#94a59d; font-size:11px; }.inquiry-file-list > div { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:10px; align-items:center; padding:9px 10px; border:1px solid #e4eee8; border-radius:8px; color:#3d6453; background:#fff; font-size:12px; }.inquiry-file-list span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.inquiry-file-list small { color:#99aaa2; }.inquiry-file-list button { width:22px; height:22px; padding:0; border:0; border-radius:6px; color:#8b6254; background:#fff0e9; font-size:17px; line-height:1; cursor:pointer; }
.inquiry-card.is-quoted { border-left:5px solid #16945f; background:linear-gradient(90deg,#edf9f2,#fff 34%); }.inquiry-card.is-quoted .inquiry-cover { box-shadow:0 0 0 2px rgba(22,148,95,.14); }.inquiry-detail-cover { display:block; width:100%; max-height:270px; object-fit:contain; border:1px solid var(--line); border-radius:10px; background:#f4f8f5; }.inquiry-detail-requirement { margin:0; white-space:pre-wrap; color:var(--text-soft); line-height:1.75; }.inquiry-detail-files { display:grid; gap:8px; }.inquiry-detail-files > div { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 10px; border:1px solid var(--line); border-radius:8px; color:var(--text-soft); font-size:12px; }.inquiry-detail-files > div span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.inquiry-timeline { display:grid; gap:13px; margin-left:5px; padding-left:15px; border-left:1px dashed #b9d8c6; }.inquiry-timeline > div { position:relative; display:grid; gap:4px; }.inquiry-timeline i { position:absolute; left:-21px; top:4px; width:9px; height:9px; border:2px solid #fff; border-radius:50%; background:#1b9a69; box-shadow:0 0 0 1px #9acdb0; }.inquiry-timeline strong { color:var(--text); font-size:12px; }.inquiry-timeline small { color:var(--muted); font-size:11px; }
.inquiry-heading { align-items:center; }.inquiry-tabs { display:flex; align-items:center; gap:8px; }.inquiry-tabs button { min-width:88px; padding:9px 15px; border:1px solid var(--line); border-radius:999px; color:var(--text-soft); background:#fff; font-weight:800; cursor:pointer; transition:.18s ease; }.inquiry-tabs button:hover,.inquiry-tabs button.active { border-color:#16835d; color:#fff; background:#16835d; box-shadow:0 5px 12px rgba(22,131,93,.16); }.inquiry-card.is-working { overflow:hidden; background:linear-gradient(90deg,#e0f7e9 0%,#f9fffb 24%,#d9f5e5 48%,#fff 72%,#e0f7e9 100%); background-size:260% 100%; animation:inquiry-green-flow 7s linear infinite; }.inquiry-card.is-review { border-left:5px solid #d6a52a; background:#fff8db; }.inquiry-card.is-completed { border-left:5px solid #148957; background:#e4f7eb; }.inquiry-card.is-urgent { background:linear-gradient(90deg,#fff0e8 0%,#ffd7c6 24%,#fff0e8 48%,#ffcab2 72%,#fff0e8 100%); background-size:260% 100%; animation:inquiry-red-flow 2.1s linear infinite; }.inquiry-card.is-urgent::before,.inquiry-card.is-urgent::after { animation:inquiry-fire-breathe 1.2s ease-in-out infinite; }.inquiry-card-title > b { color:var(--muted); font-weight:500; }.inquiry-company { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:10px 0 7px !important; color:var(--text) !important; font-size:13px; font-weight:750; }.inquiry-company span:last-child { color:var(--text-soft); font-size:12px; font-weight:650; white-space:nowrap; }.inquiry-created { display:inline-block; cursor:help; }.inquiry-card-actions > strong { color:#254e3d; font-size:14px; }.inquiry-urgent-button { border-color:#f0af8a !important; color:#b9451b !important; background:#fff0e8 !important; }.inquiry-urgent-button.active { color:#fff !important; border-color:#d94b21 !important; background:#df4d22 !important; }.inquiry-card-actions > div { flex-wrap:wrap; justify-content:flex-end; }.inquiry-toolbar { justify-content:flex-start; }.inquiry-toolbar .inquiry-live { margin-left:auto; }@keyframes inquiry-green-flow { from { background-position:0 0; } to { background-position:260% 0; } } @keyframes inquiry-red-flow { from { background-position:0 0; } to { background-position:260% 0; } } @media (prefers-reduced-motion:reduce) { .inquiry-card.is-working,.inquiry-card.is-urgent { animation:none; } }.inquiry-status.quote_pending { color:#966f13; background:#fff0b8; }.inquiry-status.claimed,.inquiry-status.breaking_down { color:#087a50; background:#daf4e4; }
.inquiry-tabs .inquiry-tab-count{display:inline-grid;min-width:18px;height:18px;margin-left:6px;padding:0 4px;place-items:center;border-radius:99px;color:#537267;background:#edf4f0;font-size:11px;line-height:1}.inquiry-tabs button.active .inquiry-tab-count,.inquiry-tabs button:hover .inquiry-tab-count{color:#087a58;background:#fff}
.inquiry-quote-section > header,.inquiry-quote-section > footer { display:flex; align-items:center; justify-content:space-between; gap:10px; }.inquiry-quote-section > header { margin-bottom:10px; }.inquiry-quote-section > footer { margin-top:12px; justify-content:flex-end; }.inquiry-quote-section > footer small { color:var(--danger); font-size:11px; }.inquiry-quote-upload { position:relative; overflow:hidden; cursor:pointer; }.inquiry-quote-upload input { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }.inquiry-detail-files > div > div { display:flex; gap:7px; flex:none; }
.inquiry-heading-actions { display:flex; align-items:center; gap:9px; }.inquiry-recycle-button { min-width:38px; padding:9px 10px; font-size:16px; }.inquiry-recycle-bin > .muted { display:block; margin:0 0 14px; line-height:1.65; }.inquiry-recycle-actions { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 14px; padding:11px; border:1px solid #f0d1c7; border-radius:10px; background:#fff9f7; }.inquiry-recycle-actions small { color:#906555; font-size:11px; line-height:1.5; }.inquiry-recycle-list { display:grid; gap:10px; }.inquiry-recycle-list article { padding:12px; border:1px solid var(--line); border-radius:10px; background:#fff; }.inquiry-recycle-list strong,.inquiry-recycle-list small { display:block; }.inquiry-recycle-list small { margin-top:6px; color:var(--muted); }.inquiry-recycle-list footer { display:flex; justify-content:flex-end; gap:8px; margin-top:12px; }
.inquiry-card { grid-template-columns:130px minmax(0,1fr) 250px; }.inquiry-card-actions > div { flex-wrap:nowrap; justify-content:flex-end; }.inquiry-card-actions > div .button { white-space:nowrap; }.inquiry-urgent-button:not(.active) { border-color:var(--line) !important; color:var(--text-soft) !important; background:#fff !important; }.inquiry-urgent-button.active { color:#c84822 !important; border-color:#e26742 !important; background:#fff7f3 !important; }@media (max-width:850px) { .inquiry-card { grid-template-columns:100px minmax(0,1fr); } .inquiry-card-actions { grid-column:2; } .inquiry-card-actions > div { justify-content:flex-start; } }
.inquiry-card { transform-origin:center; will-change:transform,opacity; }@media (prefers-reduced-motion:reduce) { .inquiry-card { will-change:auto; } }
.inquiry-card-title strong { font-size:19px; }.inquiry-card-title > b { font-size:18px; }.inquiry-card .inquiry-status { padding:5px 9px; font-size:13px; }.inquiry-company { font-size:16px; }.inquiry-company span:last-child { font-size:14px; }.inquiry-card-main .inquiry-created { font-size:14px; }.field-required { margin-left:3px; color:var(--danger); font-style:normal; }
.inquiry-sort-control { position:relative; z-index:40; }.inquiry-sort-menu { position:absolute; z-index:50; top:calc(100% + 7px); left:0; display:grid; min-width:184px; padding:6px; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:0 12px 28px rgba(22,55,41,.16); }.inquiry-sort-menu button { padding:9px 10px; border:0; border-radius:7px; color:var(--text-soft); background:transparent; text-align:left; font:inherit; font-size:12px; cursor:pointer; }.inquiry-sort-menu button:hover,.inquiry-sort-menu button.active { color:#126f4e; background:#edf8f1; font-weight:800; }
.inquiry-field-heading { display:flex !important; align-items:center; justify-content:space-between; gap:10px; }.inquiry-field-heading .button { margin-left:auto; }
.inquiry-create-form .inquiry-required-field { padding:12px; border:1px solid transparent; border-radius:11px; box-shadow:0 5px 14px rgba(38,69,55,.07); }
.inquiry-create-form .inquiry-required-field > span { color:#203b30; font-weight:850; }
.inquiry-create-form .inquiry-required-field input { background:#fff; font-weight:700; }
.inquiry-create-form .inquiry-required-exhibitionName { border-color:#edc55b; background:#fff6cf; }
.inquiry-create-form .inquiry-required-exhibitionName input { border-color:#d8a92e; }
.inquiry-create-form .inquiry-required-exhibitorName { border-color:#ee9d85; background:#fff0e9; }
.inquiry-create-form .inquiry-required-exhibitorName input { border-color:#dd7455; }
.inquiry-create-form .inquiry-required-clientCompany { border-color:#82b8e8; background:#eaf5ff; }
.inquiry-create-form .inquiry-required-clientCompany input { border-color:#4f96d4; }

/* 询价中心：加急单以低频火焰边缘提示，动画可由系统“减少动态效果”设置关闭。 */
.inquiry-page { width:100%; max-width:none; margin:0; }
.inquiry-heading { display:flex; align-items:center; justify-content:space-between; gap:18px; margin:0 0 18px; }.inquiry-heading h2 { margin:4px 0 0; font-size:28px; }.inquiry-heading h2 b { display:inline-grid; min-width:26px; height:26px; place-items:center; border-radius:999px; color:#fff; background:var(--primary); font-size:13px; vertical-align:middle; }
.inquiry-toolbar { position:relative; z-index:30; overflow:visible; display:flex; align-items:end; gap:12px; padding:15px; margin-bottom:14px; }.inquiry-toolbar label { display:grid; gap:6px; min-width:170px; color:var(--muted); font-size:11px; }.inquiry-toolbar label:first-child { flex:1; max-width:440px; }.inquiry-toolbar input,.inquiry-toolbar select { height:36px; padding:0 10px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--ink); }.inquiry-live { margin-left:auto; color:#16835d; font-size:12px; font-weight:700; }.inquiry-live i { display:inline-block; width:8px; height:8px; margin-right:6px; border-radius:50%; background:#24b979; animation:inquiry-live-pulse 1.8s infinite; }
.inquiry-list { display:grid; gap:10px; }.inquiry-card { position:relative; display:grid; grid-template-columns:130px minmax(0,1fr) 210px; gap:16px; align-items:center; min-height:140px; padding:14px; overflow:hidden; border:1px solid var(--line); border-radius:14px; background:#fff; box-shadow:0 6px 18px rgba(17,57,42,.04); }.inquiry-card.is-urgent { order:-1; border-color:#f29c58; background:linear-gradient(100deg,#fff8f1,#fff 42%); box-shadow:0 6px 22px rgba(236,104,46,.16); }.inquiry-card.is-urgent::before,.inquiry-card.is-urgent::after { position:absolute; z-index:0; content:''; pointer-events:none; inset:-35% auto auto -15%; width:44%; height:170%; background:radial-gradient(ellipse at bottom,rgba(255,79,20,.24),rgba(255,186,52,.12) 36%,transparent 70%); filter:blur(11px); animation:inquiry-fire-breathe 1.7s ease-in-out infinite; }.inquiry-card.is-urgent::after { right:-12%; left:auto; animation-delay:-.8s; }.inquiry-card > * { position:relative; z-index:1; }.inquiry-cover { width:130px; height:104px; display:grid; place-items:center; overflow:hidden; border-radius:9px; color:var(--muted); background:#edf3ef; font-size:11px; }.inquiry-cover img { width:100%; height:100%; object-fit:cover; }.inquiry-card-title { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }.inquiry-card-title strong { font-size:16px; }.inquiry-card-main p { margin:8px 0; color:var(--text-soft); }.inquiry-card-main small { color:var(--muted); }.inquiry-meta { display:flex; flex-wrap:wrap; gap:8px 16px; color:var(--text-soft); font-size:12px; }.inquiry-status,.inquiry-urgent-mark { padding:4px 7px; border-radius:6px; font-size:10px; font-weight:800; }.inquiry-status.pending { color:#bf5b37; background:#fff0e8; }.inquiry-status.claimed { color:#3376a4; background:#eaf4fd; }.inquiry-status.breaking_down,.inquiry-status.quote_pending { color:#98701b; background:#fff6db; }.inquiry-status.quoted,.inquiry-status.won { color:#087c56; background:#e3f7ed; }.inquiry-status.lost { color:#70817a; background:#eef1ef; }.inquiry-urgent-mark { color:#a63d17; background:#ffe1c7; }.inquiry-card-actions { align-self:stretch; display:flex; flex-direction:column; justify-content:space-between; gap:12px; padding-left:16px; border-left:1px solid var(--line); color:var(--muted); font-size:11px; }.inquiry-card-actions > div { display:flex; gap:7px; }.drawer-actions { display:flex; flex-wrap:wrap; gap:9px; margin-top:18px; }.detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; padding:13px; border-radius:9px; background:var(--surface-soft); color:var(--text-soft); font-size:12px; }.detail-stack > p { line-height:1.7; color:var(--text-soft); }
@keyframes inquiry-live-pulse { 50% { box-shadow:0 0 0 5px rgba(36,185,121,0); } } @keyframes inquiry-fire-breathe { 50% { opacity:.65; transform:scale(1.12) translateY(-4%); } }
@media (prefers-reduced-motion:reduce) { .inquiry-live i,.inquiry-card.is-urgent::before,.inquiry-card.is-urgent::after { animation:none; } }
@media (max-width:850px) { .inquiry-card { grid-template-columns:100px minmax(0,1fr); }.inquiry-cover { width:100px; height:82px; }.inquiry-card-actions { grid-column:2; border-left:0; border-top:1px solid var(--line); padding:10px 0 0; flex-direction:row; align-items:center; }.inquiry-toolbar { align-items:stretch; flex-wrap:wrap; }.inquiry-live { margin-left:0; } }
.inquiry-detail-stack .detail-section h3 { font-size:18px; }.inquiry-detail-stack .detail-grid { font-size:14px; }.inquiry-detail-stack .detail-grid small { font-size:13px; }.inquiry-detail-stack .detail-grid strong { font-size:16px; }.inquiry-detail-stack .inquiry-detail-requirement { font-size:15px; }.inquiry-detail-stack .inquiry-detail-files > div { font-size:14px; }.inquiry-detail-stack .inquiry-timeline strong { font-size:14px; }.inquiry-detail-stack .inquiry-timeline small { font-size:13px; }.inquiry-history-more { display:flex; width:100%; align-items:center; justify-content:space-between; margin-top:13px; padding:11px 2px; border:0; border-top:1px dashed #bad5c6; border-bottom:1px dashed #bad5c6; color:#197654; background:transparent; font:inherit; font-size:13px; font-weight:800; cursor:pointer; }.inquiry-history-more:hover { color:#0e583f; background:#f4fbf7; }.inquiry-history-hidden { margin-top:13px; }.inquiry-edit-file-list { margin-top:8px; }
.inquiry-file-preview { min-width:0; padding:0; border:0; color:var(--text-soft); background:transparent; overflow:hidden; text-align:left; text-overflow:ellipsis; white-space:nowrap; font:inherit; cursor:pointer; }.inquiry-file-preview:hover { color:var(--brand); text-decoration:underline; }
.inquiry-excel-preview { display:grid; gap:18px; max-height:65vh; overflow:auto; }.inquiry-excel-sheet { display:grid; gap:8px; }.inquiry-excel-sheet h3 { margin:0; color:var(--text); font-size:15px; }.inquiry-excel-sheet > div { overflow:auto; border:1px solid var(--line); border-radius:9px; }.inquiry-excel-sheet table { width:max-content; min-width:100%; border-collapse:collapse; font-size:12px; }.inquiry-excel-sheet th,.inquiry-excel-sheet td { max-width:260px; padding:8px 10px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:left; }.inquiry-excel-sheet th { position:sticky; top:0; color:#fff; background:#176b4c; }.inquiry-excel-sheet tr:nth-child(even) td { background:#f7fbf8; }.inquiry-excel-sheet small { color:var(--muted); }
.drawer.inquiry-detail-drawer > header { display:none; }.drawer.inquiry-detail-drawer .drawer-body { padding:0 22px 34px; }.inquiry-detail-layout { padding-top:0; }.inquiry-detail-hero { position:relative; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:14px; min-height:138px; margin:0 -22px 20px; padding:22px 22px 18px; overflow:hidden; border-bottom:1px solid #d9ebe1; background:linear-gradient(152deg,#fff 0%,#f3fcf7 58%,#e0f7ea 100%); }.inquiry-detail-hero::after { position:absolute; z-index:0; right:-50px; top:-70px; width:290px; height:210px; border-radius:50%; content:''; background:rgba(255,255,255,.48); transform:rotate(-22deg); }.inquiry-detail-hero > * { position:relative; z-index:1; }.inquiry-detail-hero > small { grid-column:1 / -1; margin-bottom:-7px; color:#197653; font-size:12px; font-weight:900; letter-spacing:.13em; }.inquiry-detail-hero h2 { display:inline-block; margin:0 9px 0 0; color:#173b2d; font-size:27px; line-height:1.2; }.inquiry-detail-hero p { margin:10px 0 0; color:#6b8378; font-size:14px; }.inquiry-detail-hero aside { grid-column:2; grid-row:1 / span 2; display:flex; align-items:flex-start; gap:8px; }.inquiry-detail-hero .icon-button { width:42px; height:42px; border:1px solid #d7e9df; border-radius:12px; color:#183c2e; background:rgba(255,255,255,.72); font-size:25px; }.inquiry-detail-layout .detail-section { margin-bottom:18px; padding:20px; border:1px solid #dcece3; border-radius:13px; background:#fff; box-shadow:0 5px 16px rgba(17,57,42,.035); }.inquiry-detail-layout .detail-section > header { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:15px; }.inquiry-detail-layout .detail-section h3 { display:flex; align-items:center; gap:10px; margin:0; color:#16382c; font-size:19px; }.inquiry-detail-layout .detail-section h3 i { display:grid; width:29px; height:29px; place-items:center; border-radius:7px; color:#fff; background:#087a52; font-style:normal; font-size:16px; }.inquiry-detail-info-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }.inquiry-detail-info-card { display:grid; gap:13px; padding:17px 18px; border-radius:10px; background:linear-gradient(135deg,#f7fbf9,#eef7f2); }.inquiry-detail-info-card > div,.inquiry-detail-edit-field { display:grid; grid-template-columns:108px minmax(0,1fr); align-items:center; gap:12px; min-height:24px; }.inquiry-detail-info-card small,.inquiry-detail-edit-field small { color:#789085; font-size:14px; }.inquiry-detail-info-card strong { color:#1c382e; font-size:15px; }.inquiry-detail-edit-field { margin:0; }.inquiry-detail-edit-field input,.inquiry-detail-edit-field textarea { width:100%; min-width:0; padding:7px 9px; border:1px solid #bdd8c9; border-radius:7px; color:#1b3c2e; background:#fff; font:inherit; font-size:14px; }.inquiry-detail-edit-field textarea { min-height:90px; resize:vertical; line-height:1.6; }.inquiry-detail-copy,.inquiry-detail-url-section { background:linear-gradient(135deg,#fff,#f9fdfb) !important; }.inquiry-detail-copy .inquiry-detail-edit-field,.inquiry-detail-url-section .inquiry-detail-edit-field { grid-template-columns:1fr; gap:7px; }.inquiry-detail-copy .inquiry-detail-requirement { min-height:52px; color:#29483b; font-size:15px; }.inquiry-detail-url-section a,.inquiry-detail-url-section .muted { display:block; margin:0; padding:12px 14px; overflow:hidden; border-radius:9px; color:#2d7257; background:#eef8f3; text-overflow:ellipsis; white-space:nowrap; }.inquiry-detail-file-grid { display:grid; grid-template-columns:1fr; gap:14px; }.inquiry-detail-file-grid .detail-section { min-width:0; }.inquiry-detail-file-grid .inquiry-file-drop { min-height:104px; }.inquiry-detail-file-grid .inquiry-detail-files > div { padding:11px; background:#fafdfb; }.inquiry-detail-file-grid .inquiry-detail-files > div > div { gap:5px; }.inquiry-detail-history .inquiry-timeline { margin:3px 0 0 9px; padding-left:18px; border-left:2px solid #bce6ce; }.inquiry-detail-history .inquiry-timeline > div { gap:5px; padding-bottom:8px; }.inquiry-detail-history .inquiry-timeline i { left:-25px; top:3px; width:11px; height:11px; background:#0b8d60; box-shadow:0 0 0 1px #89cfaa; }.inquiry-detail-history .inquiry-timeline strong { color:#203d30; font-size:15px; }.inquiry-detail-history .inquiry-timeline small { font-size:13px; line-height:1.4; }.inquiry-detail-inline-form { display:contents; }.inquiry-detail-layout .drawer-actions { margin:2px 0 0; }.inquiry-detail-layout .inquiry-status { vertical-align:3px; font-size:12px; }.inquiry-detail-layout .inquiry-history-hidden { margin-top:14px; }.inquiry-detail-layout .inquiry-history-more { margin-top:13px; }
.inquiry-detail-info-grid { grid-template-columns:1fr; }.inquiry-detail-overview { grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:34px; row-gap:0; }.inquiry-detail-overview > div { min-height:48px; padding:8px 0; border-bottom:1px solid rgba(118,157,138,.15); }.inquiry-detail-overview > div:nth-last-child(-n + 2) { border-bottom:0; }.inquiry-detail-copy .inquiry-detail-edit-field { grid-template-columns:108px minmax(0,1fr); }.inquiry-detail-reference-row { display:grid; grid-template-columns:108px minmax(0,1fr); align-items:center; gap:12px; min-height:48px; padding:10px 13px; margin-bottom:13px; border:1px solid #d9eae0; border-radius:9px; background:#f7fbf9; }.inquiry-detail-reference-row .inquiry-detail-url-field { display:contents; }.inquiry-detail-reference-row small { color:#789085; font-size:14px; }.inquiry-detail-reference-row a { overflow:hidden; color:#187557; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }.inquiry-detail-reference-row strong { color:var(--muted); font-size:14px; }.inquiry-detail-reference-row .inquiry-detail-edit-field { display:contents; }.inquiry-detail-reference-row .inquiry-detail-edit-field input { min-width:0; }.inquiry-detail-file-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; flex-wrap:wrap; }.inquiry-detail-inquiry-files > header { align-items:center; }.inquiry-detail-inquiry-files > header h3 { min-width:0; }
.inquiry-detail-reference-row.is-editable { grid-template-columns:108px minmax(0,1fr) auto; }.inquiry-detail-reference-row.is-editable .button { white-space:nowrap; }
.inquiry-detail-reference-row.is-editing { grid-template-columns:minmax(0,1fr) auto; }.inquiry-inline-url-editor { display:grid; grid-template-columns:108px minmax(0,1fr); align-items:center; gap:12px; min-width:0; }.inquiry-inline-url-editor small { color:#789085; font-size:14px; }.inquiry-inline-url-editor input { width:100%; min-width:0; padding:7px 9px; border:1px solid #bdd8c9; border-radius:7px; color:#1b3c2e; background:#fff; font:inherit; font-size:14px; }.inquiry-inline-url-actions { display:flex; gap:7px; }
@media (max-width:680px) { .drawer.inquiry-detail-drawer .drawer-body { padding:0 14px 28px; }.inquiry-detail-hero { margin:0 -14px 16px; padding:18px 14px 16px; }.inquiry-detail-hero h2 { font-size:23px; }.inquiry-detail-hero aside { gap:5px; }.inquiry-detail-info-grid,.inquiry-detail-file-grid { grid-template-columns:1fr; gap:12px; }.inquiry-detail-layout .detail-section { padding:15px; }.inquiry-detail-info-card > div,.inquiry-detail-edit-field { grid-template-columns:86px minmax(0,1fr); gap:8px; } }
.drawer.inquiry-detail-drawer { width:min(var(--inquiry-detail-drawer-width, 720px),92vw); }.drawer.inquiry-detail-drawer.is-resizing { transition:none; user-select:none; }.inquiry-detail-resize-handle { display:none; }.drawer.inquiry-detail-drawer .inquiry-detail-resize-handle { position:absolute; z-index:40; top:0; bottom:0; left:0; width:12px; display:block; cursor:ew-resize; touch-action:none; }.drawer.inquiry-detail-drawer .inquiry-detail-resize-handle::before { position:absolute; top:50%; left:3px; width:4px; height:72px; border-radius:99px; content:''; background:rgba(23,107,76,.3); box-shadow:0 0 0 1px rgba(255,255,255,.7); transform:translateY(-50%); transition:background .16s ease,height .16s ease; }.drawer.inquiry-detail-drawer .inquiry-detail-resize-handle:hover::before,.drawer.inquiry-detail-drawer.is-resizing .inquiry-detail-resize-handle::before { height:110px; background:var(--brand); }body.inquiry-detail-drawer-resizing { cursor:ew-resize; user-select:none; }.drawer.inquiry-detail-drawer .drawer-body { padding-bottom:22px; }.inquiry-detail-hero { min-height:92px; margin-bottom:12px; padding:14px 22px 12px; }.inquiry-detail-hero h2 { font-size:23px; }.inquiry-detail-hero p { margin-top:5px; font-size:13px; }.inquiry-detail-layout .detail-section { margin-bottom:12px; padding:14px; border-radius:11px; }.inquiry-detail-layout .detail-section > header { margin-bottom:10px; }.inquiry-detail-layout .detail-section h3 { gap:8px; font-size:17px; }.inquiry-detail-layout .detail-section h3 i { width:26px; height:26px; border-radius:6px; font-size:14px; }.inquiry-detail-info-grid { gap:12px; }.inquiry-detail-info-card { gap:9px; padding:12px 14px; }.inquiry-detail-info-card > div,.inquiry-detail-edit-field { min-height:21px; }.inquiry-detail-info-card small,.inquiry-detail-edit-field small { font-size:13px; }.inquiry-detail-info-card strong { font-size:14px; }.inquiry-detail-file-grid { gap:0; }.inquiry-detail-file-grid .detail-section { margin-bottom:12px; }.inquiry-detail-file-grid .inquiry-file-drop { min-height:82px; padding:12px; }.inquiry-detail-history .inquiry-timeline { margin-top:0; }.inquiry-detail-history .inquiry-timeline > div { gap:3px; padding-bottom:5px; }
.inquiry-card.is-completed:not(.is-urgent),.inquiry-card.is-completed.is-working:not(.is-urgent) { border-left-color:#086a45; background:#bfe3cd !important; box-shadow:inset 0 0 0 1px rgba(8,106,69,.1),0 7px 18px rgba(8,106,69,.08); background-position:0 0 !important; animation:none !important; }.inquiry-card.is-working:not(.is-urgent) { border-left:5px solid #0b6c49; background:#d9f0e3; box-shadow:inset 0 0 0 1px rgba(11,108,73,.08),0 7px 18px rgba(11,108,73,.06); animation:none; }.inquiry-card.is-working:not(.is-urgent)::before,.inquiry-card.is-working:not(.is-urgent)::after { position:absolute; z-index:0; top:-32%; left:-28%; width:28%; height:165%; content:''; pointer-events:none; opacity:0; background:linear-gradient(90deg,transparent 0%,rgba(28,143,99,.04) 20%,rgba(6,101,66,.2) 47%,rgba(129,255,196,.52) 50%,rgba(6,101,66,.2) 53%,rgba(28,143,99,.04) 80%,transparent 100%); filter:blur(1px); transform:skewX(-24deg); animation:inquiry-green-meteor 8.6s cubic-bezier(.24,.68,.4,1) infinite; }.inquiry-card.is-working:not(.is-urgent)::after { top:-45%; left:-43%; width:20%; height:185%; opacity:0; animation-delay:-4.1s; animation-duration:11.7s; }.inquiry-quote-section .inquiry-quote-drop { min-height:62px; padding:9px 12px; gap:3px; background:#fbfdfc; }.inquiry-quote-section .inquiry-quote-drop strong { font-size:12px; }.inquiry-quote-section .inquiry-quote-drop small { font-size:10px; }

@keyframes inquiry-green-meteor { 0%,17% { opacity:0; transform:translateX(0) skewX(-24deg); } 20% { opacity:.85; } 36% { opacity:0; transform:translateX(590%) skewX(-24deg); } 100% { opacity:0; transform:translateX(590%) skewX(-24deg); } }
@media (prefers-reduced-motion:reduce) { .inquiry-card.is-working:not(.is-urgent)::before,.inquiry-card.is-working:not(.is-urgent)::after { animation:none; } }
.inquiry-detail-file-grid input[type="file"][hidden] { display:none !important; }.inquiry-detail-hero aside .button { min-width:42px; min-height:42px; height:42px; padding:0 14px; }
.inquiry-detail-layout input[type="file"][hidden] { display:none !important; }.inquiry-detail-subsection { margin-top:14px; padding-top:14px; border-top:1px solid #e4eee8; }.inquiry-detail-subsection h4 { margin:0 0 9px; color:#285342; font-size:14px; }.inquiry-detail-subsection > header { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:9px; }.inquiry-detail-subsection > header h4 { margin:0; }.inquiry-detail-info .inquiry-detail-copy,.inquiry-detail-info .inquiry-detail-url-section { background:transparent !important; }.inquiry-detail-info .inquiry-detail-url-section a,.inquiry-detail-info .inquiry-detail-url-section .muted { padding:10px 12px; }.inquiry-detail-inquiry-files .inquiry-file-drop { min-height:72px; padding:10px 12px; }.inquiry-detail-inquiry-files .inquiry-detail-files > div,.inquiry-quote-section .inquiry-detail-files > div { padding:10px; background:#fafdfb; }
.inquiry-detail-info-card > div:nth-child(4) { align-items:start; }.inquiry-detail-info-card > div:nth-child(4) strong { line-height:1.55; white-space:pre-wrap; }.inquiry-detail-url-field a { display:block; min-width:0; overflow:hidden; color:#207456; font-size:14px; font-weight:700; line-height:1.5; text-overflow:ellipsis; white-space:nowrap; }.inquiry-detail-url-field a:hover { text-decoration:underline; }.inquiry-detail-info-card .inquiry-detail-edit-field textarea { min-height:74px; }
.inquiry-create-upload { display:grid; gap:14px; padding:16px; border:1px solid #dfece5; border-radius:12px; background:#fff; }.inquiry-create-upload > header { display:flex; align-items:center; gap:10px; }.inquiry-create-upload > header i { display:grid; width:32px; height:32px; place-items:center; border-radius:8px; color:#087a52; background:#e9f8f0; font-style:normal; font-size:18px; }.inquiry-create-upload > header strong,.inquiry-create-upload > header small { display:block; }.inquiry-create-upload > header strong { color:#1e4032; font-size:15px; }.inquiry-create-upload > header small { margin-top:3px; color:#91a39a; font-size:11px; }.inquiry-create-upload-row { display:grid; grid-template-columns:170px minmax(0,1fr); gap:16px; align-items:center; }.inquiry-create-upload-row > div:first-child b,.inquiry-create-upload-row > div:first-child small { display:block; }.inquiry-create-upload-row > div:first-child b { color:#355548; font-size:13px; }.inquiry-create-upload-row > div:first-child small { margin-top:5px; color:#8a9d94; font-size:11px; line-height:1.55; }.inquiry-create-upload-row .inquiry-file-drop { min-height:96px; padding:14px; }.inquiry-create-upload-row .inquiry-file-drop strong em { margin:0 3px; color:#92a59b; font-style:normal; font-weight:500; }.inquiry-create-upload-row .inquiry-file-list { margin-top:7px; }@media (max-width:680px) { .inquiry-create-upload-row { grid-template-columns:1fr; gap:8px; } }
.inquiry-upload-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }.inquiry-upload-action { position:relative; display:grid; min-height:70px; place-content:center; gap:4px; overflow:hidden; border:1px dashed #8fbdaa; border-radius:10px; color:#1d7655; background:#fbfefc; text-align:center; cursor:pointer; transition:.18s ease; }.inquiry-upload-action:hover,.inquiry-upload-action:focus,.inquiry-upload-action.is-dragging { border-color:#16835d; outline:0; background:#eef9f2; box-shadow:inset 0 0 0 1px rgba(22,131,93,.12); }.inquiry-upload-action input { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }.inquiry-upload-action strong { font-size:13px; }.inquiry-upload-action small { color:#8b9f95; font-size:10px; }.inquiry-upload-paste { cursor:copy; }@media (max-width:680px) { .inquiry-upload-actions { grid-template-columns:1fr; } }

/* 询价卡片：统一用阶段进度表达处理状态。 */
.inquiry-list { gap:14px; }.inquiry-card { --inquiry-accent:#d39a24; --inquiry-accent-light:#f6d36d; --inquiry-surface:#fff9e7; grid-template-columns:150px minmax(250px,1fr) minmax(310px,1.05fr) 235px; gap:20px; min-height:154px; padding:15px 18px; border-color:color-mix(in srgb,var(--inquiry-accent) 42%,#d5e6dd); border-left:6px solid var(--inquiry-accent); background:linear-gradient(108deg,var(--inquiry-surface) 0%,#fff 47%,color-mix(in srgb,var(--inquiry-surface) 65%,#fff) 100%); box-shadow:0 8px 22px color-mix(in srgb,var(--inquiry-accent) 10%,transparent); }.inquiry-card.state-new { --inquiry-accent:#cc941e; --inquiry-accent-light:#f1ca57; --inquiry-surface:#fff8df; }.inquiry-card.state-working { --inquiry-accent:#2584ec; --inquiry-accent-light:#55b6fb; --inquiry-surface:#eaf7ff; }.inquiry-card.state-review { --inquiry-accent:#c9901d; --inquiry-accent-light:#efc758; --inquiry-surface:#fff7dc; }.inquiry-card.state-completed { --inquiry-accent:#118a57; --inquiry-accent-light:#48c88b; --inquiry-surface:#e2f8eb; }.inquiry-card.is-working:not(.is-urgent)::before,.inquiry-card.is-working:not(.is-urgent)::after { display:none; }.inquiry-card.is-urgent { --inquiry-accent:#d44b2d; --inquiry-accent-light:#f17b58; --inquiry-surface:#fff0ea; border-color:#ef9b83; border-left-color:#d44b2d; background:linear-gradient(108deg,#fff0ea 0%,#fff 48%,#fff2eb 100%) !important; box-shadow:0 8px 22px rgba(212,75,45,.15); }.inquiry-card .inquiry-cover { width:150px; height:118px; border:1px solid rgba(255,255,255,.72); border-radius:12px; background:rgba(255,255,255,.7); box-shadow:0 5px 14px rgba(31,78,57,.06); }.inquiry-card-main { min-width:0; }.inquiry-card-title { gap:8px; }.inquiry-card-title strong { color:#17382a; font-size:19px; }.inquiry-card-title > b { color:#718b7d; font-size:17px; }.inquiry-card .inquiry-status { color:var(--inquiry-accent); background:color-mix(in srgb,var(--inquiry-accent) 12%,#fff); font-size:13px; }.inquiry-card .inquiry-company { margin:12px 0 7px !important; font-size:16px; }.inquiry-card .inquiry-company span:last-child { display:none; }.inquiry-card .inquiry-created { color:#70877b; font-size:14px; }.inquiry-card-progress { align-self:center; min-width:0; }.inquiry-card-progress header { display:flex; align-items:center; justify-content:space-between; margin-bottom:9px; color:#4e7463; font-size:13px; }.inquiry-card-progress header b { color:var(--inquiry-accent); font-size:19px; }.inquiry-progress-track { height:12px; overflow:hidden; border:1px solid rgba(83,135,110,.12); border-radius:99px; background:rgba(255,255,255,.7); box-shadow:inset 0 1px 3px rgba(21,74,49,.07); }.inquiry-progress-track > i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--inquiry-accent),var(--inquiry-accent-light)); box-shadow:0 2px 7px color-mix(in srgb,var(--inquiry-accent) 34%,transparent); transition:width .35s ease; }.inquiry-progress-steps { position:relative; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:0; margin-top:13px; }.inquiry-progress-steps::before { position:absolute; z-index:0; top:8px; right:8%; left:8%; height:4px; border-radius:9px; content:''; background:#dbe5e0; }.inquiry-progress-step { position:relative; z-index:1; display:grid; justify-items:center; gap:5px; min-width:0; color:#80958a; font-size:11px; font-weight:750; text-align:center; }.inquiry-progress-step i { display:grid; width:18px; height:18px; place-items:center; border:4px solid #d6e0db; border-radius:50%; color:#fff; background:#eff3f1; box-sizing:border-box; font-style:normal; font-size:10px; }.inquiry-progress-step.done,.inquiry-progress-step.current { color:var(--inquiry-accent); }.inquiry-progress-step.done i { border-color:var(--inquiry-accent); background:var(--inquiry-accent); }.inquiry-progress-step.current i { border-color:var(--inquiry-accent); background:#fff; box-shadow:0 0 0 4px color-mix(in srgb,var(--inquiry-accent) 15%,transparent); }.inquiry-card-actions { justify-content:center; gap:10px; padding-left:18px; border-left-color:color-mix(in srgb,var(--inquiry-accent) 18%,#dce8e2); }.inquiry-card-actions > strong { color:#174b37; font-size:15px; }.inquiry-card-actions > small { color:#436858; font-size:13px; font-weight:700; }.inquiry-card-actions > div { flex-wrap:wrap; justify-content:flex-end; }.inquiry-card-actions > div .button { background:rgba(255,255,255,.8); }.inquiry-card-actions > div .button.primary { border-color:var(--inquiry-accent); background:var(--inquiry-accent); }.inquiry-card.is-urgent .inquiry-urgent-button.active { color:#fff !important; border-color:#ce4325 !important; background:#d94b2d !important; }
@media (max-width:1180px) { .inquiry-card { grid-template-columns:125px minmax(220px,1fr) minmax(280px,1fr) 210px; gap:14px; }.inquiry-card .inquiry-cover { width:125px; height:100px; }.inquiry-card-title strong { font-size:17px; } }
@media (max-width:900px) { .inquiry-card { grid-template-columns:112px minmax(0,1fr); }.inquiry-card .inquiry-cover { width:112px; height:90px; }.inquiry-card-progress,.inquiry-card-actions { grid-column:2; }.inquiry-card-actions { align-self:auto; min-height:auto; padding:11px 0 0; border-top:1px solid color-mix(in srgb,var(--inquiry-accent) 18%,#dce8e2); border-left:0; }.inquiry-card-actions > div { justify-content:flex-start; } }
@media (max-width:580px) { .inquiry-card { grid-template-columns:1fr; }.inquiry-card .inquiry-cover { width:100%; height:145px; }.inquiry-card-progress,.inquiry-card-actions { grid-column:auto; }.inquiry-progress-step { font-size:10px; }.inquiry-card-actions { padding-top:11px; } }

/* 询价中心实时刷新：默认关闭，开启后以低成本的视觉提醒标识当前 10 秒刷新周期。 */
.inquiry-realtime-control { display:flex; flex:none; align-items:center; gap:7px; margin-left:auto; padding:7px 10px; border:1px solid #c9d9d1; border-radius:10px; color:#73877d; background:#fff; font:inherit; font-size:12px; font-weight:800; cursor:pointer; transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,color .18s ease; }.inquiry-realtime-control .inquiry-realtime-icon { display:block; width:24px; height:24px; flex:none; fill:currentColor; animation:inquiry-realtime-spin 6s linear infinite; }.inquiry-realtime-control.is-active { border-color:#1ab87a; color:#087a58; background:#f3fff9; box-shadow:0 0 0 5px rgba(26,184,122,.1); animation:inquiry-realtime-breathe 1.5s ease-in-out infinite; }.inquiry-realtime-control.is-active .inquiry-realtime-icon { animation:inquiry-realtime-spin 1s linear infinite; }@keyframes inquiry-realtime-spin { to { transform:rotate(360deg); } } @keyframes inquiry-realtime-breathe { 0%,100% { transform:scale(1); opacity:1; } 50% { transform:scale(1.06); opacity:.76; } } @media (prefers-reduced-motion:reduce) { .inquiry-realtime-control.is-active,.inquiry-realtime-control .inquiry-realtime-icon { animation:none; } }

/* 拆单中：百分比由阶段数据固定，流光仅在已完成的蓝青色进度内循环。 */
.inquiry-card.state-working:not(.is-urgent) { background:radial-gradient(ellipse 31% 175% at 41% 52%,rgba(99,205,255,.34) 0%,rgba(104,211,255,.16) 31%,transparent 68%),radial-gradient(ellipse 38% 130% at 105% 16%,rgba(137,211,255,.24),transparent 69%),linear-gradient(108deg,#fafdff 0%,#edf9ff 48%,#f9fdff 100%) !important; border-color:#6bc7fb; border-left-color:#1598ed; box-shadow:inset 0 0 0 1px rgba(84,185,244,.13),0 8px 24px rgba(48,159,226,.16); }.inquiry-card.state-working:not(.is-urgent) .inquiry-cover { background:rgba(255,255,255,.76); }.inquiry-card.state-working:not(.is-urgent) .inquiry-progress-track { border-color:rgba(52,159,229,.18); background:rgba(255,255,255,.7); }.inquiry-card.state-working:not(.is-urgent) .inquiry-progress-track > i { position:relative; overflow:hidden; background:linear-gradient(90deg,#257cf0 0%,#429dfa 46%,#2ccfe2 100%); }.inquiry-card.state-working:not(.is-urgent) .inquiry-progress-track > i::after { position:absolute; top:0; bottom:0; left:-45%; width:38%; content:''; background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),rgba(255,255,255,.84),rgba(255,255,255,.12),transparent); transform:skewX(-22deg); animation:inquiry-progress-glow 1.9s ease-in-out infinite; }.inquiry-card.state-working:not(.is-urgent) .inquiry-progress-steps::before { background:linear-gradient(90deg,#3190f4 0%,#53c4f1 var(--inquiry-progress),#dbe5e0 var(--inquiry-progress),#dbe5e0 100%); }.inquiry-card.state-working:not(.is-urgent) .inquiry-progress-step.current i { box-shadow:0 0 0 4px rgba(48,159,238,.16),0 0 13px rgba(55,174,243,.35); }.inquiry-card.state-working:not(.is-urgent) .inquiry-card-progress header b { color:#177ed2; }
@keyframes inquiry-progress-glow { from { transform:translateX(-40%) skewX(-22deg); } to { transform:translateX(420%) skewX(-22deg); } }
@media (prefers-reduced-motion:reduce) { .inquiry-card.state-working:not(.is-urgent) .inquiry-progress-track > i::after { animation:none; } }

/* 询价卡片主体：标题、询价单位与提交时间保持等距纵向节奏。 */
.inquiry-card-main { display:flex; flex-direction:column; justify-content:center; gap:12px; }
.inquiry-card .inquiry-company { margin:0 !important; }
.inquiry-card-main .inquiry-created { margin:0; line-height:1.25; }

/* 询价进度状态动画：循环动画仅用于正在拆单；完成态只播放一次勾选反馈。 */
.inquiry-page { max-width:none; }
.inquiry-card { grid-template-columns:150px minmax(250px,.9fr) minmax(410px,1.4fr) 245px; border-left-width:1px !important; }
.inquiry-card .inquiry-status { display:inline-flex; align-items:center; gap:7px; }
.inquiry-card.is-urgent { animation:none; }
.inquiry-card.is-urgent::before,.inquiry-card.is-urgent::after { animation:none; }
.inquiry-urgent-reason { display:block; width:100%; margin:0 0 6px; overflow:hidden; color:#c94830; font-size:12px; font-weight:750; line-height:18px; white-space:nowrap; }
.inquiry-urgent-reason-track { display:flex; width:max-content; min-width:100%; }.inquiry-urgent-reason span { flex:0 0 auto; padding-right:48px; }.inquiry-card.is-urgent .inquiry-urgent-reason-track { animation:inquiry-urgent-reason-scroll 14s linear infinite; }
@keyframes inquiry-urgent-reason-scroll { from { transform:translateX(0); } to { transform:translateX(-50%); } }

.inquiry-card.state-working {
  isolation:isolate;
  overflow:hidden;
  animation:none;
  border-color:#71c9fa;
  border-left-color:#168fea;
  background:radial-gradient(ellipse 33% 180% at 40% 52%,rgba(91,202,255,.35) 0%,rgba(104,211,255,.16) 32%,transparent 69%),radial-gradient(ellipse 38% 130% at 105% 16%,rgba(137,211,255,.25),transparent 69%),linear-gradient(108deg,#fafdff 0%,#edf9ff 48%,#f9fdff 100%) !important;
  box-shadow:inset 0 0 0 1px rgba(84,185,244,.13),0 8px 24px rgba(48,159,226,.16);
}
.inquiry-card.state-working.is-working::before {
  position:absolute;
  z-index:0;
  inset:0;
  display:block;
  width:auto;
  height:auto;
  padding:2px;
  border-radius:inherit;
  content:'';
  pointer-events:none;
  background:linear-gradient(105deg,#0d84ed 0%,#52d8ff 22%,#b7f4ff 40%,#1d9bf0 58%,#31d3ec 78%,#0d84ed 100%);
  background-size:260% 100%;
  opacity:1;
  filter:none;
  transform:none;
  animation:inquiry-working-border-flow 2.6s linear infinite;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  box-sizing:border-box;
}
.inquiry-card.state-working.is-working::after { display:none; }
.inquiry-card.state-working .inquiry-status::before {
  width:13px;
  height:13px;
  flex:0 0 13px;
  border:3px solid rgba(37,132,236,.25);
  border-top-color:#2584ec;
  border-right-color:#2ccfe2;
  border-radius:50%;
  content:'';
  box-sizing:border-box;
  animation:inquiry-status-spin .85s linear infinite;
}
.inquiry-card.state-working .inquiry-progress-track {
  height:15px;
  border-color:rgba(52,159,229,.2);
  background:rgba(255,255,255,.92);
}
.inquiry-card.state-working .inquiry-progress-track > i {
  position:relative;
  overflow:hidden;
  background:linear-gradient(90deg,#237bf0 0%,#409cf9 42%,#29cedf 72%,#58deea 100%);
  background-size:180% 100%;
  animation:inquiry-progress-gradient-flow 2.2s linear infinite;
}
.inquiry-card.state-working .inquiry-progress-track > i::before {
  position:absolute;
  inset:0;
  content:'';
  opacity:.42;
  background:repeating-linear-gradient(112deg,transparent 0 18px,rgba(255,255,255,.46) 18px 31px,transparent 31px 49px);
  background-size:98px 100%;
  animation:inquiry-progress-stripe-flow 1.25s linear infinite;
}
.inquiry-card.state-working .inquiry-progress-track > i::after {
  position:absolute;
  inset:0 auto 0 -42%;
  width:34%;
  content:'';
  opacity:.9;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.88),transparent);
  transform:skewX(-20deg);
  animation:inquiry-progress-charge 1.8s ease-in-out infinite;
}
.inquiry-card.state-working .inquiry-progress-step.current i { position:relative; animation:inquiry-current-dot-breathe 1.45s ease-in-out infinite; }
.inquiry-card.state-working .inquiry-progress-step.current i::after {
  position:absolute;
  inset:-8px;
  border:2px solid rgba(37,132,236,.36);
  border-radius:50%;
  content:'';
  opacity:0;
  transform:scale(.62);
  animation:inquiry-current-ring-breathe 1.45s ease-out infinite;
}

/* 使用原生 value 属性承接服务端进度，避免 CSP 拦截内联 width。 */
.inquiry-progress-meter {
  display:block;
  width:100%;
  height:100%;
  overflow:hidden;
  border:0;
  border-radius:inherit;
  appearance:none;
  -webkit-appearance:none;
  background:transparent;
}
.inquiry-progress-meter::-webkit-progress-bar { border-radius:inherit; background:rgba(255,255,255,.92); }
.inquiry-progress-meter::-webkit-progress-value { border-radius:inherit; background:linear-gradient(90deg,var(--inquiry-accent),var(--inquiry-accent-light)); }
.inquiry-progress-meter::-moz-progress-bar { border-radius:inherit; background:linear-gradient(90deg,var(--inquiry-accent),var(--inquiry-accent-light)); }
.inquiry-card.state-working .inquiry-progress-meter::-webkit-progress-value {
  background:repeating-linear-gradient(112deg,transparent 0 18px,rgba(255,255,255,.38) 18px 31px,transparent 31px 49px),linear-gradient(90deg,#237bf0 0%,#409cf9 43%,#29cedf 74%,#58deea 100%);
  background-size:98px 100%,100% 100%;
  animation:inquiry-progress-meter-flow 1.25s linear infinite;
}
.inquiry-card.state-working .inquiry-progress-meter::-moz-progress-bar {
  background:repeating-linear-gradient(112deg,transparent 0 18px,rgba(255,255,255,.38) 18px 31px,transparent 31px 49px),linear-gradient(90deg,#237bf0 0%,#409cf9 43%,#29cedf 74%,#58deea 100%);
  background-size:98px 100%,100% 100%;
  animation:inquiry-progress-meter-flow 1.25s linear infinite;
}
.inquiry-card-progress.progress-stage-0 .inquiry-progress-steps::before { background:#dbe5e0; }
.inquiry-card-progress.progress-stage-1 .inquiry-progress-steps::before { background:linear-gradient(90deg,var(--inquiry-accent) 0 25%,#dbe5e0 25% 100%); }
.inquiry-card-progress.progress-stage-2 .inquiry-progress-steps::before { background:linear-gradient(90deg,var(--inquiry-accent) 0 50%,#dbe5e0 50% 100%); }
.inquiry-card-progress.progress-stage-3 .inquiry-progress-steps::before { background:linear-gradient(90deg,var(--inquiry-accent) 0 75%,#dbe5e0 75% 100%); }
.inquiry-card-progress.progress-stage-4 .inquiry-progress-steps::before { background:var(--inquiry-accent); }
/* 处理态的旧流光规则优先级更高；在此明确按实际节点覆盖，避免未定义变量让连接线透明。 */
.inquiry-card.state-working:not(.is-urgent) .inquiry-card-progress.progress-stage-1 .inquiry-progress-steps::before { background:linear-gradient(90deg,var(--inquiry-accent) 0 25%,#dbe5e0 25% 100%); }
.inquiry-card.state-working:not(.is-urgent) .inquiry-card-progress.progress-stage-2 .inquiry-progress-steps::before { background:linear-gradient(90deg,var(--inquiry-accent) 0 50%,#dbe5e0 50% 100%); }

.inquiry-card.state-completed .inquiry-status::before {
  display:inline-grid;
  width:16px;
  height:16px;
  flex:0 0 16px;
  place-items:center;
  border-radius:50%;
  color:#fff;
  background:#118a57;
  content:'✓';
  font-size:11px;
  font-weight:900;
  line-height:1;
}
.inquiry-card.state-completed.just-completed .inquiry-status::before {
  animation:inquiry-complete-check .72s cubic-bezier(.2,.85,.25,1) both;
}

@keyframes inquiry-working-border-flow { to { background-position:260% 0; } }
@keyframes inquiry-status-spin { to { transform:rotate(360deg); } }
@keyframes inquiry-progress-meter-flow { from { background-position:-98px 0,0 0; } to { background-position:0 0,0 0; } }
@keyframes inquiry-progress-gradient-flow { to { background-position:180% 0; } }
@keyframes inquiry-progress-stripe-flow { to { background-position:98px 0; } }
@keyframes inquiry-progress-charge { from { transform:translateX(0) skewX(-20deg); } to { transform:translateX(430%) skewX(-20deg); } }
@keyframes inquiry-current-dot-breathe { 50% { opacity:.72; transform:scale(.9); } }
@keyframes inquiry-current-ring-breathe { 0% { opacity:.58; transform:scale(.62); } 75%,100% { opacity:0; transform:scale(1.28); } }
@keyframes inquiry-complete-check { 0% { opacity:0; transform:scale(.35) rotate(-35deg); } 62% { opacity:1; transform:scale(1.2) rotate(5deg); } 100% { opacity:1; transform:scale(1) rotate(0); } }

@media (max-width:1320px) {
  .inquiry-card { grid-template-columns:130px minmax(220px,.9fr) minmax(330px,1.25fr) 220px; gap:15px; }
  .inquiry-card .inquiry-cover { width:130px; height:104px; }
}
@media (max-width:900px) {
  .inquiry-card { grid-template-columns:112px minmax(0,1fr); }
}
@media (max-width:580px) {
  .inquiry-card { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce) {
  .inquiry-card.state-working.is-working::before,
  .inquiry-card.state-working .inquiry-status::before,
  .inquiry-card.state-working .inquiry-progress-track > i,
  .inquiry-card.state-working .inquiry-progress-track > i::before,
  .inquiry-card.state-working .inquiry-progress-track > i::after,
  .inquiry-card.state-working .inquiry-progress-meter::-webkit-progress-value,
  .inquiry-card.state-working .inquiry-progress-meter::-moz-progress-bar,
  .inquiry-card.state-working .inquiry-progress-step.current i,
  .inquiry-card.state-working .inquiry-progress-step.current i::after,
  .inquiry-card.state-completed.just-completed .inquiry-status::before { animation:none; }
}

/* 加急状态覆盖业务阶段主题：红橙色强调整张卡片，完成单保留红色但停止循环动画。 */
.inquiry-progress-track { height:15px; }
.inquiry-card.is-urgent {
  --inquiry-accent:#d8442a;
  --inquiry-accent-light:#ff9168;
  --inquiry-surface:#fff0ea;
  isolation:isolate;
  border-color:#ef8e73 !important;
  background:radial-gradient(ellipse 34% 170% at 42% 52%,rgba(255,116,72,.28) 0%,rgba(255,170,111,.12) 38%,transparent 70%),linear-gradient(108deg,#fff5f0 0%,#fff 48%,#fff0ea 100%) !important;
  box-shadow:inset 0 0 0 1px rgba(216,68,42,.12),0 8px 24px rgba(216,68,42,.17) !important;
}
.inquiry-card.is-urgent .inquiry-cover { background:rgba(255,248,244,.88); box-shadow:0 5px 14px rgba(186,68,37,.12); }
.inquiry-card.is-urgent .inquiry-card-title strong,.inquiry-card.is-urgent .inquiry-company,.inquiry-card.is-urgent .inquiry-card-actions > strong { color:#6d291d; }
.inquiry-card.is-urgent .inquiry-created,.inquiry-card.is-urgent .inquiry-company span:last-child,.inquiry-card.is-urgent .inquiry-card-actions > small { color:#a25342; }
.inquiry-card.is-urgent .inquiry-card-actions { border-left-color:rgba(216,68,42,.24); }
.inquiry-card.is-urgent .inquiry-progress-track { border-color:rgba(216,68,42,.24); background:rgba(255,255,255,.92); }
.inquiry-card.is-urgent .inquiry-progress-meter::-webkit-progress-value { background:linear-gradient(90deg,#d8442a,#ff9168); }
.inquiry-card.is-urgent .inquiry-progress-meter::-moz-progress-bar { background:linear-gradient(90deg,#d8442a,#ff9168); }
.inquiry-card.is-urgent .inquiry-status::before { border-color:rgba(216,68,42,.25); border-top-color:#d8442a; border-right-color:#ff8a61; }
.inquiry-card.is-urgent.state-completed .inquiry-status::before { background:#d8442a; }
.inquiry-card.is-urgent .inquiry-urgent-button.active {
  color:#fff !important;
  border:2px solid #a92d1b !important;
  background:linear-gradient(105deg,#c83a23 0%,#ef5b37 48%,#ff9a70 70%,#c83a23 100%) !important;
  background-size:220% 100% !important;
  box-shadow:0 0 0 2px rgba(200,57,34,.14),0 4px 10px rgba(169,45,27,.2) !important;
}
.inquiry-card.is-urgent:not(.state-completed)::before {
  position:absolute;
  z-index:0;
  inset:0;
  display:block;
  width:auto;
  height:auto;
  padding:2px;
  border-radius:inherit;
  content:'';
  pointer-events:none;
  opacity:1;
  background:linear-gradient(105deg,#c83a23 0%,#ff7048 22%,#ffd0a9 42%,#e65331 59%,#ff9a70 78%,#c83a23 100%);
  background-size:260% 100%;
  filter:none;
  transform:none;
  animation:inquiry-urgent-border-flow 2.25s linear infinite;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  box-sizing:border-box;
}
.inquiry-card.is-urgent:not(.state-completed)::after {
  position:absolute;
  z-index:0;
  inset:-12% -18%;
  display:block;
  width:auto;
  height:auto;
  content:'';
  pointer-events:none;
  opacity:.35;
  background:linear-gradient(105deg,transparent 35%,rgba(255,110,67,.28) 47%,rgba(255,217,172,.5) 50%,rgba(255,110,67,.28) 53%,transparent 65%);
  transform:translateX(-58%) skewX(-20deg);
  animation:inquiry-urgent-sweep 2.8s ease-in-out infinite;
}
.inquiry-card.is-urgent.state-working.is-working::before { background:linear-gradient(105deg,#c83a23 0%,#ff7048 22%,#ffd0a9 42%,#e65331 59%,#ff9a70 78%,#c83a23 100%); background-size:260% 100%; animation:inquiry-urgent-border-flow 2.25s linear infinite; }
.inquiry-card.is-urgent.state-working.is-working::after { display:block; }
.inquiry-card.is-urgent.state-working .inquiry-progress-meter::-webkit-progress-value { background:repeating-linear-gradient(112deg,transparent 0 18px,rgba(255,255,255,.38) 18px 31px,transparent 31px 49px),linear-gradient(90deg,#d8442a 0%,#ef5b37 43%,#ff8d64 74%,#ffc29c 100%); background-size:98px 100%,100% 100%; animation:inquiry-progress-meter-flow 1.25s linear infinite; }
.inquiry-card.is-urgent.state-working .inquiry-progress-meter::-moz-progress-bar { background:repeating-linear-gradient(112deg,transparent 0 18px,rgba(255,255,255,.38) 18px 31px,transparent 31px 49px),linear-gradient(90deg,#d8442a 0%,#ef5b37 43%,#ff8d64 74%,#ffc29c 100%); background-size:98px 100%,100% 100%; animation:inquiry-progress-meter-flow 1.25s linear infinite; }
.inquiry-card.is-urgent:not(.state-completed) .inquiry-urgent-button.active { animation:inquiry-urgent-button-flow 1.8s linear infinite; }
@keyframes inquiry-urgent-border-flow { to { background-position:260% 0; } }
@keyframes inquiry-urgent-sweep { 0%,18% { opacity:0; transform:translateX(-58%) skewX(-20deg); } 42% { opacity:.42; } 72%,100% { opacity:0; transform:translateX(58%) skewX(-20deg); } }
@keyframes inquiry-urgent-button-flow { to { background-position:220% 0; } }
@media (prefers-reduced-motion:reduce) {
  .inquiry-card.is-urgent:not(.state-completed)::before,
  .inquiry-card.is-urgent:not(.state-completed)::after,
  .inquiry-card.is-urgent:not(.state-completed) .inquiry-urgent-button.active,
  .inquiry-card.is-urgent .inquiry-urgent-reason-track { animation:none; }
}

/* 未领取的询价单保持白底，使用运营台绿色主题，不显示业务进度填充。 */
.inquiry-card.state-new {
  --inquiry-accent:#087a58;
  --inquiry-accent-light:#49bb8c;
  --inquiry-surface:#fff;
  border-color:#cfe5da;
  border-left-width:1px;
  background:#fff;
  box-shadow:0 6px 16px rgba(31,78,57,.04);
}
.inquiry-card.state-new .inquiry-status { color:#087a58; background:#fff; }
.inquiry-card.state-new .inquiry-progress-track,
.inquiry-card.state-new .inquiry-progress-meter::-webkit-progress-bar { background:#fff; }
/* 待拆单加急单也必须保留红橙业务主题，不能被上面的初始状态绿主题覆盖。 */
.inquiry-card.is-urgent.state-new {
  --inquiry-accent:#d8442a;
  --inquiry-accent-light:#ff9168;
  --inquiry-surface:#fff0ea;
  border-color:#ef8e73 !important;
  border-left-color:#d8442a !important;
  background:radial-gradient(ellipse 34% 170% at 42% 52%,rgba(255,116,72,.28) 0%,rgba(255,170,111,.12) 38%,transparent 70%),linear-gradient(108deg,#fff5f0 0%,#fff 48%,#fff0ea 100%) !important;
  box-shadow:inset 0 0 0 1px rgba(216,68,42,.12),0 8px 24px rgba(216,68,42,.17) !important;
}
.inquiry-card.is-urgent.state-new .inquiry-status { color:#c8432b; background:#fff0ea; }
.inquiry-card-actions > small { font-size:15px; }
.inquiry-detail-info-card.inquiry-detail-schedule { grid-column:1 / -1; grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width:680px) { .inquiry-detail-info-card.inquiry-detail-schedule { grid-template-columns:1fr; } }
.inquiry-upload-progress-list { display:grid; gap:7px; margin:9px 0; }
.inquiry-upload-progress-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:5px 10px; align-items:center; padding:8px 10px; border:1px solid #d9e9e1; border-radius:8px; color:#47685a; background:#f8fcfa; font-size:12px; }
.inquiry-upload-progress-row > span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.inquiry-upload-progress-row > b { color:#167454; font-size:11px; font-variant-numeric:tabular-nums; }
.inquiry-upload-progress-row progress { grid-column:1 / -1; width:100%; height:5px; overflow:hidden; border:0; border-radius:999px; background:#dceae2; }.inquiry-upload-progress-row progress::-webkit-progress-bar { background:#dceae2; }.inquiry-upload-progress-row progress::-webkit-progress-value { border-radius:999px; background:#14865f; }.inquiry-upload-progress-row progress::-moz-progress-bar { border-radius:999px; background:#14865f; }
.inquiry-upload-progress-row.complete { border-color:#c9e5d7; background:#f4fbf7; }.inquiry-upload-progress-row.complete > b { color:#168456; }.inquiry-upload-progress-row.failed { border-color:#f0b9ae; background:#fff7f5; }.inquiry-upload-progress-row.failed > b { color:#bd4735; }.inquiry-upload-progress-row.failed progress::-webkit-progress-value,.inquiry-upload-progress-row.failed progress::-moz-progress-bar { background:#d65b49; }
.inquiry-create-submit-progress { gap:9px; padding:12px; border:1px solid #b9ddca; border-radius:10px; background:#f4fbf7; }.inquiry-create-submit-progress > header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }.inquiry-create-submit-progress strong,.inquiry-create-submit-progress small { display:block; }.inquiry-create-submit-progress strong { color:#176547; font-size:13px; }.inquiry-create-submit-progress small { margin-top:3px; color:#6d8d7e; font-size:11px; }.inquiry-create-submit-progress > header > b { color:#0d8b61; font-size:13px; font-variant-numeric:tabular-nums; }.inquiry-create-submit-progress > progress { width:100%; height:7px; overflow:hidden; border:0; border-radius:999px; background:#dceae2; }.inquiry-create-submit-progress > progress::-webkit-progress-bar { background:#dceae2; }.inquiry-create-submit-progress > progress::-webkit-progress-value { border-radius:999px; background:#14865f; }.inquiry-create-submit-progress > progress::-moz-progress-bar { border-radius:999px; background:#14865f; }
.inquiry-render-selected { display:flex; align-items:center; gap:9px; margin-top:8px; padding:7px 9px; border:1px solid #dcece3; border-radius:8px; color:#35624f; background:#f7fbf8; font-size:12px; }.inquiry-render-selected img { width:42px; height:32px; border-radius:5px; object-fit:cover; background:#e8f1ec; }.inquiry-render-selected span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.inquiry-review-submit { display:flex; align-items:center; justify-content:flex-end; gap:10px; margin:-3px 0 12px; }.inquiry-review-submit small { color:var(--danger); font-size:11px; }.inquiry-review-actions { display:flex; justify-content:flex-end; gap:9px; margin-top:14px; padding-top:13px; border-top:1px solid #eadba9; }
/* 通用面板会裁切溢出内容；排序菜单需越出工具栏显示。 */
section.panel.inquiry-toolbar { z-index:60; overflow:visible; }

/* 询价卡片操作区固定为三等分：少于三个按钮时从右侧开始占位。 */
.inquiry-card .inquiry-card-action-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:8px}.inquiry-card .inquiry-card-action-buttons .button{min-width:0;min-height:38px;padding:8px 7px;font-size:13px;font-weight:800;white-space:nowrap}.inquiry-card .inquiry-card-action-buttons.action-count-1 .button:first-child{grid-column:3}.inquiry-card .inquiry-card-action-buttons.action-count-2 .button:first-child{grid-column:2}@media (max-width:900px){.inquiry-card .inquiry-card-action-buttons{display:flex;width:auto}.inquiry-card .inquiry-card-action-buttons .button{min-width:72px}.inquiry-card .inquiry-card-action-buttons.action-count-1 .button:first-child,.inquiry-card .inquiry-card-action-buttons.action-count-2 .button:first-child{grid-column:auto}}
.inquiry-card .inquiry-card-action-buttons.action-count-3{grid-template-columns:minmax(0,.72fr) minmax(0,.72fr) minmax(0,1.56fr)}.inquiry-card .inquiry-card-action-buttons.action-count-3 .button:nth-child(-n+2){padding-right:5px;padding-left:5px;font-size:12px}.inquiry-card .inquiry-card-action-buttons.action-count-3 .button.primary{font-size:13px}@media (max-width:900px){.inquiry-card .inquiry-card-action-buttons.action-count-3{display:flex}.inquiry-card .inquiry-card-action-buttons.action-count-3 .button:nth-child(-n+2){padding-right:8px;padding-left:8px;font-size:13px}}

/* 询价卡片根据浏览器可用宽度收缩；进度区是优先隐藏的辅助信息，避免主信息和操作区横向溢出。 */
@media (max-width:1500px) {
  .inquiry-card { grid-template-columns:130px minmax(210px,.9fr) minmax(280px,1.2fr) 290px; gap:14px; }
  .inquiry-card .inquiry-cover { width:130px; height:104px; }
  .inquiry-card-progress { min-width:0; }
}
@media (max-width:1220px) {
  .inquiry-card { grid-template-columns:116px minmax(0,1fr) 250px; gap:13px; }
  .inquiry-card .inquiry-cover { width:116px; height:92px; }
  .inquiry-card-progress { display:none; }
  .inquiry-card-actions { padding-left:13px; }
}
@media (min-width:1221px) {
  .inquiry-card-actions { justify-content:flex-start; align-items:stretch; padding-left:12px; }
  .inquiry-card-actions > strong,
  .inquiry-card-actions > small { text-align:center; }
  .inquiry-card-actions > .inquiry-card-action-buttons { margin-top:auto; }
  .inquiry-card .inquiry-card-action-buttons { grid-template-columns:90px 78px minmax(0,1fr); gap:8px; }
  .inquiry-card .inquiry-card-action-buttons .button { min-height:34px; padding:6px 7px; }
  .inquiry-card .inquiry-card-action-buttons.action-count-3 { grid-template-columns:90px 78px 86px; justify-content:end; }
  .inquiry-card .inquiry-card-action-buttons.action-count-3 .button.primary { padding-right:4px; padding-left:4px; font-size:12px; }
}
@media (min-width:1501px) {
  .inquiry-card { grid-template-columns:150px minmax(250px,.9fr) minmax(320px,1.4fr) 300px; }
  .inquiry-card-progress { width:100%; max-width:760px; justify-self:center; }
}
@media (max-width:900px) {
  .inquiry-card { grid-template-columns:112px minmax(0,1fr); }
  .inquiry-card .inquiry-cover { width:112px; height:90px; }
  .inquiry-card-actions { grid-column:2; padding:11px 0 0; border-top:1px solid color-mix(in srgb,var(--inquiry-accent) 18%,#dce8e2); border-left:0; }
}
@media (max-width:580px) {
  .inquiry-card { grid-template-columns:1fr; }
  .inquiry-card .inquiry-cover { width:100%; height:145px; }
  .inquiry-card-actions { grid-column:auto; }
}
/* 操作数量减少时，详情按钮仍保持标准尺寸，避免独占剩余列后视觉过大。 */
.inquiry-card .inquiry-card-action-buttons.action-count-1 .button:first-child,
.inquiry-card .inquiry-card-action-buttons.action-count-2 .button:nth-child(2) {
  width:78px;
  min-width:78px;
  justify-self:end;
}

/* 人员与权限管理中心：沿用运营台白底、深绿与壁虎绿操作色。 */
.personnel-center-page { display:grid; gap:14px; min-width:0; }
.personnel-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.personnel-metric { min-height:96px; display:flex; align-items:center; gap:13px; padding:17px 19px; border:1px solid #e4efeb; border-radius:12px; background:#fff; box-shadow:0 5px 14px rgba(10,49,39,.05); }
.personnel-metric i { display:grid; width:43px; height:43px; place-items:center; border-radius:50%; color:#087a58; background:#e9f8f1; font-style:normal; font-weight:900; }
.personnel-metric:nth-child(3) i { color:#a76a00; background:#fff4d8; }.personnel-metric:nth-child(4) i { color:#bb3d3d; background:#ffe7e7; }
.personnel-metric div { display:grid; grid-template-columns:auto auto; column-gap:10px; align-items:baseline; }.personnel-metric small { grid-column:1/-1; color:#667a72; }.personnel-metric strong { color:#132b23; font-size:27px; line-height:1; }.personnel-metric span { color:#51917b; font-size:12px; }
.personnel-center-panel { overflow:hidden; padding:0; }
.personnel-tabs { display:flex; gap:4px; padding:0 20px; border-bottom:1px solid #e5eeea; background:#fff; }.personnel-tabs button { position:relative; padding:17px 17px 14px; border:0; color:#698077; background:transparent; font-weight:750; cursor:pointer; }.personnel-tabs button.active { color:#087a58; }.personnel-tabs button.active::after { position:absolute; right:12px; bottom:-1px; left:12px; height:3px; border-radius:4px; background:#0b9368; content:""; }
.personnel-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:15px 18px; border-bottom:1px solid #edf2ef; }.personnel-toolbar h2 { margin:0; color:#17322a; font-size:17px; }.personnel-toolbar p { margin:4px 0 0; color:#72857e; font-size:12px; }.personnel-filter-grid,.personnel-toolbar-actions { display:flex; align-items:center; gap:8px; }.personnel-filter-grid select,.personnel-search { height:35px; min-width:116px; border:1px solid #dce8e3; border-radius:7px; color:#3b5149; background:#fff; }.personnel-search { min-width:245px; display:flex; align-items:center; gap:6px; padding:0 10px; }.personnel-search input { width:100%; border:0; outline:0; color:#31483f; background:transparent; }.personnel-table-wrap { overflow:auto; }.personnel-table { width:100%; min-width:1090px; border-collapse:collapse; background:#fff; }.personnel-table th { height:43px; padding:0 12px; color:#6d8078; background:#f6faf8; font-size:12px; text-align:left; white-space:nowrap; }.personnel-table td { height:53px; padding:7px 12px; border-top:1px solid #eef3f0; color:#354a42; font-size:13px; vertical-align:middle; }.personnel-table td small,.personnel-table td .muted { display:block; margin-top:3px; color:#85958f; font-size:11px; }.personnel-table tr:hover td { background:#fbfefc; }.personnel-user { display:grid; gap:3px; padding:0; border:0; color:#17382d; background:transparent; text-align:left; cursor:pointer; }.personnel-user:hover b { color:#07835e; text-decoration:underline; }
.personnel-batch-bar { display:flex; align-items:center; gap:8px; min-height:60px; padding:10px 18px; border-top:1px solid #d9eee5; background:linear-gradient(90deg,#effcf5,#f9fffc); }.personnel-batch-bar b { color:#087a58; }.personnel-page { margin-left:auto; color:#73857e; font-size:12px; }.personnel-page button { min-width:27px; height:27px; border:1px solid #dce9e3; border-radius:5px; color:#23735a; background:#fff; cursor:pointer; }.personnel-page button:disabled { opacity:.45; cursor:not-allowed; }
.personnel-editor { display:grid; gap:18px; }.personnel-editor section { padding-bottom:15px; border-bottom:1px solid #ebf1ee; }.personnel-editor section:last-child { border-bottom:0; }.personnel-editor h3 { margin:0 0 12px; color:#244238; font-size:15px; }.personnel-role-buttons { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:11px; }.personnel-role-buttons input { position:absolute; opacity:0; }.personnel-role-buttons span { display:inline-block; padding:7px 12px; border:1px solid #dbe7e2; border-radius:7px; color:#587068; cursor:pointer; }.personnel-role-buttons input:checked + span { border-color:#0a9369; color:#087d5c; background:#eafaf2; box-shadow:inset 0 0 0 1px #0a9369; }.personnel-permission-checks { display:grid; grid-template-columns:repeat(3,minmax(190px,1fr)); gap:8px 14px; padding:13px 15px; border:1px solid #e3ece7; border-radius:10px; background:#fbfefc; }.personnel-permission-checks label { display:flex; align-items:center; min-width:0; gap:9px; color:#38564b; font-size:15px; font-weight:650; line-height:1.25; white-space:nowrap; }.personnel-permission-checks input { width:18px; height:18px; flex:0 0 18px; margin:0; accent-color:#07855f; }
.personnel-role-state { min-height:18px; margin:0 0 10px; color:#087d5c; font-size:13px; font-weight:700; }
.permission-template-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:13px; padding:17px; }.permission-template-grid article { display:grid; gap:10px; min-height:150px; padding:15px; border:1px solid #dfebe5; border-radius:10px; background:#fff; }.permission-template-grid header { display:flex; align-items:center; justify-content:space-between; }.permission-template-grid strong { color:#1c3a30; }.permission-template-grid p { margin:0; color:#657a71; font-size:12px; line-height:1.65; }.permission-template-grid small { color:#0b8c66; }.permission-template-grid .button { align-self:end; justify-self:start; }
.personnel-log-shell { padding:4px 0 0; }.warning-panel { padding:13px; border:1px solid #f0cf8a; border-radius:9px; background:#fff8e8; color:#705113; }.warning-panel h3 { margin:0 0 8px; }.warning-panel pre { max-height:180px; overflow:auto; padding:8px; border-radius:6px; background:#fff; font-size:11px; }
@media (max-width:1450px) { .personnel-filter-grid { flex-wrap:wrap; }.personnel-toolbar { align-items:flex-start; flex-direction:column; }.personnel-toolbar-actions { width:100%; justify-content:flex-end; }.personnel-metrics { gap:10px; }.personnel-metric { padding:13px; } }
@media (max-width:980px) { .personnel-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }.permission-template-grid { grid-template-columns:1fr; }.personnel-permission-checks { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* Refined visual layer */
.topbar {
  background:
    radial-gradient(circle at 88% 18%, rgba(23,107,76,.08), transparent 22%),
    rgba(255,255,255,.96);
}

.page-content {
  background:
    radial-gradient(circle at top right, rgba(23,107,76,.05), transparent 24%),
    radial-gradient(circle at bottom left, rgba(184,135,43,.05), transparent 26%);
}

.panel,
.metric-card,
.quick-card,
.modal-card,
.drawer,
.login-card,
.completion-summary,
.data-table tbody tr,
.list-row,
.photo-card,
.nav-item,
.tab,
.button,
.icon-button {
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease, opacity .18s ease;
}

.panel:hover,
.metric-card:hover,
.quick-card:hover,
.completion-summary:hover,
.photo-card:hover {
  box-shadow: 0 18px 42px rgba(18, 42, 31, .11);
}

.metric-card,
.quick-card,
.panel,
.photo-card {
  position: relative;
  overflow: hidden;
}

.metric-card::after,
.quick-card::after,
.photo-card::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 3px;
  background: linear-gradient(90deg, rgba(23,107,76,.34), rgba(184,135,43,.48));
  transform: scaleX(.34);
  transform-origin: left;
  opacity: .7;
  transition: transform .22s ease, opacity .22s ease;
}

.metric-card:hover,
.quick-card:hover,
.photo-card:hover {
  transform: translateY(-3px);
}

.metric-card:hover::after,
.quick-card:hover::after,
.photo-card:hover::after {
  transform: scaleX(1);
  opacity: 1;
}

.nav-item:hover {
  transform: translateX(2px);
  background: rgba(255,255,255,.065);
  color: #fff;
}

.tab:hover {
  transform: translateY(-1px);
  background: #fff;
  box-shadow: 0 8px 18px rgba(18, 42, 31, .08);
}

.button:hover,
.icon-button:hover {
  transform: translateY(-1px);
}

.button.primary:hover {
  box-shadow: 0 12px 26px rgba(23,107,76,.18);
}

.button.secondary:hover {
  background: #f8fbfa;
}

.data-table tbody tr:hover,
.list-row:hover {
  background: #f8fbfa;
  transform: translateX(2px);
}

.cell-code.media img,
.photo-card img {
  transition: transform .22s ease, filter .22s ease;
}

.cell-code.media:hover img,
.photo-card:hover img {
  transform: scale(1.04);
  filter: saturate(1.04);
}

.drawer,
.modal-card {
  animation: rise-in .18s ease-out;
}

@keyframes rise-in {
  from { transform: translateY(8px) scale(.99); opacity: .88; }
  to { transform: translateY(0) scale(1); opacity: 1; }
}

.login-brand::after {
  animation: float-ring 18s linear infinite;
}

@keyframes float-ring {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* Inventory center: metrics, material-type tabs and category cards */
.inventory-center-page {
  height: calc(100vh - 126px);
  gap: 16px;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
}

.inventory-metrics {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
}

.inventory-metrics .metric-card {
  min-width: 0;
  min-height: 104px;
  padding: 15px 16px;
  grid-template-columns: 48px minmax(0, 1fr);
  column-gap: 11px;
}

.inventory-metrics .metric-icon {
  width: 46px;
  height: 46px;
  font-size: var(--font-size-section);
}

.inventory-metrics .metric-value {
  overflow: hidden;
  font-size: clamp(20px, 1.55vw, 28px);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-metrics .metric-card:nth-child(5) .metric-icon {
  color: #178a62;
  background: #e4f5ed;
}

.inventory-metrics .metric-card:nth-child(6) .metric-icon {
  color: #d45a4d;
  background: #fae9e6;
}

.inventory-category-panel {
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) 34px;
}

.inventory-category-toolbar {
  min-height: 66px;
  padding: 12px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  border-bottom: 1px solid var(--line);
}

.inventory-type-tabs {
  display: flex;
  align-items: center;
  gap: 5px;
}

.inventory-type-tabs button {
  min-height: 38px;
  padding: 0 13px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 0;
  border-radius: 8px;
  color: var(--text-secondary);
  background: transparent;
  font-size: var(--font-size-small);
  font-weight: 850;
}

.inventory-type-tabs button:hover {
  color: var(--brand);
  background: #f2f8f5;
}

.inventory-type-tabs button.active {
  color: var(--brand);
  background: var(--brand-soft);
}

.inventory-type-tabs button b {
  min-width: 22px;
  padding: 2px 6px;
  border-radius: 99px;
  color: #718078;
  background: #edf2ef;
  font-size: var(--font-size-caption);
  text-align: center;
}

.inventory-type-tabs button.active b {
  color: #fff;
  background: var(--brand);
}

.inventory-category-tools {
  min-width: 0;
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 9px;
}

.inventory-category-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 9px;
}

.inventory-view-switch {
  flex: 0 0 auto;
  padding: 3px;
  display: inline-flex;
  align-items: center;
  gap: 2px;
  border: 1px solid var(--line-strong);
  border-radius: 9px;
  background: #f6f9f7;
}

.inventory-view-switch button {
  min-height: 32px;
  padding: 0 10px;
  border: 0;
  border-radius: 6px;
  color: #64756c;
  background: transparent;
  font-size: var(--font-size-caption);
  font-weight: 750;
  white-space: nowrap;
}

.inventory-view-switch button:hover {
  color: var(--brand);
  background: #edf5f0;
}

.inventory-view-switch button.active {
  color: #fff;
  background: var(--brand);
  box-shadow: 0 2px 7px rgba(23,107,76,.22);
}

.inventory-list-actions {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.inventory-list-actions button {
  min-height: 32px;
  padding: 0 9px;
  border: 1px solid #d7e3dc;
  border-radius: 7px;
  color: #527060;
  background: #fff;
  font-size: var(--font-size-caption);
  font-weight: 700;
  white-space: nowrap;
}

.inventory-list-actions button:hover {
  color: var(--brand);
  border-color: #86bca2;
  background: #f1f8f4;
}

.inventory-create-button,
.inventory-batch-qrcode-button {
  flex: 0 0 auto;
  min-height: 40px;
  white-space: nowrap;
}

.inventory-search-box {
  width: min(360px, 28vw);
  min-height: 40px;
  padding: 0 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--line-strong);
  border-radius: 9px;
  color: var(--muted);
  background: #fff;
}

.inventory-search-box:focus-within {
  border-color: #6ba98e;
  box-shadow: 0 0 0 3px rgba(23,107,76,.1);
}

.inventory-search-box input {
  min-width: 0;
  min-height: 38px;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  font-size: var(--font-size-small);
}

.inventory-search-box input:focus {
  box-shadow: none;
}

.inventory-category-grid {
  min-height: 0;
  padding: 14px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(440px, 1fr));
  grid-auto-rows: max-content;
  gap: 13px;
  align-content: start;
  overflow-y: auto;
  background:
    radial-gradient(circle at 92% 4%, rgba(23,107,76,.045), transparent 24%),
    #f8faf9;
}

.inventory-category-grid.inventory-list-grid {
  display: block;
  padding: 14px;
}

.inventory-list-group {
  overflow: hidden;
  border: 1px solid #dfe8e2;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 4px 13px rgba(18,42,31,.04);
}

.inventory-list-group + .inventory-list-group {
  margin-top: 13px;
}

.inventory-list-group-head {
  min-height: 74px;
  padding: 11px 14px;
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  align-items: center;
  gap: 11px;
  border-bottom: 1px solid #e7eeea;
  background: linear-gradient(90deg, #f5faf7, #fff);
  cursor: pointer;
}

.inventory-list-group-head:hover,
.inventory-list-group-head:focus-visible {
  background: linear-gradient(90deg, #edf8f1, #fff);
  outline: none;
}

.inventory-list-group-photo {
  width: 48px;
  height: 48px;
  overflow: hidden;
  display: grid;
  place-items: center;
  border-radius: 9px;
  color: var(--brand);
  background: #e7f3ec;
  font-weight: 900;
}

.inventory-list-group-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .22s ease;
}

.inventory-list-group-photo[data-project-image],
.inventory-list-row-image[data-project-image] {
  cursor: zoom-in;
}

.inventory-list-group-photo[data-project-image]:hover img,
.inventory-list-row-image[data-project-image]:hover img {
  transform: scale(1.08);
}

.inventory-list-group-title {
  min-width: 0;
}

.inventory-list-group-title small,
.inventory-list-group-title p,
.inventory-list-group-total small,
.inventory-list-row-stock small {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-list-group-title h3 {
  margin: 2px 0;
  overflow: hidden;
  color: #1f382c;
  font-size: 16px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-list-group-title p {
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-list-group-total {
  min-width: 116px;
  display: grid;
  gap: 3px;
  text-align: right;
}

.inventory-list-group-total b {
  color: var(--brand-strong);
  font-size: 15px;
}

.inventory-list-group-toggle {
  margin-top: 1px;
  color: var(--brand);
  font-size: 11px;
  font-weight: 750;
}

.inventory-list-group-items {
  padding: 0 14px;
}

.inventory-list-row {
  min-width: 0;
  min-height: 72px;
  padding: 10px 3px;
  display: grid;
  grid-template-columns: 48px minmax(190px, 1fr) minmax(132px, auto) minmax(72px, auto);
  align-items: center;
  gap: 12px;
  border-bottom: 1px solid #edf1ee;
  cursor: pointer;
  transition: background .16s ease;
}

.inventory-list-row:last-child {
  border-bottom: 0;
}

.inventory-list-row:hover,
.inventory-list-row:focus-visible {
  background: #f5faf7;
  outline: none;
}

.inventory-list-row-image {
  width: 48px;
  height: 48px;
  overflow: hidden;
  display: grid;
  place-items: center;
  border-radius: 8px;
  color: #547062;
  background: #f0f5f2;
  font-size: 14px;
  font-weight: 850;
}

.inventory-list-row-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .22s ease;
}

.inventory-list-row-main {
  min-width: 0;
}

.inventory-list-row-title {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}

.inventory-list-row-title h4 {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  color: #263d32;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-list-row-title span {
  flex: 0 0 auto;
  padding: 2px 6px;
  border-radius: 99px;
  color: var(--brand);
  background: #e8f5ee;
  font-size: 11px;
  font-weight: 700;
}

.inventory-list-row-main p {
  margin: 4px 0 0;
  overflow: hidden;
  color: var(--muted);
  font-size: var(--font-size-caption);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-list-row-stock {
  display: grid;
  gap: 3px;
  text-align: right;
}

.inventory-list-row-stock b {
  color: var(--brand-strong);
  font-size: 13px;
  white-space: nowrap;
}

.inventory-list-row-stock em {
  color: #748278;
  font-style: normal;
  font-weight: 650;
}

.inventory-list-row-status {
  min-width: 68px;
  padding: 5px 7px;
  border-radius: 99px;
  color: #4b6657;
  background: #edf5f0;
  font-size: 11px;
  font-weight: 750;
  text-align: center;
  white-space: nowrap;
}

.inventory-list-row-status.is-red {
  color: #bc3a3a;
  background: #fff0f0;
}

.inventory-list-row-status.is-gold {
  color: #956b10;
  background: #fff7df;
}

.inventory-list-group-empty {
  padding: 18px 0;
  color: var(--muted);
  font-size: var(--font-size-small);
  text-align: center;
}

.inventory-category-workspace {
  min-height: 0;
  overflow: hidden;
}

.inventory-category-splitter {
  display: none;
}

.inventory-category-workspace > .inventory-category-grid {
  height: 100%;
}

.inventory-category-workspace.has-selection {
  min-height: 0;
  padding: 14px;
  display: grid;
  grid-template-columns: minmax(0, var(--inventory-category-pane-width, 20%)) 14px minmax(0, 1fr);
  gap: 0;
  align-items: start;
  background:
    radial-gradient(circle at 92% 4%, rgba(23,107,76,.045), transparent 24%),
    #f8faf9;
}

.inventory-category-workspace.has-selection .inventory-category-grid {
  height: 100%;
  max-height: none;
  padding: 0 8px 0 0;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  overflow-y: auto;
  background: transparent;
  scrollbar-gutter: stable;
}

.inventory-category-workspace.has-selection .inventory-category-card {
  min-height: 196px;
  padding: 10px;
  grid-template-columns: 86px minmax(0, 1fr);
  gap: 10px;
}

.inventory-category-workspace.has-selection .inventory-category-image {
  min-height: 0;
}

@media (min-width: 1051px) {
  .inventory-category-workspace.has-selection .inventory-category-splitter {
    position: relative;
    z-index: 4;
    width: 14px;
    height: 100%;
    display: block;
    cursor: ew-resize;
    touch-action: none;
  }

  .inventory-category-workspace.has-selection .inventory-category-splitter::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 5px;
    width: 4px;
    height: 96px;
    border-radius: 99px;
    background: rgba(23,107,76,.28);
    box-shadow: 0 0 0 1px rgba(255,255,255,.8);
    transform: translateY(-50%);
    transition: height .16s ease, background .16s ease, box-shadow .16s ease;
  }

  .inventory-category-workspace.has-selection .inventory-category-splitter:hover::before,
  .inventory-category-workspace.has-selection.is-resizing .inventory-category-splitter::before {
    height: 150px;
    background: var(--brand);
    box-shadow: 0 0 0 4px rgba(23,107,76,.1);
  }
}

body.inventory-category-resizing {
  cursor: ew-resize;
  user-select: none;
}

.inventory-category-workspace.is-resizing {
  user-select: none;
}

.inventory-category-workspace.is-resizing,
.inventory-category-workspace.is-resizing .inventory-category-card {
  transition: none !important;
}

.inventory-category-workspace.has-selection .inventory-category-meta {
  margin-top: 9px;
}

.inventory-category-workspace.has-selection .inventory-category-meta > div {
  padding: 7px 6px;
}

.inventory-category-card {
  min-width: 0;
  min-height: 226px;
  height: max-content;
  padding: 14px;
  display: grid;
  grid-template-columns: 172px minmax(0, 1fr);
  align-self: start;
  gap: 16px;
  border: 1px solid #dfe6e2;
  border-radius: 13px;
  background: #fff;
  box-shadow: 0 5px 16px rgba(18,42,31,.045);
  cursor: pointer;
  transition:
    transform .18s ease,
    border-color .18s ease,
    box-shadow .18s ease,
    grid-template-columns .42s cubic-bezier(.22,.72,.24,1),
    padding .42s cubic-bezier(.22,.72,.24,1),
    gap .42s cubic-bezier(.22,.72,.24,1);
}

.inventory-category-card.selected {
  border-color: var(--brand);
  background: #f5fbf7;
  box-shadow: 0 0 0 2px rgba(23,107,76,.12), 0 14px 30px rgba(18,42,31,.11);
}

.inventory-category-card:hover,
.inventory-category-card:focus-visible {
  transform: translateY(-2px);
  border-color: #83bba3;
  box-shadow: 0 14px 30px rgba(18,42,31,.11);
  outline: none;
}

.inventory-category-card.editing {
  border-color: #65a88a;
  background: #f4fbf7;
  box-shadow: 0 0 0 2px rgba(23, 107, 76, .12), 0 14px 30px rgba(18,42,31,.09);
  cursor: default;
}

.inventory-category-card.editing:hover {
  transform: none;
}

.inventory-category-inline-form {
  display: contents;
}

.inventory-category-image {
  position: relative;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  display: grid;
  place-items: center;
  align-self: stretch;
  border-radius: 10px;
  color: var(--brand);
  background: transparent;
}

.inventory-category-image[data-project-image],
.inventory-subcategory-detail-image[data-project-image],
.inventory-item-summary-image[data-project-image],
.inventory-detail-photo-grid [data-project-image] {
  cursor: zoom-in;
}

.inventory-category-image img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  transition: transform .25s ease;
}

.inventory-category-card:hover .inventory-category-image img {
  transform: scale(1.035);
}

.inventory-category-card.editing:hover .inventory-category-image img {
  transform: none;
}

.inventory-category-image-editor {
  border: 2px solid rgba(23, 107, 76, .34);
  background: #eaf7f0;
  cursor: pointer;
}

.inventory-category-image-editor input[type="file"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.inventory-category-photo-replace {
  position: absolute;
  inset: auto 9px 9px;
  z-index: 2;
  padding: 8px 10px;
  display: grid;
  gap: 2px;
  border-radius: 8px;
  color: #fff;
  background: rgba(15, 64, 44, .84);
  backdrop-filter: blur(4px);
  text-align: center;
}

.inventory-category-photo-replace b,
.inventory-category-photo-replace em {
  display: block;
  font-style: normal;
}

.inventory-category-photo-replace b {
  font-size: 13px;
}

.inventory-category-photo-replace em {
  font-size: 10px;
  opacity: .84;
}

.inventory-category-image > span {
  font-size: 42px;
  font-weight: 950;
}

.inventory-category-image small {
  position: absolute;
  left: 9px;
  top: 9px;
  padding: 4px 8px;
  border-radius: 99px;
  color: var(--brand-strong);
  background: rgba(239,249,244,.92);
  box-shadow: 0 2px 8px rgba(18,42,31,.08);
  font-size: var(--font-size-caption);
  font-weight: 850;
}

.inventory-category-content {
  min-width: 0;
  display: grid;
  align-content: start;
}

.inventory-category-content > header {
  min-width: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.inventory-category-card-actions,
.inventory-category-inline-actions {
  display: flex;
  align-items: center;
  gap: 7px;
}

.inventory-category-inline-edit {
  min-height: 30px;
  padding: 0 12px;
  border: 1px solid #b8d5c7;
  border-radius: 8px;
  color: var(--brand);
  background: #eef8f3;
  font-size: 12px;
  font-weight: 800;
}

.inventory-category-inline-edit:hover {
  border-color: var(--brand);
  background: #dff2e8;
}

.inventory-category-inline-delete {
  min-height: 30px;
  padding: 0 12px;
  border: 1px solid #e3aaa2;
  border-radius: 8px;
  color: var(--danger);
  background: #fff5f3;
  font-size: 12px;
  font-weight: 800;
}

.inventory-category-inline-delete:hover {
  border-color: var(--danger);
  background: var(--danger-soft);
}

.inventory-category-name-editor {
  min-width: 0;
  flex: 1;
}

.inventory-category-name-editor small {
  display: block;
  margin-bottom: 4px;
}

.inventory-category-name-editor input,
.inventory-category-meta .editable input,
.inventory-category-meta .editable select {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  border: 1px solid #72ae93;
  border-radius: 7px;
  color: #173d2d;
  background: #e7f6ee;
  outline: none;
  font-weight: 800;
}

.inventory-category-name-editor input {
  height: 36px;
  padding: 0 10px;
  font-size: var(--font-size-card-title);
}

.inventory-category-meta .editable {
  background: #eff9f4;
}

.inventory-category-meta .editable input,
.inventory-category-meta .editable select {
  height: 30px;
  padding: 0 7px;
  font-size: 12px;
}

.inventory-category-name-editor input:focus,
.inventory-category-meta .editable input:focus,
.inventory-category-meta .editable select:focus {
  border-color: var(--brand);
  background: #fff;
  box-shadow: 0 0 0 3px rgba(23, 107, 76, .12);
}

.inventory-category-inline-save,
.inventory-category-inline-cancel {
  min-height: 30px;
  padding: 0 10px;
  border-radius: 8px;
  font-size: 11px;
  font-weight: 800;
}

.inventory-category-inline-save {
  border: 1px solid var(--brand);
  color: #fff;
  background: var(--brand);
}

.inventory-category-inline-cancel {
  border: 1px solid #cdd9d3;
  color: #5f7067;
  background: #fff;
}

.inventory-category-inline-form.saving {
  opacity: .68;
  pointer-events: none;
}

.inventory-category-content header small {
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 800;
}

.inventory-category-content h3 {
  margin: 3px 0 0;
  overflow: hidden;
  color: var(--text-primary);
  font-size: var(--font-size-card-title);
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-category-arrow {
  color: #8ba198;
  font-size: 27px;
  line-height: 1;
}

.inventory-category-meta {
  margin: 13px 0 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid #edf1ef;
  border-left: 1px solid #edf1ef;
}

.inventory-category-meta > div {
  min-width: 0;
  padding: 9px 10px;
  border-right: 1px solid #edf1ef;
  border-bottom: 1px solid #edf1ef;
}

.inventory-category-meta dt {
  color: var(--muted);
  font-size: var(--font-size-caption);
  line-height: 1.25;
}

.inventory-category-meta dd {
  margin: 4px 0 0;
  overflow: hidden;
  color: var(--text-primary);
  font-size: var(--font-size-small);
  font-weight: 850;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-category-meta > div:nth-child(3) dd {
  color: var(--brand);
  font-size: var(--font-size-card-title);
}

.inventory-subcategory-list {
  min-width: 0;
  margin-top: 12px;
  display: flex;
  flex-wrap: nowrap;
  gap: 6px;
  overflow: hidden;
}

.inventory-subcategory-list span {
  flex: 0 0 auto;
  max-width: 100%;
  padding: 4px 8px;
  overflow: hidden;
  border-radius: 6px;
  color: #2b7158;
  background: #edf8f2;
  font-size: var(--font-size-caption);
  font-weight: 750;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-subcategory-list span:first-child {
  min-width: 0;
  flex-shrink: 1;
}

.inventory-subcategory-list span.empty {
  color: var(--muted);
  background: var(--surface-soft);
}

.inventory-category-empty {
  grid-column: 1 / -1;
}

.inventory-category-footer small {
  color: var(--muted);
}

.inventory-category-footer {
  min-height: 34px;
  height: 34px;
  padding: 4px 14px;
}

.inventory-category-detail {
  min-width: 0;
  height: 100%;
  max-height: none;
  container-type: inline-size;
  overflow: hidden;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  border: 1px solid #d8e3dd;
  border-radius: 13px;
  background: #fff;
  box-shadow: 0 10px 28px rgba(18,42,31,.08);
  transform: translateX(0);
  opacity: 1;
  transition:
    transform .42s cubic-bezier(.22,.72,.24,1),
    opacity .32s ease,
    box-shadow .32s ease;
}

.inventory-category-detail:has(.inventory-move-toolbar) {
  grid-template-rows: auto auto minmax(0, 1fr);
}

.inventory-category-workspace.is-closing {
  pointer-events: none;
}

.inventory-category-workspace.is-closing .inventory-category-detail {
  opacity: 0;
  transform: translateX(72px);
  box-shadow: none;
}

.inventory-category-card.recently-closed {
  animation: inventory-category-anchor 1.1s ease-out;
}

@keyframes inventory-category-anchor {
  0%, 45% {
    border-color: var(--brand);
    background: #f5fbf7;
    box-shadow: 0 0 0 3px rgba(23,107,76,.14), 0 14px 30px rgba(18,42,31,.11);
  }
  100% {
    border-color: #dfe6e2;
    background: #fff;
    box-shadow: 0 5px 16px rgba(18,42,31,.045);
  }
}

@media (min-width: 1051px) {
  .inventory-category-workspace.has-selection {
    transition:
      grid-template-columns .42s cubic-bezier(.22,.72,.24,1),
      gap .42s cubic-bezier(.22,.72,.24,1);
  }

  .inventory-category-workspace.has-selection.is-closing {
    grid-template-columns: minmax(0, 1fr) 0 minmax(0, 0fr);
    gap: 0;
  }

  .inventory-category-workspace.has-selection.is-closing .inventory-category-splitter {
    width: 0;
    opacity: 0;
  }

  .inventory-category-workspace.has-selection.is-closing .inventory-category-grid {
    padding-right: 0;
  }

  .inventory-category-workspace.has-selection.is-closing .inventory-category-card {
    padding: 14px;
    grid-template-columns: 172px minmax(0, 1fr);
    gap: 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .inventory-category-workspace.has-selection,
  .inventory-category-detail,
  .inventory-category-card {
    transition-duration: .01ms;
  }

  .inventory-category-card.recently-closed {
    animation: none;
  }
}

.inventory-category-detail-head {
  min-height: 0;
  padding: 10px 12px;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  border-bottom: 1px solid var(--line);
  background:
    radial-gradient(circle at 92% 0, rgba(23,107,76,.1), transparent 34%),
    #fbfdfc;
}

.inventory-category-detail-head small,
.inventory-category-detail-head h3,
.inventory-category-detail-head p {
  display: block;
}

.inventory-category-detail-actions {
  width: min(560px, 58%);
  display: grid;
  gap: 7px;
}

.inventory-category-detail-action-row {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
}

.inventory-category-detail-actions select {
  width: 100%;
  min-height: 34px;
  padding: 0 28px 0 9px;
  font-size: var(--font-size-caption);
}

@container (max-width: 760px) {
  .inventory-category-detail-head {
    flex-direction: column;
  }

  .inventory-category-detail-actions {
    width: 100%;
  }
}

.inventory-move-toolbar {
  min-height: 48px;
  padding: 8px 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  border-bottom: 1px solid #cfe0d7;
  background: #eef8f3;
}

.inventory-move-toolbar span {
  flex: 1;
  color: var(--text-secondary);
  font-size: 13px;
}

.inventory-move-toolbar strong {
  color: var(--brand-strong);
}

.inventory-add-subcategory-button {
  min-height: 34px;
  padding: 0 13px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  border: 1px solid var(--brand);
  border-radius: 9px;
  color: #fff;
  background: var(--brand);
  box-shadow: 0 5px 12px rgba(23, 107, 76, .16);
  font-size: var(--font-size-caption);
  font-weight: 800;
  white-space: nowrap;
}

.inventory-add-subcategory-button span {
  font-size: 16px;
  line-height: 1;
}

.inventory-add-subcategory-button:hover {
  border-color: var(--brand-strong);
  background: var(--brand-strong);
  transform: translateY(-1px);
}

.inventory-create-fixed-category {
  min-height: 78px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border: 1px solid #cfe0d7;
  border-radius: 11px;
  background: linear-gradient(135deg, #edf8f2, #f8fcfa);
}

.inventory-create-fixed-category span,
.inventory-create-fixed-category strong,
.inventory-create-fixed-category small {
  display: block;
}

.inventory-create-fixed-category span {
  color: var(--muted);
  font-size: 11px;
}

.inventory-create-fixed-category strong {
  margin-top: 4px;
  color: var(--brand-strong);
  font-size: 16px;
}

.inventory-create-fixed-category small {
  margin-top: 4px;
  color: #617269;
  font-size: 11px;
}

.inventory-category-detail-head small {
  color: var(--brand);
  font-size: var(--font-size-caption);
  font-weight: 850;
}

.inventory-category-detail-head h3 {
  margin: 4px 0 0;
  color: var(--text-primary);
  font-size: var(--font-size-card-title);
}

.inventory-category-detail-head p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-category-detail-close {
  width: 34px;
  height: 34px;
  flex: 0 0 auto;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--text-secondary);
  background: #fff;
  font-size: 22px;
  line-height: 1;
}

.inventory-category-detail-close:hover {
  color: var(--brand);
  border-color: #91bda9;
  background: var(--brand-soft);
}

.inventory-subcategory-detail-list {
  min-height: 0;
  padding: 12px;
  overflow-y: auto;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  justify-content: start;
  gap: 11px;
  scrollbar-gutter: stable;
}

@container (max-width: 980px) {
  .inventory-subcategory-detail-list {
    grid-template-columns: 1fr;
  }
}

.inventory-subcategory-detail-list.list .inventory-subcategory-detail-card {
  grid-template-columns: 136px minmax(0, 1fr);
  padding: 9px 10px;
}

.inventory-subcategory-detail-list.list .inventory-subcategory-detail-image {
  width: 136px;
  height: auto;
  min-height: 112px;
  max-height: 220px;
  align-self: start;
  font-size: 28px;
}

.inventory-subcategory-detail-list.list .inventory-subcategory-facts {
  margin-top: 5px;
}

.inventory-subcategory-detail-list.list .inventory-subcategory-stock {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: 7px;
}

.inventory-subcategory-detail-list.list .inventory-subcategory-stock > div {
  padding: 6px;
}

.inventory-subcategory-detail-list.list .inventory-subcategory-detail-main > footer {
  margin-top: 7px;
  padding-top: 6px;
}

.inventory-subcategory-detail-card {
  position: relative;
  min-width: 0;
  padding: 12px;
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr);
  gap: 13px;
  border: 1px solid #e0e7e3;
  border-radius: 11px;
  background: #fff;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.inventory-subcategory-detail-card:hover,
.inventory-subcategory-detail-card:focus-visible {
  transform: translateY(-1px);
  border-color: #83bba3;
  box-shadow: 0 10px 24px rgba(18,42,31,.09);
  outline: none;
}

.inventory-subcategory-detail-card.move-selected {
  border-color: var(--brand);
  background: #eef8f3;
  box-shadow: 0 0 0 2px rgba(24,125,85,.14);
}

.inventory-subcategory-move-check {
  position: absolute;
  z-index: 3;
  top: 8px;
  left: 8px;
  min-height: 28px;
  padding: 4px 8px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border: 1px solid #b8d5c7;
  border-radius: 8px;
  color: var(--brand-strong);
  background: rgba(255,255,255,.94);
  box-shadow: 0 3px 10px rgba(18,42,31,.1);
  cursor: pointer;
  font-size: 11px;
  font-weight: 800;
}

.inventory-subcategory-move-check input {
  margin: 0;
  accent-color: var(--brand);
}

.inventory-subcategory-card-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}

.inventory-subcategory-card-actions button {
  min-height: 28px;
  padding: 0 9px;
  border: 1px solid #b8d5c7;
  border-radius: 8px;
  color: var(--brand);
  background: #eef8f3;
  font-size: 11px;
  font-weight: 800;
}

.inventory-subcategory-card-actions button:hover {
  border-color: var(--brand);
  background: #dff2e8;
}

.inventory-subcategory-detail-card.selected {
  border-color: var(--brand);
  background: #eef8f3;
  box-shadow: 0 0 0 2px rgba(24,125,85,.14), 0 12px 28px rgba(18,72,49,.12);
}

.inventory-subcategory-detail-image {
  width: 120px;
  height: auto;
  min-height: 112px;
  max-height: 220px;
  overflow: hidden;
  display: grid;
  place-items: center;
  border-radius: 9px;
  color: var(--brand);
  background: transparent;
  font-size: 30px;
  font-weight: 950;
}

.inventory-subcategory-detail-image img {
  width: 100%;
  height: auto;
  display: block;
  align-self: start;
}

.inventory-subcategory-detail-main {
  min-width: 0;
}

.inventory-subcategory-detail-main > header {
  min-width: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.inventory-subcategory-detail-main > header > div {
  min-width: 0;
}

.inventory-subcategory-detail-main h4 {
  margin: 0;
  overflow: hidden;
  color: var(--text-primary);
  font-size: var(--font-size-body);
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-subcategory-detail-main header small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-subcategory-facts {
  margin-top: 9px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px 12px;
}

.inventory-subcategory-facts p {
  min-width: 0;
  margin: 0;
}

.inventory-subcategory-facts span,
.inventory-subcategory-facts strong {
  display: block;
}

.inventory-subcategory-facts span {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-subcategory-facts strong {
  margin-top: 2px;
  overflow: hidden;
  color: var(--text-secondary);
  font-size: var(--font-size-caption);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-subcategory-stock {
  grid-column: 1 / -1;
  margin: 11px 0 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 1px solid #edf1ef;
  border-left: 1px solid #edf1ef;
}

.inventory-subcategory-stock > div {
  min-width: 0;
  padding: 8px;
  border-right: 1px solid #edf1ef;
  border-bottom: 1px solid #edf1ef;
}

.inventory-subcategory-stock dt {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-subcategory-stock dd {
  margin: 3px 0 0;
  overflow: hidden;
  color: var(--text-primary);
  font-size: var(--font-size-small);
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-subcategory-stock dd.positive {
  color: var(--brand);
}

.inventory-subcategory-stock dd.danger {
  color: var(--danger);
}

.inventory-subcategory-detail-main > footer {
  margin-top: 10px;
  padding-top: 9px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  border-top: 1px solid var(--line);
}

.inventory-subcategory-detail-main > footer span,
.inventory-subcategory-detail-main > footer strong {
  display: block;
}

.inventory-subcategory-detail-main > footer span {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-subcategory-detail-main > footer strong {
  margin-top: 3px;
  color: var(--text-primary);
  font-size: var(--font-size-small);
}

.inventory-item-detail {
  display: grid;
  gap: 13px;
}

.inventory-edit-form {
  margin-bottom: 16px;
}

.inventory-inline-edit-grid {
  gap: 8px;
  padding: 10px;
  border-top-color: #b9d7c8;
  background: #f4faf7;
}

.inventory-inline-edit-grid > .inventory-inline-edit-card,
.inventory-inline-edit-grid > .inventory-inline-readonly-card {
  min-width: 0;
  min-height: 76px;
  padding: 9px 10px;
  display: grid;
  align-content: start;
  gap: 6px;
  border: 1px solid #b9d7c8;
  border-radius: 9px;
}

.inventory-inline-edit-card {
  background: #eaf7f0;
  box-shadow: inset 3px 0 0 #58a783;
}

.inventory-inline-edit-card.full {
  grid-column: 1 / -1;
}

.inventory-inline-edit-card small,
.inventory-inline-readonly-card small {
  color: var(--muted);
  font-size: var(--font-size-caption);
  font-weight: 800;
}

.inventory-inline-edit-card input,
.inventory-inline-edit-card select,
.inventory-inline-edit-card textarea {
  width: 100%;
  min-width: 0;
  min-height: 34px;
  padding: 6px 8px;
  border: 1px solid #9bc5b1;
  border-radius: 7px;
  color: var(--text-primary);
  background: #fff;
  font-size: var(--font-size-small);
}

.inventory-inline-edit-card textarea {
  min-height: 82px;
  resize: vertical;
}

.inventory-inline-edit-card input:focus,
.inventory-inline-edit-card select:focus,
.inventory-inline-edit-card textarea:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(23,107,76,.1);
  outline: none;
}

.inventory-inline-readonly-card {
  position: relative;
  background: #fff;
  border-color: var(--line);
}

.inventory-inline-readonly-card strong {
  padding-right: 42px;
  color: var(--text-primary);
  font-size: var(--font-size-caption);
  overflow-wrap: anywhere;
}

.inventory-inline-readonly-card > span {
  position: absolute;
  top: 8px;
  right: 8px;
  padding: 2px 6px;
  border-radius: 99px;
  color: #7b8982;
  background: #eef2f0;
  font-size: 10px;
  font-weight: 800;
}

.inventory-item-detail.editing [data-inventory-detail-fields] > summary,
.inventory-item-detail.editing [data-inventory-detail-photos] > summary {
  color: var(--brand-strong);
  background: #eaf7f0;
}

.inventory-edit-photos.inventory-inline-edit-photos {
  border: 0;
  border-radius: 0;
  background: #f4faf7;
}

.inventory-edit-photos {
  padding: 14px;
  border: 1px solid #d9e5df;
  border-radius: 12px;
  background: #fff;
}

.inventory-edit-photos > header {
  margin-bottom: 12px;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.inventory-edit-photos > header strong,
.inventory-edit-photos > header small {
  display: block;
}

.inventory-edit-photos > header small,
.inventory-edit-photos > header span {
  margin-top: 4px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-edit-photo-grid {
  margin: 12px 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(118px, 1fr));
  gap: 9px;
}

.inventory-edit-photo-card {
  position: relative;
  min-width: 0;
  aspect-ratio: 1;
  overflow: hidden;
  border: 1px solid #dce6e1;
  border-radius: 10px;
  background: var(--surface-soft);
}

.inventory-edit-photo-preview {
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: zoom-in;
}

.inventory-edit-photo-image {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.inventory-edit-photo-remove {
  position: absolute;
  top: 6px;
  right: 6px;
  z-index: 2;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid rgba(255,255,255,.72);
  border-radius: 50%;
  color: #fff;
  background: rgba(135,39,30,.86);
  font-size: 19px;
  line-height: 1;
}

.inventory-edit-photo-card > small {
  position: absolute;
  left: 7px;
  bottom: 7px;
  padding: 3px 6px;
  border-radius: 99px;
  color: #fff;
  background: rgba(12,32,23,.7);
  font-size: 10px;
}

.inventory-edit-photo-card.pending {
  border-style: dashed;
  border-color: #8eb9a6;
}

.inventory-edit-photo-empty {
  grid-column: 1 / -1;
  margin: 0;
  padding: 20px;
  border: 1px dashed #bfd3c8;
  border-radius: 9px;
  color: var(--muted);
  background: #f8fbf9;
  text-align: center;
  font-size: var(--font-size-caption);
}

.inventory-item-summary {
  padding: 15px;
  display: grid;
  grid-template-columns: 104px minmax(180px, 1fr) minmax(620px, 2.6fr);
  align-items: center;
  gap: 16px;
  border: 1px solid #d4e3db;
  border-radius: 13px;
  background: linear-gradient(110deg, #fbfdfc, #f3faf6);
}

.inventory-item-summary-image {
  width: 104px;
  height: 104px;
  overflow: hidden;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: var(--brand);
  background: var(--brand-soft);
  font-size: 34px;
  font-weight: 950;
}

.inventory-item-summary-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.inventory-item-summary h3 {
  margin: 4px 0 0;
  font-size: var(--font-size-section);
}

.inventory-item-summary p,
.inventory-item-summary small {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-item-summary dl {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: 1px solid #dce8e2;
  border-radius: 9px;
  overflow: hidden;
}

.inventory-item-summary dl > div {
  min-width: 0;
  padding: 12px 16px;
  border-right: 1px solid #dce8e2;
  background: rgba(255,255,255,.78);
}

.inventory-item-summary dl > div:nth-child(2n) {
  border-right: 0;
}

.inventory-item-summary dl > div:nth-child(-n + 2) { border-bottom: 1px solid #dce8e2; }

.inventory-item-summary dt {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-item-summary dd {
  margin: 5px 0 0;
  overflow: hidden;
  color: var(--brand);
  font-size: var(--font-size-body);
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.inventory-item-summary .inventory-multi-unit-total { display: grid; justify-items: start; align-content: center; text-align: left; }
.inventory-item-summary .inventory-multi-unit-total dd { width: 100%; overflow: visible; white-space: nowrap; }
.inventory-item-summary .inventory-multi-unit-total dd span { color: #e5484d; font-weight: 800; }

.inventory-item-actions {
  padding: 11px;
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #fff;
}

.inventory-item-actions button {
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid #cfe0d7;
  border-radius: 7px;
  color: var(--brand);
  background: #f6fbf8;
  font-size: var(--font-size-caption);
  font-weight: 850;
}

.inventory-item-actions button:hover {
  border-color: #83bba3;
  background: var(--brand-soft);
}

.inventory-item-actions > span {
  align-self: center;
  margin-left: auto;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-detail-section {
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #fff;
  overflow: hidden;
}

.inventory-detail-section > summary {
  min-height: 46px;
  padding: 0 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: var(--text-primary);
  background: #fafcfb;
  cursor: pointer;
  font-size: var(--font-size-small);
  font-weight: 900;
  list-style: none;
}

.inventory-detail-section > summary::-webkit-details-marker {
  display: none;
}

.inventory-detail-section > summary span {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-detail-field-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid var(--line);
}

.inventory-detail-field-grid > div {
  min-width: 0;
  min-height: 62px;
  padding: 10px 12px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.inventory-detail-field-grid small,
.inventory-detail-field-grid strong {
  display: block;
}

.inventory-detail-field-grid small {
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-detail-field-grid strong {
  margin-top: 5px;
  color: var(--text-primary);
  font-size: var(--font-size-caption);
  overflow-wrap: anywhere;
}

.inventory-detail-usage-list,
.inventory-detail-log-list {
  padding: 10px 14px;
  display: grid;
  gap: 7px;
  border-top: 1px solid var(--line);
}

.inventory-detail-usage-list article,
.inventory-detail-log-list > article {
  min-width: 0;
  padding: 9px 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid #edf1ef;
  border-radius: 8px;
}

.inventory-detail-usage-list strong,
.inventory-detail-usage-list small,
.inventory-detail-log-list strong,
.inventory-detail-log-list small {
  display: block;
}

.inventory-detail-usage-list small,
.inventory-detail-log-list small {
  margin-top: 3px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-detail-log-list p {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--font-size-caption);
}

.inventory-detail-log-list details {
  max-width: 62%;
}

.inventory-detail-log-list details summary {
  color: var(--brand);
  cursor: pointer;
  font-size: var(--font-size-caption);
}

.inventory-detail-log-list pre {
  max-width: 540px;
  max-height: 260px;
  padding: 9px;
  overflow: auto;
  border-radius: 7px;
  color: #dce9e2;
  background: #17241e;
  font-size: 10px;
  white-space: pre-wrap;
}

.inventory-detail-photo-grid {
  padding: 12px;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  border-top: 1px solid var(--line);
}

.inventory-detail-photo-grid button {
  min-width: 0;
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: 8px;
  background: transparent;
}

.inventory-detail-photo-grid img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 8px;
  background: var(--surface-soft);
}

.inventory-batch-qrcode-button {
  flex: 0 0 auto;
  min-height: 40px;
  white-space: nowrap;
}

.inventory-batch-qr-intro {
  margin-bottom: 12px;
  padding: 14px 16px;
  border: 1px solid #d8e5de;
  border-radius: 11px;
  background: #f4faf7;
}

.inventory-batch-qr-intro strong {
  color: var(--brand-strong);
  font-size: var(--font-size-body);
}

.inventory-batch-qr-intro p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: var(--font-size-small);
}

.inventory-batch-qr-tree {
  max-height: min(58vh, 590px);
  overflow-y: auto;
  display: grid;
  gap: 9px;
  scrollbar-gutter: stable;
}

.inventory-batch-qr-group {
  overflow: hidden;
  border: 1px solid #dfe7e3;
  border-radius: 10px;
  background: #fff;
}

.inventory-batch-qr-group > summary {
  min-height: 52px;
  padding: 9px 13px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  list-style: none;
  background: #fafcfb;
  cursor: pointer;
}

.inventory-batch-qr-group > summary::-webkit-details-marker {
  display: none;
}

.inventory-batch-qr-group > summary > label,
.inventory-batch-qr-items > label {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
}

.inventory-batch-qr-group input[type="checkbox"] {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  accent-color: var(--brand);
}

.inventory-batch-qr-group label span {
  min-width: 0;
}

.inventory-batch-qr-group label strong,
.inventory-batch-qr-group label small {
  display: block;
}

.inventory-batch-qr-group label strong {
  overflow: hidden;
  color: var(--text-primary);
  font-size: var(--font-size-small);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inventory-batch-qr-group label small {
  margin-top: 2px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-batch-qr-group > summary > b {
  color: #779086;
  font-size: 20px;
  transition: transform .18s ease;
}

.inventory-batch-qr-group[open] > summary > b {
  transform: rotate(180deg);
}

.inventory-batch-qr-items {
  padding: 10px 13px 12px 42px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  border-top: 1px solid #edf1ef;
  background: #fff;
}

.inventory-batch-qr-items > label {
  min-height: 46px;
  padding: 7px 9px;
  border: 1px solid #e5ebe8;
  border-radius: 8px;
  background: #fbfcfb;
}

.inventory-batch-qr-progress {
  min-height: 38px;
  margin-top: 12px;
  padding: 8px 12px;
  display: flex;
  align-items: center;
  border-radius: 8px;
  color: var(--brand-strong);
  background: var(--brand-soft);
  font-size: var(--font-size-small);
  font-weight: 800;
}

.inventory-qrcode {
  min-height: 430px;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 12px;
}

.inventory-qrcode img {
  width: min(360px, 70vw);
  height: min(360px, 70vw);
}

.inventory-qrcode strong {
  color: var(--brand);
  font-size: var(--font-size-card-title);
}

dialog.inventory-create-dialog {
  width: min(1180px, calc(100vw - 40px));
  max-height: calc(100vh - 28px);
  border-radius: 17px;
}

.inventory-create-dialog .modal-card > header {
  min-height: 82px;
  padding: 16px 26px;
}

.inventory-create-dialog .modal-body {
  max-height: calc(100vh - 184px);
  padding: 18px 24px 26px;
  background:
    radial-gradient(circle at 96% 2%, rgba(23,107,76,.06), transparent 24%),
    #f7faf8;
}

.inventory-create-dialog .modal-card > footer {
  min-height: 70px;
  padding: 12px 26px;
  background: #fff;
}

.inventory-create-form {
  display: grid;
  gap: 15px;
}

.inventory-create-section {
  min-width: 0;
  padding: 18px 20px 20px;
  border: 1px solid #dbe5e0;
  border-radius: 13px;
  background: #fff;
  box-shadow: 0 5px 16px rgba(18,42,31,.04);
}

.inventory-create-section > header {
  margin-bottom: 15px;
  padding-bottom: 11px;
  border-bottom: 1px solid #edf1ef;
}

.inventory-create-section > header h3,
.inventory-create-section > header p {
  margin: 0;
}

.inventory-create-section > header h3 {
  color: var(--brand-strong);
  font-size: var(--font-size-card-title);
}

.inventory-create-section > header p {
  margin-top: 5px;
  color: var(--muted);
  font-size: var(--font-size-caption);
}

.inventory-create-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 13px 15px;
}

.inventory-create-grid.three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.inventory-create-grid > input[type="hidden"] {
  display: none;
}

.inventory-create-grid .field {
  min-width: 0;
  align-content: start;
}

.inventory-create-grid .field > span {
  color: #405048;
}

.inventory-create-combobox { position: relative; }
.inventory-create-suggestions { margin-top: 6px; padding: 7px; border: 1px solid #cfe1d8; border-radius: 8px; display: flex; flex-wrap: wrap; align-items: center; gap: 5px; background: #f4faf7; }
.inventory-create-suggestions > span { margin-right: 2px; color: #617269; font-size: 11px; font-weight: 750; }
.inventory-create-suggestions > small { color: #78877f; font-size: 11px; }
.inventory-create-suggestions button { min-height: 26px; padding: 3px 9px; border: 1px solid #b8d7c7; border-radius: 999px; color: var(--brand-strong); background: #fff; font-size: 12px; font-weight: 750; }
.inventory-create-suggestions button:hover { border-color: var(--brand); color: #fff; background: var(--brand); }
.inventory-create-duplicate { min-height: 18px; margin: 10px 0 0; color: var(--danger); font-size: 12px; font-weight: 750; }

.inventory-create-grid input,
.inventory-create-grid select,
.inventory-create-grid textarea {
  min-height: 42px;
  background: #fbfdfc;
}

.inventory-create-grid textarea {
  min-height: 92px;
}

.inventory-create-rate input {
  color: var(--brand);
  background: #eef7f2;
  font-weight: 850;
}

.inventory-create-section.photos {
  padding-bottom: 20px;
}

.inventory-create-photo-workspace {
  padding: 17px;
  box-shadow: none;
}

.inventory-create-photo-workspace .completion-dropzone {
  min-height: 150px;
}

.inventory-create-photo-workspace .completion-local-preview {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

@media (max-width: 1500px) {
  .inventory-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 1050px) {
  .inventory-category-toolbar {
    align-items: flex-start;
    flex-direction: column;
  }

  .inventory-type-tabs {
    width: 100%;
    overflow-x: auto;
  }

  .inventory-type-tabs button {
    flex: 0 0 auto;
  }

  .inventory-category-tools {
    width: 100%;
  }

  .inventory-search-box {
    width: auto;
    flex: 1;
  }

  .inventory-category-actions {
    flex: 0 0 auto;
  }

  .inventory-category-workspace.has-selection {
    grid-template-columns: 1fr;
  }

  .inventory-category-workspace.has-selection .inventory-category-grid,
  .inventory-category-detail {
    max-height: none;
  }

  .inventory-category-workspace.has-selection .inventory-category-card {
    min-height: 226px;
    padding: 14px;
    grid-template-columns: 132px minmax(0, 1fr);
    gap: 16px;
  }

  .inventory-category-workspace.has-selection .inventory-category-image {
    min-height: 0;
  }

  .inventory-item-summary {
    grid-template-columns: 88px minmax(0, 1fr);
  }

  .inventory-item-summary-image {
    width: 88px;
    height: 88px;
  }

  .inventory-item-summary dl {
    grid-column: 1 / -1;
  }

  .inventory-detail-field-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .inventory-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .inventory-category-grid {
    grid-template-columns: 1fr;
  }

  .inventory-category-detail-head {
    flex-direction: column;
  }

  .inventory-category-detail-actions {
    width: 100%;
    flex-wrap: wrap;
  }

  .inventory-subcategory-detail-list.list .inventory-subcategory-stock,
  .inventory-subcategory-stock {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .inventory-item-summary {
    grid-template-columns: 1fr;
  }

  .inventory-item-summary dl {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .inventory-detail-field-grid {
    grid-template-columns: 1fr;
  }

  .inventory-detail-photo-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .inventory-batch-qr-items {
    padding-left: 13px;
    grid-template-columns: 1fr;
  }
}

@media (max-width: 520px) {
  .inventory-metrics {
    grid-template-columns: 1fr;
  }

  .inventory-category-tools,
  .inventory-category-card {
    grid-template-columns: 1fr;
  }

  .inventory-category-tools {
    align-items: stretch;
    flex-direction: column;
  }

  .inventory-category-actions {
    width: 100%;
    display: grid;
    grid-template-columns: 1fr;
  }

  .inventory-category-image {
    min-height: 180px;
  }
}

@media (max-width: 760px) {
  .project-import-photo-preparation { grid-template-columns: 1fr; }
  .project-import-photo-preparation > small { white-space: normal; }
  .completion-photo-heading { align-items: stretch; flex-direction: column; }
  .desktop-photo-compression { width: 100%; flex-wrap: wrap; }
  dialog.inventory-create-dialog {
    width: calc(100vw - 12px);
    max-height: calc(100vh - 12px);
  }

  .inventory-create-dialog .modal-card > header,
  .inventory-create-dialog .modal-card > footer {
    padding-right: 16px;
    padding-left: 16px;
  }

  .inventory-create-dialog .modal-body {
    max-height: calc(100vh - 160px);
    padding: 12px;
  }

  .inventory-create-section {
    padding: 15px;
  }

  .inventory-create-grid,
  .inventory-create-grid.three {
    grid-template-columns: 1fr;
  }

  .inventory-create-photo-workspace .completion-local-preview {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Project requirement center */
.requirement-center-page { display: grid; gap: 16px; }
.requirement-command-bar { position: sticky; top: 78px; z-index: 16; margin: -8px -8px 0; padding: 10px 8px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-bottom: 1px solid rgba(206,220,213,.88); border-radius: 0 0 12px 12px; background: rgba(248,251,249,.96); box-shadow: 0 10px 24px rgba(18,42,31,.08); backdrop-filter: blur(12px); }
.requirement-command-actions { display: flex; align-items: center; gap: 8px; }
.requirement-tabs, .requirement-view-toggle { display: flex; align-items: center; gap: 6px; padding: 5px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); box-shadow: 0 6px 20px rgba(18,42,31,.04); }
.requirement-tabs button, .requirement-view-toggle button { min-height: 38px; padding: 0 14px; border: 0; border-radius: 7px; color: var(--muted); background: transparent; font-weight: 800; }
.requirement-tabs button { display: flex; align-items: center; gap: 10px; }
.requirement-tabs button b { min-width: 24px; padding: 2px 7px; border-radius: 99px; color: var(--brand); background: var(--brand-soft); font-size: 11px; }
.requirement-tabs button.active, .requirement-view-toggle button.active { color: #fff; background: var(--brand); }
.requirement-tabs button.active b { color: var(--sidebar); background: #d9b870; }
.requirement-filter-panel { position: relative; z-index: 8; padding: 16px; overflow: visible; }
.requirement-filter-grid { display: grid; grid-template-columns: minmax(190px, 1.45fr) repeat(7, minmax(125px, 1fr)) auto auto; gap: 12px; align-items: end; }
.requirement-filter-grid > label, .requirement-multi-field { display: grid; gap: 6px; color: var(--muted); font-size: var(--font-size-caption); font-weight: 800; }
.requirement-filter-grid input:not([type="checkbox"]), .requirement-filter-grid select { width: 100%; min-height: 40px; padding: 0 10px; border: 1px solid var(--line); border-radius: 7px; color: var(--ink); background: var(--surface); }
.requirement-multi-select { position: relative; min-width: 0; }
.requirement-multi-select > summary { width: 100%; min-height: 40px; padding: 0 10px; display: flex; align-items: center; justify-content: space-between; gap: 8px; border: 1px solid var(--line); border-radius: 7px; color: var(--ink); background: var(--surface); list-style: none; cursor: pointer; }
.requirement-multi-select > summary::-webkit-details-marker { display: none; }
.requirement-multi-select > summary::after { content: '⌄'; flex: 0 0 auto; color: var(--muted); font-size: 14px; line-height: 1; }
.requirement-multi-select[open] > summary { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(23,107,76,.1); }
.requirement-multi-select > summary span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.requirement-multi-select > summary b { min-width: 20px; padding: 2px 6px; border-radius: 99px; color: var(--brand); background: var(--brand-soft); font-size: 10px; text-align: center; }
.requirement-multi-menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 30; width: max(100%, 260px); padding: 9px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface); box-shadow: 0 14px 34px rgba(18,42,31,.16); }
.requirement-multi-menu-head { padding: 2px 3px 8px; display: grid; grid-template-columns: auto minmax(82px, 1fr) auto; align-items: center; gap: 8px; border-bottom: 1px solid var(--line); }
.requirement-multi-menu-head strong { color: var(--ink); font-size: 12px; white-space: nowrap; }
.requirement-filter-grid .requirement-multi-menu-head input { width: 100%; min-width: 0; min-height: 30px; height: 30px; padding: 3px 8px; border-color: #cbdad2; font-size: 12px; font-weight: 500; }
.requirement-multi-menu-head button { padding: 2px 5px; border: 0; color: var(--brand); background: transparent; font-size: 12px; font-weight: 800; cursor: pointer; }
.requirement-multi-options { max-height: 260px; padding-top: 6px; display: grid; gap: 2px; overflow-y: auto; }
.requirement-multi-options label { min-height: 34px; padding: 5px 7px; display: flex; align-items: center; gap: 8px; border-radius: 6px; color: var(--ink); font-size: 12px; cursor: pointer; user-select: none; }
.requirement-multi-options label:hover { background: var(--brand-soft); }
.requirement-multi-options label.is-selected { color: var(--brand-strong); background: var(--brand-soft); font-weight: 800; }
.requirement-multi-options input { flex: 0 0 auto; width: 15px; height: 15px; min-height: 15px; margin: 0; accent-color: var(--brand); }
.requirement-multi-options small { padding: 10px 7px; color: var(--muted); font-weight: 500; text-align: center; }
.requirement-filter-checks { min-height: 40px; display: grid; align-content: center; gap: 4px; color: var(--muted); font-size: 12px; white-space: nowrap; }
.requirement-filter-checks label { cursor: pointer; }
.requirement-filter-checks input[type="checkbox"] { width: 15px; height: 15px; min-height: 15px; margin: 0 5px 0 0; vertical-align: -3px; accent-color: var(--brand); }
.requirement-filter-actions { display: flex; gap: 7px; }
.requirement-expand-actions { margin-top: 14px; padding-top: 13px; display: flex; align-items: center; justify-content: flex-end; gap: 8px; border-top: 1px solid var(--line); }
.requirement-expand-actions > span { margin-right: auto; color: var(--muted); font-size: 12px; font-weight: 800; }
.requirement-excel-button { margin-left: 3px; min-width: 104px; }
.requirement-back-to-top { position: fixed; right: 28px; bottom: 28px; z-index: 18; width: 52px; height: 52px; padding: 0; display: grid; place-content: center; justify-items: center; border: 1px solid rgba(255,255,255,.28); border-radius: 14px; color: #fff; background: var(--brand); box-shadow: 0 12px 28px rgba(18,74,51,.24); opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(12px); transition: opacity .18s ease, transform .18s ease, visibility .18s ease, background .18s ease; }
.requirement-back-to-top.visible { opacity: 1; visibility: visible; pointer-events: auto; transform: translateY(0); }
.requirement-back-to-top:hover { background: var(--brand-strong); }
.requirement-back-to-top span { font-size: 21px; font-weight: 900; line-height: .8; }
.requirement-back-to-top small { margin-top: 4px; font-size: 10px; font-weight: 800; }
.requirement-groups { position: relative; z-index: 1; display: grid; gap: 11px; }
.requirement-group { border: 1px solid var(--line); border-radius: 11px; background: var(--surface); box-shadow: 0 7px 22px rgba(18,42,31,.045); overflow: hidden; }
.requirement-group.has-gap { border-left: 4px solid var(--gold); }
.requirement-group > summary { min-height: 72px; padding: 13px 17px; display: flex; align-items: center; justify-content: space-between; gap: 20px; list-style: none; cursor: pointer; }
.requirement-group > summary::-webkit-details-marker { display: none; }
.requirement-group > summary > div:first-child { min-width: 0; display: flex; align-items: center; gap: 12px; }
.requirement-group-icon { flex: 0 0 38px; width: 38px; height: 38px; display: grid; place-items: center; border-radius: 9px; color: var(--brand); background: var(--brand-soft); font-weight: 950; }
.requirement-group p, .requirement-group-summary { margin: 0; }
.requirement-group p strong, .requirement-group p small, .requirement-group-summary b, .requirement-group-summary small { display: block; }
.requirement-group p strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 15px; }
.requirement-group p small, .requirement-group-summary small { margin-top: 4px; color: var(--muted); font-size: 12px; }
.requirement-group-summary { flex: 0 0 auto; text-align: right; }
.requirement-group-summary b { color: var(--brand-strong); font-size: 13px; }
.requirement-table-wrap { border-top: 1px solid var(--line); overflow-x: auto; }
.requirement-table-wrap table { width: 100%; min-width: 930px; border-collapse: collapse; }
.requirement-table-wrap th, .requirement-table-wrap td { padding: 11px 14px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.requirement-table-wrap th { color: var(--muted); background: var(--surface-soft); font-size: 12px; white-space: nowrap; }
.requirement-table-wrap tbody tr:last-child td { border-bottom: 0; }
.requirement-table-wrap tbody tr:hover { background: #fbfcfb; }
.requirement-table-wrap .requirement-record-row { cursor: pointer; }
.requirement-table-wrap .requirement-addition-row > td { background: #ffedd3 !important; }
.requirement-table-wrap .requirement-addition-row > td:first-child { box-shadow: inset 6px 0 #db7411; }
.requirement-table-wrap .requirement-addition-row:hover > td { background: #ffe2b9 !important; }
.requirement-addition-tag { width: fit-content; margin-top: 5px; padding: 3px 7px; border: 1px solid #e7a052; border-radius: 999px; color: #954707; background: #fff5e6; font-size: 11px; font-weight: 850; }
.requirement-table-wrap .requirement-record-row:focus-visible { outline: 3px solid rgba(23,107,76,.2); outline-offset: -3px; }
.requirement-table-wrap .module-status-select { min-width: 108px; }
.requirement-table-wrap .requirement-project-column { width: 200px; min-width: 200px; max-width: 200px; }
.requirement-table-wrap .requirement-content-column { width: 280px; min-width: 280px; max-width: 280px; }
.requirement-table-wrap .requirement-spec-column { width: 260px; min-width: 260px; max-width: 260px; }
.requirement-table-wrap .requirement-project-column,
.requirement-table-wrap .requirement-content-column,
.requirement-table-wrap .requirement-spec-column { overflow: hidden; }
.requirement-table-wrap .requirement-clipped-text,
.requirement-table-wrap .requirement-note-preview,
.requirement-table-wrap .requirement-supporting-preview {
  display: block;
  width: 100%;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: help;
}
.requirement-table-wrap .requirement-supporting-preview .record-detail-url {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  overflow-wrap: normal;
  white-space: nowrap;
}
.requirement-render-progress { max-height: 72px; margin: 0 0 12px; padding: 10px 14px; overflow: hidden; border: 1px solid #d9e8df; border-radius: 10px; opacity: 1; background: #f5faf7; transition: opacity .25s ease, max-height .3s ease, margin .3s ease, padding .3s ease, border-width .3s ease; }
.requirement-render-progress > div { display: flex; align-items: center; justify-content: space-between; gap: 16px; color: var(--brand-strong); font-size: 12px; font-weight: 800; }
.requirement-render-progress b { color: var(--muted); font-variant-numeric: tabular-nums; }
.requirement-render-progress progress { width: 100%; height: 5px; margin-top: 7px; display: block; border: 0; border-radius: 999px; overflow: hidden; background: #dceae2; }
.requirement-render-progress progress::-webkit-progress-bar { background: #dceae2; }
.requirement-render-progress progress::-webkit-progress-value { border-radius: 999px; background: var(--brand); }
.requirement-render-progress progress::-moz-progress-bar { border-radius: 999px; background: var(--brand); }
.requirement-render-progress.complete { border-color: var(--line); background: var(--surface-soft); }
.requirement-render-progress.auto-hidden { max-height: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0; border-width: 0; opacity: 0; pointer-events: none; }
.requirement-photo-toggle { min-height: 48px; white-space: nowrap; }
.requirement-photo-toggle.active { color: #fff; border-color: var(--brand); background: var(--brand); }
.requirement-photo-thumbnails { min-width: 116px; display: flex; align-items: center; gap: 5px; }
.requirement-photo-thumbnails button { width: 34px; height: 34px; padding: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-soft); }
.requirement-photo-thumbnail { width: 100%; height: 100%; display: block; object-fit: cover; }
.requirement-photo-thumbnails small { color: var(--muted); font-size: 11px; font-weight: 800; }
.requirement-photo-empty { color: var(--muted); }
.requirement-site-photo-cell { min-width: 116px; display: grid; justify-items: start; gap: 5px; }
.requirement-site-photo-add { width: 34px; height: 27px; padding: 0; display: grid; place-items: center; border: 1px dashed #79ad93; border-radius: 6px; color: var(--brand); background: #f1faf5; font-size: 20px; font-weight: 700; line-height: 1; cursor: pointer; }
.requirement-site-photo-add:hover { color: #fff; border-style: solid; background: var(--brand); }
.record-detail-url { color: var(--brand); font-weight: 800; overflow-wrap: anywhere; text-decoration: underline; text-underline-offset: 2px; }

/* 只读项目影像工作台：不承载人员、物料、考勤或项目操作。 */
.dashboard-gallery { --gallery-cyan:#22e4db; --gallery-blue:#2b9dff; position:relative; min-width:1100px; min-height:100vh; overflow:hidden; padding:14px 20px 18px; color:#e9f6ff; background:radial-gradient(circle at 52% -10%,#0b3e77 0,transparent 36%),linear-gradient(135deg,#020b1c 0%,#06213c 52%,#031125 100%); isolation:isolate; }
.dashboard-gallery::before,.dashboard-gallery::after { position:absolute; z-index:-1; content:""; pointer-events:none; }
.dashboard-gallery::before { inset:0; opacity:.24; background:linear-gradient(90deg,transparent 49.9%,rgba(39,189,255,.18) 50%,transparent 50.1%),linear-gradient(0deg,transparent 49.9%,rgba(39,189,255,.1) 50%,transparent 50.1%); background-size:58px 58px; mask-image:linear-gradient(#000,transparent 82%); }
.dashboard-gallery::after { width:55vw; height:55vw; right:-24vw; bottom:-37vw; border:1px solid rgba(38,227,218,.2); border-radius:50%; box-shadow:0 0 110px rgba(32,151,255,.16); }
.dashboard-gallery * { box-sizing:border-box; }
.dashboard-gallery-header { height:70px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:20px; border-bottom:1px solid rgba(53,183,255,.32); }
.dashboard-gallery-brand { display:flex; align-items:center; gap:10px; color:#e6fbff; font-size:18px; font-weight:800; letter-spacing:.1em; }
.dashboard-gallery-brand img { width:45px; height:45px; object-fit:contain; }
.dashboard-gallery-title { position:relative; min-width:460px; text-align:center; }
.dashboard-gallery-title::before,.dashboard-gallery-title::after { position:absolute; top:50%; width:100px; height:1px; content:""; background:linear-gradient(90deg,transparent,var(--gallery-blue)); }
.dashboard-gallery-title::before { left:-110px; }.dashboard-gallery-title::after { right:-110px; transform:scaleX(-1); }
.dashboard-gallery-title small { display:block; color:#79bbef; font-size:10px; letter-spacing:.28em; }.dashboard-gallery-title h1 { margin:2px 0 0; color:#fff; font-size:30px; line-height:1.1; letter-spacing:.14em; text-shadow:0 0 22px rgba(78,185,255,.42); }
.dashboard-gallery-status { justify-self:end; display:flex; align-items:center; gap:9px; color:#9bc6e8; font-size:12px; }.dashboard-gallery-status i { width:8px; height:8px; border-radius:50%; background:#33e6c4; box-shadow:0 0 12px #33e6c4; }.dashboard-gallery-status time { min-width:142px; color:#e0f5ff; font-variant-numeric:tabular-nums; }
.dashboard-gallery-body { min-height:calc(100vh - 245px); display:grid; grid-template-columns:260px minmax(0,1fr); gap:14px; padding-top:14px; }
.dashboard-gallery-factories,.dashboard-gallery-center,.dashboard-gallery-bottom { border:1px solid rgba(48,163,239,.48); border-radius:7px; background:linear-gradient(135deg,rgba(8,39,70,.88),rgba(3,19,43,.88)); box-shadow:inset 0 0 24px rgba(25,120,205,.1),0 0 30px rgba(5,37,82,.24); }
.dashboard-gallery-factories { min-height:0; overflow:hidden; }.dashboard-gallery-factories>header,.dashboard-gallery-center>header,.dashboard-gallery-bottom>header { display:flex; align-items:center; gap:9px; min-height:49px; padding:0 15px; border-bottom:1px solid rgba(70,170,237,.24); }.dashboard-gallery-factories>header span,.dashboard-gallery-center>header strong { color:#f1fbff; font-size:18px; letter-spacing:.07em; }.dashboard-gallery-factories>header small { margin-left:auto; color:#5bb7ef; font-size:11px; }.dashboard-gallery-factory-list { padding:9px; display:grid; gap:8px; }.dashboard-gallery-factory-list article { min-height:76px; display:grid; grid-template-columns:8px 1fr auto; align-items:center; gap:10px; padding:10px; border:1px solid rgba(63,165,232,.27); border-radius:6px; background:linear-gradient(100deg,rgba(20,91,143,.29),rgba(10,34,70,.23)); }.dashboard-gallery-factory-dot { width:7px; height:7px; border-radius:50%; background:var(--gallery-cyan); box-shadow:0 0 11px var(--gallery-cyan); }.dashboard-gallery-factory-list strong { display:block; color:#e9f9ff; font-size:15px; }.dashboard-gallery-factory-list small { display:block; margin-top:6px; color:#73abd2; font-size:11px; }.dashboard-gallery-factory-list b { color:var(--gallery-cyan); font-size:27px; font-variant-numeric:tabular-nums; }.dashboard-gallery-factory-list>p { padding:15px; color:#83aecb; }
.dashboard-gallery-center { min-width:0; display:grid; grid-template-rows:auto minmax(0,1fr); overflow:hidden; }.dashboard-gallery-center>header>span { color:#6cbfed; font-size:14px; }.dashboard-gallery-center>header>i { width:4px; height:4px; border-radius:50%; background:#7acfff; }.dashboard-gallery-center>header small { margin-left:auto; color:#75a5c9; font-size:11px; }.dashboard-gallery-hero { position:relative; min-height:0; overflow:hidden; background:#031426; }.dashboard-gallery-hero-card { position:absolute; inset:0; margin:0; animation:dashboard-gallery-hero-in .72s ease both; }.dashboard-gallery-hero-card img { width:100%; height:100%; display:block; object-fit:cover; }.dashboard-gallery-hero-shade { position:absolute; inset:0; background:linear-gradient(90deg,rgba(0,11,27,.82),rgba(0,13,29,.08) 64%),linear-gradient(0deg,rgba(0,11,28,.74),transparent 45%); }.dashboard-gallery-hero-copy { position:absolute; left:34px; right:30px; bottom:28px; }.dashboard-gallery-hero-copy span { display:inline-block; padding:5px 11px; border:1px solid rgba(49,224,216,.75); border-radius:99px; color:#86fff3; background:rgba(4,53,74,.62); font-size:12px; }.dashboard-gallery-hero-copy h2 { max-width:70%; margin:12px 0 4px; color:#fff; font-size:clamp(23px,2.2vw,36px); letter-spacing:.05em; text-shadow:0 2px 12px #000; }.dashboard-gallery-hero-copy p { margin:0; color:#c4e8ff; font-size:14px; }.dashboard-gallery-empty { position:absolute; inset:0; display:grid; place-content:center; gap:9px; text-align:center; background:radial-gradient(circle,#123e66,transparent 60%); }.dashboard-gallery-empty span { width:70px; height:70px; margin:auto; display:grid; place-items:center; border:1px solid rgba(76,211,255,.55); border-radius:50%; color:#7ee9ff; font-weight:900; }.dashboard-gallery-empty strong { font-size:18px; }.dashboard-gallery-empty small { color:#7da9ca; }
.dashboard-gallery-bottom { height:145px; margin-top:14px; overflow:hidden; }.dashboard-gallery-bottom>header { min-height:36px; padding:0 14px; }.dashboard-gallery-bottom>header span { color:#4ae4dc; font-size:10px; letter-spacing:.19em; }.dashboard-gallery-bottom>header strong { font-size:13px; }.dashboard-gallery-bottom>header small { margin-left:auto; color:#719fc0; font-size:11px; }.dashboard-gallery-strip-viewport { overflow:hidden; padding:9px 0; }.dashboard-gallery-strip-track { width:max-content; display:flex; gap:10px; padding-left:10px; animation:dashboard-gallery-marquee 75s linear infinite; }.dashboard-gallery-strip-viewport:hover .dashboard-gallery-strip-track { animation-play-state:paused; }.dashboard-gallery-thumb { width:188px; height:79px; display:grid; grid-template-columns:86px 1fr; gap:8px; overflow:hidden; border:1px solid rgba(62,168,235,.37); border-radius:5px; background:rgba(6,32,61,.78); }.dashboard-gallery-thumb img { width:86px; height:79px; object-fit:cover; }.dashboard-gallery-thumb span { min-width:0; padding:10px 7px 7px 0; }.dashboard-gallery-thumb strong,.dashboard-gallery-thumb small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.dashboard-gallery-thumb strong { color:#effaff; font-size:12px; }.dashboard-gallery-thumb small { margin-top:7px; color:#6eb7e9; font-size:10px; }.dashboard-gallery-strip-empty { padding:27px; color:#83abc9; text-align:center; }
@keyframes dashboard-gallery-hero-in { from { opacity:0; transform:scale(1.018); } to { opacity:1; transform:scale(1); } }
@keyframes dashboard-gallery-marquee { from { transform:translateX(0); } to { transform:translateX(calc(-50% - 5px)); } }
.dashboard-gallery-strip-viewport:hover .dashboard-gallery-strip-track { animation-play-state:running; }

/* 工作台第二版：以品牌绿色为基调的只读项目影像大屏。 */
.dashboard-gallery-v2 { --gallery-cyan:#42e9b7; --gallery-blue:#2bc8bc; min-width:1280px; padding:0 18px 14px; background:radial-gradient(circle at 50% -15%,rgba(19,174,120,.42),transparent 32%),radial-gradient(circle at 100% 55%,rgba(0,109,94,.24),transparent 44%),linear-gradient(135deg,#001c18,#00352c 54%,#001e1a); }
.dashboard-gallery-v2::before { opacity:.16; background-size:68px 68px; }.dashboard-gallery-v2::after { border-color:rgba(61,237,182,.2); box-shadow:0 0 110px rgba(22,210,150,.15); }
.dashboard-gallery-v2 .dashboard-gallery-header { position:relative; z-index:2; height:82px; grid-template-columns:220px minmax(430px,1fr) auto; gap:16px; border-bottom-color:rgba(61,237,182,.48); }
.dashboard-gallery-v2 .dashboard-gallery-brand { height:64px; }.dashboard-gallery-v2 .dashboard-gallery-brand img { width:160px; height:62px; object-fit:contain; object-position:left center; }
.dashboard-gallery-v2 .dashboard-gallery-title { min-width:0; overflow:hidden; padding:10px 42px; border:1px solid rgba(66,233,183,.34); border-top:0; clip-path:polygon(0 0,96% 0,100% 25%,100% 100%,4% 100%,0 75%); background:linear-gradient(90deg,rgba(0,52,43,.2),rgba(16,146,104,.22),rgba(0,52,43,.2)); }.dashboard-gallery-v2 .dashboard-gallery-title::before,.dashboard-gallery-v2 .dashboard-gallery-title::after { width:150px; background:linear-gradient(90deg,transparent,#42e9b7); }.dashboard-gallery-v2 .dashboard-gallery-title::before { left:-158px; }.dashboard-gallery-v2 .dashboard-gallery-title::after { right:-158px; }.dashboard-gallery-v2 .dashboard-gallery-title h1 { font-size:32px; letter-spacing:.18em; text-shadow:0 0 20px rgba(76,255,192,.58); }.dashboard-gallery-v2 .dashboard-gallery-title small { color:#8bf4ce; }
.dashboard-gallery-v2 .dashboard-gallery-status { gap:7px; color:#b7f9e3; }.dashboard-gallery-v2 .dashboard-gallery-status button { height:30px; border:1px solid rgba(82,234,186,.45); border-radius:3px; color:#cffff1; background:rgba(5,83,66,.45); font-size:12px; cursor:pointer; }.dashboard-gallery-v2 .dashboard-gallery-status button:hover { color:#003429; background:#65f4c3; }.dashboard-gallery-clocks { display:flex; align-items:center; gap:8px; margin-left:5px; padding-left:10px; border-left:1px solid rgba(104,244,199,.35); }.dashboard-gallery-clocks time { color:#d8fff2; font-size:11px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.dashboard-gallery-v2 .dashboard-gallery-flow { position:absolute; z-index:-1; width:42vw; height:1px; opacity:.74; background:linear-gradient(90deg,transparent,#5effc6,transparent); filter:drop-shadow(0 0 7px #45f8b5); animation:dashboard-gallery-flow 9s linear infinite; }.dashboard-gallery-v2 .flow-a { top:145px; left:-40vw; }.dashboard-gallery-v2 .flow-b { right:-42vw; bottom:132px; animation-delay:-4.5s; animation-direction:reverse; }
.dashboard-gallery-v2 .dashboard-gallery-body { min-height:calc(100vh - 126px); grid-template-columns:278px minmax(620px,1fr) 330px; gap:12px; padding-top:10px; }.dashboard-gallery-v2 .dashboard-gallery-factories,.dashboard-gallery-v2 .dashboard-gallery-center,.dashboard-gallery-v2 .dashboard-gallery-schedule,.dashboard-gallery-v2 .dashboard-gallery-bottom { border:1px solid rgba(63,220,171,.43); border-radius:5px; background:linear-gradient(135deg,rgba(0,60,49,.9),rgba(0,29,27,.88)); box-shadow:inset 0 0 28px rgba(30,180,127,.1),0 0 24px rgba(0,17,13,.32); }
.dashboard-gallery-v2 .dashboard-gallery-factories,.dashboard-gallery-v2 .dashboard-gallery-schedule { min-height:0; display:flex; flex-direction:column; overflow:hidden; }.dashboard-gallery-v2 .dashboard-gallery-center { grid-template-rows:44px minmax(360px,1fr) 132px; gap:10px; padding-bottom:10px; background:transparent; border:0; box-shadow:none; }.dashboard-gallery-v2 .dashboard-gallery-factories>header,.dashboard-gallery-v2 .dashboard-gallery-center>header,.dashboard-gallery-v2 .dashboard-gallery-schedule>header,.dashboard-gallery-v2 .dashboard-gallery-bottom>header { min-height:43px; padding:0 12px; border-bottom-color:rgba(79,223,175,.26); }.dashboard-gallery-v2 .dashboard-gallery-factories>header span,.dashboard-gallery-v2 .dashboard-gallery-center>header strong,.dashboard-gallery-v2 .dashboard-gallery-schedule>header span { color:#ecfff7; font-size:16px; }.dashboard-gallery-v2 .dashboard-gallery-center>header span,.dashboard-gallery-v2 .dashboard-gallery-center>header small,.dashboard-gallery-v2 .dashboard-gallery-factories>header small,.dashboard-gallery-v2 .dashboard-gallery-schedule>header small { color:#7de9c3; }
.dashboard-gallery-slogan { flex:0 0 94px; margin:0 0 9px; border:1px dashed rgba(104,250,199,.32); border-radius:5px; background-position:center; background-repeat:no-repeat; background-size:contain; }.dashboard-gallery-slogan-left { background-image:url('./dashboard-slogan-left.png'); }.dashboard-gallery-slogan-right { background-image:url('./dashboard-slogan-right.png'); }
.dashboard-gallery-v2 .dashboard-gallery-factory-list { min-height:0; overflow:auto; padding:8px; }.dashboard-gallery-factory-card { --factory-accent:#42e9b7; display:grid; grid-template-columns:87px 1fr; min-height:105px; gap:9px; margin-bottom:8px; padding:7px; border:1px solid color-mix(in srgb,var(--factory-accent) 55%,transparent); border-left:3px solid var(--factory-accent); border-radius:5px; background:linear-gradient(100deg,rgba(8,96,75,.34),rgba(1,38,33,.3)); box-shadow:inset 0 0 15px color-mix(in srgb,var(--factory-accent) 10%,transparent); }.dashboard-gallery-factory-photo { overflow:hidden; display:grid; place-items:center; border-radius:3px; color:#9bf4d3; background:#073c32; font-size:10px; letter-spacing:.08em; }.dashboard-gallery-factory-photo img { width:100%; height:100%; object-fit:cover; }.dashboard-gallery-factory-info { min-width:0; }.dashboard-gallery-factory-info strong { display:block; overflow:hidden; color:#f1fff9; font-size:14px; text-overflow:ellipsis; white-space:nowrap; }.dashboard-gallery-factory-info b { display:block; margin-top:3px; color:var(--factory-accent); font-size:20px; }.dashboard-gallery-factory-info b small { margin-left:4px; font-size:10px; font-weight:500; }.dashboard-gallery-factory-info p { display:-webkit-box; margin:3px 0 0; overflow:hidden; color:#8ec9b5; font-size:10px; line-height:1.45; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.dashboard-gallery-v2 .dashboard-gallery-hero { border:1px solid rgba(75,238,183,.56); border-radius:5px; box-shadow:0 0 28px rgba(19,183,127,.23); }.dashboard-gallery-v2 .dashboard-gallery-hero-shade { background:linear-gradient(90deg,rgba(0,32,25,.76),rgba(0,34,25,.04) 70%),linear-gradient(0deg,rgba(0,26,20,.82),transparent 50%); }.dashboard-gallery-v2 .dashboard-gallery-hero-copy { left:25px; bottom:19px; }.dashboard-gallery-v2 .dashboard-gallery-hero-copy span { border-color:#51eec0; color:#a5ffe1; background:rgba(0,67,52,.7); }.dashboard-gallery-v2 .dashboard-gallery-hero-copy h2 { margin-top:8px; font-size:clamp(24px,2.4vw,38px); }.dashboard-gallery-countdown { position:absolute; top:20px; right:20px; z-index:2; padding:10px 15px; border:1px solid #6bffca; border-radius:4px; color:#ddfff1; background:rgba(0,47,36,.75); box-shadow:0 0 18px rgba(61,255,185,.38); font-size:clamp(18px,1.7vw,28px); font-weight:900; letter-spacing:.06em; }
.dashboard-gallery-v2 .dashboard-gallery-bottom { height:auto; min-height:0; margin:0; overflow:hidden; }.dashboard-gallery-v2 .dashboard-gallery-bottom>header { min-height:32px; }.dashboard-gallery-v2 .dashboard-gallery-thumb { width:195px; height:72px; grid-template-columns:78px 1fr; border-color:var(--factory-accent); box-shadow:0 0 9px color-mix(in srgb,var(--factory-accent) 40%,transparent); }.dashboard-gallery-v2 .dashboard-gallery-thumb img { width:78px; height:72px; }.dashboard-gallery-v2 .dashboard-gallery-thumb span { padding:8px 5px 5px 0; }.dashboard-gallery-v2 .dashboard-gallery-thumb strong { font-size:11px; }.dashboard-gallery-v2 .dashboard-gallery-strip-viewport { padding:7px 0; }
.dashboard-gallery-schedule>header { display:flex; align-items:center; gap:8px; flex:0 0 auto; padding:0 12px; border-bottom:1px solid rgba(79,223,175,.26); }.dashboard-gallery-schedule>header span { color:#effff8; font-size:16px; font-weight:800; }.dashboard-gallery-schedule>header small { margin-left:auto; color:#7de9c3; font-size:10px; }.dashboard-gallery-schedule-list { min-height:0; overflow:auto; padding:8px; }.dashboard-gallery-schedule-card { --factory-accent:#42e9b7; position:relative; display:grid; grid-template-columns:68px minmax(0,1fr); min-height:83px; gap:8px; margin-bottom:8px; padding:6px; border:1px solid color-mix(in srgb,var(--factory-accent) 62%,transparent); border-right:3px solid var(--factory-accent); border-radius:5px; background:rgba(0,57,47,.44); box-shadow:inset 0 0 14px color-mix(in srgb,var(--factory-accent) 10%,transparent); }.dashboard-gallery-schedule-card img,.dashboard-gallery-schedule-photo { width:68px; height:68px; object-fit:cover; border-radius:3px; }.dashboard-gallery-schedule-photo { display:grid; place-items:center; color:#91e9cb; background:#074135; font-size:9px; }.dashboard-gallery-schedule-card div { min-width:0; padding-right:0; }.dashboard-gallery-schedule-card small,.dashboard-gallery-schedule-card strong,.dashboard-gallery-schedule-card p { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.dashboard-gallery-schedule-card small { color:var(--factory-accent); font-size:10px; }.dashboard-gallery-schedule-card strong { margin-top:3px; color:#f4fff9; font-size:12px; }.dashboard-gallery-schedule-card p { margin:5px 0 0; color:#a2d9c6; font-size:10px; }.dashboard-gallery-schedule-card>b { position:absolute; right:7px; bottom:6px; max-width:120px; overflow:hidden; color:#ddfff1; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.dashboard-gallery-v2 .dashboard-gallery-footer { display:flex; align-items:center; justify-content:center; gap:25px; height:30px; color:#93e9ce; font-size:11px; letter-spacing:.14em; }.dashboard-gallery-footer i { width:4px; height:4px; border-radius:50%; background:#4ef0bf; box-shadow:0 0 8px #4ef0bf; }
@keyframes dashboard-gallery-flow { from { transform:translateX(0); } to { transform:translateX(142vw); } }

/* 智慧大屏单屏自适应：头尾固定，中间画面按浏览器宽高伸缩。 */
.dashboard-gallery-v2 { width:100vw; height:100vh; min-width:0; min-height:0; display:grid; grid-template-rows:clamp(66px,8.4vh,82px) minmax(0,1fr) clamp(27px,3.2vh,32px); padding:0 clamp(8px,1vw,18px); overflow:hidden; }
.dashboard-gallery-v2>.dashboard-gallery-grid { position:absolute; inset:0; z-index:-1; pointer-events:none; }
.dashboard-gallery-v2>.dashboard-gallery-header { grid-row:1; }
.dashboard-gallery-v2>.dashboard-gallery-body { grid-row:2; }
.dashboard-gallery-v2>.dashboard-gallery-footer { grid-row:3; }
.dashboard-gallery-v2 .dashboard-gallery-header { width:100%; height:100%; grid-template-columns:clamp(135px,12vw,220px) minmax(310px,1fr) auto; gap:clamp(8px,1vw,16px); }
.dashboard-gallery-v2 .dashboard-gallery-brand { height:100%; }.dashboard-gallery-v2 .dashboard-gallery-brand img { width:clamp(120px,10vw,160px); height:clamp(50px,6.4vh,62px); }
.dashboard-gallery-v2 .dashboard-gallery-title { min-width:0; padding:clamp(6px,1vh,10px) clamp(18px,2.2vw,42px); }.dashboard-gallery-v2 .dashboard-gallery-title h1 { font-size:clamp(22px,1.8vw,32px); white-space:nowrap; }.dashboard-gallery-v2 .dashboard-gallery-title small { font-size:clamp(7px,.55vw,10px); white-space:nowrap; }
.dashboard-gallery-v2 .dashboard-gallery-status { min-width:0; gap:clamp(4px,.45vw,7px); }.dashboard-gallery-v2 .dashboard-gallery-status button { flex:0 0 auto; height:clamp(27px,3.4vh,31px); padding:0 clamp(7px,.7vw,12px); white-space:nowrap; }.dashboard-gallery-v2 .dashboard-gallery-clocks { display:flex; min-width:0; gap:clamp(5px,.5vw,9px); margin-left:clamp(2px,.3vw,5px); padding-left:clamp(6px,.6vw,10px); }.dashboard-gallery-v2 .dashboard-gallery-clocks time { display:block; min-width:0; font-size:clamp(9px,.58vw,11px); }
.dashboard-gallery-v2 .dashboard-gallery-body { width:100%; height:100%; min-height:0; grid-template-columns:clamp(205px,15vw,278px) minmax(0,1fr) clamp(255px,18vw,330px); gap:clamp(7px,.65vw,12px); padding-top:clamp(6px,.7vh,10px); overflow:hidden; }
.dashboard-gallery-v2 .dashboard-gallery-factories,.dashboard-gallery-v2 .dashboard-gallery-center,.dashboard-gallery-v2 .dashboard-gallery-schedule { height:100%; min-height:0; }
.dashboard-gallery-v2 .dashboard-gallery-center { grid-template-rows:clamp(34px,4.5vh,44px) minmax(0,1fr) clamp(104px,14vh,132px); gap:clamp(6px,.8vh,10px); padding-bottom:clamp(6px,.7vh,10px); }
.dashboard-gallery-v2 .dashboard-gallery-slogan { flex-basis:clamp(64px,10.5vh,94px); min-height:0; margin-bottom:clamp(5px,.8vh,9px); }
.dashboard-gallery-v2 .dashboard-gallery-factories>header,.dashboard-gallery-v2 .dashboard-gallery-schedule>header { flex:0 0 clamp(36px,4.8vh,43px); min-height:0; }
.dashboard-gallery-v2 .dashboard-gallery-factory-list { flex:1 1 auto; min-height:0; overflow:hidden; }.dashboard-gallery-v2 .dashboard-gallery-factory-card { grid-template-columns:clamp(64px,5vw,87px) minmax(0,1fr); min-height:clamp(82px,11.6vh,105px); gap:clamp(5px,.5vw,9px); margin-bottom:clamp(5px,.7vh,8px); }.dashboard-gallery-v2 .dashboard-gallery-factory-info p { -webkit-line-clamp:2; }
.dashboard-gallery-v2 .dashboard-gallery-hero { min-height:0; }.dashboard-gallery-v2 .dashboard-gallery-hero-card img { object-position:center; }.dashboard-gallery-v2 .dashboard-gallery-hero-copy { left:clamp(16px,1.5vw,25px); right:clamp(16px,1.5vw,25px); bottom:clamp(14px,2vh,22px); }.dashboard-gallery-v2 .dashboard-gallery-hero-copy h2 { max-width:72%; font-size:clamp(20px,2.1vw,38px); }.dashboard-gallery-v2 .dashboard-gallery-hero-copy p { max-width:78%; overflow:hidden; font-size:clamp(10px,.76vw,14px); text-overflow:ellipsis; white-space:nowrap; }.dashboard-gallery-v2 .dashboard-gallery-countdown { top:clamp(12px,1.8vh,20px); right:clamp(12px,1.2vw,20px); padding:clamp(7px,1vh,10px) clamp(10px,.9vw,15px); font-size:clamp(15px,1.5vw,28px); }
.dashboard-gallery-v2 .dashboard-gallery-bottom { height:100%; min-height:0; }.dashboard-gallery-v2 .dashboard-gallery-bottom>header { min-height:clamp(27px,3.6vh,32px); }.dashboard-gallery-v2 .dashboard-gallery-strip-viewport { height:calc(100% - clamp(27px,3.6vh,32px)); padding:clamp(4px,.65vh,7px) 0; }.dashboard-gallery-v2 .dashboard-gallery-strip-track { height:100%; gap:clamp(6px,.55vw,10px); }.dashboard-gallery-v2 .dashboard-gallery-thumb { width:clamp(150px,10.2vw,195px); height:100%; grid-template-columns:44% minmax(0,1fr); }.dashboard-gallery-v2 .dashboard-gallery-thumb img { width:100%; height:100%; }
.dashboard-gallery-v2 .dashboard-gallery-schedule-list { flex:1 1 auto; min-height:0; overflow:hidden; padding:clamp(5px,.6vh,8px); }.dashboard-gallery-v2 .dashboard-gallery-schedule-card { grid-template-columns:clamp(52px,3.7vw,68px) minmax(0,1fr); min-height:clamp(68px,9.2vh,83px); gap:clamp(5px,.45vw,8px); margin-bottom:clamp(5px,.65vh,8px); }.dashboard-gallery-v2 .dashboard-gallery-schedule-card img,.dashboard-gallery-v2 .dashboard-gallery-schedule-photo { width:clamp(52px,3.7vw,68px); height:clamp(52px,7.5vh,68px); }.dashboard-gallery-v2 .dashboard-gallery-schedule-card:nth-child(n+8) { display:none; }
.dashboard-gallery-v2 .dashboard-gallery-footer { width:100%; height:100%; gap:clamp(10px,1.5vw,25px); overflow:hidden; white-space:nowrap; }

@media (max-height:900px) {
  .dashboard-gallery-v2 .dashboard-gallery-schedule-card:nth-child(n+7) { display:none; }
  .dashboard-gallery-v2 .dashboard-gallery-factory-info p { -webkit-line-clamp:1; }
}
@media (max-height:780px) {
  .dashboard-gallery-v2 .dashboard-gallery-schedule-card:nth-child(n+6) { display:none; }
  .dashboard-gallery-v2 .dashboard-gallery-factory-card:nth-child(n+5) { display:none; }
}
@media (max-height:680px) {
  .dashboard-gallery-v2 .dashboard-gallery-schedule-card:nth-child(n+5) { display:none; }
  .dashboard-gallery-v2 .dashboard-gallery-factory-card:nth-child(n+4) { display:none; }
  .dashboard-gallery-v2 .dashboard-gallery-title small,.dashboard-gallery-v2 .dashboard-gallery-bottom>header small { display:none; }
}
@media (max-width:1500px) {
  .dashboard-gallery-v2 .dashboard-gallery-header { grid-template-columns:clamp(125px,11vw,175px) minmax(285px,1fr) auto; }
  .dashboard-gallery-v2 .dashboard-gallery-body { grid-template-columns:clamp(195px,14.5vw,235px) minmax(0,1fr) clamp(245px,20vw,292px); }
  .dashboard-gallery-v2 .dashboard-gallery-status button { padding:0 7px; font-size:10px; }
  .dashboard-gallery-v2 .dashboard-gallery-clocks time { font-size:9px; }
}
@media (max-width:1250px) {
  .dashboard-gallery-v2 .dashboard-gallery-header { grid-template-columns:120px minmax(250px,1fr) auto; }
  .dashboard-gallery-v2 .dashboard-gallery-title h1 { font-size:20px; letter-spacing:.1em; }
  .dashboard-gallery-v2 .dashboard-gallery-title::before,.dashboard-gallery-v2 .dashboard-gallery-title::after { display:none; }
  .dashboard-gallery-v2 .dashboard-gallery-status button { width:28px; overflow:hidden; padding:0; color:transparent; font-size:0; }
  .dashboard-gallery-v2 .dashboard-gallery-status button::after { color:#cffff1; font-size:14px; }
  .dashboard-gallery-v2 .dashboard-gallery-status button:nth-of-type(1)::after { content:'↻'; }
  .dashboard-gallery-v2 .dashboard-gallery-status button:nth-of-type(2)::after { content:'⛶'; }
  .dashboard-gallery-v2 .dashboard-gallery-status button:nth-of-type(3)::after { content:'☰'; }
  .dashboard-gallery-v2 .dashboard-gallery-body { grid-template-columns:190px minmax(0,1fr) 245px; }
  .dashboard-gallery-v2 .dashboard-gallery-factory-info p { display:none; }
  .dashboard-gallery-v2 .dashboard-gallery-footer { font-size:9px; letter-spacing:.08em; }
}

/* 智慧大屏统一主题：只使用通用深黑绿、荧光绿、金色和告警红。 */
.dashboard-gallery-v3 { --gallery-cyan:var(--screen-accent); --gallery-blue:var(--screen-accent); color:var(--screen-text); background:radial-gradient(ellipse at 50% 46%,rgba(11,111,86,.16),transparent 42%),linear-gradient(180deg,#031012 0%,var(--screen-bg) 52%,#010708 100%); }
.dashboard-gallery-v3::before { opacity:.17; background:linear-gradient(90deg,transparent 49.8%,var(--screen-accent-soft) 50%,transparent 50.2%),linear-gradient(0deg,transparent 49.8%,rgba(36,243,187,.08) 50%,transparent 50.2%); background-size:72px 72px; mask-image:radial-gradient(ellipse at center,#000 0,transparent 74%); }
.dashboard-gallery-v3::after { right:-19vw; bottom:-41vw; border-color:rgba(36,243,187,.14); box-shadow:0 0 0 70px rgba(36,243,187,.018),0 0 0 140px rgba(36,243,187,.012),0 0 90px rgba(36,243,187,.08); }
.dashboard-gallery-v3>.dashboard-gallery-grid { opacity:.32; background:linear-gradient(90deg,transparent 0,rgba(36,243,187,.06) 50%,transparent 100%); }
.dashboard-gallery-v3 .dashboard-gallery-header { border-bottom:1px solid var(--screen-line); background:linear-gradient(90deg,rgba(1,9,10,.96),rgba(4,31,27,.82) 50%,rgba(1,9,10,.96)); box-shadow:0 8px 26px rgba(0,0,0,.28),0 1px 0 rgba(36,243,187,.08); }
.dashboard-gallery-v3 .dashboard-gallery-title { border-color:rgba(36,243,187,.28); background:linear-gradient(90deg,transparent,rgba(36,243,187,.075),transparent); filter:drop-shadow(0 0 12px rgba(36,243,187,.14)); }
.dashboard-gallery-v3 .dashboard-gallery-title::before,.dashboard-gallery-v3 .dashboard-gallery-title::after { background:linear-gradient(90deg,transparent,var(--screen-accent)); box-shadow:0 0 8px rgba(36,243,187,.48); }
.dashboard-gallery-v3 .dashboard-gallery-title h1 { color:#e8fff7; text-shadow:0 0 8px rgba(36,243,187,.72),0 0 22px rgba(36,243,187,.3); }.dashboard-gallery-v3 .dashboard-gallery-title small { color:var(--screen-muted); }
.dashboard-gallery-v3 .dashboard-gallery-status button { border-color:rgba(36,243,187,.26); color:#bdfbe5; background:rgba(3,27,24,.72); box-shadow:inset 0 0 9px rgba(36,243,187,.035); }.dashboard-gallery-v3 .dashboard-gallery-status button:hover { border-color:var(--screen-accent); color:#00110d; background:var(--screen-accent); box-shadow:0 0 13px rgba(36,243,187,.32); }.dashboard-gallery-v3 .dashboard-gallery-clocks { border-left-color:rgba(36,243,187,.22); }.dashboard-gallery-v3 .dashboard-gallery-clocks time { color:#aed8c9; }
.dashboard-gallery-v3 .dashboard-gallery-flow { height:1px; opacity:.48; background:linear-gradient(90deg,transparent,var(--screen-accent),transparent); filter:drop-shadow(0 0 6px var(--screen-accent)); }
.dashboard-gallery-orbit { position:absolute; z-index:-1; top:50%; left:50%; width:min(58vw,940px); aspect-ratio:1.7; transform:translate(-50%,-48%); opacity:.55; pointer-events:none; }.dashboard-gallery-orbit i { position:absolute; inset:0; border:1px dashed rgba(36,243,187,.24); border-radius:50%; box-shadow:0 0 22px rgba(36,243,187,.09); animation:dashboard-gallery-orbit-pulse 5s ease-in-out infinite; }.dashboard-gallery-orbit i:nth-child(2) { inset:9%; border-style:solid; border-color:rgba(36,243,187,.08); animation-delay:-1.6s; }.dashboard-gallery-orbit i:nth-child(3) { inset:18%; border-color:rgba(36,243,187,.13); animation-delay:-3.2s; }.dashboard-gallery-orbit b { position:absolute; top:1%; left:50%; width:8px; height:8px; border-radius:50%; background:var(--screen-accent); box-shadow:0 0 16px 5px rgba(36,243,187,.44); animation:dashboard-gallery-orbit-dot 9s linear infinite; }
.dashboard-gallery-v3 .dashboard-gallery-factories,.dashboard-gallery-v3 .dashboard-gallery-schedule,.dashboard-gallery-v3 .dashboard-gallery-bottom { position:relative; border-color:var(--screen-line); background:linear-gradient(180deg,rgba(4,38,34,.86),var(--screen-panel) 22%,rgba(1,13,14,.94)); box-shadow:inset 0 0 26px rgba(36,243,187,.035),0 8px 28px rgba(0,0,0,.22); }
.dashboard-gallery-v3 .dashboard-gallery-factories::before,.dashboard-gallery-v3 .dashboard-gallery-schedule::before,.dashboard-gallery-v3 .dashboard-gallery-bottom::before { position:absolute; top:-1px; left:-1px; width:20px; height:8px; border-top:2px solid var(--screen-accent); border-left:2px solid var(--screen-accent); border-radius:5px 0 0; content:""; box-shadow:-1px -1px 8px rgba(36,243,187,.25); pointer-events:none; }
.dashboard-gallery-v3 .dashboard-gallery-factories>header,.dashboard-gallery-v3 .dashboard-gallery-center>header,.dashboard-gallery-v3 .dashboard-gallery-schedule>header,.dashboard-gallery-v3 .dashboard-gallery-bottom>header { border-bottom-color:rgba(36,243,187,.2); background:linear-gradient(90deg,rgba(36,243,187,.07),transparent 72%); }
.dashboard-gallery-v3 .dashboard-gallery-factories>header span,.dashboard-gallery-v3 .dashboard-gallery-center>header strong,.dashboard-gallery-v3 .dashboard-gallery-schedule>header span { color:#dbfff2; }.dashboard-gallery-v3 .dashboard-gallery-center>header span,.dashboard-gallery-v3 .dashboard-gallery-center>header small,.dashboard-gallery-v3 .dashboard-gallery-factories>header small,.dashboard-gallery-v3 .dashboard-gallery-schedule>header small { color:var(--screen-muted); }.dashboard-gallery-v3 .dashboard-gallery-center>header>i { background:var(--screen-accent); box-shadow:0 0 8px var(--screen-accent); }
.dashboard-gallery-v3 .dashboard-gallery-bottom>header span { color:var(--screen-accent); }.dashboard-gallery-v3 .dashboard-gallery-bottom>header strong { color:var(--screen-text); }.dashboard-gallery-v3 .dashboard-gallery-bottom>header small,.dashboard-gallery-v3 .dashboard-gallery-factory-list>p,.dashboard-gallery-v3 .dashboard-gallery-schedule-list>p { color:var(--screen-muted); }
.dashboard-gallery-v3 .dashboard-gallery-slogan { border-color:rgba(36,243,187,.22); background-color:rgba(1,14,14,.56); box-shadow:inset 0 0 20px rgba(36,243,187,.025); }
.dashboard-gallery-v3 .dashboard-gallery-factory-card { border-color:color-mix(in srgb,var(--factory-accent) 44%,transparent); border-left-color:var(--factory-accent); background:linear-gradient(90deg,color-mix(in srgb,var(--factory-accent) 8%,transparent),rgba(1,18,18,.54)); box-shadow:inset 0 0 14px color-mix(in srgb,var(--factory-accent) 5%,transparent); }.dashboard-gallery-v3 .dashboard-gallery-factory-photo { color:var(--screen-muted); background:#031917; }.dashboard-gallery-v3 .dashboard-gallery-factory-info strong { color:var(--screen-text); }.dashboard-gallery-v3 .dashboard-gallery-factory-info p { color:var(--screen-muted); }
.dashboard-gallery-v3 .dashboard-gallery-hero { border-color:rgba(36,243,187,.46); background:#031311; box-shadow:0 0 0 1px rgba(36,243,187,.045),0 0 28px rgba(36,243,187,.08); }.dashboard-gallery-v3 .dashboard-gallery-hero::before { position:absolute; z-index:1; inset:8px; border:1px solid rgba(36,243,187,.12); border-radius:3px; content:""; pointer-events:none; }.dashboard-gallery-v3 .dashboard-gallery-hero-shade { background:linear-gradient(90deg,rgba(0,18,16,.76),transparent 68%),linear-gradient(0deg,rgba(0,15,14,.86),transparent 50%); }.dashboard-gallery-v3 .dashboard-gallery-hero-copy span { border-color:rgba(36,243,187,.7); color:#aaffdf; background:rgba(1,35,30,.76); }.dashboard-gallery-v3 .dashboard-gallery-hero-copy p { color:#aed8c9; }.dashboard-gallery-v3 .dashboard-gallery-countdown { border-color:var(--screen-accent); color:#dffff3; background:rgba(1,29,25,.82); box-shadow:0 0 16px rgba(36,243,187,.25); }
.dashboard-gallery-v3 .dashboard-gallery-empty { background:radial-gradient(circle,rgba(11,98,75,.2),transparent 57%); }.dashboard-gallery-v3 .dashboard-gallery-empty span { border-color:rgba(36,243,187,.54); color:var(--screen-accent); box-shadow:0 0 18px rgba(36,243,187,.12); }.dashboard-gallery-v3 .dashboard-gallery-empty small,.dashboard-gallery-v3 .dashboard-gallery-strip-empty { color:var(--screen-muted); }
.dashboard-gallery-v3 .dashboard-gallery-thumb { border-color:var(--factory-accent); background:#031817; box-shadow:0 0 7px color-mix(in srgb,var(--factory-accent) 24%,transparent); }.dashboard-gallery-v3 .dashboard-gallery-thumb strong { color:#e5fff6; }.dashboard-gallery-v3 .dashboard-gallery-thumb small { color:var(--screen-muted); }
.dashboard-gallery-v3 .dashboard-gallery-schedule-card { border-color:color-mix(in srgb,var(--factory-accent) 48%,transparent); border-right-color:var(--factory-accent); background:linear-gradient(90deg,rgba(2,23,22,.88),color-mix(in srgb,var(--factory-accent) 6%,transparent)); box-shadow:inset 0 0 12px color-mix(in srgb,var(--factory-accent) 5%,transparent); }.dashboard-gallery-v3 .dashboard-gallery-schedule-photo { color:var(--screen-muted); background:#031917; }.dashboard-gallery-v3 .dashboard-gallery-schedule-card strong { color:var(--screen-text); }.dashboard-gallery-v3 .dashboard-gallery-schedule-card p { color:var(--screen-muted); }.dashboard-gallery-v3 .dashboard-gallery-schedule-card>b { color:#b9ead9; }
.dashboard-gallery-v3 .dashboard-gallery-footer { color:var(--screen-muted); border-top:1px solid rgba(36,243,187,.2); background:rgba(1,12,12,.82); }.dashboard-gallery-v3 .dashboard-gallery-footer i { background:var(--screen-accent); box-shadow:0 0 7px rgba(36,243,187,.8); }

/* 智慧大屏精修：统一圆角、动态荧光边线、标题流星与利雅得地图底纹。 */
.dashboard-gallery-v3 { border-radius:18px; }
.dashboard-gallery-v3 .dashboard-gallery-header { overflow:hidden; border-radius:18px; box-shadow:inset 0 0 0 1px rgba(36,243,187,.08),0 0 24px rgba(36,243,187,.08); }
.dashboard-gallery-v3 .dashboard-gallery-header>*:not(.dashboard-gallery-meteors) { position:relative; z-index:2; }
.dashboard-gallery-meteors { position:absolute; z-index:1; inset:0; overflow:hidden; border-radius:inherit; pointer-events:none; }
.dashboard-gallery-meteors i { position:absolute; left:-22%; width:clamp(120px,13vw,240px); height:1px; opacity:0; border-radius:999px; background:linear-gradient(90deg,transparent,rgba(130,255,217,.3) 32%,#e5fff7 82%,transparent); box-shadow:0 0 8px rgba(36,243,187,.9),0 0 18px rgba(36,243,187,.42); transform:skewX(-28deg); animation:dashboard-gallery-meteor 7.5s linear infinite; }
.dashboard-gallery-meteors i:nth-child(1) { top:18%; animation-delay:-1s; }
.dashboard-gallery-meteors i:nth-child(2) { top:42%; width:clamp(90px,9vw,170px); animation-delay:-5.2s; animation-duration:9.2s; }
.dashboard-gallery-meteors i:nth-child(3) { top:69%; width:clamp(150px,16vw,290px); animation-delay:-8.4s; animation-duration:11s; }
.dashboard-gallery-meteors i:nth-child(4) { top:84%; width:clamp(75px,7vw,130px); animation-delay:-3.1s; animation-duration:6.8s; }
.dashboard-gallery-v3 .dashboard-gallery-title { overflow:hidden; border-radius:18px; clip-path:none; }
.dashboard-gallery-v3 .dashboard-gallery-status button { border-radius:12px; font-weight:800; }
.dashboard-gallery-v3 .dashboard-gallery-clocks { gap:clamp(8px,.75vw,14px); }
.dashboard-gallery-v3 .dashboard-gallery-clocks time { padding:5px 7px; border-radius:10px; color:#d9fff2; background:rgba(36,243,187,.035); font-size:clamp(12px,.78vw,16px); font-weight:850; letter-spacing:.025em; text-shadow:0 0 10px rgba(36,243,187,.38); }
.dashboard-gallery-v3 .dashboard-gallery-factories,
.dashboard-gallery-v3 .dashboard-gallery-schedule,
.dashboard-gallery-v3 .dashboard-gallery-bottom { overflow:hidden; border-radius:22px; border-color:rgba(36,243,187,.48); box-shadow:inset 0 0 0 1px rgba(36,243,187,.035),inset 0 0 28px rgba(36,243,187,.05),0 0 16px rgba(36,243,187,.12),0 12px 30px rgba(0,0,0,.28); }
.dashboard-gallery-v3 .dashboard-gallery-center>header { overflow:hidden; border:1px solid rgba(36,243,187,.3); border-radius:14px; box-shadow:inset 0 0 18px rgba(36,243,187,.045),0 0 12px rgba(36,243,187,.08); }
.dashboard-gallery-v3 .dashboard-gallery-factories::before,
.dashboard-gallery-v3 .dashboard-gallery-schedule::before,
.dashboard-gallery-v3 .dashboard-gallery-bottom::before { width:46px; height:14px; border-radius:21px 0 12px; box-shadow:-1px -1px 10px rgba(36,243,187,.5),0 0 18px rgba(36,243,187,.18); }
.dashboard-gallery-v3 .dashboard-gallery-factories::after { position:absolute; z-index:0; left:0; right:0; bottom:-2%; height:66%; content:""; opacity:.23; background:url('./dashboard-riyadh-map.png') center bottom/94% auto no-repeat; filter:saturate(1.08) drop-shadow(0 0 14px rgba(36,243,187,.2)); pointer-events:none; }
.dashboard-gallery-v3 .dashboard-gallery-factories>* { position:relative; z-index:1; }
.dashboard-gallery-v3 .dashboard-gallery-slogan { border-radius:16px; }
.dashboard-gallery-v3 .dashboard-gallery-factory-card,
.dashboard-gallery-v3 .dashboard-gallery-schedule-card,
.dashboard-gallery-v3 .dashboard-gallery-thumb { overflow:hidden; border-radius:14px; box-shadow:inset 0 0 15px color-mix(in srgb,var(--factory-accent) 9%,transparent),0 0 10px color-mix(in srgb,var(--factory-accent) 24%,transparent); animation:dashboard-gallery-card-glow 4.8s ease-in-out infinite alternate; }
.dashboard-gallery-v3 .dashboard-gallery-factory-card:nth-child(2n),
.dashboard-gallery-v3 .dashboard-gallery-schedule-card:nth-child(2n),
.dashboard-gallery-v3 .dashboard-gallery-thumb:nth-child(2n) { animation-delay:-2.4s; }
.dashboard-gallery-v3 .dashboard-gallery-factory-photo,
.dashboard-gallery-v3 .dashboard-gallery-factory-photo img,
.dashboard-gallery-v3 .dashboard-gallery-schedule-card img,
.dashboard-gallery-v3 .dashboard-gallery-schedule-photo,
.dashboard-gallery-v3 .dashboard-gallery-thumb img { border-radius:10px; }
.dashboard-gallery-v3 .dashboard-gallery-hero { overflow:hidden; border-radius:24px; box-shadow:inset 0 0 0 1px rgba(36,243,187,.08),0 0 24px rgba(36,243,187,.2),0 18px 46px rgba(0,0,0,.34); }
.dashboard-gallery-v3 .dashboard-gallery-hero::before { border-radius:18px; box-shadow:inset 0 0 22px rgba(36,243,187,.035); }
.dashboard-gallery-v3 .dashboard-gallery-hero-card,
.dashboard-gallery-v3 .dashboard-gallery-hero-card img,
.dashboard-gallery-v3 .dashboard-gallery-hero-shade { border-radius:inherit; }
.dashboard-gallery-v3 .dashboard-gallery-hero-card img { object-fit:contain; background:#020a09; }
.dashboard-gallery-v3 .dashboard-gallery-countdown { border-radius:16px; }
.dashboard-gallery-v3 .dashboard-gallery-hero-arrow { position:absolute; z-index:3; top:50%; width:48px; height:48px; border:1px solid rgba(36,243,187,.7); border-radius:50%; color:#dffff3; background:rgba(1,31,26,.68); box-shadow:0 0 16px rgba(36,243,187,.22); font-size:38px; line-height:38px; cursor:pointer; transform:translateY(-50%); transition:.2s ease; }
.dashboard-gallery-v3 .dashboard-gallery-hero-arrow:hover { color:#00140f; background:var(--screen-accent); box-shadow:0 0 22px rgba(36,243,187,.55); }
.dashboard-gallery-v3 .dashboard-gallery-hero-arrow.prev { left:20px; }.dashboard-gallery-v3 .dashboard-gallery-hero-arrow.next { right:20px; }
.dashboard-gallery-v3 .dashboard-gallery-hero-meta { position:absolute; z-index:2; right:28px; bottom:24px; display:flex; gap:18px; margin:0; padding:10px 14px; border:1px solid rgba(36,243,187,.2); border-radius:12px; background:rgba(0,19,16,.55); }.dashboard-gallery-v3 .dashboard-gallery-hero-meta div { min-width:54px; }.dashboard-gallery-v3 .dashboard-gallery-hero-meta small,.dashboard-gallery-v3 .dashboard-gallery-hero-meta b { display:block; }.dashboard-gallery-v3 .dashboard-gallery-hero-meta small { color:var(--screen-muted); font-size:10px; }.dashboard-gallery-v3 .dashboard-gallery-hero-meta b { margin-top:3px; color:#e2fff4; font-size:14px; white-space:nowrap; }
.dashboard-gallery-v3 .dashboard-gallery-factory-summary { display:grid; grid-template-columns:auto 1fr auto 1fr; align-items:baseline; gap:5px 8px; margin:10px 12px 14px; padding:11px 10px; border-top:1px solid rgba(36,243,187,.2); color:var(--screen-muted); font-size:10px; }.dashboard-gallery-v3 .dashboard-gallery-factory-summary b { color:var(--screen-accent); font-size:22px; line-height:1; }.dashboard-gallery-v3 .dashboard-gallery-factory-summary span { white-space:nowrap; }
.dashboard-gallery-v3 .dashboard-gallery-thumb { appearance:none; padding:0; color:inherit; font:inherit; text-align:left; cursor:pointer; transition:border-color .2s ease,transform .2s ease,filter .2s ease; }.dashboard-gallery-v3 .dashboard-gallery-thumb:hover,.dashboard-gallery-v3 .dashboard-gallery-thumb:focus-visible { border-color:#c8ffe9; outline:0; filter:brightness(1.12); transform:translateY(-2px); }
.dashboard-gallery-v3 .dashboard-gallery-footer { border-radius:14px 14px 0 0; box-shadow:inset 0 1px 0 rgba(36,243,187,.12),0 -7px 22px rgba(36,243,187,.035); }
@keyframes dashboard-gallery-meteor { 0% { opacity:0; transform:translateX(0) skewX(-28deg); } 7% { opacity:.9; } 32% { opacity:0; transform:translateX(145vw) skewX(-28deg); } 100% { opacity:0; transform:translateX(145vw) skewX(-28deg); } }
@keyframes dashboard-gallery-card-glow { from { filter:brightness(.96); } to { filter:brightness(1.06); box-shadow:inset 0 0 18px color-mix(in srgb,var(--factory-accent) 12%,transparent),0 0 15px color-mix(in srgb,var(--factory-accent) 34%,transparent); } }
@media (prefers-reduced-motion:reduce) { .dashboard-gallery-meteors i,.dashboard-gallery-v3 .dashboard-gallery-factory-card,.dashboard-gallery-v3 .dashboard-gallery-schedule-card,.dashboard-gallery-v3 .dashboard-gallery-thumb { animation:none; } }
@keyframes dashboard-gallery-orbit-pulse { 50% { opacity:.42; filter:drop-shadow(0 0 7px rgba(36,243,187,.22)); } }
@keyframes dashboard-gallery-orbit-dot { 0% { transform:translateX(-50%) rotate(0deg) translateX(min(29vw,470px)); } 100% { transform:translateX(-50%) rotate(360deg) translateX(min(29vw,470px)); } }
@media (max-width:1180px) { .dashboard-gallery { transform-origin:top left; }.dashboard-gallery-title { min-width:360px; }.dashboard-gallery-title h1 { font-size:24px; }.dashboard-gallery-body { grid-template-columns:225px minmax(0,1fr); }.dashboard-gallery-status time { display:none; } }

@media (max-width: 1500px) {
  .requirement-filter-grid { grid-template-columns: repeat(4, minmax(150px, 1fr)); }
  .requirement-filter-actions { justify-content: flex-end; }
}

@media (max-width: 900px) {
  .requirement-command-bar, .requirement-group > summary { align-items: stretch; flex-direction: column; }
  .requirement-command-actions { align-items: stretch; }
  .requirement-tabs { overflow-x: auto; }
  .requirement-tabs button { flex: 0 0 auto; }
  .requirement-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .requirement-group-summary { text-align: left; }
}

@media (max-width: 560px) {
  .requirement-command-bar { top: 68px; margin-right: -4px; margin-left: -4px; padding-right: 4px; padding-left: 4px; }
  .requirement-tabs, .requirement-view-toggle, .requirement-command-actions { width: 100%; }
  .requirement-command-actions { flex-direction: column; }
  .requirement-view-toggle button { flex: 1; }
  .requirement-filter-grid { grid-template-columns: 1fr; }
  .requirement-expand-actions { flex-wrap: wrap; justify-content: flex-start; }
  .requirement-expand-actions > span { flex-basis: 100%; }
  .requirement-back-to-top { right: 14px; bottom: 14px; }
}

@media (max-width: 760px) {
  .managed-photo-filter-grid,
  .managed-photo-grid { grid-template-columns: 1fr; }
  .managed-photo-filter-grid .search-wide,
  .managed-photo-filter-actions { grid-column: auto; }
  .managed-photo-filter-actions .button { flex: 1; }
  .managed-photo-batch-bar { align-items: stretch; flex-direction: column; }
  .managed-photo-batch-bar > div:last-child { justify-content: stretch; }
  .managed-photo-batch-bar > div:last-child .button { flex: 1 1 100%; }
  .managed-photo-target { flex: 1 1 100%; justify-content: space-between; }
}

/* 询价效果图复用项目中心的悬停缩放与大图预览入口。 */
.inquiry-cover[data-project-image] { padding:0; border:0; cursor:zoom-in; }
.inquiry-cover-image { width:100%; height:100%; display:block; object-fit:cover; transition:transform .25s ease; }
.inquiry-cover[data-project-image]:hover .inquiry-cover-image,
.inquiry-cover[data-project-image]:focus-visible .inquiry-cover-image { transform:scale(1.08); }
.inquiry-cover[data-project-image]:focus-visible { outline:2px solid var(--primary); outline-offset:3px; }

/* 客户询价文件：批量下载时按服务端真实读取进度填充当前文件卡片。 */
.inquiry-detail-files > .inquiry-file-row { position:relative; isolation:isolate; overflow:hidden; }
.inquiry-file-download-fill { position:absolute; z-index:-1; inset:0 auto 0 0; width:var(--inquiry-file-download-progress, 0%); margin:0; border-radius:inherit; background:linear-gradient(90deg,rgba(39,173,104,.28),rgba(117,221,157,.18)); transition:width .22s ease; pointer-events:none; }
.inquiry-file-row > :not(.inquiry-file-download-fill) { position:relative; z-index:1; }
.inquiry-file-row.is-downloading { border-color:#9ed9b8; }
.inquiry-file-row.is-download-complete { border-color:#7dc69d; background:#ecf9f0; }
.inquiry-file-row.is-download-complete .inquiry-file-download-fill { background:linear-gradient(90deg,rgba(25,151,80,.33),rgba(119,223,156,.24)); }
.inquiry-file-row [data-inquiry-file-download-state] { min-width:52px; color:#168154; font-size:11px; font-weight:800; text-align:right; white-space:nowrap; }
.inquiry-file-overflow-toggle { width:100%; padding:9px 11px; border:1px dashed #b9d8c6; border-radius:8px; color:#177552; background:#f7fcf9; font:inherit; font-size:12px; font-weight:800; cursor:pointer; }
.inquiry-file-overflow-toggle:hover { border-color:#239164; background:#edf9f1; }

/* 询价详情：顶部识别信息固定，滚动文件和记录时仍可查看当前询价单。 */
.drawer.inquiry-detail-drawer .inquiry-detail-hero { position:sticky; z-index:30; top:0; grid-template-columns:104px minmax(0,1fr) auto; min-height:112px; margin-bottom:12px; padding:13px 22px; box-shadow:0 6px 14px rgba(20,66,47,.08); }
.inquiry-detail-hero-cover-wrap { display:flex; align-items:center; }
.inquiry-detail-hero-cover { width:96px; height:78px; display:grid; place-items:center; padding:0; overflow:hidden; border:1px solid rgba(255,255,255,.86); border-radius:10px; color:#728b7f; background:#edf5f0; box-shadow:0 4px 12px rgba(17,67,47,.1); font:inherit; font-size:11px; }
.inquiry-detail-hero-cover[data-project-image] { cursor:zoom-in; }
.inquiry-detail-hero-cover-image { width:100%; height:100%; display:block; object-fit:cover; transition:transform .25s ease; }
.inquiry-detail-hero-cover[data-project-image]:hover .inquiry-detail-hero-cover-image,.inquiry-detail-hero-cover[data-project-image]:focus-visible .inquiry-detail-hero-cover-image { transform:scale(1.08); }
.inquiry-detail-hero-cover[data-project-image]:focus-visible { outline:2px solid var(--primary); outline-offset:3px; }
.inquiry-detail-hero-copy { min-width:0; align-self:center; }
.inquiry-detail-hero-copy h2 { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
@media (max-width:680px) { .drawer.inquiry-detail-drawer .inquiry-detail-hero { grid-template-columns:72px minmax(0,1fr) auto; min-height:92px; padding:10px 14px; }.inquiry-detail-hero-cover { width:64px; height:58px; border-radius:8px; }.inquiry-detail-hero-copy h2 { font-size:20px; }.inquiry-detail-hero-copy p { font-size:12px; }.inquiry-detail-hero .icon-button { width:36px; height:36px; font-size:22px; } }

/* 覆盖旧的关闭区列定位：标题紧随效果图，关闭按钮固定在顶部右侧。 */
.drawer.inquiry-detail-drawer .inquiry-detail-hero > aside { grid-column:auto; grid-row:auto; justify-self:end; align-self:start; }
.drawer.inquiry-detail-drawer .inquiry-detail-hero-copy { grid-column:2; grid-row:1; }
.drawer.inquiry-detail-drawer .inquiry-detail-hero-cover-wrap { grid-column:1; grid-row:1; }

/* 考勤时间线：将原调度四面板收敛为单一的可展开工时总览。 */
.attendance-control-grid:has(.attendance-timeline-panel) { display:block; height:100%; }
.attendance-control-grid:has(.attendance-timeline-panel) > .attendance-personnel-panel,.attendance-control-grid:has(.attendance-timeline-panel) > .attendance-review-panel,.attendance-control-grid:has(.attendance-timeline-panel) > .attendance-project-panel,.attendance-control-grid:has(.attendance-timeline-panel) > .attendance-adjudication-panel { display:none; }
.attendance-timeline-panel { min-height:0; height:100%; display:grid; grid-template-rows:auto auto minmax(0,1fr); }
.attendance-time-summary { display:flex; gap:24px; padding:12px 0 16px; color:var(--muted,#607067); border-bottom:1px solid var(--line,#dce6df); }
.attendance-time-summary span { font-weight:700; }
.attendance-timeline-list { min-height:0; padding:16px 18px 22px; display:block; overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; }
.attendance-timeline-person { display:block; min-height:70px; margin-bottom:10px; overflow:hidden; border:1px solid var(--line,#dce6df); border-radius:10px; background:#fff; }
.attendance-timeline-person:last-child { margin-bottom:0; }
.attendance-timeline-person summary { min-height:68px; display:grid; grid-template-columns:minmax(260px,1fr) 120px 210px 110px; align-items:center; gap:16px; padding:15px 18px; cursor:pointer; list-style:none; }
.attendance-timeline-person summary::-webkit-details-marker { display:none; }
.attendance-timeline-person summary b,.attendance-timeline-person summary small { display:block; }
.attendance-timeline-person summary small { margin-top:4px; color:var(--muted,#607067); }
.attendance-timeline-detail { padding:0 18px 15px; border-top:1px solid var(--line,#dce6df); color:#405248; }
.attendance-timeline-detail p { margin:10px 0 0; }
.attendance-date-range-tools label { display:flex; align-items:center; gap:5px; color:var(--muted); font-size:12px; font-weight:700; }
.attendance-date-range-tools > span { color:var(--muted); font-size:12px; }
.attendance-timeline-day { margin-top:12px; padding:11px; border:1px solid #e4ece7; border-radius:8px; background:#f9fcfa; }
.attendance-timeline-day > header { display:flex; align-items:center; justify-content:space-between; gap:12px; color:#52695d; font-size:12px; }
.attendance-timeline-day > header b { color:#1a4431; font-size:13px; }
.attendance-timeline-events { display:flex; gap:10px; min-width:0; margin-top:9px; padding:9px 1px 4px; overflow-x:auto; border-top:1px dashed #d9e6df; overscroll-behavior-x:contain; scrollbar-gutter:stable; }
.attendance-timeline-event { flex:0 0 166px; min-width:166px; }
.attendance-timeline-event button { width:100%; min-height:42px; padding:7px 10px; display:flex; align-items:center; justify-content:space-between; gap:8px; border:1px solid #cfe1d6; border-radius:7px; color:#246a49; background:#fff; font:inherit; cursor:pointer; }
.attendance-timeline-event button:hover { border-color:#83b99e; background:#f0f9f4; }
.attendance-timeline-event button b { color:#183f2d; }
.attendance-timeline-event-photo { min-height:22px; margin-top:6px; color:var(--muted); font-size:12px; }
.attendance-timeline-photo-grid { display:flex; flex-wrap:wrap; gap:6px; }
.attendance-timeline-photo-grid button { width:100%; height:94px; min-height:0; padding:0; overflow:hidden; border:1px solid #d5e3dc; border-radius:6px; }
.attendance-timeline-photo { width:100%; height:100%; display:block; object-fit:cover; }
@media (max-width:900px) { .attendance-timeline-person summary { grid-template-columns:1fr; gap:7px; }.attendance-time-summary { flex-wrap:wrap; gap:10px 18px; } }
.inquiry-detail-layout .inquiry-file-list button { width:42px; height:32px; border-radius:7px; font-size:13px; font-weight:800; }
.wecom-inquiry-review-config { display:grid; gap:16px; padding:20px; border:1px solid #d9eae0; border-radius:12px; background:linear-gradient(135deg,#fff,#f6fbf8); }.wecom-inquiry-review-config > header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }.wecom-inquiry-review-config h3,.wecom-inquiry-review-config p { margin:0; }.wecom-inquiry-review-config h3 { color:#184431; font-size:17px; }.wecom-inquiry-review-config header p { margin-top:5px; color:var(--muted); font-size:12px; line-height:1.55; }.wecom-inquiry-review-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }.wecom-inquiry-review-grid .field { gap:8px; }.wecom-inquiry-review-grid .field > span { color:#244b3a; font-weight:800; }.wecom-inquiry-review-grid textarea { min-height:112px; resize:vertical; line-height:1.55; }.wecom-inquiry-extra-recipients { border:1px solid #dce9e1; border-radius:9px; background:#fff; }.wecom-inquiry-extra-recipients summary { padding:12px 14px; color:#265340; font-size:13px; font-weight:800; cursor:pointer; }.wecom-inquiry-extra-recipients .settings-check-list { max-height:330px; margin:0 12px 12px; overflow:auto; }@media (max-width:760px) { .wecom-inquiry-review-config > header { align-items:stretch; flex-direction:column; }.wecom-inquiry-review-grid { grid-template-columns:1fr; } }
