/* base.css —— 全端共享：设计令牌、重置、结构骨架、共用组件、报告渲染岛、主题呈现契约。
   由 app.css 自动拆分而来；前台与后台布局都会加载。 */
:root{--primary:#1e40af;--primary-dark:#172f6b;--primary-gradient-start:#2b5bd7;--primary-gradient-end:#1e40af;--primary-soft:#e6efff;--primary-softer:#f2f7ff;--primary-border:#b7ccf0;--primary-border-soft:#d6e2f7;--on-primary:#ffffff;--ink:#14213d;--ink-soft:#33455f;--muted:#5a6b85;--muted-strong:#45526b;--line:#dbe3f0;--line-strong:#c2cfe2;--line-soft:#ecf1f8;--control-border:#c2cfe0;--surface:#ffffff;--surface-subtle:#f7fafd;--surface-soft:#f4f7fb;--surface-muted:#e9eff7;--surface-panel:#fdfefe;--surface-tint:#e6efff;--surface-glass:rgba(255,255,255,.96);--bg:#f4f7fb;--danger:#b42318;--danger-bg:#fff1f0;--danger-soft:#fff4f2;--danger-border:#fecdca;--success:#067647;--success-bg:#ecfdf3;--success-border:#abefc6;--warning:#b54708;--warning-bg:#fffaeb;--warning-border:#fedf89;--web-accent:#1e40af;--pdf-accent:#2563eb;--theme-shadow:rgba(18,38,79,.09)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif}
.container{width:min(1180px,calc(100% - 32px));margin:auto}
.topbar{background:var(--ink);color:var(--surface)}
.topbar .container{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{font-weight:800;color:var(--surface);text-decoration:none;white-space:nowrap}
.topbar nav{display:flex;gap:16px;flex-wrap:wrap}
.topbar nav a{color:var(--line-strong);text-decoration:none;font-size:14px}
.nav-logout{margin:0}
.nav-button{background:none;border:0;color:var(--line-strong);padding:0;font:inherit;font-size:14px;cursor:pointer}
.hero{padding:58px 0 28px}
.hero.compact{padding-bottom:12px}
.eyebrow{font-size:12px;letter-spacing:.16em;color:var(--primary);font-weight:800}
.hero h1,.admin-head h1{font-size:36px;margin:8px 0}
.hero p,.admin-head p,.muted{color:var(--muted)}
.survey-form,.card,.report-card,.admin-form{background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 30px rgba(16,24,40,.04)}
.survey-form,.admin-form{padding:28px}
.field{display:grid;gap:6px;margin-bottom:14px}
.field label{font-weight:700}
.field input,.field textarea,.field select,.question input[type=text],.question input[type=tel],.question input[type=date],.question input[type=number],.question textarea,.question select,.filter-bar input,.filter-bar select,.inline-editor input{width:100%;border:1px solid var(--control-border);border-radius:9px;padding:10px 12px;background:var(--surface);color:var(--ink);font:inherit}
.choice{display:flex;gap:10px;align-items:center;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.choice:hover{border-color:var(--primary-border);background:var(--primary-softer)}
.location-row,.actions,.form-actions,.builder-row,.builder-card-head{display:flex;gap:10px;align-items:center}
.button{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:9px;background:var(--primary);color:var(--on-primary);padding:10px 16px;text-decoration:none;cursor:pointer;font:inherit}
.button:hover{background:var(--primary-dark)}
.button.secondary{background:var(--primary-soft);color:var(--primary-dark)}
.button.danger{background:var(--danger)}
.button.small{padding:7px 11px;font-size:13px}
.form-actions{justify-content:flex-end;margin-top:20px}
.alert{padding:13px 16px;border-radius:10px;margin:14px 0}
.alert.error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-border)}
.alert.success{background:var(--success-bg);color:var(--success);border:1px solid var(--success-border)}
.invalid{background:var(--danger-soft);padding:10px;border-radius:10px}
.report-summary{background:var(--primary-soft);border-left:5px solid var(--primary);padding:18px;border-radius:10px;margin:12px 0 18px}
.report-card,.card{padding:22px;margin:15px 0}
.report-card h2,.card h2{margin-top:0}
.metric-grid,.score-grid,.check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.metric-grid>div,.score-card,.check-card{border:1px solid var(--line);border-radius:10px;padding:14px}
.metric-grid small,.score-card span{display:block;color:var(--muted)}
.score-card strong{font-size:30px;color:var(--primary)}
.finding{border:1px solid var(--line);border-left:4px solid var(--danger);border-radius:10px;padding:14px;margin:10px 0}
.finding h3{display:inline;margin-left:8px}
.report-item{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:10px 0}
.report-meta,.center{text-align:center;color:var(--muted)}
.narrow{max-width:520px;margin:70px auto}
.footer{padding:34px 0;color:var(--muted);font-size:12px}
.admin-head{display:flex;align-items:end;justify-content:space-between;gap:18px;padding:38px 0 18px}
.admin-head h1{margin-bottom:3px}
.badge{display:inline-block;padding:3px 8px;border-radius:99px;font-size:12px}
.badge.on{background:var(--success-bg);color:var(--success)}
.badge.off{background:var(--surface-muted);color:var(--muted)}
.badge.risk{background:var(--danger-bg);color:var(--danger)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field.full{grid-column:1/-1}
.two-col{display:grid;grid-template-columns:2fr 1fr;gap:18px;align-items:start}
.inline{display:inline}
.link-button{background:none;border:0;color:var(--primary);padding:3px;cursor:pointer}
.danger-text{color:var(--danger)}
.block{display:block;margin:7px 0}
.empty-state{text-align:center;padding:28px;color:var(--muted)}
code{background:var(--surface-muted);padding:2px 5px;border-radius:4px}
@media(max-width:800px){.public-topbar .container{min-height:56px;display:flex;flex-direction:row!important;align-items:center;justify-content:space-between;gap:10px;padding-top:8px;padding-bottom:8px;min-width:0}.public-topbar .brand{min-width:0;overflow:hidden;text-overflow:ellipsis}.public-topbar .public-nav{flex:0 0 auto;display:flex;flex-direction:row!important;gap:10px;flex-wrap:nowrap}.topbar .container{min-height:56px;flex-direction:row;align-items:center;gap:10px;padding-top:8px;padding-bottom:8px;min-width:0}.topbar strong{min-width:0;overflow-wrap:anywhere}.topbar nav{flex:0 0 auto;gap:10px;flex-wrap:nowrap}.admin-head{align-items:flex-start;flex-direction:column;padding-top:14px;padding-bottom:14px}.hero h1,.admin-head h1{font-size:29px}.survey-form,.admin-form{padding:18px}.form-grid,.form-grid.compact,.two-col,.metric-grid,.score-grid,.check-grid,.response-grid{grid-template-columns:1fr}.report-item{display:block}.actions{flex-wrap:wrap}}
.danger-text{color:var(--danger)!important}
.score-input{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted)}
.score-input input{width:70px}
.risk-toggle{display:flex;align-items:center;gap:7px;margin:9px 0 0;color:var(--muted-strong);font-size:13px}
.empty-state{text-align:center;padding:42px}
.answer-list{display:grid;gap:0}
.answer-row{display:grid;grid-template-columns:minmax(180px,42%) 1fr;gap:18px;padding:13px 0;border-bottom:1px solid var(--line-soft)}
.answer-question{color:var(--muted-strong)}
.answer-value{font-weight:700;white-space:pre-wrap}
.answer-empty{color:var(--muted);font-weight:400}
.finding-card{padding:13px;border-left:4px solid var(--risk-color,#f79009);background:var(--warning-bg);border-radius:8px;margin-top:10px}
.finding-card h4{margin:0 0 5px}
.finding-card p{margin:5px 0;color:var(--muted-strong)}
@media(max-width:900px){.answer-row{grid-template-columns:1fr;gap:5px}}
.report-download-actions{margin-top:22px}
.report-subject-card .metric-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
@media(max-width:900px){.report-link-card-head,.subject-summary-bar{align-items:flex-start;flex-direction:column}}
.template-preview-page .report-card{box-shadow:none;border:0;padding:0}
.template-preview-page .report-template-rendered{min-height:480px}
.template-preview-page .finding{border:1px solid var(--line);padding:12px;margin:12px 0}
.template-preview-page .report-disclaimer{color:var(--muted);font-size:13px;border-top:1px solid var(--line);padding-top:12px}
.report-style-density-compact{line-height:1.45}
.report-style-density-compact h1,.report-style-density-compact h2,.report-style-density-compact h3,.report-style-density-compact p,.report-style-density-compact table{margin-top:8px;margin-bottom:8px}
.report-style-density-spacious{line-height:1.9}
.report-style-density-spacious h1,.report-style-density-spacious h2,.report-style-density-spacious h3,.report-style-density-spacious p,.report-style-density-spacious table{margin-top:22px;margin-bottom:22px}
.report-style-align-left h1{text-align:left}
.report-style-align-center h1{text-align:center}
.report-style-align-right h1{text-align:right}
.report-style-surface-line .report-card,.report-style-surface-line .finding{box-shadow:none;border-radius:0;border-left:0;border-right:0}
.report-style-surface-line .report-card{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.report-style-surface-plain .report-card,.report-style-surface-plain .finding{box-shadow:none;border:0;background:transparent}
.report-style-surface-plain .report-card{padding-left:0;padding-right:0}
.report-style-surface-card section{border:1px solid var(--line);border-radius:12px;padding:16px;margin:16px 0;background:var(--panel,var(--surface))}
.report-style-surface-line section{border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;padding:12px 0;margin:16px 0}
.report-style-surface-plain section{border:0;padding:0;margin:16px 0;background:transparent}
/* 网页报告模板与预览共用同一套样式，避免“预览和实际报告不一致”。 */
.report-template-rendered{--report-accent:var(--primary);border-top:5px solid var(--report-accent);overflow:hidden}
.report-template-rendered h1,.report-template-rendered h2,.report-template-rendered h3{color:var(--report-accent)}
.report-template-rendered h1{margin-top:4px}
.report-template-rendered table{width:100%;border-collapse:collapse;margin:14px 0}
.report-template-rendered th,.report-template-rendered td{padding:10px 12px;border:1px solid var(--line);text-align:left;vertical-align:top}
.report-template-rendered th{background:var(--surface-subtle)}
.report-template-rendered .finding{border-left-color:var(--report-accent)}
.report-template-rendered .report-disclaimer{margin-top:22px;padding-top:13px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}
.report-preset-web-standard{background:linear-gradient(180deg,color-mix(in srgb,var(--report-accent) 5%,white) 0,var(--surface) 155px)}
.report-preset-web-standard>h1{padding-bottom:14px;border-bottom:2px solid color-mix(in srgb,var(--report-accent) 30%,white)}
.report-preset-web-brief{border-radius:8px;box-shadow:none;background:var(--surface)}
.report-preset-web-brief>h1{text-align:left;padding-left:14px;border-left:6px solid var(--report-accent)}
.report-preset-web-brief h2{font-size:18px;border-bottom:1px solid color-mix(in srgb,var(--report-accent) 28%,white);padding-bottom:6px}
.report-preset-web-detailed{background:#fffcf7;border-color:#fed7aa}
.report-preset-web-detailed>h1{padding:16px;margin:-4px -4px 18px;border-radius:10px;background:color-mix(in srgb,var(--report-accent) 10%,white)}
.report-preset-web-detailed section{border-color:#fed7aa}
.template-preview-page .report-template-rendered{min-height:480px}
.template-preview-page .report-template-rendered.report-style-surface-plain{padding-left:22px;padding-right:22px}
.report-summary-text-builder{padding:13px;border-radius:10px;background:var(--surface-subtle)}
.button.disabled{pointer-events:none;opacity:.48}
.empty-state p{margin:7px 0 0}
.choice[data-parent-choice].is-branch-active{border-color:var(--primary-border);background:var(--primary-soft)}
.choice[data-parent-choice].is-branch-active span{color:var(--primary-dark);font-weight:700}
.finding{border-left-color:var(--risk-color,var(--muted));background:linear-gradient(90deg,var(--risk-bg,var(--surface-subtle)),var(--surface) 34%)}
.finding-heading{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.finding-heading h3{margin:0}
.finding-number{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;border-radius:999px;background:var(--risk-color,var(--muted));color:var(--surface);font-weight:800}
.finding .badge.risk{background:var(--surface)}
.finding p strong{color:var(--ink)}
.public-nav a{display:inline-flex;align-items:center;padding:8px 12px;border:1px solid rgba(255,255,255,.28);border-radius:8px;color:var(--surface)!important;font-weight:700}
.report-answer-list{display:grid;gap:14px}
.report-answer-item{border:1px solid var(--line);border-radius:12px;padding:17px;background:var(--surface)}
.report-answer-question{font-size:16px;margin:0 0 6px;color:var(--ink)}
.report-answer-description{font-size:14px;line-height:1.65;color:var(--muted);margin:0 0 12px;white-space:pre-line}
.report-answer-value{border:1px solid var(--line);border-radius:10px;background:var(--surface-subtle);padding:12px 14px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}
.report-answer-value-label{display:block;color:var(--muted);font-size:12px;font-weight:700;margin-bottom:5px}
.answer-list{display:grid;gap:14px}
.answer-row{display:block;border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--surface)}
.answer-question{margin-bottom:12px}
.answer-question>strong{display:block;font-size:15px}
.answer-description{font-size:14px;line-height:1.65;color:var(--muted);margin:6px 0 8px;white-space:pre-line}
.answer-value{display:block!important;width:100%;border:1px solid var(--line);border-radius:10px;background:var(--surface-subtle);padding:12px 14px;white-space:pre-wrap;overflow-wrap:anywhere}
.answer-value>small{display:block;margin-bottom:5px;font-weight:700}
.answer-empty{color:var(--muted)}
.text-danger{color:var(--danger)!important}
@media(max-width:768px){.report-answer-item{padding:14px}}
.report-subject-card>h2,.response-subject-card>h2,.report-subject-section>h2{color:var(--report-accent,var(--primary));border-bottom:1px solid var(--line-strong);padding-bottom:12px;margin-bottom:18px}
.subject-info-table-wrap{width:100%;overflow-x:auto}
.subject-info-table{width:100%;border-collapse:collapse;table-layout:fixed;margin:0}
.subject-info-table th,.subject-info-table td{border:1px solid var(--line-strong);padding:10px 12px;text-align:left;vertical-align:top;line-height:1.55}
.subject-info-table th{width:28%;background:var(--surface-muted);font-weight:500;color:var(--ink-soft)}
.subject-info-table td{background:var(--surface);color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.report-template-rendered .report-subject-section{display:block}
.report-template-rendered .report-subject-section .subject-info-table{margin-top:0}
@media(max-width:680px){.subject-info-table th{width:36%}.subject-info-table th,.subject-info-table td{padding:9px 10px}.report-subject-card>h2,.response-subject-card>h2,.report-subject-section>h2{padding-bottom:10px;margin-bottom:14px}}
/* 报告各类内容字号：企业名称、标题、正文、表格、免责声明和答题详情互不联动。 */
.report-template-rendered,.report-visual-layout{font-size:var(--report-desktop-font-size,16px)}
.report-template-rendered>h1,.report-visual-layout>.hero h1{font-size:var(--report-desktop-title-font-size,32px)}
.report-template-rendered h1 .report-title-enterprise-name,.report-visual-layout>.hero h1 .report-title-enterprise-name{font-size:var(--report-desktop-enterprise-name-font-size,20px)}
.report-template-rendered h1 .report-title-title,.report-visual-layout>.hero h1 .report-title-title{font-size:var(--report-desktop-title-font-size,32px)}
.report-template-rendered table,.report-visual-layout table{font-size:var(--report-desktop-table-font-size,14px)}
.report-template-rendered .report-disclaimer,.report-visual-layout .report-disclaimer,.template-preview-page .report-template-rendered .report-disclaimer{font-size:var(--report-desktop-disclaimer-font-size,13px)}
.report-template-rendered .report-answer-item,.report-visual-layout .report-answer-item{font-size:var(--report-desktop-answer-font-size,14px)}
.report-template-rendered .report-answer-question,.report-visual-layout .report-answer-question{font-size:1.1429em}
.report-template-rendered .report-answer-description,.report-visual-layout .report-answer-description{font-size:1em}
.report-template-rendered .report-answer-value-label,.report-visual-layout .report-answer-value-label{font-size:.8571em}
.template-preview-panel.preview-kind-pdf .report-template-rendered{font-size:var(--report-pdf-font-size,10.5pt)}
.template-preview-panel.preview-kind-pdf .report-template-rendered>h1{font-size:var(--report-pdf-title-font-size,24pt)}
.template-preview-panel.preview-kind-pdf .report-template-rendered h1 .report-title-enterprise-name{font-size:var(--report-pdf-enterprise-name-font-size,16pt)}
.template-preview-panel.preview-kind-pdf .report-template-rendered h1 .report-title-title{font-size:var(--report-pdf-title-font-size,24pt)}
.template-preview-panel.preview-kind-pdf .report-template-rendered table{font-size:var(--report-pdf-table-font-size,9.5pt)}
.template-preview-panel.preview-kind-pdf .report-template-rendered .report-disclaimer{font-size:var(--report-pdf-disclaimer-font-size,9pt)}
.template-preview-panel.preview-kind-pdf .report-template-rendered .report-answer-item{font-size:var(--report-pdf-answer-font-size,9.5pt)}
@media(max-width:680px){.report-template-rendered,.report-visual-layout{font-size:var(--report-mobile-font-size,15px)}.report-template-rendered>h1,.report-visual-layout>.hero h1{font-size:var(--report-mobile-title-font-size,28px)}.report-template-rendered h1 .report-title-enterprise-name,.report-visual-layout>.hero h1 .report-title-enterprise-name{font-size:var(--report-mobile-enterprise-name-font-size,18px)}.report-template-rendered h1 .report-title-title,.report-visual-layout>.hero h1 .report-title-title{font-size:var(--report-mobile-title-font-size,28px)}.report-template-rendered table,.report-visual-layout table{font-size:var(--report-mobile-table-font-size,13px)}.report-template-rendered .report-disclaimer,.report-visual-layout .report-disclaimer,.template-preview-page .report-template-rendered .report-disclaimer{font-size:var(--report-mobile-disclaimer-font-size,12px)}.report-template-rendered .report-answer-item,.report-visual-layout .report-answer-item{font-size:var(--report-mobile-answer-font-size,13px)}.template-preview-panel.preview-kind-pdf .report-template-rendered{font-size:var(--report-pdf-font-size,10.5pt)}.template-preview-panel.preview-kind-pdf .report-template-rendered>h1{font-size:var(--report-pdf-title-font-size,24pt)}
.template-preview-panel.preview-kind-pdf .report-template-rendered h1 .report-title-enterprise-name{font-size:var(--report-pdf-enterprise-name-font-size,16pt)}
.template-preview-panel.preview-kind-pdf .report-template-rendered h1 .report-title-title{font-size:var(--report-pdf-title-font-size,24pt)}.template-preview-panel.preview-kind-pdf .report-template-rendered table{font-size:var(--report-pdf-table-font-size,9.5pt)}.template-preview-panel.preview-kind-pdf .report-template-rendered .report-disclaimer{font-size:var(--report-pdf-disclaimer-font-size,9pt)}.template-preview-panel.preview-kind-pdf .report-template-rendered .report-answer-item{font-size:var(--report-pdf-answer-font-size,9.5pt)}}
/* Theme presentation contract: metadata controls typography, sizing and context layout. */
body{font-family:var(--theme-font-family,Inter,"Segoe UI","Microsoft YaHei",sans-serif);font-size:var(--theme-base-font-size,16px)}
body>.topbar .container,body>main.container,body>footer.container{width:min(var(--theme-content-width,1180px),calc(100% - 32px))}
body.theme-context-survey>main.container{width:min(var(--theme-content-width,900px),calc(100% - 32px))}
body.theme-context-report>main.container{width:min(var(--theme-content-width,980px),calc(100% - 32px))}
body.theme-context-admin .survey-form,body.theme-context-admin .card,body.theme-context-admin .report-card,body.theme-context-admin .admin-form,body.theme-context-admin .table-wrap,body.theme-context-admin .builder-section,body.theme-context-admin .builder-card,body.theme-context-admin .page-builder-card,body.theme-context-admin .question-builder-card{border-radius:var(--theme-radius,16px)}
body.theme-context-survey .survey-form,body.theme-context-survey .card{border-radius:var(--theme-radius,16px)}
body.theme-context-report .report-card,body.theme-context-report .report-summary{border-radius:var(--theme-radius,16px)}
body[data-layout-density="compact"] .survey-form,body[data-layout-density="compact"] .admin-form,body[data-layout-density="compact"] .builder-section{padding:20px}
body[data-layout-density="compact"] .card,body[data-layout-density="compact"] .report-card{padding:17px}
body[data-layout-density="spacious"] .survey-form,body[data-layout-density="spacious"] .admin-form,body[data-layout-density="spacious"] .builder-section{padding:34px}
body[data-layout-density="spacious"] .card,body[data-layout-density="spacious"] .report-card{padding:28px}
body[data-question-layout="compact"] .question{padding-bottom:14px;margin-bottom:14px}
body[data-theme-navigation="compact"] .topbar .container{min-height:54px}
body[data-theme-navigation="compact"] .topbar nav{gap:10px}
/* Theme typography contract: metadata controls the heading scale in every browser context. */
body :is(.hero h1,.admin-head h1){font-size:var(--theme-h1-size,36px)}
body :is(.page-heading h2,.settings-section-head h2,.section-heading h2,.report-card>h2,.report-summary>h2){font-size:var(--theme-h2-size,24px)}
body :is(.theme-preview-card h3,.report-answer-question){font-size:var(--theme-h3-size,18px)}

/* ===== 可选呈现令牌消费规则（阶段2 主题 schema 扩展）=====
   仅当主题在 theme.php 显式声明对应键时，render() 才把 --theme-* 内联到 body style；
   未声明的主题各 var() 落到与现状一致的回退值，渲染保持不变。
   light/dark/cloudream 以各自 theme.css 的 [data-theme] 高优先级规则为准，不受本块影响。 */
body{background:linear-gradient(var(--theme-body-start,var(--bg)),var(--theme-body-end,var(--bg)))}
.topbar{background:var(--theme-topbar,var(--ink));color:var(--theme-topbar-text,var(--surface))}
.topbar nav a,.nav-button{color:var(--theme-nav-text,var(--line-strong))}
.footer{background:var(--theme-footer-bg,transparent);color:var(--theme-footer-text,var(--muted))}
.button{color:var(--theme-on-primary,var(--on-primary));border-radius:var(--theme-button-radius,9px);box-shadow:var(--theme-button-shadow,none)}
.button.secondary{background:var(--theme-primary-soft,var(--primary-soft))}
.report-summary{background:var(--theme-primary-soft,var(--primary-soft))}
.choice:hover{background:var(--theme-hover-bg,var(--primary-softer))}
.choice[data-parent-choice].is-branch-active{background:var(--theme-selected-bg,var(--primary-soft));border-color:var(--theme-selected-border,var(--primary-border))}
.link-button{color:var(--theme-link,var(--primary))}
.field input:disabled,.field textarea:disabled,.field select:disabled,.question input:disabled,.question textarea:disabled,.question select:disabled{background:var(--theme-disabled-bg,var(--surface));color:var(--theme-disabled-text,var(--ink))}
body :is(a,button,input,select,textarea,[tabindex]):focus-visible{outline:3px solid var(--theme-focus-ring,var(--theme-focus,rgba(67,56,202,.35)));outline-offset:2px}
.survey-form,.card,.report-card,.admin-form{box-shadow:var(--theme-card-shadow,0 10px 30px rgba(16,24,40,.04))}
/* 卡片风格（data-theme-card-style，可置于 body 或隔离预览容器）：flat 去阴影去边框、bordered 去阴影留边框、elevated 加强阴影。 */
[data-theme-card-style="flat"] .survey-form,[data-theme-card-style="flat"] .card,[data-theme-card-style="flat"] .report-card,[data-theme-card-style="flat"] .admin-form{box-shadow:none;border-color:transparent}
[data-theme-card-style="bordered"] .survey-form,[data-theme-card-style="bordered"] .card,[data-theme-card-style="bordered"] .report-card,[data-theme-card-style="bordered"] .admin-form{box-shadow:none}
[data-theme-card-style="elevated"] .survey-form,[data-theme-card-style="elevated"] .card,[data-theme-card-style="elevated"] .report-card,[data-theme-card-style="elevated"] .admin-form{box-shadow:var(--theme-card-shadow,0 12px 32px rgba(16,24,40,.14))}
/* 动效（data-theme-motion="reduced"，可置于 body 或隔离预览容器）：禁用过渡与动画。 */
[data-theme-motion="reduced"] *,[data-theme-motion="reduced"] *::before,[data-theme-motion="reduced"] *::after{transition-duration:.01ms!important;transition-delay:0ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}
