.aeo-page{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);max-width:1280px;margin:auto}
.aeo-page h2{font-size:var(--font-size-xl);margin:0 0 var(--space-1-5)}
.aeo-intro p,.aeo-history>p{margin:0;line-height:1.6}
.aeo-form,.aeo-history,.aeo-models-panel{background:var(--color-background-card);border:1px solid var(--color-border);border-radius:var(--radius-container);padding:var(--space-5)}
.aeo-form label{display:block;font-weight:var(--font-weight-semibold);margin-bottom:var(--space-2)}
.aeo-input-row{display:flex;gap:var(--space-3)}
.aeo-input-row input{flex:1;min-width:0;min-height:42px}
.aeo-input-row button{white-space:nowrap;min-height:42px}
.aeo-hint{font-size:var(--font-size-base);margin-bottom:0}
.aeo-language{margin-top:var(--space-3-5)}
.aeo-language select{min-height:42px;min-width:180px;max-width:100%;font:inherit;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-element);background:var(--color-background-card);color:inherit}
.aeo-jobs-panel{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);min-width:0}
.aeo-jobs-panel input,.aeo-jobs-panel textarea,.aeo-jobs-panel select{width:100%;min-height:42px}
.aeo-jobs-panel textarea{resize:vertical}
.aeo-job-field{margin-top:var(--space-3-5)}
.aeo-job-language-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4);margin:var(--space-3-5) 0}
@media(max-width:600px){.aeo-job-language-row{grid-template-columns:minmax(0,1fr)}}
.aeo-message{margin:0;line-height:1.6;color:var(--color-text-secondary)}
.aeo-message:empty{display:none}
.aeo-history-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-2)}
.aeo-history-head h2{margin:0}
.aeo-table-wrap{container-type:inline-size;margin-top:var(--space-4)}
.aeo-table{width:100%;table-layout:fixed;border-collapse:collapse}
.aeo-table th:nth-child(1){width:13%}.aeo-table th:nth-child(2){width:17%}.aeo-table th:nth-child(3){width:23%}.aeo-table th:nth-child(4){width:9%}.aeo-table th:nth-child(5){width:17%}.aeo-table th:nth-child(6){width:21%}
.aeo-table th,.aeo-table td{text-align:left;padding:var(--space-3) var(--space-2-5);border-bottom:1px solid var(--color-border);vertical-align:top}
.aeo-table th{font-size:var(--font-size-base);color:var(--color-text-tertiary);background:var(--color-background-muted);white-space:nowrap}
.aeo-table td{font-size:var(--font-size-base);line-height:1.55;white-space:normal;overflow-wrap:anywhere}
.aeo-models-refresh-btn{white-space:nowrap;flex-shrink:0}
.aeo-table small{display:block;font-size:var(--font-size-sm);margin-top:var(--space-1);overflow-wrap:anywhere}
.aeo-site{overflow-wrap:anywhere}
.aeo-status{display:inline-block;border-radius:var(--radius-page);padding:3px var(--space-2-5);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);background:var(--color-accent-muted);color:var(--color-text-cyan);white-space:nowrap}
.aeo-status-completed{background:var(--color-background-gray);color:var(--color-text-green)}
.aeo-status-failed{background:var(--color-background-red);color:var(--color-text-orange)}
.aeo-status-partial{background:var(--color-background-orange);color:#866012}
.aeo-table progress{display:block;width:100px;height:5px;margin-top:var(--space-2);accent-color:var(--color-text-cyan)}
.aeo-stages{list-style:none;margin:var(--space-2) 0 0;padding:0;font-size:var(--font-size-sm);line-height:1.7;color:var(--color-text-disabled)}
.aeo-stages li.done{color:var(--color-text-green)}
.aeo-stages li.done::before{content:'✓ '}
.aeo-stages li.active{color:var(--color-text-cyan);font-weight:var(--font-weight-semibold)}
.aeo-error{color:var(--color-text-orange)}
.aeo-download{display:inline-block;white-space:nowrap;font-weight:var(--font-weight-semibold);padding:var(--space-1) 0;color:var(--color-text-cyan)}
.aeo-actions{display:flex;flex-direction:column;gap:var(--space-1);align-items:flex-start}
.aeo-pager{display:flex;justify-content:center;align-items:center;gap:var(--space-3);margin-top:var(--space-3-5)}
.aeo-delete{color:var(--color-text-orange);white-space:nowrap}

/* 緊湊型模型就緒度監控 (Compact Model Readiness Monitor) */
.aeo-models-panel{padding:var(--space-3-5) 18px;margin-bottom:0}
.aeo-models-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2)}
.aeo-models-header h2{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);margin:0;color:var(--color-text-strong)}
.aeo-models-header p{margin:var(--space-0-5) 0 0;font-size:var(--font-size-sm);color:var(--color-text-tertiary)}
.aeo-models-refresh-btn{font-size:var(--font-size-sm);padding:var(--space-1) var(--space-2-5);height:28px;min-height:28px}
.aeo-models-summary-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2-5);padding:var(--space-1-5) var(--space-2-5);background:var(--color-background-muted);border:1px solid var(--color-border-subtle);border-radius:var(--radius-inner)}
.aeo-models-stats{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}
.stat-badge{display:inline-flex;align-items:center;gap:5px;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);padding:var(--space-0-5) var(--space-2);border-radius:var(--radius-container)}
.stat-normal{background:var(--color-background-green);color:var(--color-text-green)}
.stat-warning{background:var(--color-background-orange);color:var(--color-text-orange)}
.stat-error{background:var(--color-background-red);color:var(--color-text-red)}
.stat-openrouter{background:var(--color-background-blue);color:var(--color-text-blue);border:1px solid var(--color-border)}
.lamp-bullet{display:inline-block;width:7px;height:7px;border-radius:50%}
.lamp-normal{background:#10b981;box-shadow:0 0 4px rgba(16,185,129,0.7)}
.lamp-warning{background:var(--color-icon-orange);box-shadow:0 0 4px rgba(245,158,11,0.7)}
.lamp-error{background:#ef4444;box-shadow:0 0 4px rgba(239,68,68,0.7)}
.lamp-openrouter{background:#3b82f6;box-shadow:0 0 4px rgba(59,130,246,0.7)}
.aeo-models-filters{display:flex;gap:var(--space-1);flex-wrap:wrap}
.filter-tab{padding:var(--space-0-5) var(--space-2);border-radius:var(--radius-inner);border:1px solid var(--color-border-emphasized);background:var(--color-background-card);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text-gray);transition:all .15s}
.filter-tab:hover{border-color:var(--color-text-disabled)}
.filter-tab.active{background:var(--color-background-inverse);color:var(--color-on-accent);border-color:var(--color-text-primary)}

/* 兩層式模型就緒度卡片 (Two-layer expandable cards) */
.aeo-models-compact-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:var(--space-1-5) var(--space-2)}
.model-expandable-card{background:var(--color-background-card);border:1px solid var(--color-border);border-radius:var(--radius-inner);transition:box-shadow .15s,border-color .15s;overflow:hidden}
.model-expandable-card:hover{border-color:var(--color-border-emphasized);box-shadow:0 2px 6px rgba(15,23,42,0.05)}
.model-expandable-card.is-expanded{border-color:var(--color-text-disabled);box-shadow:0 4px 10px rgba(15,23,42,0.08)}
.model-row-normal{border-left:3.5px solid #10b981}
.model-row-warning{border-left:3.5px solid var(--color-icon-orange);background:var(--color-background-card)}
.model-row-error{border-left:3.5px solid #ef4444;background:var(--color-background-card)}

/* 第一層：緊湊主列 (Logo、名稱、燈號、速度、比例) */
.model-layer-primary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-1-5) var(--space-2-5);min-height:36px;cursor:pointer;user-select:none}
.model-layer-primary:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}
.m-col-brand{display:flex;align-items:center;gap:var(--space-1-5);min-width:105px;flex-shrink:0}
.m-icon{width:16px;height:16px;flex-shrink:0;object-fit:contain}
.m-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-strong);white-space:nowrap}
.m-flag{font-size:var(--font-size-sm);opacity:0.85}

.m-col-status{display:flex;align-items:center;min-width:82px;flex-shrink:0}
.m-lamp-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:1px var(--space-1-5);border-radius:var(--radius-element);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);white-space:nowrap}
.lamp-badge-normal{background:var(--color-background-green);color:var(--color-success)}
.lamp-badge-warning{background:var(--color-background-orange);color:var(--color-warning)}
.lamp-badge-error{background:var(--color-background-red);color:var(--color-error)}
.m-lamp-dot{display:inline-block;width:6px;height:6px;border-radius:50%}

.m-col-speed{display:flex;align-items:center;min-width:55px;flex-shrink:0}
.m-latency{font-size:var(--font-size-xs);color:var(--color-text-tertiary);font-weight:var(--font-weight-medium);white-space:nowrap}

.m-col-ratio{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-0-5);min-width:70px;flex-shrink:0}
.m-ratio-header{display:flex;align-items:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-gray)}
.m-bar-track{width:56px;height:3px;background:var(--color-background-blue-strong);border-radius:var(--radius-inner);overflow:hidden}
.m-bar-fill{height:100%;border-radius:var(--radius-inner);transition:width .3s}
.bar-normal{background:#10b981}
.bar-warning{background:var(--color-icon-orange)}
.bar-error{background:#ef4444}

.m-col-toggle{display:flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0;color:var(--color-text-disabled);font-size:var(--font-size-xs);transition:transform .15s}
.is-expanded .m-col-toggle{color:var(--color-text-primary)}

/* 第二層：點開後展開的詳情面 (版本、分工、接口、備註) */
.model-layer-detail{padding:var(--space-2) var(--space-3) var(--space-2-5);background:var(--color-background-muted);border-top:1px dashed var(--color-border)}
.m-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-1-5) var(--space-3)}
.m-detail-item{display:flex;flex-direction:column;gap:var(--space-0-5)}
.m-detail-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-tertiary)}
.m-detail-code{font-size:var(--font-size-sm);color:var(--color-text-primary);background:var(--color-accent-muted);padding:1px 5px;border-radius:var(--radius-inner);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;word-break:break-all}
.m-detail-value{font-size:var(--font-size-sm);color:var(--color-text-gray);line-height:1.4}
.m-role-pill{color:var(--color-text-green);font-weight:var(--font-weight-medium)}
.m-iface-pill{color:var(--color-text-blue);font-weight:var(--font-weight-medium)}
.m-note-pill{color:var(--color-text-secondary)}
.m-detail-item.m-detail-full{grid-column:1/-1}
.m-sources-flow{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1-5);margin-top:var(--space-0-5)}
.m-source-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-0-5) 7px;border-radius:var(--radius-inner);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold)}
.m-source-badge.is-primary{background:var(--color-background-blue);color:var(--color-icon-blue);border:1px solid var(--color-border-blue)}
.m-source-badge.is-backup{background:var(--color-background-gray);color:var(--color-text-secondary);border:1px solid var(--color-border)}
.source-failover-pill{display:inline-flex;align-items:center;padding:1px var(--space-1-5);border-radius:var(--radius-element);font-size:var(--font-size-xs);color:#d97706;background:var(--color-background-orange);border:1px dashed #fcd34d;font-weight:var(--font-weight-semibold);white-space:nowrap}
.source-dot{width:5px;height:5px;border-radius:50%;background:currentColor}
.source-arrow{color:var(--color-text-disabled);font-size:var(--font-size-sm);user-select:none}

@media(max-width:720px){
 .aeo-models-compact-list{grid-template-columns:minmax(0,1fr)}
 .model-layer-primary{flex-wrap:wrap;gap:var(--space-1) var(--space-2);padding:var(--space-2)}
 .m-detail-grid{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:600px){.aeo-form,.aeo-history{padding:var(--space-4)}.aeo-input-row{flex-direction:column}.aeo-input-row button{width:100%}.aeo-page{gap:var(--space-4)}.aeo-history-head{align-items:flex-start}}
.aeo-outputs{border:1px solid var(--line,var(--color-border));border-radius:var(--radius-element);padding:var(--space-2-5) var(--space-3-5);margin:var(--space-3) 0 0;display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5)}
.aeo-outputs legend{font-weight:var(--font-weight-semibold);padding:0 var(--space-1)}
.aeo-outputs label{display:inline-flex;gap:var(--space-1-5);align-items:center}
.aeo-outputs small{flex-basis:100%}
@container (max-width:720px){
 .aeo-table,.aeo-table tbody,.aeo-table tr,.aeo-table td{display:block;width:100%}
 .aeo-table thead{display:none}
 .aeo-table tr{padding:var(--space-2-5) 0;border-bottom:1px solid var(--color-border)}
 .aeo-table td{position:relative;padding:5px 0 5px 84px;border-bottom:0}
 .aeo-table td::before{content:attr(data-label);position:absolute;left:0;top:7px;font-size:var(--font-size-sm);color:var(--color-text-tertiary)}
}

.aeo-seeds{margin:var(--space-3-5) 0 0}.aeo-seeds label{display:block;font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1-5)}.aeo-seeds textarea{width:100%;box-sizing:border-box;padding:var(--space-2) var(--space-2-5);border:1px solid var(--line,var(--color-border));border-radius:var(--radius-element);font:inherit;resize:vertical}.aeo-seeds small{display:block;margin-top:var(--space-1)}
.aeo-model-pick{border:1px solid var(--line,var(--color-border));border-radius:var(--radius-element);padding:var(--space-2-5) var(--space-3-5);margin:var(--space-3) 0 0}.aeo-model-pick summary{cursor:pointer;font-weight:var(--font-weight-semibold)}.aeo-model-options{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin:var(--space-2-5) 0 var(--space-1-5)}.aeo-model-options label{display:inline-flex;gap:var(--space-1-5);align-items:center}.aeo-model-pick small{display:block}
