    /* Fade */
    .fade-in { opacity:0; transform:translateY(20px); transition:opacity .6s ease,transform .6s ease; }
    .fade-in.d1{transition-delay:.1s} .fade-in.d2{transition-delay:.2s}
    .fade-in.visible { opacity:1; transform:none; }

    /* Card image */
    .card-img { transition:transform .5s ease; }
    .card-wrap:hover .card-img { transform:scale(1.05); }
    .card-wrap:hover h3 { color:#b8652a; }

    /* Filter */
    .cat-btn.active { background:#b8652a; color:#fff; border-color:#b8652a; }

    /* Article modal */
    #article-modal { display:none; position:fixed; inset:0; z-index:999; background:rgba(18,10,4,.92); backdrop-filter:blur(16px); overflow-y:auto; }
    #article-modal.open { display:block; }
    .modal-inner { max-width:720px; margin:5rem auto; background:#faf6ef; border-radius:20px; overflow:hidden; }
    .modal-body { padding:2.5rem; }
    .modal-body p { color:#4a3d2e; line-height:1.85; margin-bottom:1rem; font-size:.95rem; }
    .modal-body blockquote { border-left:3px solid #b8652a; padding-left:1.25rem; margin:1.5rem 0; font-style:italic; color:#7c4a2d; }
    .modal-close { position:sticky; top:1rem; float:right; width:36px; height:36px; border-radius:50%; background:rgba(58,46,30,.12); border:none; cursor:pointer; font-size:1.1rem; color:#3a2e1e; display:grid; place-items:center; }

    /* Search */
    #search-input:focus { outline:none; border-color:#b8652a; box-shadow:0 0 0 3px rgba(184,101,42,.10); }