/*
 * 青芽实验室公共主题：现有实验、工作台外壳和新实验模板共享此文件。
 * 调整下面的变量后刷新页面即可统一生效；不要在实验包里复制这份颜色表。
 */
:root {
  --lab-app-bg: #eef3f8;
  --lab-canvas-bg: #4b405c;
  --lab-canvas-dot: #70627f;
  --lab-stage-text: #f4effa;
  --lab-stage-muted: #d8cee4;
  --lab-panel-bg: #ffffff;
  --lab-soft-bg: #f5f8fc;
  --lab-border: #d7e1eb;
  --lab-text: #28434e;
  --lab-muted: #718591;
  --lab-accent: #357b68;
  --lab-accent-hover: #286552;
  --lab-accent-soft: #e7f2ed;
  --lab-danger: #c53030;
  --lab-radius: 16px;
  --lab-control-radius: 9px;
  --lab-shadow: 0 6px 24px rgb(48 75 105 / 4%);
  --lab-font: "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
}

/* The namespace confines legacy adapters to experiment documents. */
html[data-qingya-lab], html[data-qingya-lab] body {
  color-scheme: light !important;
  --bg: var(--lab-app-bg);
  --text: var(--lab-text);
  --accent: var(--lab-accent);
  --shadow: var(--lab-shadow);
  color: var(--lab-text) !important;
  background: var(--lab-app-bg) !important;
  font-family: var(--lab-font) !important;
}
html[data-qingya-lab] :is(button,input,select,textarea) {font-family:var(--lab-font)!important}
html[data-qingya-lab] :is(.app,.lab-app) {background:var(--lab-app-bg)!important}
html[data-qingya-lab] :is(.top,.lab-header,.workspace-bar,.lab-toolbar) {
  background:var(--lab-app-bg)!important;color:var(--lab-text)!important;
}
html[data-qingya-lab] :is(.lab-brand,.brand-copy strong,.lesson-heading,.lesson-title,.title) {color:var(--lab-text)!important}
html[data-qingya-lab] :is(.brand-symbol,.library-count,.lesson-badge) {
  color:var(--lab-accent)!important;background:var(--lab-accent-soft)!important;border-color:var(--lab-border)!important;
}
html[data-qingya-lab] :is(.brand-copy small,.lesson-eyebrow,.workspace-location,.library-description,.sidebar-description) {color:var(--lab-muted)!important}
html[data-qingya-lab] :is(.sidebar,.lab-sidebar,.lab-panel,.properties,#properties,.lab-properties,.modal,.lab-modal) {
  background:var(--lab-panel-bg)!important;color:var(--lab-text)!important;
  border-color:var(--lab-border)!important;border-radius:var(--lab-radius)!important;box-shadow:var(--lab-shadow)!important;
}
html[data-qingya-lab] :is(.side-head,.catalog,.catalog-footer,.side-foot,.library-footer) {background:var(--lab-panel-bg)!important;border-color:var(--lab-border)!important}
html[data-qingya-lab] :is(.library-heading,.library-heading h2,.side-head h2) {color:var(--lab-text)!important}
html[data-qingya-lab] :is(.stage,#stage,.lab-stage) {
  background-color:var(--lab-canvas-bg)!important;
  background-image:radial-gradient(var(--lab-canvas-dot) .8px,transparent .8px)!important;
  background-size:24px 24px!important;border-color:var(--lab-border)!important;
  border-radius:var(--lab-radius)!important;box-shadow:var(--lab-shadow)!important;
}
html[data-qingya-lab] :is(.stage,#stage,.lab-stage)::before {background:none!important}
html[data-qingya-lab] .stage-help {color:var(--lab-stage-muted,var(--lab-muted))!important}
html[data-qingya-lab] :is(.stage-caption,.stage-label) strong {color:var(--lab-stage-text,var(--lab-text))!important}
html[data-qingya-lab] #scene {background:transparent!important}
html[data-qingya-lab] :is(.item,.catalog-item,.apparatus-card,.lab-equipment) {
  background:var(--lab-panel-bg)!important;border:1px solid var(--lab-border)!important;
  border-radius:12px!important;color:var(--lab-text)!important;box-shadow:none!important;
}
html[data-qingya-lab] :is(.item,.catalog-item,.apparatus-card,.lab-equipment):hover {
  background:var(--lab-soft-bg)!important;border-color:var(--lab-accent)!important;
}
/* Size catalog rows for the thumbnail, full name and optional specification.
 * Fixed-height flex cards otherwise shrink and clip their name to a few pixels. */
html[data-qingya-lab] .catalog {grid-auto-rows:max-content}
html[data-qingya-lab] .catalog > :is(.item,.catalog-item) {height:auto;min-height:121px}
html[data-qingya-lab] .catalog > :is(.item,.catalog-item) > :is(img,canvas,.item-preview) {flex-shrink:0}
html[data-qingya-lab] .catalog > :is(.item,.catalog-item) > :is(span,small):not(.item-preview) {
  flex-shrink:0;display:block;max-width:100%;-webkit-line-clamp:unset;
  overflow:visible;white-space:normal;overflow-wrap:anywhere;
}
html[data-qingya-lab] :is(.command,.icon,.lab-button,.library-tab,.tools button,.floating button,.floating-tools button,.modal button) {
  color:var(--lab-text)!important;border-color:var(--lab-border)!important;border-radius:var(--lab-control-radius)!important;
}
html[data-qingya-lab] :is(.command,.icon,.lab-button,.tools .group,.tool-group,.selection-tools,.readouts) {
  background:var(--lab-panel-bg)!important;border-color:var(--lab-border)!important;box-shadow:var(--lab-shadow)!important;
}
/* Stage action buttons keep their own rounded surfaces; gaps show the canvas. */
html[data-qingya-lab] :is(.floating,.floating-tools) {
  background:transparent!important;border:0!important;box-shadow:none!important;
}
html[data-qingya-lab] :is(.floating,.floating-tools) > button {background:var(--lab-panel-bg)!important}
html[data-qingya-lab] button:hover:not(:disabled) {background-color:var(--lab-accent-soft)!important}
html[data-qingya-lab] :is(button[aria-pressed="true"],button[aria-selected="true"],.library-tab.active,.command.active,.icon.active) {
  color:var(--lab-accent)!important;background:var(--lab-accent-soft)!important;border-color:#b7d6c7!important;
}
html[data-qingya-lab] :is(.primary,.lab-button-primary,button.primary,.lab-button.lab-button-primary,.command.primary,.icon.primary) {
  background:var(--lab-accent)!important;color:#fff!important;border-color:var(--lab-accent)!important;
}
html[data-qingya-lab] :is(.primary,.lab-button-primary,.lab-button.lab-button-primary,.command.primary,.icon.primary):hover {background:var(--lab-accent-hover)!important}
/* Include legacy toolbars and buttons created by experiment property panels. */
html[data-qingya-lab] :is(button.remove-apparatus,button#delete,button[data-lab-remove-apparatus],[role="button"][data-lab-remove-apparatus],input[data-lab-remove-apparatus]) {
  color:var(--lab-danger)!important;font-weight:700!important;
}
html[data-qingya-lab] :is(input,textarea,select,.search-box,.catalog-search) {
  color:var(--lab-text)!important;background-color:var(--lab-soft-bg)!important;border-color:var(--lab-border)!important;
  border-radius:var(--lab-control-radius)!important;accent-color:var(--lab-accent);
}
html[data-qingya-lab] :is(button,input,textarea,select):focus-visible {outline:2px solid var(--lab-accent)!important;outline-offset:3px}
html[data-qingya-lab] :is(.stage-caption,.stage-hint,.stage-label) {color:var(--lab-stage-muted,var(--lab-muted))!important}
html[data-qingya-lab] :is(.stage-pill,.readout-label,.status-label) {color:var(--lab-muted)!important}
html[data-qingya-lab] :is(.readout-value,.property-readings strong) {color:var(--lab-text)!important}
html[data-qingya-lab] :is(.modal-header,.modal-footer,.properties-header,.catalog-status) {border-color:var(--lab-border)!important}
html[data-qingya-lab] :is(.modal-overlay,.lab-modal-overlay) {background:rgb(39 60 82 / 28%)!important}

/* Classes for new experiments. Their layout is separate from the shared palette. */
.lab-template {margin:0;min-height:100vh;padding:24px;box-sizing:border-box;font-family:var(--lab-font);color:var(--lab-text);background:var(--lab-app-bg)}
.lab-template .lab-panel {padding:24px;border:1px solid var(--lab-border);border-radius:var(--lab-radius);background:var(--lab-panel-bg)}
.lab-template .lab-toolbar {display:flex;align-items:center;gap:12px;margin:20px 0}
.lab-template .lab-button {padding:11px 18px;border:1px solid var(--lab-border);border-radius:var(--lab-control-radius);cursor:pointer}
.lab-template .lab-stage {display:block;max-width:100%;border:1px solid var(--lab-border);border-radius:var(--lab-radius);background:var(--lab-canvas-bg)}

/* Nuxt's surrounding workbench uses the same palette as the embedded experiment. */
.lab-shell {background:var(--lab-app-bg)!important}
.lab-shell .site-header {background:var(--lab-panel-bg)!important;border-color:var(--lab-border)!important}
.lab-shell :is(.frame-wrap,.lab-topbar,.assistant-panel) {border-color:var(--lab-border)!important;border-radius:var(--lab-radius)!important}
.lab-shell .frame-wrap {background:var(--lab-app-bg)!important}
.lab-shell :is(.lab-topbar,.assistant-panel,.assistant-body) {background:var(--lab-panel-bg)!important}
.lab-shell :is(.assistant-tabs,.assistant-compose) {background:var(--lab-soft-bg)!important;border-color:var(--lab-border)!important}
.lab-shell .assistant-tabs button {background:#e5f3f5!important;color:#1d5963!important;border:1px solid #b9d9df;font-size:14px;font-weight:650;line-height:1.5;min-height:42px}
.lab-shell .assistant-tabs button:hover {background:#d5edf0!important}
.lab-shell .assistant-tabs button.active {background:#087f8c!important;color:#fff!important;border-color:#087f8c;font-weight:700}
.lab-shell .assistant-tabs button.active:hover {background:#066b76!important}
.lab-shell .assistant-welcome {background:var(--lab-accent-soft)!important;border-color:var(--lab-border)!important;color:var(--lab-text)!important}
.lab-shell :is(.assistant-compose textarea,.prompt-chip,.snapshot-preview) {background:var(--lab-panel-bg)!important;border-color:var(--lab-border)!important}
/* Platform workbenches keep export; presentation mode is not offered in the toolbar. */
html[data-qingya-lab="shared"] button[data-command="present"],
html[data-qingya-lab="shared"] button#presentation,
html[data-qingya-lab="shared"] button.present-button{display:none!important}

/* One picker serves every protected experiment, including legacy toolbars. */
html[data-qingya-lab] #qingya-fullscreen-button {display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;box-sizing:border-box;width:36px;min-width:36px;height:34px;min-height:34px;margin:0;padding:0!important;border:1px solid #d4d9e0!important;border-radius:9px!important;background:#fff!important;color:#294b5a!important;cursor:pointer;touch-action:manipulation;vertical-align:middle}
html[data-qingya-lab] #qingya-fullscreen-button:hover {background:#f0f5f7!important;border-color:#9aadb7!important}
html[data-qingya-lab] #qingya-fullscreen-button:focus-visible {outline:2px solid #8ac5e2!important;outline-offset:3px}
html[data-qingya-lab] #qingya-fullscreen-button svg {display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
html[data-qingya-lab] #qingya-fullscreen-button.qingya-fullscreen-fallback {position:absolute;top:10px;right:14px;z-index:25}
html[data-qingya-lab] :is(.floating,.floating-tools,.stage-actions,.canvas-actions):has(>#qingya-fullscreen-button) {display:flex;align-items:center;gap:6px}
html[data-qingya-lab] .stage-top>div:has(>#qingya-fullscreen-button){display:flex;align-items:center;gap:6px}
html[data-qingya-lab] button[data-qingya-legacy-fullscreen]{display:none!important}
@media(max-width:480px){
  html[data-qingya-lab] :is(.floating,.floating-tools):has(>#qingya-fullscreen-button){gap:4px!important;flex-wrap:wrap;justify-content:flex-end;overflow:visible!important;max-width:calc(100% - 10px)}
  html[data-qingya-lab] :is(.floating,.floating-tools):has(>#qingya-fullscreen-button)>button:not(#qingya-fullscreen-button){flex:0 1 auto!important;min-width:26px;padding-inline:3px!important}
}
html[data-qingya-lab] #qingya-background-button {display:inline-flex;align-items:center;justify-content:center;gap:7px;flex-shrink:0;white-space:nowrap;padding:8px 11px;font-size:12px;line-height:18px;border:2px solid #d97706!important;border-radius:var(--lab-control-radius);background:var(--lab-panel-bg);color:var(--lab-text);cursor:pointer}
html[data-qingya-lab] #qingya-background-button:is(:hover,[aria-expanded="true"]) {border-color:#b45309!important}
.lab-background-button [data-lab-background-swatch] {width:14px;height:14px;flex-shrink:0;border:1px solid #9aaebc;border-radius:4px}
.lab-background-dialog {box-sizing:border-box;width:340px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:18px;border:1px solid var(--lab-border);border-radius:16px;background:var(--lab-panel-bg);color:var(--lab-text);font:13px/1.6 var(--lab-font);box-shadow:0 16px 60px #213b4f30}
.lab-background-dialog::backdrop {background:rgb(39 60 82 / 22%)}
.lab-background-header {display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}
.lab-background-header strong {font-size:15px}
.lab-background-header button {width:30px;height:30px;padding:0;border:0;border-radius:8px;background:var(--lab-soft-bg);color:var(--lab-text);font:22px/1 var(--lab-font);cursor:pointer}
.lab-background-options {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.lab-background-option {position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 6px;border:2px solid var(--lab-border);border-radius:10px;cursor:pointer}
.lab-background-option:has(input:checked) {border-color:var(--lab-accent);background:var(--lab-accent-soft)}
.lab-background-option:has(input:focus-visible) {outline:2px solid var(--lab-accent);outline-offset:3px}
html[data-qingya-lab] .lab-background-option input {position:absolute;top:11px;right:9px;width:14px;height:14px;margin:0;accent-color:var(--lab-accent);outline-offset:2px}
.lab-background-sample {display:block;width:100%;height:42px;border:1px solid #76889450;border-radius:6px}
.lab-background-dialog p {margin:14px 0 0;font-size:12px;color:var(--lab-muted)}

/* Shared editable records. Wide data stays inside the dialog's scroll area. */
.lab-record-dialog {box-sizing:border-box;width:min(1080px,calc(100vw - 28px));max-width:calc(100vw - 28px);max-height:calc(100dvh - 28px);padding:0;border:1px solid var(--lab-border);border-radius:var(--lab-radius);background:var(--lab-panel-bg);color:var(--lab-text);font-family:var(--lab-font)}
.lab-record-dialog[open] {display:flex;flex-direction:column}
.lab-record-dialog::backdrop {background:rgb(39 60 82 / 28%)}
.lab-record-header,.lab-record-footer {display:flex;align-items:center;gap:12px;padding:18px 22px;flex-shrink:0}
.lab-record-header {justify-content:space-between;border-bottom:1px solid var(--lab-border)}
.lab-record-header h2 {font-size:18px;margin:0}
.lab-record-dialog button {cursor:pointer;padding:9px 14px;border:1px solid var(--lab-border);border-radius:var(--lab-control-radius);background:var(--lab-panel-bg);color:var(--lab-text);font:inherit}
html[data-qingya-lab] .lab-record-dialog button.lab-button-primary {background:var(--lab-accent)!important;color:white!important;border-color:var(--lab-accent)!important}
html[data-qingya-lab] .lab-record-dialog button.lab-button-primary:hover {background:var(--lab-accent-hover)!important}
.lab-record-dialog button:disabled {opacity:.5;cursor:default}
.lab-record-body {min-height:0;padding:14px 22px;overflow:auto}
.lab-record-description,.lab-record-help,.lab-record-status {font-size:13px;line-height:1.7}
.lab-record-help,.lab-record-status {color:var(--lab-muted)}
.lab-record-tools {display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}
.lab-record-scroll {overflow-x:auto;width:100%}
.lab-record-table {border-collapse:collapse;width:100%;min-width:760px;font-size:13px}
.lab-record-table :is(th,td) {text-align:left;padding:10px 8px;border-bottom:1px solid var(--lab-border);vertical-align:middle}
.lab-record-table th {background:var(--lab-soft-bg);white-space:nowrap}
.lab-record-table :is(input,textarea,select) {box-sizing:border-box;width:100%;min-width:105px;padding:8px;border:1px solid var(--lab-border);border-radius:6px;font:inherit}
.lab-record-table textarea {min-width:160px;resize:vertical}
.lab-record-table output {display:block;min-width:68px}
.lab-record-table [aria-invalid="true"] {outline:2px solid var(--lab-danger)}
.lab-record-source {white-space:nowrap;color:var(--lab-muted)}
.lab-record-dialog .lab-record-delete {color:var(--lab-danger)}
.lab-record-footer {flex-wrap:wrap;border-top:1px solid var(--lab-border)}
@media(max-width:600px) {.lab-record-header,.lab-record-footer {padding:12px}.lab-record-body {padding:10px 12px}.lab-record-dialog {width:calc(100vw - 16px);max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}}

/* Global equipment visibility overrides package-specific grid/flex rules. */
[data-qingya-equipment-hidden]{display:none!important}
#catalog .item span,[data-equipment-label]{white-space:normal;overflow-wrap:anywhere}
