/*
Theme Name: Roxy Portfolio
Theme URI: https://tangyuting.org
Author: Yuting (Roxy) Tang
Description: A quiet, academic portfolio theme for a curator and researcher: research statement, bibliography, exhibitions, talks, CV and a chronology. Block theme with a Projects post type, a City taxonomy, self-hosted fonts and automatic import of bundled images.
Version: 3.0.0
Requires at least: 6.5
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: roxy-portfolio
Tags: portfolio, blog, block-patterns, full-site-editing, one-column
*/

/* ---------- Fonts (bundled, SIL Open Font License) ---------- */
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(assets/fonts/source-serif-4-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:400;font-display:swap;src:url(assets/fonts/source-serif-4-latin-400-italic.woff2) format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(assets/fonts/source-serif-4-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:600;font-display:swap;src:url(assets/fonts/source-serif-4-latin-600-italic.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url(assets/fonts/ibm-plex-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:500;font-display:swap;src:url(assets/fonts/ibm-plex-sans-latin-500-normal.woff2) format("woff2")}

:root{
  --rt-bg:#F4F6F7;
  --rt-ink:#1C2024;
  --rt-text:#2B3036;
  --rt-grey:#646B73;
  --rt-line:#D5DADE;
  --rt-soft:#E6E9EC;
  --rt-tile:#DFE4E8;
  --rt-accent:#2E4A62;
  --rt-max:1120px;
  --rt-gutter:clamp(20px,4vw,48px);
  --rt-serif:"Source Serif 4","Noto Serif SC","Songti SC","STSong",Georgia,serif;
  --rt-sans:"IBM Plex Sans","PingFang SC","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;
}

/* ---------- Base ---------- */
body{background:var(--rt-bg);color:var(--rt-text);font-family:var(--rt-serif);font-size:18px;line-height:1.6;margin:0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--rt-ink);text-decoration:underline;text-decoration-color:var(--rt-line);text-underline-offset:3px;text-decoration-thickness:1px;transition:color .15s,text-decoration-color .15s}
a:hover{color:var(--rt-accent);text-decoration-color:var(--rt-accent)}
.wp-site-blocks{padding:0}
.wp-site-blocks > * + *{margin-block-start:0}
:where(.rt-main) > * + *{margin-block-start:0}
.rt-main p{margin:0}
.rt-main h1,.rt-main h2,.rt-main h3{margin:0;font-weight:400;color:var(--rt-ink)}
.rt-main{max-width:var(--rt-max);margin:0 auto;padding:0 var(--rt-gutter)}
.rt-label,.rt-eyebrow{font-family:var(--rt-sans);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--rt-grey)}
.rt-muted{color:var(--rt-grey)}
.rt-sans{font-family:var(--rt-sans)}
:focus-visible{outline:2px solid var(--rt-accent);outline-offset:2px}
::selection{background:#CBD6DF}

/* ---------- Header ---------- */
.rt-header{max-width:var(--rt-max);margin:0 auto;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 32px;padding:28px var(--rt-gutter) 22px;border-bottom:1px solid var(--rt-line);box-sizing:border-box}
.rt-wordmark{margin:0;font-family:var(--rt-serif);font-size:21px;letter-spacing:-.005em}
.rt-wordmark a{text-decoration:none;color:var(--rt-ink)}
.rt-nav{font-family:var(--rt-sans);font-size:14px}
.rt-nav .wp-block-navigation__container{gap:0 24px}
.rt-nav .wp-block-navigation-item__content{display:inline-flex;align-items:center;min-height:40px;text-decoration:none;color:var(--rt-grey)}
.rt-nav .wp-block-navigation-item__content:hover{color:var(--rt-ink)}
.rt-nav .current-menu-item > a,.rt-nav a[aria-current="page"],.rt-nav a.is-current{color:var(--rt-ink);text-decoration:underline;text-decoration-color:var(--rt-ink)}

/* ---------- Home intro ---------- */
.rt-intro{display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:40px 64px;padding:64px 0 56px}
.rt-side{display:flex;flex-direction:column;gap:16px;font-family:var(--rt-sans);font-size:14px;line-height:1.5}

.rt-side-list{display:flex;flex-direction:column;gap:4px}
.rt-side-list a{color:var(--rt-text)}
.rt-body{display:flex;flex-direction:column;gap:18px;max-width:680px}
.rt-name{font-family:var(--rt-serif);font-size:clamp(34px,4vw,48px)!important;line-height:1.1!important;letter-spacing:-.01em}
.rt-role{font-family:var(--rt-sans);font-size:15px;color:var(--rt-grey);margin-top:-6px!important}
.rt-body p{font-size:18px;line-height:1.65}

/* ---------- Sections (label column + content) ---------- */
.rt-section{display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr);gap:16px 64px;padding:40px 0;border-top:1px solid var(--rt-line)}
.rt-section > h2,.rt-section > .rt-label{font-family:var(--rt-sans)!important;font-size:12px!important;font-weight:500!important;letter-spacing:.08em;text-transform:uppercase;color:var(--rt-grey)!important;line-height:1.6!important;padding-top:4px}
.rt-section-body{display:flex;flex-direction:column;gap:14px;max-width:760px}
.rt-section-body .rt-more{font-family:var(--rt-sans);font-size:14px;margin-top:6px}
.rt-interests{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.rt-interests li{padding-left:18px;position:relative}
.rt-interests li::before{content:"—";position:absolute;left:0;color:var(--rt-grey)}
.rt-research h3{font-family:var(--rt-sans)!important;font-size:15px!important;font-weight:500!important;letter-spacing:.01em;color:var(--rt-ink);margin-bottom:6px!important}
.rt-research p{color:var(--rt-text)}

/* ---------- Serif / sans pairing: keywords ---------- */
.rt-main strong,.rt-key{font-family:var(--rt-sans);font-weight:500;font-size:.9em;letter-spacing:-.005em;color:var(--rt-ink)}
.rt-interests strong{font-size:.92em}
.rt-section{scroll-margin-top:24px}
.rt-cv-list summary,.rt-pagehead h1,.rt-name{font-family:var(--rt-serif)}

/* ---------- Bibliography ---------- */
.rt-bib{display:flex;flex-direction:column;gap:10px}
.rt-bib p,.rt-cite{padding-left:1.6em;text-indent:-1.6em;font-size:17px;line-height:1.55}
.rt-bib h3{font-family:var(--rt-sans)!important;font-size:13px!important;font-weight:500!important;color:var(--rt-ink);margin:22px 0 4px!important;letter-spacing:.02em}
.rt-bib h3:first-child{margin-top:0!important}
.rt-bib .rt-note,.rt-cite .rt-note{font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey)}

/* ---------- Page heads ---------- */
.rt-pagehead{padding:56px 0 28px;display:flex;flex-direction:column;gap:12px;max-width:760px}
.rt-pagehead h1{font-size:clamp(32px,3.6vw,44px)!important;line-height:1.12!important;letter-spacing:-.01em}
.rt-pagehead p{font-size:17px;color:var(--rt-grey)}

/* ---------- Exhibitions grid ---------- */
.rt-ex .wp-block-post-template{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 28px;margin:0;padding:8px 0 56px;list-style:none}
.rt-ex.rt-ex-4 .wp-block-post-template{grid-template-columns:repeat(4,minmax(0,1fr));gap:28px 20px;padding:0}
.rt-ex .wp-block-post{display:flex;flex-direction:column;gap:10px;margin:0}
.rt-frame{position:relative;overflow:hidden;aspect-ratio:4/3;background:var(--rt-tile)}
.rt-frame .wp-block-post-featured-image{position:absolute;inset:0;margin:0;height:100%}
.rt-frame .wp-block-post-featured-image a,.rt-frame .wp-block-post-featured-image img{display:block;width:100%;height:100%!important;object-fit:cover;transition:opacity .25s}
.rt-ex .wp-block-post:hover .rt-frame img{opacity:.88}
.rt-cap{display:flex;flex-direction:column;gap:3px}
.rt-ptitle{font-family:var(--rt-serif)!important;font-size:19px!important;line-height:1.25!important}
.rt-ptitle a{text-decoration:none}
.rt-ptitle a:hover{text-decoration:underline}
.rt-excerpt,.rt-excerpt p{margin:0;font-family:var(--rt-sans);font-size:13px;line-height:1.5;color:var(--rt-grey)}
.rt-terms{font-family:var(--rt-sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--rt-grey)}
.rt-terms a{color:var(--rt-grey);text-decoration:none}
.rt-year{font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey);font-variant-numeric:tabular-nums}
.wp-block-post.rt-hide{display:none!important}

/* ---------- Text tabs / search (built by site.js) ---------- */
.rt-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 24px;padding:12px 0;border-top:1px solid var(--rt-line);border-bottom:1px solid var(--rt-line);font-family:var(--rt-sans);font-size:14px}
.rt-chips{display:flex;flex-wrap:wrap;gap:4px 20px}
.rt-chip{min-height:36px;padding:0;border:0;background:none;color:var(--rt-grey);font:inherit;cursor:pointer;text-decoration:none;border-bottom:1px solid transparent}
.rt-chip:hover{color:var(--rt-ink)}
.rt-chip[aria-pressed="true"]{color:var(--rt-ink);border-bottom-color:var(--rt-ink)}
.rt-chip sup{font-size:10px;margin-left:2px}
.rt-search{display:flex;align-items:center;gap:10px;color:var(--rt-grey)}
.rt-search input{height:36px;width:220px;padding:0 10px;border:1px solid var(--rt-line);border-radius:2px;background:#fff;color:var(--rt-ink);font:inherit}

/* ---------- Row lists (posts) ---------- */
.rt-list .wp-block-post-template{margin:0;padding:0;list-style:none}
.rt-list .wp-block-post{display:grid;grid-template-columns:64px minmax(0,1fr) minmax(0,220px);gap:16px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--rt-soft);margin:0}
.rt-list .wp-block-post .wp-block-post-title{font-family:var(--rt-serif);font-size:18px;line-height:1.35}
.rt-list .wp-block-post .wp-block-post-title a{text-decoration:none}
.rt-list .wp-block-post .wp-block-post-title a:hover{text-decoration:underline}
.rt-list .rt-excerpt,.rt-list .rt-frame{display:none}
.rt-empty{padding:24px 0;font-family:var(--rt-sans);font-size:14px;color:var(--rt-grey)}

/* ---------- Single project / post ---------- */
.rt-single-head{padding:48px 0 28px;display:flex;flex-direction:column;gap:14px;max-width:820px}
.rt-back{font-family:var(--rt-sans);font-size:14px}
.rt-single-title,.rt-post-title{font-family:var(--rt-serif)!important;font-size:clamp(32px,3.8vw,48px)!important;line-height:1.12!important;letter-spacing:-.01em}
.rt-single-meta{display:flex;flex-wrap:wrap;gap:6px 24px;padding-top:4px}
.rt-single-media{padding:8px 0 40px}
.rt-single-media .wp-block-post-featured-image{margin:0}
.rt-single-media img{width:100%;height:auto;max-height:80vh;object-fit:cover}
.rt-content{padding:40px 0 64px;border-top:1px solid var(--rt-line);font-size:18px;line-height:1.7}
.rt-content > *{max-width:680px}
.rt-content > * + *{margin-block-start:1.1em}
.rt-content .rt-lede{font-size:21px;line-height:1.5;color:var(--rt-ink)}
.rt-content h2{font-family:var(--rt-sans);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--rt-grey);margin-top:2.4em}
.rt-content .wp-block-gallery,.rt-content .wp-block-image,.rt-content .alignwide{max-width:100%!important}
.rt-content .wp-block-gallery{gap:12px}
.rt-content img{max-width:100%;height:auto}
.rt-content figcaption{font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey)}
.rt-postnav{display:flex;justify-content:space-between;gap:24px;padding:24px 0 56px;border-top:1px solid var(--rt-line);font-family:var(--rt-sans);font-size:14px}
.rt-postnav > *{margin:0}

/* ---------- CV / Talks (details) ---------- */
.rt-cv-list{border-top:1px solid var(--rt-line)}
.rt-cv-list .wp-block-details{border-bottom:1px solid var(--rt-line);margin:0;padding:0}
.rt-cv-list summary{list-style:none;display:flex;justify-content:space-between;align-items:center;min-height:56px;cursor:pointer;font-family:var(--rt-serif);font-size:21px;color:var(--rt-ink)}
.rt-cv-list summary::-webkit-details-marker{display:none}
.rt-cv-list summary::after{content:"+";font-family:var(--rt-sans);font-size:20px;color:var(--rt-grey)}
.rt-cv-list details[open] summary::after{content:"–"}
.rt-cv-list details > p{display:block;padding:8px 0 8px 96px;font-size:16px;line-height:1.5;position:relative;margin:0}
.rt-cv-list details > p:last-child{padding-bottom:20px}
.rt-cv-list details > p strong{position:absolute;left:0;top:10px;font-family:var(--rt-sans);font-weight:400;font-size:13px;color:var(--rt-grey);font-variant-numeric:tabular-nums}
.rt-cv-list details > p em{font-style:normal;color:var(--rt-grey)}
.rt-cv-actions{display:flex;flex-wrap:wrap;gap:20px;font-family:var(--rt-sans);font-size:14px;padding-top:8px}

/* ---------- Chronology (rendered by site.js) ---------- */
.rt-atlas-threads{display:flex;flex-wrap:wrap;align-items:center;gap:4px 20px;padding:12px 0;border-top:1px solid var(--rt-line);border-bottom:1px solid var(--rt-line);font-family:var(--rt-sans);font-size:14px}
.rt-atlas-scroll{overflow-x:auto;border-bottom:1px solid var(--rt-line);margin:0 calc(-1 * var(--rt-gutter));padding:0 var(--rt-gutter)}
.rt-atlas-canvas{position:relative;height:780px}
.rt-atlas-canvas > *{position:absolute}
.rt-a-grid{top:0;width:1px;height:770px;background:var(--rt-soft)}
.rt-a-year{top:8px;font-family:var(--rt-sans);font-size:12px;color:var(--rt-grey);font-variant-numeric:tabular-nums}
.rt-a-now{top:0;width:1px;height:770px;background:var(--rt-accent)}
.rt-a-nowlabel{top:26px;font-family:var(--rt-sans);font-size:11px;color:var(--rt-accent);letter-spacing:.06em;text-transform:uppercase}
.rt-a-lane{left:0;width:140px;font-family:var(--rt-sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--rt-grey)}
.rt-a-line{left:160px;height:1px;background:#AEB5BB}
.rt-atlas-canvas button{padding:0;cursor:pointer;font:inherit;transition:opacity .2s,background .2s,color .2s}
.rt-a-bar{height:28px;padding:0 10px!important;box-sizing:border-box;border:0;border-left:2px solid var(--rt-bg);background:#5B6670;color:#fff;font-family:var(--rt-sans)!important;font-size:12px!important;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rt-a-dot{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--rt-ink);background:var(--rt-bg)}
.rt-a-wr{width:10px;height:10px;border-radius:50%;border:1.5px solid var(--rt-ink);background:var(--rt-ink)}
.rt-a-wr.is-c{background:var(--rt-bg)}
.rt-a-bk{width:13px;height:13px;border:1.5px solid var(--rt-ink);background:var(--rt-ink)}
.rt-a-aw{width:10px;height:10px;transform:rotate(45deg);border:1.5px solid var(--rt-ink);background:var(--rt-bg)}
.rt-a-stem{width:1px;background:#BFC5CA;top:200px}
.rt-a-lbl{border:0;background:var(--rt-bg);color:var(--rt-ink);text-align:left;padding:2px 4px!important;font-family:var(--rt-serif)!important;font-size:15px!important;line-height:1.2}
.rt-a-lbl.is-sm{font-family:var(--rt-sans)!important;font-size:12px!important;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}
.rt-a-lbl:hover{color:var(--rt-accent)}
.rt-atlas-canvas .is-sel{background:var(--rt-accent)!important;border-color:var(--rt-accent)!important}
.rt-atlas-canvas .rt-a-lbl.is-sel{background:var(--rt-bg)!important;color:var(--rt-accent)}
.rt-atlas-canvas .is-dim{opacity:.15}
.rt-atlas-foot{display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr);gap:24px 64px;padding:32px 0 64px}
.rt-legend{display:flex;flex-direction:column;gap:8px;font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey)}
.rt-legend span{display:flex;align-items:center;gap:10px}
.rt-legend i{display:inline-block;box-sizing:border-box}
.rt-detail{display:flex;flex-direction:column;gap:8px}
.rt-detail .k{font-family:var(--rt-sans);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--rt-accent)}
.rt-detail .t{font-family:var(--rt-serif);font-size:28px;line-height:1.2;color:var(--rt-ink)}
.rt-detail .v{font-size:17px}
.rt-detail .g{font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey)}
.rt-detail a{font-family:var(--rt-sans);font-size:14px}

/* ---------- Footer ---------- */
.rt-footer{border-top:1px solid var(--rt-line);margin-top:24px}
.rt-foot{max-width:var(--rt-max);margin:0 auto;padding:32px var(--rt-gutter) 48px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px 40px;font-family:var(--rt-sans);font-size:14px;color:var(--rt-grey);box-sizing:border-box}
.rt-foot nav{display:flex;flex-wrap:wrap;gap:6px 24px}
.rt-foot a{color:var(--rt-text)}

/* ---------- Responsive ---------- */
@media (max-width:900px){
  .rt-ex .wp-block-post-template,.rt-ex.rt-ex-4 .wp-block-post-template{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:700px){
  .rt-intro,.rt-section,.rt-atlas-foot{grid-template-columns:minmax(0,1fr)}
  .rt-intro{padding-top:40px}
  .rt-side{flex-direction:row;align-items:flex-start;gap:16px}
  .rt-ex .wp-block-post-template,.rt-ex.rt-ex-4 .wp-block-post-template{grid-template-columns:minmax(0,1fr)}
  .rt-list .wp-block-post{grid-template-columns:52px minmax(0,1fr)}
  .rt-list .rt-terms{display:none}
  .rt-cv-list details > p{padding-left:0}
  .rt-cv-list details > p strong{position:static;display:block}
  .rt-search input{width:100%}
}

/* ---------- Galleries inside exhibition pages ---------- */
.rt-content .wp-block-gallery{display:block!important;column-count:2;column-gap:14px;margin:24px 0 0;padding:0}
.rt-content .wp-block-gallery figure{margin:0 0 14px!important;width:100%!important;break-inside:avoid;display:block}
.rt-content .wp-block-gallery img{width:100%!important;height:auto!important;display:block}
@media (max-width:700px){.rt-content .wp-block-gallery{column-count:1}}

/* ---------- Sketch layer (assets/js/sketch.js) ---------- */
/* research map — light, floating */
.rt-sketchmap{margin:0;display:flex;flex-direction:column;gap:10px}
.rt-sketchmap-canvas{width:100%;aspect-ratio:240/300;position:relative}
.rt-map{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.rt-map .rt-edge{stroke:#8A97A3;stroke-opacity:.55;stroke-width:.75;transition:stroke-dashoffset 1.6s cubic-bezier(.5,.1,.3,1),stroke-opacity .3s,stroke .3s,stroke-width .3s}
.rt-map text{font-family:var(--rt-serif);font-style:italic;font-size:13.5px;fill:#5B6670;transition:fill .25s}
.rt-map .rt-dot{fill:#7F8E9B;transition:fill .25s,r .25s}
.rt-map .rt-halo{fill:none;stroke:var(--rt-accent);stroke-width:.6;stroke-opacity:0;transition:stroke-opacity .3s}
.rt-map-node{cursor:pointer;outline:none;transition:opacity .9s ease}
.rt-map-node:hover .rt-halo,.rt-map-node:focus-visible .rt-halo,.rt-map-node.is-on .rt-halo{stroke-opacity:.6}
.rt-map-node.is-on text{fill:var(--rt-accent)}
.rt-map-node.is-on .rt-dot{fill:var(--rt-accent)}
.rt-map-node.is-near text{fill:var(--rt-ink)}
.rt-map.has-focus .rt-edge{stroke-opacity:.15}
.rt-map.has-focus .rt-edge.is-on{stroke:var(--rt-accent);stroke-opacity:.9;stroke-width:1}
.rt-map.has-focus .rt-map-node:not(.is-on):not(.is-near) text{fill:#A3ACB4}
.rt-sketchmap figcaption{font-family:var(--rt-sans);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#8A939B}

/* Talks photo */
.rt-talk-figure{margin:0 0 32px;max-width:360px}
.rt-talk-figure img{display:block;width:100%;height:auto;filter:grayscale(.2)}
.rt-talk-figure figcaption{font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey);margin-top:8px}

/* scribbled underline on keywords */
.rt-kw{position:relative;transition:color .2s}
.rt-scribble{position:absolute;left:-2px;bottom:-5px;width:calc(100% + 4px);height:9px;overflow:visible;pointer-events:none}
.rt-scribble path{stroke-dasharray:1;stroke-dashoffset:1;opacity:0;transition:stroke-dashoffset .45s cubic-bezier(.6,.1,.3,1),opacity .1s}
.rt-kw:hover,.rt-kw.is-lit{color:var(--rt-accent)}
.rt-kw:hover .rt-scribble path,.rt-kw.is-lit .rt-scribble path{stroke-dashoffset:0;opacity:1}
@media (min-width:701px){.rt-kw{white-space:nowrap}}

/* pen-drawn section rules */
.rt-section,.rt-cv-list{position:relative}
.rt-pen{position:absolute;left:0;top:-5px;width:100%;height:9px;overflow:visible;pointer-events:none}
.rt-pen path{stroke-opacity:.55;transition:stroke-dashoffset 1.4s cubic-bezier(.6,.1,.3,1)}

/* sketched frame on exhibition images */
.rt-sketchframe{position:absolute;left:0;top:0;width:100%;aspect-ratio:4/3;overflow:visible;pointer-events:none}
.rt-sketchframe path{stroke-dasharray:1;stroke-dashoffset:1;opacity:0;transition:stroke-dashoffset .6s cubic-bezier(.6,.1,.3,1),opacity .1s}
.rt-ex .wp-block-post:hover .rt-sketchframe path,.rt-ex .wp-block-post:focus-within .rt-sketchframe path{stroke-dashoffset:0;opacity:1}

@media (max-width:700px){
  .rt-side{flex-direction:column}
  .rt-sketchmap{max-width:260px}
  .rt-scribble{display:none}
}
@media (prefers-reduced-motion:reduce){
  .rt-map .rt-edge,.rt-scribble path,.rt-pen path,.rt-sketchframe path{transition:none}
}

/* ---------- About ---------- */
.rt-about-head{display:grid;grid-template-columns:minmax(0,1fr) 200px;gap:32px 64px;align-items:start;padding:56px 0 40px}
.rt-about-text{display:flex;flex-direction:column;gap:16px;max-width:680px}
.rt-about-text h1{font-size:clamp(32px,3.6vw,44px)!important;line-height:1.12!important;margin-bottom:8px!important}
.rt-about-text p{font-size:18px;line-height:1.65}
.rt-about-text p.rt-muted{font-family:var(--rt-sans);font-size:14px}
.rt-about-portrait{margin:8px 0 0}
.rt-about-portrait img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;filter:grayscale(.25) contrast(1.02)}
.rt-cv-head{padding:8px 0 16px}
.rt-cv-head h2{font-family:var(--rt-sans)!important;font-size:12px!important;font-weight:500!important;letter-spacing:.08em;text-transform:uppercase;color:var(--rt-grey)!important}
@media (max-width:700px){.rt-about-head{grid-template-columns:minmax(0,1fr)}.rt-about-portrait{max-width:160px;order:-1}}

/* ---------- Contact (home) ---------- */
.rt-contact{margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px 40px}
.rt-contact > div{display:flex;flex-direction:column;gap:8px;padding-top:2px}
.rt-contact dt{font-family:var(--rt-sans);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--rt-grey)}
.rt-contact dd{margin:0;display:flex;flex-direction:column;gap:4px;font-size:18px}
.rt-contact dd span{font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey)}
.rt-contact dd .rt-place{font-family:var(--rt-serif);font-size:18px;color:var(--rt-ink)}
.rt-contact a{width:max-content}
@media (max-width:700px){.rt-contact{grid-template-columns:minmax(0,1fr)}}

/* ---------- Talks list ---------- */
.rt-talks{display:flex;flex-direction:column}
.rt-talk{display:grid!important;grid-template-columns:72px minmax(0,1fr);gap:2px 20px;padding:10px 0;border-top:1px solid var(--rt-soft)}
.rt-talk:first-child{border-top:0;padding-top:2px}
.rt-ty{grid-row:span 2;font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey);font-variant-numeric:tabular-nums;padding-top:3px}
.rt-tt{font-size:17px;line-height:1.45;color:var(--rt-ink)}
.rt-td{font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey)}

/* ---------- Curator-to-go QR popover ---------- */
.rt-qr{position:relative;cursor:pointer;border-bottom:1px dotted var(--rt-accent);color:inherit;white-space:nowrap}
.rt-qr:hover,.rt-qr:focus-visible{color:var(--rt-accent);outline:none}
.rt-qr-pop{position:absolute;left:50%;bottom:calc(100% + 10px);transform:translate(-50%,6px);width:168px;padding:14px 14px 10px;background:#fff;border:1px solid var(--rt-line);box-shadow:0 10px 30px rgba(28,32,36,.12);display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0;visibility:hidden;transition:opacity .2s,transform .2s,visibility .2s;z-index:20;white-space:normal;text-align:center}
.rt-qr-pop::after{content:"";position:absolute;left:50%;top:100%;width:10px;height:10px;background:#fff;border-right:1px solid var(--rt-line);border-bottom:1px solid var(--rt-line);transform:translate(-50%,-5px) rotate(45deg)}
.rt-qr-pop img{width:140px;height:140px;display:block}
.rt-qr-pop span{font-family:var(--rt-sans);font-size:11px;line-height:1.35;color:var(--rt-grey);font-style:normal}
.rt-qr:hover .rt-qr-pop,.rt-qr:focus-within .rt-qr-pop,.rt-qr.is-open .rt-qr-pop{opacity:1;visibility:visible;transform:translate(-50%,0)}
.rt-c2g-line em{font-style:normal;font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey)}
.rt-contact dd .rt-c2g-line{font-family:var(--rt-serif);font-size:18px;color:var(--rt-ink)}
.rt-contact dd .rt-c2g-line .rt-qr{font-family:inherit;font-size:inherit;color:inherit}
.rt-contact dd .rt-c2g-line em{font-family:var(--rt-sans);font-size:13px;color:var(--rt-grey)}
