/* Always-visible shortcut to /colagem. Sits beside (left of) the friends-now mascot FAB when the page has one. Transform/opacity only. */
.gen-fab { position:fixed; right:calc(14px + env(safe-area-inset-right, 0px)); top:58%; z-index:55; height:52px; display:inline-flex; align-items:center; gap:7px; padding:0 14px 0 12px;
  border-radius:999px; color:#f2ede6; text-decoration:none; font:600 13px/1.1 'Inter', system-ui, sans-serif; white-space:nowrap;
  background:rgba(13,12,11,.72); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); border:1px solid rgba(201,160,99,.45); box-shadow:0 4px 16px rgba(0,0,0,.35); transition:border-color .2s; }
.fn-fab ~ .gen-dock .gen-fab { right:calc(76px + env(safe-area-inset-right, 0px)); }
.gen-fab:hover, .gen-fab:focus-visible { border-color:rgba(201,160,99,.85); }
.gen-fab-ico { position:relative; width:20px; height:20px; margin-left:-3px; display:grid; grid-template-columns:1fr 1fr; gap:2px; transform-origin:50% 100%; animation:genSwing 3.2s ease-in-out infinite; will-change:transform; }
.gen-fab-ico i { position:relative; border-radius:3px; background:#c9a063; overflow:hidden; }
.gen-fab-ico i::after { content:''; position:absolute; inset:0; background:var(--c2); opacity:0; animation:genCycle 4.8s ease-in-out infinite; animation-delay:var(--d); }
.gen-fab-ico i:nth-child(1) { --c2:#7a3b2e; --d:0s; } .gen-fab-ico i:nth-child(2) { background:#4f6b5a; --c2:#e3c48f; --d:-1.2s; }
.gen-fab-ico i:nth-child(3) { background:#e3c48f; --c2:#5d4b7a; --d:-2.4s; } .gen-fab-ico i:nth-child(4) { background:#7a3b2e; --c2:#c9a063; --d:-3.6s; }
/* receipt (hero): a fixed slot (overflow hidden) with a paper that gently "prints" down and back, plus a tiny wobble */
.gen-fab-rec { position:relative; width:26px; height:34px; overflow:hidden; border-top:3px solid #c9a063; border-radius:3px 3px 0 0; flex:none; }
.gen-fab-paper { position:absolute; left:3px; right:3px; top:0; height:30px; padding:4px 3px 0; display:flex; flex-direction:column; gap:3px; background:#f4efe6; transform-origin:50% 0;
  -webkit-mask:linear-gradient(#000 0 0) top / 100% calc(100% - 3px) no-repeat, conic-gradient(from -45deg at bottom, #0000, #000 1deg 90deg, #0000 91deg) bottom / 4px 3px repeat-x;
  mask:linear-gradient(#000 0 0) top / 100% calc(100% - 3px) no-repeat, conic-gradient(from -45deg at bottom, #0000, #000 1deg 90deg, #0000 91deg) bottom / 4px 3px repeat-x;
  animation:genPrint 3.6s ease-in-out infinite; will-change:transform; }
.gen-fab-paper i { height:2px; background:#8a7f70; border-radius:1px; } .gen-fab-paper i:nth-child(2) { width:70%; } .gen-fab-paper i:nth-child(3) { width:85%; }
.gen-fab-paper b { height:5px; margin-top:1px; background:repeating-linear-gradient(90deg, #26221d 0 1px, transparent 1px 2px, #26221d 2px 4px, transparent 4px 5px); }
@keyframes genPrint { 0% { transform:translateY(-55%); } 45%, 70% { transform:translateY(0) rotate(0); } 80% { transform:translateY(0) rotate(-4deg); } 90% { transform:translateY(0) rotate(3deg); } 100% { transform:translateY(-55%); } }
@keyframes genSwing { 0%, 100% { transform:rotate(-6deg); } 50% { transform:rotate(6deg); } }
@keyframes genCycle { 0%, 100% { opacity:0; } 50% { opacity:1; } }
@media (max-width:420px) { .gen-fab { height:46px; font-size:12px; padding:0 11px 0 7px; } .gen-fab-ico { width:18px; height:18px; } .gen-fab-rec { width:23px; height:30px; } .gen-fab-paper { height:26px; } .fn-fab ~ .gen-dock .gen-fab { right:calc(74px + env(safe-area-inset-right, 0px)); } }
@media (prefers-reduced-motion: reduce) { .gen-fab-ico, .gen-fab-ico i::after, .gen-fab-paper { animation:none; } }
@media print { .gen-fab { display:none; } }
/* Desktop: the dock wrapper is layout-neutral and the tab is hidden, so the pill behaves exactly as before. */
.gen-dock { display:contents; } .gen-tab { display:none; }
@media print { .gen-dock { display:none; } }
/* Mobile: a small tab docked at the right edge (receipt + left chevron); tap slides out the full pill, tap outside tucks it back.
   Above content and the signup card (60), below header/menu/drawers/modals (1000+). --gen-bar is set by gen-fab.js. */
@media (max-width:600px) {
  .gen-dock { position:fixed; right:0; bottom:calc(var(--gen-bar, 0px) + 96px + env(safe-area-inset-bottom, 0px)); z-index:61; display:flex; align-items:center;
    transform:translateX(calc(100% - 46px)); transition:transform .28s cubic-bezier(.2,.8,.2,1); will-change:transform; }
  .gen-dock.is-open { transform:translateX(-10px); }
  .gen-tab { display:inline-flex; align-items:center; gap:3px; height:44px; width:46px; padding:0 6px 0 7px; border:1.5px solid #c9a063; border-right:0; border-radius:12px 0 0 12px;
    background:#1d1a17; color:#c9a063; box-shadow:-3px 4px 14px rgba(0,0,0,.5); cursor:pointer; flex:none; -webkit-tap-highlight-color:transparent; }
  .gen-dock.is-open .gen-tab { border-right:1.5px solid #c9a063; border-radius:12px; margin-right:6px; }
  .gen-tab .gen-fab-rec { width:18px; height:24px; border-top-width:2px; } .gen-tab .gen-fab-paper { height:21px; padding-top:3px; gap:2px; }
  .gen-tab-chev { width:0; height:0; border:5px solid transparent; border-right:6px solid currentColor; border-left:0; transition:transform .28s; }
  .gen-dock.is-open .gen-tab-chev { transform:rotate(180deg); }
  .gen-dock .gen-fab, .fn-fab ~ .gen-dock .gen-fab { position:static; transform:none; height:46px; opacity:1; visibility:hidden; transition:visibility 0s .28s;
    background:#1d1a17; -webkit-backdrop-filter:none; backdrop-filter:none; border:1.5px solid #c9a063; color:#fff; box-shadow:0 6px 22px rgba(0,0,0,.6); }
  .gen-dock.is-open .gen-fab { visibility:visible; transition:none; }
}
@media (max-width:600px) and (prefers-reduced-motion: reduce) { .gen-dock, .gen-tab-chev { transition:none; } }
