Files
minabot/styles/design-system.css
syntaxbullet 084603bb6e Add new styles for home and landing pages
- Created home.css with comprehensive styles for the home page layout, including typography, buttons, and responsive design adjustments.
- Created landing.css to style the landing page, focusing on typography, layout, and responsive behavior for various screen sizes.
2026-09-04 11:50:24 +02:00

1285 lines
27 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@font-face {
font-family: "Instrument Serif";
src: url("../src/assets/fonts/InstrumentSerif-Regular.ttf") format("truetype");
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "Instrument Serif";
src: url("../src/assets/fonts/InstrumentSerif-Italic.ttf") format("truetype");
font-weight: 400;
font-style: italic;
font-display: swap;
}
.ds-root {
--ds-ink: #111;
--ds-secondary: #666;
--ds-rule: #dedede;
--ds-paper: #fff;
--ds-serif: "Instrument Serif", Georgia, serif;
position: relative;
margin: -8px;
min-height: 100vh;
color: var(--ds-ink);
background: var(--ds-paper);
font:
14px/1.5 -apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
-webkit-font-smoothing: antialiased;
}
.ds-root *,
.ds-root *::before,
.ds-root *::after {
box-sizing: border-box;
}
.ds-root :where(h1, h2, h3, h4, p, figure) {
margin: 0;
}
.ds-root :where(h1, h2) {
font-family: var(--ds-serif);
font-weight: 400;
line-height: 1.05;
}
.ds-root :where(h3, h4) {
font-weight: 400;
}
.ds-root a {
color: inherit;
text-decoration: none;
}
.ds-root a:hover {
text-decoration: underline;
text-underline-offset: 5px;
}
.ds-root button,
.ds-root input {
font: inherit;
border-radius: 0;
}
.ds-root button {
cursor: pointer;
}
.ds-root button:disabled {
cursor: not-allowed;
opacity: 0.38;
}
.ds-root :focus-visible {
outline: 2px solid var(--ds-ink);
outline-offset: 5px;
}
.ds-root section {
scroll-margin-top: 28px;
}
.ds-muted,
.ds-code,
.ds-footnote {
color: var(--ds-secondary);
}
.ds-code {
font:
11px/1.6 ui-monospace,
SFMono-Regular,
Consolas,
monospace;
}
.ds-eyebrow {
font-size: 10px;
letter-spacing: 0.13em;
font-weight: 500;
}
.ds-header {
max-width: 1280px;
margin: auto;
padding: 28px 48px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
border-bottom: 1px solid var(--ds-rule);
}
.ds-wordmark {
font-family: var(--ds-serif);
font-size: 35px;
line-height: 1;
letter-spacing: -1.2px;
}
.ds-header nav {
display: flex;
gap: 30px;
font-size: 12px;
}
.ds-edition {
color: var(--ds-secondary);
font-size: 9px;
letter-spacing: 0.12em;
}
.ds-main {
max-width: 1184px;
padding: 0 48px;
margin: auto;
}
.ds-intro {
display: flex;
justify-content: space-between;
align-items: flex-end;
gap: 32px;
padding: 85px 0 72px;
}
.ds-intro h1 {
font-size: clamp(64px, 6.6vw, 90px);
letter-spacing: -2.4px;
margin: 23px 0 26px;
}
.ds-intro h1 em {
font-weight: 400;
}
.ds-intro-copy {
color: var(--ds-secondary);
line-height: 1.7;
}
.ds-intro-note {
width: 220px;
padding-bottom: 4px;
font-size: 12px;
}
.ds-tiny-cross {
display: block;
font-size: 27px;
font-weight: 200;
margin-bottom: 20px;
}
.ds-intro-note p {
color: var(--ds-secondary);
line-height: 1.8;
margin-bottom: 29px;
}
.ds-intro-note a {
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 9px;
border-bottom: 1px solid var(--ds-ink);
}
.ds-section {
padding: 42px 0 56px;
border-top: 1px solid var(--ds-ink);
}
.ds-section-top {
display: flex;
justify-content: space-between;
align-items: flex-end;
gap: 20px;
margin-bottom: 32px;
}
.ds-section-top h2 {
font-size: 42px;
margin-top: 15px;
letter-spacing: -0.7px;
}
.ds-section-top > p {
font-size: 12px;
}
.ds-demo-note {
color: var(--ds-secondary);
font-size: 11px;
white-space: nowrap;
}
.ds-demo-note > span {
font-size: 20px;
vertical-align: -1px;
padding-right: 4px;
}
.ds-preview-toolbar {
display: flex;
justify-content: space-between;
border-bottom: 1px solid var(--ds-rule);
}
.ds-view-switch {
display: flex;
gap: 28px;
}
.ds-view-switch button {
background: transparent;
color: var(--ds-secondary);
border: 0;
border-bottom: 2px solid transparent;
padding: 13px 0;
font-size: 12px;
}
.ds-view-switch button[aria-pressed="true"] {
border-bottom-color: var(--ds-ink);
color: var(--ds-ink);
}
.ds-preview-toolbar > .ds-button {
font-size: 11px;
}
.ds-preview-heading {
display: flex;
justify-content: space-between;
align-items: flex-end;
gap: 20px;
padding: 32px 0 22px;
}
.ds-preview-heading .ds-eyebrow {
color: var(--ds-secondary);
font-size: 9px;
}
.ds-preview-heading h3 {
font-family: var(--ds-serif);
font-size: 30px;
margin-top: 8px;
}
.ds-preview-heading > p {
color: var(--ds-secondary);
font-size: 12px;
padding-bottom: 4px;
}
.ds-habit-row {
border-top: 1px solid var(--ds-rule);
padding: 19px 0;
}
.ds-habit-main {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
}
.ds-habit-main h4 {
font-family: var(--ds-serif);
font-size: 27px;
}
.ds-habit-main p {
color: var(--ds-secondary);
font-size: 11px;
margin-top: 3px;
}
.ds-habit-control {
display: flex;
align-items: center;
gap: 25px;
}
.ds-status {
color: var(--ds-secondary);
min-width: 67px;
font-size: 10px;
text-align: right;
}
.ds-button {
min-height: 42px;
border: 1px solid var(--ds-ink);
padding: 10px 19px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 22px;
font-size: 12px !important;
background: var(--ds-ink);
color: var(--ds-paper);
}
.ds-button:hover:not(:disabled) {
background: #333;
}
.ds-button--secondary {
background: transparent;
color: var(--ds-ink);
}
.ds-button--text {
background: transparent;
color: var(--ds-ink);
border-color: transparent;
padding-left: 0;
padding-right: 0;
}
.ds-button--secondary:hover:not(:disabled),
.ds-button--text:hover:not(:disabled) {
background: #f3f3f3;
}
.ds-counter {
display: flex;
align-items: center;
gap: 12px;
}
.ds-counter .ds-button {
width: 36px;
min-height: 40px;
font-size: 23px !important;
font-weight: 300;
padding: 0;
}
.ds-counter output {
min-width: 41px;
text-align: center;
font-variant-numeric: tabular-nums;
}
.ds-checkbox {
display: inline-flex;
align-items: center;
gap: 11px;
min-height: 36px;
cursor: pointer;
font-size: 12px;
}
.ds-checkbox input {
appearance: none;
margin: 0;
width: 17px;
height: 17px;
flex: 0 0 17px;
border: 1px solid #777;
background: #fff;
display: grid;
place-content: center;
cursor: pointer;
}
.ds-checkbox input:checked {
background: var(--ds-ink);
border-color: var(--ds-ink);
}
.ds-checkbox input:checked::after {
content: "";
width: 8px;
height: 4px;
border-left: 1px solid #fff;
border-bottom: 1px solid #fff;
transform: rotate(-45deg) translateY(-1px);
}
.ds-checkbox input:disabled {
opacity: 0.4;
cursor: not-allowed;
}
.ds-checkbox--icon {
padding: 10px;
}
.ds-checkbox--icon span {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
}
.ds-task-list {
display: flex;
gap: 28px;
margin-top: 13px;
}
.ds-task-count {
min-width: 149px;
text-align: center;
font-variant-numeric: tabular-nums;
}
.ds-footnote {
font-size: 11px;
line-height: 1.7;
margin-top: 18px !important;
}
.ds-habits > .ds-footnote {
border-top: 1px solid var(--ds-rule);
padding-top: 17px;
margin-top: 0 !important;
}
.ds-split-section {
display: grid;
grid-template-columns: 260px minmax(0, 1fr);
column-gap: 60px;
padding-top: 40px;
}
.ds-section-heading h2 {
font-size: 37px;
margin-top: 17px;
letter-spacing: -0.5px;
}
.ds-section-heading p {
color: var(--ds-secondary);
font-size: 12px;
line-height: 1.8;
margin-top: 15px;
}
.ds-spec-heading {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 16px;
margin-bottom: 23px;
}
.ds-spec-heading h3,
.ds-spec-heading label {
font-size: 13px;
}
.ds-spec-heading--spaced {
margin-top: 36px;
}
.ds-type-display {
display: block;
font-family: var(--ds-serif);
font-size: 55px;
line-height: 1.1;
letter-spacing: -0.6px;
}
.ds-type-specimen p,
.ds-body-specimen p {
font-size: 10px;
color: var(--ds-secondary);
margin-top: 16px;
}
.ds-body-specimen {
border-bottom: 1px solid var(--ds-rule);
padding: 26px 0;
}
.ds-body-specimen > span {
font-size: 16px;
}
.ds-body-specimen p {
margin-top: 6px;
}
.ds-palette {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 18px;
}
.ds-swatch {
height: 64px;
}
.ds-palette > div:last-child .ds-swatch {
border: 1px solid var(--ds-rule);
}
.ds-palette p {
font-size: 11px;
margin-top: 10px;
}
.ds-palette .ds-code {
display: block;
font-size: 9px;
margin-top: 3px;
}
.ds-spacing {
display: flex;
align-items: flex-end;
gap: 30px;
}
.ds-spacing > div {
display: grid;
gap: 10px;
}
.ds-spacing span {
height: 4px;
background: var(--ds-ink);
}
.ds-spacing code {
font-size: 10px;
color: var(--ds-secondary);
}
.ds-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 16px;
padding-bottom: 30px;
}
.ds-component-row {
border-top: 1px solid var(--ds-rule);
padding: 24px 0;
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
}
.ds-component-row h3 {
font-size: 14px;
margin-bottom: 3px;
}
.ds-example-form {
border-top: 1px solid var(--ds-rule);
padding-top: 26px;
}
.ds-input-row {
display: flex;
gap: 14px;
}
.ds-input-row input {
flex: 1;
min-width: 0;
border: 0;
border-bottom: 1px solid #888;
padding: 10px 0;
background: var(--ds-paper);
color: var(--ds-ink);
outline-offset: 4px;
}
.ds-input-row input::placeholder {
color: var(--ds-secondary);
}
.ds-shade-scale {
display: grid;
grid-template-columns: repeat(9, 1fr);
gap: 14px;
}
.ds-shade-scale > div {
display: grid;
gap: 10px;
}
.ds-shade-scale span {
aspect-ratio: 1;
max-height: 40px;
}
.ds-shade-scale small {
color: var(--ds-secondary);
font-size: 10px;
}
.ds-scale-caption {
display: flex;
justify-content: space-between;
font-size: 10px;
color: var(--ds-secondary);
margin-top: 16px;
}
.ds-neutral-states {
margin-top: 25px;
border-top: 1px solid var(--ds-rule);
padding-top: 25px;
display: flex;
gap: 36px;
}
.ds-neutral-states > div {
display: flex;
align-items: center;
gap: 13px;
}
.ds-neutral-states h4 {
font-size: 12px;
}
.ds-neutral-states p {
font-size: 10px;
color: var(--ds-secondary);
margin-top: 3px;
}
.ds-state-square {
flex: 0 0 22px;
width: 22px;
height: 22px;
}
.ds-state-square--future {
background: #eeeeee;
}
.ds-reference-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 28px;
}
.ds-reference-grid a {
display: block;
}
.ds-reference-grid img {
width: 100%;
height: auto;
display: block;
}
.ds-reference-grid figcaption {
display: flex;
justify-content: space-between;
gap: 12px;
font-size: 11px;
border-top: 1px solid var(--ds-rule);
padding-top: 15px;
margin-top: 20px;
}
.ds-footer {
border-top: 1px solid var(--ds-rule);
padding: 28px 0 40px;
display: flex;
justify-content: space-between;
align-items: center;
gap: 20px;
}
.ds-footer .ds-wordmark {
font-size: 26px;
}
.ds-footer > span:nth-child(2) {
font-family: var(--ds-serif);
font-style: italic;
font-size: 20px;
color: var(--ds-secondary);
}
.ds-footer a {
font-size: 11px;
}
.ds-detail-count {
display: flex;
justify-content: space-between;
align-items: center;
border-top: 1px solid var(--ds-rule);
padding: 20px 0 30px;
}
.ds-big-value {
font-family: var(--ds-serif);
font-size: 64px;
line-height: 1;
}
.ds-big-value small {
font-size: 24px;
margin-left: 20px;
}
.ds-chart-selection {
display: flex;
flex-wrap: wrap;
gap: 26px;
padding: 4px 0 22px;
}
.ds-calendar-scroll {
overflow-x: auto;
padding: 5px;
margin: -5px;
}
.ds-calendar-range-toolbar {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 8px 16px;
margin-bottom: 18px;
}
.ds-calendar-range-label {
font-size: 10px;
color: var(--ds-secondary);
}
.ds-month-views {
display: flex;
gap: 4px;
}
.ds-month-views button {
min-height: 32px;
min-width: 32px;
padding: 5px 7px;
color: var(--ds-secondary);
background: transparent;
border: 0;
border-bottom: 1px solid transparent;
font-size: 11px;
}
.ds-month-views button:hover {
color: var(--ds-ink);
background: #f3f3f3;
}
.ds-month-views button[aria-pressed="true"] {
color: var(--ds-ink);
border-bottom-color: var(--ds-ink);
}
.ds-calendar-inner {
min-width: 600px;
}
.ds-calendar-months {
display: grid;
grid-template-columns: repeat(26, 1fr);
margin-left: 38px;
font-size: 10px;
color: var(--ds-secondary);
height: 28px;
}
.ds-calendar-body {
display: flex;
gap: 10px;
}
.ds-calendar-weekdays {
display: grid;
grid-template-rows: repeat(7, 1fr);
width: 28px;
flex-shrink: 0;
font-size: 9px;
color: var(--ds-secondary);
align-items: center;
}
.ds-calendar-weekdays span:nth-child(1) {
grid-row: 2;
}
.ds-calendar-weekdays span:nth-child(2) {
grid-row: 4;
}
.ds-calendar-weekdays span:nth-child(3) {
grid-row: 6;
}
.ds-calendar-grid {
display: grid;
grid-template-rows: repeat(7, 1fr);
grid-auto-flow: column;
gap: 6px;
flex: 1;
}
.ds-day {
padding: 0;
aspect-ratio: 1;
border: 1px solid transparent;
min-width: 0;
}
/* Keep a full-size date target, but reserve filled squares for tracked days. */
.ds-day--not-due,
.ds-legend-swatch--not-due,
.ds-state-square--not-due {
position: relative;
background: transparent;
}
.ds-day--not-due::after,
.ds-legend-swatch--not-due::after,
.ds-state-square--not-due::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
width: 3px;
height: 3px;
border-radius: 50%;
background: #888;
transform: translate(-50%, -50%);
pointer-events: none;
}
.ds-day--not-due:hover {
box-shadow: inset 0 0 0 1px var(--ds-rule);
}
.ds-day[aria-pressed="true"] {
outline: 1px solid var(--ds-ink);
outline-offset: 2px;
}
.ds-day:focus-visible {
outline: 2px solid var(--ds-ink);
outline-offset: 2px;
}
.ds-calendar-caption {
display: flex;
justify-content: space-between;
gap: 16px;
font-size: 10px;
margin: 17px 0 23px;
}
.ds-calendar-legend {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 12px 20px;
margin-top: 18px;
color: var(--ds-secondary);
font-size: 10px;
}
.ds-legend-scale,
.ds-legend-neutral,
.ds-legend-swatches {
display: inline-flex;
align-items: center;
}
.ds-legend-scale,
.ds-legend-neutral {
gap: 8px;
}
.ds-legend-swatches {
gap: 3px;
}
.ds-legend-swatch {
display: block;
width: 11px;
height: 11px;
flex: 0 0 11px;
}
.ds-date-inspector {
border-top: 1px solid var(--ds-rule);
border-bottom: 1px solid var(--ds-rule);
padding: 16px 0;
display: flex;
justify-content: space-between;
gap: 16px;
font-size: 12px;
}
.ds-skip-link {
position: absolute;
top: 0;
left: 24px;
padding: 10px;
background: white;
transform: translateY(-110%);
z-index: 2;
}
.ds-skip-link:focus {
transform: translateY(0);
}
@media (max-width: 900px) {
.ds-header {
padding-inline: 32px;
}
.ds-main {
padding-inline: 32px;
}
.ds-split-section {
grid-template-columns: 210px minmax(0, 1fr);
gap: 30px;
}
.ds-section-heading h2 {
font-size: 32px;
}
.ds-neutral-states {
flex-direction: column;
gap: 20px;
}
.ds-spacing {
gap: 22px;
}
.ds-spec-heading {
flex-wrap: wrap;
gap: 5px;
}
.ds-intro-note {
width: 185px;
}
.ds-edition {
display: none;
}
}
@media (max-width: 640px) {
.ds-header {
padding: 23px 22px;
gap: 18px;
}
.ds-wordmark {
font-size: 30px;
}
.ds-header nav {
gap: 16px;
font-size: 10px;
}
.ds-main {
padding-inline: 22px;
}
.ds-intro {
padding: 50px 0 44px;
}
.ds-intro h1 {
font-size: 63px;
letter-spacing: -1.4px;
}
.ds-intro-copy {
font-size: 12px;
}
.ds-intro-note {
display: none;
}
.ds-section {
padding: 30px 0 36px;
}
.ds-section-top {
flex-direction: column;
align-items: flex-start;
gap: 16px;
margin-bottom: 24px;
}
.ds-section-top h2 {
font-size: 37px;
}
.ds-split-section {
grid-template-columns: minmax(0, 1fr);
gap: 30px;
}
.ds-section-heading h2 {
font-size: 37px;
}
.ds-section-heading p br {
display: none;
}
.ds-view-switch {
gap: 18px;
}
.ds-view-switch button {
font-size: 11px;
}
.ds-preview-toolbar > .ds-button {
font-size: 10px !important;
gap: 5px;
}
.ds-preview-heading {
flex-direction: column;
align-items: flex-start;
gap: 10px;
padding-top: 25px;
}
.ds-preview-heading h3 {
font-size: 28px;
}
.ds-habit-main h4 {
font-size: 25px;
}
.ds-habit-main p {
font-size: 10px;
}
.ds-habit-control {
flex-direction: column;
gap: 0;
align-items: flex-end;
}
.ds-status {
font-size: 9px;
}
.ds-counter {
gap: 2px;
}
.ds-counter .ds-button {
width: 32px;
}
.ds-task-count {
min-width: 106px;
text-align: right;
min-height: 36px;
}
.ds-task-list {
flex-wrap: wrap;
gap: 3px 20px;
}
.ds-checkbox {
font-size: 11px;
}
.ds-palette {
gap: 13px;
}
.ds-swatch {
height: 58px;
}
.ds-type-display {
font-size: 50px;
}
.ds-shade-scale {
gap: 8px;
}
.ds-scale-caption {
font-size: 9px;
}
.ds-reference-grid {
grid-template-columns: 1fr;
gap: 35px;
}
.ds-footer > span:nth-child(2) {
display: none;
}
.ds-chart-selection {
gap: 10px 18px;
}
.ds-calendar-caption,
.ds-date-inspector {
flex-direction: column;
gap: 8px;
}
.ds-big-value {
font-size: 53px;
}
.ds-big-value small {
font-size: 20px;
margin-left: 10px;
}
.ds-actions {
gap: 12px;
}
.ds-input-row {
gap: 10px;
}
.ds-input-row .ds-button {
padding-inline: 14px;
}
.ds-root {
font-size: 13px;
}
}
@media (prefers-reduced-motion: no-preference) {
.ds-root :where(button, a, input) {
transition:
background-color 120ms ease,
color 120ms ease;
}
}
/* Habit charts share an open two-column grid, not card containers. */
.ds-habit-chart-grid {
font-size: 14px;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 38px 44px;
align-items: start;
}
.ds-habit-chart {
min-width: 0;
border-top: 1px solid var(--ds-rule);
padding-top: 20px;
}
.ds-habit-chart:has(.ds-calendar[data-months="12"]) {
grid-column: 1 / -1;
}
.ds-habit-chart-heading {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
}
.ds-habit-chart-heading > div {
min-width: 0;
}
.ds-habit-chart-heading h4 {
overflow-wrap: anywhere;
font-family: var(--ds-serif);
font-size: 29px;
display: flex;
align-items: center;
gap: 10px;
}
.ds-habit-chart-heading h4 > span {
width: 7px;
height: 7px;
flex-shrink: 0;
}
.ds-habit-chart-heading p {
color: var(--ds-secondary);
font-size: 10px;
margin-top: 4px;
}
.ds-habit-chart-heading .ds-counter {
gap: 4px;
}
.ds-habit-chart-heading .ds-counter .ds-button {
width: 28px;
}
.ds-habit-chart-progress {
display: flex;
justify-content: space-between;
color: var(--ds-secondary);
font-size: 11px;
margin: 23px 0 20px !important;
}
.ds-habit-chart-grid-note {
grid-column: 1 / -1;
margin-top: -12px !important;
}
.ds-calendar--compact .ds-calendar-inner {
min-width: 380px;
}
.ds-calendar--compact .ds-calendar-grid {
gap: 5px;
}
.ds-calendar--compact .ds-date-inspector {
flex-direction: column;
gap: 5px;
font-size: 10px;
border-bottom: 0;
padding-bottom: 0;
}
.ds-calendar--compact .ds-calendar-caption {
font-size: 9px;
margin-bottom: 15px;
}
.ds-task-accordion {
margin-top: 18px;
border-top: 1px solid var(--ds-rule);
border-bottom: 1px solid var(--ds-rule);
}
.ds-task-accordion summary {
cursor: pointer;
list-style: none;
display: flex;
gap: 16px;
align-items: center;
min-height: 46px;
font-size: 12px;
}
.ds-task-accordion summary::-webkit-details-marker {
display: none;
}
.ds-task-accordion summary > span {
margin-left: auto;
color: var(--ds-secondary);
font-size: 11px;
}
.ds-task-accordion summary::after {
content: "+";
font-size: 19px;
width: 16px;
text-align: center;
}
.ds-task-accordion[open] summary::after {
content: "";
}
.ds-task-accordion-content {
display: grid;
padding: 0 0 14px;
}
.ds-habit-color-key {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.ds-habit-color-key > span {
display: flex;
align-items: center;
gap: 9px;
font-size: 11px;
text-transform: capitalize;
}
.ds-habit-color-key i {
width: 10px;
height: 10px;
}
@media (max-width: 760px) {
.ds-habit-chart-grid {
grid-template-columns: minmax(0, 1fr);
gap: 32px;
}
.ds-calendar--compact .ds-calendar-inner {
max-width: 520px;
}
.ds-habit-chart-heading .ds-counter {
gap: 8px;
}
}
/* A full year gets a full row; fit every week instead of clipping or scrolling. */
.ds-calendar[data-months="12"] .ds-calendar-inner {
width: 100%;
max-width: none;
}
.ds-calendar[data-months="12"] .ds-calendar-grid {
min-width: 0;
gap: clamp(2px, 0.4vw, 6px);
}
/* Small-text scale: 12px minimum, 14px for supporting copy. */
.ds-edition,
.ds-preview-heading .ds-eyebrow,
.ds-palette .ds-code,
.ds-calendar-weekdays,
.ds-calendar--compact .ds-calendar-caption {
font-size: 12px;
}
.ds-code,
.ds-demo-note,
.ds-habit-main p,
.ds-footnote,
.ds-palette p,
.ds-reference-grid figcaption,
.ds-footer a,
.ds-month-views button,
.ds-habit-chart-progress,
.ds-task-accordion summary > span,
.ds-habit-color-key > span,
.ds-eyebrow,
.ds-status,
.ds-type-specimen p,
.ds-body-specimen p,
.ds-spacing code,
.ds-shade-scale small,
.ds-scale-caption,
.ds-neutral-states p,
.ds-calendar-range-label,
.ds-calendar-months,
.ds-calendar-caption,
.ds-calendar-legend,
.ds-habit-chart-heading p,
.ds-calendar--compact .ds-date-inspector {
font-size: 14px;
}
.ds-legend-scale { flex-wrap: wrap; }
/* Editing patterns use the same open layout, rules, and neutral controls. */
.ds-color-picker { border: 0; border-top: 1px solid var(--ds-rule); padding: 20px 0 0; margin: 26px 0; min-width: 0; }
.ds-color-picker legend { padding: 0 12px 0 0; font-size: 14px; }
.ds-color-picker > .ds-footnote { margin-top: 0 !important; }
.ds-color-palettes { display: flex; flex-wrap: wrap; gap: 20px 28px; margin: 20px 0; }
.ds-color-palette > span { font-size: 12px; color: var(--ds-secondary); }
.ds-color-swatches { display: flex; gap: 4px; margin-top: 8px; }
.ds-color-swatches button { width: 38px; min-height: 44px; padding: 4px; border: 1px solid transparent; background: transparent; }
.ds-color-swatches button[aria-pressed="true"] { border-color: var(--ds-ink); }
.ds-color-swatches button > span { display: grid; place-content: center; height: 28px; width: 28px; color: white; font-size: 16px; }
.ds-custom-color { display: flex; gap: 16px; align-items: start; }
.ds-custom-color .ds-field { margin-bottom: 0; }
.ds-custom-color .ds-field:last-child { width: 180px; }
.ds-custom-color input[type="color"] { width: 80px; height: 44px; padding: 5px; cursor: pointer; }
.ds-color-live-preview { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin-top: 22px; font-size: 12px; }
.ds-color-preview-shades { display: flex; gap: 4px; }
.ds-color-preview-shades > span { width: 18px; height: 18px; border: 1px solid #dedede; }
.ds-edit-layout {
display: grid;
grid-template-columns: 280px minmax(0, 1fr);
gap: 72px;
padding-top: 36px;
}
.ds-edit-context, .ds-edit-content { min-width: 0; }
.ds-edit-context h3 {
font-family: var(--ds-serif);
font-size: 36px;
line-height: 1.12;
margin: 16px 0;
}
.ds-edit-context > p { color: var(--ds-secondary); line-height: 1.8; }
.ds-edit-context > .ds-field { margin-top: 30px; }
.ds-edit-meta { display: flex; align-items: center; gap: 10px; margin-top: 24px; overflow-wrap: anywhere; }
.ds-habit-dot { width: 8px; height: 8px; flex: 0 0 8px; }
.ds-field { display: grid; min-width: 0; gap: 8px; margin-bottom: 22px; }
.ds-field label, .ds-weekday-field legend { font-size: 14px; }
.ds-field :is(input, select) {
width: 100%;
min-width: 0;
min-height: 44px;
border: 1px solid #999;
padding: 10px 12px;
font: inherit;
border-radius: 0;
background: var(--ds-paper);
color: var(--ds-ink);
}
.ds-field input[readonly] { border-color: var(--ds-rule); color: var(--ds-secondary); }
.ds-field small { font-size: 12px; color: var(--ds-secondary); line-height: 1.7; }
.ds-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.ds-form-section { border-top: 1px solid var(--ds-rule); padding-top: 24px; margin-top: 24px; }
.ds-edit-content .ds-checkbox { font-size: 14px; }
.ds-weekday-field, .ds-task-editor-fieldset { border: 0; padding: 0; margin: 0 0 20px; min-width: 0; }
.ds-weekdays { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.ds-weekdays button { min-height: 44px; min-width: 44px; padding: 8px; border: 1px solid var(--ds-rule); background: white; color: var(--ds-secondary); }
.ds-weekdays button[aria-pressed="true"] { color: white; background: var(--ds-ink); border-color: var(--ds-ink); }
.ds-form-actions { display: flex; flex-wrap: wrap; gap: 24px; align-items: center; }
.ds-form-feedback { min-height: 24px; margin: 20px 0 12px !important; color: var(--ds-secondary); font-size: 14px; overflow-wrap: anywhere; }
.ds-form-feedback[role="alert"] { border-left: 2px solid var(--ds-ink); padding-left: 12px; color: var(--ds-ink); }
.ds-save-notice { margin-bottom: 0 !important; }
.ds-edit-task { border-top: 1px solid var(--ds-rule); padding: 16px 0 10px; }
.ds-edit-task .ds-spec-heading { margin-bottom: 16px; }
.ds-empty-state { padding: 24px 0; color: var(--ds-secondary); }
.ds-history-requirement { display: flex; justify-content: space-between; gap: 16px; border-block: 1px solid var(--ds-rule); padding: 18px 0; margin-bottom: 24px; }
.ds-history-requirement > span { color: var(--ds-secondary); }
.ds-history-requirement strong { font-weight: 500; }
.ds-backfill-tasks { display: grid; gap: 8px; }
.ds-correction-summary { display: flex; justify-content: space-between; gap: 16px; margin-top: 22px !important; font-variant-numeric: tabular-nums; }
.ds-correction-summary span { color: var(--ds-secondary); }
.ds-backfill-calendar { border-top: 1px solid var(--ds-rule); margin-top: 32px; padding-top: 24px; }
.ds-correction-log { margin-top: 28px; border-top: 1px solid var(--ds-rule); padding-top: 24px; }
.ds-correction-log ol { list-style: none; margin: 0; padding: 0; }
.ds-correction-log li { display: grid; grid-template-columns: 130px minmax(0, 1fr) auto; gap: 16px; border-bottom: 1px solid var(--ds-rule); padding: 16px 0; font-size: 14px; overflow-wrap: anywhere; }
.ds-correction-log time { color: var(--ds-secondary); }
#editing .ds-preview-toolbar { flex-wrap: wrap; gap: 0 16px; }
#editing .ds-view-switch { flex-wrap: wrap; gap: 0 24px; }
@media (max-width: 900px) {
.ds-edit-layout { grid-template-columns: 220px minmax(0, 1fr); gap: 32px; }
}
@media (max-width: 640px) {
.ds-edit-layout { grid-template-columns: minmax(0, 1fr); gap: 30px; }
.ds-edit-context h3 { font-size: 32px; }
.ds-form-grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
.ds-history-requirement { flex-wrap: wrap; }
.ds-correction-log li { grid-template-columns: minmax(0, 1fr); gap: 5px; }
#editing .ds-view-switch { gap: 0 18px; }
}
@media (max-width: 640px) {
.ds-header nav,
.ds-preview-toolbar > .ds-button,
.ds-view-switch button,
.ds-checkbox,
.ds-habit-main p,
.ds-status,
.ds-scale-caption {
font-size: 14px !important;
}
.ds-header,
.ds-preview-toolbar { flex-wrap: wrap; }
}