From b95e5af0b8866a62bd5550f82818c43b905ab1b7 Mon Sep 17 00:00:00 2001 From: Nicholas Ceglia Date: Sun, 7 Jun 2026 23:33:13 -0400 Subject: [PATCH 1/2] docs: Furo theme + TCRi branding (minimal white + green) Replace the Read the Docs theme with Furo for a minimal, white-background look and adopt the TCRi brand identity: - Sidebar logo: the framework.png schematic (previously html_logo, looked off) is replaced by the tcri wordmark, with light + dark SVG variants; the text title is hidden since the wordmark IS the title. framework.png stays as the home-page figure. - Favicon: the green node/receptor "mark" (favicon_mark.ico). - Palette: white background, bold near-black headings, dark-grey body, and the brand green #39de2d as a strong accent (heading rules, API-signature bars, active nav). Body link text uses a darkened green (#1f9e16) that stays readable on white; dark mode uses the brighter #39de2d. - requirements.txt: sphinx-rtd-theme -> furo. custom.css is mode-safe (no fixed foreground/background colors), so both light and dark render cleanly. Verified locally in both modes; the API reference signatures (e.g. TCRIModel) carry the green accent border, and the real constructor signature renders under the deps-mocked build. Stacked on the D6 ReadTheDocs config (#25). Co-Authored-By: Claude Opus 4.8 --- docs/_static/css/custom.css | 54 ++++++++++++++++++++++---------- docs/_static/favicon.ico | Bin 0 -> 5578 bytes docs/_static/tcri_logo.svg | 47 +++++++++++++++++++++++++++ docs/_static/tcri_logo_dark.svg | 47 +++++++++++++++++++++++++++ docs/conf.py | 36 +++++++++++++-------- docs/requirements.txt | 2 +- 6 files changed, 156 insertions(+), 30 deletions(-) create mode 100644 docs/_static/favicon.ico create mode 100644 docs/_static/tcri_logo.svg create mode 100644 docs/_static/tcri_logo_dark.svg diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css index ea87483..1de0e15 100644 --- a/docs/_static/css/custom.css +++ b/docs/_static/css/custom.css @@ -1,26 +1,48 @@ -/* Custom styles for TCRi documentation */ +/* TCRi documentation — minimal aesthetic with the brand green (#39de2d) as a + strong accent. Layered on top of Furo; base colors (white background, near- + black text, dark greys, green links) come from light_css_variables / + dark_css_variables in conf.py. Everything here is mode-safe: it only sets + the bright-green accents and weights, never a fixed foreground/background + color, so light and dark modes both stay readable. */ -/* Main content area */ -.wy-nav-content { - max-width: 1200px; +:root { + --tcri-green: #39de2d; } -/* Code blocks */ -.highlight { - background: #f5f5f5; +/* Sidebar wordmark logo. */ +.sidebar-logo { + max-height: 3rem; + width: auto; +} +.sidebar-logo-container { + margin: 0.7rem 0 0.3rem; } -/* Links */ -a { - color: #2980B9; +/* Headings: bold, with bright-green accent rules. Color is inherited from the + theme foreground so it adapts between light and dark. */ +h1, h2, h3, h4, h5, h6 { + font-weight: 700; + letter-spacing: -0.01em; +} +h1 { + border-bottom: 3px solid var(--tcri-green); + padding-bottom: 0.2rem; +} +h2 { + border-bottom: 1px solid rgba(57, 222, 45, 0.5); + padding-bottom: 0.15rem; } -a:hover { - color: #3091d1; +/* Green accent bars on admonitions and API signatures. */ +.admonition { + border-left: 4px solid var(--tcri-green); +} +dl.py > dt { + border-left: 3px solid var(--tcri-green); + padding-left: 0.6rem; } -/* Headers */ -h1, h2, h3, h4, h5, h6 { - font-family: 'Roboto', sans-serif; - color: #2c3e50; +/* Tables: green header rule. */ +table.docutils thead tr { + border-bottom: 2px solid var(--tcri-green); } diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..326d7be797a3d36ffdb206499dffb440f80cd3d4 GIT binary patch literal 5578 zcmai$WmME%yT<(oq&k6Q#%mxMk-M=|O z!GGg)d;swLJK^wu<5ma&kdgvGw2syjQX&STzgbdM6-B+j`#(2AA%A-TmZRHe0Dv>D zswnr=C$m*w^M$@HR9YC@_I|1tS&^{BHM+Zg?PQn~uD%#I&5!n83A1cgGOhtrq0!9d6S zsTu2H`d!94l_0zU3aW6l@}*ot#2f%MvX&C+Y-ZPkKvpS3@SyKTitbW7n8ooyG|^}x ztRsFk0S_9Tz+z#cpN|U5+EGDNJR);a=K=@9-43qPR5#BchW3f>Z0PD$225_ix`F4+ zdi6v9tnMkve0f+706&(Hr1J8AG@%w5|9KmlPT15HtGQ%LbCzeuHno1%#pyxyI}nA8eh_diY4)bwVv5^gk>jk^$1R` zH03C&FEH)Dxs+<;v}iVhhzC7{L8ud*HawnjOW!#8BlZ2bznzj&zMR4{b%>(I8^g^3 zXKg5c?;P>@JS5I?_#YdFe_bag<$C(ETZI znBMvCBLk{RT8b6&$k6{o3b4Or*ngzp>F0M00Jz)#N@4eXrz@iYw71>YwY77Gor9E* z8mt0wrkZpy_+gWz?6C|4!A-V8a8=BBLd0R=;%R239?QYq%!IjT{W#I;Ra zDT)iqQ<6Cgo)fxfRbaol8Q(Aa)u=ljPV{N%u6LcQ{RY-X=^)*P1aLFOU8nEEAWFuN(Ub8G)mk0FLsZmVHV~{$Dqi&M_}MvzkP|zhN^)&_gpzFR-gQAGQMHyB1P}s=Y9Ncy zDl^}vB%aA}HI-VXbKskRpEYUaVEeN9V}Xv2$u(8uGvnEkEJF|0;HEAOhNXVZqfSMu zi*Y|F)rae4mdLqS`?h;=xT`~;C>IbqtX~vlPP^O~|A${+==(#`pn=;=IFs+Z-{|dJ zu(TK?mr}*FStLzp^!$VG%WBUrl{9(vV6giet%+*&%a)$Q?4(Np{@2g5th9OGo_wm` z=4<2C(F|#7@74%uxIn}_^)h>+ktU!wEG0B{`bST+dIA&Q4D(^@Q~b-lvUfKqqNPDcDfPxt3e0|G>!K;zK5LF$c$8P)TsPV zyXgx~omIkUoxZVIj3LyaW5fFVXgIwf+b64EHbqQs6_q51i0kp9i=f%jn)VhCJD2XqI02!m@jze+@V9ilc= zW!+*d7dVJe`7{auvq6y!UKL~n@v5fB6;0MITaEGXk8GgVPX&UNx@jru=h#v$g^K#J zrLoq^LOhp#Q)OpAFPbcN9Y!L$$y;OE^mJbZzo%a{m}|s;`V^1)1M!+F zUwDQ+>9SfU+5UzSo!hNSdc7_xG|mlTBqAQvvkw@(T`h{=u6mg< zmRMEn%9&$nqzN6*-~Qsg^QLrxe7;5<10fM2J4_f>aMrs8P%TZ3ilh$F|BplbgBQX7 zID`@CJQ4u#pZ(V%Of;RIPSZ;-p_UjEoSm$tK2|X}1x~=ZUe~+ic*|L{DgEX&DA=lU zc$8A&Mg2*yy5x&s#nVrv{OL-iC2>4;G5y*pJcb6e!5mf^`cxgAYKcVRcwp~NvECWs zy@frmht`f)Qr^mw0XqA zS}Kr6AP+-g{7l8lUp!6^T9&=stjN_?zpP}VsR%u6H9EZN{6o+{Q+tz4bYo$_$MVu* z=~fzux?nS+r!-QY1+ys<;nd(*k}{gv3w_uSop6k5!3{o0IipYLm?wM8c~wgf4#^e^ zow*$R*7|KLg0Cc@D7c!iJBk!2-c}m&G*ft)Ixcc=l-pbiP;@_@ApUZNiw9;6EAPVQ z(v9=rfIrz$JNnT9$_;Tc&E!Dvd|DG$^-~QOz6}n>U;^hHaE-ctDriN$z0J7~ zmmFe5UMcsL$EREPUc9V)j3e(+o;^)#d-I7WIC^mEN3ktXV7?YE0q-vp8mQk3AC)XadvJ@YCN8p1cyUsa|0;L^8%YgDs&d z#Nap>gSw;&9Bro*+lY)-+(cP?AwTKtAt%vG9|@P=Zw2x`Ch zki*lCQ}rN=!TcvK^-q+qqF#3~^iMS@BYi`cow>Ahj~l`)+m3O9^G1I6yop;O1d-pP zRo`iUb=2_(k$;~UJ5KMO2ZMoFKY`p=VH6N{s31qc;$z5IY>6RnS%<82dMb*)&C8tx z_)<}~_cr!Qx#XBGw$db&d*EFl1)QDAU6g2uad_X~7aiokyslkDqwHD-;Q~*I9!@Sm zTd5}S>QX6Ifs4G&-M8eS+`(9&i8PPH!L50mP&*W#Jp5$Dq|@ar+*Ptip(Jx6)^f4$^>g;p^}#|4Ta^>3S6nSiN^ILe=r^5xS5_Cb4%5XU z=DlmQ=Sfmnd6;nIjc2h8I_*3Hd_g1q%vT+!!=SmtE)KA(Q!BZS_0{Fp-hZq5oi2PE zH;Dho)Uo5E3*w>4?(y(@fCf^UkssNje-QfH84}wty~2>q*T`OYVv}IgW?|z!t;vTh^zGwu1<|sV4w1 zAmT(4>NSY{@PbkDtyC8AMS`?MhM4yb<(=S{ud3~1Y=!PIsNJLVSO5bo6U7%#ZmycL zSWq|}UndrI&KY|OaO-W_w@d2YMw~E`0rJJvTvR)Q3*s|^@2iidoyr0e*nnW|S*|-d z6_3LQL&-rCG$pk-fLq=>u$r4qm8lb2h??_91V>g?6?ipI{D%(4IHV`-kD>ML4_1ujOgIp_6D5q(-1o-fOb<~a zqM_8@7&tr=!gNCf*pIBy%$ioIi$B{#JanFZuN?l|kR$65MR+R%9HX!T9=)$AqZ0bs zBENSs8_86fTv``$d$A{py0RZv7^WmS6caIzYJTNW&P3U)&GtL!G$%a@=Kz=4BvCpP z`p8wAG~4!OXV1wTH}`qk;Mtm;8^Mm)v2TNzeWFcnI$Byd*IfLjJq9qW`a4Mgnhdi%UP#>6s5-&PQn~UU|bE{`#1)o>kfL zPMYFF2`cID0`X%RGu@nGRnS|!Lj*m!&w+Wu|3fDD-#Yw1WGZ>?z6b!2@c)ttVeVws zLoaQ=u~^64r^@7jh=wu+D&khTW9spk=lxn2LgMNI-ZiS?FwjyUIxmYuWHpGD;zVYedALxrYTD=bUS zhhHoWG}jBw{Nmh*Tk+^eI_xT2%YVZjJIhWj@uD}QDr3b2cz>s{f`IZ_{5-y=9Eoo~ z!WBA?G61(TH(&G8oV&lk0Mn?}y=CE46(|Ufr#o>C=*(K0G}MqyC;+(@oyWV9f#efX zg*Gr%c6vupk3Y*zZ7H>)@o2NW`C(>iLpTm1M<-ZU6XbSe!?yzpUi1t2MwHJFs?RE4 z8w%cVKojLS;K20+%clT4fy%aPxcTb>Rm_6(07)d`Ou(8V6dnbDCP>X#9i{UEpVQ1e z!#ZrT&N-bn4=i(kul*igqU^|A;7=fdrnWAZV*8!Ki6y~A!{|V+LToTXuz~^L>;Gf> zXE`wC?9(CwDx_rQs1GP+;!tyPS72yy6~rZnTnpQP`D!R&>)Dn#5P#-@!9hmud+ z%{u3Y{oV4;sgc1}8_n8YGWO}`RHPY5q7dRl+BE=AP797MY5>yg^g7U>z^QiYEp2#3 zX7cvtL?T4YwjvRu-R#Zyc`qV3a{0i3u8tMITYatmlCN1$UUYyCe zWBP$IeDUQ9t}^O&zWdZfqK>DSXf>~;SEE}WG%~o7%(oJbl~mtOcCF6-${hm=)EFv) zcWC215#qTZ1)xhvP3PfO(nGJ7fxt)2%S=jAHOUotq3|Y$7fhGLHwA6+xh$Ny##S+j zl^@M>Hm{pqJ-hEHpN;mG-^4ODKQ@__kgP+SUn)zr+upnB6v>cU@MU>J9s^ce6k}9Z zZzN=SWAd3ykH$4_btm&y>9)M9UG2`-!UTaGI$HZ?ov)9VgypP&<>3|K`TC%Y#6p#& zFgHLg5uN-g2w7aS;JV_f5iP678Sc0*;yVszGqdB2&J??x{JD#R<4)*dfOX+t0N$txo&Gjtbe3Fy-$z&o+Z?U^a=V#*!DIQ`I z#L-YYd)2qsG*JH=MR8YO)0mawkV^XXk>~>IxZYa9$l&2`?bkE}xyk#{6jE-R%|%Ny zGRghFIOgn*%02Lusn&M!85z6!fSeY%wACaLHMf2?M2Uj>r;)gDp%6~D0$@CA*~Bwe zYV?U5P0<#xQDGQro-3Io!7s&?o=6DAY)SZU_C|!}Pu^RGyTJQr_^s}JC7M=lfrp7r zIbH4?Y+8vD0zk2&>9WB%(Na4Yobb-Z)Gk4mwp1IKr+V;WZO{eI4iD3)b8tL8^Q=k- zLx8+Ex-c(t-`aK$$;$ALF;2}QV*Xc6#?m07C&{$JXSvZwP97YuDabW660dUhdVf*= zV7(5wHJ|i*b?zoX<{Ldtx49mgLa%D25#>V~Zr7VdP-^;#kFAO1RA~*TODOl5$lrxk;xc!+a{o9Q+vo>*42?^yuX?{Q z`0+VmUg&XSvR_9!7fciSE-adP#&^dTwODXK>Q2Jd?7{&FO;*}<&&=`^z@kWQg(T23 z+ciTGmEL^@N=|{71P$-oCgu;VCTOHFBND1a?C;HBZ`V}Q8yAEau>$YEo>8X6kMRU^ z^w7WXw|Mj-2qQ5&sUBl*Y_-#e3zkS+drXFih9oKqR%ejNYih{}9J{i}2$njvvx}Br zhpd+&0Jg^pjX8c=Ir zvykYlG+8Gis`Oq!w8uKklt5s(b~|EQI&qJ`)MZaC*GO<(VSTIQ{$tQk + + + + + + + + + + + + + + + + + + + + + + + + + + + + i + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_static/tcri_logo_dark.svg b/docs/_static/tcri_logo_dark.svg new file mode 100644 index 0000000..d885c4d --- /dev/null +++ b/docs/_static/tcri_logo_dark.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + i + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py index aa8d722..132e1e4 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -60,7 +60,7 @@ def _get_release(): # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. -html_theme = 'sphinx_rtd_theme' +html_theme = 'furo' # Add any paths that contain custom static files (such as style sheets) here. # relative to this directory. They are copied after the builtin static files, @@ -73,20 +73,30 @@ def _get_release(): 'css/custom.css', ] -html_logo = '../framework.png' -html_favicon = '../framework.png' +html_favicon = '_static/favicon.ico' +# -- Furo theme -------------------------------------------------------------- +# Minimal, white-background look with the TCRi brand green (#39de2d) as the +# accent. The wordmark logo serves as the title, so the text name is hidden. +# Bright #39de2d is used for non-text accents (heading rules, nav marker, +# admonition bars) via custom.css; body link text uses a darker green +# (#1f9e16) that stays readable on white. html_theme_options = { - 'logo_only': False, - 'prev_next_buttons_location': 'bottom', - 'style_external_links': False, - 'style_nav_header_background': '#2980B9', - # Toc options - 'collapse_navigation': True, - 'sticky_navigation': True, - 'navigation_depth': 4, - 'includehidden': True, - 'titles_only': False + "sidebar_hide_name": True, + "light_logo": "tcri_logo.svg", + "dark_logo": "tcri_logo_dark.svg", + "light_css_variables": { + "color-brand-primary": "#1f9e16", + "color-brand-content": "#1f9e16", + "color-brand-visited": "#1f9e16", + "color-background-primary": "#ffffff", + "color-foreground-primary": "#0a0a0a", + }, + "dark_css_variables": { + "color-brand-primary": "#39de2d", + "color-brand-content": "#39de2d", + "color-brand-visited": "#39de2d", + }, } # -- Extension configuration ------------------------------------------------- diff --git a/docs/requirements.txt b/docs/requirements.txt index d9f8caf..4e5e909 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -5,7 +5,7 @@ # here. Only the Sphinx toolchain plus numpy/pandas (kept real for clean # intersphinx type links) are needed. sphinx>=7,<9 -sphinx-rtd-theme>=2.0 +furo>=2024.1.29 myst-parser>=2.0 numpy pandas From 8c91fa78e6e9819313209c431df2877d47925b5a Mon Sep 17 00:00:00 2001 From: Nicholas Ceglia Date: Sun, 7 Jun 2026 23:40:54 -0400 Subject: [PATCH 2/2] docs: refresh README logo (updated tight wordmark, slightly smaller) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the older framed grey logo with the current brand wordmark (tcri_logo_tight_1024.png — clean black "tcr" + green plate-i, transparent, tightly cropped) and reduce the display width 500 -> 400 to compensate for the tighter crop. Co-Authored-By: Claude Opus 4.8 --- README.md | 2 +- tcri_logo.png | Bin 10664 -> 15910 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8aecf7c..38f0fbe 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- TCRi logo + TCRi logo

# **TCR**i diff --git a/tcri_logo.png b/tcri_logo.png index 246da27bf7a094ea38d2129b10cd15bc9e9559ce..4d07e82cec03e3709fbf7ea4a6c2f7288922ff6d 100644 GIT binary patch literal 15910 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 literal 10664 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∋^rTELOdY=-sU;n< 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