:root{
  --ameixa:#3D1A5C; --ameixa-2:#5B2B86; --ameixa-3:#EFE6F7; --coral:#FF5C6C; --coral-2:#E8404F; --manteiga:#FFC857; --menta:#2EC4A6; --ceu:#6C8CFF;
  --creme:#FFF8F0; --tinta:#241632; --mudo:#6B5B7B; --linha:#E9DEF0; --card:#fff; --ok:#1F9D7F; --erro:#D6334A;
  --raio:16px; --sombra:0 1px 2px rgba(61,26,92,.06),0 8px 24px rgba(61,26,92,.08);
  --serif:'Fraunces',Georgia,'Times New Roman',serif; --sans:'Plus Jakarta Sans','Segoe UI',system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--creme);color:var(--tinta);font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--serif);font-weight:700;letter-spacing:-.01em;line-height:1.15;margin:0 0 .4em;color:var(--ameixa)}
h1{font-size:clamp(28px,4vw,40px)} h2{font-size:clamp(22px,3vw,28px)} h3{font-size:18px}
p{margin:0 0 .8em} a{color:var(--ameixa-2)} small,.mudo{color:var(--mudo)}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
img,svg{max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--ceu);outline-offset:2px;border-radius:8px}

/* botões */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:2px solid var(--ameixa);background:transparent;color:var(--ameixa);
  padding:10px 18px;border-radius:999px;font-weight:700;cursor:pointer;white-space:nowrap;text-decoration:none;transition:transform .12s,box-shadow .12s,background .12s;min-height:44px}
.btn:hover{background:var(--ameixa-3)} .btn:active{transform:translateY(1px)}
.btn.primario{background:var(--ameixa);color:#fff;box-shadow:0 6px 16px rgba(61,26,92,.25)} .btn.primario:hover{background:var(--ameixa-2)}
.btn.coral{background:var(--coral);border-color:var(--coral);color:#fff;box-shadow:0 6px 16px rgba(255,92,108,.3)} .btn.coral:hover{background:var(--coral-2)}
.btn.sutil{border-color:transparent;color:var(--mudo)} .btn.sutil:hover{background:var(--ameixa-3);color:var(--ameixa)}
.btn.perigo{border-color:var(--erro);color:var(--erro)} .btn.perigo:hover{background:#fdeaee}
.btn.mini{padding:5px 12px;min-height:34px;font-size:13px} .btn.bloco{width:100%}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* campos */
label.campo{display:block;margin:0 0 14px;font-weight:600;font-size:13px;color:var(--ameixa)}
label.campo>span{display:block;margin-bottom:5px}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=tel],select,textarea{width:100%;padding:11px 14px;border:2px solid var(--linha);border-radius:12px;background:#fff;min-height:44px}
input:focus,select:focus,textarea:focus{border-color:var(--ameixa-2);outline:none;box-shadow:0 0 0 4px rgba(91,43,134,.12)}
input[type=color]{width:44px;height:40px;border:2px solid var(--linha);border-radius:10px;padding:2px;background:#fff}
input[type=range]{width:100%;accent-color:var(--ameixa)}
.dica{font-size:12.5px;color:var(--mudo);margin-top:4px}
.linha{display:flex;gap:12px;flex-wrap:wrap} .linha>*{flex:1;min-width:140px}
.erro{background:#fdeaee;color:var(--erro);padding:10px 14px;border-radius:12px;font-weight:600;margin:0 0 14px}
.ok{background:#e3f7f1;color:#12705a;padding:10px 14px;border-radius:12px;font-weight:600;margin:0 0 14px}
.aviso{background:#FFF3D6;color:#7a5200;padding:10px 14px;border-radius:12px;margin:0 0 14px}

/* topo do app */
.topo{position:sticky;top:0;z-index:20;background:rgba(255,248,240,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--linha)}
.topo .wrap{display:flex;align-items:center;gap:14px;height:64px}
.topo .logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ameixa);font-family:var(--serif);font-weight:700;font-size:23px;letter-spacing:-.02em}
.topo .logo img{width:38px;height:38px} .topo .logo b{color:var(--coral);font-family:var(--sans);font-size:11px;letter-spacing:.35em;display:block;margin-top:-4px}
.topo nav{display:flex;gap:4px;margin-left:12px;flex:1;overflow-x:auto}
.topo nav a{padding:8px 14px;border-radius:999px;text-decoration:none;color:var(--mudo);font-weight:700;white-space:nowrap}
.topo nav a:hover{background:var(--ameixa-3);color:var(--ameixa)} .topo nav a.ativo{background:var(--ameixa);color:#fff}
.creditos{display:flex;align-items:center;gap:8px;background:#fff;border:2px solid var(--linha);border-radius:999px;padding:4px 6px 4px 14px;font-weight:700;cursor:pointer}
.creditos strong{color:var(--coral);font-size:17px}
.menu-user{position:relative}
.menu-user .pop{position:absolute;right:0;top:46px;background:#fff;border:1px solid var(--linha);border-radius:14px;box-shadow:var(--sombra);min-width:200px;padding:6px;display:none}
.menu-user.aberto .pop{display:block} .menu-user .pop button,.menu-user .pop a{display:block;width:100%;text-align:left;border:0;background:none;padding:10px 12px;border-radius:10px;cursor:pointer;text-decoration:none;color:var(--tinta);font-weight:600}
.menu-user .pop button:hover,.menu-user .pop a:hover{background:var(--ameixa-3)}
main.pagina{padding:28px 0 80px}

/* cartões e grades */
.card{background:var(--card);border:1px solid var(--linha);border-radius:var(--raio);box-shadow:var(--sombra);padding:20px}
.grade{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.festa{padding:0;overflow:hidden;display:flex;flex-direction:column}
.festa .capa{aspect-ratio:16/10;display:grid;place-items:center;background:var(--ameixa-3);position:relative}
.festa .capa img{height:82%;filter:drop-shadow(0 6px 10px rgba(0,0,0,.12))}
.festa .corpo{padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px;flex:1}
.festa .corpo h3{margin:0}
.festa .acoes{display:flex;gap:8px;margin-top:auto;padding-top:8px;flex-wrap:wrap}
.chip{display:inline-block;background:var(--ameixa-3);color:var(--ameixa);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}
.chip.coral{background:#ffe3e6;color:var(--coral-2)} .chip.menta{background:#d9f6ef;color:#12705a} .chip.manteiga{background:#fff0cd;color:#7a5200}
.vazio{text-align:center;padding:48px 20px;border:2px dashed var(--linha);border-radius:var(--raio);color:var(--mudo)}
.vazio img{width:96px;margin-bottom:8px}

/* passos */
.passos{display:flex;gap:6px;margin:6px 0 22px}
.passos i{flex:1;height:8px;border-radius:99px;background:var(--linha)} .passos i.feito{background:var(--menta)} .passos i.atual{background:var(--ameixa)}
.opcoes{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.opcao{border:2px solid var(--linha);background:#fff;border-radius:14px;padding:14px;cursor:pointer;text-align:left;display:flex;gap:12px;align-items:flex-start;transition:.12s}
.opcao:hover{border-color:var(--ameixa-2)} .opcao.sel{border-color:var(--ameixa);background:var(--ameixa-3);box-shadow:0 0 0 3px rgba(61,26,92,.12)}
.opcao .ic{width:46px;height:46px;border-radius:12px;background:var(--creme);display:grid;place-items:center;font-size:22px;flex:none}
.opcao strong{display:block;color:var(--ameixa)} .opcao span{font-size:13px;color:var(--mudo)}
.opcao.breve{opacity:.55;cursor:not-allowed}
.temas{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.tema{border:2px solid var(--linha);background:#fff;border-radius:16px;overflow:hidden;cursor:pointer;text-align:left;padding:0;transition:.12s}
.tema:hover{transform:translateY(-2px);box-shadow:var(--sombra)} .tema.sel{border-color:var(--ameixa);box-shadow:0 0 0 3px rgba(61,26,92,.15)}
.tema .vit{aspect-ratio:1/.8;display:flex;align-items:center;justify-content:center;gap:0;padding:10px}
.tema .vit img{height:78%;margin:0 -8px}
.tema .tx{padding:10px 14px 14px} .tema .tx b{display:block;color:var(--ameixa);font-family:var(--serif);font-size:17px} .tema .tx small{display:block;line-height:1.35}
.pontos{display:flex;gap:4px;margin-top:8px} .pontos i{width:14px;height:14px;border-radius:50%;border:1px solid rgba(0,0,0,.08)}

/* peças da festa */
.peca{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;padding:14px 16px}
.peca .mini{width:84px;height:84px;background:var(--ameixa-3);border-radius:12px;display:grid;place-items:center;overflow:hidden}
.peca .mini img{max-width:92%;max-height:92%}
.quando{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}

/* modal */
.fundo-modal{position:fixed;inset:0;background:rgba(36,22,50,.55);z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:4vh 14px;overflow:auto}
.modal{background:var(--creme);border-radius:22px;max-width:760px;width:100%;box-shadow:0 30px 80px rgba(0,0,0,.35);padding:22px;animation:sobe .18s ease-out}
.modal.largo{max-width:1000px} .modal.estreito{max-width:440px}
.modal header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px} .modal header h2{margin:0}
@keyframes sobe{from{transform:translateY(14px);opacity:0}to{transform:none;opacity:1}}
.abas{display:flex;gap:4px;border-bottom:2px solid var(--linha);margin-bottom:16px;overflow-x:auto}
.abas button{border:0;background:none;padding:10px 16px;font-weight:700;color:var(--mudo);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap}
.abas button.ativo{color:var(--ameixa);border-color:var(--coral)}
.kpis{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:16px}
.kpi{background:#fff;border:1px solid var(--linha);border-radius:14px;padding:12px 14px} .kpi small{display:block} .kpi b{font-size:20px;color:var(--ameixa)}
table.t{width:100%;border-collapse:collapse;font-size:14px;background:#fff;border-radius:12px;overflow:hidden}
table.t th{background:var(--ameixa-3);color:var(--ameixa);text-align:left;padding:9px 12px;font-size:12.5px}
table.t td{padding:9px 12px;border-top:1px solid var(--linha);vertical-align:top} table.t td small{display:block}
.bloco-custo{background:#fff;border:1px solid var(--linha);border-radius:14px;margin-bottom:10px}
.bloco-custo>summary{list-style:none;cursor:pointer;padding:14px 16px;display:flex;gap:12px;align-items:center}
.bloco-custo>summary::-webkit-details-marker{display:none}
.bloco-custo .n{width:28px;height:28px;border-radius:50%;background:var(--ameixa);color:#fff;display:grid;place-items:center;font-weight:800;font-size:13px;flex:none}
.bloco-custo .resumo{margin-left:auto;color:var(--mudo);font-size:13px;text-align:right}
.bloco-custo .conteudo{padding:4px 16px 16px;border-top:1px solid var(--linha)}
.mini-linha{display:grid;gap:8px;grid-template-columns:2fr 1fr 1fr auto;align-items:end;margin-bottom:8px}

/* editor */
.editor{position:fixed;inset:0;z-index:40;background:#2a1a3a;display:flex;flex-direction:column}
.editor .barra{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--creme);border-bottom:1px solid var(--linha);flex-wrap:wrap}
.editor .barra h3{margin:0 8px 0 0;font-size:18px}
.editor .faces{display:flex;gap:6px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--linha);overflow-x:auto;align-items:center}
.editor .corpo-ed{flex:1;display:flex;min-height:0}
.editor .palco{flex:1;overflow:auto;display:grid;place-items:center;padding:24px;background:
  radial-gradient(circle at 20% 10%,rgba(255,255,255,.05),transparent 40%),#33204a}
.editor .palco .papel{box-shadow:0 20px 50px rgba(0,0,0,.45);line-height:0;position:relative}
.editor .lateral{width:340px;max-width:44vw;background:var(--creme);border-left:1px solid var(--linha);display:flex;flex-direction:column;min-height:0}
.editor .lateral .conteudo{padding:12px;overflow:auto;flex:1}
.editor .ferr{display:flex;gap:6px;flex-wrap:wrap;padding:8px 12px;background:#fff;border-top:1px solid var(--linha);align-items:center}
.biblioteca{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}
.biblioteca button{background:#fff;border:2px dashed var(--linha);border-radius:12px;padding:6px;cursor:pointer;aspect-ratio:1;display:grid;place-items:center}
.biblioteca button:hover{border-color:var(--ameixa-2);background:var(--ameixa-3)} .biblioteca img{max-width:100%;max-height:100%}
.sel-obj{background:#fff;border:1px solid var(--linha);border-radius:12px;padding:10px;margin-bottom:12px}
@media(max-width:820px){.editor .corpo-ed{flex-direction:column}.editor .lateral{width:100%;max-width:none;height:42vh;border-left:0;border-top:1px solid var(--linha)}}

/* toast */
#toasts{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:90;display:grid;gap:8px;justify-items:center}
.toast{background:var(--tinta);color:#fff;padding:10px 18px;border-radius:999px;font-weight:600;box-shadow:0 10px 30px rgba(0,0,0,.3);animation:sobe .2s}
.toast.erro{background:var(--erro);margin:0}

/* login */
.auth{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}
.auth .lado{background:linear-gradient(155deg,var(--ameixa) 0%,#2a0f45 100%);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.auth .lado h2{color:#fff;font-size:34px} .auth .lado p{color:#dccbee;max-width:420px}
.auth .lado .conf i{position:absolute;display:block;border-radius:3px;opacity:.9;animation:cai 9s linear infinite}
@keyframes cai{from{transform:translateY(-10vh) rotate(0)}to{transform:translateY(110vh) rotate(540deg)}}
.auth .form{display:grid;place-items:center;padding:32px}
.auth .form .card{width:100%;max-width:420px}
.auth .troca{text-align:center;margin-top:12px}
@media(max-width:860px){.auth{grid-template-columns:1fr}.auth .lado{display:none}}

/* landing / institucional */
.hero{padding:60px 20px 40px;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center}
.hero h1{font-size:clamp(34px,5.5vw,58px)} .hero h1 em{color:var(--coral);font-style:italic}
.hero p.lead{font-size:18px;color:var(--mudo);max-width:520px}
.hero .arte{position:relative;aspect-ratio:1;max-width:460px;margin-left:auto;width:100%}
.hero .arte .blob{position:absolute;inset:6%;background:var(--ameixa-3);border-radius:46% 54% 60% 40%/50% 42% 58% 50%}
.hero .arte img{position:absolute;filter:drop-shadow(0 14px 20px rgba(61,26,92,.2))}
@media(max-width:860px){.hero{grid-template-columns:1fr}.hero .arte{margin:0 auto}}
.secao{padding:46px 0} .secao.escura{background:var(--ameixa);color:#fff} .secao.escura h2,.secao.escura h3{color:#fff}
.recursos{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.recurso .ic{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:26px;margin-bottom:10px}
.preco-card{max-width:440px;margin:0 auto;text-align:center;border:3px solid var(--coral)}
.preco-card .valor{font-family:var(--serif);font-size:54px;color:var(--ameixa);font-weight:800;line-height:1}
.rodape{padding:30px 0;border-top:1px solid var(--linha);color:var(--mudo);font-size:13px}
.amostras{display:flex;gap:12px;flex-wrap:wrap}
.sw{width:120px;border-radius:14px;overflow:hidden;border:1px solid var(--linha);background:#fff;font-size:12px}
.sw i{display:block;height:70px} .sw div{padding:8px 10px}
.print-only{display:none}
@media print{.topo,.nao-print{display:none!important}}

/* isca anti-robô: invisível para humanos e leitores de tela, preenchida por robôs */
.isca{position:absolute!important;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}
