/* The case page's stylesheet.

   Extracted from templates/case_page.html, where it was two inline <style>
   blocks: 57 KB — 36% of every document — of identical, uncacheable bytes
   repeated across ~5M pages. One full crawl of the corpus re-fetched roughly
   287 GB of CSS the crawler already had, and Googlebot sets crawl rate partly
   from origin response size, so the page weight was directly capping how fast
   the corpus could be crawled at all.

   Loaded three different ways, because the template serves three surfaces:

     /case/:cid and /case/:cid/print   <link> to a content-hashed, immutably
                                       cached /assets/case-<hash>.css
     the app's case modal              INLINED into the srcdoc — that document
                                       is about:srcdoc and has no base URL to
                                       resolve a relative href against, and the
                                       bytes are already in the JS bundle, so a
                                       link would cost a request to save nothing

   Both callers substitute the same stylesheet token in the template's <head>.
   Its name is deliberately not written out here — substitution is a plain string
   replace and this text ends up inside the document on the inlining path, where
   a literal token name would read as one that was never substituted. See
   renderCaseTemplate in server/index.cjs and buildSummarySrcDoc in
   client/src/components/CaseTemplateFrame.tsx. */

/* tabler-icons:begin — generated by scripts/gen-case-icons.cjs */
.ti{display:inline-block;width:1em;height:1em;vertical-align:-.125em;background-color:currentColor;-webkit-mask:var(--ti,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'/%3E")) no-repeat center/contain;mask:var(--ti,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'/%3E")) no-repeat center/contain}
.ti-alert-circle{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0'%3E%3C/path%3E%3Cpath d='M12 8v4'%3E%3C/path%3E%3Cpath d='M12 16h.01'%3E%3C/path%3E%3C/svg%3E")}
.ti-alert-octagon{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.802 2.165l5.575 2.389c.48 .206 .863 .589 1.07 1.07l2.388 5.574c.22 .512 .22 1.092 0 1.604l-2.389 5.575c-.206 .48 -.589 .863 -1.07 1.07l-5.574 2.388c-.512 .22 -1.092 .22 -1.604 0l-5.575 -2.389a2.036 2.036 0 0 1 -1.07 -1.07l-2.388 -5.574a2.036 2.036 0 0 1 0 -1.604l2.389 -5.575c.206 -.48 .589 -.863 1.07 -1.07l5.574 -2.388a2.036 2.036 0 0 1 1.604 0z'%3E%3C/path%3E%3Cpath d='M12 8v4'%3E%3C/path%3E%3Cpath d='M12 16h.01'%3E%3C/path%3E%3C/svg%3E")}
.ti-alert-triangle{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 9v4'%3E%3C/path%3E%3Cpath d='M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z'%3E%3C/path%3E%3Cpath d='M12 16h.01'%3E%3C/path%3E%3C/svg%3E")}
.ti-arrow-up-right{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 7l-10 10'%3E%3C/path%3E%3Cpath d='M8 7l9 0l0 9'%3E%3C/path%3E%3C/svg%3E")}
.ti-ban{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0'%3E%3C/path%3E%3Cpath d='M5.7 5.7l12.6 12.6'%3E%3C/path%3E%3C/svg%3E")}
.ti-beta{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 22v-14a4 4 0 0 1 4 -4h.5a3.5 3.5 0 0 1 0 7h-.5h.5a4.5 4.5 0 1 1 -4.5 4.5v-.5'%3E%3C/path%3E%3C/svg%3E")}
.ti-book-2{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 4v16h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h12z'%3E%3C/path%3E%3Cpath d='M19 16h-12a2 2 0 0 0 -2 2'%3E%3C/path%3E%3Cpath d='M9 8h6'%3E%3C/path%3E%3C/svg%3E")}
.ti-bookmark{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 7v14l-6 -4l-6 4v-14a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4z'%3E%3C/path%3E%3C/svg%3E")}
.ti-books{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z'%3E%3C/path%3E%3Cpath d='M9 4m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z'%3E%3C/path%3E%3Cpath d='M5 8h4'%3E%3C/path%3E%3Cpath d='M9 16h4'%3E%3C/path%3E%3Cpath d='M13.803 4.56l2.184 -.53c.562 -.135 1.133 .19 1.282 .732l3.695 13.418a1.02 1.02 0 0 1 -.634 1.219l-.133 .041l-2.184 .53c-.562 .135 -1.133 -.19 -1.282 -.732l-3.695 -13.418a1.02 1.02 0 0 1 .634 -1.219l.133 -.041z'%3E%3C/path%3E%3Cpath d='M14 9l4 -1'%3E%3C/path%3E%3Cpath d='M16 16l3.923 -.98'%3E%3C/path%3E%3C/svg%3E")}
.ti-briefcase{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v9a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z'%3E%3C/path%3E%3Cpath d='M8 7v-2a2 2 0 0 1 2 -2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3Cpath d='M12 12l0 .01'%3E%3C/path%3E%3Cpath d='M3 13a20 20 0 0 0 18 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-building-bank{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21l18 0'%3E%3C/path%3E%3Cpath d='M3 10l18 0'%3E%3C/path%3E%3Cpath d='M5 6l7 -3l7 3'%3E%3C/path%3E%3Cpath d='M4 10l0 11'%3E%3C/path%3E%3Cpath d='M20 10l0 11'%3E%3C/path%3E%3Cpath d='M8 14l0 3'%3E%3C/path%3E%3Cpath d='M12 14l0 3'%3E%3C/path%3E%3Cpath d='M16 14l0 3'%3E%3C/path%3E%3C/svg%3E")}
.ti-calendar-event{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z'%3E%3C/path%3E%3Cpath d='M16 3l0 4'%3E%3C/path%3E%3Cpath d='M8 3l0 4'%3E%3C/path%3E%3Cpath d='M4 11l16 0'%3E%3C/path%3E%3Cpath d='M8 15h2v2h-2z'%3E%3C/path%3E%3C/svg%3E")}
.ti-certificate{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 15m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0'%3E%3C/path%3E%3Cpath d='M13 17.5v4.5l2 -1.5l2 1.5v-4.5'%3E%3C/path%3E%3Cpath d='M10 19h-5a2 2 0 0 1 -2 -2v-10c0 -1.1 .9 -2 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -1 1.73'%3E%3C/path%3E%3Cpath d='M6 9l12 0'%3E%3C/path%3E%3Cpath d='M6 12l3 0'%3E%3C/path%3E%3Cpath d='M6 15l2 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-chevron-down{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6l6 -6'%3E%3C/path%3E%3C/svg%3E")}
.ti-circle{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-circle-check{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0'%3E%3C/path%3E%3Cpath d='M9 12l2 2l4 -4'%3E%3C/path%3E%3C/svg%3E")}
.ti-click{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12l3 0'%3E%3C/path%3E%3Cpath d='M12 3l0 3'%3E%3C/path%3E%3Cpath d='M7.8 7.8l-2.2 -2.2'%3E%3C/path%3E%3Cpath d='M16.2 7.8l2.2 -2.2'%3E%3C/path%3E%3Cpath d='M7.8 16.2l-2.2 2.2'%3E%3C/path%3E%3Cpath d='M12 12l9 3l-4 2l-2 4l-3 -9'%3E%3C/path%3E%3C/svg%3E")}
.ti-clock{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0'%3E%3C/path%3E%3Cpath d='M12 7v5l3 3'%3E%3C/path%3E%3C/svg%3E")}
.ti-eye{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0'%3E%3C/path%3E%3Cpath d='M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6'%3E%3C/path%3E%3C/svg%3E")}
.ti-file-certificate{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4'%3E%3C/path%3E%3Cpath d='M5 8v-3a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-5'%3E%3C/path%3E%3Cpath d='M6 14m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0'%3E%3C/path%3E%3Cpath d='M4.5 17l-1.5 5l3 -1.5l3 1.5l-1.5 -5'%3E%3C/path%3E%3C/svg%3E")}
.ti-file-plus{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4'%3E%3C/path%3E%3Cpath d='M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z'%3E%3C/path%3E%3Cpath d='M12 11l0 6'%3E%3C/path%3E%3Cpath d='M9 14l6 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-file-text{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4'%3E%3C/path%3E%3Cpath d='M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z'%3E%3C/path%3E%3Cpath d='M9 9l1 0'%3E%3C/path%3E%3Cpath d='M9 13l6 0'%3E%3C/path%3E%3Cpath d='M9 17l6 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-gavel{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 10l7.383 7.418c.823 .82 .823 2.148 0 2.967a2.11 2.11 0 0 1 -2.976 0l-7.407 -7.385'%3E%3C/path%3E%3Cpath d='M6 9l4 4'%3E%3C/path%3E%3Cpath d='M13 10l-4 -4'%3E%3C/path%3E%3Cpath d='M3 21h7'%3E%3C/path%3E%3Cpath d='M6.793 15.793l-3.586 -3.586a1 1 0 0 1 0 -1.414l2.293 -2.293l.5 .5l3 -3l-.5 -.5l2.293 -2.293a1 1 0 0 1 1.414 0l3.586 3.586a1 1 0 0 1 0 1.414l-2.293 2.293l-.5 -.5l-3 3l.5 .5l-2.293 2.293a1 1 0 0 1 -1.414 0z'%3E%3C/path%3E%3C/svg%3E")}
.ti-heart{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19.5 12.572l-7.5 7.428l-7.5 -7.428a5 5 0 1 1 7.5 -6.566a5 5 0 1 1 7.5 6.572'%3E%3C/path%3E%3C/svg%3E")}
.ti-layout-dashboard{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1'%3E%3C/path%3E%3Cpath d='M5 16h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1'%3E%3C/path%3E%3Cpath d='M15 12h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1'%3E%3C/path%3E%3Cpath d='M15 4h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1'%3E%3C/path%3E%3C/svg%3E")}
.ti-license{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 21h-9a3 3 0 0 1 -3 -3v-1h10v2a2 2 0 0 0 4 0v-14a2 2 0 1 1 2 2h-2m2 -4h-11a3 3 0 0 0 -3 3v11'%3E%3C/path%3E%3Cpath d='M9 7l4 0'%3E%3C/path%3E%3Cpath d='M9 11l4 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-list-numbers{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 6h9'%3E%3C/path%3E%3Cpath d='M11 12h9'%3E%3C/path%3E%3Cpath d='M12 18h8'%3E%3C/path%3E%3Cpath d='M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4'%3E%3C/path%3E%3Cpath d='M6 10v-6l-2 2'%3E%3C/path%3E%3C/svg%3E")}
.ti-list-search{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 15m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0'%3E%3C/path%3E%3Cpath d='M18.5 18.5l2.5 2.5'%3E%3C/path%3E%3Cpath d='M4 6h16'%3E%3C/path%3E%3Cpath d='M4 12h4'%3E%3C/path%3E%3Cpath d='M4 18h4'%3E%3C/path%3E%3C/svg%3E")}
.ti-location{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 3l-6.5 18a.55 .55 0 0 1 -1 0l-3.5 -7l-7 -3.5a.55 .55 0 0 1 0 -1l18 -6.5'%3E%3C/path%3E%3C/svg%3E")}
.ti-map-pin{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0'%3E%3C/path%3E%3Cpath d='M17.657 16.657l-4.243 4.243a2 2 0 0 1 -2.827 0l-4.244 -4.243a8 8 0 1 1 11.314 0z'%3E%3C/path%3E%3C/svg%3E")}
.ti-message{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 9h8'%3E%3C/path%3E%3Cpath d='M8 13h6'%3E%3C/path%3E%3Cpath d='M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z'%3E%3C/path%3E%3C/svg%3E")}
.ti-microphone{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 2m0 3a3 3 0 0 1 3 -3h0a3 3 0 0 1 3 3v5a3 3 0 0 1 -3 3h0a3 3 0 0 1 -3 -3z'%3E%3C/path%3E%3Cpath d='M5 10a7 7 0 0 0 14 0'%3E%3C/path%3E%3Cpath d='M8 21l8 0'%3E%3C/path%3E%3Cpath d='M12 17l0 4'%3E%3C/path%3E%3C/svg%3E")}
.ti-microphone-2{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 12.9a5 5 0 1 0 -3.902 -3.9'%3E%3C/path%3E%3Cpath d='M15 12.9l-3.902 -3.899l-7.513 8.584a2 2 0 1 0 2.827 2.83l8.588 -7.515z'%3E%3C/path%3E%3C/svg%3E")}
.ti-moon{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z'%3E%3C/path%3E%3C/svg%3E")}
.ti-package{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l8 4.5l0 9l-8 4.5l-8 -4.5l0 -9l8 -4.5'%3E%3C/path%3E%3Cpath d='M12 12l8 -4.5'%3E%3C/path%3E%3Cpath d='M12 12l0 9'%3E%3C/path%3E%3Cpath d='M12 12l-8 -4.5'%3E%3C/path%3E%3Cpath d='M16 5.25l-8 4.5'%3E%3C/path%3E%3C/svg%3E")}
.ti-parentheses{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 4a12.25 12.25 0 0 0 0 16'%3E%3C/path%3E%3Cpath d='M17 4a12.25 12.25 0 0 1 0 16'%3E%3C/path%3E%3C/svg%3E")}
.ti-pdf{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 8v8h2a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-2z'%3E%3C/path%3E%3Cpath d='M3 12h2a2 2 0 1 0 0 -4h-2v8'%3E%3C/path%3E%3Cpath d='M17 12h3'%3E%3C/path%3E%3Cpath d='M21 8h-4v8'%3E%3C/path%3E%3C/svg%3E")}
.ti-point-filled{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23000'%3E%3Cpath d='M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z'%3E%3C/path%3E%3C/svg%3E")}
.ti-printer{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 17h2a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-14a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2'%3E%3C/path%3E%3Cpath d='M17 9v-4a2 2 0 0 0 -2 -2h-6a2 2 0 0 0 -2 2v4'%3E%3C/path%3E%3Cpath d='M7 13m0 2a2 2 0 0 1 2 -2h6a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2z'%3E%3C/path%3E%3C/svg%3E")}
.ti-puzzle{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h3a1 1 0 0 0 1 -1v-1a2 2 0 0 1 4 0v1a1 1 0 0 0 1 1h3a1 1 0 0 1 1 1v3a1 1 0 0 0 1 1h1a2 2 0 0 1 0 4h-1a1 1 0 0 0 -1 1v3a1 1 0 0 1 -1 1h-3a1 1 0 0 1 -1 -1v-1a2 2 0 0 0 -4 0v1a1 1 0 0 1 -1 1h-3a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1h1a2 2 0 0 0 0 -4h-1a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1'%3E%3C/path%3E%3C/svg%3E")}
.ti-question-mark{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 8a3.5 3 0 0 1 3.5 -3h1a3.5 3 0 0 1 3.5 3a3 3 0 0 1 -2 3a3 4 0 0 0 -2 4'%3E%3C/path%3E%3Cpath d='M12 19l0 .01'%3E%3C/path%3E%3C/svg%3E")}
.ti-quote{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 11h-4a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1h3a1 1 0 0 1 1 1v6c0 2.667 -1.333 4.333 -4 5'%3E%3C/path%3E%3Cpath d='M19 11h-4a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1h3a1 1 0 0 1 1 1v6c0 2.667 -1.333 4.333 -4 5'%3E%3C/path%3E%3C/svg%3E")}
.ti-route{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 19a2 2 0 1 0 4 0a2 2 0 0 0 -4 0'%3E%3C/path%3E%3Cpath d='M19 7a2 2 0 1 0 0 -4a2 2 0 0 0 0 4z'%3E%3C/path%3E%3Cpath d='M11 19h5.5a3.5 3.5 0 0 0 0 -7h-8a3.5 3.5 0 0 1 0 -7h4.5'%3E%3C/path%3E%3C/svg%3E")}
.ti-sandbox{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19.953 8.017l1.047 6.983v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-2l1.245 -8.297a2 2 0 0 1 1.977 -1.703h3.778'%3E%3C/path%3E%3Cpath d='M3 15h18'%3E%3C/path%3E%3Cpath d='M13 3l5.5 1.5'%3E%3C/path%3E%3Cpath d='M15.75 3.75l-2 7'%3E%3C/path%3E%3Cpath d='M7 10.5c1.667 -.667 3.333 -.667 5 0c1.667 .667 3.333 .667 5 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-scale{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 20l10 0'%3E%3C/path%3E%3Cpath d='M6 6l6 -1l6 1'%3E%3C/path%3E%3Cpath d='M12 3l0 17'%3E%3C/path%3E%3Cpath d='M9 12l-3 -6l-3 6a3 3 0 0 0 6 0'%3E%3C/path%3E%3Cpath d='M21 12l-3 -6l-3 6a3 3 0 0 0 6 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-school{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 9l-10 -4l-10 4l10 4l10 -4v6'%3E%3C/path%3E%3Cpath d='M6 10.6v5.4a6 3 0 0 0 12 0v-5.4'%3E%3C/path%3E%3C/svg%3E")}
.ti-scoreboard{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z'%3E%3C/path%3E%3Cpath d='M12 5v2'%3E%3C/path%3E%3Cpath d='M12 10v1'%3E%3C/path%3E%3Cpath d='M12 14v1'%3E%3C/path%3E%3Cpath d='M12 18v1'%3E%3C/path%3E%3Cpath d='M7 3v2'%3E%3C/path%3E%3Cpath d='M17 3v2'%3E%3C/path%3E%3Cpath d='M15 10.5v3a1.5 1.5 0 0 0 3 0v-3a1.5 1.5 0 0 0 -3 0z'%3E%3C/path%3E%3Cpath d='M6 9h1.5a1.5 1.5 0 0 1 0 3h-.5h.5a1.5 1.5 0 0 1 0 3h-1.5'%3E%3C/path%3E%3C/svg%3E")}
.ti-search{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0'%3E%3C/path%3E%3Cpath d='M21 21l-6 -6'%3E%3C/path%3E%3C/svg%3E")}
.ti-section-sign{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.172 19a3 3 0 1 0 2.828 -4'%3E%3C/path%3E%3Cpath d='M14.83 5a3 3 0 1 0 -2.83 4'%3E%3C/path%3E%3Cpath d='M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-sun{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0'%3E%3C/path%3E%3Cpath d='M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7'%3E%3C/path%3E%3C/svg%3E")}
.ti-svg{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 8h-2a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2v-4h-1'%3E%3C/path%3E%3Cpath d='M7 8h-3a1 1 0 0 0 -1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-3'%3E%3C/path%3E%3Cpath d='M10 8l1.5 8h1l1.5 -8'%3E%3C/path%3E%3C/svg%3E")}
.ti-swords{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 3v5l-11 9l-4 4l-3 -3l4 -4l9 -11z'%3E%3C/path%3E%3Cpath d='M5 13l6 6'%3E%3C/path%3E%3Cpath d='M14.32 17.32l3.68 3.68l3 -3l-3.365 -3.365'%3E%3C/path%3E%3Cpath d='M10 5.5l-2 -2.5h-5v5l3 2.5'%3E%3C/path%3E%3C/svg%3E")}
.ti-timeline{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 16l6 -7l5 5l5 -6'%3E%3C/path%3E%3Cpath d='M15 14m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0'%3E%3C/path%3E%3Cpath d='M10 9m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0'%3E%3C/path%3E%3Cpath d='M4 16m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0'%3E%3C/path%3E%3Cpath d='M20 8m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0'%3E%3C/path%3E%3C/svg%3E")}
.ti-timeline-event{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0'%3E%3C/path%3E%3Cpath d='M10 20h-6'%3E%3C/path%3E%3Cpath d='M14 20h6'%3E%3C/path%3E%3Cpath d='M12 15l-2 -2h-3a1 1 0 0 1 -1 -1v-8a1 1 0 0 1 1 -1h10a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-3l-2 2z'%3E%3C/path%3E%3C/svg%3E")}
.ti-tool{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 10h3v-3l-3.5 -3.5a6 6 0 0 1 8 8l6 6a2 2 0 0 1 -3 3l-6 -6a6 6 0 0 1 -8 -8l3.5 3.5'%3E%3C/path%3E%3C/svg%3E")}
.ti-user{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0'%3E%3C/path%3E%3Cpath d='M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2'%3E%3C/path%3E%3C/svg%3E")}
.ti-users{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 7m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0'%3E%3C/path%3E%3Cpath d='M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2'%3E%3C/path%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'%3E%3C/path%3E%3Cpath d='M21 21v-2a4 4 0 0 0 -3 -3.85'%3E%3C/path%3E%3C/svg%3E")}
.ti-video{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 10l4.553 -2.276a1 1 0 0 1 1.447 .894v6.764a1 1 0 0 1 -1.447 .894l-4.553 -2.276v-4z'%3E%3C/path%3E%3Cpath d='M3 6m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z'%3E%3C/path%3E%3C/svg%3E")}
.ti-world{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0'%3E%3C/path%3E%3Cpath d='M3.6 9h16.8'%3E%3C/path%3E%3Cpath d='M3.6 15h16.8'%3E%3C/path%3E%3Cpath d='M11.5 3a17 17 0 0 0 0 18'%3E%3C/path%3E%3Cpath d='M12.5 3a17 17 0 0 1 0 18'%3E%3C/path%3E%3C/svg%3E")}
.ti-zoom-exclamation{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0'%3E%3C/path%3E%3Cpath d='M21 21l-6 -6'%3E%3C/path%3E%3Cpath d='M10 13v.01'%3E%3C/path%3E%3Cpath d='M10 7v3'%3E%3C/path%3E%3C/svg%3E")}
.ti-zoom-scan{--ti:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8v-2a2 2 0 0 1 2 -2h2'%3E%3C/path%3E%3Cpath d='M4 16v2a2 2 0 0 0 2 2h2'%3E%3C/path%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3Cpath d='M16 20h2a2 2 0 0 0 2 -2v-2'%3E%3C/path%3E%3Cpath d='M8 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0'%3E%3C/path%3E%3Cpath d='M16 16l-2.5 -2.5'%3E%3C/path%3E%3C/svg%3E")}
/* tabler-icons:end */

:root{
  --bg:#0d1424; --bg-deep:#0a0f23; --panel:#111a30; --panel-2:#16203a; --panel-3:#1b2747;
  --border:#232e4d; --border-soft:#1c2540;
  --text:#dbe2f1; --text-dim:#9aa6c3; --text-faint:#76819e; --text-strong:#f2f5fc;
  --accent:#e8a33d; --accent-deep:#b97c1f; --accent-bg:rgba(232,163,61,.12); --accent-fg:#1a1205;
  --green:#4ec28a; --green-bg:rgba(78,194,138,.12);
  --red:#e06c6c; --red-bg:rgba(224,108,108,.12);
  --blue:#6ea8e8; --blue-bg:rgba(110,168,232,.12);
  --purple:#a48ae8; --purple-bg:rgba(164,138,232,.12);
  --serif:"Source Serif 4",Georgia,serif;
  --sans:"Public Sans",-apple-system,Segoe UI,sans-serif;
  --display:"Playfair Display",Georgia,serif;
  --r:10px; --r-lg:14px;
}
/* light theme — toggled by adding the "light" class to <html> */
:root.light{
  --bg:#f6f7fb; --bg-deep:#eceff6; --panel:#ffffff; --panel-2:#f3f5fa; --panel-3:#eaeef6;
  --border:#d6dce8; --border-soft:#e5e9f1;
  --text:#27314a; --text-dim:#515d78; --text-faint:#7c869c; --text-strong:#0f1626;
  --accent:#b97c1f; --accent-deep:#8a5d16; --accent-bg:rgba(185,124,31,.12); --accent-fg:#ffffff;
  --green:#2f9e6b; --green-bg:rgba(47,158,107,.13);
  --red:#c0504d; --red-bg:rgba(192,80,77,.13);
  --blue:#3f78c4; --blue-bg:rgba(63,120,196,.13);
  --purple:#7a5fc9; --purple-bg:rgba(122,95,201,.13);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
.wrap{max-width:1060px;margin:0 auto;padding:0 24px}

/* ---------- top hero band ---------- */
.hero{background:var(--bg-deep);border-bottom:1px solid var(--border-soft);padding:0 0 34px}
.brandbar{display:flex;align-items:center;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--border-soft);margin-bottom:28px}
.brand{display:inline-flex;align-items:center;gap:9px;text-decoration:none;cursor:pointer}
.brand-logo{width:30px;height:30px;flex-shrink:0}
.brand-name{position:relative;font-family:var(--display);font-weight:600;font-size:18px;letter-spacing:.2px;color:var(--text-strong)}
.beta{position:absolute;right:-19px;bottom:-7px;font-family:var(--sans);font-size:8px;font-weight:600;letter-spacing:.5px;line-height:1;color:var(--text-faint);background:var(--panel-3);border:1px solid var(--border);border-radius:4px;padding:2px 3px;transform:rotate(-10deg);transform-origin:bottom left}
.brand-actions{display:flex;align-items:center;gap:10px}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border-radius:8px;background:transparent;border:1px solid var(--border);color:var(--text-dim);cursor:pointer;transition:color .15s,background .15s,border-color .15s}
.icon-btn:hover{color:var(--text);background:var(--panel-2);border-color:var(--border)}
.icon-btn i{font-size:17px}
.doc-btn{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:13px;font-weight:600;letter-spacing:.2px;cursor:pointer;text-decoration:none;color:var(--accent-fg);background:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:8px 16px;box-shadow:0 1px 0 rgba(232,163,61,.35),0 0 0 4px rgba(232,163,61,.10);transition:filter .15s,transform .05s}
.doc-btn:hover{filter:brightness(1.08)}
.doc-btn:active{transform:translateY(1px)}
.doc-btn i{font-size:16px}
.doc-btn .lbl-short{display:none}
.hero-grid{display:flex;gap:32px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.hero-main{flex:1;min-width:300px}
.hero-right{display:flex;align-items:flex-start;gap:22px;flex-shrink:0}
.qr-wrap{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0}
.qr{background:#fff;padding:8px;border-radius:10px;box-shadow:0 4px 14px rgba(0,0,0,.30);line-height:0}
.qr svg{display:block;width:104px;height:104px}
.qr-cap{font-size:10.5px;color:var(--text-faint)}
.qr-cap .cap-narrow{display:none}
/* margin, not margin-bottom: this element is an h1 now (it is the page's
   heading, and ~5M indexable pages carried no heading at all), and the UA's
   default 0.67em top margin would otherwise push the hero out of alignment. */
.case-name{font-family:var(--serif);font-weight:500;font-size:21px;color:var(--text-strong);margin:0 0 4px}
.case-number{font-family:var(--serif);font-weight:600;font-size:38px;letter-spacing:.5px;color:var(--text-strong);margin-bottom:12px}
.case-link{color:inherit;text-decoration:none;cursor:pointer;border-bottom:1px solid transparent;transition:color .15s,border-color .15s}
.case-link:hover{color:var(--accent);border-bottom-color:var(--accent)}
.meta-row{display:flex;gap:18px;flex-wrap:wrap;color:var(--text-dim);font-size:13.5px;margin-bottom:16px}
.meta-row i{color:var(--accent);font-size:15px;vertical-align:-2px;margin-right:6px}
/* disposition stamp — the page signature */
.stamp{flex-shrink:0;transform:rotate(-3.5deg);border:2.5px solid var(--accent);border-radius:8px;padding:14px 20px;text-align:center;background:rgba(232,163,61,.06);box-shadow:0 0 0 4px var(--bg-deep),0 0 0 5px rgba(232,163,61,.25)}
.stamp .s1{font-size:11px;font-weight:600;letter-spacing:2.5px;color:var(--accent);text-transform:uppercase}
.stamp .s2{font-family:var(--serif);font-weight:600;font-size:19px;color:var(--text-strong);margin:2px 0;text-transform:uppercase;letter-spacing:.5px}
.stamp .s3{font-size:11px;color:var(--text-dim);letter-spacing:.5px}

/* ---------- stat cards ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin:-22px 0 26px}
.stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);padding:13px 16px}
.stat .lbl{font-size:10.5px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--text-faint);margin-bottom:3px}
.stat .lbl i{color:var(--accent);margin-right:5px;font-size:13px}
.stat .val{font-weight:500;font-size:14.5px;color:var(--text-strong)}

/* ---------- parties ---------- */
.parties{display:grid;grid-template-columns:1fr 56px 1fr;align-items:stretch;gap:0;margin-bottom:26px}
.party{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px 20px}
.party .role{font-size:10.5px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;margin-bottom:6px}
.party.p-left .role{color:var(--blue)}
.party.p-right .role{color:var(--red)}
.party .names{font-family:var(--serif);font-size:15.5px;color:var(--text-strong);line-height:1.5}
.party .sub{font-size:12.5px;color:var(--text-faint);margin-top:8px}
.party .sub i{margin-right:5px}
.vs{display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-style:italic;font-size:20px;color:var(--accent)}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px;border-bottom:1px solid var(--border);padding-bottom:14px}
.tab{appearance:none;background:var(--panel-2);border:2px solid rgba(232,163,61,.4);border-radius:8px;color:var(--accent);font:inherit;font-size:13.5px;font-weight:700;padding:8px 14px;cursor:pointer;display:flex;align-items:center;gap:7px;transition:color .15s,background .15s,border-color .15s,box-shadow .15s}
.tab i{font-size:16px}
.tab:hover{color:var(--accent);background:rgba(232,163,61,.1);border-color:var(--accent);box-shadow:0 0 0 3px rgba(232,163,61,.12)}
.tab.active{color:var(--accent-fg);background:var(--accent);border-color:var(--accent);font-weight:600;box-shadow:0 1px 0 rgba(232,163,61,.35),0 0 0 3px rgba(232,163,61,.12)}
.tab.active i{color:var(--accent-fg)}
.tab .cnt{font-size:10.5px;background:var(--panel);border:1px solid var(--border);border-radius:999px;padding:1px 7px;color:var(--text-dim)}
.tab.active .cnt{background:var(--bg);border-color:transparent;color:var(--accent)}
.pane{display:none;animation:fade .25s ease}
.pane.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pane{animation:none}}


/* ---------- generic cards / sections ---------- */
.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:18px;overflow:hidden}
.card-h{display:flex;align-items:center;gap:10px;padding:13px 20px;border-bottom:1px solid var(--border-soft);background:var(--panel-2)}
.card-h i{color:var(--accent);font-size:17px}
.card-h .t{font-weight:600;font-size:14px;letter-spacing:.3px}
.card-h .right{margin-left:auto;font-size:11.5px;color:var(--text-faint)}
.card-b{padding:18px 20px}
.prose{color:var(--text-dim);font-size:14.5px}
.prose strong{color:var(--text)}
.conclusion{border-left:3px solid var(--accent);border-radius:0 var(--r) var(--r) 0;background:var(--accent-bg);padding:16px 20px;font-family:var(--serif);font-size:15.5px;color:var(--text);margin-bottom:18px}
.kp-list{list-style:none}
.kp-list li{display:flex;gap:10px;padding:7px 0;color:var(--text-dim);font-size:14px;border-bottom:1px dashed var(--border-soft)}
.kp-list li:last-child{border-bottom:none}
.kp-list li i{color:var(--accent);font-size:15px;margin-top:3px;flex-shrink:0}
.kv{display:grid;grid-template-columns:190px 1fr;gap:8px 16px;font-size:13.5px}
.kv .k{color:var(--text-faint);font-weight:500}
.kv .v{color:var(--text-dim)}
.chips{display:flex;gap:7px;flex-wrap:wrap}
.chip{font-size:12px;background:var(--panel-3);border:1px solid var(--border);color:var(--text-dim);padding:3px 11px;border-radius:999px}
.chip.amber{color:var(--accent);background:var(--accent-bg);border-color:rgba(232,163,61,.3)}
.pill{font-size:10.5px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;padding:3px 10px;border-radius:999px;white-space:nowrap;flex-shrink:0;text-align:center}
.pill-stack{white-space:normal;line-height:1.25}
.pill.red{color:var(--red);background:var(--red-bg);border:1px solid rgba(224,108,108,.3)}
.pill.green{color:var(--green);background:var(--green-bg);border:1px solid rgba(78,194,138,.3)}
.pill.blue{color:var(--blue);background:var(--blue-bg);border:1px solid rgba(110,168,232,.3)}
.pill.amber{color:var(--accent);background:var(--accent-bg);border:1px solid rgba(232,163,61,.3)}
.pill.dim{color:var(--text-dim);background:var(--panel-3);border:1px solid var(--border)}

/* ---------- issues ---------- */
.scoreboard{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.score{flex:1;min-width:150px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r);padding:14px 18px}
.score .n{font-family:var(--serif);font-size:26px;font-weight:600;color:var(--text-strong)}
.score .l{font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--text-faint)}
.score.warn .n{color:var(--red)}
.issue{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--panel);margin-bottom:14px;overflow:hidden}
.issue-h{display:flex;gap:14px;align-items:flex-start;padding:15px 20px;cursor:pointer;user-select:none}
.issue-h:hover{background:var(--panel-2)}
.issue-num{flex-shrink:0;width:34px;height:34px;border-radius:9px;background:var(--accent-bg);border:1px solid rgba(232,163,61,.3);color:var(--accent);font-family:var(--serif);font-weight:600;font-size:16px;display:flex;align-items:center;justify-content:center}
.issue-h .q{flex:1;font-size:14.5px;color:var(--text-strong);line-height:1.55}
.issue-h .end{flex-shrink:0;display:flex;align-items:center;gap:10px}
.issue-h .chev{color:var(--text-faint);transition:transform .2s}
.issue.open .chev{transform:rotate(180deg)}
.issue-b{display:none;border-top:1px solid var(--border-soft);padding:16px 20px 18px 68px;background:rgba(0,0,0,.12)}
.issue.open .issue-b{display:block}
.mini-lbl{font-size:10.5px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--text-faint);margin:12px 0 4px}
.mini-lbl:first-child{margin-top:0}
/* inline help (ⓘ) dot — opens the help assistant for a topic */
.cs-help{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;margin-left:7px;border-radius:999px;border:1px solid var(--border);background:var(--panel-2);color:var(--text-faint);font-size:10px;font-weight:700;line-height:1;cursor:pointer;vertical-align:middle;user-select:none;transition:color .15s,border-color .15s,background .15s}
.cs-help:hover,.cs-help:focus-visible{color:var(--accent);border-color:var(--accent);background:var(--accent-bg);outline:none}
.issue-b p{color:var(--text-dim);font-size:13.5px}
.holding{border-left:3px solid var(--green);border-radius:0 var(--r) var(--r) 0;background:var(--panel);border-top:1px solid var(--border);border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:15px 18px;margin-bottom:13px}
.holding .hi{font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--green);margin-bottom:5px}
.holding .ht{font-family:var(--serif);font-size:15px;color:var(--text-strong);margin-bottom:7px}
.holding .hr{font-size:13.5px;color:var(--text-dim)}
.holding .hm{display:flex;gap:8px;margin-top:10px}

/* ---------- timeline ---------- */
.tl-span{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:20px}
.tl{position:relative;padding-left:30px}
.tl::before{content:"";position:absolute;left:9px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--border),var(--accent-deep),var(--border))}
.ev{position:relative;padding:0 0 24px 18px}
.ev:last-child{padding-bottom:4px}
.ev .dot{position:absolute;left:-30px;top:2px;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;border:2px solid var(--bg);z-index:1}
.ev .dot.factual_event{background:var(--red-bg);color:var(--red);box-shadow:0 0 0 1.5px var(--red)}
.ev .dot.filing{background:var(--blue-bg);color:var(--blue);box-shadow:0 0 0 1.5px var(--blue)}
.ev .dot.motion{background:var(--purple-bg);color:var(--purple);box-shadow:0 0 0 1.5px var(--purple)}
.ev .dot.ruling{background:var(--accent-bg);color:var(--accent);box-shadow:0 0 0 1.5px var(--accent)}
.ev .dot.other{background:var(--panel-3);color:var(--text-dim);box-shadow:0 0 0 1.5px var(--border)}
.ev .ev-date{font-family:var(--serif);font-weight:600;font-size:14.5px;color:var(--accent);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ev .ev-card{margin-top:7px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r);padding:13px 16px}
.ev .ev-card p{font-size:13.5px;color:var(--text-dim)}
.ev .ev-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:9px;font-size:12px;color:var(--text-faint)}
.ev .ev-meta i{margin-right:4px;color:var(--accent)}

/* ---------- evidence ---------- */
.ev-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.ev-cat{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--r);padding:14px 16px}
.ev-cat .ec-h{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;color:var(--text-dim);margin-bottom:9px}
.ev-cat .ec-h i{color:var(--accent);font-size:16px}
.ev-cat ul{list-style:none}
.ev-cat li{font-size:13px;color:var(--text-dim);padding:4px 0;border-bottom:1px dashed var(--border-soft)}
.ev-cat li:last-child{border:none}
.facts{counter-reset:f;list-style:none}
.facts li{counter-increment:f;display:flex;gap:12px;padding:9px 0;border-bottom:1px dashed var(--border-soft);font-size:14px;color:var(--text-dim)}
.facts li:last-child{border:none}
.facts li::before{content:counter(f,decimal-leading-zero);font-family:var(--serif);color:var(--accent);font-weight:600;font-size:13px;margin-top:2px}

/* ---------- authorities ---------- */
.cite{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);padding:14px 18px;margin-bottom:12px}
.cite .c1{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}
.cite .cname{font-family:var(--serif);font-size:15px;color:var(--text-strong);flex:1;min-width:240px}
.cite .ctx{font-size:13px;color:var(--text-dim);margin-top:6px}
.cite .cmeta{font-size:12px;color:var(--text-faint);margin-top:6px}
.cite .cmeta i{margin-right:4px;color:var(--accent)}
blockquote.nq{border-left:3px solid var(--accent);padding:14px 18px;background:var(--panel);border-radius:0 var(--r) var(--r) 0;margin-bottom:14px}
blockquote.nq .qt{font-family:var(--serif);font-size:16px;font-style:italic;color:var(--text-strong);line-height:1.6}
blockquote.nq .qa{font-size:12.5px;color:var(--text-faint);margin-top:8px}
blockquote.nq .qa i{color:var(--accent);margin-right:5px}
blockquote.nq .qs{font-size:12.5px;color:var(--text-dim);margin-top:4px}

/* ---------- site footer (standalone case page only) ---------- */
.site-footer{margin-top:40px;border-top:1px solid var(--border-soft)}
.site-footer .wrap{padding-top:26px;padding-bottom:6px}
.foot-brand{display:inline-block;font-family:var(--display);font-weight:600;font-size:17px;color:var(--text-strong);text-decoration:none}
.foot-brand:hover{color:var(--accent)}
.foot-tag{font-size:12.5px;color:var(--text-faint);margin:5px 0 18px}
.foot-tag a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;transition:opacity .15s}
.foot-tag a:hover{opacity:.8}
.disclaimer{display:flex;gap:12px;align-items:flex-start;border:1px solid rgba(232,163,61,.30);background:var(--accent-bg);border-radius:var(--r);padding:13px 16px;margin-bottom:14px}
.disclaimer i{color:var(--accent);font-size:18px;flex-shrink:0;margin-top:1px}
.disclaimer p{font-size:12.5px;line-height:1.6;color:var(--text-dim);text-align:justify}
.disclaimer strong{color:var(--accent);font-weight:600}
.foot-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.foot-ver{text-align:right;font-size:10.5px;font-weight:500;letter-spacing:.3px;color:var(--text-faint)}
.foot-bottom{margin-top:16px;border-top:1px solid var(--border-soft);background:var(--panel-2)}
.foot-bottom .wrap{padding-top:14px;padding-bottom:18px}
.foot-copy{font-size:11.5px;color:var(--text-faint);margin-bottom:10px}
.foot-links{display:flex;flex-wrap:wrap;gap:6px 20px}
.foot-links a{font-size:12.5px;font-weight:500;color:var(--text-dim);transition:color .15s}
.foot-links a:hover{color:var(--accent)}
@media (max-width:720px){
  .parties{grid-template-columns:1fr}
  .vs{padding:6px 0}
  .kv{grid-template-columns:1fr}
  .issue-b{padding-left:20px}
  .case-number{font-size:30px}
  /* Two-column hero: the title and QR share the top row; the disposition stamp
     drops to its own FULL-WIDTH row below. Keeping the stamp out of the narrow
     right column is what stops its long sub-line from sizing that column to its
     max-content (which otherwise collapses the title column to 0 and overlaps
     it). hero-right is dissolved (display:contents) so its children — the stamp
     and the QR — place directly into the grid areas regardless of DOM order. */
  .hero-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title qr" "stamp stamp";align-items:start;gap:14px 16px}
  .hero-main{grid-area:title;min-width:0}
  .hero-right{display:contents}
  .qr-wrap{grid-area:qr}
  .stamp{grid-area:stamp;justify-self:start;transform:none;margin-top:4px}
  /* "on mobile" reads oddly when you're already on a phone — swap the caption. */
  .qr-cap .cap-wide{display:none}
  .qr-cap .cap-narrow{display:inline}
}
@media (max-width:560px){
  .brand-name{font-size:16px}
  /* Two-row brand bar via grid: top row is the logo (left) with "Open app" +
     theme toggle grouped on the right; "View document" sits on the row below
     at its natural width. brand-actions is dissolved (display:contents) so its
     buttons become direct grid items. */
  .brandbar{display:grid;grid-template-columns:1fr auto auto;grid-template-areas:"brand openapp theme" "viewdoc viewdoc viewdoc";gap:12px 8px;padding:14px 0;border-bottom:none;align-items:center}
  .brand-actions{display:contents}
  /* Phone: stack the hero in a single column — title, then QR, then the
     disposition stamp — each at full width so nothing is squeezed or overlaps. */
  .hero-grid{grid-template-columns:1fr;grid-template-areas:"title" "qr" "stamp"}
  .qr-wrap{align-items:flex-start}
  .brand{grid-area:brand;min-width:0}
  #openApp{grid-area:openapp}
  #themeToggle{grid-area:theme;justify-self:end}
  #openDoc{grid-area:viewdoc;justify-self:start}
  .brand-actions .doc-btn{justify-content:center;font-size:12.5px;padding:9px 14px}
  /* Swap the long app-button label for a compact one on phones. */
  .doc-btn .lbl-full{display:none}
  .doc-btn .lbl-short{display:inline}
}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* slim themed scrollbar — blends the iframe's scrollbar with the case theme */
*::-webkit-scrollbar{width:8px;height:8px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
*::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}
*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}

/* embedded mode — used when the template is hosted inside the app's case modal,
   which supplies its own header/tabs. Hide the standalone top chrome. */
body.embedded .brandbar{display:none}
body.embedded .hero{padding-top:22px}
body.embedded .site-footer{display:none}
/* Full width + insets matching the modal header/tab bar (px-4 = 16px) so the
   embedded content lines up with them instead of centering in a narrow column. */
body.embedded .wrap{max-width:none;padding-left:16px;padding-right:16px}

/* Chips that run a search for their own term. Only the base record's search
   facets get these — see chipLinks() in templates/case-render.js. */
.chip-link{cursor:pointer;text-decoration:none;color:var(--text-dim);transition:color .12s ease,border-color .12s ease,background .12s ease}
.chip-link:hover,.chip-link:focus-visible{color:var(--accent);border-color:var(--accent);background:var(--panel-2)}
.chip-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* In page mode the chip is a <button> (no crawlable href), which unlike the
   <span> form does not inherit the page font. font-size is restated because
   `font:inherit` would otherwise drop .chip's own 12px. */
button.chip-link{font:inherit;font-size:12px;line-height:1.45;margin:0}
/* On paper a chip is just a term — the link target is unreachable. */
@media print{.chip-link{color:inherit;border-color:var(--border)}}

/* Index terms — a closed disclosure at the foot of the page. Styled to read as
   a quiet footnote rather than a peer of the tabs, which is what it looked like
   when it was one. Native <details>, so it works without JavaScript. */
.index-terms{margin:26px 0 4px;border-top:1px solid var(--border);padding-top:18px}
.index-terms>summary{
  display:flex;align-items:center;gap:8px;width:fit-content;cursor:pointer;
  font-size:12.5px;color:var(--text-faint);padding:5px 12px;border-radius:8px;
  border:1px solid var(--border);background:var(--panel);list-style:none;
  transition:color .15s ease,border-color .15s ease
}
.index-terms>summary::-webkit-details-marker{display:none}
.index-terms>summary:hover{color:var(--text-dim);border-color:var(--text-faint)}
.index-terms>summary .cnt{
  font-size:10.5px;background:var(--panel-3);border:1px solid var(--border);
  border-radius:999px;padding:1px 7px;color:var(--text-dim)
}
.index-terms>summary::after{content:"▾";font-size:10px;margin-left:2px}
.index-terms[open]>summary::after{content:"▴"}
.index-terms[open]>summary{margin-bottom:4px}
.it-body{padding:2px 0 6px}

/* Pane headings.

   Each pane carries a real <h2> as its first child. On the normal JS path the
   tab bar already shows that name, so a second visible copy would be a
   duplicate — but it must stay in the DOM and in the accessibility tree, which
   is what separates this from display:none. It is the page's only outline
   below the <h1>, and it is what a screen reader announces when arriving in a
   tab panel.

   This replaced a `content:attr(data-print-title)` rule. Generated content is
   not in the DOM at all, so the section names existed for a sighted user with
   JS and for nobody else. */
.pane-title{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0
}

/* No JavaScript: show every pane, drop the tab bar.

   Five of the six panes are display:none until a tab is clicked, and a client
   that runs no script can never click one — so without this, most of the page
   is in the DOM but not visible. That is the wrong shape for the surface this
   is: the crawlers that don't execute JS (LLM fetchers, Bing's first pass,
   social unfurlers) are exactly the ones that most need the content to count as
   visible, and it is also simply what progressive enhancement means here.

   With no tab bar to name the sections, the pane's own heading becomes the
   visible one. Same text as the tab, because both come from TABS. */
.no-js .tabs{display:none}
.no-js .pane{display:block}
.no-js .pane-title{
  position:static;width:auto;height:auto;margin:26px 0 12px;overflow:visible;
  clip-path:none;white-space:normal;
  display:block;font-family:var(--display);font-size:17px;color:var(--text-strong);
  padding-bottom:6px;border-bottom:1px solid var(--border)
}

/* Original-document dialog — standalone page only. Embedded, the app opens its
   own viewer, so this markup is never created there. */
.doc-dialog{
  width:min(90vw,1000px);height:85vh;padding:0;border:1px solid var(--border);
  border-radius:12px;background:var(--panel);color:var(--text);overflow:hidden
}
.doc-dialog::backdrop{background:rgba(3,7,18,.62)}
.doc-dialog .dd-bar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 16px;border-bottom:1px solid var(--border);background:var(--panel-2)
}
.doc-dialog .dd-t{font-weight:600;font-size:14px;color:var(--text-strong)}
.doc-dialog .dd-x{
  appearance:none;border:1px solid var(--border);border-radius:8px;cursor:pointer;
  background:transparent;color:var(--text-dim);font:inherit;font-size:13px;padding:4px 9px
}
.doc-dialog .dd-x:hover{color:var(--text);border-color:var(--text-faint)}
.doc-dialog .dd-body{height:calc(85vh - 43px);overflow:auto;padding:20px 24px;font-size:14.5px;line-height:1.65}
.doc-dialog .dd-body h4{font-family:var(--serif);font-size:17px;margin:0 0 10px}
.doc-dialog .dd-body p{margin:0 0 10px}
/* The document is a PDF or an HTML file, rendered by the browser from a blob
   URL rather than inlined — so its pane owns the whole body, with no padding of
   ours around it and a white ground behind pages that assume one. */
.doc-dialog .dd-body.dd-frame{padding:0;overflow:hidden}
.doc-dialog .dd-body.dd-frame > object,
.doc-dialog .dd-body.dd-frame > iframe{display:block;width:100%;height:100%;border:0;background:#fff}
.doc-dialog .dd-right{display:flex;align-items:center;gap:12px}
.doc-dialog .dd-open{font-size:12px;color:var(--text-dim);text-decoration:none;border-bottom:1px solid transparent}
.doc-dialog .dd-open:hover{color:var(--accent);border-bottom-color:var(--accent)}

/* ── Print rules live LAST on purpose ─────────────────────────────────────
   A media query adds no specificity, so `@media print{.cs-help{display:none}}`
   loses to a plain `.cs-help{display:inline-flex}` that appears later in the
   file — which is exactly how the help dots kept printing. Keeping this block
   at the end of the stylesheet makes source order work for us instead of
   against us. Add new base rules ABOVE this block. */
/* Standalone (/case/:cid/print) has no app around it, so the brand actions have
   nothing to act on: "Open CaseSearch app" and "View document" would navigate a
   tab the reader opened to print from, the theme toggle posts a message to a
   parent window that isn't there, and the print button duplicates "Save as PDF"
   in the bar above. The whole group goes; the brand mark stays.

   This has to be CSS, not the `hidden` property. Setting el.hidden on these
   buttons does nothing visible: `[hidden]{display:none}` comes from the UA
   stylesheet, and .icon-btn/.doc-btn set display:inline-flex, so the author rule
   wins. @media print already drops the group on paper, which is why the stale
   attempt below was never caught on the printed output — only on screen. */
html.standalone .brand-actions{display:none}

/* Print bar — standalone view only, and screen only. */
.print-bar{display:none}
html.standalone .print-bar{
  display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;
  position:sticky;top:0;z-index:50;padding:10px 16px;
  background:var(--panel-2);border-bottom:1px solid var(--border);
  font-size:13px;color:var(--text-dim)
}
.print-bar kbd{
  font-family:var(--sans);font-size:11px;padding:1px 5px;border-radius:4px;
  border:1px solid var(--border);background:var(--panel);color:var(--text)
}
.pb-btn{
  appearance:none;border:1px solid var(--accent);border-radius:8px;cursor:pointer;
  background:var(--accent);color:var(--accent-fg);font:inherit;font-size:13px;
  font-weight:600;padding:6px 14px
}
.pb-btn:hover{filter:brightness(1.06)}

/* Provenance block is print-only. Declared BEFORE @media print on purpose:
   both rules are a single class, so source order decides the winner — put
   this after the print block and it hides the footer in print too. */
.print-prov{display:none}

/* ── Print ──────────────────────────────────────────────────────────────────
   Printing emits ALL FIVE sections, not whichever tab happens to be open:
   someone printing a case wants the case. That costs nothing to do, because
   every pane is filled at load (see the pane IIFEs in the script below) and
   the tabs only toggle `display` — there is no lazy content to force.

   The dark palette is replaced wholesale with print ink. Screen colours are
   chosen against a #0d1424 background; on paper they'd either vanish or eat a
   cartridge. Accent gold in particular fails contrast on white, so print gets
   a darker bronze. Backgrounds go plain white rather than relying on the
   browser's "background graphics" checkbox, which defaults to OFF.

   Sections flow continuously rather than each starting a new page — a short
   Overview followed by a page break wastes paper. To change that, add
   `.pane + .pane{break-before:page}`. */
@media print{
  :root, :root.light{
    --bg:#fff; --bg-deep:#fff; --panel:#fff; --panel-2:#fff; --panel-3:#fff;
    --border:#b9c0cc; --border-soft:#dce0e8;
    --text:#14181f; --text-dim:#262c38; --text-faint:#4d5462; --text-strong:#000;
    --accent:#7a5210; --accent-deep:#5b3d0c; --accent-bg:transparent; --accent-fg:#fff;
    --green:#1c6b45; --red:#8c3a38; --blue:#28527f; --purple:#513c85;
    --green-bg:transparent; --red-bg:transparent; --blue-bg:transparent; --purple-bg:transparent;
  }
  @page{margin:14mm 12mm}
  html,body{background:#fff}
  body{font-size:10.5pt;line-height:1.5}
  .wrap{max-width:none;padding:0}
  .hero{padding-bottom:0}

  /* Controls mean nothing on paper. */
  .brand-actions,.tabs,.icon-btn,.doc-btn,.cs-help,.print-bar{display:none}

  /* Every section, each labelled — the tab bar that named them is hidden on
     paper, so the pane's own <h2> (built from TABS, so the two can't drift)
     comes out of its screen-reader-only box and becomes the printed heading. */
  /* Each section starts its own page. The front matter (hero, stat cards,
     parties) therefore forms a cover, and Overview begins on page 2. Drop
     this to `.pane + .pane` if Overview should continue from the cover. */
  /* Icons are painted with background-color + mask, and Chrome omits background
     graphics from print unless the user ticks that box — so they have never
     appeared in the PDF, they only reserved 1em of space and left masked boxes
     for the print rasteriser. Hidden outright: the printed layout is unchanged
     apart from losing phantom gaps. To bring them back, drop this rule and add
     `print-color-adjust:exact` to .ti — but re-measure save time first, masks
     are a plausible reason Save-as-PDF is slow. */
  .ti{display:none}

  .pane{display:block;animation:none;break-before:page;page-break-before:always}
  .pane-title{
    position:static;width:auto;height:auto;margin:22px 0 10px;overflow:visible;
    clip-path:none;white-space:normal;
    display:block;font-family:var(--display);font-size:15pt;color:#000;
    padding-bottom:5px;border-bottom:1.5pt solid var(--accent);
    break-after:avoid;page-break-after:avoid;
  }
  /* `:empty` went with the ::before rule that made it necessary — every pane now
     has a child, so it could never match again. `[data-empty]` is the live test
     and always was: an empty pane still renders its "No timeline recorded."
     message, so it was never literally empty either. */
  .pane[data-empty]{display:none}

  /* Keep units of meaning whole across page boundaries. */
  .card,.stat,.ev,.ev-cat,.party,.issue,.cite{break-inside:avoid;page-break-inside:avoid}
  .card-h,.ec-h,.ev-date{break-after:avoid;page-break-after:avoid}

  /* Flat borders instead of shadows/fills, which print as grey mush. */
  .card,.stat,.ev-card,.ev-cat,.qr{box-shadow:none;border:0.75pt solid var(--border)}
  .stamp{box-shadow:none}
  .qr{padding:4px}
  .qr svg{width:88px;height:88px}

  /* Provenance block — a printed legal document needs to say where it came
     from and when. Hidden on screen. */
  .print-prov{display:block;margin-top:20px;padding-top:8px;border-top:0.75pt solid var(--border);
    font-size:8.5pt;color:var(--text-faint);line-height:1.45}
  .print-prov .u{font-family:var(--sans);word-break:break-all;color:var(--text-dim);text-decoration:underline}
  /* Chrome keeps <a href> as a live annotation in Save-as-PDF, so the brand
     and the provenance URL stay clickable; they just shouldn't render as
     blue web links on paper. */
  a{color:inherit}
  .brand,.brand:visited{color:inherit;text-decoration:none}
  .site-footer{display:none}
}
