From 98887385d92eb3f7df0a15488311d54dbfad861f Mon Sep 17 00:00:00 2001 From: MAHDTech Date: Fri, 16 Oct 2026 01:55:31 +1100 Subject: [PATCH] feat(theme): implement tailwind design system and base tera templates (#3) --- config.toml | 24 +++ devenv.nix | 3 +- static/css/custom.css | 2 + static/favicon.ico | Bin 0 -> 309 bytes static/images/og-banner.png | Bin 0 -> 12493 bytes static/images/tars-logo.svg | 52 +++++++ styles/input.css | 281 ++++++++++++++++++++++++++++++++++++ templates/404.html | 56 +++++++ templates/base.html | 210 +++++++++++++++++++++++++++ templates/page.html | 48 ++++++ templates/section.html | 94 ++++++++++++ 11 files changed, 769 insertions(+), 1 deletion(-) create mode 100644 static/css/custom.css create mode 100644 static/favicon.ico create mode 100644 static/images/og-banner.png create mode 100644 static/images/tars-logo.svg create mode 100644 styles/input.css create mode 100644 templates/404.html create mode 100644 templates/base.html create mode 100644 templates/page.html create mode 100644 templates/section.html diff --git a/config.toml b/config.toml index 091228c..d6b7064 100644 --- a/config.toml +++ b/config.toml @@ -29,3 +29,27 @@ enable_scanlines = true scanline_opacity = 0.08 terminal_font = "JetBrains Mono, monospace" body_font = "Inter, sans-serif" + +obsidian = "#0a0a0c" +surface_raised = "#121318" +border_color = "#27272a" +accent_cyan_hex = "#00f0ff" +github_org_url = "https://github.com/tars-cloud" +og_image = "/images/og-banner.png" +logo_path = "/images/tars-logo.svg" +status_label = "SYS // NOMINAL" + +[[extra.menu_items]] +name = "Docs" +url = "/docs/" +external = false + +[[extra.menu_items]] +name = "Downloads" +url = "/downloads/" +external = false + +[[extra.menu_items]] +name = "GitHub" +url = "https://github.com/tars-cloud" +external = true diff --git a/devenv.nix b/devenv.nix index 03c50b8..364d095 100644 --- a/devenv.nix +++ b/devenv.nix @@ -17,7 +17,7 @@ pkgs.jq ]; - scripts.build.exec = "zola build && pagefind --site public"; + scripts.build.exec = "tailwindcss -i styles/input.css -o static/css/custom.css --minify && zola build && pagefind --site public"; scripts.check.exec = "zola check"; scripts.serve.exec = "zola serve --drafts"; @@ -30,6 +30,7 @@ ''; enterTest = '' + tailwindcss -i styles/input.css -o static/css/custom.css --minify zola check zola build ''; diff --git a/static/css/custom.css b/static/css/custom.css new file mode 100644 index 0000000..e54864d --- /dev/null +++ b/static/css/custom.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--spacing:.25rem;--container-3xl:48rem;--container-4xl:56rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-obsidian:#0a0a0c;--color-surface-raised:#121318;--color-border:#27272a;--color-accent-cyan:#00f0ff;--color-accent-cyan-bright:#00f3ff;--color-accent-amber:#ffb700;--color-text-primary:#f4f4f6;--color-text-muted:#a1a1aa;--color-status-nominal:#10b981;--color-status-fault:#ef4444;--shadow-glow-cyan:0 0 18px #00f0ff59;--shadow-glow-amber:0 0 18px #ffb70059}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-inline:auto}.my-6{margin-block:calc(var(--spacing) * 6)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-16{height:calc(var(--spacing) * 16)}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-7xl{max-width:var(--container-7xl)}.flex-1{flex:1}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-accent-amber\/60{border-color:#ffb70099}@supports (color:color-mix(in lab, red, red)){.border-accent-amber\/60{border-color:color-mix(in oklab, var(--color-accent-amber) 60%, transparent)}}.border-accent-cyan{border-color:var(--color-accent-cyan)}.border-border{border-color:var(--color-border)}.border-transparent{border-color:#0000}.bg-accent-amber{background-color:var(--color-accent-amber)}.bg-accent-cyan{background-color:var(--color-accent-cyan)}.bg-obsidian{background-color:var(--color-obsidian)}.bg-obsidian\/60{background-color:#0a0a0c99}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/60{background-color:color-mix(in oklab, var(--color-obsidian) 60%, transparent)}}.bg-obsidian\/90{background-color:#0a0a0ce6}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/90{background-color:color-mix(in oklab, var(--color-obsidian) 90%, transparent)}}.bg-obsidian\/95{background-color:#0a0a0cf2}@supports (color:color-mix(in lab, red, red)){.bg-obsidian\/95{background-color:color-mix(in oklab, var(--color-obsidian) 95%, transparent)}}.bg-status-nominal{background-color:var(--color-status-nominal)}.bg-surface-raised{background-color:var(--color-surface-raised)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-accent-amber{color:var(--color-accent-amber)}.text-accent-cyan{color:var(--color-accent-cyan)}.text-border{color:var(--color-border)}.text-obsidian{color:var(--color-obsidian)}.text-text-muted{color:var(--color-text-muted)}.text-text-primary{color:var(--color-text-primary)}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-90{opacity:.9}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:text-accent-cyan:is(:where(.group):hover *){color:var(--color-accent-cyan)}.group-hover\:underline:is(:where(.group):hover *){text-decoration-line:underline}}.selection\:bg-accent-cyan\/20 ::selection{background-color:#00f0ff33}@supports (color:color-mix(in lab, red, red)){.selection\:bg-accent-cyan\/20 ::selection{background-color:color-mix(in oklab, var(--color-accent-cyan) 20%, transparent)}}.selection\:bg-accent-cyan\/20::selection{background-color:#00f0ff33}@supports (color:color-mix(in lab, red, red)){.selection\:bg-accent-cyan\/20::selection{background-color:color-mix(in oklab, var(--color-accent-cyan) 20%, transparent)}}.selection\:text-accent-cyan ::selection{color:var(--color-accent-cyan)}.selection\:text-accent-cyan::selection{color:var(--color-accent-cyan)}@media (hover:hover){.hover\:border-accent-cyan:hover{border-color:var(--color-accent-cyan)}.hover\:border-border:hover{border-color:var(--color-border)}.hover\:bg-accent-cyan-bright:hover{background-color:var(--color-accent-cyan-bright)}.hover\:bg-accent-cyan\/10:hover{background-color:#00f0ff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-cyan\/10:hover{background-color:color-mix(in oklab, var(--color-accent-cyan) 10%, transparent)}}.hover\:text-accent-cyan:hover{color:var(--color-accent-cyan)}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:fixed:focus{position:fixed}.focus\:top-3:focus{top:calc(var(--spacing) * 3)}.focus\:left-3:focus{left:calc(var(--spacing) * 3)}.focus\:z-50:focus{z-index:50}.focus\:border:focus{border-style:var(--tw-border-style);border-width:1px}.focus\:border-accent-cyan:focus{border-color:var(--color-accent-cyan)}.focus\:bg-surface-raised:focus{background-color:var(--color-surface-raised)}.focus\:px-4:focus{padding-inline:calc(var(--spacing) * 4)}.focus\:py-2:focus{padding-block:calc(var(--spacing) * 2)}.focus\:font-mono:focus{font-family:var(--font-mono)}.focus\:text-xs:focus{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.focus\:text-accent-cyan:focus{color:var(--color-accent-cyan)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-accent-cyan:focus{--tw-ring-color:var(--color-accent-cyan)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.sm\:my-12{margin-block:calc(var(--spacing) * 12)}.sm\:inline-flex{display:inline-flex}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:p-10{padding:calc(var(--spacing) * 10)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:py-12{padding-block:calc(var(--spacing) * 12)}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}@media (min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}}@media (min-width:64rem){.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}}:root{--color-obsidian:#0a0a0c;--color-surface-raised:#121318;--color-border:#27272a;--color-accent-cyan:#00f0ff;--color-accent-cyan-bright:#00f3ff;--color-accent-amber:#ffb700;--color-text-primary:#f4f4f6;--color-text-muted:#a1a1aa;--color-phase-g:#00f0ff;--color-phase-u:#38bdf8;--color-phase-a:#a855f7;--color-phase-r:#ffb700;--color-phase-d:#22c55e;--color-phase-s:#10b981;--color-status-nominal:#10b981;--color-status-warn:#ffb700;--color-status-fault:#ef4444;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--shadow-glow-cyan:0 0 18px #00f0ff59;--shadow-glow-amber:0 0 18px #ffb70059}html,body{background-color:var(--color-obsidian);color:var(--color-text-primary);font-family:var(--font-sans);color-scheme:dark}code,pre,kbd,samp,.font-mono{font-family:var(--font-mono)}.prose-tars{color:var(--color-text-primary);line-height:1.75}.prose-tars h1,.prose-tars h2,.prose-tars h3,.prose-tars h4{font-family:var(--font-mono);color:var(--color-text-primary);letter-spacing:-.02em;margin-top:2rem;margin-bottom:.75rem;font-weight:700}.prose-tars p,.prose-tars ul,.prose-tars ol,.prose-tars blockquote,.prose-tars pre,.prose-tars table{margin-bottom:1.25rem}.prose-tars a{color:var(--color-accent-cyan);text-underline-offset:4px;text-decoration:underline}.prose-tars a:hover{color:var(--color-accent-cyan-bright)}.prose-tars code{background-color:var(--color-surface-raised);border:1px solid var(--color-border);color:var(--color-accent-cyan);padding:.125rem .375rem;font-size:.875em}.prose-tars pre{background-color:var(--color-obsidian);border:1px solid var(--color-border);padding:1rem;overflow-x:auto}.prose-tars pre code{color:var(--color-text-primary);background-color:#0000;border:0;padding:0}.prose-tars blockquote{border-left:2px solid var(--color-accent-amber);color:var(--color-text-muted);padding-left:1rem}.prose-tars table{border-collapse:collapse;width:100%;font-size:.875rem}.prose-tars th,.prose-tars td{border:1px solid var(--color-border);text-align:left;padding:.5rem .75rem}.prose-tars th{background-color:var(--color-surface-raised);font-family:var(--font-mono);color:var(--color-accent-cyan)}.crt-scanlines,.scanline-overlay{background-image:repeating-linear-gradient(#fff0 0 2px,#00f0ff0a 3px,#00000038 4px)}.scanline-overlay{pointer-events:none}.glow-cyan{box-shadow:var(--shadow-glow-cyan)}.glow-amber{box-shadow:var(--shadow-glow-amber)}.text-glow-cyan{text-shadow:0 0 12px #00f0ff73}.text-glow-amber{text-shadow:0 0 12px #ffb70073}.border-glow-cyan{border-color:var(--color-accent-cyan);box-shadow:0 0 12px #00f0ff40}@keyframes tars-pulse{0%,to{opacity:1;box-shadow:0 0 8px}50%{opacity:.35;box-shadow:0 0 2px}}.status-pulse{animation:2.2s cubic-bezier(.4,0,.6,1) infinite tars-pulse}.status-chip{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--color-border);background-color:var(--color-obsidian);padding:.25rem .5rem;font-size:.6875rem;line-height:1}.status-chip-nominal{color:var(--color-status-nominal);border-color:#10b98173}.status-chip-amber{color:var(--color-accent-amber);border-color:#ffb70073}.status-chip-danger{color:var(--color-status-fault);border-color:#ef444473}.tactical-panel{background-color:var(--color-surface-raised);border:1px solid var(--color-border)}@media (prefers-contrast:more){html,body{color:#fff;background-color:#000}.crt-scanlines,.scanline-overlay{background-image:none!important}.glow-cyan,.glow-amber,.border-glow-cyan{box-shadow:none!important}.text-glow-cyan,.text-glow-amber{text-shadow:none!important}.tactical-panel,.status-chip{border-color:#f4f4f6!important}}@media (prefers-reduced-motion:reduce){.status-pulse{animation:none!important}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000} \ No newline at end of file diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..84c17d7fd9dcb5cc86ededdb241cb455f7d77dba GIT binary patch literal 309 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 literal 0 HcmV?d00001 diff --git a/static/images/tars-logo.svg b/static/images/tars-logo.svg new file mode 100644 index 0000000..560d13e --- /dev/null +++ b/static/images/tars-logo.svg @@ -0,0 +1,52 @@ + + TARS Cloud Monolith Emblem + Four-slab articulated TARS sovereign monolith in obsidian and raised slate with cyan vector bevels and tactical amber telemetry core. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/styles/input.css b/styles/input.css new file mode 100644 index 0000000..309d03c --- /dev/null +++ b/styles/input.css @@ -0,0 +1,281 @@ +@import "tailwindcss"; + +@theme { + --color-obsidian: #0a0a0c; + --color-surface-raised: #121318; + --color-border: #27272a; + --color-accent-cyan: #00f0ff; + --color-accent-cyan-bright: #00f3ff; + --color-accent-amber: #ffb700; + --color-text-primary: #f4f4f6; + --color-text-muted: #a1a1aa; + --color-phase-g: #00f0ff; + --color-phase-u: #38bdf8; + --color-phase-a: #a855f7; + --color-phase-r: #ffb700; + --color-phase-d: #22c55e; + --color-phase-s: #10b981; + --color-status-nominal: #10b981; + --color-status-warn: #ffb700; + --color-status-fault: #ef4444; + --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; + --font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif; + --shadow-glow-cyan: 0 0 18px rgba(0, 240, 255, 0.35); + --shadow-glow-amber: 0 0 18px rgba(255, 183, 0, 0.35); +} + +:root { + --color-obsidian: #0a0a0c; + --color-surface-raised: #121318; + --color-border: #27272a; + --color-accent-cyan: #00f0ff; + --color-accent-cyan-bright: #00f3ff; + --color-accent-amber: #ffb700; + --color-text-primary: #f4f4f6; + --color-text-muted: #a1a1aa; + --color-phase-g: #00f0ff; + --color-phase-u: #38bdf8; + --color-phase-a: #a855f7; + --color-phase-r: #ffb700; + --color-phase-d: #22c55e; + --color-phase-s: #10b981; + --color-status-nominal: #10b981; + --color-status-warn: #ffb700; + --color-status-fault: #ef4444; + --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; + --font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif; + --shadow-glow-cyan: 0 0 18px rgba(0, 240, 255, 0.35); + --shadow-glow-amber: 0 0 18px rgba(255, 183, 0, 0.35); +} + +/* Base document resets & typography */ +html, +body { + background-color: var(--color-obsidian); + color: var(--color-text-primary); + font-family: var(--font-sans); + color-scheme: dark; +} + +code, +pre, +kbd, +samp, +.font-mono { + font-family: var(--font-mono); +} + +/* Markdown prose container */ +.prose-tars { + color: var(--color-text-primary); + line-height: 1.75; +} + +.prose-tars h1, +.prose-tars h2, +.prose-tars h3, +.prose-tars h4 { + font-family: var(--font-mono); + color: var(--color-text-primary); + font-weight: 700; + letter-spacing: -0.02em; + margin-top: 2rem; + margin-bottom: 0.75rem; +} + +.prose-tars p, +.prose-tars ul, +.prose-tars ol, +.prose-tars blockquote, +.prose-tars pre, +.prose-tars table { + margin-bottom: 1.25rem; +} + +.prose-tars a { + color: var(--color-accent-cyan); + text-decoration: underline; + text-underline-offset: 4px; +} + +.prose-tars a:hover { + color: var(--color-accent-cyan-bright); +} + +.prose-tars code { + background-color: var(--color-surface-raised); + border: 1px solid var(--color-border); + padding: 0.125rem 0.375rem; + font-size: 0.875em; + color: var(--color-accent-cyan); +} + +.prose-tars pre { + background-color: var(--color-obsidian); + border: 1px solid var(--color-border); + padding: 1rem; + overflow-x: auto; +} + +.prose-tars pre code { + background-color: transparent; + border: 0; + padding: 0; + color: var(--color-text-primary); +} + +.prose-tars blockquote { + border-left: 2px solid var(--color-accent-amber); + padding-left: 1rem; + color: var(--color-text-muted); +} + +.prose-tars table { + width: 100%; + border-collapse: collapse; + font-size: 0.875rem; +} + +.prose-tars th, +.prose-tars td { + border: 1px solid var(--color-border); + padding: 0.5rem 0.75rem; + text-align: left; +} + +.prose-tars th { + background-color: var(--color-surface-raised); + font-family: var(--font-mono); + color: var(--color-accent-cyan); +} + +/* CRT scanline overlays */ +.crt-scanlines, +.scanline-overlay { + background-image: repeating-linear-gradient( + to bottom, + rgba(255, 255, 255, 0) 0px, + rgba(255, 255, 255, 0) 2px, + rgba(0, 240, 255, 0.04) 3px, + rgba(0, 0, 0, 0.22) 4px + ); +} + +.scanline-overlay { + pointer-events: none; +} + +/* Phosphor glow effects */ +.glow-cyan { + box-shadow: var(--shadow-glow-cyan); +} + +.glow-amber { + box-shadow: var(--shadow-glow-amber); +} + +.text-glow-cyan { + text-shadow: 0 0 12px rgba(0, 240, 255, 0.45); +} + +.text-glow-amber { + text-shadow: 0 0 12px rgba(255, 183, 0, 0.45); +} + +.border-glow-cyan { + border-color: var(--color-accent-cyan); + box-shadow: 0 0 12px rgba(0, 240, 255, 0.25); +} + +/* Status indicator pulses and chips */ +@keyframes tars-pulse { + 0%, + 100% { + opacity: 1; + box-shadow: 0 0 8px currentColor; + } + 50% { + opacity: 0.35; + box-shadow: 0 0 2px currentColor; + } +} + +.status-pulse { + animation: tars-pulse 2.2s cubic-bezier(0.4, 0, 0.6, 1) infinite; +} + +.status-chip { + font-family: var(--font-mono); + font-size: 0.6875rem; + line-height: 1; + letter-spacing: 0.08em; + text-transform: uppercase; + padding: 0.25rem 0.5rem; + border: 1px solid var(--color-border); + background-color: var(--color-obsidian); +} + +.status-chip-nominal { + color: var(--color-status-nominal); + border-color: rgba(16, 185, 129, 0.45); +} + +.status-chip-amber { + color: var(--color-accent-amber); + border-color: rgba(255, 183, 0, 0.45); +} + +.status-chip-danger { + color: var(--color-status-fault); + border-color: rgba(239, 68, 68, 0.45); +} + +/* Tactical surface panel */ +.tactical-panel { + background-color: var(--color-surface-raised); + border: 1px solid var(--color-border); +} + +/* Accessibility & high-contrast fallbacks */ +@media (prefers-contrast: more) { + html, + body { + background-color: #000000; + color: #ffffff; + } + + .crt-scanlines, + .scanline-overlay { + background-image: none !important; + } + + .glow-cyan, + .glow-amber, + .border-glow-cyan { + box-shadow: none !important; + } + + .text-glow-cyan, + .text-glow-amber { + text-shadow: none !important; + } + + .tactical-panel, + .status-chip { + border-color: #f4f4f6 !important; + } +} + +@media (prefers-reduced-motion: reduce) { + .status-pulse { + animation: none !important; + } + + *, + *::before, + *::after { + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } +} diff --git a/templates/404.html b/templates/404.html new file mode 100644 index 0000000..a70d6fd --- /dev/null +++ b/templates/404.html @@ -0,0 +1,56 @@ +{% extends "base.html" %} + +{% block title %}404 // TRANSMISSION_LOST | {{ config.title }}{% endblock %} + +{% block content %} +
+
+
+ + + WARN // ROUTE_FAULT + + TELEMETRY_FRAME // 0x0194 +
+ +
+

+ ALERT // CARRIER_SIGNAL_INTERRUPTED +

+

+ TRANSMISSION_LOST // 404_NOT_FOUND +

+

+ The requested coordinate vector could not be resolved on the TARS sovereign edge mesh. Verify the URI path or reroute to an active command sector below. +

+
+ +
+
// DIAGNOSTIC_TELEMETRY_READOUT
+
+
STATUS_CODE: 0x0194
+
HTTP_STATUS: 404
+
SIGNAL_STATE: CARRIER_DROPPED
+
ERROR_CLASS: ROUTE_UNRESOLVED
+
NODE: TARS-SOVEREIGN-EDGE
+
RECOVERY_ACTION: REROUTE_TO_BASE
+
+
+ + +
+
+{% endblock %} diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..286d5ab --- /dev/null +++ b/templates/base.html @@ -0,0 +1,210 @@ + + + + + + {% if page is defined and page.title %} + {% set meta_title = page.title ~ " | " ~ config.title %} + {% elif section is defined and section.title %} + {% set meta_title = section.title ~ " | " ~ config.title %} + {% else %} + {% set meta_title = config.title %} + {% endif %} + {% if page is defined and page.description %} + {% set meta_description = page.description %} + {% elif section is defined and section.description %} + {% set meta_description = section.description %} + {% else %} + {% set meta_description = config.description %} + {% endif %} + {% if current_url is defined and current_url %} + {% set canonical_url = current_url %} + {% elif page is defined and page.permalink %} + {% set canonical_url = page.permalink %} + {% elif section is defined and section.permalink %} + {% set canonical_url = section.permalink %} + {% else %} + {% set canonical_url = config.base_url ~ "/" %} + {% endif %} + {% set og_image_url = get_url(path="images/og-banner.png", trailing_slash=false) %} + + {% block title %}{{ meta_title }}{% endblock %} + + + + + + + + + + + + + + + + + + + + + + + {% block head %}{% endblock %} + + + {% if config.extra.enable_scanlines | default(value=true) %} + + {% endif %} + + + SKIP_TO_MAIN_CONTENT // #main-content + + +
+
+
+ + TARS Cloud +
+ + TARS_CLOUD + + + SOVEREIGN // RUNTIME + +
+
+ + +
+ + + +
+ {% block header_actions %}{% endblock %} + + +
+
+ + +
+ +
+ {% block content %}{% endblock %} +
+ +
+
+
+ TARS Cloud Emblem +
+

TARS CLOUD // SOVEREIGN AI INFRASTRUCTURE

+

© {{ now() | date(format="%Y") }} TARS Cloud Contributors. All telemetry verified.

+
+
+ +
+ DOCS + + DOWNLOADS + + GITHUB + + SOURCE +
+ +
+ LICENSE // MIT + AIRGAP_READY // ZERO_NPM_RUNTIME +
+
+
+ + + {% block scripts %}{% endblock %} + + diff --git a/templates/page.html b/templates/page.html new file mode 100644 index 0000000..5aa5585 --- /dev/null +++ b/templates/page.html @@ -0,0 +1,48 @@ +{% extends "base.html" %} + +{% block title %}{{ page.title }} | {{ config.title }}{% endblock %} + +{% block content %} +
+ + +
+
+ DOC_SPEC // VERIFIED + {% if page.date %} + + {% endif %} + {% if page.reading_time %} + EST_READ // {{ page.reading_time }} MIN + {% endif %} +
+ +

+ {{ page.title }} +

+ + {% if page.description %} +

+ {{ page.description }} +

+ {% endif %} +
+ +
+ {{ page.content | safe }} +
+
+{% endblock %} diff --git a/templates/section.html b/templates/section.html new file mode 100644 index 0000000..3fc0172 --- /dev/null +++ b/templates/section.html @@ -0,0 +1,94 @@ +{% extends "base.html" %} + +{% block title %}{% if section.title %}{{ section.title }} | {{ config.title }}{% else %}{{ config.title }}{% endif %}{% endblock %} + +{% block content %} +
+
+
+ INDEX_SECTOR // ACTIVE + ENTRIES // {{ section.pages | length }} +
+ +

+ {{ section.title | default(value=config.title) }} +

+ + {% if section.description %} +

+ {{ section.description }} +

+ {% endif %} +
+ + {% if section.content %} +
+ {{ section.content | safe }} +
+ {% endif %} + + {% if section.subsections and section.subsections | length > 0 %} +
+

+ // CHILD_SECTORS +

+
+ {% for subsection_path in section.subsections %} + {% set sub = get_section(path=subsection_path) %} + +
+ SECTOR // {{ loop.index }} + OPEN_SECTOR -> +
+

+ {{ sub.title }} +

+ {% if sub.description %} +

{{ sub.description }}

+ {% endif %} +
+ {% endfor %} +
+
+ {% endif %} + + {% if section.pages and section.pages | length > 0 %} +
+

+ // TRANSMISSIONS +

+
+ {% for post in section.pages %} +
+
+
+ {% if post.date %} + + {% else %} + SPEC_NODE + {% endif %} + {% if post.reading_time %} + {{ post.reading_time }} MIN + {% endif %} +
+

+ {{ post.title }} +

+ {% if post.description %} +

{{ post.description }}

+ {% elif post.summary %} +
{{ post.summary | safe }}
+ {% endif %} +
+ +
+ {% endfor %} +
+
+ {% endif %} +
+{% endblock %}