:root{
  --bg:#0a0a0e; --panel:#121219; --panel2:#171722; --ink:#f4f2ee; --mut:#9a96a6;
  --gold:#c9a04b; --line:#262430; --line2:#322f3d; --ok:#3fb27f; --err:#e2615a; --radius:14px;
}
*{box-sizing:border-box} html,body{margin:0;height:100%}
body{
  background:radial-gradient(130% 90% at 50% -10%,#191427 0%,var(--bg) 55%);
  color:var(--ink); font:15px/1.5 "Segoe UI",Inter,system-ui,Roboto,sans-serif; height:100%; overflow:hidden;
}
button{font:inherit;cursor:pointer}
button:disabled{opacity:.5;cursor:not-allowed}
input,select,textarea{font:inherit;color:var(--ink);background:var(--panel2);border:1px solid var(--line2);
  border-radius:10px;padding:9px 11px;width:100%;outline:none}
input:focus,select,textarea:focus{border-color:var(--gold)}
textarea{resize:vertical;min-height:60px}
label{display:block;font-size:12px;color:var(--mut);margin:0 0 5px;text-transform:uppercase;letter-spacing:.06em}
.row{display:flex;gap:10px}.row>*{flex:1}
.field{margin-bottom:13px}

/* header */
header{height:58px;display:flex;align-items:center;gap:14px;padding:0 20px;border-bottom:1px solid var(--line);
  background:rgba(10,10,14,.7);backdrop-filter:blur(8px)}
.brandmark{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-weight:800}
header h1{font-size:16px;font-weight:700;margin:0;letter-spacing:-.01em}
header .spacer{flex:1}

/* layout */
.app{display:grid;grid-template-columns:380px 1fr;height:calc(100% - 58px)}
.left{border-right:1px solid var(--line);overflow-y:auto;padding:18px}
.right{display:flex;flex-direction:column;min-width:0}

/* sections */
.sec{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:16px}
.sec h2{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--mut);margin:0 0 14px;font-weight:700}
.sec h2 .tag{color:var(--gold)}

/* buttons */
.btn{background:var(--panel2);border:1px solid var(--line2);color:var(--ink);border-radius:10px;padding:10px 14px;font-weight:600;width:100%;transition:.12s}
.btn:hover:not(:disabled){border-color:var(--gold)}
.btn.primary{background:linear-gradient(180deg,#d4ab53,#b8902f);border-color:#d4ab53;color:#1a1305}
.btn.primary:hover:not(:disabled){filter:brightness(1.06)}
.btn.ghost{background:transparent}
.btn-sm{padding:7px 10px;font-size:13px;width:auto}

/* swatch / upload */
.swatch{display:flex;align-items:center;gap:8px}
.swatch input[type=color]{width:42px;height:38px;padding:2px;flex:none}
.upload{display:flex;gap:10px;align-items:center}
.prev{width:54px;height:54px;border-radius:10px;border:1px dashed var(--line2);background:#0d0d13 center/cover no-repeat;flex:none}
.upload input[type=file]{font-size:12px;padding:6px}

/* stage */
.stage{flex:1;display:grid;grid-template-columns:1fr 340px;gap:22px;padding:22px;min-height:0;overflow:auto}
#preview-wrap{display:flex;align-items:center;justify-content:center;min-height:0}
#preview-wrap.empty::after{content:"Gere um roteiro ou adicione um slide";color:var(--mut)}
#preview-wrap.empty canvas{display:none}
#preview{max-height:64vh;max-width:100%;border-radius:12px;box-shadow:0 18px 50px rgba(0,0,0,.55);background:#0e1116}
.editor{align-self:start}
.hint{font-size:12px;color:var(--mut);margin:-4px 0 10px}
.pill{display:inline-block;font-size:11px;color:var(--mut);background:var(--panel2);border:1px solid var(--line2);border-radius:999px;padding:3px 9px}

/* thumbs */
.thumbs{display:flex;gap:10px;padding:14px 22px;border-top:1px solid var(--line);overflow-x:auto;min-height:118px;align-items:flex-start}
.thumb{position:relative;flex:none;width:78px;cursor:pointer;border-radius:9px;padding:3px;border:2px solid transparent}
.thumb.active{border-color:var(--gold)}
.thumb-cv{width:72px;height:90px;object-fit:cover;border-radius:7px;background:#0e1116;display:block}
.thumb-cap{font-size:10px;color:var(--mut);text-align:center;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thumb-del{position:absolute;top:1px;right:1px;width:18px;height:18px;border-radius:50%;border:none;background:rgba(0,0,0,.7);color:#fff;font-size:13px;line-height:1;padding:0;display:none}
.thumb:hover .thumb-del{display:block}

/* overlay + toast */
.overlay{position:fixed;inset:0;background:rgba(7,7,11,.66);backdrop-filter:blur(2px);display:none;align-items:center;justify-content:center;z-index:50;flex-direction:column;gap:16px}
.overlay.show{display:flex}
.spinner{width:42px;height:42px;border:3px solid rgba(255,255,255,.15);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#overlay-msg{color:var(--mut)}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--panel2);border:1px solid var(--line2);
  color:var(--ink);padding:12px 18px;border-radius:12px;max-width:560px;opacity:0;pointer-events:none;transition:.2s;z-index:60;box-shadow:0 12px 30px rgba(0,0,0,.5);font-size:14px}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.ok{border-color:var(--ok)} .toast.err{border-color:var(--err)}

@media(max-width:1100px){.stage{grid-template-columns:1fr}.editor{order:-1}}
@media(max-width:820px){.app{grid-template-columns:1fr}.left{max-height:42vh}}
