culture-compass / styles.css
guicybercode's picture
Launch Culture Compass static explorer
0fbbe82 verified
Raw
History Blame Contribute Delete
16.8 kB
:root {
color-scheme: light dark;
--color-primary: #1e3a5f;
--color-on-primary: #ffffff;
--color-secondary: #2563eb;
--color-on-secondary: #ffffff;
--color-accent: #a16207;
--color-on-accent: #ffffff;
--color-background: #f8fafc;
--color-foreground: #0f172a;
--color-card: #ffffff;
--color-card-foreground: #0f172a;
--color-muted: #e9eef5;
--color-muted-foreground: #475569;
--color-border: #cbd5e1;
--color-ring: #2563eb;
--color-error: #b42318;
--color-on-error: #ffffff;
--color-dark-surface: #1e3a5f;
--color-on-dark-surface: #ffffff;
--space-1: 0.25rem;
--space-2: 0.5rem;
--space-3: 0.75rem;
--space-4: 1rem;
--space-5: 1.5rem;
--space-6: 2rem;
--space-7: 3rem;
--space-8: 4rem;
--radius-sm: 0.25rem;
--radius-md: 0.5rem;
--shadow-card: 0 1rem 3rem rgb(15 23 42 / 0.08);
--font-heading: Georgia, "Times New Roman", "Yu Mincho", "Songti SC", serif;
--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Arial, sans-serif;
--content-width: 76rem;
--motion-fast: 180ms ease;
}
* {
box-sizing: border-box;
}
html {
min-width: 20rem;
background: var(--color-background);
scroll-behavior: smooth;
}
body {
min-height: 100vh;
min-height: 100dvh;
margin: 0;
background:
linear-gradient(90deg, transparent calc(50% - 0.5px), rgb(203 213 225 / 0.28) 50%, transparent calc(50% + 0.5px)),
var(--color-background);
color: var(--color-foreground);
font-family: var(--font-body);
font-size: 1rem;
line-height: 1.65;
text-rendering: optimizeLegibility;
}
button,
select {
font: inherit;
}
button,
select,
a {
touch-action: manipulation;
}
button,
select {
cursor: pointer;
}
a {
color: var(--color-secondary);
text-underline-offset: 0.2em;
}
a:hover {
text-decoration-thickness: 0.14em;
}
:focus-visible {
outline: 3px solid var(--color-ring);
outline-offset: 3px;
}
::selection {
background: var(--color-secondary);
color: var(--color-on-secondary);
}
h1,
h2,
h3,
h4,
p {
margin-block-start: 0;
}
h1,
h2,
h3,
h4 {
color: var(--color-primary);
font-family: var(--font-heading);
font-weight: 600;
line-height: 1.08;
text-wrap: balance;
}
.shell {
width: min(100% - 2rem, var(--content-width));
margin-inline: auto;
}
.visually-hidden {
position: absolute !important;
width: 1px !important;
height: 1px !important;
padding: 0 !important;
margin: -1px !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
white-space: nowrap !important;
border: 0 !important;
}
[hidden] {
display: none !important;
}
.noscript-notice {
margin: 0;
padding: var(--space-4);
border-block-end: 1px solid var(--color-border);
background: var(--color-muted);
color: var(--color-foreground);
text-align: center;
}
.skip-link {
position: fixed;
inset-block-start: var(--space-3);
inset-inline-start: var(--space-3);
z-index: 100;
min-height: 44px;
padding: 0.65rem 1rem;
translate: 0 -200%;
background: var(--color-card);
border: 2px solid var(--color-primary);
color: var(--color-primary);
font-weight: 700;
}
.skip-link:focus {
translate: 0;
}
.site-header {
border-block-end: 1px solid var(--color-border);
background: rgb(248 250 252 / 0.94);
}
.header-grid {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: var(--space-4);
align-items: center;
min-height: 5rem;
padding-block: var(--space-3);
}
.brand {
display: flex;
min-width: 0;
align-items: center;
gap: var(--space-3);
color: var(--color-primary);
font-weight: 750;
letter-spacing: -0.01em;
}
.brand-mark {
display: grid;
width: 2.75rem;
height: 2.75rem;
flex: 0 0 auto;
place-items: center;
background: var(--color-primary);
color: var(--color-on-primary);
font-size: 0.75rem;
letter-spacing: 0.12em;
}
.brand-name {
overflow-wrap: anywhere;
}
.interface-language {
display: flex;
align-items: center;
gap: var(--space-3);
}
.interface-language label {
color: var(--color-muted-foreground);
font-size: 0.8125rem;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
}
select {
min-height: 44px;
max-width: 100%;
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
background: var(--color-card);
color: var(--color-card-foreground);
}
.interface-language select {
padding: 0.5rem 2.25rem 0.5rem 0.75rem;
}
.hero {
padding-block: clamp(3rem, 8vw, 7.5rem) clamp(3rem, 6vw, 6rem);
}
.eyebrow,
.activity-context {
color: var(--color-secondary);
font-size: 0.75rem;
font-weight: 800;
letter-spacing: 0.14em;
text-transform: uppercase;
}
.hero-grid {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: var(--space-4);
align-items: end;
}
.hero-copy {
grid-column: 1 / span 8;
}
h1 {
max-width: 15ch;
margin-block-end: var(--space-5);
font-size: clamp(2.7rem, 7vw, 6.5rem);
letter-spacing: -0.05em;
}
.hero-intro {
max-width: 59ch;
margin: 0;
color: var(--color-muted-foreground);
font-size: clamp(1.05rem, 2vw, 1.3rem);
}
.draft-notice {
grid-column: 9 / -1;
margin: 0;
padding: var(--space-5);
border-block-start: 5px solid var(--color-accent);
background: var(--color-muted);
}
.draft-notice h2 {
margin-block-end: var(--space-3);
font-size: 1.45rem;
}
.draft-notice p:last-child {
margin: 0;
color: var(--color-foreground);
}
.notice-index,
.section-number,
.record-position {
color: var(--color-muted-foreground);
font-size: 0.75rem;
font-variant-numeric: tabular-nums;
font-weight: 750;
letter-spacing: 0.08em;
}
.explorer,
.results {
padding-block: var(--space-7);
border-block-start: 1px solid var(--color-border);
}
.section-heading {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: var(--space-4);
margin-block-end: var(--space-6);
}
.section-number {
grid-column: 1 / span 1;
padding-block-start: 0.4rem;
}
.section-heading > div {
grid-column: 3 / span 8;
}
.section-heading h2 {
margin-block-end: var(--space-2);
font-size: clamp(2rem, 4vw, 3.5rem);
letter-spacing: -0.035em;
}
.section-heading p:last-child {
max-width: 65ch;
margin: 0;
color: var(--color-muted-foreground);
}
.controls {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: var(--space-4);
align-items: end;
padding: var(--space-5);
background: var(--color-dark-surface);
color: var(--color-on-dark-surface);
}
.control-field {
grid-column: span 3;
min-width: 0;
}
.control-topic {
grid-column: span 3;
}
.control-field label {
display: block;
margin-block-end: var(--space-2);
font-size: 0.8125rem;
font-weight: 750;
}
.control-field select {
width: 100%;
min-height: 48px;
padding: 0.65rem 2.25rem 0.65rem 0.75rem;
border-color: rgb(255 255 255 / 0.55);
}
.control-field select:disabled {
cursor: wait;
opacity: 0.68;
}
.primary-button,
.secondary-button {
min-height: 48px;
border-radius: var(--radius-sm);
font-weight: 800;
transition:
background-color var(--motion-fast),
color var(--motion-fast),
box-shadow var(--motion-fast),
border-color var(--motion-fast);
}
.primary-button {
display: flex;
grid-column: span 3;
align-items: center;
justify-content: space-between;
gap: var(--space-3);
padding: 0.65rem 1rem;
border: 2px solid var(--color-accent);
background: var(--color-accent);
color: var(--color-on-accent);
text-align: start;
}
.primary-button:hover:not(:disabled) {
border-color: var(--color-on-dark-surface);
box-shadow: inset 0 0 0 1px var(--color-on-dark-surface);
}
.primary-button:disabled {
cursor: wait;
opacity: 0.6;
}
.button-rule {
width: 2.5rem;
height: 2px;
flex: 0 0 auto;
background: currentColor;
}
.results {
padding-block-end: clamp(4rem, 9vw, 8rem);
}
#result-region {
min-height: 24rem;
}
.state-panel {
display: grid;
min-height: 24rem;
place-content: center;
padding: var(--space-6);
border: 1px solid var(--color-border);
background: var(--color-card);
text-align: center;
}
.state-panel h3 {
margin-block: var(--space-5) var(--space-3);
font-size: clamp(1.65rem, 3vw, 2.4rem);
}
.state-panel p {
max-width: 48ch;
margin: 0 auto;
color: var(--color-muted-foreground);
}
.state-panel[data-state="error"] {
border-block-start: 5px solid var(--color-error);
}
.state-lines {
display: grid;
width: min(18rem, 70vw);
gap: var(--space-2);
margin-inline: auto;
}
.state-lines span {
display: block;
height: 3px;
background: var(--color-border);
transform-origin: left;
animation: loading-line 1.3s ease-in-out infinite alternate;
}
.state-lines span:nth-child(2) {
width: 72%;
animation-delay: 130ms;
}
.state-lines span:nth-child(3) {
width: 43%;
animation-delay: 260ms;
}
.state-panel:not([data-state="loading"]) .state-lines span {
animation: none;
}
.secondary-button {
margin-block-start: var(--space-5);
padding: 0.65rem 1.25rem;
border: 2px solid var(--color-primary);
background: transparent;
color: var(--color-primary);
}
.secondary-button:hover {
background: var(--color-primary);
color: var(--color-on-primary);
}
.activity-card {
overflow: hidden;
border: 1px solid var(--color-border);
background: var(--color-card);
box-shadow: var(--shadow-card);
color: var(--color-card-foreground);
}
.activity-header {
padding: clamp(1.5rem, 5vw, 4rem);
border-block-end: 1px solid var(--color-border);
}
.activity-kicker-row {
display: flex;
justify-content: space-between;
gap: var(--space-4);
}
.activity-card h3 {
max-width: 22ch;
margin-block: var(--space-4) var(--space-5);
font-size: clamp(2.15rem, 5vw, 4.75rem);
letter-spacing: -0.04em;
overflow-wrap: anywhere;
}
.status-list {
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
}
.status-badge {
display: inline-flex;
min-height: 2rem;
align-items: center;
padding: 0.25rem 0.65rem;
border: 1px solid var(--color-accent);
color: var(--color-accent);
font-size: 0.75rem;
font-weight: 800;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.status-badge-review {
background: var(--color-accent);
color: var(--color-on-accent);
}
.activity-body {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: 0 var(--space-4);
padding: clamp(1.5rem, 5vw, 4rem);
}
.activity-section {
grid-column: 3 / span 8;
padding-block: var(--space-6);
border-block-start: 1px solid var(--color-border);
}
.activity-section:first-child {
padding-block-start: 0;
border-block-start: 0;
}
.activity-section h4 {
margin-block-end: var(--space-4);
font-size: clamp(1.4rem, 3vw, 2rem);
}
.activity-section p,
.activity-section li {
max-width: 70ch;
overflow-wrap: anywhere;
}
.activity-section p:last-child,
.activity-section ul:last-child,
.activity-section ol:last-child {
margin-block-end: 0;
}
.activity-section ul,
.activity-section ol {
padding-inline-start: 1.35rem;
}
.activity-section li + li {
margin-block-start: var(--space-2);
}
.prompt-block,
.question-block {
padding-inline-start: var(--space-5);
border-inline-start: 5px solid var(--color-secondary);
font-size: clamp(1.05rem, 2vw, 1.2rem);
}
.question-block {
border-color: var(--color-accent);
font-family: var(--font-heading);
font-size: clamp(1.25rem, 2.8vw, 1.75rem);
line-height: 1.35;
}
.perspectives-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--space-4);
}
.perspective-card {
padding: var(--space-5);
border: 1px solid var(--color-border);
background: var(--color-muted);
}
.perspective-label {
margin-block-end: var(--space-3);
color: var(--color-secondary);
font-size: 0.75rem;
font-weight: 800;
letter-spacing: 0.12em;
text-transform: uppercase;
}
.perspective-card h5 {
margin-block: 0 var(--space-3);
color: var(--color-primary);
font-family: var(--font-heading);
font-size: 1.35rem;
line-height: 1.2;
}
.perspective-card h6 {
margin-block: var(--space-5) var(--space-2);
color: var(--color-foreground);
font-size: 0.78rem;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.tag-list {
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
padding: 0 !important;
list-style: none;
}
.tag-list li {
margin: 0 !important;
padding: 0.35rem 0.65rem;
border: 1px solid var(--color-border);
background: var(--color-muted);
font-size: 0.875rem;
}
.callout {
padding: var(--space-5);
border-inline-start: 5px solid var(--color-accent);
background: var(--color-muted);
}
.activity-footer {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: var(--space-4);
align-items: center;
padding: var(--space-5) clamp(1.5rem, 5vw, 4rem);
border-block-start: 1px solid var(--color-border);
background: var(--color-muted);
}
.activity-footer p {
grid-column: 1 / span 7;
margin: 0;
color: var(--color-muted-foreground);
font-size: 0.9rem;
}
.source-link {
display: inline-flex;
grid-column: 9 / -1;
min-height: 44px;
align-items: center;
justify-content: space-between;
gap: var(--space-3);
color: var(--color-primary);
font-weight: 800;
}
.site-footer {
padding-block: var(--space-6);
background: var(--color-dark-surface);
color: var(--color-on-dark-surface);
}
.footer-grid {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: var(--space-4);
align-items: center;
}
.footer-grid p {
display: flex;
grid-column: 1 / span 7;
flex-wrap: wrap;
gap: var(--space-2) var(--space-4);
margin: 0;
}
.footer-grid p span:first-child {
font-weight: 800;
}
.footer-grid nav {
display: flex;
grid-column: 9 / -1;
flex-wrap: wrap;
justify-content: flex-end;
gap: var(--space-2) var(--space-4);
}
.footer-grid a {
display: inline-flex;
min-height: 44px;
align-items: center;
color: var(--color-on-dark-surface);
}
@keyframes loading-line {
from { transform: scaleX(0.18); }
to { transform: scaleX(1); }
}
@media (max-width: 64rem) {
.hero-copy {
grid-column: 1 / span 7;
}
.draft-notice {
grid-column: 8 / -1;
}
.control-field,
.control-topic,
.primary-button {
grid-column: span 6;
}
.activity-section {
grid-column: 2 / span 10;
}
}
@media (max-width: 48rem) {
body {
background: var(--color-background);
}
.header-grid,
.interface-language {
align-items: stretch;
}
.header-grid {
grid-template-columns: 1fr;
}
.interface-language {
display: grid;
grid-template-columns: 1fr;
gap: var(--space-1);
}
.hero-grid,
.section-heading,
.controls,
.activity-body,
.activity-footer,
.footer-grid {
grid-template-columns: 1fr;
}
.hero-copy,
.draft-notice,
.section-number,
.section-heading > div,
.control-field,
.control-topic,
.primary-button,
.activity-section,
.activity-footer p,
.source-link,
.footer-grid p,
.footer-grid nav {
grid-column: 1;
}
.section-heading {
gap: var(--space-2);
}
.controls {
padding: var(--space-4);
}
.activity-kicker-row,
.perspectives-grid {
display: grid;
grid-template-columns: 1fr;
}
.activity-footer {
align-items: start;
}
.footer-grid nav {
justify-content: flex-start;
}
}
@media (max-width: 23.4375rem) {
.shell {
width: min(100% - 1.5rem, var(--content-width));
}
h1 {
font-size: clamp(2.35rem, 13vw, 3.25rem);
}
.brand-name {
font-size: 0.95rem;
}
.activity-header,
.activity-body,
.activity-footer {
padding-inline: var(--space-4);
}
}
@media (prefers-color-scheme: dark) {
:root {
--color-primary: #bfdbfe;
--color-on-primary: #0b1220;
--color-secondary: #93c5fd;
--color-on-secondary: #0b1220;
--color-accent: #fbbf24;
--color-on-accent: #1f2937;
--color-background: #0b1220;
--color-foreground: #f8fafc;
--color-card: #111c2e;
--color-card-foreground: #f8fafc;
--color-muted: #192842;
--color-muted-foreground: #cbd5e1;
--color-border: #64748b;
--color-ring: #fbbf24;
--color-error: #fda4af;
--color-on-error: #1f2937;
--color-dark-surface: #14233a;
--color-on-dark-surface: #f8fafc;
--shadow-card: 0 1rem 3rem rgb(0 0 0 / 0.3);
}
.site-header {
background: rgb(11 18 32 / 0.94);
}
.brand-mark {
background: #1e3a5f;
color: #ffffff;
}
.control-field select {
border-color: var(--color-border);
}
}
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
*,
*::before,
*::after {
scroll-behavior: auto !important;
transition-duration: 0.01ms !important;
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
}
}