/* Topic network: Explore map and the reading-page neighbourhood share these rules. Site palette is light-only. */
.tn{--tn-bg:#fffcf7;--tn-panel:#fff;--tn-fg:#2c2924;--tn-muted:#736859;--tn-faint:#a89b8a;--tn-line:#e6dccf;--tn-edge:#c4b6a4;--tn-accent:#b54a17;--tn-soft:#fbeee5;--tn-shadow:0 1px 2px rgba(60,40,20,.06),0 6px 18px rgba(60,40,20,.08);--tn-serif:Georgia,"Times New Roman",serif;color:var(--tn-fg);font-family:system-ui,-apple-system,"PingFang SC","Hiragino Sans GB","Noto Sans SC","Microsoft YaHei",sans-serif}
.tn *{box-sizing:border-box}
.tn button{font-family:inherit}
.tn-map{background:var(--tn-panel);border:1px solid var(--tn-line);border-radius:14px;overflow:hidden;margin:1.25rem 0 2rem}
.tn-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 14px;padding:10px 14px;border-bottom:1px solid var(--tn-line);font-size:13px;color:var(--tn-muted);position:relative;z-index:9;background:var(--tn-panel)}
.tn-crumbs{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;min-width:0}
.tn-crumbs button{appearance:none;border:0;background:none;font:inherit;color:var(--tn-accent);cursor:pointer;padding:2px 4px;border-radius:4px}
.tn-crumbs .sep,.tn-crumbs .lbl{color:var(--tn-faint)}
.tn-crumbs .here{color:var(--tn-fg);font-weight:600}
.tn-crumbs button.here{color:var(--tn-fg);cursor:default}
.tn-search{position:relative;flex:0 1 300px;min-width:180px}
.tn-search input{width:100%;font:inherit;font-size:14px;padding:7px 12px;border:1px solid var(--tn-line);border-radius:8px;background:var(--tn-bg);color:var(--tn-fg)}
.tn-results{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--tn-panel);border:1px solid var(--tn-line);border-radius:10px;box-shadow:var(--tn-shadow);overflow:hidden}
.tn-results button{display:flex;gap:8px;align-items:baseline;width:100%;text-align:left;appearance:none;border:0;background:none;font-size:13px;color:var(--tn-fg);padding:8px 12px;cursor:pointer}
.tn-results button:hover,.tn-results button.on{background:var(--tn-soft)}
.tn-results i{width:7px;height:7px;border-radius:50%;background:var(--rc);flex:none;align-self:center}
.tn-results small{color:var(--tn-muted);margin-left:auto;white-space:nowrap}
.tn-results p{margin:0;padding:8px 12px;font-size:13px}
.tn-wrap{position:relative}
.tn-canvas{position:relative;height:min(72vh,720px);min-height:440px;overflow:hidden;cursor:grab;touch-action:none;background:var(--tn-panel)}
.tn-canvas.dragging{cursor:grabbing}
.tn-canvas,.tn-canvas *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.tn-canvas img,.tn-canvas a{-webkit-user-drag:none}
.tn-narrow .tn-canvas{touch-action:pan-y;cursor:default;min-height:0;height:auto}
.tn-narrow .tn-port,.tn-narrow .tn-lod,.tn-narrow .tn-zoom,.tn-narrow .tn-glabel,.tn-narrow .tn-group{display:none}
.tn-narrow .tn-head{flex-direction:column;align-items:stretch}
.tn-narrow .tn-search{flex-basis:auto}
.tn-narrow .tn-legend{gap:6px 14px}
.tn-loading{position:absolute;inset:0;display:grid;place-items:center;margin:0;color:var(--tn-muted);font-size:14px}
.tn-stage{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.tn-stage svg{position:absolute;left:0;top:0;overflow:visible}
.tn-field{fill:color-mix(in srgb,var(--rc) 6%,#fff);stroke:color-mix(in srgb,var(--rc) 25%,#fff);vector-effect:non-scaling-stroke}
.tn-group{fill:none;stroke:color-mix(in srgb,var(--rc) 22%,#fff);stroke-dasharray:3 4;vector-effect:non-scaling-stroke}
.tn-canvas[data-lod="0"] .tn-group,.tn-canvas[data-lod="0"] .tn-glabel{display:none}
.tn-flabel,.tn-glabel{position:absolute;transform-origin:0 0;transform:scale(var(--inv,1));white-space:nowrap;color:var(--rc);font-weight:700;cursor:pointer;appearance:none;border:0;line-height:1.5;background:color-mix(in srgb,#fff 85%,transparent);border-radius:6px}
.tn-flabel{font-size:15px;letter-spacing:.04em;padding:1px 8px;z-index:5}
.tn-flabel span{font-weight:400;color:var(--tn-muted);margin-left:6px;font-size:12px}
.tn-glabel{font-size:12px;padding:0 6px;z-index:4;max-width:none}
.tn-flabel:hover,.tn-glabel:hover{text-decoration:underline}
.tn-edge{fill:none;stroke:var(--tn-edge);stroke-width:1.3;vector-effect:non-scaling-stroke}
.tn-agg{fill:none;stroke:var(--tn-edge);stroke-linecap:round;vector-effect:non-scaling-stroke;opacity:.55}
.tn-canvas[data-lod="2"] .tn-agg,.tn-canvas[data-lod="0"] .tn-agg{display:none}
.tn-canvas:not([data-lod="2"]) .tn-edge:not(.hl){display:none}
.hovering .tn-edge,.hovering .tn-agg{opacity:.12}
.hovering .tn-edge.hl{opacity:1;stroke:var(--tn-fg);stroke-width:1.8}
.tn-pill{position:absolute;height:30px;display:flex;align-items:center;gap:7px;padding:0 12px 0 10px;border-radius:15px;border:1px solid color-mix(in srgb,var(--rc) 40%,#fff);background:#fff;color:var(--tn-fg);font-weight:600;font-size:13px;line-height:1;white-space:nowrap;cursor:pointer;transform:translate(-50%,-50%) scale(var(--inv,1));z-index:2}
.tn-pill i{width:7px;height:7px;border-radius:50%;background:var(--rc);flex:none}
.tn-pill:hover,.tn-pill.hl-self{background:color-mix(in srgb,var(--rc) 12%,#fff);box-shadow:var(--tn-shadow);z-index:4}
.tn-canvas[data-lod="0"] .tn-pill:not(.hl-self):not(.g),.tn-canvas[data-lod="1"] .tn-pill:not(.lm):not(.hl-self):not(.g){padding:0;width:13px;height:13px;border-color:transparent;background:transparent;box-shadow:none;justify-content:center}
.tn-canvas[data-lod="0"] .tn-pill:not(.hl-self):not(.g) span,.tn-canvas[data-lod="1"] .tn-pill:not(.lm):not(.hl-self):not(.g) span{display:none}
.hovering .tn-pill{opacity:.25}
.hovering .tn-pill.hl,.hovering .tn-pill.hl-self{opacity:1;z-index:4}
.hovering .tn-pill.hl i{transform:scale(1.6)}
.tn-port{position:absolute;transform:translate(-50%,-50%) scale(var(--inv,1));display:flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:11px;border:1px solid color-mix(in srgb,var(--rc) 50%,#fff);background:#fff;color:var(--tn-fg);font-weight:600;font-size:11px;line-height:1;white-space:nowrap;cursor:pointer;z-index:5}
.tn-port i{width:7px;height:7px;border-radius:50%;background:var(--rc);flex:none}
.tn-port span{color:var(--tn-muted);font-weight:500}
.tn-canvas[data-lod="0"] .tn-port{padding:0;width:11px;height:11px;border-radius:50%;border:2px solid #fff;background:var(--rc)}
.tn-canvas[data-lod="0"] .tn-port>*{display:none}
.tn-canvas[data-lod="1"] .tn-port:not(.hl) b{display:none}
.tn-port:hover,.tn-port.hl{background:color-mix(in srgb,var(--rc) 14%,#fff);border-color:var(--rc)}
.hovering .tn-port:not(.hl){opacity:.25}
.tn-hl path,.tn-gl line,.tn-gl path{fill:none;vector-effect:non-scaling-stroke;stroke-linecap:round}
.tn-hl .fan{stroke:var(--tn-fg);stroke-width:1.2;opacity:.5}
.tn-hl .trunk{stroke:var(--tn-fg);opacity:.42}
.tn-card{position:absolute;z-index:10;max-width:300px;background:#fff;border:1px solid var(--tn-line);border-radius:10px;padding:10px 12px;box-shadow:var(--tn-shadow);font-size:13px;line-height:1.5;pointer-events:none}
.tn-card strong{display:block;font-size:14px;margin-bottom:2px}
.tn-card span{color:var(--tn-muted)}
.tn-card .tn-why{color:var(--tn-fg)}
.tn-zoom{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:6px;z-index:8}
.tn-zoom button{appearance:none;width:36px;height:36px;border-radius:9px;border:1px solid var(--tn-line);background:#fff;color:var(--tn-fg);font-weight:600;font-size:16px;line-height:1;cursor:pointer;box-shadow:var(--tn-shadow)}
.tn-zoom button.fit{font-size:11px}
.tn-lod{position:absolute;left:12px;bottom:12px;z-index:8;font-size:12px;color:var(--tn-muted);background:color-mix(in srgb,#fff 85%,transparent);border:1px solid var(--tn-line);border-radius:999px;padding:4px 10px;pointer-events:none}
.tn-lod:empty{display:none}
.tn-legend{display:flex;flex-wrap:wrap;gap:6px 18px;padding:10px 14px;border-top:1px solid var(--tn-line);font-size:13px}
.tn-legend a,.tn-legend span{display:inline-flex;align-items:center;gap:6px;color:var(--tn-fg);text-decoration:none}
.tn-legend a:hover{color:var(--tn-accent);text-decoration:underline}
.tn-legend i{width:8px;height:8px;border-radius:50%;background:var(--rc)}
.tn-foot{padding:10px 14px;border-top:1px solid var(--tn-line);font-size:12px;color:var(--tn-muted);margin:0}
.tn button:focus-visible,.tn input:focus-visible,.tn summary:focus-visible,.tn a:focus-visible{outline:2px solid var(--tn-accent);outline-offset:2px}

/* gathered */
.tn-pill,.tn-field,.tn-group,.tn-flabel,.tn-glabel,.tn-port,.tn-edge,.tn-agg{transition:opacity .35s}
.gathered .tn-pill:not(.g){opacity:.07;pointer-events:none}
.gathered .tn-field,.gathered .tn-group{opacity:.3}
.gathered .tn-flabel,.gathered .tn-glabel,.gathered .tn-port,.gathered .tn-edge,.gathered .tn-agg{opacity:.08;pointer-events:none}
.gathered .tn-pill.g{z-index:3;transform:translate(-50%,-50%) scale(var(--ginv,1))}
.tn-pill.gc{height:40px;padding:0 16px 0 13px;font-size:15px;border-width:2px;box-shadow:var(--tn-shadow);z-index:6!important;background:color-mix(in srgb,var(--rc) 14%,#fff)}
.tn-pill.gc i{width:9px;height:9px}
.tn-pill.g2{font-weight:500;color:var(--tn-muted);border-style:dashed}
.tn-pill.hot{box-shadow:0 0 0 4px color-mix(in srgb,var(--rc) 30%,transparent);color:var(--tn-fg)}
.tn-gl .gl1{stroke:color-mix(in srgb,var(--rc) 75%,#2c2924);stroke-width:1.8;opacity:.7}
.tn-gl .gl11{stroke:var(--tn-faint);stroke-width:1.1;stroke-dasharray:3 4;opacity:.8}
.tn-gl .gl2{stroke:var(--tn-edge);stroke-width:1}
.tn-gl .hot{stroke-width:3.4;opacity:1}
.tn-bands .band{fill:none;stroke:var(--rc);stroke-linecap:round;opacity:.1}
.tn-bands .bandlbl{fill:var(--rc);font:700 13px system-ui,sans-serif;letter-spacing:.04em}

/* side panel (Explore) */
.tn-panel{position:absolute;top:12px;right:12px;bottom:12px;width:min(360px,40%);background:#fff;border:1px solid var(--tn-line);border-radius:12px;box-shadow:var(--tn-shadow);overflow:auto;z-index:9;padding:16px 18px 20px}
.tn-wrap.gathered .tn-zoom{right:calc(min(360px,40%) + 28px)}
.tn-ph{display:flex;justify-content:space-between;align-items:center;gap:8px}
.tn-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--rc)}
.tn-chip i,.tn-panel h4 i{width:7px;height:7px;border-radius:50%;background:var(--rc);display:inline-block}
.tn-x{appearance:none;border:1px solid var(--tn-line);background:var(--tn-bg);color:var(--tn-fg);width:30px;height:30px;border-radius:8px;font-size:18px;line-height:1;cursor:pointer}
.tn-title{font-size:19px;line-height:1.35;margin:6px 0;text-wrap:balance}
.tn-sum{margin:0 0 8px;color:var(--tn-muted);font-size:13.5px;line-height:1.6}
.tn-meta{font-size:12px;color:var(--tn-faint)}
.tn-meta a,.tn-open{color:var(--tn-accent);font-weight:600;text-decoration:none}
.tn-parts{margin:10px 0 2px;border:1px solid var(--tn-line);border-radius:8px;padding:6px 10px;background:var(--tn-bg)}
.tn-parts summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--tn-fg)}
.tn-parts ol{margin:6px 0 2px;padding-left:1.3em;max-height:220px;overflow:auto;font-size:13px;line-height:1.5}
.tn-parts li{margin:3px 0}
.tn-parts a{color:var(--tn-muted);text-decoration:none}
.tn-parts a:hover{color:var(--tn-accent);text-decoration:underline}
.tn-toggle{display:flex;gap:6px;align-items:center;font-size:12.5px;color:var(--tn-muted);margin:10px 0 4px;cursor:pointer}
.tn-panel h4{font-size:12px;letter-spacing:.06em;color:var(--rc);margin:16px 0 4px;display:flex;align-items:center;gap:6px}
.tn-item{padding:8px 10px;margin:0 -10px;border-radius:8px;transition:background .2s}
.tn-item.hot{background:color-mix(in srgb,var(--tn-line) 45%,#fff)}
.tn-go{appearance:none;border:0;background:none;padding:0;font-weight:600;font-size:14px;line-height:1.45;color:var(--tn-fg);text-align:left;cursor:pointer}
.tn-go:hover{color:var(--tn-accent)}
.tn-item small{display:block;color:var(--tn-faint);font-size:11.5px;margin-top:2px}
.tn-item p{margin:3px 0 0;font-size:13px;color:var(--tn-muted);line-height:1.55}
.tn-item summary{cursor:pointer;color:var(--tn-accent);font-size:12.5px;margin-top:4px;padding:0;border:0}
.tn-item details{border:0}
.tn-item figure{margin:8px 0 0;padding:6px 10px;border-left:2px solid var(--tn-line);background:none}
.tn-item blockquote{margin:0;font-family:var(--tn-serif);font-size:14px;line-height:1.5}
.tn-item figcaption{font-size:11.5px;margin-top:3px}
.tn-item figcaption a{color:var(--tn-muted)}

/* reading page neighbourhood: the panel breaks out of the 43rem text column */
.product:has(.rn-layout) #main{container-type:inline-size}
.thematic-reading>.rn-panel:has(.tn-local.tn-ready){width:min(74rem,100cqw);margin-left:calc(50% - min(37rem,50cqw));margin-right:0}
.tn-local{margin:.25rem 0 0}
.tn-local:not(.tn-ready){display:none}
.tn-local.tn-ready + .rn-fallback{display:none}
.tn-local .tn-head{padding:0 0 8px;border:0;background:none}
.tn-local .tn-wrap{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(16rem,1fr);gap:20px;align-items:start}
.tn-local .tn-canvas{height:540px;min-height:0;border:1px solid var(--tn-line);border-radius:10px;background:radial-gradient(#e2d7c9 .7px,transparent .8px) 0 0/12px 12px,#fffdfa}
.tn-local .tn-field,.tn-local .tn-group,.tn-local .tn-flabel,.tn-local .tn-glabel,.tn-local .tn-port,.tn-local .tn-edge,.tn-local .tn-agg,.tn-local .tn-pill:not(.g){display:none}
.tn-local .tn-pill{height:34px;font-size:14.5px;padding:0 14px 0 11px}
.tn-local .tn-pill.gc{height:44px;font-size:17px}
.tn-local .tn-panel{position:static;width:auto;border:0;box-shadow:none;padding:0 4px 0 0;background:none;max-height:540px;overflow:auto;line-height:1.6}
.tn-local .tn-wrap.gathered .tn-zoom{right:12px}
.tn-local .tn-foot{border:0;padding:8px 0 0}
.tn-back{appearance:none;border:1px solid var(--tn-line);background:var(--tn-bg);color:var(--tn-accent);border-radius:999px;padding:3px 10px;font-size:12.5px;cursor:pointer}
.tn-local .tn-title{font-size:17px}
.tn-local .tn-toggle{margin-top:0}
.tn-local .tn-panel h4{margin-top:12px}
.tn-local .tn-item p{font-size:13.5px}
.rn-fields{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px}
@container (max-width:52rem){.tn-local .tn-wrap{grid-template-columns:minmax(0,1fr)}.tn-local .tn-panel{max-height:none;overflow:visible}}

@media (max-width:760px){
 .tn-panel{position:static;width:auto;border-radius:0;border-width:1px 0 0;box-shadow:none}
 .tn-wrap.gathered .tn-zoom{right:12px}
 .tn-search{flex-basis:100%}
 .tn-canvas{height:62vh;min-height:380px}
 .tn-local .tn-canvas{height:420px}
}
@media (prefers-reduced-motion:reduce){.tn *{transition:none!important}}

/* full screen */
.tn-fsbtn{appearance:none;border:1px solid var(--tn-line);background:#fff;color:var(--tn-fg);border-radius:8px;padding:6px 11px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;display:inline-flex;gap:5px;align-items:center}
.tn-fsbtn:hover{border-color:var(--tn-accent);color:var(--tn-accent)}
.tn-local .tn-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
html.tn-lock,html.tn-lock body{overflow:hidden}
.tn.tn-fs{position:fixed;inset:0;z-index:2000;margin:0!important;width:auto!important;max-width:none;border-radius:0;border:0;display:flex;flex-direction:column;background:var(--tn-panel);padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
.tn.tn-fs:fullscreen{width:100%;height:100%}
.tn.tn-fs .tn-head{flex:none}
.tn.tn-fs:not(.tn-narrow) .tn-wrap{flex:1 1 auto;min-height:0}
.tn.tn-fs:not(.tn-narrow) .tn-canvas{height:100%!important;min-height:0}
.tn.tn-fs .tn-foot,.tn.tn-fs .tn-legend{flex:none}
.tn.tn-narrow.tn-fs{overflow:auto;-webkit-overflow-scrolling:touch}
.tn-local.tn-fs{padding:12px max(16px,env(safe-area-inset-right,0px)) 12px max(16px,env(safe-area-inset-left,0px));background:#fffcf7}
.tn-local.tn-fs .tn-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(18rem,26rem);grid-template-rows:100%;gap:20px}
.tn-local.tn-fs .tn-panel{max-height:none;height:100%;overflow:auto}
@media (max-width:760px){
 .tn-local.tn-fs{overflow:auto}
 .tn-local.tn-fs .tn-wrap{display:block}
 .tn-local.tn-fs .tn-canvas{height:72vh!important}
 .tn-local.tn-fs .tn-panel{height:auto;overflow:visible;padding-top:12px}
}

/* saving and the personal graph */
.tn-ph-actions{display:inline-flex;gap:6px;align-items:center}
.tn-save{appearance:none;border:1px solid var(--tn-line);background:#fff;color:var(--tn-fg);border-radius:999px;padding:4px 11px;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.tn-save.on{background:var(--tn-soft);border-color:var(--tn-accent);color:var(--tn-accent)}
.tn-personal .tn-port{display:none}
.tn-edge.cross{stroke-dasharray:5 5}
.tn-personal .tn-pill.k-bridge{border-style:dashed;color:var(--tn-muted);font-weight:500}
.tn-personal .tn-pill.k-video{border-style:dotted}
.tn-personal .tn-pill.k-saved{border-width:2px}
.tn-personal .tn-canvas{height:min(64vh,620px);min-height:380px}
.tn-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;padding:24px;text-align:center;color:var(--tn-muted);font-size:14.5px;line-height:1.7}
.saved-page{width:min(100%,74rem);margin:1.5rem auto 4rem;color:#2c2924}
.saved-page h1{font-size:clamp(1.8rem,3.5vw,2.4rem);margin:.2rem 0 .4rem}
.saved-intro{color:#5f564c;max-width:46rem;line-height:1.7;margin:0 0 1rem}
.saved-intro strong{color:#2c2924;white-space:nowrap}
.saved-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 1.5rem}
.saved-actions button,.saved-file{appearance:none;border:1px solid #e6dccf;background:#fff;color:#2c2924;border-radius:8px;padding:8px 14px;font:600 14px/1.2 system-ui,sans-serif;cursor:pointer}
.saved-actions .saved-primary{background:#b54a17;border-color:#b54a17;color:#fff}
.saved-file input{max-width:12rem;font-size:12px}
.saved-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1.5rem 2rem}
.saved-grid h2{font-size:1.1rem;margin:0 0 .6rem}
.saved-item{border-top:1px solid #e6dccf;padding:.7rem 0}
.saved-item>div{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.saved-item a{color:#2c2924;font-weight:600;text-decoration:none}
.saved-item a:hover{color:#b54a17;text-decoration:underline}
.saved-item button{appearance:none;border:0;background:none;color:#8a7d6d;font-size:12.5px;cursor:pointer;white-space:nowrap}
.saved-item textarea,.saved-note textarea{width:100%;display:block;margin-top:6px;min-height:3.2rem;border:1px solid #e6dccf;border-radius:8px;padding:8px 10px;font:14px/1.6 system-ui,sans-serif;background:#fffdfa;resize:vertical}
.saved-page label.saved-note{display:block;margin-top:1.5rem;font-weight:600;background:none;color:inherit;padding:0;border:0;box-shadow:none;border-radius:0}
.saved-note textarea{min-height:7rem;font-weight:400}
.saved-empty,.saved-hint{color:#8a7d6d;font-size:13.5px}
.garden-save{appearance:none;border:1px solid #e6dccf;background:#fff;color:#2c2924;border-radius:999px;padding:4px 12px;font:600 13px/1.4 system-ui,sans-serif;cursor:pointer;margin-right:12px}
.garden-save[aria-pressed="true"]{background:#fbeee5;border-color:#b54a17;color:#b54a17}
