:root{--bg:#f7f0e6;--bg-glow:#ffe6cf;--surface:#fffdf9;--ink:#2c2621;--muted:#8c8177;--line:rgba(44,38,33,.1);--accent:#ef6f4c;--accent-ink:#b8492b;--accent-soft:#fbe4d8;--shadow:30px 40px 80px -40px rgba(120,70,40,.35)}@media (prefers-color-scheme:dark){:root{--bg:#211b17;--bg-glow:#3a2b20;--surface:#2b231d;--ink:#f3ece2;--muted:#b0a498;--line:hsla(0,0%,100%,.1);--accent:#f5825f;--accent-ink:#ffb795;--accent-soft:#3d2c23;--shadow:30px 40px 90px -45px rgba(0,0,0,.7)}}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{min-height:100vh;background:radial-gradient(900px 620px at 72% -8%,var(--bg-glow) 0,transparent 62%),radial-gradient(700px 520px at 12% 108%,var(--accent-soft) 0,transparent 60%),var(--bg);color:var(--ink);font-family:ui-rounded,SF Pro Rounded,-apple-system,BlinkMacSystemFont,Segoe UI,Rubik,Assistant,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.wrap{min-height:100vh;max-width:520px;margin:0 auto;padding:28px 22px;flex-direction:column}.stage,.wrap{display:flex;align-items:center}.stage{flex:1 1;width:100%;justify-content:center;gap:26px}.hero,.stage{flex-direction:column}.hero{display:flex;align-items:center;text-align:center;gap:14px}.blob{width:clamp(150px,42vw,190px);aspect-ratio:1;border-radius:38% 62% 63% 37%/41% 44% 56% 59%;background:radial-gradient(58% 52% at 33% 28%,#ffe4b8 0,transparent 60%),linear-gradient(145deg,#ffcf99 4%,#ff8a5c 52%,#ef624a);box-shadow:0 26px 60px -20px rgba(239,111,76,.55),inset 0 -14px 34px rgba(184,73,43,.28),inset 0 12px 26px hsla(0,0%,100%,.4);animation:float 7s ease-in-out infinite,morph 14s ease-in-out infinite}.blob.speaking{animation:float 2.1s ease-in-out infinite,morph 5s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0) scale(1) rotate(0deg)}50%{transform:translateY(-9px) scale(1.035) rotate(-2deg)}}@keyframes morph{0%,to{border-radius:38% 62% 63% 37%/41% 44% 56% 59%}33%{border-radius:62% 38% 44% 56%/58% 56% 44% 42%}66%{border-radius:46% 54% 62% 38%/38% 60% 40% 62%}}@media (prefers-reduced-motion:reduce){.blob,.blob.speaking{animation:none}}h1{font-size:clamp(30px,8vw,40px);font-weight:700;letter-spacing:-.01em}.sub,h1{margin:0}.sub{max-width:22ch;color:var(--muted);font-size:17px;line-height:1.5}.controls{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%}.cta{font:inherit;font-weight:700;font-size:18px;border:none;cursor:pointer;color:#fff;background:var(--accent);padding:15px 40px;border-radius:999px;box-shadow:0 14px 26px -10px rgba(239,111,76,.7);transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}.cta:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 20px 34px -12px rgba(239,111,76,.75)}.cta:active:not(:disabled){transform:translateY(0)}.cta:disabled{opacity:.6;cursor:default}.cta.ghost{color:var(--accent-ink);background:transparent;box-shadow:none;border:1.5px solid var(--line)}.cta.ghost:hover{transform:none;background:var(--accent-soft);box-shadow:none}.status{display:inline-flex;align-items:center;gap:9px;margin:0;color:var(--muted);font-size:15px}.dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.dot.connected{background:#4fa07a;box-shadow:0 0 0 0 rgba(79,160,122,.5);animation:ring 2s ease-out infinite}.dot.connecting{background:var(--accent);animation:blink .9s infinite}.dot.error{background:#d9534f}@keyframes ring{0%{box-shadow:0 0 0 0 rgba(79,160,122,.45)}to{box-shadow:0 0 0 10px rgba(79,160,122,0)}}@keyframes blink{50%{opacity:.35}}.progress{display:flex;flex-direction:column;align-items:center;gap:6px;width:240px}.progress-bar{width:100%;height:6px;border-radius:999px;background:var(--line);overflow:hidden}.progress-bar span{display:block;height:100%;border-radius:999px;background:var(--accent);transition:width .4s cubic-bezier(.2,.8,.2,1)}.progress-text{font-size:13px;color:var(--muted)}.summary-card{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:var(--shadow);animation:rise .35s cubic-bezier(.2,.8,.2,1)}.summary-card h2{margin:0 0 4px;font-size:22px}.summary-note{margin:0 0 18px;color:var(--muted);font-size:14px;line-height:1.5}.summary-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.summary-list li{display:flex;gap:12px;align-items:flex-start}.summary-item{display:flex;flex-direction:column;gap:3px}.summary-item strong{font-weight:700}.summary-text{color:var(--muted);font-size:14px;line-height:1.45}.badge{flex-shrink:0;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap;margin-top:1px}.badge-sufficient{background:rgba(79,160,122,.16);color:#3c7f5f}.badge-partial{background:rgba(233,160,60,.18);color:#b3781a}.badge-unknown{background:hsla(29,8%,51%,.16);color:var(--muted)}@media (prefers-color-scheme:dark){.badge-sufficient{color:#7fd0a6}.badge-partial{color:#f0bd6a}}.creatives-card,.gaps-card,.strategy-card{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:var(--shadow);animation:rise .35s cubic-bezier(.2,.8,.2,1)}.creatives-card h2,.gaps-card h2,.strategy-card h2{margin:0 0 4px;font-size:22px}.gaps-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:10px;gap:10px}.gaps-list li{display:flex;align-items:center;gap:10px;font-size:15px}.strategy-summary{margin:14px 0 20px;padding:16px 18px;border-radius:16px;background:var(--accent-soft);-webkit-border-start:3px solid var(--accent);border-inline-start:3px solid var(--accent);font-size:17px;line-height:1.6}.strategy-grid{margin:0;display:grid;grid-template-columns:1fr;grid-gap:16px 28px;gap:16px 28px}@media (min-width:560px){.strategy-grid{grid-template-columns:1fr 1fr}}.strategy-grid dt{font-size:12px;letter-spacing:.04em;color:var(--accent-ink);margin-bottom:4px}.strategy-grid dd{margin:0;font-size:14px;line-height:1.55;color:var(--ink)}.creatives-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));grid-gap:18px;gap:18px;margin-top:18px}@media (min-width:860px){.creatives-card,.gaps-card,.strategy-card,.summary-card{width:min(880px,calc(100vw - 44px))}.gaps-list{gap:10px 28px}.gaps-list,.summary-list{grid-template-columns:1fr 1fr}.summary-list{display:grid;grid-gap:14px 28px;gap:14px 28px}}.creative{margin:0;display:flex;flex-direction:column;gap:10px}.creative img{width:100%;height:auto;display:block;border-radius:16px;border:1px solid var(--line);background:var(--accent-soft)}.creative figcaption{display:flex;flex-direction:column;gap:4px}.creative figcaption strong{font-size:15px;line-height:1.4}.creative-angle{font-size:13px;color:var(--muted);line-height:1.45}.creative a{display:block;border-radius:16px}.creative-meta{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.creative-ratio{font-size:11px;color:var(--accent-ink);letter-spacing:.06em}.creative-save{font-size:12px;font-weight:700;color:var(--accent-ink);text-decoration:none;border-bottom:1px solid var(--line)}.creative-save:hover{border-bottom-color:var(--accent)}.creative.selected img{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent)}.creative-pick{margin-top:4px;padding:8px 14px;border-radius:999px;border:1.5px solid var(--line);background:transparent;color:var(--accent-ink);font:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s ease,border-color .15s ease}.creative-pick:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent)}.creative-pick.picked{background:var(--accent);border-color:var(--accent);color:#fff}.creative-pick:disabled{cursor:default;opacity:.45}.creative-pick.picked:disabled{opacity:1}.campaign-box{margin-top:22px;padding-top:20px;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}.campaign-box .summary-note{max-width:52ch}.campaign-done h3{margin:0 0 6px;font-size:18px}.campaign-done{display:flex;flex-direction:column;align-items:center;gap:14px}.campaign-ids{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:10px 24px;gap:10px 24px;width:100%}.campaign-ids dt{font-size:11px;letter-spacing:.04em;color:var(--accent-ink);margin-bottom:2px}.campaign-ids dd{margin:0;font-size:12px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;word-break:break-all}.photo-previews{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 4px}.photo-previews img{width:72px;height:72px;object-fit:cover;border-radius:14px;border:1px solid var(--line)}.photo-actions{margin-top:12px}.photo-actions .ghost{background:transparent;color:var(--accent-ink);border:1.5px solid var(--line)}.photo-skip{margin-top:12px;padding:0;border:0;background:none;font:inherit;font-size:13px;color:var(--muted);text-decoration:underline;cursor:pointer}.notice,.photo-skip:hover:not(:disabled){color:var(--accent-ink)}.notice{margin:0;width:100%;max-width:420px;text-align:center;font-size:15px;line-height:1.5;background:var(--accent-soft);border-radius:14px;padding:12px 16px}.input-card{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:22px;box-shadow:var(--shadow);animation:rise .35s cubic-bezier(.2,.8,.2,1)}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}.input-label{display:block;margin-bottom:14px;font-size:18px;font-weight:700}.input-row{display:flex;gap:10px}.input-row input{flex:1 1;font:inherit;font-size:16px;color:var(--ink);background:var(--bg);border:1.5px solid var(--line);border-radius:14px;padding:13px 15px;direction:ltr;text-align:left}.input-row input::placeholder{color:var(--muted)}.input-row input:focus{outline:none;border-color:var(--accent)}.input-row button{font:inherit;font-weight:700;border:none;cursor:pointer;color:#fff;background:var(--accent);border-radius:14px;padding:0 22px;transition:opacity .15s ease}.input-row button:disabled{opacity:.4;cursor:default}.devlog{width:100%;color:var(--muted)}.devlog summary{cursor:pointer;font-size:13px;list-style:none;opacity:.7;-webkit-user-select:none;-moz-user-select:none;user-select:none}.devlog summary::-webkit-details-marker{display:none}.devlog summary:before{content:"›";display:inline-block;-webkit-margin-end:6px;margin-inline-end:6px;transition:transform .2s ease}.devlog[open] summary:before{transform:rotate(90deg)}.log{margin-top:10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--muted);background:rgba(0,0,0,.04);border:1px solid var(--line);border-radius:12px;padding:12px;max-height:200px;overflow:auto;direction:ltr;text-align:left;white-space:pre-wrap;line-height:1.5}@media (prefers-color-scheme:dark){.log{background:rgba(0,0,0,.25)}}