Files
polynote/app/globals.css
Urko a32badd025
Some checks failed
build / lint (push) Failing after 36s
build / build (push) Has been skipped
initial commit
2026-01-29 16:13:04 +00:00

618 lines
10 KiB
CSS

@import url("https://fonts.googleapis.com/css2?family=Sora:wght@400;500;600;700&display=swap");
:root {
--bg-1: #f1f6ff;
--bg-2: #fff4e6;
--ink: #0f172a;
--muted: #5c677d;
--card: rgba(255, 255, 255, 0.9);
--surface: #ffffff;
--surface-soft: #f7fbff;
--surface-secondary: #fff8ed;
--border: #d8deea;
--accent: #0ea5e9;
--accent-strong: #0f766e;
--pill: #e1f6ff;
--pill-border: #c7ecff;
--pill-text: #0f4c5c;
--live-ok-bg: #e6ffe8;
--live-ok-border: #c4f0d0;
--live-ok-text: #0f6d2f;
--shadow: 0 12px 60px rgba(15, 23, 42, 0.14);
--link: #0ea5e9;
--link-disabled: #94a3b8;
--status-ok-bg: #e9fff2;
--status-ok-border: #c1f3d7;
--status-error-bg: #fff2ed;
--status-error-border: #ffd2c8;
}
[data-theme="dark"] {
--bg-1: #0f172a;
--bg-2: #111827;
--ink: #e5e7eb;
--muted: #a5b4c6;
--card: rgba(24, 32, 48, 0.9);
--surface: #0f172a;
--surface-soft: #1f2937;
--surface-secondary: #1c2432;
--border: #1f2a3a;
--accent: #22d3ee;
--accent-strong: #10b981;
--pill: #142337;
--pill-border: #1f3a5f;
--pill-text: #c7e1ff;
--live-ok-bg: #15392a;
--live-ok-border: #1e4f37;
--live-ok-text: #bef0d2;
--shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
--link: #7dd3fc;
--link-disabled: #475569;
--status-ok-bg: #102b1f;
--status-ok-border: #1e4f37;
--status-error-bg: #321717;
--status-error-border: #6b2727;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
margin: 0;
min-height: 100vh;
background: radial-gradient(120% 120% at 20% 20%, rgba(14, 165, 233, 0.18), transparent),
radial-gradient(80% 80% at 80% 0%, rgba(255, 159, 67, 0.16), transparent),
linear-gradient(135deg, var(--bg-1), var(--bg-2));
font-family: "Sora", "Segoe UI", -apple-system, sans-serif;
color: var(--ink);
padding: 32px;
}
.page {
max-width: 1100px;
margin: 0 auto;
display: flex;
flex-direction: column;
gap: 20px;
}
.hero {
display: flex;
flex-direction: column;
gap: 10px;
}
.hero-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
flex-wrap: wrap;
}
.hero-text {
flex: 1 1 320px;
}
.hero-actions {
display: flex;
gap: 8px;
align-items: flex-start;
flex-wrap: wrap;
}
.eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 10px;
background: rgba(255, 255, 255, 0.7);
border: 1px solid var(--border);
border-radius: 999px;
color: var(--muted);
width: fit-content;
font-size: 13px;
letter-spacing: 0.02em;
}
h1 {
margin: 0;
font-size: 32px;
letter-spacing: -0.02em;
}
.hero-topline {
display: flex;
align-items: center;
gap: 10px;
}
.logo-mark {
width: 52px;
height: 52px;
border-radius: 12px;
box-shadow: var(--shadow);
background: var(--surface);
}
.lede {
margin: 0;
color: var(--muted);
max-width: 760px;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 16px;
}
.card {
background: var(--card);
border-radius: 18px;
border: 1px solid var(--border);
box-shadow: var(--shadow);
padding: 18px;
display: flex;
flex-direction: column;
gap: 14px;
backdrop-filter: blur(8px);
}
.card-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.label {
margin: 0;
font-weight: 600;
font-size: 14px;
}
.muted {
margin: 4px 0 0;
color: var(--muted);
font-size: 13px;
}
.stack {
display: flex;
flex-direction: column;
gap: 10px;
}
input,
textarea {
width: 100%;
border: 1px solid var(--border);
border-radius: 12px;
padding: 12px 14px;
font: inherit;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
background: var(--surface);
color: var(--ink);
}
input:focus,
textarea:focus {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 4px rgba(14, 165, 233, 0.12);
}
textarea {
resize: vertical;
}
.input-label {
font-weight: 600;
font-size: 14px;
display: flex;
align-items: baseline;
gap: 6px;
}
.button-row {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
button {
border: none;
border-radius: 12px;
padding: 12px 14px;
font: inherit;
cursor: pointer;
transition: transform 0.15s ease, box-shadow 0.2s ease, opacity 0.2s ease;
}
button:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.primary {
background: linear-gradient(135deg, var(--accent), #22c55e);
color: #fff;
box-shadow: 0 10px 30px rgba(14, 165, 233, 0.3);
}
.ghost {
background: transparent;
color: var(--ink);
border: 1px solid var(--border);
}
button:hover:not(:disabled) {
transform: translateY(-1px);
}
.meta {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
gap: 10px 18px;
padding: 12px;
border-radius: 12px;
background: var(--surface-soft);
margin: 0;
}
.meta dt {
font-size: 12px;
color: var(--muted);
margin-bottom: 4px;
}
.meta dd {
margin: 0;
font-weight: 600;
word-break: break-all;
}
.pill {
padding: 8px 12px;
border-radius: 999px;
font-weight: 600;
font-size: 12px;
}
.pill-quiet {
background: var(--pill);
color: var(--pill-text);
border: 1px solid var(--pill-border);
}
.pill-live {
background: var(--live-ok-bg);
color: var(--live-ok-text);
border: 1px solid var(--live-ok-border);
}
.status-card .status-line {
padding: 12px;
border-radius: 12px;
border: 1px dashed var(--border);
background: var(--surface-soft);
font-weight: 600;
color: var(--ink);
}
.status-card .secondary {
display: flex;
align-items: center;
gap: 8px;
font-weight: 500;
background: var(--surface-secondary);
}
.status-card .dot {
width: 10px;
height: 10px;
border-radius: 999px;
background: #f59e0b;
display: inline-block;
}
.hint {
margin: 0;
color: var(--muted);
font-size: 12px;
}
.status-card .hint {
text-align: left;
}
.tx-box {
padding: 12px;
border-radius: 12px;
border: 1px solid var(--border);
background: var(--surface);
}
.hash {
font-family: "SFMono-Regular", "JetBrains Mono", "Fira Code", monospace;
word-break: break-all;
margin: 6px 0;
}
.tx-actions {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.copy-btn {
padding: 8px 10px;
}
.link {
color: var(--link);
font-weight: 600;
text-decoration: none;
}
.link:hover {
text-decoration: underline;
}
.link.disabled {
pointer-events: none;
color: var(--link-disabled);
text-decoration: none;
}
.locale-dropdown {
position: relative;
display: inline-flex;
flex-direction: column;
gap: 4px;
min-width: 180px;
}
.locale-label {
margin: 0;
color: var(--muted);
font-size: 12px;
}
.locale-toggle {
display: inline-flex;
align-items: center;
gap: 10px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: 999px;
padding: 10px 12px;
cursor: pointer;
transition: box-shadow 0.2s, background 0.2s;
}
.locale-toggle:hover {
box-shadow: var(--shadow);
}
.locale-toggle:focus {
outline: none;
box-shadow: 0 0 0 4px rgba(14, 165, 233, 0.12);
}
.locale-flag {
width: 28px;
height: 28px;
display: inline-flex;
align-items: center;
justify-content: center;
background: var(--surface-soft);
border-radius: 50%;
font-size: 18px;
}
.locale-name {
font-weight: 600;
color: var(--ink);
}
.locale-arrow {
width: 14px;
height: 14px;
color: #6366f1;
transition: transform 0.2s;
}
.locale-arrow.open {
transform: rotate(180deg);
}
.locale-panel {
position: absolute;
top: calc(100% + 6px);
right: 0;
background: var(--card);
border: 1px solid var(--border);
border-radius: 14px;
box-shadow: var(--shadow);
overflow: hidden;
z-index: 20;
min-width: 220px;
}
.locale-panel-search {
padding: 8px;
border-bottom: 1px solid var(--border);
}
.locale-panel-search input {
width: 100%;
padding: 8px 10px;
border: 1px solid var(--border);
border-radius: 10px;
font: inherit;
}
.locale-panel-search input:focus {
outline: none;
box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1);
}
.locale-panel-list {
list-style: none;
margin: 0;
padding: 6px 0;
max-height: 240px;
overflow-y: auto;
}
.locale-panel-item {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 12px;
cursor: pointer;
transition: background 0.15s;
}
.locale-panel-item:hover,
.locale-panel-item.focused {
background: var(--surface-soft);
}
.locale-item-flag {
width: 24px;
height: 24px;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 16px;
}
.locale-item-label {
font-size: 14px;
color: var(--ink);
}
.locale-no-results {
padding: 10px 12px;
color: var(--muted);
font-size: 13px;
font-style: italic;
}
.status-ok {
border-color: var(--status-ok-border) !important;
background: var(--status-ok-bg) !important;
}
.status-error {
border-color: var(--status-error-border) !important;
background: var(--status-error-bg) !important;
}
.theme-toggle {
min-width: 160px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
}
.history {
margin-top: 12px;
padding: 12px;
border: 1px solid var(--border);
border-radius: 12px;
background: var(--surface);
}
.history-head {
display: flex;
align-items: center;
justify-content: space-between;
}
.history-empty {
margin: 8px 0 0;
color: var(--muted);
font-size: 13px;
}
.history-list {
list-style: none;
padding: 0;
margin: 10px 0 0;
display: flex;
flex-direction: column;
gap: 10px;
}
.history-item {
border: 1px solid var(--border);
border-radius: 10px;
padding: 10px;
background: var(--surface-soft);
}
.history-row {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
}
.history-time {
font-size: 12px;
color: var(--muted);
}
.history-meta {
display: flex;
flex-direction: column;
gap: 4px;
margin: 6px 0;
color: var(--muted);
font-size: 13px;
word-break: break-all;
}
.history-message {
font-weight: 600;
margin: 4px 0;
}
.history-hash {
font-family: "SFMono-Regular", "JetBrains Mono", "Fira Code", monospace;
color: var(--muted);
font-size: 12px;
}
@media (max-width: 640px) {
body {
padding: 18px;
}
.card-head {
flex-direction: column;
align-items: flex-start;
}
.button-row {
flex-direction: column;
}
.hero-row {
flex-direction: column;
}
.locale-dropdown {
width: 100%;
}
}