/* 益点点科技 · FDE 案例库（/fde/cases/）
* 由单文件「FDE案例行业索引.html」拆分改写，接入官网设计令牌（site-foundation.css）。
* 案例内容来自 Datawhale《FDE案例100》；快速演示区为离线交互原型。
* 全部规则以 .fde-app 作用域包裹，避免影响站点导航与页脚。
*/
.fde-app * {
box-sizing:border-box}
.fde-app button,.fde-app input,.fde-app select {
font:inherit}
.fde-app button,.fde-app a,.fde-app input,.fde-app select {
-webkit-tap-highlight-color:transparent}
.fde-app button {
cursor:pointer}
.fde-app button:focus-visible,.fde-app a:focus-visible,.fde-app input:focus-visible,.fde-app select:focus-visible {
outline:3px solid var(--site-focus);
outline-offset:3px}
.fde-app button {
color:inherit}
.fde-app a {
color:var(--site-violet)}
.fde-app .shell {
display:grid;
grid-template-columns:240px minmax(0,1fr);
min-height:calc(100vh - 68px)}
.fde-app .sidebar {
background:#fff;
border-right:1px solid var(--site-line);
padding:31px 20px;
position:sticky;
top:68px;
height:calc(100vh - 68px);
overflow:auto}
.fde-app .brand {
font-size:var(--site-h3);
font-weight: 600;
letter-spacing:-.02em;
display:flex;
align-items:center;
gap:11px}
.fde-app .logo {
width:34px;
height:34px;
background:var(--site-violet);
border-radius:var(--site-radius-sm);;
color:#fff;
display:grid;
place-items:center;
font-size:var(--site-h3)}
.fde-app .eyebrow {
font-size:var(--site-micro);
letter-spacing:.08em;
color:var(--site-muted);
font-weight:700}
.fde-app .sidebar .eyebrow {
margin:10px 0 34px 46px}
.fde-app .label {
font-size:var(--site-micro);
color:var(--site-muted);
letter-spacing:.06em;
margin:0 12px 12px}
.fde-app .industry {
display:flex;
align-items:center;
justify-content:space-between;
width:100%;
border:0;
background:transparent;
padding:11px 12px;
margin:3px 0;
border-radius:var(--site-radius-sm);
text-align:left;
font-size:var(--site-small)}
.fde-app .industry:hover {
background:var(--site-ice)}
.fde-app .industry.active {
background:var(--site-tint-lavender);
color:var(--site-violet);
font-weight:700}
.fde-app .count {
font-size:var(--site-micro);
background:var(--site-tint-gray);
padding:3px 7px;
border-radius:var(--site-radius-xs);}
.fde-app .industry.active .count {
background:var(--site-tint-lavender)}
.fde-app .source {
font-size:var(--site-micro);
color:var(--site-muted);
line-height:1.75;
border-top:1px solid var(--site-line);
margin:24px 10px 0;
padding-top:18px}
.fde-app .main {
padding:40px 46px;
min-width:0;
max-width:1510px;
width:100%;
margin:auto}
.fde-app .topline {
display:flex;
justify-content:space-between;
align-items:center;
margin-bottom:22px}
.fde-app .offline {
font-size:var(--site-micro);
color:var(--site-mint);
background:var(--site-tint-mint);
padding:7px 10px;
border-radius:var(--site-radius)}
.fde-app .offline:before {
content:'●';
font-size:var(--site-micro);
margin-right:6px}
.fde-app h1 {
font-size:var(--site-h1);
line-height:1.3;
letter-spacing:-.02em;
margin:0 0 14px}
.fde-app .intro {
font-size:var(--site-small);
color:var(--site-muted);
line-height:1.7;
margin:0;
max-width:740px}
.fde-app .stats {
display:flex;
gap:34px;
margin:26px 0 29px}
.fde-app .stat strong {
font-size:var(--site-figure);
font-weight: 600}
.fde-app .stat span {
font-size:var(--site-micro);
color:var(--site-muted);
margin-left:9px}
.fde-app .searchbox {
position:relative}
.fde-app .searchrow {
display:flex;
align-items:center;
background:white;
border:1px solid rgba(117, 122, 129, .36);
border-radius:var(--site-radius);
box-shadow:0 5px 18px rgba(20, 25, 31, .04);
padding:0 15px}
.fde-app .magnify {
font-size:var(--site-h3);
color:var(--site-violet);
margin-right:10px}
.fde-app .searchrow input {
border:0;
background:transparent;
width:100%;
min-width:0;
height:58px;
outline:none;
color:var(--site-ink);
font-size:var(--site-small)}
.fde-app .clear {
flex-shrink:0;
white-space:nowrap;
border:0;
background:var(--site-tint-gray);
border-radius:var(--site-radius-xs);;
padding:5px 9px;
font-size:var(--site-micro)}
.fde-app .suggest {
position:absolute;
top:65px;
left:0;
right:0;
z-index:10;
background:white;
border:1px solid var(--site-line);
border-radius:var(--site-radius);
box-shadow:0 14px 35px rgba(20, 25, 31, .08);
padding:8px;
max-height:350px;
overflow:auto}
.fde-app .suggest[hidden] {
display:none}
.fde-app .suggest button {
display:flex;
width:100%;
justify-content:space-between;
gap:15px;
text-align:left;
border:0;
background:white;
padding:11px;
border-radius: var(--site-button-radius);
font-size:var(--site-small)}
.fde-app .suggest button:hover,.fde-app .suggest button:focus {
background:var(--site-tint-lavender)}
.fde-app .suggest small {
color:var(--site-muted);
white-space:nowrap}
.fde-app .searchhint {
font-size:var(--site-micro);
color:var(--site-muted);
margin:10px 3px 18px}
.fde-app .topics {
display:flex;
align-items:center;
flex-wrap:wrap;
gap:7px;
max-height:145px;
overflow:auto}
.fde-app .topics>span {
font-size:var(--site-micro);
color:var(--site-muted);
margin-right:5px}
.fde-app .chip {
border:1px solid var(--site-line);
background:#fff;
border-radius:var(--site-radius-control);
font-size:var(--site-micro);
padding:6px 9px}
.fde-app .chip:hover {
border-color:var(--site-primary-border);
color:var(--site-violet)}
.fde-app .chip.active {
background:var(--site-violet);
color:white;
border-color:var(--site-violet)}
.fde-app .toolbar {
border-top:1px solid var(--site-line);
margin-top:25px;
padding:24px 0 18px;
display:flex;
justify-content:space-between;
gap:15px;
align-items:center}
.fde-app .toolbar h2 {
font-size:var(--site-h3);
margin:0}
.fde-app .toolbar h2 span {
color:var(--site-muted);
font-size:var(--site-micro);
font-weight:400;
margin-left:12px}
.fde-app .toolbar select {
font-size:var(--site-micro);
background:transparent;
border:1px solid var(--site-line);
border-radius:var(--site-radius-control);
padding:7px}
.fde-app .filters {
display:flex;
gap:8px;
flex-wrap:wrap;
margin-bottom:12px}
.fde-app .filters:empty {
display:none}
.fde-app .filter {
border:0;
color:var(--site-violet);
background:var(--site-tint-lavender);
padding:6px 10px;
border-radius:var(--site-radius-xs);;
font-size:var(--site-micro)}
.fde-app .cards {
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:16px}
.fde-app .card {
border:1px solid var(--site-line);
border-radius:var(--site-radius);
background:#fff;
padding:24px;
display:flex;
flex-direction:column;
transition:box-shadow .2s,border-color .2s}
.fde-app .card:hover {
border-color:rgba(117, 122, 129, .5);
box-shadow:0 8px 24px rgba(20, 25, 31, .04)}
.fde-app .cardtop {
display:flex;
justify-content:space-between;
gap:8px;
align-items:center}
.fde-app .num {
font:600 11px Consolas,monospace;
letter-spacing:.04em;
color:var(--site-faint)}
.fde-app .sector {
color:var(--site-violet);
background:var(--site-tint-lavender);
font-size:var(--site-micro);
border-radius:var(--site-radius-xs);
padding:5px 7px}
.fde-app .card h3 {
font-size:var(--site-h3);
line-height:1.6;
margin:16px 0 9px}
.fde-app .titlebtn {
padding:0;
border:0;
background:none;
font-weight:700;
text-align:left;
line-height:inherit}
.fde-app .titlebtn:hover {
color:var(--site-violet)}
.fde-app .sub {
font-size:var(--site-micro);
color:var(--site-muted);
margin:0 0 10px}
.fde-app .summary {
font-size:var(--site-small);
line-height:1.75;
color:var(--site-muted);
margin:0 0 16px}
.fde-app .tags {
display:flex;
gap:6px;
flex-wrap:wrap;
margin-top:auto}
.fde-app .tags .chip {
font-size:var(--site-micro);
padding:4px 7px;
background:var(--site-surface-soft)}
.fde-app .cardfoot {
border-top:1px solid var(--site-line);
padding-top:15px;
margin-top:18px;
display:flex;
align-items:center;
justify-content:space-between}
.fde-app .pages {
font-size:var(--site-micro);
color:var(--site-faint)}
.fde-app .read {
font-size:var(--site-micro);
font-weight:700;
background:none;
border:0;
color:var(--site-violet);
padding:4px}
.fde-app .hit {
background:var(--site-tint-yellow);
border-left:2px solid var(--site-tint-yellow-bold);
padding:9px 11px;
margin:0 0 15px;
font-size:var(--site-micro);
line-height:1.7;
color:#6b5f3f}
.fde-app mark {
background:#f3e3b5;
color:inherit;
border-radius:2px}
.fde-app .empty {
text-align:center;
border:1px dashed var(--site-line);
border-radius:var(--site-radius);
padding:58px 20px;
grid-column:1/-1}
.fde-app .empty p {
font-size:var(--site-small);
color:var(--site-muted)}
.fde-app footer {
font-size:var(--site-micro);
color:var(--site-muted);
line-height:1.75;
padding:30px 0 5px}
.fde-app .modal {
border:0;
border-radius:var(--site-radius);
padding:0;
width:min(1140px,95vw);
height:92vh;
max-height:950px;
background:#fff;
color:var(--site-ink);
box-shadow:0 25px 100px rgba(20, 25, 31, .14)}
.fde-app .modal::backdrop {
background:rgba(20, 25, 31, .45);
backdrop-filter:blur(3px)}
.fde-app .modalhead {
display:flex;
justify-content:space-between;
align-items:center;
gap:12px;
padding:15px 22px;
border-bottom:1px solid var(--site-line);
height:64px}
.fde-app .modalhead strong {
font-size:var(--site-micro)}
.fde-app .modalhead button {
border:1px solid var(--site-line);
background:#fff;
padding:7px 10px;
border-radius: var(--site-button-radius);
font-size:var(--site-micro)}
.fde-app .reader {
display:grid;
grid-template-columns:182px 1fr;
height:calc(100% - 64px)}
.fde-app .readeraside {
padding:24px 17px;
border-right:1px solid var(--site-line);
background:var(--site-surface-soft);
overflow:auto}
.fde-app .readeraside a {
display:block;
font-size:var(--site-micro);
padding:9px 7px;
text-decoration:none;
line-height:1.6;
border-radius:var(--site-radius-control)}
.fde-app .readeraside a:hover {
background:var(--site-tint-lavender)}
.fde-app .readeraside .label {
margin:0 7px 10px}
.fde-app .article {
overflow:auto;
padding:32px 40px;
scroll-behavior:smooth}
.fde-app .article h2 {
font-size:var(--site-figure);
line-height:1.5;
margin:12px 0}
.fde-app .article .lead {
background:var(--site-tint-lavender);
padding:18px;
border-radius:var(--site-radius-sm);
margin:22px 0;
font-size:var(--site-small);
line-height:1.75}
.fde-app .article .lead b {
display:block;
font-size:var(--site-micro);
color:var(--site-violet);
margin-bottom:6px}
.fde-app .article p {
font-size:var(--site-small);
line-height:1.75;
margin:12px 0}
.fde-app .article h3 {
font-size:var(--site-h3);
line-height:1.7;
margin:24px 0 12px;
scroll-margin-top:20px}
.fde-app .pageblock {
border-top:1px solid var(--site-line);
margin-top:27px;
padding-top:15px}
.fde-app .pageid {
font-size:var(--site-micro);
color:var(--site-muted);
letter-spacing:.5px;
margin-bottom:15px}
.fde-app .article img {
max-width:100%;
height:auto;
display:block;
margin:15px auto;
border-radius: var(--site-image-radius);}
.fde-app .article details {
margin:20px 0}
.fde-app .article summary {
cursor:pointer;
font-size:var(--site-micro);
color:var(--site-violet);
padding:12px;
background:var(--site-tint-sky);
border-radius:var(--site-radius-control);}
.fde-app .readeraside .pager {
border-top:1px solid var(--site-line);
margin-top:20px;
padding-top:16px}
.fde-app .readeraside button {
width:100%;
border:1px solid var(--site-line);
background:white;
border-radius: var(--site-button-radius);
margin:4px 0;
padding:9px;
font-size:var(--site-micro)}
.fde-app .readeraside button:disabled {
opacity:.35;
cursor:default}
.fde-app .note {
font-size:var(--site-micro)!important;
color:var(--site-muted)}
.fde-app .jumphit {
border:0;
background:var(--site-violet);
color:#fff;
border-radius:var(--site-radius-control);
padding:9px 12px;
font-size:var(--site-micro);
margin-top:10px}

@media (min-width: 1500px) {
.fde-app .cards {
grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media (max-width: 1040px) {
.fde-app .main {
padding:32px 26px}
.fde-app .shell {
grid-template-columns:220px minmax(0,1fr)}
.fde-app .sidebar {
padding:28px 13px}
.fde-app .card {
padding:20px}
.fde-app h1 {
font-size:var(--site-figure)}
}

@media (max-width: 760px) {
.fde-app .shell {
display:block}
.fde-app .sidebar {
position:relative;
top:auto;
height:auto;
padding:18px;
border-right:0;
border-bottom:1px solid var(--site-line)}
.fde-app .brand {
font-size:var(--site-h3)}
.fde-app .sidebar .eyebrow,.fde-app .sidebar .label,.fde-app .source {
display:none}
.fde-app #industries {
display:flex;
gap:5px;
overflow:auto;
margin-top:14px}
.fde-app .industry {
width:auto;
flex-shrink:0;
gap:9px;
padding:8px 10px;
font-size:var(--site-micro)}
.fde-app .main {
padding:25px 18px}
.fde-app .cards {
grid-template-columns:1fr}
.fde-app .topline {
margin-bottom:18px}
.fde-app h1 {
font-size:var(--site-figure)}
.fde-app .stats {
display:grid;
grid-template-columns:repeat(3,minmax(0,1fr));
gap:12px;
margin:26px 0 29px}
.fde-app .stat {
display:grid;
gap:4px;
align-content:start}
.fde-app .stat strong {
font-size:var(--site-figure)}
.fde-app .stat span {
font-size:var(--site-micro);
margin-left:0;
white-space:nowrap}
.fde-app .intro {
font-size:var(--site-small)}
.fde-app .searchrow input {
font-size:var(--site-small)}
.fde-app .reader {
display:block}
.fde-app .readeraside {
display:none}
.fde-app .article {
height:100%;
padding:23px 20px}
.fde-app .article h2 {
font-size:var(--site-h3)}
.fde-app .modal {
width:97vw;
height:95vh;
border-radius:var(--site-radius-sm);}
.fde-app .modalhead {
padding:12px}
.fde-app .modalhead strong {
font-size:var(--site-micro)}
.fde-app .toolbar h2 {
font-size:var(--site-body)}
.fde-app .toolbar h2 span {
margin-left:7px}
.fde-app .topics {
max-height:110px}
.fde-app .article p {
font-size:var(--site-small)}
}
.fde-app .goal-hub {
margin:0 0 25px;
border:1px solid var(--site-line);
background:var(--site-surface-soft);
border-radius:var(--site-radius);
padding:22px}
.fde-app .goal-top {
display:flex;
align-items:center;
justify-content:space-between;
gap:16px}
.fde-app .goal-top h2 {
font-size:var(--site-h3);
margin:0 0 8px}
.fde-app .goal-top p {
font-size:var(--site-micro);
color:var(--site-muted);
line-height:1.7;
margin:0}
.fde-app .goal-number {
font-size:var(--site-figure);
font-weight: 600;
color:var(--site-violet);
white-space:nowrap}
.fde-app .goal-number small {
font-size:var(--site-micro);
font-weight:400;
color:var(--site-muted)}
.fde-app .goal-links {
display:flex;
gap:8px;
flex-wrap:wrap;
margin-top:17px}
.fde-app .goal-links button {
font-size:var(--site-micro);
border:1px solid var(--site-primary-border);
background:white;
border-radius: var(--site-button-radius);;
padding:9px 12px}
.fde-app .goal-links button:hover {
border-color:var(--site-violet);
color:var(--site-violet)}
.fde-app .demo-launch {
background:var(--site-tint-mint);
border:1px solid var(--site-primary-border);
border-radius: var(--site-button-radius);
color:var(--site-mint);
font-weight:600;
padding:8px 10px;
font-size:var(--site-micro);
cursor:pointer}
.fde-app .card .demo-launch {
margin-top:12px;
align-self:flex-start}
.fde-app .demo-modal {
width:min(1340px,98vw);
height:96vh;
max-height:1200px;
border:0;
border-radius:var(--site-radius);
padding:0;
background:var(--site-ice);
color:var(--site-ink);
box-shadow:0 30px 100px rgba(20, 25, 31, .22)}
.fde-app .demo-modal::backdrop {
background:rgba(15, 18, 22, .6)}
.fde-app .d-head {
height:65px;
padding:12px 22px;
background:#fff;
border-bottom:1px solid var(--site-line);
display:flex;
align-items:center;
justify-content:space-between;
gap:15px}
.fde-app .d-head strong {
font-size:var(--site-body)}
.fde-app .d-head small {
font-size:var(--site-micro);
color:#78899a;
display:block;
margin-top:4px}
.fde-app .d-btn {
border:1px solid rgba(117, 122, 129, .36);
background:white;
border-radius:var(--site-radius-control);;
padding:9px 13px;
font-size:var(--site-micro);
color:var(--site-ink);
cursor:pointer}
.fde-app .d-btn:hover {
background:#f0f5fd}
.fde-app .d-btn.primary {
background:var(--site-violet);
border-color:var(--site-violet);
color:white}
.fde-app .d-btn:disabled {
opacity:.5;
cursor:default}
.fde-app .d-body {
height:calc(100% - 65px);
overflow:auto;
padding:22px}
.fde-app .d-navigation {
display:flex;
gap:6px;
overflow:auto;
margin-bottom:18px}
.fde-app .d-navigation button {
white-space:nowrap}
.fde-app .d-navigation .selected {
background:var(--site-ink);
color:white;
border-color:var(--site-ink)}
.fde-app .d-intro {
display:flex;
gap:20px;
align-items:start;
justify-content:space-between;
margin-bottom:18px}
.fde-app .d-intro h2 {
font-size:var(--site-figure);
margin:0 0 9px}
.fde-app .d-intro p {
font-size:var(--site-small);
line-height:1.7;
color:var(--site-muted);
margin:0}
.fde-app .d-mode {
background:var(--site-tint-lavender);
color:var(--site-violet-deep);
border-radius:var(--site-radius-control);
padding:7px 10px;
white-space:nowrap;
font-size:var(--site-micro)}
.fde-app .d-boundary {
background:var(--site-tint-yellow);
border:1px solid rgba(180, 150, 80, .3);
border-radius:var(--site-radius-sm);
font-size:var(--site-micro);
line-height:1.75;
padding:12px 15px;
margin-bottom:18px;
color:#6b5f3f}
.fde-app .d-columns {
display:grid;
grid-template-columns:minmax(280px,.9fr) minmax(0,1.35fr);
gap:18px;
align-items:start}
.fde-app .d-panel {
background:#fff;
border:1px solid var(--site-line);
border-radius:var(--site-radius-sm);;
padding:19px;
min-width:0}
.fde-app .d-panel h3 {
margin:0 0 15px;
font-size:var(--site-body)}
.fde-app .d-panel h4 {
margin:18px 0 9px;
font-size:var(--site-small)}
.fde-app .d-label {
display:block;
font-size:var(--site-micro);
color:var(--site-muted);
margin:13px 0 7px}
.fde-app .d-input,.fde-app .d-text,.fde-app .d-select {
border:1px solid rgba(117, 122, 129, .36);
border-radius:var(--site-radius-control);
width:100%;
padding:10px;
background:#fff;
color:var(--site-ink);
font-size:var(--site-small)}
.fde-app .d-text {
line-height:1.65;
min-height:95px;
resize:vertical}
.fde-app .d-text.csv {
font-family:Consolas,'Microsoft YaHei',monospace;
font-size:var(--site-micro);
white-space:pre;
min-height:138px}
.fde-app .d-fieldrow {
display:grid;
grid-template-columns:1fr 1fr;
gap:10px}
.fde-app .d-actions {
display:flex;
gap:7px;
align-items:center;
flex-wrap:wrap;
margin:13px 0}
.fde-app .d-small {
font-size:var(--site-micro);
color:var(--site-muted);
line-height:1.75}
.fde-app .d-tabs {
display:flex;
flex-wrap:wrap;
gap:6px;
margin-bottom:15px}
.fde-app .d-tabs .d-btn {
padding:7px 10px;
font-size:var(--site-micro)}
.fde-app .d-tabs .active {
background:var(--site-tint-lavender);
color:var(--site-violet-deep);
border-color:var(--site-primary-border)}
.fde-app .d-metrics {
display:grid;
grid-template-columns:repeat(3,1fr);
gap:9px;
margin-bottom:16px}
.fde-app .d-metric {
padding:13px 10px;
background:var(--site-tint-gray);
border-radius:var(--site-radius-control);}
.fde-app .d-metric b {
display:block;
font-size:var(--site-h3);
color:var(--site-ink);
margin-top:6px}
.fde-app .d-metric span {
font-size:var(--site-micro);
color:var(--site-muted)}
.fde-app .d-tablewrap {
max-width:100%;
overflow:auto}
.fde-app .d-table {
border-collapse:collapse;
font-size:var(--site-micro);
width:100%;
text-align:left}
.fde-app .d-table th {
font-weight:500;
color:var(--site-muted);
background:var(--site-ice);
padding:10px;
white-space:nowrap}
.fde-app .d-table td {
border-bottom:1px solid var(--site-line);
padding:11px 10px;
vertical-align:top;
line-height:1.6}
.fde-app .d-table tr[data-row] {
cursor:pointer}
.fde-app .d-table tr[data-row]:hover {
background:var(--site-tint-lavender)}
.fde-app .d-status {
display:inline-block;
border-radius:var(--site-radius-xs);
background:var(--site-tint-mint);
color:var(--site-mint);
padding:3px 6px;
font-size:var(--site-micro);
white-space:nowrap}
.fde-app .d-status.warn {
background:var(--site-tint-yellow);
color:#8a6414}
.fde-app .d-status.bad {
background:var(--site-tint-rose);
color:#a04a3f}
.fde-app .d-evidence {
border:1px dashed rgba(117, 122, 129, .4);
background:var(--site-tint-sky);
border-radius:var(--site-radius-control);;
padding:14px;
margin-top:15px;
font-size:var(--site-micro);
line-height:1.75;
overflow-wrap:anywhere}
.fde-app .d-error {
background:var(--site-tint-rose);
border:1px solid rgba(160, 74, 63, .3);
border-radius:var(--site-radius-control);;
padding:12px;
color:#8f4034;
font-size:var(--site-micro);
margin:10px 0}
.fde-app .d-error:empty {
display:none}
.fde-app .d-steps {
display:flex;
gap:10px;
margin:12px 0 16px;
font-size:var(--site-micro);
color:var(--site-muted);
flex-wrap:wrap}
.fde-app .d-steps span {
border:1px solid var(--site-line);
border-radius:var(--site-radius);
padding:6px 10px}
.fde-app .d-results {
min-height:200px}
.fde-app .d-result-card {
padding:13px 0;
border-bottom:1px solid var(--site-line)}
.fde-app .d-result-card h4 {
margin:0 0 5px;
font-size:var(--site-small)}
.fde-app .d-result-card p {
margin:5px 0;
font-size:var(--site-micro);
line-height:1.7;
color:var(--site-muted)}
.fde-app .d-preview {
background:#f7f9fc;
white-space:pre-wrap;
border-radius:var(--site-radius-control);;
padding:16px;
font-size:var(--site-small);
line-height:1.75;
max-height:330px;
overflow:auto}
.fde-app .d-feedback {
margin-top:20px;
background:white;
border:1px solid var(--site-line);
border-radius:var(--site-radius-control);
padding:18px}
.fde-app .d-feedback summary {
font-size:var(--site-small);
font-weight:600;
cursor:pointer}
.fde-app .d-feedback .d-text {
min-height:80px}
.fde-app .d-foot {
margin-top:14px;
color:#78899a;
font-size:var(--site-micro);
line-height:1.75}
.fde-app .d-canvas {
width:100%;
height:auto;
max-height:570px;
object-fit:contain;
display:block;
background:var(--site-tint-gray);
border-radius:var(--site-radius-sm)}
.fde-app .d-huge {
font-size:var(--site-figure);
color:var(--site-violet);
font-weight: 600;
margin:16px 0}
.fde-app .d-script {
white-space:pre-wrap;
font-size:var(--site-small);
line-height:1.75;
width:100%;
min-height:360px;
border:1px solid var(--site-line);
background:var(--site-bg);
border-radius:var(--site-radius-control);;
padding:17px;
resize:vertical}
.fde-app .d-link {
border:0;
background:transparent;
color:var(--site-violet);
text-decoration:underline;
text-underline-offset:3px;
cursor:pointer;
font:inherit;
padding:0}
.fde-app .d-upload {
font-size:var(--site-micro);
max-width:100%;
color:var(--site-muted)}
.fde-app .d-help-list {
font-size:var(--site-micro);
line-height:1.75;
color:var(--site-muted);
padding-left:20px}
.fde-app .d-empty {
padding:35px 15px;
text-align:center;
color:var(--site-muted);
font-size:var(--site-small)}
.fde-app .d-check {
display:flex;
gap:8px;
font-size:var(--site-micro);
align-items:center;
margin:12px 0;
color:var(--site-muted)}
.fde-app .d-check input {
accent-color:var(--site-violet)}
.fde-app .d-feedback-grid {
display:grid;
grid-template-columns:1fr 1fr;
gap:12px}
.fde-app .goal-progress {
height:4px;
background:var(--site-tint-lavender);
border-radius:var(--site-radius-sm);
margin:14px 0 0}
@media (max-width:760px) {
  .fde-app .topline { margin-bottom: 12px; }
  .fde-app h1 { margin-bottom: 8px; font-size: 28px; line-height: 1.2; }
  .fde-app .intro { line-height: 1.55; }
  .fde-app .stats { gap: 8px; margin: 10px 0 12px; }
  .fde-app .stat strong { font-size: 23px; }
  .fde-app .searchrow input { height: 52px; }
  .fde-app .searchhint { margin: 5px 3px 6px; }
  .fde-app .topics { max-height: 64px; }
  .fde-app .toolbar { margin-top: 10px; padding: 12px 0 10px; }
}
display:block;
height:100%;
background:var(--site-violet);
border-radius:var(--site-radius-sm);
width:100%}

/* 优先展示来源、检索与案例；演示入口按需展开。 */
.fde-app .source-note {
margin:10px 0 0;
color:var(--site-muted);
font-size:var(--site-small);
line-height:1.6}
.fde-app .industry-filter { margin-top:16px; }
.fde-app .industry-filter > summary { display:none; }
.fde-app .industry-filter[open] #industries { display:grid; }
.fde-app #industries { display:grid; gap:2px; }
.fde-app .demo-shortcut { margin-top:12px; border:1px solid var(--site-line); background:var(--site-surface-soft); color:var(--site-ink); }
.fde-app .demo-shortcut[aria-expanded="true"] { border-color:var(--site-violet); color:var(--site-violet-deep); background:var(--site-tint-lavender); }
.fde-app details.goal-hub { margin:0 0 18px; padding:0; overflow:hidden; border:1px solid var(--site-line); border-radius:var(--site-radius); background:var(--site-surface-soft); scroll-margin-top:84px; }
.fde-app .goal-hub > summary { display:flex; min-height:56px; align-items:center; justify-content:space-between; gap:14px; padding:12px 18px; color:var(--site-ink); font-size:var(--site-body); font-weight: 600; cursor:pointer; }
.fde-app .goal-hub > summary::marker { color:var(--site-violet); }
.fde-app .goal-hub > summary strong { color:var(--site-violet-deep); font-size:var(--site-small); white-space:nowrap; }
.fde-app .goal-body { padding:0 18px 18px; }
.fde-app .goal-body > p { margin:0; color:var(--site-muted); font-size:var(--site-small); line-height:1.65; }
.fde-app .goal-hub .goal-links { margin-top:14px; }
.fde-app .goal-hub .goal-links button { min-height:40px; padding:8px 11px; }
.fde-app .goal-hub .goal-links button:hover { padding:8px 11px; border-color:var(--site-violet); }
.fde-app .goal-hub[open] > summary { border-bottom:1px solid var(--site-line); }

@media (min-width:761px) {
  .fde-app .industry-filter[open] #industries { display:grid; }
}
@media (max-width:760px) {
  .fde-app .sidebar .industry-filter > summary { display:flex; min-height:46px; align-items:center; justify-content:space-between; gap:12px; padding:8px 10px; border:1px solid var(--site-line); border-radius:var(--site-radius-sm); color:var(--site-ink); background:#fff; font-size:var(--site-small); font-weight: 600; cursor:pointer; }
  .fde-app .industry-current { color:var(--site-violet); }
  .fde-app .industry-filter:not([open]) #industries { display:none; }
  .fde-app .industry-filter[open] #industries { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); max-height:220px; margin-top:8px; overflow:auto; }
  .fde-app .sidebar .industry-filter .label { display:block; margin:10px 0 4px; }
  .fde-app .sidebar .demo-shortcut { display:flex; min-height:42px; align-items:center; justify-content:space-between; width:100%; margin-top:8px; padding:8px 10px; }
  .fde-app .sidebar .demo-shortcut .count { margin-left:auto; }
  .fde-app .main { padding-top:20px; }
  .fde-app .source-note { font-size:var(--site-small); }
  .fde-app .goal-hub > summary { padding:11px 13px; }
  .fde-app .goal-body { padding:0 13px 13px; }
}

@media (max-width: 900px) {
.fde-app .d-columns {
grid-template-columns:1fr}
.fde-app .d-head {
padding:11px 13px}
.fde-app .d-body {
padding:15px}
.fde-app .d-intro {
display:block}
.fde-app .d-mode {
display:inline-block;
margin:10px 0 0}
.fde-app .d-head strong {
font-size:var(--site-micro)}
.fde-app .d-head .d-btn {
padding:7px;
font-size:var(--site-micro)}
.fde-app .d-head small {
font-size:var(--site-micro)}
.fde-app .d-metrics b {
font-size:var(--site-h3)}
.fde-app .d-feedback-grid {
grid-template-columns:1fr}
.fde-app .goal-top {
align-items:start}
.fde-app .goal-top h2 {
font-size:var(--site-body)}
.fde-app .goal-number {
font-size:var(--site-h3)}
.fde-app .goal-number small {
display:block}
.fde-app .goal-hub {
padding:17px}
.fde-app .d-intro h2 {
font-size:var(--site-h3)}
.fde-app .d-head .d-case-return {
display:none}
.fde-app .d-text.csv {
min-height:125px}
}
.fde-app .d-navigation {
align-items:center}
.fde-app .d-navigation label {
flex-shrink:0;
white-space:nowrap}
.fde-app .d-navigation .d-select {
min-width:0}
/* ---- 站点化覆盖 ---- */
.fde-app  {
color: var(--site-ink);
background: var(--site-bg);
line-height: 1.55;
}
.fde-app .sidebar .brand  {
font-size:var(--site-h3);
font-weight: 600;
letter-spacing: -.03em;
}
.fde-app .sidebar .brand .logo  {
width: 26px;
height: 26px;
border-radius: var(--site-radius-sm);
background: var(--site-primary);
font-size:var(--site-body);
}
.fde-app .sidebar .eyebrow  {
margin: 8px 0 28px 36px;
}
.fde-app .industry  {
border-radius: var(--site-radius-sm);
transition: background var(--site-fast) var(--site-ease), color var(--site-fast) var(--site-ease), box-shadow var(--site-fast) var(--site-ease);
}
.fde-app .industry:hover  {
background: var(--site-tint-gray);
}
.fde-app .industry.active  {
background: var(--site-ink);
color: #fff;
font-weight: 600;
box-shadow: none;
}
.fde-app .industry.active .count  {
background: rgba(255, 255, 255, .2);
color: #fff;
}
.fde-app h1  {
font-weight: 600;
letter-spacing: -.035em;
}
.fde-app .card  {
border-radius: var(--site-radius);
box-shadow: var(--site-shadow-soft);
transition: box-shadow var(--site-medium) var(--site-ease), border-color var(--site-medium) var(--site-ease), transform var(--site-medium) var(--site-ease);
}
.fde-app .card:hover  {
border-color: rgba(117, 122, 129, .5);
box-shadow: var(--site-shadow-float);
transform: translateY(-2px);
}
.fde-app .card h3  {
font-weight: 600;
letter-spacing: -.02em;
}
.fde-app .searchrow  {
border-radius: var(--site-radius);
box-shadow: var(--site-shadow-soft);
}
.fde-app .searchrow:focus-within  {
border-color: var(--site-primary);
box-shadow: 0 0 0 3px var(--site-primary-tint);
}
.fde-app .suggest  {
border-radius: var(--site-radius);
box-shadow: var(--site-shadow-float);
}
.fde-app .chip  {
border-radius:var(--site-radius-control);
background: var(--site-chrome);
border-color: rgba(117, 122, 129, .28);
color: #4a4c50;
transition: border-color var(--site-fast) var(--site-ease), color var(--site-fast) var(--site-ease), background var(--site-fast) var(--site-ease);
}
.fde-app .chip:hover  {
border-color: var(--site-primary-border);
color: var(--site-violet-deep);
}
.fde-app .chip.active  {
background: var(--site-primary);
color: #fff;
border-color: var(--site-primary);
}
.fde-app .toolbar select  {
border-radius:var(--site-radius-control);
background: var(--site-chrome);
}
.fde-app .filter  {
border-radius:var(--site-radius-control);
background: var(--site-tint-lavender);
color: var(--site-violet-deep);
}
.fde-app .read  {
color: var(--site-violet);
font-weight: 600;
}
.fde-app .titlebtn:hover  {
color: var(--site-violet);
}
.fde-app .sector  {
background: var(--site-tint-lavender);
color: var(--site-violet-deep);
}
.fde-app .modal, .fde-app .demo-modal  {
border-radius: var(--site-radius);
box-shadow: var(--site-shadow-float);
}
.fde-app .modalhead button:hover, .fde-app .d-btn:hover  {
background: var(--site-tint-gray);
}
.fde-app .readeraside a:hover  {
background: var(--site-tint-lavender);
}
.fde-app .article .lead  {
background: var(--site-tint-lavender);
border-radius: var(--site-radius-sm);
}
.fde-app .article .lead b  {
color: var(--site-violet-deep);
}
.fde-app .article summary  {
background: var(--site-tint-sky);
color: var(--site-violet-deep);
}
.fde-app .jumphit  {
background: var(--site-primary);
border-radius:var(--site-radius-control);
}
.fde-app .d-btn.primary  {
background: var(--site-primary);
border-color: var(--site-primary);
}
.fde-app .d-navigation .selected  {
background: var(--site-ink);
}
.fde-app .goal-hub  {
background: var(--site-chrome);
border-color: rgba(117, 122, 129, .3);
border-radius: var(--site-radius);
}
.fde-app .goal-number  {
color: var(--site-violet-deep);
}
.fde-app .goal-links button:hover  {
border-color: var(--site-primary-border);
color: var(--site-violet-deep);
}
.fde-app .d-mode  {
background: var(--site-tint-lavender);
color: var(--site-violet-deep);
}
.fde-app .d-tabs .active  {
background: var(--site-tint-lavender);
color: var(--site-violet-deep);
border-color: var(--site-primary-border);
}
.fde-app .d-table tr[data-row]:hover  {
background: var(--site-tint-lavender);
}
.fde-app .d-metric, .fde-app .d-preview  {
background: var(--site-tint-gray);
border-radius: var(--site-radius-sm);
}
.fde-app .d-huge  {
color: var(--site-violet-deep);
}
.fde-app .d-link  {
color: var(--site-violet);
}
.fde-app .goal-progress span  {
background: var(--site-primary);
}
.fde-app .demo-launch  {
background: var(--site-tint-mint);
border-color: var(--site-primary-border);
color: var(--site-mint);
border-radius: var(--site-button-radius);
}
.fde-app .main  {
max-width: 1440px;
}
.fde-app .article p,.fde-app .card p,.fde-app .sidebar p {
text-wrap:pretty;
line-break:strict}
.fde-app h1,.fde-app h2,.fde-app h3,.fde-app .goal-number,.fde-app .stat strong {
text-wrap:balance;
font-variant-numeric:tabular-nums}
.fde-app .industry,.fde-app .stat strong,.fde-app .goal-number,.fde-app .d-metric b {
font-variant-numeric:tabular-nums}

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

@media (max-width:760px) {
  .fde-app .main { padding-top: 12px; }
  .fde-app .topline { margin-bottom: 8px; }
  .fde-app .stats { margin: 8px 0 10px; }
  .fde-app .searchrow input { height: 48px; }
  .fde-app .toolbar { margin-top: 8px; padding: 10px 0 8px; }
}
