From 2a4780d6dbea797d30dfb8139cc11082e137c5db Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Sat, 25 Jul 2026 15:30:22 -0500 Subject: [PATCH] update --- internal/app/static/app.css | 98 ++++++++++++++------------ internal/app/templates/components.html | 4 ++ 2 files changed, 56 insertions(+), 46 deletions(-) diff --git a/internal/app/static/app.css b/internal/app/static/app.css index 4da9969..14a1cca 100644 --- a/internal/app/static/app.css +++ b/internal/app/static/app.css @@ -1,16 +1,18 @@ :root { - color-scheme: dark; - --ink: #edf4f2; - --muted: #95a8a3; - --panel: #111d1c; - --panel-2: #172624; - --line: #28413d; - --accent: #58e0ad; - --accent-dark: #143e32; - --amber: #f1bd6c; - --danger: #ff7f75; - --shadow: 0 24px 70px rgba(0, 0, 0, .28); - font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + color-scheme: light; + --ink: #333f49; + --muted: #687077; + --panel: #ffffff; + --panel-2: #f2f2f2; + --line: #e1e2e4; + --line-strong: #bac2c4; + --accent: #699140; + --accent-dark: #4f6f30; + --accent-soft: #b9d982; + --amber: #8a6218; + --danger: #b53b33; + --shadow: 0 18px 50px rgba(51, 63, 73, .1); + font-family: "Outfit", "Avenir Next", Avenir, "Segoe UI", ui-sans-serif, system-ui, sans-serif; } * { box-sizing: border-box; } @@ -20,8 +22,8 @@ body { min-height: 100vh; color: var(--ink); background: - radial-gradient(circle at 12% 0%, rgba(88, 224, 173, .1), transparent 30rem), - #091211; + radial-gradient(circle at 8% 0%, rgba(185, 217, 130, .26), transparent 34rem), + #f7f8f5; } button, input, select { font: inherit; } @@ -36,21 +38,21 @@ button:disabled { cursor: wait; opacity: .58; } justify-content: space-between; min-height: 68px; padding: 0 5vw; - border-bottom: 1px solid rgba(88, 224, 173, .16); - background: rgba(9, 18, 17, .88); + border-bottom: 1px solid var(--line); + background: rgba(255, 255, 255, .92); backdrop-filter: blur(18px); } .operator { color: var(--muted); } -.brand { display: flex; align-items: center; color: var(--accent); text-decoration: none; white-space: nowrap; } +.brand { display: flex; align-items: center; gap: 15px; color: var(--ink); text-decoration: none; white-space: nowrap; } .brand-logo { display: flex; align-items: center; - padding: 6px 10px; - border-radius: 9px; - background: #f4f7f5; } .brand-logo img { display: block; width: 154px; height: auto; } +.product-context { display: grid; gap: 1px; padding-left: 15px; border-left: 1px solid var(--line-strong); line-height: 1; } +.product-context strong { color: var(--accent-dark); font-size: .9rem; letter-spacing: .12em; } +.product-context small { color: var(--muted); font-size: .68rem; font-weight: 700; letter-spacing: .035em; } .brand-fallback { display: none; font-weight: 900; letter-spacing: .14em; } .portal-nav { display: flex; align-self: stretch; gap: 6px; } .portal-nav a { @@ -64,7 +66,7 @@ button:disabled { cursor: wait; opacity: .58; } text-decoration: none; } .portal-nav a:hover { color: var(--ink); } -.portal-nav a.active { color: var(--accent); border-bottom-color: var(--accent); } +.portal-nav a.active { color: var(--accent-dark); border-bottom-color: var(--accent); } .operator { display: flex; align-items: center; gap: 18px; } .operator form { margin: 0; } @@ -83,8 +85,9 @@ button:disabled { cursor: wait; opacity: .58; } } h1, h2, p { margin-top: 0; } -h1 { max-width: 760px; margin-bottom: 14px; font-size: clamp(2.5rem, 6vw, 5.7rem); line-height: .94; letter-spacing: -.055em; } -h2 { margin-bottom: 0; font-size: 1.4rem; letter-spacing: -.02em; } +h1, h2 { font-family: "Zilla Slab", Rockwell, "Roboto Slab", Georgia, serif; font-weight: 600; } +h1 { max-width: 760px; margin-bottom: 14px; font-size: clamp(2.5rem, 6vw, 5.7rem); line-height: .96; letter-spacing: -.035em; } +h2 { margin-bottom: 0; font-size: 1.55rem; letter-spacing: -.01em; } .hero p:not(.eyebrow) { max-width: 650px; color: var(--muted); font-size: 1.1rem; line-height: 1.65; } .view-heading { margin-bottom: 38px; } .view-heading h1 { font-size: clamp(2.4rem, 5vw, 4.8rem); } @@ -92,7 +95,7 @@ h2 { margin-bottom: 0; font-size: 1.4rem; letter-spacing: -.02em; } .eyebrow { margin-bottom: 10px; - color: var(--accent); + color: var(--accent-dark); font-size: .72rem; font-weight: 800; letter-spacing: .14em; @@ -119,7 +122,7 @@ h2 { margin-bottom: 0; font-size: 1.4rem; letter-spacing: -.02em; } .panel { border: 1px solid var(--line); border-radius: 22px; - background: linear-gradient(145deg, rgba(23, 38, 36, .9), rgba(14, 25, 24, .96)); + background: var(--panel); box-shadow: var(--shadow); overflow: hidden; } @@ -135,12 +138,12 @@ input, select { margin-top: 8px; padding: 12px 13px; color: var(--ink); - border: 1px solid #35504b; + border: 1px solid var(--line-strong); border-radius: 10px; outline: none; - background: #0a1514; + background: #ffffff; } -input:focus, select:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(88, 224, 173, .12); } +input:focus, select:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(105, 145, 64, .16); } .field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; } fieldset { display: grid; gap: 10px; padding: 0; border: 0; } @@ -152,7 +155,7 @@ legend { margin-bottom: 8px; } padding: 13px; border: 1px solid var(--line); border-radius: 12px; - background: rgba(8, 18, 17, .55); + background: #fafbf8; text-transform: none; } .package-choice input, .toggle input { width: auto; margin: 0; accent-color: var(--accent); } @@ -166,18 +169,21 @@ legend { margin-bottom: 8px; } justify-content: center; min-height: 46px; padding: 0 18px; - color: #07110e; + color: #ffffff; border: 0; - border-radius: 11px; - background: var(--accent); + border-radius: 30px; + background: var(--accent-dark); font-weight: 850; text-decoration: none; cursor: pointer; } -.button.secondary { color: var(--ink); border: 1px solid var(--line); background: #1c302d; } -.button.light { background: #e9fff7; } +.button:hover { background: #3f5926; } +.button.secondary { color: var(--accent-dark); border: 1px solid var(--accent); background: #ffffff; } +.button.secondary:hover { color: #ffffff; background: var(--accent-dark); } +.button.light { color: var(--accent-dark); background: #ffffff; } +.button.light:hover { color: #ffffff; background: var(--accent-dark); } .button.wide { width: 100%; } -.text-button { padding: 0; color: var(--accent); border: 0; background: transparent; cursor: pointer; } +.text-button { padding: 0; color: var(--accent-dark); border: 0; background: transparent; cursor: pointer; } .text-button.danger { color: var(--danger); } .authorization-list { display: grid; max-height: 690px; overflow: auto; } @@ -198,7 +204,7 @@ legend { margin-bottom: 8px; } letter-spacing: .06em; text-transform: uppercase; } -.authorization.active .status, .status.enabled { color: var(--accent); border-color: rgba(88, 224, 173, .4); background: rgba(88, 224, 173, .08); } +.authorization.active .status, .status.enabled { color: var(--accent-dark); border-color: rgba(105, 145, 64, .42); background: rgba(185, 217, 130, .25); } .code-hint { color: var(--amber); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; } dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px 24px; margin: 18px 0; } dl div { min-width: 0; } @@ -212,15 +218,16 @@ dd { margin: 4px 0 0; overflow-wrap: anywhere; } gap: 30px; margin-bottom: 32px; padding: 24px 28px; - color: #092119; + color: var(--ink); + border: 1px solid rgba(105, 145, 64, .26); border-radius: 18px; - background: var(--accent); - box-shadow: 0 20px 70px rgba(88, 224, 173, .2); + background: var(--accent-soft); + box-shadow: 0 18px 45px rgba(105, 145, 64, .16); } -.code-reveal .eyebrow { color: #174e3c; } +.code-reveal .eyebrow { color: var(--accent-dark); } .code-reveal h2 { margin-bottom: 6px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: clamp(1.7rem, 4vw, 2.8rem); letter-spacing: .08em; } .code-reveal p { margin-bottom: 0; } -.notice { margin-bottom: 22px; padding: 12px 16px; color: var(--accent); border: 1px solid rgba(88, 224, 173, .3); border-radius: 10px; background: rgba(88, 224, 173, .07); } +.notice { margin-bottom: 22px; padding: 12px 16px; color: var(--accent-dark); border: 1px solid rgba(105, 145, 64, .35); border-radius: 10px; background: rgba(185, 217, 130, .22); } .package-admin { margin-top: 24px; } .package-layout { display: grid; grid-template-columns: .8fr 1.2fr; gap: 32px; padding: 28px; } @@ -236,7 +243,7 @@ dd { margin: 4px 0 0; overflow-wrap: anywhere; } .form-help { margin: 0; color: var(--muted); font-size: .82rem; line-height: 1.55; } .upload-status { min-height: 1.2em; margin: 0; color: var(--amber); overflow-wrap: anywhere; } .manual-metadata { padding-top: 22px; border-top: 1px solid var(--line); } -.manual-metadata summary { color: var(--accent); cursor: pointer; font-weight: 750; } +.manual-metadata summary { color: var(--accent-dark); cursor: pointer; font-weight: 750; } .manual-metadata[open] summary { margin-bottom: 22px; } .audit-panel { margin-top: 24px; } @@ -270,15 +277,12 @@ dd { margin: 4px 0 0; overflow-wrap: anywhere; } padding: clamp(30px, 7vw, 58px); border: 1px solid var(--line); border-radius: 28px; - background: linear-gradient(145deg, rgba(23, 38, 36, .96), rgba(10, 20, 19, .98)); + background: #ffffff; box-shadow: var(--shadow); } .login-logo { display: inline-flex; margin-bottom: 42px; - padding: 12px 15px; - border-radius: 13px; - background: #f4f7f5; } .login-logo img { display: block; width: min(310px, 65vw); height: auto; } .login-card h1 { font-size: clamp(2.8rem, 10vw, 4.8rem); } @@ -288,6 +292,7 @@ dd { margin: 4px 0 0; overflow-wrap: anywhere; } @media (max-width: 900px) { .topbar { padding: 0 3vw; } .brand-logo img { width: 132px; } + .product-context small { display: none; } .hero, .content-grid, .package-layout { grid-template-columns: 1fr; } .audit-filters { grid-template-columns: 1fr 1fr; } .audit-row { grid-template-columns: 1fr 1fr; } @@ -299,6 +304,7 @@ dd { margin: 4px 0 0; overflow-wrap: anywhere; } @media (max-width: 580px) { .topbar { min-height: 62px; padding: 0 3vw; } .brand-logo { display: none; } + .product-context { display: none; } .brand-fallback { display: inline; } .operator > span { display: none; } .operator { gap: 0; } diff --git a/internal/app/templates/components.html b/internal/app/templates/components.html index 16da8e0..e259f6f 100644 --- a/internal/app/templates/components.html +++ b/internal/app/templates/components.html @@ -2,6 +2,10 @@
+ + TAPM + Deployment Access + TAPM