/* Research notebook: inherits the portfolio's type, navigation and light palette. */
.research-page{--link:#194e9a}.research-page .container{max-width:1120px;min-width:0}.research-page .nav{flex-wrap:wrap}.notebook-heading{padding:38px 0 24px;border-bottom:2px solid #181a20}.notebook-path{font:13px var(--font-mono);color:#696d77;margin:0 0 12px}.notebook-heading h1{font-size:clamp(29px,4vw,43px);line-height:1.16;letter-spacing:-1.7px;font-weight:500;margin:0 0 12px}.notebook-heading p:last-child{font-size:15px;color:var(--fg-dim);margin:0;max-width:710px}.notebook-nav{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #cccfd6;padding:11px 0;gap:20px}.notebook-nav>div{display:flex;gap:24px;flex-wrap:wrap}.notebook-nav a{font-size:13px}.notebook-nav a:hover{text-decoration:underline}.research-page main a:not(.notebook-nav a){color:var(--link);text-decoration:underline;text-underline-offset:3px}.notebook-grid{display:grid;grid-template-columns:minmax(0,1fr) 258px;gap:52px;padding:33px 0 36px}.notebook-grid>*{min-width:0}.notebook-grid article{max-width:690px}.notebook-grid h2{font-size:24px;font-weight:500;line-height:1.3;letter-spacing:-.7px;margin:0 0 18px}.notebook-grid h3{font-size:16px;font-weight:600;margin:28px 0 10px}.notebook-grid p{font-size:16px;line-height:1.75;margin:0 0 18px;color:#3f424d}.notebook-grid .byline{font:12px var(--font-mono);color:#777b85;margin:0 0 12px}.project-note{border-left:3px solid #adb6c9;padding:2px 0 2px 21px;margin:23px 0}.project-note p{font-size:18px;color:#232630;line-height:1.65;margin:0 0 15px}.project-note p:last-child{margin:0}.note-source{font-size:12px!important;color:#747782!important}.notebook-section{scroll-margin-top:85px;margin-bottom:38px}.notebook-section+.notebook-section{padding-top:26px;border-top:1px solid #d2d5dc}.notebook-section ul{padding-left:20px;font-size:15px;color:#3f424d;line-height:1.8}.notebook-section li{padding-left:3px;margin:6px 0}.notebook-section code,.file-name{font-family:var(--font-mono);font-size:13px}.research-facts{border-collapse:collapse;width:100%;font-size:14px;margin:22px 0}.research-facts td{padding:10px 0;border-top:1px solid #d9dce2;vertical-align:top}.research-facts td:first-child{width:34%;color:#656975}.research-facts td:last-child{padding-left:18px}.notebook-sidebar{border-left:1px solid #d2d5dc;padding-left:24px;font-size:13px}.notebook-sidebar h2{font-size:14px;letter-spacing:0;font-weight:600;margin-bottom:14px}.notebook-sidebar .sidebar-section{margin-bottom:30px}.notebook-sidebar p{font-size:13px;line-height:1.65}.notebook-sidebar ul{list-style:none;padding:0;margin:0}.notebook-sidebar li{margin:10px 0;line-height:1.55}.file-description{display:block;font-size:12px;color:#747782;margin-top:2px}.firmware-label{font:12px var(--font-mono);color:#5b606d;margin:0 0 9px}.repo-address{font:12px/1.8 var(--font-mono);overflow-wrap:anywhere}.notebook-footer{padding:20px 0 35px;border-top:1px solid #cdd0d8;display:flex;justify-content:space-between;gap:20px;color:#747782;font-size:11px}.notebook-footer a{color:inherit}.research-page .notebook-footer p{margin:0}.text-link-list{display:flex;gap:20px;flex-wrap:wrap;font-size:14px;margin-top:20px}
/* Rare UI ScrollProgress adaptation: native DOM, inline placement.
   Copyright (c) 2026 Swami Malode. Full license: rare-ui-LICENSE.txt */
.scroll-control{position:relative;flex-shrink:0;font-size:12px}.scroll-control .scroll-toggle{position:static;display:flex;align-items:center;gap:8px;width:auto;height:auto;border:0;background:none;box-shadow:none;border-radius:0;padding:3px 0;color:#555b68;font:12px var(--font-ui);cursor:pointer}.scroll-control .scroll-toggle:hover{transform:none}.scroll-toggle svg{width:16px;height:16px;transform:rotate(-90deg)}.scroll-track{fill:none;stroke:#d5d8df;stroke-width:2}.scroll-value{fill:none;stroke:#505969;stroke-width:2;stroke-linecap:round;stroke-dasharray:62.832;stroke-dashoffset:62.832}.scroll-control [hidden]{display:none!important}.scroll-menu{position:absolute;right:0;top:25px;z-index:55;list-style:none;margin:0;padding:6px;background:#fff;border:1px solid #bfc4ce;min-width:165px;box-shadow:0 4px 12px #0000000d}.scroll-menu a{display:block;padding:7px 10px;font-size:12px}.scroll-menu a:hover,.scroll-menu a[aria-current]{background:#edeef2;text-decoration:none}.scroll-control button:focus-visible{outline:2px solid #194e9a;outline-offset:3px}
@media(max-width:800px){.notebook-grid{grid-template-columns:minmax(0,1fr) 210px;gap:28px}.notebook-sidebar{padding-left:18px}}
@media(max-width:620px){.notebook-grid{display:flex;flex-direction:column;gap:10px;padding-top:25px}.notebook-heading{padding-top:25px}.notebook-heading h1{letter-spacing:-1px}.notebook-nav>div{gap:15px}.notebook-nav a{font-size:12px}.notebook-nav{align-items:flex-start;gap:12px}.scroll-label{max-width:90px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.notebook-sidebar{border-left:0;padding:24px 0 0;border-top:1px solid #cdd0d8}.notebook-sidebar .sidebar-section{margin-bottom:24px}.notebook-grid p{font-size:15px}.project-note{padding-left:16px}.project-note p{font-size:17px}.notebook-footer{flex-direction:column;gap:9px}.research-page .nav{gap:2px}.research-page .nav-links{margin-left:auto}.research-page .nav-links a{padding:8px 6px;font-size:12px}.research-facts{font-size:13px}.research-facts td:first-child{width:37%}}
@media(prefers-reduced-motion:reduce){.research-page *{scroll-behavior:auto!important;animation:none!important;transition:none!important}}/* Existing project diagrams, displayed on their original dark canvas. */
.research-figure{margin:26px 0}.research-figure>a{display:block;background:#080808;padding:12px;outline-offset:4px}.research-figure img{width:100%;height:auto;display:block}.research-figure figcaption{font-size:12px;line-height:1.6;color:#656975;margin-top:9px;max-width:760px}.chain-figure{margin:26px 0 0}.chain-figure>a{padding:21px 16px}.architecture-figure{margin:27px 0}.architecture-figure>a{padding:14px}.architecture-figure img{max-width:775px;margin:auto}@media(max-width:620px){.chain-figure>a{padding:12px 8px}.research-figure figcaption{font-size:11px}.architecture-figure>a{padding:7px}}/* Reading layout and figure viewer refinements. */
.research-page .container{max-width:1180px}.notebook-heading{padding-top:36px;padding-bottom:26px}.notebook-heading h1{font-size:clamp(30px,3.5vw,42px)}
.notebook-nav{position:sticky;top:49px;background:var(--bg);z-index:40;padding:12px 0}.notebook-nav>div:first-child{gap:22px}.notebook-nav a{padding:5px 0;color:#4c5260}.notebook-nav a[aria-current]{color:#194e9a;text-decoration:underline;text-underline-offset:7px}.notebook-nav .scroll-control{display:block}.notebook-nav .scroll-menu a{padding:9px 12px}
.notebook-grid{grid-template-columns:minmax(0,1fr) 250px;gap:34px;padding-top:28px;align-items:start}.notebook-grid article{max-width:none;background:#fff;padding:30px 34px 4px;border:1px solid #e1e3e9;border-radius:6px}.notebook-sidebar{border:0;padding:7px 0 0 4px;position:sticky;top:125px}.notebook-sidebar .sidebar-section{padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid #d9dce3}.notebook-sidebar .sidebar-section:last-child{border:0}.notebook-sidebar li{padding:7px 0;margin:0}.notebook-sidebar .repo-address{font-size:13px}.notebook-sidebar .file-description{margin-top:4px}.notebook-sidebar h2{margin-bottom:12px}.notebook-grid p{line-height:1.8}.notebook-section{scroll-margin-top:125px}.notebook-section+.notebook-section{padding-top:30px}.project-note{margin:22px 0;padding:1px 0 1px 19px}.project-note p{font-size:17px;line-height:1.7}.research-facts td{padding:13px 0}.research-facts td:first-child{color:#4d5360}.note-source{margin-top:18px!important}.research-figure{margin:25px 0}.research-figure>a{border-radius:4px;overflow:hidden}.chain-figure>a{padding:22px 12px}.chain-figure figcaption,.architecture-figure figcaption{font-size:12px;color:#5e6573}.architecture-figure>a{padding:18px}.architecture-figure img{max-height:330px;object-fit:contain}.research-figure>a:hover{outline:2px solid #899bb7;outline-offset:3px}.research-figure figcaption a{white-space:nowrap}.notebook-footer{margin-top:0}
.diagram-dialog{width:min(1100px,calc(100% - 32px));max-height:calc(100dvh - 40px);padding:0;border:1px solid #c1c6d1;border-radius:7px;background:#f5f5f7;color:#171a21;box-shadow:0 24px 100px #0004}.diagram-dialog::backdrop{background:#10141ec9}.diagram-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;border-bottom:1px solid #d3d7df}.diagram-toolbar h2{margin:0;font:500 16px var(--font-ui)}.diagram-close{font:14px var(--font-ui);background:white;border:1px solid #bfc5cf;padding:9px 14px;border-radius:4px;cursor:pointer;min-height:40px}.diagram-close span{padding-left:9px;font-size:20px}.diagram-canvas{background:#080808;overflow:auto;padding:24px;max-height:calc(100dvh - 185px)}.diagram-canvas img{width:100%;min-width:784px;max-width:none;height:auto;display:block;margin:auto}.diagram-dialog>p{font:12px/1.5 var(--font-ui);padding:11px 20px;margin:0;color:#5c6370}
@media(max-width:850px){.notebook-grid{grid-template-columns:minmax(0,1fr) 210px;gap:22px}.notebook-grid article{padding:25px 22px 0}.notebook-nav>div:first-child{gap:14px}.notebook-sidebar{top:130px}.notebook-nav .scroll-label{max-width:80px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}
@media(max-width:620px){.notebook-nav{top:43px;padding:9px 0;gap:8px;align-items:center}.notebook-nav>div:first-child{gap:4px 15px}.notebook-nav a{font-size:12px}.notebook-nav .scroll-label{display:none}.notebook-nav .scroll-toggle{min-width:36px;min-height:36px;justify-content:center}.notebook-nav .scroll-toggle svg{width:20px;height:20px}.notebook-grid{display:flex;gap:26px;padding-top:20px}.notebook-grid article{width:100%;padding:23px 19px 0}.notebook-grid h2{font-size:23px}.notebook-grid .byline{font-size:10px;letter-spacing:.3px}.notebook-section{scroll-margin-top:140px;margin-bottom:29px}.notebook-section+.notebook-section{padding-top:25px}.project-note{padding-left:13px}.project-note p{font-size:16px}.notebook-sidebar{position:static;width:100%;padding:0 4px}.notebook-sidebar .sidebar-section{padding-bottom:17px;margin-bottom:18px}.research-facts td:first-child{width:39%}.chain-figure>a{padding:15px 6px;overflow-x:auto}.chain-figure img{width:620px;max-width:none}.architecture-figure>a{padding:10px}.architecture-figure img{max-height:260px}.research-figure figcaption{font-size:11px;line-height:1.7}.diagram-canvas{padding:14px}.diagram-toolbar{padding:12px}.diagram-dialog>p{padding:10px 12px}}/* Research funding: explicit target without an unverified progress counter. */
.donation-section{scroll-margin-top:130px}.notebook-sidebar .donation-goal{font-size:14px;margin-bottom:13px;color:#222936}.research-page main .donation-link{display:inline-block;border:1px solid #254d86;padding:9px 14px;border-radius:4px;text-decoration:none;color:#194e9a;background:#fff}.research-page main .donation-link:hover{background:#e9eef7}.notebook-sidebar .donation-note{font-size:11px;margin-top:12px;color:#666e7c}.support-banner{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:center;padding:24px 26px;margin:24px 0 10px;border:1px solid #cbd4e3;border-left:3px solid #254d86;border-radius:5px;background:#fff;scroll-margin-top:125px}.support-banner h2{font-size:19px;font-weight:500;letter-spacing:-.4px;line-height:1.3;margin:0 0 7px}.support-banner .support-copy p{font-size:13px;color:#5c6370;margin:0 0 14px}.support-progress-heading{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:13px;margin-bottom:12px}.support-progress-heading span{font-size:11px;color:#687180}.funding-track{height:11px;border-radius:3px;overflow:hidden;background:#e8ecf2;border:1px solid #d7dee8}.funding-fill{display:block;width:0;height:100%;background:#254d86}.support-progress p{font-size:11px;line-height:1.6;color:#687180;margin:9px 0 0}@media(max-width:620px){.support-banner{grid-template-columns:1fr;gap:20px;padding:20px;margin-top:20px}.support-banner h2{font-size:18px}}/* Funding panel; wheel counter adapted from Rare UI animated-counter.
   Copyright (c) 2026 Swami Malode. License: rare-ui-LICENSE.txt */
.support-banner.funding-panel{grid-template-columns:1fr .9fr;gap:48px;padding:29px 32px;margin:25px 0 18px;border:1px solid #d7dce5;border-radius:14px;background:#fff;box-shadow:0 2px 3px #11182703,0 8px 25px #11182704}.funding-category{font-size:12px;color:#687180;display:block;margin-bottom:9px}.funding-panel h2{font-size:27px;letter-spacing:-.9px;margin:0 0 10px}.funding-description>p{font-size:14px;line-height:1.7;color:#59616e;max-width:420px;margin:0 0 20px}.research-page main .funding-donate{display:inline-flex;gap:27px;align-items:center;background:#171b23;color:#fff;border:1px solid #171b23;padding:11px 17px;border-radius:8px;font-size:13px;font-weight:500;text-decoration:none;transition:background .15s,transform .15s}.research-page main .funding-donate:hover{background:#354052;transform:translateY(-1px)}.funding-footnote{display:block;font-size:11px;color:#7b8390;margin-top:10px}.funding-meter{border-left:1px solid #e4e7ed;padding-left:36px}.funding-total{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:21px}.funding-goal-label{font-size:12px;color:#687180}.funding-amount{display:flex;align-items:baseline;gap:9px;min-height:68px}.goal-number{font-size:48px;font-weight:500;letter-spacing:-2px;line-height:1.5;font-variant-numeric:tabular-nums;display:inline-flex;align-items:center}.goal-tax{font-size:15px;color:#687180}.goal-wheel{height:1.5em;width:.62em;position:relative;overflow:hidden;mask-image:linear-gradient(to bottom,transparent,#000 22%,#000 78%,transparent)}.goal-wheel-stack{display:flex;flex-direction:column;will-change:transform}.goal-wheel-stack span{display:flex;align-items:center;justify-content:center;height:1.5em;flex-shrink:0;letter-spacing:0}.funding-ring{width:66px;height:66px;flex-shrink:0;fill:none;stroke:#e1e6ee;stroke-width:3}.funding-ring path{stroke:#8a95a6;stroke-width:2;stroke-linecap:round}.funding-panel .funding-track{height:10px;border:0;background:repeating-linear-gradient(to right,#e4e8ef 0,#e4e8ef calc(3.333% - 3px),transparent calc(3.333% - 3px),transparent 3.333%);border-radius:2px}.funding-meter-caption{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:#687180;margin-top:12px}.funding-meter-caption strong{font-weight:500;color:#454f5e}.funding-panel .funding-update-note{font-size:11px;color:#7b8390;margin:12px 0 0;line-height:1.6}@media(max-width:700px){.support-banner.funding-panel{gap:27px;padding:24px;grid-template-columns:1fr 1fr}.funding-meter{padding-left:24px}.funding-ring{width:48px;height:48px}.goal-number{font-size:39px}.funding-total{gap:8px}.goal-tax{font-size:12px}.funding-panel h2{font-size:25px}}@media(max-width:540px){.support-banner.funding-panel{grid-template-columns:1fr;gap:23px;padding:22px}.funding-meter{border-left:0;border-top:1px solid #e4e7ed;padding:20px 0 0}.funding-total{margin-bottom:12px}.goal-number{font-size:46px}.funding-ring{width:58px;height:58px}.funding-description>p{font-size:13px;margin-bottom:16px}.funding-footnote{display:inline-block;margin-left:12px}.funding-panel h2{font-size:26px}.funding-meter-caption{font-size:12px}}
.research-page main .funding-description a.funding-donate{color:#fff;text-decoration:none}.research-page main .funding-description a.funding-donate:focus-visible{outline:2px solid #194e9a;outline-offset:4px}
/* Research milestones are independent of the donation meter. */
.research-progress-panel{margin:22px 0;padding:22px 26px;border:1px solid #d8dee7;border-radius:10px;background:#fff;scroll-margin-top:125px}.research-progress-top{display:flex;align-items:center;justify-content:space-between;gap:22px}.research-progress-top h2{font-size:19px;font-weight:500;letter-spacing:-.4px;margin:0 0 6px}.research-progress-top p{font-size:12px;color:#737c8a;margin:0}.research-score{font-size:34px;line-height:1.2;font-weight:500;white-space:nowrap;letter-spacing:-1px}.research-score span{font-size:16px;font-weight:400;color:#7b8594;letter-spacing:0;margin-left:3px}.research-progress-bar{height:10px;background:#e5eaf1;border-radius:3px;overflow:hidden;margin:18px 0}.research-progress-bar>span{display:block;height:100%;background:#254d86}.research-progress-context{font-size:13px;line-height:1.75;color:#5c6675;margin:0}.research-progress-context strong{font-weight:500;color:#303a48}.research-rubric{border-top:1px solid #e2e6ec;margin-top:17px;padding-top:14px;font-size:12px;color:#5a6574}.research-rubric summary{cursor:pointer;color:#194e9a;font-size:13px;padding:4px 0}.research-rubric table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;margin:15px 0}.research-rubric caption{text-align:left;color:#727c89;font-size:11px;padding-bottom:10px}.research-rubric td,.research-rubric th{border-bottom:1px solid #e3e7ed;padding:10px 0;font-weight:400}.research-rubric td:last-child,.research-rubric thead th:last-child{text-align:right;white-space:nowrap;padding-left:12px}.research-rubric p{line-height:1.7}@media(max-width:620px){.research-progress-panel{padding:20px}.research-progress-top{gap:12px;align-items:flex-start}.research-progress-top h2{font-size:17px}.research-score{font-size:29px}.research-progress-top p{font-size:11px;line-height:1.6}.research-rubric table{font-size:11px}}.research-page main .funding-description a.funding-donate{min-height:56px;padding:15px 24px;font-size:16px;gap:32px;justify-content:center}.funding-footnote{display:block;margin-left:0;margin-top:12px}@media(max-width:540px){.research-page main .funding-description a.funding-donate{width:100%;min-height:58px;font-size:16px}.funding-footnote{display:block;margin-left:0}}