/* ============================================================
   Tap motion — press, ink, bursts, gliders, landings
   ============================================================ */

/* overlay layer (lives in <body>, survives re-renders) */
.tap-layer { position: fixed; inset: 0; z-index: 400; pointer-events: none; overflow: hidden; }
.tap-ink-box { position: fixed; overflow: hidden; pointer-events: none; }
.tap-ink { position: absolute; border-radius: 50%; transform: scale(0); will-change: transform, opacity; }
.tap-spark { position: fixed; border-radius: 50%; pointer-events: none; will-change: transform, opacity; box-shadow: 0 0 8px currentColor; }
.tap-halo { position: fixed; width: 30px; height: 30px; border: 2px solid var(--accent); border-radius: 50%; pointer-events: none; }
.tap-float { position: fixed; font-size: 13px; font-weight: 700; letter-spacing: .01em; color: #9fdcff; text-shadow: 0 0 12px rgba(120, 200, 255, .6); white-space: nowrap; pointer-events: none; }
[data-theme="light"] .tap-float { color: #1b7fb8; text-shadow: none; }

/* press: tactile glow on primary buttons */
.btn, .ember-cta, .ck-submit, .tk-fab { transition: box-shadow .2s ease, filter .2s ease; }
.btn.tap-pressed, .ck-submit.tap-pressed { filter: brightness(1.06); box-shadow: 0 0 0 6px var(--accent-soft), 0 10px 28px color-mix(in srgb, var(--accent) 35%, transparent); }
.ember-cta.tap-pressed { box-shadow: 0 0 0 6px rgba(125, 157, 255, .16), 0 0 34px rgba(61, 109, 255, .5); }
.tr-tile.tap-pressed { border-color: color-mix(in srgb, var(--area, var(--accent)) 55%, transparent) !important; }

/* toggle switches squish while held */
.rem-time-row input[type="checkbox"]::after { transition: transform 180ms cubic-bezier(.22,1,.36,1), width 180ms cubic-bezier(.22,1,.36,1); }
.rem-time-row.tap-pressed input[type="checkbox"]::after { width: 30px; }
.rem-time-row.tap-pressed input[type="checkbox"]:checked::after { transform: translateX(14px); }
.tk-toggle.tap-pressed i::after { width: 26px; }
.tk-toggle.tap-pressed input:checked + i::after { transform: translateX(12px); }

/* ---------------- gliders ---------------- */
.has-glider { position: relative; }
.has-glider > :not(.tap-glider):not(.tab-cursor) { position: relative; z-index: 1; }
.tap-glider { position: absolute; left: 0; top: 0; z-index: 0; pointer-events: none; will-change: transform, width; }
:root .has-glider.has-glider > [aria-pressed="true"],
:root .has-glider.has-glider > [aria-current="page"],
:root .has-glider.has-glider > .on,
:root .has-glider.has-glider > .tab-btn.active { background: transparent !important; border-color: transparent !important; box-shadow: none !important; }
:root .tk-lists.has-glider > [aria-current="page"]::after { display: none; }
:root .has-glider.has-glider > :not(.tap-glider) { transition: color .22s ease, opacity .22s ease !important; }

.tap-glider-pill { background: var(--card-2); box-shadow: 0 1px 3px rgba(0, 0, 0, .28), inset 0 1px 0 rgba(255, 255, 255, .06); }
[data-theme="light"] .tap-glider-pill { background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .1); }
.tap-glider-chip { background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--accent); }
.tap-glider-line { background: var(--accent); }
[data-skin="ember"] .tap-glider-pill,
[data-skin="ember"] .tap-glider-chip { background: var(--blue-grad); box-shadow: 0 6px 18px rgba(47, 93, 242, .42); }
[data-skin="ember"] .tap-glider-tab { background: var(--blue-grad); box-shadow: 0 6px 18px rgba(47, 93, 242, .42), 0 0 26px rgba(61, 109, 255, .3); }
[data-skin="ember"] .reminder-modes .tap-glider-chip { background: rgba(61, 109, 255, .2); box-shadow: inset 0 0 0 1px rgba(125, 157, 255, .55); }

/* ---------------- landings (the control that was just tapped) ---------------- */
.ck-icons > .tap-landed .mood-face { animation: tapWiggle .55s cubic-bezier(.2,.8,.2,1); }
@keyframes tapWiggle { 0% { transform: rotate(0) scale(.9); } 30% { transform: rotate(-14deg) scale(1.15); } 60% { transform: rotate(10deg) scale(1.05); } 100% { transform: rotate(0) scale(1); } }

.ck-icons > .tap-landed .energy-icon rect:nth-of-type(n + 3) { transform-box: fill-box; transform-origin: 50% 100%; animation: tapBar .32s cubic-bezier(.3,1.4,.5,1) both; }
.ck-icons > .tap-landed .energy-icon rect:nth-of-type(4) { animation-delay: .05s; }
.ck-icons > .tap-landed .energy-icon rect:nth-of-type(5) { animation-delay: .1s; }
.ck-icons > .tap-landed .energy-icon rect:nth-of-type(6) { animation-delay: .15s; }
.ck-icons > .tap-landed .energy-icon rect:nth-of-type(7) { animation-delay: .2s; }
@keyframes tapBar { from { transform: scaleY(0); } }

.tr-tile.tap-landed .tr-ring { animation: tapRing .5s cubic-bezier(.3,1.4,.5,1); }
@keyframes tapRing { 0% { transform: rotate(-90deg) scale(.82); } 60% { transform: rotate(-90deg) scale(1.08); } 100% { transform: rotate(-90deg) scale(1); } }
.tr-tile.tap-landed .tr-value { animation: tapNumber .45s cubic-bezier(.3,1.4,.5,1); }
@keyframes tapNumber { 0% { transform: translateY(6px); opacity: .2; } 100% { transform: none; opacity: 1; } }

.ar-ring-card.tap-landed svg { animation: tapRing .5s cubic-bezier(.3,1.4,.5,1); }
.ember-day.tap-landed .ember-day-ring { animation: tapDay .5s cubic-bezier(.3,1.5,.5,1); }
@keyframes tapDay { 0% { transform: scale(.8); } 55% { transform: scale(1.12) translateY(-3px); } 100% { transform: none; } }
.ember-day { cursor: pointer; }

.theme-swatch.tap-landed .ts-chip { animation: tapSwatch .55s cubic-bezier(.3,1.5,.5,1); }
@keyframes tapSwatch { 0% { transform: scale(.8) rotate(-8deg); } 60% { transform: scale(1.1) rotate(4deg); } 100% { transform: none; } }

.tk-star.tap-landed, .hr-dot.tap-landed { animation: tapStar .4s cubic-bezier(.3,1.5,.5,1); }
@keyframes tapStar { 0% { transform: scale(.6) rotate(-20deg); } 60% { transform: scale(1.35) rotate(8deg); } 100% { transform: none; } }

.day-mode-trigger.tap-landed .day-mode-chevron, .ck-banner.tap-landed em { animation: tapNudge .4s ease; }
@keyframes tapNudge { 50% { transform: translateX(4px); } }

.hr-check.tap-landed[aria-pressed="false"] svg, .tk-check.tap-landed[aria-pressed="false"] svg { animation: tapUndo .35s ease; }
@keyframes tapUndo { 40% { transform: scale(.82) rotate(-12deg); } }

.ck-task-chips > .tap-landed, .area-pills > .tap-landed, .ob-chip.tap-landed, .tk-area-pick > .tap-landed { animation: tapChip .42s cubic-bezier(.3,1.5,.5,1); }
@keyframes tapChip { 0% { transform: scale(.9); } 55% { transform: scale(1.06); } 100% { transform: none; } }

.ck-habits > .tap-landed .ck-habit-mark { animation: tapRing2 .45s cubic-bezier(.3,1.5,.5,1); }
@keyframes tapRing2 { 0% { transform: scale(.7); } 60% { transform: scale(1.2); } 100% { transform: none; } }

@media (prefers-reduced-motion: reduce) {
  .tap-layer { display: none; }
  .tap-glider { transition: none !important; animation: none !important; }
  [class*="tap-landed"], .tap-landed * { animation: none !important; }
}
[data-motion="reduced"] .tap-layer { display: none; }
[data-motion="reduced"] .tap-landed, [data-motion="reduced"] .tap-landed * { animation: none !important; }
