*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#f1f5f9;--color-surface:#fff;--color-surface-2:#f8fafc;--color-border:#e2e8f0;--color-text:#0f172a;--color-text-muted:#64748b;--color-primary:#4f46e5;--color-primary-dark:#3730a3;--color-primary-bg:#eef2ff;--color-success:#10b981;--color-warning:#f59e0b;--color-danger:#ef4444;--color-literal:#3b82f6;--color-lifestyle:#10b981;--color-atmospheric:#8b5cf6;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #00000014}html{color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.6}button{cursor:pointer;font-family:inherit}textarea{font-family:inherit}a{color:inherit;text-decoration:none}.app{flex-direction:column;min-height:100vh;display:flex}.main{flex-direction:column;flex:1;gap:24px;width:100%;max-width:860px;margin:0 auto;padding:32px 20px 64px;display:flex}.header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:0 20px}.header-inner{align-items:center;gap:20px;max-width:860px;margin:0 auto;padding:20px 0;display:flex}.logo{flex-shrink:0;align-items:center;gap:8px;display:flex}.logo-mark{color:var(--color-primary);font-size:18px}.logo-name{color:var(--color-text);letter-spacing:-.3px;font-size:17px;font-weight:700}.tagline{color:var(--color-text-muted);border-left:1px solid var(--color-border);padding-left:20px;font-size:14px}.input-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:24px}.input-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px;font-size:13px;font-weight:600;display:block}.article-textarea{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;color:var(--color-text);background:var(--color-surface-2);resize:vertical;outline:none;padding:14px 16px;font-size:15px;line-height:1.7;transition:border-color .15s}.article-textarea:focus{border-color:var(--color-primary);background:var(--color-surface)}.article-textarea:disabled{opacity:.6;cursor:not-allowed}.input-footer{justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.char-count{color:var(--color-text-muted);font-size:13px}.generate-btn{background:var(--color-primary);color:#fff;border-radius:var(--radius-md);border:none;flex-shrink:0;align-items:center;gap:8px;padding:11px 22px;font-size:15px;font-weight:600;transition:background .15s,transform .1s;display:inline-flex}.generate-btn:hover:not(:disabled){background:var(--color-primary-dark)}.generate-btn:active:not(:disabled){transform:scale(.98)}.generate-btn:disabled{opacity:.5;cursor:not-allowed}.btn-icon{opacity:.85;font-size:13px}.btn-spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:15px;height:15px;animation:.7s linear infinite spin}.loading-state{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;align-items:center;gap:12px;padding:48px 24px;display:flex}.loading-ring{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:44px;height:44px;animation:.9s linear infinite spin}.loading-text{color:var(--color-text);font-size:17px;font-weight:600}.loading-sub{color:var(--color-text-muted);font-size:14px}.loading-steps{gap:6px;margin-top:4px;display:flex}.loading-step-dot{background:var(--color-border);border-radius:50%;width:6px;height:6px;transition:background .4s}.loading-step-dot.active{background:var(--color-primary)}@keyframes spin{to{transform:rotate(360deg)}}.error-card{border-radius:var(--radius-lg);background:#fff5f5;border:1px solid #fecaca;align-items:flex-start;gap:14px;padding:20px 24px;display:flex}.error-icon{flex-shrink:0;margin-top:2px;font-size:20px}.error-title{color:#dc2626;margin-bottom:4px;font-weight:600}.error-detail{color:#991b1b;font-size:14px}.results{flex-direction:column;gap:20px;display:flex}.image-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.image-wrapper{aspect-ratio:16/7;background:var(--color-surface-2);width:100%;overflow:hidden}.generated-image{object-fit:cover;width:100%;height:100%;display:block}.image-footer{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.image-inferred-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:2px;font-size:11px;font-weight:600}.image-title{color:var(--color-text);font-size:17px;font-weight:700;line-height:1.3}.download-btn{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:600;transition:background .15s;display:inline-flex}.download-btn:hover{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary)}.brief-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.brief-toggle{text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:18px 22px;transition:background .15s;display:flex}.brief-toggle:hover{background:var(--color-surface-2)}.brief-toggle-left{flex-direction:column;gap:2px;display:flex}.brief-panel-label{color:var(--color-text);font-size:14px;font-weight:700}.brief-panel-hint{color:var(--color-text-muted);font-size:13px}.brief-chevron{color:var(--color-text-muted);flex-shrink:0;font-size:22px;line-height:1;transition:transform .2s}.brief-chevron.open{transform:rotate(90deg)}.brief-body{border-top:1px solid var(--color-border);flex-direction:column;gap:18px;padding:0 22px 22px;display:flex}.brief-summary{color:var(--color-text-muted);padding-top:18px;font-size:14px;line-height:1.7}.brief-meta-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.brief-meta-item{flex-direction:column;gap:4px;display:flex}.brief-meta-key{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);font-size:11px;font-weight:600}.brief-meta-val{color:var(--color-text);font-size:14px;font-weight:500}.brief-tags-section{flex-direction:column;gap:10px;display:flex}.brief-tags-row{flex-wrap:wrap;align-items:flex-start;gap:10px;display:flex}.brief-tags-label{color:var(--color-text-muted);min-width:100px;padding-top:3px;font-size:12px;font-weight:600}.brief-needs{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.needs-badges{flex-wrap:wrap;gap:8px;display:flex}.tag-list{flex-wrap:wrap;gap:6px;display:flex}.tag{border-radius:20px;padding:3px 10px;font-size:12px;font-weight:500;line-height:1.5}.tag-green{color:#065f46;background:#d1fae5}.tag-red{color:#991b1b;background:#fee2e2}.tag-gray{color:#475569;border:1px solid var(--color-border);background:#f1f5f9}.intent-badge{background:var(--color-primary-bg);color:var(--color-primary);text-transform:capitalize;border-radius:20px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block}.strategy-badge{text-transform:capitalize;border-radius:20px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block}.strategy-literal{color:#1e40af;background:#dbeafe}.strategy-lifestyle{color:#065f46;background:#d1fae5}.strategy-metaphorical-light{color:#92400e;background:#fef3c7}.strategy-environmental{color:#374151;background:#f3f4f6}.need-badge{border-radius:20px;padding:3px 10px;font-size:12px;font-weight:500}.need-yes{color:#065f46;background:#d1fae5}.need-no{color:#94a3b8;background:#f1f5f9}.concepts-section{flex-direction:column;gap:14px;display:flex}.concepts-heading{color:var(--color-text);font-size:16px;font-weight:700}.concepts-subheading{color:var(--color-text-muted);margin-top:-8px;font-size:13px}.concepts-grid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}@media (width<=700px){.concepts-grid{grid-template-columns:1fr}}.concept-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:12px;padding:18px;transition:border-color .15s,box-shadow .15s;display:flex}.concept-selectable{cursor:pointer}.concept-selectable:hover{box-shadow:var(--shadow-md);border-color:#a5b4fc}.concept-selected{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg), var(--shadow-sm)}.concept-used{border-color:var(--color-success);box-shadow:0 0 0 3px #d1fae5, var(--shadow-sm)}.concept-card-header{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.concept-type-badge{text-transform:uppercase;letter-spacing:.05em;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700}.type-literal{color:#1e40af;background:#dbeafe}.type-lifestyle{color:#065f46;background:#d1fae5}.type-atmospheric{color:#5b21b6;background:#ede9fe}.best-match-badge{color:#92400e;background:#fef3c7;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700}.used-badge{color:#065f46;background:#d1fae5;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700}.select-indicator{color:var(--color-text-muted);text-align:center;border-top:1px solid var(--color-border);margin-top:4px;padding-top:4px;font-size:12px;font-weight:500}.select-indicator.selected{color:var(--color-primary);font-weight:700}.concept-total-score{margin-left:auto;font-size:20px;font-weight:800;line-height:1}.score-high{color:var(--color-success)}.score-mid{color:var(--color-warning)}.score-low{color:var(--color-danger)}.concept-title{color:var(--color-text);font-size:14px;font-weight:700;line-height:1.3}.concept-scene{color:var(--color-text-muted);font-size:13px;line-height:1.6}.concept-meta-tags{flex-wrap:wrap;gap:8px;display:flex}.meta-tag{color:var(--color-text-muted);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:2px 8px;font-size:12px}.concept-why{background:var(--color-surface-2);border-radius:var(--radius-sm);padding:10px 12px}.concept-why-label{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);margin-bottom:4px;font-size:10px;font-weight:700}.concept-why-text{color:var(--color-text);font-size:12px;line-height:1.5}.concept-risks{flex-direction:column;gap:4px;display:flex}.risk-tag{color:#92400e;border-radius:var(--radius-sm);background:#fef3c7;padding:3px 8px;font-size:11px;line-height:1.5}.score-bars{flex-direction:column;gap:6px;margin-top:4px;display:flex}.score-bar{align-items:center;gap:8px;display:flex}.score-bar-label{color:var(--color-text-muted);flex-shrink:0;width:66px;font-size:11px}.score-bar-track{background:var(--color-border);border-radius:2px;flex:1;height:4px;overflow:hidden}.score-bar-fill{background:var(--color-primary);border-radius:2px;height:100%;transition:width .6s}.score-bar-value{color:var(--color-text-muted);text-align:right;flex-shrink:0;width:22px;font-size:11px;font-weight:600}.generate-image-bar{background:var(--color-primary-bg);border-radius:var(--radius-lg);border:1px solid #c7d2fe;justify-content:space-between;align-items:center;gap:16px;margin-top:4px;padding:16px 20px;display:flex}.generate-image-info{flex-direction:column;gap:2px;min-width:0;display:flex}.generate-image-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-primary);font-size:11px;font-weight:600}.generate-image-title{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:600;overflow:hidden}.image-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.secondary-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);white-space:nowrap;align-items:center;gap:6px;padding:9px 16px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.secondary-btn:hover{background:var(--color-surface-2);border-color:var(--color-text-muted)}.concepts-section-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.app-footer{text-align:center;color:var(--color-text-muted);border-top:1px solid var(--color-border);background:var(--color-surface);padding:20px;font-size:13px}
