/* Identificação Proformat — mesmo visual do Separador (escuro + vermelho).
   Escuro de propósito: o app é usado em salão de festa, à noite. */
:root{
  --bg:#0C0D11; --panel:#15171E; --panel-2:#1B1E27; --panel-3:#232733;
  --line:#2A2F3C; --ink:#EEEFF3; --ink-2:#A9AFBD; --ink-3:#7A8194;
  --brand:#DB281E; --brand-2:#F0463C; --brand-soft:rgba(219,40,30,.16);
  --ok:#35C08B; --ok-soft:rgba(53,192,139,.14); --warn:#E8A23D; --warn-soft:rgba(232,162,61,.14);
  --bad:#FF5C64; --bad-soft:rgba(255,92,100,.14); --info:#58A6F2; --info-soft:rgba(88,166,242,.14);
  --r:14px; --topo:env(safe-area-inset-top,0px); --base:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{background:var(--bg);color:var(--ink);min-height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif;
     font-size:16px;line-height:1.45;overscroll-behavior-y:none}
button,input,textarea,select{font:inherit;color:inherit}
#app{max-width:560px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}
/* A PÁGINA NÃO ROLA: o cabeçalho fica parado em cima, os botões parados
   embaixo, e só o meio (.corpo) rola. No iPhone, cabeçalho e rodapé "presos à
   tela" (sticky/fixed) saíam do lugar no fim da lista e depois do teclado. */
html.app-celular,html.app-celular body{height:100%;overflow:hidden}
html.app-celular #app{height:100%;min-height:0}

/* fundo sólido: o desfoque (backdrop-filter) pesava na rolagem da lista no Android */
.topo{flex:none;z-index:5;display:flex;align-items:center;gap:6px;
      padding:calc(10px + var(--topo)) 10px 10px;background:var(--bg);border-bottom:1px solid var(--line)}
.topo .tit{flex:1;min-width:0}
.topo .tit b{display:block;font-size:17px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topo .tit small{display:block;font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ico{width:42px;height:42px;border:none;background:none;border-radius:12px;display:flex;
     align-items:center;justify-content:center;font-size:22px;color:var(--ink-2);flex:none;cursor:pointer}
.ico:active{background:var(--panel-3)}
.marca{display:flex;align-items:center;gap:10px;padding-left:6px}
.marca .logo{height:32px;width:auto;display:block}

.corpo{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
       padding:14px 14px calc(24px + var(--base))}
.rodape{flex:none;z-index:5;padding:10px 14px calc(10px + var(--base));background:var(--bg);
        border-top:1px solid var(--line)}
.rodape .dentro{max-width:532px;margin:0 auto;display:flex;gap:8px}
/* selo "Powered by Netlify" (o Netlify põe no canto de baixo dos sites de conta
   gratuita e não deixa esconder): os botões e o fim da lista ficam acima dele */
body:has(#nl-badge-frame) .rodape{padding-bottom:max(58px,calc(10px + var(--base)))}
body:has(#nl-badge-frame) .corpo{padding-bottom:calc(64px + var(--base))}

.bt{display:flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:12px 16px;
    border-radius:13px;border:1px solid var(--line);background:var(--panel-3);font-weight:600;
    font-size:15.5px;cursor:pointer;width:100%;text-align:center}
.bt:active{transform:scale(.985)}
.bt.pri{background:var(--brand);border-color:var(--brand);color:#fff}
.bt.ok{background:var(--ok);border-color:var(--ok);color:#06231a}
.bt.fino{min-height:42px;font-size:14.5px;font-weight:500}
.bt.perigo{color:var(--bad);border-color:rgba(255,92,100,.45);background:var(--bad-soft)}
.bt[disabled]{opacity:.4;pointer-events:none}
.duas{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pilha{display:flex;flex-direction:column;gap:8px}

.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:12px}
.sec{font-size:12.5px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;margin:18px 2px 8px}
.msg{font-size:14px;border-radius:12px;padding:10px 12px;margin:10px 0;display:flex;gap:8px;align-items:flex-start}
.msg.ok{background:var(--ok-soft);color:#7fe0b8}
.msg.aviso{background:var(--warn-soft);color:#f3c06f}
.msg.erro{background:var(--bad-soft);color:#ff9aa0}
.msg.info{background:var(--info-soft);color:#9cc9f7}
.dica{font-size:13.5px;color:var(--ink-3)}

label.campo{display:block;margin:12px 0 0}
label.campo span{display:block;font-size:13px;color:var(--ink-2);margin:0 0 5px 2px}
input[type=text],input[type=date],input[type=search],textarea{width:100%;background:var(--panel-3);
  border:1px solid var(--line);border-radius:12px;padding:12px 13px;font-size:16px;outline:none}
input:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
textarea{min-height:170px;resize:vertical}

.prog{height:8px;border-radius:6px;background:var(--panel-3);overflow:hidden;margin:6px 0 2px}
.prog i{display:block;height:100%;background:var(--ok);border-radius:6px;transition:width .4s}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 4px}
.chip{border:1px solid var(--line);background:var(--panel-2);border-radius:20px;padding:7px 13px;
      font-size:14px;cursor:pointer}
.chip.on{background:var(--brand-soft);border-color:var(--brand);color:#fff}

.lista{border-top:1px solid var(--line)}
.linha{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--line);cursor:pointer}
.linha:active{background:var(--panel)}
.av{width:46px;height:46px;border-radius:12px;flex:none;object-fit:cover;background:var(--panel-3)}
.av.vazio{display:flex;align-items:center;justify-content:center;border:1.5px dashed var(--line);
          background:none;color:var(--ink-3);font-size:20px}
.av.feito{display:flex;align-items:center;justify-content:center;background:var(--ok-soft);color:var(--ok);font-size:20px}
.nm{flex:1;min-width:0}
.nm b{display:block;font-size:15px;font-weight:600;word-break:break-word}
.nm small{font-size:13px;color:var(--ink-3)}
.nm small.ok{color:var(--ok)}
.tag{display:inline-block;font-size:11.5px;font-weight:700;border-radius:8px;padding:1px 7px;margin-left:6px;
     vertical-align:2px;background:var(--warn-soft);color:var(--warn)}
.tag.azul{background:var(--info-soft);color:var(--info)}
.tag.verde{background:var(--ok-soft);color:var(--ok)}
.seta{color:var(--ink-3);font-size:18px}

.evento{display:flex;gap:12px;align-items:center;cursor:pointer}
.evento .num{width:52px;height:52px;border-radius:13px;background:var(--brand-soft);color:#fff;
             display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;flex:none}
.evento .nm small{display:block}
.evento .espaco{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ink-3)}
.lembrete{margin-top:8px;font-size:13px;color:var(--ink-2);line-height:1.35}
.lembrete .bt{margin-top:7px}

.foto{position:relative;border-radius:16px;overflow:hidden;background:var(--panel-2);border:1px solid var(--line);
      margin:12px 0;touch-action:manipulation}
.foto img{display:block;width:100%;height:auto;user-select:none;-webkit-user-select:none;pointer-events:none}
.foto.vazia{aspect-ratio:3/4;display:flex;flex-direction:column;align-items:center;justify-content:center;
            gap:8px;color:var(--ink-3);border-style:dashed;font-size:14px}
.foto.vazia .grande{font-size:46px}
.caixa{position:absolute;border:3px solid var(--warn);border-radius:8px;box-shadow:0 0 0 2px rgba(0,0,0,.4)}
.caixa b{position:absolute;top:-12px;left:-10px;min-width:24px;height:24px;border-radius:12px;background:var(--warn);
         color:#2a1800;font-size:13px;display:flex;align-items:center;justify-content:center;padding:0 6px}
.caixa.sel{border-color:var(--ok)} .caixa.sel b{background:var(--ok);color:#06231a}
.caixa.ponto{border-style:dashed}
.ocupado{position:absolute;inset:0;background:rgba(12,13,17,.65);display:flex;align-items:center;
         justify-content:center;flex-direction:column;gap:10px;font-size:14px;color:var(--ink-2)}
.giro{width:34px;height:34px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand);
      animation:gira .8s linear infinite}
@keyframes gira{to{transform:rotate(360deg)}}

.res{display:flex;justify-content:space-between;gap:12px;padding:10px 2px;border-bottom:1px solid var(--line);font-size:15px}
.res b{font-weight:700}
.arquivo{display:flex;align-items:center;gap:10px;background:var(--panel-2);border:1px solid var(--line);
         border-radius:12px;padding:12px;font-size:14px;word-break:break-all}

#toast{position:fixed;left:50%;bottom:calc(96px + var(--base));transform:translate(-50%,20px);opacity:0;
       background:var(--panel-3);border:1px solid var(--line);border-radius:12px;padding:11px 16px;font-size:14.5px;
       max-width:92%;z-index:30;transition:opacity .25s,transform .25s;pointer-events:none;text-align:center}
#toast.on{opacity:1;transform:translate(-50%,0)}

#dialogo{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.6);display:none;align-items:flex-end;
         justify-content:center;padding:14px 14px calc(14px + var(--base))}
#dialogo.on{display:flex}
#dialogo .caixa-d{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px;
                  width:100%;max-width:520px}
#dialogo h3{font-size:17px;margin-bottom:6px}
#dialogo p{color:var(--ink-2);font-size:14.5px;margin-bottom:14px}

.aviso-topo{flex:none;background:var(--info-soft);color:#9cc9f7;font-size:13.5px;padding:10px 14px;display:flex;gap:10px;
            align-items:center;cursor:pointer}
.vazio-lista{text-align:center;color:var(--ink-3);padding:26px 10px;font-size:14.5px}
details summary{cursor:pointer;color:var(--ink-2);font-size:14px;margin-top:8px}
details ol{margin:8px 0 0 22px;color:var(--ink-2);font-size:13.5px;max-height:220px;overflow:auto}
