/* Plenory v0.3.2 — cursor glow and tactile micro-interactions.
   This is an enhancement only: no pointer replacement, no touch effects. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  body.plenory-cursor-fx .plenory-cursor-aura,
  body.plenory-cursor-fx .plenory-cursor-orbit {
    position:fixed;
    left:0;
    top:0;
    pointer-events:none;
    z-index:120;
    opacity:0;
    will-change:transform,opacity;
    transition:opacity .2s ease, width .16s ease, height .16s ease;
  }
  body.plenory-cursor-fx .plenory-cursor-aura {
    width:230px;
    height:230px;
    border-radius:50%;
    background:radial-gradient(circle,rgba(86,109,158,.18) 0%,rgba(86,109,158,.095) 29%,transparent 69%);
    filter:blur(7px);
    transform:translate3d(calc(var(--plenory-mouse-x, -500px) - 115px),calc(var(--plenory-mouse-y, -500px) - 115px),0);
  }
  :root[data-theme="dark"] body.plenory-cursor-fx .plenory-cursor-aura {
    background:radial-gradient(circle,rgba(148,175,238,.22) 0%,rgba(125,156,226,.10) 31%,transparent 68%);
  }
  body.plenory-cursor-fx .plenory-cursor-orbit {
    width:20px;
    height:20px;
    border:1.5px solid rgba(86,109,158,.55);
    border-radius:50%;
    box-shadow:0 0 0 3px rgba(86,109,158,.055);
    transform:translate3d(calc(var(--plenory-mouse-x, -500px) - 10px),calc(var(--plenory-mouse-y, -500px) - 10px),0);
  }
  :root[data-theme="dark"] body.plenory-cursor-fx .plenory-cursor-orbit {border-color:rgba(180,203,251,.66);box-shadow:0 0 0 3px rgba(180,203,251,.065)}
  body.plenory-cursor-fx.plenory-pointer-inside .plenory-cursor-aura {opacity:.7}
  body.plenory-cursor-fx.plenory-pointer-inside .plenory-cursor-orbit {opacity:.43}
  body.plenory-cursor-fx.plenory-pointer-hot .plenory-cursor-aura {opacity:1}
  body.plenory-cursor-fx.plenory-pointer-hot .plenory-cursor-orbit {opacity:.75;width:32px;height:32px;transform:translate3d(calc(var(--plenory-mouse-x, -500px) - 16px),calc(var(--plenory-mouse-y, -500px) - 16px),0)}
  body.plenory-cursor-fx.plenory-pointer-text .plenory-cursor-orbit {opacity:0}

  /* The spotlight follows the pointer across the surface beneath it. */
  body.plenory-cursor-fx .card,
  body.plenory-cursor-fx .entry-preview,
  body.plenory-cursor-fx .level-card,
  body.plenory-cursor-fx .nav-sort-row {
    position:relative;
    isolation:isolate;
  }
  body.plenory-cursor-fx .card::before,
  body.plenory-cursor-fx .entry-preview::before,
  body.plenory-cursor-fx .level-card::before,
  body.plenory-cursor-fx .nav-sort-row::before {
    content:"";
    position:absolute;
    inset:0;
    border-radius:inherit;
    pointer-events:none;
    z-index:1;
    opacity:0;
    background:radial-gradient(360px circle at var(--plenory-local-x,50%) var(--plenory-local-y,50%),rgba(86,109,158,.105),transparent 62%);
    transition:opacity .2s ease;
  }
  :root[data-theme="dark"] body.plenory-cursor-fx .card::before,
  :root[data-theme="dark"] body.plenory-cursor-fx .entry-preview::before,
  :root[data-theme="dark"] body.plenory-cursor-fx .level-card::before,
  :root[data-theme="dark"] body.plenory-cursor-fx .nav-sort-row::before {
    background:radial-gradient(360px circle at var(--plenory-local-x,50%) var(--plenory-local-y,50%),rgba(158,187,247,.125),transparent 64%);
  }
  body.plenory-cursor-fx .card:hover::before,
  body.plenory-cursor-fx .entry-preview:hover::before,
  body.plenory-cursor-fx .level-card:hover::before,
  body.plenory-cursor-fx .nav-sort-row:hover::before {opacity:1}
  body.plenory-cursor-fx .card:hover,
  body.plenory-cursor-fx .level-card:hover,
  body.plenory-cursor-fx .nav-sort-row:hover {border-color:color-mix(in srgb, var(--brand) 34%, var(--border));}
  body.plenory-cursor-fx .stat-card:hover,
  body.plenory-cursor-fx .note-card:hover,
  body.plenory-cursor-fx .entry-preview:hover {transform:translateY(-2px)}
  body.plenory-cursor-fx .entry-preview {transition:transform .23s ease,box-shadow .23s ease}
  body.plenory-cursor-fx .entry-preview:hover {box-shadow:0 18px 55px rgba(0,0,0,.14)}

  /* Smooth, purposeful reactions on controls. */
  body.plenory-cursor-fx :is(.primary-btn,.outline-btn,.ghost-btn,.icon-btn,.tiny-btn,.filter-chip,.entry-submit,.entry-mode-btn,.entry-tabs button,.theme-option) {
    transition:background-color .19s ease,color .19s ease,box-shadow .2s ease,border-color .2s ease,transform .2s ease;
  }
  body.plenory-cursor-fx :is(.primary-btn,.outline-btn,.ghost-btn,.icon-btn,.filter-chip,.entry-submit,.entry-mode-btn,.theme-option):not(:disabled):hover {transform:translateY(-2px)}
  body.plenory-cursor-fx :is(.primary-btn,.entry-submit):not(:disabled):hover {box-shadow:0 9px 25px rgba(86,109,158,.24)}
  body.plenory-cursor-fx :is(.icon-btn,.tiny-btn,.entry-mode-btn,.theme-option):not(:disabled):hover {box-shadow:0 5px 16px rgba(86,109,158,.11)}
  body.plenory-cursor-fx .nav-link:not(:disabled):hover {box-shadow:inset 3px 0 0 rgba(86,109,158,.45)}
  body.plenory-cursor-fx .task-item {transition:background-color .18s ease}
  body.plenory-cursor-fx .task-item:hover {background:var(--nav-hover)}

  body.plenory-cursor-fx .plenory-ripple-target {position:relative;overflow:hidden}
  body.plenory-cursor-fx .plenory-click-ripple {
    position:absolute;
    width:14px;height:14px;
    left:var(--plenory-click-x,50%);top:var(--plenory-click-y,50%);
    margin-left:-7px;margin-top:-7px;
    border-radius:50%;pointer-events:none;z-index:3;
    background:rgba(148,174,232,.45);
    animation:plenory-ripple .48s ease-out forwards;
  }
  @keyframes plenory-ripple {from{opacity:.55;transform:scale(.3)}to{opacity:0;transform:scale(17)}}
}
@media (hover:none),(pointer:coarse),(prefers-reduced-motion:reduce) {
  .plenory-cursor-aura,.plenory-cursor-orbit,.plenory-click-ripple{display:none!important}
}
