/* Troque as cores aqui para ajustar o visual */
:root{
  --bg:#f6f1e9; --card:#fffdf9; --text:#2b2622; --muted:#8a8178;
  --accent:#5b3f8c; --line:#e6ddd0; --radius:14px;
  --shelf-bg:#6b4428; --shelf-plank-bg:#c18d57; --shelf-plank-shadow:#8a5a2e; --shelf-label-color:#e2c9a8;
}
*{box-sizing:border-box;margin:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
[hidden]{display:none!important}
h1{font-size:1.25rem}
button{font:inherit;cursor:pointer;border:0;border-radius:10px;padding:.6rem 1rem;transition:background .18s,border-color .18s,transform .15s}
input,select,textarea{font:inherit;padding:.7rem;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--text);width:100%;transition:border-color .2s,box-shadow .2s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,63,140,0.15)}
.primary{background:var(--accent);color:#fff}
.ghost{background:transparent;border:1px solid var(--line);color:var(--text)}
.small{padding:.35rem .7rem;font-size:.85rem}
.full{width:100%}

#auth{max-width:360px;margin:15vh auto;padding:1.5rem;display:grid;gap:.8rem;text-align:center}
#auth form{display:grid;gap:.6rem}

header{display:flex;justify-content:space-between;align-items:center;padding:1rem}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem;padding:1rem 1rem 6rem}
.book{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column}
.book img,.nocover{width:100%;aspect-ratio:2/3;object-fit:cover;background:var(--line);display:grid;place-items:center;color:var(--muted);font-size:2rem}
.info{padding:.6rem;font-size:.85rem;flex:1}
.info b{display:block;line-height:1.2}
.info small{color:var(--muted)}
.actions{display:flex;gap:.3rem;padding:0 .6rem .6rem}
.actions button{flex:1;padding:.4rem;font-size:.75rem}
.empty{grid-column:1/-1;text-align:center;color:var(--muted);padding:3rem 0}

#fab{position:fixed;right:1.2rem;bottom:1.2rem;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;box-shadow:0 4px 14px #0003;display:flex;align-items:center;justify-content:center;padding:0;border:0;line-height:0}
#fab svg{width:26px;height:26px;display:block}

body.sheet-open {
  overflow: hidden !important;
  touch-action: none;
  overscroll-behavior: none;
}
body.sheet-open #app,
body.sheet-open #shelf {
  pointer-events: none;
}

.sheet{position:fixed;inset:0;background:#0006;display:flex;align-items:flex-end;justify-content:center;z-index:50;-webkit-tap-highlight-color:transparent;cursor:pointer;overscroll-behavior:contain;touch-action:pan-y}
.sheet-box{background:var(--bg);width:100%;max-width:520px;max-height:85vh;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border-radius:20px 20px 0 0;padding:1rem;display:grid;gap:.8rem;align-content:start;cursor:default;touch-action:pan-y}
.sheet-head{display:flex;justify-content:space-between;align-items:center}

/* ---- Adicionar livro: cabeçalho e busca fixos no topo ---- */
#add-book-box{display:flex!important;flex-direction:column!important;max-height:88vh;padding:0!important;overflow:hidden!important;gap:0!important}
.sheet-pinned-header{flex-shrink:0;padding:1rem 1.1rem .75rem;background:var(--bg);border-bottom:1px solid var(--line);box-shadow:0 3px 12px rgba(0,0,0,0.03);display:flex;flex-direction:column;gap:.7rem}
.sheet-pinned-header .sheet-head{margin-bottom:0}
#search-form{display:flex;gap:8px;align-items:center;width:100%}
.search-input-wrap{position:relative;flex:1;display:flex;align-items:center}
.search-input-wrap .search-icon{position:absolute;left:12px;color:var(--muted);pointer-events:none}
.search-input-wrap input{padding-left:38px;padding-right:34px;background:var(--card);border:1px solid var(--line);border-radius:12px;font-size:.92rem;color:var(--text);width:100%}
.search-input-wrap input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,63,140,0.15)}
#q-clear-btn{position:absolute;right:8px;background:none;border:none;color:var(--muted);font-size:14px;cursor:pointer;display:none;padding:4px 6px;line-height:1;border-radius:50%;transition:color .15s,background-color .15s}
#q-clear-btn:hover{color:var(--text);background:rgba(0,0,0,0.06)}
.search-submit-btn{padding:.65rem 1.15rem;font-size:.88rem;font-weight:600;border-radius:12px;white-space:nowrap;flex-shrink:0}
.search-quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.search-action-btn{padding:8px 10px;font-size:.8rem;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:10px;text-decoration:none;cursor:pointer;transition:background .18s,transform .15s}
.sheet-scroll-results{flex:1;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:.85rem 1.1rem 2.5rem}

/* ---- Modal de confirmação estilizado no padrão do app ---- */
#confirm-dialog{align-items:center;justify-content:center;background:rgba(0,0,0,0.65);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:100}
#confirm-dialog .sheet-box{animation:confirmPop .22s cubic-bezier(0.16, 1, 0.3, 1);box-shadow:0 16px 44px rgba(0,0,0,0.28)}
@keyframes confirmPop{0%{transform:scale(0.92);opacity:0}100%{transform:scale(1);opacity:1}}
#reader{width:100%;border-radius:var(--radius);overflow:hidden;background:#111;position:relative;margin-bottom:.5rem;min-height:220px}
#reader video{width:100%!important;max-height:55vh;object-fit:cover!important;display:block}
.scan-overlay{position:absolute;inset:0;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center}
.scan-target{position:relative;width:84%;max-width:320px;height:140px;border-radius:12px;box-shadow:0 0 0 9999px rgba(0,0,0,0.52)}
.scan-target::before,.scan-target::after{content:"";position:absolute;width:24px;height:24px;border-color:#fac775;border-style:solid}
.scan-target::before{top:0;left:0;border-width:3px 0 0 3px;border-top-left-radius:10px}
.scan-target::after{top:0;right:0;border-width:3px 3px 0 0;border-top-right-radius:10px}
.scan-target-bot::before,.scan-target-bot::after{content:"";position:absolute;width:24px;height:24px;border-color:#fac775;border-style:solid}
.scan-target-bot::before{bottom:0;left:0;border-width:0 0 3px 3px;border-bottom-left-radius:10px}
.scan-target-bot::after{bottom:0;right:0;border-width:0 3px 3px 0;border-bottom-right-radius:10px}
.scan-laser{position:absolute;left:4%;right:4%;height:2px;background:#ff3b30;box-shadow:0 0 8px #ff3b30,0 0 16px rgba(255,59,48,0.85);animation:scanLaser 2s ease-in-out infinite alternate}
@keyframes scanLaser{0%{top:8%}100%{top:90%}}
.scan-tip{position:absolute;bottom:12px;left:0;right:0;text-align:center;color:#fff;font-size:.78rem;font-weight:500;text-shadow:0 1px 4px rgba(0,0,0,0.9);pointer-events:none}
.scan-controls{position:absolute;top:10px;right:10px;display:flex;gap:8px;z-index:2}
.scan-btn-ctrl{background:rgba(0,0,0,0.68);color:#fff;border:1px solid rgba(255,255,255,0.3);border-radius:20px;padding:5px 12px;font-size:.75rem;cursor:pointer;backdrop-filter:blur(4px)}
.result{display:flex;gap:.7rem;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:.6rem;margin-bottom:.6rem}
.result img,.result .nocover{width:56px;aspect-ratio:2/3;object-fit:cover;border-radius:6px;flex:none;font-size:1rem}
.result .info{padding:0;min-width:0;flex:1}
.result .desc{font-size:.78rem;color:var(--muted);margin:3px 0 6px;line-height:1.3;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.result .actions{padding:.4rem 0 0}

#toast{position:fixed;left:50%;bottom:5.5rem;transform:translateX(-50%);background:var(--text);color:#fff;padding:.6rem 1rem;border-radius:10px;z-index:20}

/* ---- v2: estante de madeira ---- */
.hbtns{display:flex;gap:.4rem}
#shelf{margin-bottom:5rem}
#shelf.wood{background:var(--shelf-bg);margin:0 12px 5rem;border-radius:16px;padding-bottom:16px;cursor:pointer;transition:background .25s ease}
.lb{font-size:.8rem;font-weight:500;color:var(--muted);padding:.9rem 1rem .3rem}
.wood .lb{color:var(--shelf-label-color);transition:color .25s ease}
.shelf-scan-pill{background:#faf6ee;color:#3b2211;border:1px solid rgba(255,255,255,0.65);border-radius:999px;padding:6px 14px;font-size:.82rem;font-weight:600;display:inline-flex;align-items:center;gap:6px;box-shadow:0 3px 10px rgba(0,0,0,0.25),0 1px 3px rgba(0,0,0,0.18);cursor:pointer;text-decoration:none;transition:all .18s ease;line-height:1.2}
.shelf-scan-pill:hover,.shelf-scan-pill:active{background:#ffffff;color:#221105;transform:translateY(-1px);box-shadow:0 5px 14px rgba(0,0,0,0.32)}
.grid{padding:.5rem 1rem}
.book{cursor:pointer}
.rw{display:flex;align-items:flex-end;gap:2.5px;padding:0 10px;min-height:146px;overflow-x:hidden;justify-content:flex-start}
.em{font-size:.8rem;color:#e2c9a8;padding-bottom:8px}
.s{position:relative;writing-mode:vertical-rl;display:flex;align-items:center;justify-content:flex-start;font-size:11px;font-weight:600;border-radius:3px 3px 0 0;overflow:hidden;flex:none;cursor:pointer;transform-origin:bottom left;transition:transform .25s,margin .25s;box-shadow:inset 1px 0 0 rgba(255,255,255,0.18),inset -1px 0 0 rgba(0,0,0,0.22),1px 0 3px rgba(0,0,0,0.18);user-select:none;-webkit-user-select:none}
.s .st{display:block;max-height:100%;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.15;text-align:left}
.s.tilt{transform:rotate(-14deg);margin:0 14px 0 6px}
.pl{height:10px;background:var(--shelf-plank-bg);border-bottom:6px solid var(--shelf-plank-shadow);margin:0 4px;transition:background .25s ease,border-color .25s ease}
.fan{max-height:0;overflow:hidden;transition:max-height .35s cubic-bezier(0.4, 0, 0.2, 1)}
.cd{background:var(--card);color:var(--text);border:1px solid var(--line);margin:10px 12px 16px;border-radius:14px;padding:14px 14px 16px;font-size:.85rem;line-height:1.5;box-shadow:0 4px 12px rgba(0,0,0,0.06);cursor:default}
.ch{display:flex;gap:12px;align-items:center;margin-bottom:10px}
.ch b{display:block;font-size:.95rem;line-height:1.25}
.ch span{color:var(--muted);font-size:.82rem}
.sw{width:32px;height:46px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1.1rem;flex:none}
.chips{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap;align-items:center}
.chips span{background:var(--line);border-radius:8px;padding:3px 9px;font-size:.75rem;font-weight:500}
.amz-chip{background:rgba(255,153,0,0.14);color:#b35f00;border:1px solid rgba(255,153,0,0.35);border-radius:8px;padding:3px 9px;font-size:.75rem;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:4px;transition:background .2s}
.amz-chip:hover,.amz-chip:active{background:rgba(255,153,0,0.24);color:#8a4900}
.cd p{margin-bottom:14px;color:var(--text);font-size:.85rem;line-height:1.55;white-space:pre-line}
.bar{height:8px;background:var(--line);border-radius:4px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--accent)}
.pt{display:flex;justify-content:space-between;margin:6px 0 3px;font-size:.82rem}
.pr{margin-bottom:12px}
.pr input{accent-color:var(--accent);padding:0;border:0;background:none;width:100%}
.bs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.bs button{flex:1 1 40%;display:flex;align-items:center;justify-content:center;gap:5px;font-size:.8rem;padding:.55rem .8rem}
.result .actions{flex-wrap:wrap}

/* ---- v3: topo fixo (sticky nav) ---- */
.app-sticky-nav{position:sticky;top:0;z-index:25;background:var(--bg);border-bottom:1px solid rgba(230,221,208,0.75);box-shadow:0 2px 10px rgba(0,0,0,0.04);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}

/* ---- v3: abas de visualização ---- */
.view-tabs{display:flex;gap:6px;padding:0 1rem .6rem}
.vtab{flex:1;padding:.4rem .4rem;font-size:.8rem;border-radius:999px;background:transparent;border:1px solid var(--line);color:var(--muted);cursor:pointer;font-weight:500;text-align:center;transition:all .2s;white-space:nowrap}
.vtab.on{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}

/* ---- v3: busca e filtros ---- */
.filters{display:flex;gap:.5rem;padding:0 1rem .6rem}
.filters input{flex:1;min-width:0}
#filter::-webkit-search-cancel-button{
  -webkit-appearance: none;
  appearance: none;
}
#filter-clear-btn:hover{
  color: var(--text);
}

/* ---- v3.1: filtro de gênero em etiquetas ---- */
#gchips{display:flex;gap:6px;padding:0 1rem .6rem;overflow-x:auto;white-space:nowrap}
.gp{flex:none;padding:.2rem .7rem;border-radius:999px;font-size:.75rem;background:transparent;border:1px solid var(--line);color:var(--muted)}
.gp.on{background:var(--accent);color:#fff;border-color:var(--accent)}

/* ---- v4: ler em casal ---- */
.hb{position:absolute;top:5px;left:50%;transform:translateX(-50%);display:block;line-height:0;z-index:1}
.s.nw::after{content:"";position:absolute;bottom:5px;left:50%;transform:translateX(-50%);width:7px;height:7px;border-radius:50%;background:#fac775;z-index:1}
#cbtn{display:flex;align-items:center;gap:.3rem}
#cbox{display:grid;gap:.7rem}
#join-form{display:flex;gap:.5rem}
.code{font-size:2rem;font-weight:600;letter-spacing:.3em;text-align:center}
.muted{color:var(--muted);font-size:.85rem}
.nt{display:flex;align-items:center;gap:6px;color:var(--muted);margin:2px 0 10px;font-size:.8rem}
.bar.par i{background:#c0482b}
.bs{flex-wrap:wrap}
.bs button{flex:1 1 40%;display:flex;align-items:center;justify-content:center;gap:5px}

/* ---- v5: animação de queda dos livros na estante (book drop) ---- */
@keyframes bookDropIn {
  0% {
    transform: translateY(-130px) rotate(8deg) scale(0.9);
    opacity: 0;
  }
  60% {
    transform: translateY(4px) rotate(-3deg) scale(1.02);
    opacity: 1;
  }
  80% {
    transform: translateY(-6px) rotate(1.5deg) scale(0.99);
  }
  95% {
    transform: translateY(1px) rotate(-0.5deg);
  }
  100% {
    transform: translateY(0) rotate(0deg) scale(1);
    opacity: 1;
  }
}

.s.book-drop-in {
  animation: bookDropIn 0.75s cubic-bezier(0.22, 1.25, 0.36, 1) both;
  animation-delay: var(--drop-delay, 0ms);
}

/* ---- scanner de estante por foto ---- */
.shelf-photo-preview {
  position: relative;
  width: 100%;
  max-height: 220px;
  border-radius: var(--radius);
  overflow: hidden;
  background: #111;
  display: flex;
  align-items: center;
  justify-content: center;
}
.shelf-photo-preview img {
  width: 100%;
  max-height: 220px;
  object-fit: contain;
  display: block;
}
.shelf-scan-laser {
  position: absolute;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent, #fac775, #ff5722, #fac775, transparent);
  box-shadow: 0 0 10px #fac775, 0 0 20px rgba(255, 87, 34, 0.6);
  animation: laserScan 1.8s ease-in-out infinite alternate;
  z-index: 2;
}
@keyframes laserScan {
  0% { top: 5%; }
  100% { top: 92%; }
}

.detected-books-list {
  display: grid;
  gap: 8px;
  max-height: 44vh;
  overflow-y: auto;
  padding-right: 4px;
}
.detected-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
}
.detected-item input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--accent);
  flex: none;
  cursor: pointer;
}
.detected-thumb {
  width: 32px;
  aspect-ratio: 2/3;
  border-radius: 4px;
  object-fit: cover;
  flex: none;
  background: var(--line);
  display: grid;
  place-items: center;
  font-size: .8rem;
  font-weight: 600;
}
.detected-info {
  flex: 1;
  min-width: 0;
}
.detected-info b {
  display: block;
  font-size: .85rem;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.detected-info small {
  display: block;
  font-size: .75rem;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- Grade: Leque sutil e seleção ---- */
.fan.fan-grid {
  grid-column: 1 / -1;
  width: 100%;
  margin: 4px 0 10px;
}
.fan.fan-grid .cd {
  margin: 0;
  border-radius: 14px;
  background: var(--card);
  border: 1px solid var(--line);
  box-shadow: 0 4px 18px rgba(0,0,0,0.08);
}
.book.selected-card {
  outline: 2.5px solid var(--accent);
  outline-offset: -2px;
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0,0,0,0.14);
}

/* ---- Seletor de Capas ---- */
.cover-picker-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
  gap: 10px;
  max-height: 52vh;
  overflow-y: auto;
  padding: 8px 2px;
}
.cover-picker-item {
  aspect-ratio: 2/3;
  border-radius: 8px;
  overflow: hidden;
  border: 2px solid var(--line);
  cursor: pointer;
  background: var(--line);
  transition: all .18s ease;
  position: relative;
}
.cover-picker-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.cover-picker-item:hover, .cover-picker-item:active {
  border-color: var(--accent);
  transform: scale(1.04);
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}

/* ---- Configurações & Temas de Madeira ---- */
.settings-section {
  padding: 8px 0;
}
.wood-theme-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 8px 6px;
  border-radius: 12px;
  border: 2px solid var(--line);
  background: var(--card);
  cursor: pointer;
  transition: all .18s ease;
  text-align: center;
}
.wood-theme-card:hover {
  transform: translateY(-2px);
  border-color: var(--accent);
}
.wood-theme-card.on {
  border-color: var(--accent);
  background: rgba(91, 63, 140, 0.08);
  box-shadow: 0 2px 8px rgba(91, 63, 140, 0.2);
}
.wood-preview-box {
  width: 100%;
  height: 38px;
  border-radius: 8px;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.08);
  position: relative;
  overflow: hidden;
}
.wood-preview-plank {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 10px;
}
.wood-theme-name {
  font-size: 0.72rem;
  font-weight: 600;
  line-height: 1.15;
  color: var(--text);
}

/* ---- Organizar livros na estante ---- */
.organize-box {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 10px;
  margin: 10px 0 14px;
}
.organize-box label {
  display: block;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 6px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.organize-btns {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
  margin-bottom: 8px;
}
.organize-btns button {
  padding: 6px 4px;
  font-size: 0.76rem;
  font-weight: 500;
  color: var(--text);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 8px;
  cursor: pointer;
}
.organize-btns button svg {
  stroke: var(--text);
}
.organize-btns button:hover:not(:disabled) {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}
.organize-btns button:hover:not(:disabled) svg {
  stroke: #fff;
}
.organize-btns button:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

/* ---- Estilos para campos de seleção e balões ---- */
select, select option {
  color: #2b2622 !important;
  -webkit-text-fill-color: #2b2622 !important;
  background-color: var(--card);
}
#settings-sort-select,
#settings-capacity-select,
#card-shelf-sort,
#shelf-quick-sort {
  color: #2b2622 !important;
  -webkit-text-fill-color: #2b2622 !important;
  background-color: var(--card) !important;
}

/* ---- Tutorial Gemini API Key ---- */
.tutorial-step-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px;
}
.step-badge {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
}
@keyframes pulseBadge {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}




