/*
Theme Name: Kanoufi Academic
Theme URI: https://frederic-kanoufi.org/
Author: Frédéric Kanoufi / custom implementation
Description: Restrained academic WordPress theme based on the approved Spectral / IBM Plex visual design.
Version: 1.0.0
Requires at least: 6.4
Requires PHP: 7.4
Text Domain: kanoufi-academic
*/

  :root{
    --paper:#f4f5f6;
    --card:#ffffff;
    --ink:#14181d;
    --deep:#0d2740;          /* prussian / ink blue */
    --accent:#0f8a92;        /* teal — links, markers */
    --accent-deep:#0c6c73;
    --muted:#5c6672;
    --faint:#8a929c;
    --line:#e5e7ea;
    --line-soft:#eef0f2;
    --tint:#eef4f4;          /* faint teal tile */
    /* signature: thin-film interference band (reflectance microscopy nod) */
    --interference:linear-gradient(90deg,#79c9c6 0%,#6fb2e0 20%,#8f9edd 40%,#b79ad2 58%,#e0b291 78%,#d8ce8a 100%);
    --sidebar-w:288px;
    --maxread:820px;
  }
  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  @media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
  body{
    margin:0;background:var(--paper);color:var(--ink);
    font-family:"IBM Plex Sans",system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
    font-size:16px;line-height:1.62;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  }
  a{color:var(--accent-deep);text-decoration:none}
  a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
  ::selection{background:#cfe8e8}
  :focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}

  /* ---------- Layout ---------- */
  .wrap{display:flex;min-height:100vh;align-items:stretch}
  .sidebar{
    width:var(--sidebar-w);flex:0 0 var(--sidebar-w);
    position:sticky;top:0;align-self:flex-start;height:100vh;
    background:var(--card);border-right:1px solid var(--line);
    padding:34px 26px 22px;display:flex;flex-direction:column;gap:20px;overflow-y:auto;
  }
  .sidebar::-webkit-scrollbar{width:8px}
  .sidebar::-webkit-scrollbar-thumb{background:#dfe2e6;border-radius:8px}

  .id{display:flex;flex-direction:column;gap:14px}
  .portrait{width:96px;height:96px;border-radius:12px;object-fit:cover;
    border:1px solid var(--line);box-shadow:0 1px 0 #fff,0 6px 22px rgba(13,39,64,.10)}
  .name{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:25px;line-height:1.12;color:var(--deep);letter-spacing:.1px;margin:2px 0 0}
  .role{font-size:13.5px;color:var(--muted);line-height:1.45}
  .role strong{color:var(--ink);font-weight:600}
  .kw{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-deep);line-height:2}
  .band{height:3px;border-radius:3px;background:var(--interference);opacity:.9}

  nav.main{display:flex;flex-direction:column;gap:2px;margin-top:2px}
  nav.main a{
    position:relative;display:flex;align-items:baseline;gap:10px;
    font-size:15px;color:var(--ink);padding:7px 8px 7px 10px;border-radius:7px;
    text-decoration:none;transition:background .15s ease,color .15s ease;
  }
  nav.main a .n{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--faint);min-width:20px}
  nav.main a:hover{background:var(--line-soft);color:var(--deep)}
  nav.main a.active{background:var(--tint);color:var(--deep);font-weight:600}
  nav.main a.active::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--interference)}

  .socials{display:flex;gap:8px;margin-top:auto;padding-top:8px}
  .socials a{width:34px;height:34px;border:1px solid var(--line);border-radius:8px;display:grid;place-items:center;color:var(--muted);background:#fff;transition:all .15s ease}
  .socials a:hover{color:var(--accent-deep);border-color:#cfd9da;background:var(--tint)}
  .socials svg{width:17px;height:17px;display:block}
  .foot{font-size:11px;color:var(--faint);line-height:1.5}

  /* ---------- Main ---------- */
  main{flex:1 1 auto;min-width:0;padding:0}
  .view{display:none;max-width:calc(var(--maxread) + 96px);padding:56px 48px 96px;margin:0 auto}
  .view.active{display:block;animation:fade .4s ease both}
  @keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

  .eyebrow{font-family:"IBM Plex Mono",monospace;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-deep);display:inline-flex;flex-direction:column;gap:6px;margin-bottom:14px}
  .eyebrow::after{content:"";height:2px;width:44px;background:var(--interference);border-radius:2px}

  h1.hero{font-family:"Spectral",Georgia,serif;font-weight:600;color:var(--deep);
    font-size:clamp(30px,4.2vw,46px);line-height:1.08;letter-spacing:-.2px;margin:0 0 18px;max-width:16ch}
  .lede{font-size:19px;line-height:1.55;color:var(--ink);max-width:62ch;margin:0 0 8px}
  .lede .q{font-family:"Spectral",Georgia,serif;font-style:italic;color:var(--deep)}
  p.body{max-width:66ch;color:#2b3138;margin:16px 0}
  h2.sec{font-family:"Spectral",Georgia,serif;font-weight:600;color:var(--deep);font-size:26px;letter-spacing:-.2px;margin:52px 0 6px}
  h2.sec.first{margin-top:40px}
  .sub{color:var(--muted);font-size:14.5px;margin:0 0 22px;max-width:64ch}

  /* research interest cards */
  .grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:8px}
  .rcard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 20px 22px;transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease}
  .rcard:hover{box-shadow:0 10px 30px rgba(13,39,64,.08);border-color:#d7dee0;transform:translateY(-2px)}
  .rcard .ic{width:46px;height:46px;border-radius:11px;background:var(--tint);display:grid;place-items:center;color:var(--accent-deep);margin-bottom:14px;border:1px solid #e0eaea}
  .rcard .ic svg{width:26px;height:26px}
  .rcard h3{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:18px;color:var(--deep);margin:0 0 6px;line-height:1.2}
  .rcard p{margin:0;font-size:14px;line-height:1.55;color:#3a414a}
  .rcard .tag{display:inline-block;margin-top:10px;font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-deep);background:var(--tint);border:1px solid #dcebeb;padding:3px 8px;border-radius:20px}

  /* recent direction callout */
  .callout{margin-top:22px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:12px;background:linear-gradient(180deg,#fbfdfd,#f7fafa);padding:20px 22px;position:relative;overflow:hidden}
  .callout::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--interference);opacity:.85}
  .callout h3{font-family:"Spectral",Georgia,serif;font-weight:600;color:var(--deep);margin:0 0 6px;font-size:19px}
  .callout p{margin:0;font-size:14.5px;color:#333a42;max-width:70ch}

  /* selected + publication list */
  .pub{padding:15px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start}
  .pub:first-of-type{border-top:none}
  .pub .yr{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--faint);padding-top:2px;white-space:nowrap}
  .pub .t{font-weight:500;color:var(--deep);line-height:1.35}
  .pub .t a{color:var(--deep)}
  .pub .t a:hover{color:var(--accent)}
  .pub .au{font-size:13.5px;color:#454d57;margin-top:3px;line-height:1.5}
  .pub .au b{color:var(--ink);font-weight:600}
  .pub .ve{font-size:13px;color:var(--muted);margin-top:3px}
  .pub .ve em{font-style:italic}
  .pub .doi{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--faint)}
  .pub .doi a{color:var(--accent-deep)}
  .pub:hover .t a{text-decoration:underline;text-underline-offset:2px}

  /* publications list */
  .srcnote{font-size:12.5px;color:var(--faint);margin:14px 0 4px}
  .srcnote a{color:var(--accent-deep)}
  .yearhead{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:20px;color:var(--accent-deep);margin:30px 0 2px;padding-bottom:2px;position:relative;display:inline-block}
  .yearhead::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:2px;background:var(--interference);opacity:.7}

  /* CV */
  .cvgrid{margin-top:6px}
  .cvrow{display:grid;grid-template-columns:118px 1fr;gap:18px;padding:12px 0;border-top:1px solid var(--line-soft)}
  .cvrow:first-child{border-top:none}
  .cvrow .when{font-family:"IBM Plex Mono",monospace;font-size:12.5px;color:var(--faint);padding-top:2px}
  .cvrow .what{color:#2b3138}
  .cvrow .what strong{color:var(--deep);font-weight:600}
  .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
  .chip{font-size:13px;color:#333a42;background:#fff;border:1px solid var(--line);border-radius:20px;padding:5px 12px}
  ul.clean{list-style:none;padding:0;margin:10px 0 0}
  ul.clean li{padding:7px 0 7px 18px;position:relative;color:#2b3138;border-top:1px solid var(--line-soft)}
  ul.clean li:first-child{border-top:none}
  ul.clean li::before{content:"";position:absolute;left:0;top:15px;width:6px;height:6px;border-radius:50%;background:var(--accent);opacity:.7}

  /* contact */
  .contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}
  .cbox{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px}
  .cbox h3{font-family:"Spectral",Georgia,serif;font-weight:600;color:var(--deep);margin:0 0 8px;font-size:18px}
  .cbox p{margin:0;color:#333a42;font-size:14.5px;line-height:1.6}
  .cbox .lab{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:2px}

  @media (max-width:880px){
    .wrap{flex-direction:column}
    .sidebar{position:static;width:auto;height:auto;flex-basis:auto;border-right:none;border-bottom:1px solid var(--line);
      flex-direction:column;gap:16px;padding:24px 20px}
    .socials{margin-top:6px}
    .view{padding:34px 20px 72px}
    .grid,.contact-grid{grid-template-columns:1fr}
    nav.main{flex-direction:row;flex-wrap:wrap;gap:6px}
    nav.main a{padding:6px 12px}
    nav.main a .n{display:none}
    nav.main a.active::before{display:none}
    .portrait{width:80px;height:80px}
    .pub{grid-template-columns:1fr}
    .pub .yr{display:none}
    .cvrow{grid-template-columns:1fr}
  }
  .home-title{font-family:"Spectral",Georgia,serif;font-weight:600;color:var(--deep);font-size:clamp(24px,3vw,32px);line-height:1.16;letter-spacing:-.2px;margin:6px 0 14px;max-width:24ch}
  .prow{display:grid;grid-template-columns:46px 1fr;gap:12px;padding:11px 0;border-top:1px solid var(--line-soft);align-items:baseline}
  .prow:first-of-type{border-top:none}
  .yearhead + .prow{border-top:none}
  .pnum{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--faint);text-align:right;padding-top:1px}
  .pref{color:#2b3138;line-height:1.55;font-size:14.5px}
  .pref b{color:var(--ink);font-weight:600}
  .pref .doi a{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--accent-deep);white-space:nowrap}
  @media (max-width:880px){.prow{grid-template-columns:30px 1fr;gap:8px}}


/* ===== WordPress integration additions ===== */
body.admin-bar .sidebar{top:32px;height:calc(100vh - 32px)}
@media(max-width:782px){body.admin-bar .sidebar{top:46px;height:auto}}
.view.active{display:block}
.entry-content h2,.entry-content .wp-block-heading{font-family:"Spectral",Georgia,serif;font-weight:600;color:var(--deep);font-size:26px;letter-spacing:-.2px;margin:48px 0 8px}
.entry-content h3{font-family:"Spectral",Georgia,serif;font-weight:600;color:var(--deep);font-size:20px;margin:30px 0 7px}
.entry-content p{max-width:66ch;color:#2b3138;margin:16px 0}
.entry-content .lede{font-size:19px;line-height:1.55;color:var(--ink);max-width:62ch;margin:0 0 8px}
.entry-content .lede em{font-family:"Spectral",Georgia,serif;color:var(--deep)}
.entry-content ul,.entry-content ol{max-width:66ch;color:#2b3138}
.entry-content img{max-width:100%;height:auto;border-radius:10px}
.rcard-link{display:block;color:inherit;text-decoration:none}
.rcard-link:hover{color:inherit;text-decoration:none}
.rcard .question{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:18px;color:var(--deep);margin:0 0 5px;line-height:1.22}
.rcard .method{font-size:13.5px;color:#3a414a;line-height:1.5;margin:0}
.rcard .more{display:inline-block;margin-top:11px;font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-deep)}
.topic-kicker{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-bottom:8px}
.topic-subtitle{font-family:"Spectral",Georgia,serif;font-style:italic;font-size:20px;line-height:1.45;color:var(--deep);max-width:62ch;margin:0 0 24px}
.backlink{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;margin-bottom:18px;display:inline-block}
.wp-pub{padding:13px 0;border-top:1px solid var(--line-soft);display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:baseline}
.wp-pub:first-of-type{border-top:none}
.wp-pub-num{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--faint);text-align:right}
.wp-pub-ref{font-size:14.5px;line-height:1.55;color:#2b3138}
.wp-pub-ref strong{color:var(--ink);font-weight:600}
.wp-pub-links{font-family:"IBM Plex Mono",monospace;font-size:11px;white-space:nowrap;margin-left:5px}
.yearhead{display:block;width:max-content}
.empty-note{font-size:13px;color:var(--faint);font-style:italic}
.repo-card a{font-family:"IBM Plex Mono",monospace;font-size:11.5px}
.site-notice{font-size:12px;color:var(--faint);margin-top:8px}
@media(max-width:880px){.wp-pub{grid-template-columns:30px 1fr;gap:8px}}
