:root{color-scheme:dark;--bg:#0b1118;--panel:#101923;--line:#23313f;--text:#e3ebf1;--muted:#98aabb;--accent:#8fe5ce;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{color:var(--text);background:#17232f;border:1px solid #30404f;border-radius:8px;padding:9px 12px;cursor:pointer;font-size:.875rem}button:hover{background:#253544;border-color:#638080}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:var(--accent)}[hidden]{display:none!important}
.topbar{height:72px;display:flex;justify-content:space-between;align-items:center;padding:0 25px;border-bottom:1px solid var(--line);background:#0f1720}.brand{display:flex;align-items:center;gap:10px;color:var(--text);font-size:1.5rem;letter-spacing:-1px;text-decoration:none;font-weight:650}.brand span{border-left:1px solid #34414b;margin-left:10px;padding-left:20px;font-size:.875rem;letter-spacing:0;font-weight:400;color:var(--muted)}.top-actions{display:flex;gap:20px;align-items:center}.local-label{font-size:.75rem;letter-spacing:.08em;color:var(--accent)}
.workspace{display:flex;height:calc(100dvh - 72px);min-height:480px;overflow:hidden}.sidebar{width:282px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--line);padding:28px 20px 0;display:flex;flex-direction:column}.eyebrow{font-size:.75rem;letter-spacing:.12em;font-weight:600;color:var(--muted)}h1{font-size:1.35rem;font-weight:500;line-height:1.4;letter-spacing:-.04em;margin:9px 0 26px}.search-label,.field-label{font-size:.875rem;display:block;color:var(--muted);margin:0 0 8px}.field-label{margin-top:18px}input[type=search],select{width:100%;min-width:0;background:#0b131c;border:1px solid #304150;border-radius:8px;color:var(--text);padding:11px;font-size:.875rem}input::placeholder{color:#8c9cab}.filters{display:grid;gap:12px;margin:22px 0 28px}.filters label{display:flex;align-items:center;gap:9px;font-size:.875rem;cursor:pointer}input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px;margin:0}.list-heading{display:flex;justify-content:space-between;font-size:.75rem;letter-spacing:.1em;color:var(--muted);padding-bottom:12px;border-bottom:1px solid var(--line)}.results{overflow:auto;flex:1;padding:8px 0 15px;min-height:80px}.note-result{display:block;width:100%;text-align:left;background:none;border:1px solid transparent;padding:11px 9px;margin:2px 0;line-height:1.4}.note-result.active{border-color:#375b59;background:#193232}.note-result .result-name{display:block;overflow-wrap:anywhere}.note-result small{display:block;color:var(--muted);font-size:.75rem;margin-top:4px}.result-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;background:var(--node-color)}.sidebar-footer{padding:15px 0;border-top:1px solid var(--line);font-size:.75rem;color:var(--muted)}
.graph-pane{position:relative;flex:1;min-width:0;overflow:hidden;background:radial-gradient(ellipse at 45% 44%,#132732 0%,#0b131c 58%,#0b1118 100%)}.graph-heading{position:absolute;z-index:1;left:28px;right:28px;top:28px;display:flex;justify-content:space-between;gap:20px;pointer-events:none}.graph-heading h2{font-size:1.2rem;letter-spacing:-.025em;font-weight:400;margin:8px 0;color:#d7e4ed}.graph-heading #counts{font-size:.75rem;color:var(--muted);padding-top:4px;text-align:right;line-height:1.7}canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}canvas:active{cursor:grabbing}.legend{position:absolute;left:28px;bottom:80px;display:flex;gap:8px 16px;flex-wrap:wrap;max-width:calc(100% - 56px);pointer-events:none}.legend span{font-size:.75rem;color:#adc0ce;display:flex;align-items:center;gap:6px}.legend i{display:inline-block;width:7px;height:7px;background:var(--node-color);border-radius:50%}.graph-bottom{position:absolute;left:28px;right:28px;bottom:22px;display:flex;align-items:center;justify-content:space-between;gap:12px}.hint{font-size:.75rem;color:var(--muted)}.graph-tools{display:flex;gap:5px;flex-shrink:0}.graph-tools button{background:#15212ee8;min-width:36px}.status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;max-width:80%;color:var(--muted);background:#101923e8;padding:20px;border-radius:12px;line-height:1.6}.tooltip{position:absolute;pointer-events:none;background:#233542;border:1px solid #49606b;padding:9px 12px;border-radius:7px;max-width:260px;font-size:.875rem;box-shadow:0 8px 30px #0005}
.reader{width:410px;max-width:45vw;flex-shrink:0;background:#111b25;border-left:1px solid var(--line);display:flex;flex-direction:column}.reader-top{display:flex;justify-content:space-between;align-items:center;padding:17px 24px;border-bottom:1px solid var(--line)}.reader-top button{font-size:1.4rem;background:transparent;padding:2px 10px;border:0}.reader-scroll{overflow:auto;padding:24px}.note-meta{font-size:.75rem;color:var(--accent);text-transform:uppercase;letter-spacing:.05em;line-height:1.8}.reader h2{font-size:1.6rem;line-height:1.3;letter-spacing:-.04em;margin:12px 0;font-weight:550;overflow-wrap:anywhere}.note-path{font-size:.75rem;color:var(--muted);overflow-wrap:anywhere;line-height:1.5}.focus-button{width:100%;margin:22px 0;text-align:left;font-size:.875rem;color:var(--accent);border-color:#36544f;background:#172e2f}.focus-button[aria-pressed=true]{background:#28534d}article{line-height:1.75;font-size:1rem;overflow-wrap:anywhere}article h1{font-size:1.4rem}article h2{font-size:1.25rem;margin:24px 0 12px}article h3{font-size:1.05rem;margin-top:24px}article p{margin:0 0 16px}article ul,article ol{padding-left:22px}article li{margin:5px 0}article pre{overflow:auto;padding:15px;background:#090f16;border-radius:8px;font-size:.8rem;line-height:1.6}article code{font-family:ui-monospace,SFMono-Regular,monospace;background:#0a131d;border-radius:4px;padding:2px 4px;font-size:.85em}article pre code{padding:0}article blockquote{border-left:2px solid #5c9e94;padding-left:14px;color:#b2c6cf;margin-left:0}article hr{border:0;border-top:1px solid var(--line);margin:25px 0}.table-wrap{overflow:auto}article table{border-collapse:collapse;font-size:.875rem;min-width:100%}article td,article th{border-bottom:1px solid var(--line);padding:8px;text-align:left;min-width:100px}article a{text-decoration-color:#547d77;text-underline-offset:3px}.related{border-top:1px solid var(--line);margin-top:30px;padding-top:10px}.related h3{font-size:.875rem;color:var(--muted);font-weight:500}.related button{display:block;width:100%;margin:5px 0;text-align:left;background:transparent;overflow-wrap:anywhere}.related small{display:block;color:var(--muted);font-size:.75rem;margin-top:4px}.empty{padding:18px 4px;color:var(--muted);font-size:.875rem;line-height:1.6}
@media(min-width:1600px){.reader{width:480px}.sidebar{width:310px}}
@media(max-width:1150px){.reader{position:absolute;right:0;top:72px;bottom:0;z-index:3;width:430px;max-width:70vw;box-shadow:-20px 0 60px #0005}.sidebar{width:250px}.hint{display:none}}
@media(max-width:700px){.topbar{padding:0 14px;height:60px}.brand span,.local-label{display:none}.workspace{height:calc(100dvh - 60px);min-height:0;flex-direction:column}.sidebar{width:100%;padding:14px;flex-direction:row;align-items:center;gap:10px;flex-wrap:wrap;border-right:0;border-bottom:1px solid var(--line);max-height:40dvh;overflow:auto}.sidebar-heading,.sidebar-footer,.search-label,.field-label,.list-heading{display:none}#search{flex:1;min-width:150px}#group{width:145px}.filters{display:flex;flex-wrap:wrap;gap:12px;margin:3px 0;width:100%}.filters label{font-size:.75rem}.results{display:flex;overflow-x:auto;flex:0 0 100%;max-height:72px;min-height:0;padding:0}.note-result{width:190px;min-width:190px;padding:6px;font-size:.8rem}.note-result .result-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.graph-pane{min-height:260px}.graph-heading{left:18px;right:18px;top:18px}.graph-heading h2{font-size:1rem}.graph-heading .eyebrow{font-size:.65rem}.legend{left:18px;bottom:72px;gap:7px;max-height:55px;overflow:hidden}.legend span{font-size:.65rem}.graph-bottom{left:18px;right:18px;bottom:16px;justify-content:flex-end}.reader{top:60px;width:100%;max-width:100vw}.reader-scroll{padding:22px}.top-actions button{font-size:.75rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
/* Navegação progressiva e preferências locais. */
.navigation{position:absolute;z-index:2;top:18px;left:24px;right:24px;display:flex;align-items:center;gap:7px;min-width:0}.navigation button{padding:6px 10px;white-space:nowrap}.navigation #breadcrumb{font-size:.8rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navigation #all-notes{margin-left:auto}.navigation button:disabled{cursor:default}.graph-heading{top:70px}.note-actions{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:0 0 20px}.note-actions label{display:flex;align-items:center;gap:8px;font-size:.875rem;color:var(--muted)}.note-actions select{width:auto;padding:8px}.note-actions button[aria-pressed=true]{color:var(--accent);border-color:#547e72}.connection-hint{font-size:.8rem;line-height:1.6;color:var(--muted);margin-bottom:20px}.focus-button{margin-bottom:12px}
@media(max-width:700px){.navigation{top:12px;left:14px;right:14px;gap:5px}.navigation button{padding:6px 8px;font-size:.75rem}.navigation #breadcrumb{max-width:160px}.graph-heading{top:61px}.filters{gap:8px 12px}.legend{bottom:65px;max-height:35px}.graph-heading h2{margin-top:4px}.note-actions{flex-wrap:wrap}}
.view-switch{display:flex;background:#0a141e;border:1px solid #30404f;border-radius:9px;padding:3px;gap:3px}.view-switch button{border:0;background:transparent;padding:6px 12px;color:var(--muted)}.view-switch button[aria-pressed=true]{background:#29473f;color:#c7ffeb}.view-switch button:hover{background:#20352f}canvas:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
@media(max-width:700px){.top-actions{gap:8px}.view-switch button{padding:5px 9px}.topbar{gap:8px}.top-actions #refresh{max-width:100px;padding:7px;line-height:1.2}}

/* Imagens locais: legenda visível e falha compreensível no leitor. */
.local-image{display:block;margin:18px 0}
.local-image>a{display:block;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.note-image{display:block;max-width:100%;height:auto;margin:auto;background:#fff}
.image-caption,.image-error{display:block;font-size:.85rem;line-height:1.6;color:var(--muted);margin-top:8px}
.asset-link{overflow-wrap:anywhere}

/* Fundo opcional sob o grafo, sem capturar cliques ou mover as notas. */
.graph-pane{isolation:isolate}
.graph-pane::before{content:"";position:absolute;inset:-15%;z-index:-1;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 28% 35%,#68d6c51f,transparent 55%),radial-gradient(ellipse at 78% 68%,#849ee824,transparent 52%);animation:ambient-drift 20s ease-in-out infinite alternate;animation-play-state:paused}
.graph-pane.ambient::before{opacity:1}
.graph-pane.ambient-moving::before{animation-play-state:running}
@keyframes ambient-drift{from{transform:translate(-5%,-3%) scale(1)}to{transform:translate(5%,3%) scale(1.1)}}
#ambient[aria-pressed=true]{color:var(--accent);border-color:#547e72}
.note-actions{flex-wrap:wrap}
@media(prefers-reduced-motion:reduce){.graph-pane::before{animation:none;opacity:0}}

/* Leitura ampliada: o painel da nota assume o espaço do mapa. */
.reader-top{gap:12px;flex-shrink:0}
.reader-tools{display:flex;align-items:center;gap:7px}
.reader-tools button{font-size:.8rem;padding:7px 9px;border:1px solid var(--line);border-radius:7px;white-space:nowrap}
.reader-tools #close-reader{font-size:1.4rem;border:0;padding:2px 6px}
.reader-scroll{min-height:0;flex:1}
.reader-expanded .view-switch{display:none}
.reader-expanded .reader{position:static;flex:1;min-width:0;min-height:0;width:auto;max-width:none;box-shadow:none;border-left:0}
.reader-expanded .reader-scroll{padding:32px clamp(24px,4vw,72px) 64px}
.reader-expanded .reader-content{max-width:82ch;margin:0 auto}
.reader-expanded article{font-size:1.0625rem;line-height:1.85}
.reader-expanded #note-title{font-size:2rem;letter-spacing:-.035em;margin:14px 0 18px}
.reader-expanded .reader-top{padding-inline:28px}
@media(max-width:700px){.reader-top{padding:12px 16px}.reader-expanded .sidebar{display:none}.reader-expanded .reader-top{padding-inline:16px}.reader-expanded .reader-scroll{padding:24px 20px 48px}.reader-expanded #note-title{font-size:1.7rem}.reader-expanded .reader-top .eyebrow{display:none}.reader-expanded .reader-tools{width:100%}.reader-expanded #expand-reader{margin-left:auto}}

/* On phones, each task gets the full viewport; the desktop layout is preserved. */
.mobile-only{display:none}
@media(max-width:700px){
  body{height:100dvh;overflow:hidden}
  .topbar{height:calc(60px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}
  .workspace{height:calc(100dvh - 120px - env(safe-area-inset-top) - env(safe-area-inset-bottom));min-height:0}
  .mobile-only{display:block}
  .mobile-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-shrink:0}
  .mobile-heading h1{font-size:1.35rem;margin:0}
  .mobile-nav{height:calc(60px + env(safe-area-inset-bottom));padding:8px 12px calc(8px + env(safe-area-inset-bottom));display:flex;gap:8px;background:#0f1720;border-top:1px solid var(--line)}
  .mobile-nav button{flex:1;min-width:0;border-color:transparent;background:transparent}
  .mobile-nav button[aria-pressed=true]{background:#1b3834;color:var(--accent);border-color:#365b53}
  .mobile-nav button:disabled{cursor:default}
  .sidebar{width:100%;height:100%;max-height:none;min-height:0;flex:1;flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:0;overflow:hidden;padding:16px max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));border:0}
  .sidebar-heading,.sidebar-footer{display:none}
  .search-label,.field-label{display:block;margin-bottom:6px;font-size:.8rem;flex-shrink:0}
  .field-label{margin-top:12px}
  #search,#group{width:100%;flex:0 0 auto;min-width:0;font-size:16px;min-height:44px}
  .filters{display:grid;grid-template-columns:1fr 1fr;gap:0 10px;flex-shrink:0;margin:10px 0}
  .filters label{font-size:.8rem;min-height:44px}
  .filters input{width:18px;height:18px;flex-shrink:0}
  .list-heading{display:flex;flex-shrink:0;padding-bottom:10px}
  .results{display:block;flex:1;min-height:0;max-height:none;overflow:auto;padding:8px 0 16px;overscroll-behavior:contain}
  .note-result{width:100%;min-width:0;padding:12px 10px;font-size:.95rem}
  .note-result .result-name{white-space:normal;overflow:visible;text-overflow:clip}
  .note-result small{font-size:.8rem}
  button,.top-actions button,.reader-tools button,.navigation button{min-height:44px}
  .reader{position:static;flex:1;width:100%;max-width:none;min-height:0;border:0;box-shadow:none}
  .reader-top{padding:8px 16px}
  .reader-top .eyebrow{display:none}
  .reader-tools{width:100%;gap:6px}
  .reader-tools button{min-width:44px}
  .reader-scroll,.reader-expanded .reader-scroll{padding:22px max(20px,env(safe-area-inset-right)) 40px max(20px,env(safe-area-inset-left));overscroll-behavior:contain}
  .reader-expanded #expand-reader{margin-left:auto}
  .note-actions select{font-size:16px;min-height:44px}
  .graph-pane{min-height:0;height:100%}
  .navigation{align-items:center;flex-wrap:nowrap;gap:4px}
  .navigation #breadcrumb{min-width:0;max-width:none;font-size:.8rem}
  .graph-heading{top:68px;left:16px;right:16px;gap:10px}
  .graph-heading h2{font-size:1rem}
  .graph-heading #counts{max-width:95px}
  .graph-bottom{left:12px;right:12px;bottom:12px}
  .graph-tools{width:100%;justify-content:flex-end}
  .graph-tools button{min-width:44px}
  .legend{left:16px;right:16px;bottom:68px;max-width:none}
  body:not([data-mobile-pane=map]) .view-switch{display:none}
  .load-message{margin:0 0 12px;font-size:.875rem;line-height:1.5;color:var(--muted)}
}
@media(max-width:700px) and (max-height:600px){
  .mobile-heading{display:none}.filters{grid-template-columns:repeat(2,minmax(0,1fr));margin:4px 0}
  .filters label{min-height:36px}.field-label{margin-top:6px}.sidebar{padding-top:8px}
  .graph-heading{display:none}.legend{display:none}
}
