diff --git a/docs/specs/reader-dashboard-final.html b/docs/specs/reader-dashboard-final.html index 18554566..c5c03749 100644 --- a/docs/specs/reader-dashboard-final.html +++ b/docs/specs/reader-dashboard-final.html @@ -81,7 +81,7 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 .HSTAT:last-child{border-right:none;padding-right:0} .HSTAT a{text-decoration:none;display:block} .HSTAT-NUM{font-size:14px;font-weight:900;color:#002850;line-height:1;display:block} -.HSTAT-LABEL{font-size:5.5px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:#B8B4AE;display:block;margin-top:2px} +.HSTAT-LABEL{font-size:5.5px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:#706C68;display:block;margin-top:2px} /* ── Person portrait cards — B.3 avatar, no border line, mint pill ─── */ .PERSON-GRID{display:grid;grid-template-columns:repeat(4,1fr);gap:6px} @@ -107,7 +107,7 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 padding:1px 6px;border-radius:10px } .PERSONS-FOOTER{text-align:right;margin-top:3px} -.PERSONS-ALL{font-size:6.5px;color:#002850;font-weight:600;text-decoration:none;opacity:.55} +.PERSONS-ALL{font-size:6.5px;color:#4A6E8A;font-weight:600;text-decoration:none} /* ── Two-column 1:1 — B.1 ─── */ .CONTENT-ROW{display:grid;grid-template-columns:1fr 1fr;gap:6px} @@ -126,14 +126,14 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 .DOC-TITLE{font-family:Georgia,serif;font-size:7.5px;color:#002850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .DOC-SENDER{font-size:6px;color:#888;margin-top:1px} .DOC-SENDER a{color:#002850;text-decoration:none;opacity:.7} -.DOC-DATE{font-size:6px;color:#C8C4BE;white-space:nowrap;flex-shrink:0} +.DOC-DATE{font-size:6px;color:#706C68;white-space:nowrap;flex-shrink:0} /* ── Story rows — B.1: clean 2-line excerpt ─── */ .STORY-ROW{padding:7px 10px;border-bottom:1px solid #F0EDE6} .STORY-ROW:last-child{border-bottom:none} .STORY-TITLE{font-family:Georgia,serif;font-size:8px;color:#002850;font-style:italic;margin-bottom:3px;line-height:1.3} .STORY-EXCERPT{font-size:6.5px;color:#888;line-height:1.5;margin-bottom:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} -.STORY-META{font-size:6px;color:#B8B4AE} +.STORY-META{font-size:6px;color:#706C68} /* ── Drafts card ─── */ .DRAFTS-CARD{background:#fff;border:1px solid #E0DDD5;border-left:3px solid #A6DAD8;border-radius:3px;overflow:hidden} @@ -153,8 +153,19 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 Compose alongside light structural classes, e.g. class="CARD DK-CARD" Real tokens live in layout.css / Tailwind dark: variants — these are approximations. Mapping: canvas #0F1219 · surface #161C27 · border rgba(255,255,255,.08) - text #D0CCC4 · muted #3A4568 · dim #262E48 - mint #A6DAD8 (unchanged) · mint-pill rgba(166,218,216,.15) + text #D0CCC4 · muted #7080A8 · labels #6070A0 · dim #5A6888 + mint #A6DAD8 (unchanged) · mint-pill rgba(166,218,216,.14) + DK- → Tailwind dark: equivalents (implementation guide) + DK-MAIN → dark:bg-canvas + DK-HEADER-BAR → dark:bg-surface dark:border-white/8 + DK-HSTAT-LABEL → dark:text-ink-4 (#6070A0 — WCAG AA ≥ 4.5:1 on #161C27) + DK-CARD → dark:bg-surface dark:border-white/8 + DK-CARD-HEAD h3 → dark:text-ink-4 (#6070A0) + DK-DOC-SENDER → dark:text-ink-3 (#7080A8 — WCAG AA ≥ 4.5:1 on #161C27) + DK-DOC-DATE → dark:text-ink-5 (#5A6888 — WCAG AA ≥ 4.5:1 on #161C27) + DK-STORY-EXCERPT → dark:text-ink-3 (#7080A8) + DK-STORY-META → dark:text-ink-5 (#5A6888) + DK-DRAFT-META → dark:text-ink-3 (#7080A8) ══════════════════════════════════ */ .wf-dark .wf-bar{background:#1C1E26;border-bottom-color:#252830} .wf-dark .urlbar{background:#252830} @@ -167,31 +178,31 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 .DK-DIVIDER{background:rgba(255,255,255,.08) !important} .DK-HSTAT{border-right-color:rgba(255,255,255,.06) !important} .DK-HSTAT-NUM{color:#E8E4DC !important} -.DK-HSTAT-LABEL{color:#323850 !important} +.DK-HSTAT-LABEL{color:#6070A0 !important} .DK-PCARD{background:#161C27 !important;border-color:rgba(255,255,255,.08) !important} .DK-PCARD-NAME{color:#C0BDB6 !important} .DK-PCARD-COUNT{color:#A6DAD8 !important;background:rgba(166,218,216,.14) !important} .DK-PERSONS-ALL{color:#A6DAD8 !important;opacity:.65 !important} .DK-CARD{background:#161C27 !important;border-color:rgba(255,255,255,.08) !important} .DK-CARD-HEAD{border-bottom-color:rgba(255,255,255,.06) !important} -.DK-CARD-HEAD h3{color:#323850 !important} +.DK-CARD-HEAD h3{color:#6070A0 !important} .DK-CARD-HEAD a{color:#A6DAD8 !important;opacity:.5 !important} .DK-DOC-ROW{border-bottom-color:rgba(255,255,255,.04) !important} .DK-DOC-THUMB{background:#1E2638 !important;border-color:rgba(255,255,255,.07) !important} .DK-DOC-TITLE{color:#C0BDB6 !important} -.DK-DOC-SENDER{color:#3A4568 !important} +.DK-DOC-SENDER{color:#7080A8 !important} .DK-DOC-SENDER a{color:#A6DAD8 !important;opacity:.6 !important} -.DK-DOC-DATE{color:#262E48 !important} +.DK-DOC-DATE{color:#5A6888 !important} .DK-STORY-ROW{border-bottom-color:rgba(255,255,255,.04) !important} .DK-STORY-TITLE{color:#C0BDB6 !important} -.DK-STORY-EXCERPT{color:#3A4568 !important} -.DK-STORY-META{color:#262E48 !important} +.DK-STORY-EXCERPT{color:#7080A8 !important} +.DK-STORY-META{color:#5A6888 !important} .DK-DRAFTS-CARD{background:#161C27 !important;border-color:rgba(255,255,255,.08) !important} .DK-DRAFTS-HEAD{border-bottom-color:rgba(255,255,255,.06) !important} -.DK-DRAFTS-HEAD h3{color:#323850 !important} +.DK-DRAFTS-HEAD h3{color:#6070A0 !important} .DK-DRAFT-ROW{border-bottom-color:rgba(255,255,255,.04) !important} .DK-DRAFT-TITLE{color:#C0BDB6 !important} -.DK-DRAFT-META{color:#3A4568 !important} +.DK-DRAFT-META{color:#7080A8 !important} /* ══════════════════════════════════ MOBILE — phone chrome + stacked layout @@ -233,8 +244,8 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 .M-HSTAT a{text-decoration:none;display:block} .M-HSTAT-NUM{font-size:11px;font-weight:900;color:#002850;line-height:1;display:block} .M-HSTAT-NUM.dk{color:#E8E4DC} -.M-HSTAT-LBL{font-size:5px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:#B8B4AE;display:block;margin-top:1px} -.M-HSTAT-LBL.dk{color:#323850} +.M-HSTAT-LBL{font-size:5px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:#706C68;display:block;margin-top:1px} +.M-HSTAT-LBL.dk{color:#6070A0} /* Mobile drafts */ .M-DCARD{background:#fff;border:1px solid #E0DDD5;border-left:3px solid #A6DAD8;border-radius:3px;overflow:hidden} @@ -242,14 +253,14 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 .M-DCARD-HEAD{padding:5px 9px;border-bottom:1px solid #F0EDE6;display:flex;align-items:center} .M-DCARD-HEAD.dk{border-bottom-color:rgba(255,255,255,.06)} .M-DCARD-HEAD h3{font-size:6px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#999} -.M-DCARD-HEAD.dk h3{color:#323850} +.M-DCARD-HEAD.dk h3{color:#6070A0} .M-DRAFT-ROW{display:flex;align-items:center;justify-content:space-between;padding:5px 9px;border-bottom:1px solid #F0EDE6} .M-DRAFT-ROW:last-child{border-bottom:none} .M-DRAFT-ROW.dk{border-bottom-color:rgba(255,255,255,.04)} .M-DRAFT-TITLE{font-family:Georgia,serif;font-size:7px;color:#002850} .M-DRAFT-TITLE.dk{color:#C0BDB6} .M-DRAFT-META{font-size:5.5px;color:#AAA;margin-top:1px} -.M-DRAFT-META.dk{color:#3A4568} +.M-DRAFT-META.dk{color:#7080A8} /* Mobile 2×2 person grid */ .M-PGRID{display:grid;grid-template-columns:1fr 1fr;gap:5px} @@ -260,7 +271,7 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 .M-PNAME.dk{color:#C0BDB6} .M-PCOUNT{font-size:5px;font-weight:800;color:#002850;background:#D4F0EE;padding:1px 5px;border-radius:10px} .M-PCOUNT.dk{color:#A6DAD8;background:rgba(166,218,216,.14)} -.M-PALL{font-size:5.5px;color:#002850;opacity:.55;text-decoration:none;display:block;text-align:right;margin-top:1px} +.M-PALL{font-size:5.5px;color:#4A6E8A;text-decoration:none;display:block;text-align:right;margin-top:1px} .M-PALL.dk{color:#A6DAD8;opacity:.65} /* Mobile single-column cards */ @@ -269,7 +280,7 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 .M-CARD-HEAD{display:flex;align-items:center;justify-content:space-between;padding:5px 9px;border-bottom:1px solid #E0DDD5} .M-CARD-HEAD.dk{border-bottom-color:rgba(255,255,255,.06)} .M-CARD-HEAD h3{font-size:6px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#999} -.M-CARD-HEAD.dk h3{color:#323850} +.M-CARD-HEAD.dk h3{color:#6070A0} .M-CARD-HEAD a{font-size:6px;color:#002850;opacity:.4;text-decoration:none;font-weight:600} .M-CARD-HEAD.dk a{color:#A6DAD8;opacity:.5} .M-DROW{display:flex;align-items:center;gap:6px;padding:4px 9px;border-bottom:1px solid #F0EDE6} @@ -279,23 +290,35 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 .M-DTITLE{font-family:Georgia,serif;font-size:7px;color:#002850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .M-DTITLE.dk{color:#C0BDB6} .M-DSENDER{font-size:5.5px;color:#888} -.M-DSENDER.dk{color:#3A4568} -.M-DDATE{font-size:5.5px;color:#C8C4BE;white-space:nowrap;flex-shrink:0} -.M-DDATE.dk{color:#262E48} +.M-DSENDER.dk{color:#7080A8} +.M-DDATE{font-size:5.5px;color:#706C68;white-space:nowrap;flex-shrink:0} +.M-DDATE.dk{color:#5A6888} .M-SROW{padding:6px 9px;border-bottom:1px solid #F0EDE6} .M-SROW:last-child{border-bottom:none} .M-SROW.dk{border-bottom-color:rgba(255,255,255,.04)} .M-STITLE{font-family:Georgia,serif;font-size:7.5px;color:#002850;font-style:italic;margin-bottom:2px;line-height:1.3} .M-STITLE.dk{color:#C0BDB6} .M-SEXCERPT{font-size:6px;color:#888;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:2px} -.M-SEXCERPT.dk{color:#3A4568} -.M-SMETA{font-size:5.5px;color:#B8B4AE} -.M-SMETA.dk{color:#262E48} +.M-SEXCERPT.dk{color:#7080A8} +.M-SMETA{font-size:5.5px;color:#706C68} +.M-SMETA.dk{color:#5A6888} /* Phone layout helper */ .phones-row{display:flex;gap:20px;align-items:start;flex-wrap:wrap} .phone-label{font-size:8px;font-weight:800;color:#888;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;display:flex;align-items:center;gap:6px} .phone-col{display:flex;flex-direction:column} + +/* ── impl-ref table ─── */ +.impl-ref-section{margin-top:64px;border-top:2px dashed #C8C4BE;padding-top:56px} +.impl-ref-section .sec-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:1.2px;color:#888;margin-bottom:20px;display:flex;align-items:center;gap:10px} +.impl-ref-section .sec-h::after{content:'';flex:1;height:1px;background:#D8D4CE} +.impl-ref-table{width:100%;border-collapse:collapse;font-size:11px;margin-bottom:24px} +.impl-ref-table th{text-align:left;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:#888;padding:6px 12px 6px 0;border-bottom:2px solid #E0DDD5} +.impl-ref-table td{padding:7px 12px 7px 0;border-bottom:1px solid #F0EDE6;vertical-align:top;color:#1A1A1A} +.impl-ref-table tr:last-child td{border-bottom:none} +.impl-ref-table td:first-child{font-weight:700;color:#002850;white-space:nowrap;width:180px} +.impl-ref-table td code{font-family:monospace;font-size:10px;background:#F0EDE6;padding:1px 4px;border-radius:3px;white-space:nowrap} +.impl-ref-table td .note-cell{font-size:10px;color:#888;font-style:italic}
@@ -372,9 +395,9 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1 @@ -402,13 +425,13 @@ body{font-family:'Helvetica Neue',Arial,sans-serif;background:#ECEAE4;color:#1A1/documents/persons/geschichten/persons/documents/geschichten/persons/{id} (Instanz-spezifisch)#D0CCC4 / #C0BDB6 (warm, kein reines Weiß)#323850#262E48#7080A8 — Absender, Excerpts, Entwurfs-Meta (≥ 4.5:1)#6070A0 — HSTAT-Label, Card-Head h3 (≥ 4.5:1)#5A6888 — Datum-Felder (≥ 4.5:1)#A6DAD8 — unverändert, auch im Dark Modergba(166,218,216,.14)dashboard.greeting.morning — „Guten Morgen" (vor 12:00)dashboard.greeting.afternoon — „Guten Tag" (12:00–18:00)dashboard.greeting.evening — „Guten Abend" (ab 18:00)dashboard.welcome — „Herzlich willkommen, {name}." (parametrisch)dashboard.persons.viewAll — „Alle {count} Personen →" (parametrisch)dashboard.recentlyUpdated — „Zuletzt aktualisiert"dashboard.myDrafts — „Meine Entwürfe"dashboard.stat.documents — „Dokumente" / mobil: „Dok."dashboard.stat.persons — „Personen" / mobil: „Pers."dashboard.stat.stories — „Geschichten" / mobil: „Gesch."Exakte Tailwind CSS 4-Klassen und Pixel-Werte für jeden UI-Bereich. Diese Werte gelten für die Implementierung, nicht die skalierten Mockup-Werte.
+ +| Region | +Tailwind-Klassen | +Hinweise | +
|---|---|---|
| Seiten-Canvas | +bg-canvas w-full |
+ Vollbreite Viewport; Farbe: --palette-sand / bg-canvas |
+
| Inhalts-Wrapper | +max-w-7xl mx-auto px-8 py-8 |
+ 1280 px max-width, 32 px padding allseitig | +
| Header-Balken | +bg-white border border-line rounded-sm px-4 py-3 flex items-center gap-4 |
+ Explizit bg-white, nicht bg-surface — weißer Hintergrund ist intentionell (B.1-Entscheidung) |
+
| Header: Gruß-Zeit | +text-[6px] font-bold uppercase tracking-[.8px] text-[#C8B8A0] |
+ Warm-beige, kein Design-Token — kandidiert für --color-greeting-time |
+
| Header: Begrüßungsname | +font-serif text-xl text-brand-navy |
+ Georgia/Tinos; text-xl (20 px real) |
+
| Header: Trennlinie | +w-px self-stretch bg-line flex-shrink-0 |
+ 1 px vertikal; --palette-line = #E8E4DF |
+
| Stat-Zahl | +text-2xl font-black text-brand-navy leading-none block |
+ Numerischer Wert; Block damit Label darunter sitzt | +
| Stat-Label | +text-[11px] font-bold uppercase tracking-[.8px] text-ink-3 block mt-0.5 |
+ Licht: #706C68 (WCAG AA); Tailwind-Token text-ink-3 TBD |
+
| Personen-Grid | +grid grid-cols-4 gap-1.5 |
+ Mobile: grid-cols-2 bei sm: (640 px) |
+
| Personen-Kachel | +bg-surface border border-line rounded-sm p-2.5 flex flex-col items-center text-center gap-1.5 no-underline |
+ bg-surface = --palette-surface; kein Bottom-Accent |
+
| Personen-Avatar | +w-9 h-9 rounded-full flex items-center justify-center font-black text-white text-[9px] shadow-sm flex-shrink-0 |
+ 34 px real ≈ w-9 (36 px) — nächster Tailwind-Step; Avatar-Farbe per Person-Eigenfarbe |
+
| Mint-Pill Badge | +text-[11px] font-bold text-brand-navy bg-[#D4F0EE] px-1.5 py-px rounded-full |
+ Token-Kandidat: --color-mint-pill / bg-mint-soft |
+
| „Alle N Personen →" | +text-xs font-semibold text-[#4A6E8A] no-underline text-right block mt-1 |
+ Direkte Farbe (kein opacity-Trick) — WCAG AA auf bg-canvas |
+
| Content-Card | +bg-surface border border-line rounded-sm overflow-hidden flex flex-col |
+ Gleiche Card-Sprache wie restliche App | +
| Card-Kopfzeile | +flex items-center justify-between px-3 py-1.5 border-b border-line |
+ h3: text-[11px] font-bold uppercase tracking-[.12em] text-ink-3 |
+
| Dok.-Datum | +text-[12px] text-ink-3 whitespace-nowrap flex-shrink-0 |
+ Licht: #706C68 (WCAG AA); nicht #C8C4BE |
+
| Story-Excerpt | +text-xs text-ink-2 leading-relaxed line-clamp-2 |
+ 2 Zeilen max via Tailwind line-clamp-2 |
+
| Story-Meta | +text-[11px] text-ink-3 |
+ Licht: #706C68 (WCAG AA) |
+
| Entwürfe-Card | +bg-surface border border-line border-l-[3px] border-l-brand-mint rounded-sm overflow-hidden |
+ Mint Left-Border als visueller Anker für BLOG_WRITE-Zone | +
| Dark Mode | +dark:bg-surface dark:border-white/8 dark:text-ink (via Tailwind dark:) |
+ Nicht !important-Overrides aus Spec — spec-DK- Klassen sind Annäherungen |
+