/* Shared styles for every page on rnjnsn.com. Page-specific overrides stay inline. */
@font-face {
  font-family: 'Calibre';
  src: url('/fonts/calibre-web-regular.woff2') format('woff2'),
       url('/fonts/calibre-web-regular.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Calibre';
  src: url('/fonts/calibre-web-medium.woff2') format('woff2'),
       url('/fonts/calibre-web-medium.woff') format('woff');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Calibre';
  src: url('/fonts/calibre-web-semibold.woff2') format('woff2'),
       url('/fonts/calibre-web-semibold.woff') format('woff');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Calibre';
  src: url('/fonts/calibre-web-bold.woff2') format('woff2'),
       url('/fonts/calibre-web-bold.woff') format('woff');
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}
:root{
  --bg: #FAFAF8;
  --ink: #16181B;
  --ink-soft: #5B5F66;
  --hairline: #E4E1DA;
  --human: #C2752F;
  --machine: #1F6F78;
  --red: #E4001C;
}
*{box-sizing:border-box; margin:0; padding:0;}
body{
  background:var(--bg); color:var(--ink);
  font-family:'Calibre', -apple-system, sans-serif;
  line-height:1.6; -webkit-font-smoothing:antialiased;
}
a{color:inherit;}
a:focus-visible{outline:2px solid var(--machine); outline-offset:3px;}

.page{max-width:640px; margin:0 auto; padding:96px 24px 80px;}

.corner-mark{
  position:fixed; top:32px; left:36px; z-index:10;
  display:block; line-height:0; color:var(--ink); text-decoration:none;
}
.corner-mark svg{display:block; height:20px; width:auto;}

h1.name{font-size:33px; font-weight:600; margin-bottom:24px;}
p.bio{font-size:18.5px; line-height:1.65; color:var(--ink-soft); max-width:560px; margin-bottom:84px;}

section{margin-bottom:68px;}
section h2{font-size:23px; font-weight:600; color:var(--ink); margin-bottom:22px;}

.pub-entry{padding:18px 0; border-top:1px solid var(--hairline);}
.pub-entry:first-child{border-top:none; padding-top:0;}
.pub-entry a.pub-title{font-size:17px; color:var(--ink); text-decoration:none; border-bottom:1px solid var(--hairline);}
.pub-entry a.pub-title:hover{border-color:var(--red);}
.pub-entry .talk-title{font-size:17px; font-weight:500; color:var(--ink);}
.course-meta{display:block; font-size:13px; letter-spacing:0.02em; color:var(--ink-soft); margin-top:10px;}
.course-links{display:flex; gap:20px; margin-top:10px; font-size:15px;}
.course-kind{font-size:12px; font-weight:500; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-soft); margin:40px 0 14px;}
.talk-desc{font-size:15.5px; line-height:1.6; color:var(--ink-soft); margin-top:6px; max-width:560px;}
.pub-meta{display:block; font-family:'Calibre', sans-serif; letter-spacing:0.02em; font-size:13px; color:var(--ink-soft); margin-top:7px;}

p.lead{font-size:17px; color:var(--ink-soft); margin-bottom:20px; max-width:500px;}

.cta{
  display:inline-flex; align-items:center; gap:8px;
  font-size:17px; font-weight:500; text-decoration:none;
  color:var(--ink); border-bottom:1px solid var(--hairline); padding-bottom:3px;
}
.cta:hover{border-color:var(--red);}

.inline-link{color:var(--ink); text-decoration:none; border-bottom:1px solid var(--hairline);}
.inline-link:hover{border-color:var(--red);}

.section-text{font-size:17px; line-height:1.65; color:var(--ink); max-width:560px;}
.section-text + .section-text{margin-top:16px;}

.photo{display:block; width:100%; height:auto; margin:8px 0 44px;}
.upcoming-kind{display:block; font-size:12px; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:6px;}

.contact-grid{display:grid; grid-template-columns:repeat(auto-fit, minmax(160px,1fr)); gap:26px 34px;}
.contact-grid div .label{display:block; font-family:'Calibre', sans-serif; font-size:12px; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:7px;}
.contact-grid div .value{font-size:16.5px;}
.contact-grid a.value{text-decoration:none; border-bottom:1px solid var(--hairline);}
.contact-grid a.value:hover{border-color:var(--red);}

/* footer */
footer{
  max-width:640px; margin:0 auto; padding:28px 24px 64px;
  border-top:1px solid var(--hairline);
  font-family:'Calibre', sans-serif; letter-spacing:0.01em;
}
.footer-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px 24px;}
.footer-nav ul{display:flex; list-style:none; gap:20px; flex-wrap:wrap;}
.footer-nav a{font-size:13px; color:var(--ink-soft); text-decoration:none;}
.footer-nav a:hover{color:var(--ink);}
.social-icons{display:flex; justify-content:flex-end; gap:16px;}
.social-icons a{color:var(--ink-soft); display:inline-flex; align-items:center; height:1.76rem;}
.social-icons svg{height:1.1rem; width:auto; fill:currentColor;}
.social-icons a:hover{color:var(--ink);}
.copyright{grid-column:2; font-size:13px; color:var(--ink-soft); margin-top:10px; text-align:right;}

@media (max-width: 600px){
  .corner-mark{position:absolute; top:24px; left:24px;}
  .footer-grid{grid-template-columns:1fr;}
  .social-icons{justify-content:flex-start;}
  .copyright{grid-column:auto; text-align:left;}
}

/* night mode */
:root[data-theme="dark"]{
  --bg: #141517;
  --ink: #ECEAE4;
  --ink-soft: #9EA2A8;
  --hairline: #2E3034;
  --human: #E0954F;
  --machine: #6BBAC3;
  --red: #FF3347;
  color-scheme: dark;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg: #141517;
    --ink: #ECEAE4;
    --ink-soft: #9EA2A8;
    --hairline: #2E3034;
    --human: #E0954F;
    --machine: #6BBAC3;
    --red: #FF3347;
    color-scheme: dark;
  }
}
.theme-toggle{
  position:fixed; right:28px; bottom:28px; z-index:10;
  width:36px; height:36px; padding:0; border:0; border-radius:10px;
  display:inline-flex; align-items:center; justify-content:center;
  background:transparent; color:var(--ink-soft); cursor:pointer;
  transition:color .2s ease, transform .2s ease;
}
.theme-toggle:hover{color:var(--ink); transform:scale(1.08);}
.theme-toggle:focus-visible{outline:2px solid var(--machine); outline-offset:2px;}
.theme-toggle svg{width:20px; height:20px; overflow:visible;}
.theme-toggle .sun-core, .theme-toggle .moon-bite, .theme-toggle .rays{transition:transform .45s cubic-bezier(.4,0,.2,1), opacity .3s ease;}
.theme-toggle .rays, .theme-toggle .sun-core{transform-origin:16px 16px;}
.theme-toggle .moon-bite{transform:translate(12px,-12px);}
.is-dark .theme-toggle .sun-core{transform:scale(1.3);}
.is-dark .theme-toggle .moon-bite{transform:translate(0,0);}
.is-dark .theme-toggle .rays{transform:rotate(-30deg) scale(.4); opacity:0;}
@media (max-width: 600px){
  .theme-toggle{right:16px; bottom:16px;}
}
@media (prefers-reduced-motion: reduce){
  .theme-toggle, .theme-toggle *{transition:none !important;}
}
