/* B"H — Golden Icon System for Awtsmoos (Yaakov 2026-10-13)
 * Each icon has UNIQUE hover/active states matched to its meaning —
 * never the same generic scale/glow for all.
 *   home:     hover = warm glow expands outward · active = deep amber press
 *   search:   hover = lens brightens + twinkles · active = lens compresses
 *   play:     hover = triangle pulses with energy · active = triangle pushes in
 *   mail:     hover = envelope flap lifts · active = envelope seals shut
 *   bell:     hover = bell swings gently · active = bell rings (quick shake)
 *   torah:    hover = scroll unfurls · active = settles
 *   games:    hover = playful bounce · active = squash
 *   profile:  hover = warm halo ring expands · active = press
 *   settings: hover = gear turns · active = gear cranks further
 *   plus:     hover = spins open 90° · active = snaps in
 *   share:    hover = arrow nudges up-right · active = press
 *   download: hover = dips down inviting · active = drops in
 *   bookmark: hover = ribbon lifts · active = ribbon pins down
 * Focus ring is intentionally consistent (keyboard accessibility).
 * Mobile-first. No !important. Token-driven.
 */

:root {
  --gicon-gold: #d4af37;
  --gicon-gold-deep: #9a7b1e;
  --gicon-amber-dark: #78480a;
  --gicon-glow-soft: rgba(212, 175, 55, 0.45);
  --gicon-glow-strong: rgba(212, 175, 55, 0.7);
  --gicon-ring: 0 0 0 3px rgba(212, 175, 55, 0.55);
  --gicon-ease: 0.18s ease;
}

/* ---------- base ---------- */
.gicon {
  display: inline-block;
  width: 1.75rem;
  height: 1.75rem;
  object-fit: contain;
  border-radius: 0.5rem;
  vertical-align: middle;
  user-select: none;
  -webkit-user-select: none;
  transition: transform var(--gicon-ease), filter var(--gicon-ease), box-shadow var(--gicon-ease);
}

.gicon--xs { width: 1.125rem; height: 1.125rem; }
.gicon--sm { width: 1.5rem; height: 1.5rem; }
.gicon--md { width: 1.75rem; height: 1.75rem; }
.gicon--lg { width: 2.5rem; height: 2.5rem; }
.gicon--xl { width: 3.5rem; height: 3.5rem; }

/* ---------- wrappers (layout only; motion lives on the icon) ---------- */
.gicon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: 0.5rem;
  border: 1px solid transparent;
  border-radius: 0.875rem;
  background: transparent;
  cursor: pointer;
  color: inherit;
  font: inherit;
  transition: background var(--gicon-ease), border-color var(--gicon-ease);
}
.gicon-btn:active {
  background: rgba(212, 175, 55, 0.12);
  border-color: rgba(212, 175, 55, 0.35);
}
.gicon-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.gicon-btn:disabled .gicon { filter: grayscale(0.5); }

.gicon-nav {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
  padding: 0.5rem 0.75rem;
  border-radius: 1rem;
  text-decoration: none;
  color: inherit;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  min-width: 3.5rem;
  transition: background var(--gicon-ease), color var(--gicon-ease);
}
.gicon-nav .gicon { width: 1.75rem; height: 1.75rem; }
.gicon-nav:hover { background: rgba(212, 175, 55, 0.1); }
.gicon-nav[aria-current="page"], .gicon-nav.is-active {
  background: rgba(212, 175, 55, 0.16);
  color: var(--gicon-gold);
}

.gicon-action {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.5rem 0.75rem;
  border-radius: 999px;
  border: 1px solid transparent;
  background: transparent;
  cursor: pointer;
  font-size: 0.85rem;
  font-weight: 500;
  color: inherit;
  transition: background var(--gicon-ease), border-color var(--gicon-ease), color var(--gicon-ease);
}
.gicon-action .gicon { width: 1.375rem; height: 1.375rem; }
.gicon-action:hover { background: rgba(212, 175, 55, 0.1); border-color: rgba(212, 175, 55, 0.25); }
.gicon-action.is-on { color: var(--gicon-gold); }

.gicon-reader {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background: rgba(255, 251, 240, 0.9);
  border: 1px solid rgba(212, 175, 55, 0.3);
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  transition: border-color var(--gicon-ease), box-shadow var(--gicon-ease), transform var(--gicon-ease);
}
.gicon-reader .gicon { width: 1.5rem; height: 1.5rem; }
.gicon-reader:hover { border-color: rgba(212, 175, 55, 0.6); }
.gicon-reader:active { transform: scale(0.94); }

/* ---------- focus (consistent ring for keyboard users) ---------- */
.gicon-btn:focus-visible,
.gicon-nav:focus-visible,
.gicon-action:focus-visible,
.gicon-reader:focus-visible,
a:focus-visible .gicon {
  outline: none;
  box-shadow: var(--gicon-ring);
}

/* ---------- keyframes ---------- */
@keyframes gicon-play-pulse {
  0%, 100% { transform: scale(1); filter: brightness(1); }
  50% { transform: scale(1.14); filter: brightness(1.28) saturate(1.2); }
}
@keyframes gicon-bell-swing {
  0%, 100% { transform: rotate(11deg); }
  50% { transform: rotate(-11deg); }
}
@keyframes gicon-bell-ring {
  0%, 100% { transform: rotate(0deg); }
  20% { transform: rotate(15deg); }
  40% { transform: rotate(-13deg); }
  60% { transform: rotate(9deg); }
  80% { transform: rotate(-6deg); }
}
@keyframes gicon-bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}
@keyframes gicon-dip {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(3px); }
}
@keyframes gicon-lens-twinkle {
  0%, 100% { filter: brightness(1.12) saturate(1.05); }
  50% { filter: brightness(1.42) saturate(1.25); }
}

/* wrapper alias so one selector list can trigger every context */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a) { /* context hook */ }

/* ---------- HOME: glow expands outward · press = deep amber inner shadow ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--home,
.gicon--home:hover {
  transform: translateY(-2px) scale(1.06);
  filter: brightness(1.1);
  box-shadow: 0 0 18px var(--gicon-glow-soft), 0 0 46px rgba(212, 175, 55, 0.25);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--home,
.gicon--home:active {
  transform: translateY(1px) scale(0.96);
  filter: brightness(0.94);
  box-shadow: inset 0 3px 10px rgba(120, 72, 10, 0.55);
}

/* ---------- SEARCH: lens brightens + twinkles · press = lens compresses ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--search,
.gicon--search:hover {
  transform: scale(1.08);
  animation: gicon-lens-twinkle 1.1s ease-in-out infinite;
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--search,
.gicon--search:active {
  animation: none;
  transform: scale(0.88);
  filter: brightness(0.95);
}

/* ---------- PLAY: triangle pulses with energy · press = pushes in ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--play,
.gicon--play:hover {
  animation: gicon-play-pulse 1s ease-in-out infinite;
  box-shadow: 0 0 16px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--play,
.gicon--play:active {
  animation: none;
  transform: scale(0.88);
  filter: brightness(0.9);
}

/* ---------- MAIL: flap lifts (tilt back) · press = seals shut ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--mail,
.gicon--mail:hover {
  transform: perspective(400px) rotateX(-14deg) translateY(-2px);
  filter: brightness(1.1);
  box-shadow: 0 6px 14px rgba(212, 175, 55, 0.3);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--mail,
.gicon--mail:active {
  transform: perspective(400px) rotateX(9deg) scale(0.94);
  filter: brightness(0.93);
  box-shadow: inset 0 2px 6px rgba(120, 72, 10, 0.4);
}

/* ---------- BELL: swings gently · press = rings (quick shake) ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--bell,
.gicon--bell:hover {
  transform-origin: 50% 8%;
  animation: gicon-bell-swing 1.2s ease-in-out infinite;
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--bell,
.gicon--bell:active {
  transform-origin: 50% 8%;
  animation: gicon-bell-ring 0.4s linear;
  filter: brightness(1.05);
}

/* ---------- TORAH: scroll unfurls · press = settles ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--torah,
.gicon--torah:hover {
  transform: rotate(-4deg) scale(1.07);
  filter: brightness(1.12);
  box-shadow: 0 0 16px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--torah,
.gicon--torah:active {
  transform: rotate(0deg) scale(0.95);
  filter: brightness(0.94);
}

/* ---------- GAMES: playful bounce · press = squash ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--games,
.gicon--games:hover {
  animation: gicon-bounce 0.6s ease infinite;
  filter: brightness(1.12) saturate(1.1);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--games,
.gicon--games:active {
  animation: none;
  transform: scale(1.08, 0.86);
  filter: brightness(0.95);
}

/* ---------- PROFILE: halo ring expands · press = press ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--profile,
.gicon--profile:hover {
  transform: scale(1.06);
  filter: brightness(1.1);
  box-shadow: 0 0 0 4px rgba(212, 175, 55, 0.25), 0 0 18px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--profile,
.gicon--profile:active {
  transform: scale(0.94);
  box-shadow: inset 0 2px 8px rgba(120, 72, 10, 0.45);
}

/* ---------- SETTINGS: gear turns · press = cranks further ---------- */
.gicon--settings { transition: transform 0.45s ease, filter var(--gicon-ease), box-shadow var(--gicon-ease); }
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--settings,
.gicon--settings:hover {
  transform: rotate(35deg) scale(1.06);
  filter: brightness(1.1);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--settings,
.gicon--settings:active {
  transform: rotate(95deg) scale(0.94);
  filter: brightness(0.94);
}

/* ---------- PLUS: spins open · press = snaps in ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--plus,
.gicon--plus:hover {
  transform: rotate(90deg) scale(1.1);
  filter: brightness(1.14);
  box-shadow: 0 0 14px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--plus,
.gicon--plus:active {
  transform: rotate(90deg) scale(0.88);
  filter: brightness(0.94);
}

/* ---------- SHARE: arrow nudges up-right · press = press ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--share,
.gicon--share:hover {
  transform: translate(2px, -2px) scale(1.08);
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--share,
.gicon--share:active {
  transform: translate(0, 0) scale(0.92);
  filter: brightness(0.94);
}

/* ---------- DOWNLOAD: dips down inviting · press = drops in ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--download,
.gicon--download:hover {
  animation: gicon-dip 0.8s ease-in-out infinite;
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--download,
.gicon--download:active {
  animation: none;
  transform: translateY(4px) scale(0.94);
  filter: brightness(0.93);
}

/* ---------- BOOKMARK: ribbon lifts · press = pins down ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--bookmark,
.gicon--bookmark:hover {
  transform: translateY(-3px) scale(1.06);
  transform-origin: top center;
  filter: brightness(1.12);
  box-shadow: 0 6px 12px rgba(212, 175, 55, 0.3);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--bookmark,
.gicon--bookmark:active {
  transform: translateY(1px) scale(0.95);
  filter: brightness(0.94);
}

/* ---------- round 2 (Yaakov 2026-10-13): mail/drive/search/social/profile/games/apps ----------
 *   inbox:    hover = arrow dips into tray · active = settles
 *   send:     hover = plane lifts off · active = launches away
 *   edit:     hover = pencil tilts to write · active = presses down
 *   archive:  hover = lid lifts · active = closes shut
 *   trash:    hover = lid tips open · active = drops in
 *   users:    hover = warm halo gathers · active = press
 *   compass:  hover = needle spins · active = needle settles
 *   attach:   hover = clip swings · active = pins down
 *   comment:  hover = bubble pops up · active = presses in
 *   camera:   hover = shutter blinks · active = snaps
 *   folder:   hover = folder opens (tilts back) · active = closes
 *   file*:    hover = page corner flips up · active = presses flat
 *   upload:   hover = rises inviting · active = drops in
 *   newfolder:hover = plus spins open · active = snaps in
 *   more:     hover = dots breathe apart · active = press
 *   filter:   hover = funnel sifts · active = press
 *   book:     hover = pages flutter open · active = closes
 *   layers:   hover = layers lift apart · active = stacks flat
 *   message:  hover = bubble bounces · active = press
 *   check:    hover = check stamps in · active = presses flat
 *   globe:    hover = spins on axis · active = press
 *   refresh:  hover = winds up · active = spins through
 *   coin:     hover = coin flips · active = lands
 *   reply:    hover = arrow swings back · active = fires back
 *   info:     hover = glows brighter · active = press
 *   code:     hover = brackets spread · active = snaps shut
 *   up:       hover = rises · active = press
 */

/* ---------- extra keyframes ---------- */
@keyframes gicon-spin-once {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
@keyframes gicon-flip {
  0%, 100% { transform: rotateY(0deg); }
  50% { transform: rotateY(180deg); }
}
@keyframes gicon-sift {
  0%, 100% { transform: rotate(0deg); }
  25% { transform: rotate(5deg); }
  75% { transform: rotate(-5deg); }
}
@keyframes gicon-spread {
  0%, 100% { transform: scaleX(1); }
  50% { transform: scaleX(1.14); }
}
@keyframes gicon-rise {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}
@keyframes gicon-tip {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(-9deg); }
}

/* ---------- INBOX: arrow dips into tray · press = settles ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--inbox,
.gicon--inbox:hover {
  transform: translateY(3px) scale(1.05);
  filter: brightness(1.12);
  box-shadow: 0 0 16px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--inbox,
.gicon--inbox:active {
  transform: translateY(1px) scale(0.94);
  filter: brightness(0.93);
}

/* ---------- SEND: plane lifts off · press = launches ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--send,
.gicon--send:hover {
  transform: translate(3px, -3px) rotate(-6deg) scale(1.08);
  filter: brightness(1.16);
  box-shadow: 0 0 18px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--send,
.gicon--send:active {
  transform: translate(10px, -10px) scale(0.82);
  filter: brightness(1.3);
}

/* ---------- EDIT: pencil tilts to write · press = presses down ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--edit,
.gicon--edit:hover {
  transform: rotate(-12deg) translateY(-2px) scale(1.06);
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--edit,
.gicon--edit:active {
  transform: rotate(-12deg) translateY(3px) scale(0.94);
  filter: brightness(0.94);
}

/* ---------- ARCHIVE: lid lifts · press = closes shut ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--archive,
.gicon--archive:hover {
  transform: translateY(-3px) scale(1.05);
  filter: brightness(1.12);
  box-shadow: 0 8px 16px rgba(212, 175, 55, 0.28);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--archive,
.gicon--archive:active {
  transform: translateY(2px) scale(0.94);
  filter: brightness(0.92);
  box-shadow: inset 0 3px 8px rgba(120, 72, 10, 0.45);
}

/* ---------- TRASH: lid tips open · press = drops in ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--trash,
.gicon--trash:hover {
  transform-origin: 50% 20%;
  animation: gicon-tip 0.7s ease-in-out infinite;
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--trash,
.gicon--trash:active {
  animation: none;
  transform: translateY(4px) scale(0.92);
  filter: brightness(0.9);
}

/* ---------- USERS: halo gathers · press = press ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--users,
.gicon--users:hover {
  transform: scale(1.06);
  filter: brightness(1.1);
  box-shadow: 0 0 0 4px rgba(212, 175, 55, 0.25), 0 0 18px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--users,
.gicon--users:active {
  transform: scale(0.94);
  box-shadow: inset 0 2px 8px rgba(120, 72, 10, 0.45);
}

/* ---------- COMPASS: needle spins · press = settles ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--compass,
.gicon--compass:hover {
  animation: gicon-spin-once 0.9s ease-in-out;
  filter: brightness(1.14);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--compass,
.gicon--compass:active {
  animation: none;
  transform: scale(0.92) rotate(18deg);
  filter: brightness(0.94);
}

/* ---------- ATTACH: clip swings · press = pins ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--attach,
.gicon--attach:hover {
  transform-origin: 50% 8%;
  animation: gicon-bell-swing 1.1s ease-in-out infinite;
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--attach,
.gicon--attach:active {
  animation: none;
  transform: translateY(2px) scale(0.93);
  filter: brightness(0.94);
}

/* ---------- COMMENT: bubble pops up · press = presses in ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--comment,
.gicon--comment:hover {
  transform: translateY(-3px) scale(1.07);
  filter: brightness(1.13);
  box-shadow: 0 6px 14px rgba(212, 175, 55, 0.3);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--comment,
.gicon--comment:active {
  transform: scale(0.9);
  filter: brightness(0.93);
}

/* ---------- CAMERA: shutter blinks · press = snaps ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--camera,
.gicon--camera:hover {
  animation: gicon-play-pulse 1.2s ease-in-out infinite;
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--camera,
.gicon--camera:active {
  animation: none;
  transform: scale(0.88);
  filter: brightness(1.4);
}

/* ---------- FOLDER: opens (tilts back) · press = closes ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--folder,
.gicon--folder:hover {
  transform: perspective(400px) rotateX(-12deg) translateY(-2px) scale(1.05);
  filter: brightness(1.12);
  box-shadow: 0 6px 14px rgba(212, 175, 55, 0.3);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--folder,
.gicon--folder:active {
  transform: scale(0.94);
  filter: brightness(0.93);
}

/* ---------- FILE family: page corner flips up · press = flat ----------
 * (flat selectors keep specificity inside LAW 6 budget) */
.gicon--file:hover, .gicon--file-pdf:hover, .gicon--file-image:hover,
.gicon--file-video:hover, .gicon--file-audio:hover, .gicon--file-text:hover,
.gicon--file-zip:hover {
  transform: translateY(-3px) rotate(-3deg) scale(1.05);
  filter: brightness(1.12);
  box-shadow: 0 6px 14px rgba(212, 175, 55, 0.3);
}
.gicon--file:active, .gicon--file-pdf:active, .gicon--file-image:active,
.gicon--file-video:active, .gicon--file-audio:active, .gicon--file-text:active,
.gicon--file-zip:active {
  transform: scale(0.94);
  filter: brightness(0.93);
}

/* ---------- UPLOAD: rises inviting · press = drops in ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--upload,
.gicon--upload:hover {
  animation: gicon-rise 0.9s ease-in-out infinite;
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--upload,
.gicon--upload:active {
  animation: none;
  transform: translateY(4px) scale(0.93);
  filter: brightness(0.93);
}

/* ---------- NEWFOLDER: plus spins open · press = snaps in ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--newfolder,
.gicon--newfolder:hover {
  transform: rotate(90deg) scale(1.08);
  filter: brightness(1.13);
  box-shadow: 0 0 14px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--newfolder,
.gicon--newfolder:active {
  transform: rotate(90deg) scale(0.88);
  filter: brightness(0.94);
}

/* ---------- MORE: dots breathe apart · press = press ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--more,
.gicon--more:hover {
  animation: gicon-spread 0.8s ease-in-out infinite;
  filter: brightness(1.14);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--more,
.gicon--more:active {
  animation: none;
  transform: scale(0.9);
  filter: brightness(0.94);
}

/* ---------- FILTER: funnel sifts · press = press ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--filter,
.gicon--filter:hover {
  transform-origin: 50% 12%;
  animation: gicon-sift 0.8s ease-in-out infinite;
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--filter,
.gicon--filter:active {
  animation: none;
  transform: scale(0.92);
  filter: brightness(0.94);
}

/* ---------- BOOK: pages flutter open · press = closes ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--book,
.gicon--book:hover {
  transform: perspective(500px) rotateY(-10deg) scale(1.06);
  filter: brightness(1.12);
  box-shadow: 0 0 16px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--book,
.gicon--book:active {
  transform: perspective(500px) rotateY(6deg) scale(0.94);
  filter: brightness(0.93);
}

/* ---------- LAYERS: lift apart · press = stacks flat ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--layers,
.gicon--layers:hover {
  animation: gicon-rise 1s ease-in-out infinite;
  filter: brightness(1.13);
  box-shadow: 0 0 16px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--layers,
.gicon--layers:active {
  animation: none;
  transform: scale(1.04, 0.9);
  filter: brightness(0.94);
}

/* ---------- MESSAGE: bubble bounces · press = press ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--message,
.gicon--message:hover {
  animation: gicon-bounce 0.7s ease infinite;
  filter: brightness(1.12) saturate(1.1);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--message,
.gicon--message:active {
  animation: none;
  transform: scale(0.9);
  filter: brightness(0.94);
}

/* ---------- CHECK: stamps in · press = flat ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--check,
.gicon--check:hover {
  transform: scale(1.14) rotate(-6deg);
  filter: brightness(1.16);
  box-shadow: 0 0 16px var(--gicon-glow-soft);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--check,
.gicon--check:active {
  transform: scale(0.9);
  filter: brightness(0.94);
}

/* ---------- GLOBE: spins on axis · press = press ---------- */
.gicon--globe { transition: transform 0.6s ease, filter var(--gicon-ease), box-shadow var(--gicon-ease); }
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--globe,
.gicon--globe:hover {
  transform: rotate(40deg) scale(1.06);
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--globe,
.gicon--globe:active {
  transform: rotate(100deg) scale(0.94);
  filter: brightness(0.94);
}

/* ---------- REFRESH: winds up · press = spins through ---------- */
.gicon--refresh { transition: transform 0.5s ease, filter var(--gicon-ease), box-shadow var(--gicon-ease); }
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--refresh,
.gicon--refresh:hover {
  transform: rotate(120deg) scale(1.06);
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--refresh,
.gicon--refresh:active {
  transform: rotate(360deg) scale(0.94);
  filter: brightness(0.96);
}

/* ---------- COIN: flips · press = lands ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--coin,
.gicon--coin:hover {
  animation: gicon-flip 1.1s ease-in-out infinite;
  filter: brightness(1.14);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--coin,
.gicon--coin:active {
  animation: none;
  transform: scale(0.92);
  filter: brightness(0.95);
}

/* ---------- REPLY: arrow swings back · press = fires back ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--reply,
.gicon--reply:hover {
  transform: translateX(-3px) rotate(-8deg) scale(1.07);
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--reply,
.gicon--reply:active {
  transform: translateX(-8px) scale(0.9);
  filter: brightness(0.94);
}

/* ---------- INFO: glows brighter · press = press ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--info,
.gicon--info:hover {
  transform: scale(1.08);
  filter: brightness(1.22) saturate(1.15);
  box-shadow: 0 0 18px var(--gicon-glow-strong);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--info,
.gicon--info:active {
  transform: scale(0.92);
  filter: brightness(0.94);
}

/* ---------- CODE: brackets spread · press = snaps shut ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--code,
.gicon--code:hover {
  animation: gicon-spread 0.8s ease-in-out infinite;
  filter: brightness(1.13);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--code,
.gicon--code:active {
  animation: none;
  transform: scaleX(0.88) scaleY(0.94);
  filter: brightness(0.94);
}

/* ---------- UP: rises · press = press ---------- */
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon--up,
.gicon--up:hover {
  transform: translateY(-4px) scale(1.07);
  filter: brightness(1.12);
}
:is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):active .gicon--up,
.gicon--up:active {
  transform: translateY(1px) scale(0.92);
  filter: brightness(0.94);
}

/* ---------- reduced motion: no one gets left behind ---------- */
@media (prefers-reduced-motion: reduce) {
  .gicon, .gicon--settings {
    transition: none;
    animation: none;
  }
  :is(.gicon-btn, .gicon-nav, .gicon-action, .gicon-reader, .feed-action, a):hover .gicon,
  .gicon:hover {
    animation: none;
    transform: none;
  }
}
