/*
Theme Name: Aitourir
Theme URI: https://aitourir.com
Author: Aitourir.com
Author URI: https://aitourir.com
Description: Thème WordPress sur mesure pour Aitourir.com — le portail local d'Ait Ourir (météo, pharmacie de garde, prière, urgences, actualités, annuaire, emploi, immobilier, jours fériés, vacances scolaires, FAQ). Entièrement pilotable depuis le tableau de bord WordPress.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: aitourir
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/

/* ==========================================================================
   Le CSS complet ci-dessous reprend fidèlement le design validé du prototype
   statique (mêmes couleurs, mêmes cartes, même comportement responsive).
   ========================================================================== */


  :root{
    --plaster:#FFFFFF;
    --plaster-2:#DFE1E4;
    --ink:#241B12;
    --ink-soft:#4A4030;
    --piment:#1F6F4A;
    --piment-dark:#14472F;
    --olive:#4F5D2F;
    --olive-light:#7C8E52;
    --ardoise:#2A2420;
    --ardoise-2:#352E28;
    --filet:#B7A47C;
    --paper:#FDFBF3;
    --radius:14px;
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--plaster);
    background-image:
      radial-gradient(circle at 1px 1px, rgba(36,27,18,0.05) 1px, transparent 0);
    background-size:22px 22px;
    color:var(--ink);
    font-family:'Plus Jakarta Sans', sans-serif;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3{font-family:'Plus Jakarta Sans', sans-serif; font-weight:700; margin:0;}
  a{color:inherit;}

  /* focus visibility */
  a:focus-visible, button:focus-visible{
    outline:2px solid var(--piment);
    outline-offset:2px;
  }

  /* ---------- MASTHEAD ---------- */
  header.masthead{
    background:#000000;
    color:var(--paper);
    padding:18px 20px 16px;
    position:sticky;
    top:0;
    z-index:20;
    border-bottom:3px solid var(--piment);
  }
  .masthead-row{
    max-width:1080px;
    margin:0 auto;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    flex-wrap:wrap;
  }
  .masthead-right{
    display:flex;
    align-items:center;
    gap:14px;
    flex-wrap:wrap;
  }
  .wordmark{
    font-size:clamp(19px, 3vw, 24px);
    font-weight:700;
    letter-spacing:0.5px;
  }
  .wordmark .dot{color:var(--piment);}
  .wordmark .tld{color:var(--filet); font-weight:500;}

  /* ---------- BOUTON HEADER + MODALE CONTACT ---------- */
  .header-cta{
    font-family:'Plus Jakarta Sans', sans-serif;
    font-size:13px;
    font-weight:700;
    color:var(--paper);
    background:var(--piment);
    border:none;
    padding:9px 16px;
    border-radius:999px;
    cursor:pointer;
    white-space:nowrap;
  }
  .header-cta:hover{background:var(--piment-dark);}

  .modal-overlay{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(36,27,18,0.55);
    z-index:100;
    align-items:center;
    justify-content:center;
    padding:20px;
  }
  .modal-overlay.show{display:flex;}
  .modal-card{
    position:relative;
    background:var(--paper);
    border-radius:var(--radius);
    padding:26px 24px;
    max-width:420px;
    width:100%;
    max-height:90vh;
    overflow-y:auto;
    box-shadow:0 10px 40px rgba(36,27,18,0.35);
  }
  .modal-card h2{font-size:19px; margin-bottom:4px;}
  .modal-sub{font-size:13px; color:var(--ink-soft); margin-bottom:16px;}
  .modal-close{
    position:absolute;
    top:14px; right:14px;
    background:none;
    border:none;
    font-size:16px;
    color:var(--ink-soft);
    cursor:pointer;
    line-height:1;
    padding:4px;
  }
  .modal-close:hover{color:var(--piment);}
  #contactForm{display:flex; flex-direction:column; gap:10px;}
  #contactForm label{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:0.5px;
    color:var(--ink-soft);
    margin-bottom:-5px;
  }
  #contactForm input,
  #contactForm select,
  #contactForm textarea{
    font-family:'Plus Jakarta Sans', sans-serif;
    font-size:14px;
    padding:9px 11px;
    border:1px solid var(--filet);
    border-radius:8px;
    background:var(--plaster);
    color:var(--ink);
    resize:vertical;
  }
  #contactForm input:focus,
  #contactForm select:focus,
  #contactForm textarea:focus{outline:2px solid var(--piment); outline-offset:1px;}
  .modal-submit{
    margin-top:6px;
    font-family:'Plus Jakarta Sans', sans-serif;
    font-weight:700;
    font-size:14px;
    color:var(--paper);
    background:var(--piment);
    border:none;
    padding:11px 16px;
    border-radius:8px;
    cursor:pointer;
  }
  .modal-submit:hover{background:var(--piment-dark);}
  @media (max-width:520px){
    .header-cta{font-size:12px; padding:8px 12px;}
  }

  /* ---------- TICKER (signature element) ---------- */
  .ticker-wrap{
    background:var(--piment);
    color:var(--paper);
    overflow:hidden;
    white-space:nowrap;
    border-bottom:1px solid var(--piment-dark);
  }
  .ticker-track{
    display:inline-flex;
    padding:9px 0;
    animation:scroll-left 38s linear infinite;
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    letter-spacing:0.2px;
  }
  .ticker-track span{padding:0 28px; white-space:nowrap;}
  .ticker-track span + span{border-left:1px solid rgba(244,238,220,0.35);}
  @keyframes scroll-left{
    0%{transform:translateX(0);}
    100%{transform:translateX(-50%);}
  }
  @media (prefers-reduced-motion: reduce){
    .ticker-track{animation:none; overflow-x:auto;}
  }

  /* ---------- TOOLBAR : recherche + sommaire ---------- */
  [id^="section-"]{scroll-margin-top:118px;}

  .toolbar{
    background:var(--paper);
    border-bottom:1px solid var(--filet);
    padding:12px 20px;
  }
  .toolbar-inner{max-width:1080px; margin:0 auto;}
  .search-wrap{
    position:relative;
    max-width:1080px;
    margin:0 auto 10px;
  }
  .search-icon{
    position:absolute;
    left:12px;
    top:50%;
    transform:translateY(-50%);
    font-size:14px;
    opacity:0.7;
  }
  #globalSearch{
    width:100%;
    padding:10px 14px 10px 34px;
    border:1px solid var(--filet);
    border-radius:10px;
    background:var(--plaster);
    color:var(--ink);
    font-family:'Plus Jakarta Sans', sans-serif;
    font-size:14px;
  }
  #globalSearch:focus{outline:2px solid var(--piment); outline-offset:1px;}
  .search-results{
    position:absolute;
    left:0; right:0; top:calc(100% + 4px);
    background:var(--paper);
    border:1px solid var(--filet);
    border-radius:10px;
    box-shadow:0 6px 18px rgba(36,27,18,0.15);
    max-height:340px;
    overflow-y:auto;
    z-index:30;
    display:none;
  }
  .search-results.show{display:block;}
  .search-result{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:10px;
    padding:10px 14px;
    border-bottom:1px solid var(--filet);
    cursor:pointer;
    font-size:13.5px;
  }
  .search-result:last-child{border-bottom:none;}
  .search-result:hover{background:rgba(31,111,74,0.08);}
  .search-result .sr-type{
    font-family:'IBM Plex Mono', monospace;
    font-size:10.5px;
    text-transform:uppercase;
    color:var(--piment);
    white-space:nowrap;
  }
  .search-empty{padding:14px; font-size:13px; color:var(--ink-soft); text-align:center;}

  .toc{
    max-width:1080px;
    margin:0 auto;
    display:flex;
    gap:8px;
    overflow-x:auto;
    padding-bottom:2px;
  }
  .toc a{
    flex:0 0 auto;
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    padding:6px 13px;
    border-radius:999px;
    border:1px solid var(--filet);
    color:var(--ink-soft);
    text-decoration:none;
    white-space:nowrap;
  }
  .toc a:hover{border-color:var(--piment); color:var(--piment);}

  /* ---------- URGENCES ---------- */
  .emergency-card{border:1px solid var(--piment);}
  #section-immobilier{background:var(--paper);}

  .emergency-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));
    gap:10px;
  }
  .emergency-item{
    display:flex;
    flex-direction:column;
    align-items:center;
    text-align:center;
    gap:4px;
    padding:14px 8px;
    border:1px solid var(--filet);
    border-radius:10px;
    background:rgba(31,111,74,0.06);
  }
  .emergency-item .e-icon{
    color:var(--piment);
    display:flex;
    align-items:center;
    justify-content:center;
  }
  .emergency-item .e-icon svg{width:26px; height:26px; display:block;}
  .emergency-item .e-label{font-size:12px; color:var(--ink); font-weight:700;}
  .emergency-item a{
    font-family:'IBM Plex Mono', monospace;
    font-weight:800;
    color:var(--piment);
    font-size:16px;
    text-decoration:none;
  }
  .emergency-item .e-tbd{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    font-weight:700;
    color:var(--ink-soft);
  }


  /* ---------- LAYOUT ---------- */
  .content-shell{
    max-width:1500px;
    margin:0 auto;
    display:flex;
    justify-content:center;
    align-items:flex-start;
    gap:18px;
    padding:0 18px;
  }
  .side-rail{
    display:none;
    flex:0 0 160px;
    width:160px;
    position:sticky;
    top:130px;
  }
  @media (min-width:1440px){
    .side-rail{display:block;}
  }
  .ad-vertical{
    height:560px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:10px;
    padding:16px 12px;
  }
  .ad-vertical p{font-size:12.5px;}

  main{
    max-width:1080px;
    margin:0 auto;
    padding:22px 20px 40px;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:18px;
    flex:1 1 auto;
    min-width:0;
  }
  @media (max-width:760px){
    main{grid-template-columns:1fr; padding:16px 14px 32px;}
  }
  .span-2{grid-column:1 / -1;}
  .intro-text{
    font-size:14px;
    line-height:1.65;
    color:var(--ink-soft);
    margin:0 0 4px;
    max-width:820px;
  }
  .intro-text strong{color:var(--ink); font-weight:700;}

  /* ---------- FAQ ---------- */
  .faq-list{display:flex; flex-direction:column; gap:16px;}
  .faq-item{padding-bottom:14px; border-bottom:1px solid var(--filet);}
  .faq-item:last-child{border-bottom:none; padding-bottom:0;}
  .faq-item h3{
    font-size:14.5px;
    font-weight:700;
    margin:0 0 5px;
    color:var(--ink);
  }
  .faq-item p{
    font-size:13.5px;
    line-height:1.55;
    color:var(--ink-soft);
    margin:0;
  }

  /* ---------- CARD BASE ---------- */
  .card{
    background:var(--paper);
    border:1px solid var(--filet);
    border-radius:var(--radius);
    padding:20px;
    box-shadow:0 1px 0 rgba(36,27,18,0.05);
  }
  .card-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    margin-bottom:14px;
    gap:10px;
  }
  .card-head h2{
    font-size:19px;
    font-weight:600;
  }
  .eyebrow{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:1.2px;
    color:var(--olive);
  }

  /* ---------- MÉTÉO (dark panel, "kiosk" feel) ---------- */
  .weather-card{
    background:linear-gradient(135deg, #FBF1D8 0%, #C8E6EF 100%);
    color:var(--ink);
    border:1px solid var(--filet);
    position:relative;
    overflow:hidden;
    transition:background 0.5s ease;
  }
  .weather-card.wx-clear{background:linear-gradient(135deg, #FBF1D8 0%, #C8E6EF 100%);}
  .weather-card.wx-cloudy{background:linear-gradient(135deg, #F1F5F6 0%, #D7E4E9 100%);}
  .weather-card.wx-fog{background:linear-gradient(135deg, #F4F1E6 0%, #E1E8E1 100%);}
  .weather-card.wx-rain{background:linear-gradient(135deg, #E7F1F5 0%, #C6DEE9 100%);}
  .weather-card.wx-storm{background:linear-gradient(135deg, #DEE5EF 0%, #BAC7DF 100%);}
  .weather-card.wx-snow{background:linear-gradient(135deg, #F2F8FA 0%, #E1EDF1 100%);}
  .weather-card .eyebrow{color:var(--piment);}
  .weather-bg{
    position:absolute;
    inset:0;
    z-index:0;
  }
  .weather-bg svg{
    width:100%;
    height:100%;
    display:block;
  }
  .weather-scrim{
    position:absolute;
    inset:0;
    z-index:1;
    background:linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.30) 100%);
    pointer-events:none;
  }
  .weather-card .card-head,
  .weather-card .weather-main,
  .weather-card .weather-sub{
    position:relative;
    z-index:2;
  }

  /* ---------- PRIÈRE (fond illustré) ---------- */
  .prayer-card{
    background:linear-gradient(135deg, #FBF1D8 0%, #D7E8DC 100%);
    position:relative;
    overflow:hidden;
  }
  .prayer-bg{
    position:absolute;
    inset:0;
    z-index:0;
  }
  .prayer-bg svg{
    width:100%;
    height:100%;
    display:block;
  }
  .prayer-card .card-head,
  .prayer-card .prayer-list,
  .prayer-card .prayer-countdown{
    position:relative;
    z-index:2;
  }
  .weather-main{
    display:flex;
    align-items:center;
    gap:18px;
    margin-top:6px;
  }
  .weather-temp{
    font-family:'IBM Plex Mono', monospace;
    font-size:56px;
    font-weight:600;
    line-height:1;
    color:var(--ink);
  }
  .weather-icon{font-size:44px; line-height:1;}
  .weather-desc{font-size:15px; color:var(--ink-soft); margin-top:4px;}
  .weather-sub{
    display:flex;
    gap:22px;
    margin-top:16px;
    padding-top:14px;
    border-top:1px solid rgba(183,164,124,0.35);
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    color:var(--ink-soft);
    flex-wrap:wrap;
  }
  .weather-sub b{color:var(--ink); font-weight:600;}
  .weather-forecast{
    display:flex;
    gap:10px;
    margin-top:12px;
    padding-top:12px;
    border-top:1px solid rgba(183,164,124,0.35);
    position:relative;
    z-index:2;
  }
  .weather-forecast-day{
    flex:1;
    text-align:center;
    font-family:'IBM Plex Mono', monospace;
  }
  .weather-forecast-day .wf-label{
    display:block;
    font-size:11.5px;
    font-weight:700;
    color:var(--ink);
    text-transform:capitalize;
  }
  .weather-forecast-day .wf-icon{
    display:block;
    font-size:19px;
    margin:3px 0;
  }
  .weather-forecast-day .wf-temp{
    font-size:11.5px;
    color:var(--ink-soft);
  }
  .weather-forecast-day .wf-temp b{color:var(--ink); font-weight:600;}


  /* ---------- PRIÈRE ---------- */
  .prayer-list{list-style:none; margin:0; padding:0;}
  .prayer-list li{
    display:flex;
    justify-content:space-between;
    padding:8px 0;
    border-bottom:1px dashed var(--filet);
    font-family:'IBM Plex Mono', monospace;
    font-size:14px;
  }
  .prayer-list li:last-child{border-bottom:none;}
  .prayer-list li.active{
    background:var(--piment);
    color:var(--paper);
    border-radius:8px;
    padding:8px 10px;
    margin:2px -10px;
    border-bottom:none;
    font-weight:600;
  }
  .prayer-countdown{
    margin-top:12px;
    padding-top:12px;
    border-top:1px solid var(--filet);
    font-size:13px;
    color:var(--ink-soft);
  }
  .prayer-countdown strong{color:var(--piment); font-family:'IBM Plex Mono', monospace;}

  /* ---------- PHARMACIE (full width band) ---------- */
  .pharmacy-card{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    flex-wrap:wrap;
    background:linear-gradient(135deg, #F4FBF7 0%, #DCF0E6 100%);
    position:relative;
    overflow:hidden;
  }
  .pharmacy-bg{
    position:absolute;
    inset:0;
    z-index:0;
  }
  .pharmacy-bg svg{
    width:100%;
    height:100%;
    display:block;
  }
  .pharmacy-card .pharmacy-info,
  .pharmacy-card .pharmacy-badge{
    position:relative;
    z-index:2;
  }
  .pharmacy-info h3{font-size:20px; margin-bottom:4px;}
  .pharmacy-info p{margin:2px 0; font-size:14px; color:var(--ink-soft);}
  .pharmacy-badge{
    background:var(--piment);
    color:var(--paper);
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:0.6px;
    text-transform:uppercase;
    padding:6px 12px;
    border-radius:999px;
    white-space:nowrap;
  }
  .pharmacy-call{
    display:inline-block;
    margin-top:8px;
    font-size:13px;
    color:var(--piment);
    font-weight:600;
    text-decoration:none;
  }

  /* ---------- LISTES (actus / événements) ---------- */
  .item-list{list-style:none; margin:0; padding:0;}
  .item-list li{
    padding:11px 0;
    border-bottom:1px solid var(--filet);
  }
  .item-list li:last-child{border-bottom:none;}
  .item-list .item-title{
    font-size:14.5px;
    font-weight:500;
    line-height:1.4;
    display:block;
  }
  .item-list .item-meta{
    font-family:'IBM Plex Mono', monospace;
    font-size:11.5px;
    color:var(--olive);
    text-transform:uppercase;
    letter-spacing:0.4px;
  }
  .event-date-chip{
    display:inline-block;
    background:var(--piment);
    color:var(--paper);
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    padding:3px 8px;
    border-radius:6px;
    margin-right:8px;
  }

  /* ---------- ESPACE PUB ---------- */
  .ad-slot{
    border:1.5px dashed var(--filet);
    border-radius:var(--radius);
    background:repeating-linear-gradient(135deg, rgba(183,164,124,0.10), rgba(183,164,124,0.10) 10px, transparent 10px, transparent 20px);
    padding:22px;
    text-align:center;
    color:var(--ink-soft);
  }
  .ad-slot .eyebrow{color:var(--ink-soft); margin-bottom:6px; display:block;}
  .ad-slot p{margin:4px 0 10px; font-size:13.5px;}
  .ad-slot a{
    font-size:13px;
    font-weight:600;
    color:var(--piment);
    text-decoration:none;
    border-bottom:1px solid var(--piment);
    padding-bottom:1px;
  }

  /* ---------- SÉPARATEURS DE SECTION ---------- */
  .section-label{
    grid-column:1 / -1;
    display:flex;
    align-items:center;
    gap:10px;
    margin:6px 0 -4px;
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:1.4px;
    text-transform:uppercase;
    color:var(--ink-soft);
  }
  .section-label::after{
    content:'';
    flex:1;
    height:1px;
    background:var(--filet);
  }
  .section-label .diamond{color:var(--piment);}

  /* ---------- BADGES annonces ---------- */
  .tag{
    display:inline-block;
    font-family:'IBM Plex Mono', monospace;
    font-size:10.5px;
    text-transform:uppercase;
    letter-spacing:0.5px;
    padding:2px 8px;
    border-radius:5px;
    margin-right:8px;
    vertical-align:middle;
  }
  .tag-cdi{background:var(--olive); color:var(--paper);}
  .tag-cdd{background:var(--filet); color:var(--ink);}
  .tag-interim{background:var(--ink-soft); color:var(--paper);}
  .tag-stage{background:var(--piment); color:var(--paper);}

  /* ---------- ANNUAIRE LOCAL ---------- */
  .directory-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(230px, 1fr));
    gap:14px;
  }
  .directory-card{
    border:1px solid var(--filet);
    border-radius:10px;
    padding:14px 16px;
    background:rgba(183,164,124,0.08);
    transition:box-shadow .15s ease;
  }
  .directory-card:hover{box-shadow:0 2px 8px rgba(36,27,18,0.10);}
  .directory-card h4{
    font-size:14.5px;
    font-weight:700;
    margin:0 0 8px;
    padding-bottom:7px;
    border-bottom:1px solid rgba(183,164,124,0.45);
    font-family:'Plus Jakarta Sans', sans-serif;
  }
  .dc-row{
    display:flex;
    align-items:flex-start;
    gap:7px;
    font-size:12.5px;
    color:var(--ink-soft);
    margin:5px 0;
    line-height:1.45;
  }
  .dc-row .dc-icon{flex:0 0 16px;}
  .dc-row a{color:var(--piment); font-weight:600; text-decoration:none;}

  .listing-price{
    font-family:'IBM Plex Mono', monospace;
    font-weight:600;
    color:var(--piment);
    font-size:13.5px;
    white-space:nowrap;
  }
  .listing-row{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    gap:10px;
  }
  .card-footer-link{
    display:inline-block;
    margin-top:12px;
    font-size:12.5px;
    font-weight:600;
    color:var(--piment);
    text-decoration:none;
    border-bottom:1px solid var(--piment);
  }

  footer{
    background:#000000;
    color:var(--filet);
    text-align:center;
    padding:24px 20px 30px;
    font-size:12.5px;
    font-family:'IBM Plex Mono', monospace;
    border-top:3px solid var(--piment);
  }
  footer .dot{color:var(--piment);}
  footer a{color:var(--paper);}

  /* ---------- ESPACES PUB LATÉRAUX (verticaux) ---------- */
  .side-ad{
    display:none;
    position:fixed;
    top:150px;
    width:160px;
    min-height:480px;
    max-height:70vh;
    border:1.5px dashed var(--filet);
    border-radius:var(--radius);
    background:repeating-linear-gradient(135deg, rgba(183,164,124,0.10), rgba(183,164,124,0.10) 10px, transparent 10px, transparent 20px);
    padding:22px 14px;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    color:var(--ink-soft);
    z-index:5;
  }
  .side-ad .eyebrow{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:1.2px;
    color:var(--olive);
    margin-bottom:8px;
  }
  .side-ad p{font-size:13px; margin:4px 0 12px; line-height:1.4;}
  .side-ad a{
    font-size:13px;
    font-weight:600;
    color:var(--piment);
    text-decoration:none;
    border-bottom:1px solid var(--piment);
    padding-bottom:1px;
  }
  .side-ad-left{left:calc(50% - 710px);}
  .side-ad-right{right:calc(50% - 710px);}

  @media (min-width:1440px){
    .side-ad{display:flex;}
  }

  .skeleton{color:var(--ink-soft); font-style:italic; font-size:13px;}
