Changeset 5b6f93b in Klonkt for src/assets/css/ward.css


Ignore:
Timestamp:
08/12/2026 09:54:01 PM (3 months ago)
Author:
Robin <roboburr@…>
Children:
3866994
Parents:
5e0fea7
Message:

Ward-PWA: licht thema en kaarten zonder tussenruimtes

Twee wensen van Robin (12-8).

LICHT, NIET DONKER. De basis is omgedraaid: lichte achtergrond, donkere
tekst, witte kaarten. De themakleur kleurt nog steeds het accent, maar
de achtergrondtint mengt nu naar WIT in plaats van naar zwart, zodat de
gekozen kleur een vleugje geeft zonder de leesbaarheid te kosten. Alle
losse donkere kleuren (inputvelden, secundaire knoppen, de glasplaat van
het gesprek) zijn meegegaan.

KAARTEN ZONDER TUSSENRUIMTES, zoals de Shaer-apps. Was een grid met
gaten; nu CSS multi-column masonry: de kaarten raken elkaar, gepakt in
kolommen die naar breedte meer worden (net als het staggered grid van de
app). Een dunne lijn onder elke kaart en tussen de kolommen houdt ze
leesbaar zonder ruimte ertussen.

Changed files:
src/assets/css/ward.css

  • :root naar een licht palet; alle donkere resten omgezet
  • .cards als column-masonry, gap 0, hairlines

src/assets/js/ward-theme.js

  • achtergrondtint mengt naar wit ipv zwart

remarks: 906 tests groen. Kleur en dichtheid zijn oogdingen; even kijken
op dev of het licht genoeg oogt en de kolommen goed pakken.

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/assets/css/ward.css

    r5e0fea7 r5b6f93b  
    1 /* De Ward PWA: rustig, groot genoeg voor een kind, donker als de rest. */
     1/* De Ward PWA: rustig, groot genoeg voor een kind, LICHT (Robins wens 12-8). */
    22:root {
    3   --bg: #141a24;
    4   --card: #1c2431;
    5   --ink: #eef2f8;
    6   --dim: #9aa7bb;
     3  --bg: #f4f5f9;
     4  --card: #ffffff;
     5  --ink: #1b2230;
     6  --dim: #5b6472;
     7  --line: #e3e6ee;         /* dunne scheiding tussen aanrakende kaarten */
    78  --accent: #5a32e6;
    89  --on-accent: #ffffff;
    9   --bg-top: #1a2233;
    10   --bg-bottom: #0d1017;
    11   --alarm: #ef9f27;
    12   --ok: #46c26a;
     10  --bg-top: #eef0f7;
     11  --bg-bottom: #f7f8fb;
     12  --alarm: #c47a00;
     13  --ok: #2f9e52;
    1314}
    1415* { box-sizing: border-box; }
    … …  
    3334  background: var(--accent); color: var(--on-accent); font-size: 1.1rem; font-weight: 600;
    3435}
    35 .help button:disabled { background: #3a3f4d; color: var(--dim); }
     36.help button:disabled { background: #d8dce6; color: var(--dim); }
    3637.help .hint { margin: 8px 2px 0; color: var(--dim); font-size: .85rem; }
    3738
    … …  
    4344.empty { color: var(--dim); }
    4445
    45 .chip { margin-left: auto; font-size: .75rem; padding: 3px 9px; border-radius: 999px; background: #2a3342; color: var(--dim); }
     46.chip { margin-left: auto; font-size: .75rem; padding: 3px 9px; border-radius: 999px; background: #eef0f6; color: var(--dim); }
    4647.chip.ok { background: rgba(70,194,106,.16); color: var(--ok); }
    4748.chip.away { background: rgba(239,159,39,.16); color: var(--alarm); }
    … …  
    8283dialog#help-dialog label { display: block; color: var(--dim); font-size: .85rem; margin-bottom: 4px; }
    8384dialog#help-dialog textarea {
    84   width: 100%; border-radius: 10px; border: 1px solid #2a3342;
    85   background: #131a25; color: var(--ink); padding: 8px; font: inherit;
     85  width: 100%; border-radius: 10px; border: 1px solid var(--line);
     86  background: #fbfbfe; color: var(--ink); padding: 8px; font: inherit;
    8687}
    8788dialog#help-dialog menu { display: flex; gap: 8px; justify-content: flex-end; margin: 14px 0 0; padding: 0; }
    88 dialog#help-dialog button { border: 0; border-radius: 10px; padding: 10px 14px; background: #2a3342; color: var(--ink); font: inherit; }
     89dialog#help-dialog button { border: 0; border-radius: 10px; padding: 10px 14px; background: #eef0f6; color: var(--ink); font: inherit; }
    8990dialog#help-dialog button.primary { background: var(--accent); color: var(--on-accent); font-weight: 600; }
    9091
    … …  
    104105.topbar #mode {
    105106  margin-left: auto; border: 0; border-radius: 999px; padding: 8px 16px;
    106   background: #2a3342; color: var(--ink); font: inherit;
     107  background: #eef0f6; color: var(--ink); font: inherit;
    107108}
    108109/* De kaarten vallen weg, de hemel blijft: dezelfde beweging als in de app. */
    … …  
    125126  /* Doorschijnend: de hemel eronder blijft zichtbaar draaien, net als de
    126127     glazen bubbels in de app. */
    127   background: rgba(20, 26, 36, .72); backdrop-filter: blur(14px);
     128  background: rgba(244, 245, 249, .78); backdrop-filter: blur(14px);
    128129}
    129130#thread header { display: flex; align-items: center; gap: 10px; padding: 12px 16px; }
    130131#thread header h2 { margin: 0; font-size: 1.05rem; }
    131 #thread-close { border: 0; background: #2a3342; color: var(--ink); border-radius: 10px; padding: 8px 12px; font-size: 1rem; }
     132#thread-close { border: 0; background: #eef0f6; color: var(--ink); border-radius: 10px; padding: 8px 12px; font-size: 1rem; }
    132133#thread-list { flex: 1; overflow-y: auto; padding: 8px 16px; display: flex; flex-direction: column; gap: 8px; }
    133134.bubble { max-width: 78%; padding: 10px 12px; border-radius: 14px; background: var(--card); }
    134 .bubble.out { align-self: flex-end; background: var(--accent); }
     135.bubble.out { align-self: flex-end; background: var(--accent); color: var(--on-accent); }
     136.bubble.out .when { color: rgba(255,255,255,.7); }
    135137.bubble.wave { font-size: 1.4rem; }
    136 .bubble .when { display: block; margin-top: 4px; font-size: .7rem; color: rgba(255,255,255,.55); }
     138.bubble .when { display: block; margin-top: 4px; font-size: .7rem; color: var(--dim); }
    137139.bubble .body img { max-width: 100%; border-radius: 8px; }
    138140#thread-form { display: flex; gap: 8px; padding: 10px 16px calc(14px + env(safe-area-inset-bottom)); }
    139141#thread-form input {
    140   flex: 1; border-radius: 999px; border: 1px solid #2a3342;
    141   background: #131a25; color: var(--ink); padding: 10px 16px; font: inherit;
     142  flex: 1; border-radius: 999px; border: 1px solid var(--line);
     143  background: #fbfbfe; color: var(--ink); padding: 10px 16px; font: inherit;
    142144}
    143145#thread-form button { border: 0; border-radius: 999px; padding: 10px 18px; background: var(--accent); color: var(--on-accent); font: inherit; font-weight: 600; }
    … …  
    181183dialog#compose-dialog::backdrop { background: rgba(0,0,0,.5); }
    182184.compose-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
    183 .compose-head #compose-cancel { border: 0; background: #2a3342; color: var(--ink); border-radius: 10px; padding: 8px 12px; font-size: 1rem; }
    184 .compose-head #compose-vis { flex: 1; border-radius: 10px; border: 1px solid #2a3342; background: #131a25; color: var(--ink); padding: 8px; font: inherit; }
     185.compose-head #compose-cancel { border: 0; background: #eef0f6; color: var(--ink); border-radius: 10px; padding: 8px 12px; font-size: 1rem; }
     186.compose-head #compose-vis { flex: 1; border-radius: 10px; border: 1px solid var(--line); background: #fbfbfe; color: var(--ink); padding: 8px; font: inherit; }
    185187.compose-head .primary { border: 0; border-radius: 10px; padding: 8px 16px; background: var(--accent); color: var(--on-accent); font: inherit; font-weight: 600; }
    186188.compose-head .primary:disabled { background: #3a3f4d; color: var(--dim); }
    187 #compose-text { width: 100%; border-radius: 12px; border: 1px solid #2a3342; background: #131a25; color: var(--ink); padding: 10px; font: inherit; resize: vertical; }
     189#compose-text { width: 100%; border-radius: 12px; border: 1px solid var(--line); background: #fbfbfe; color: var(--ink); padding: 10px; font: inherit; resize: vertical; }
    188190.compose-media { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
    189 .media-chip { position: relative; display: flex; align-items: center; gap: 6px; background: #131a25; border-radius: 10px; padding: 6px 8px; }
     191.media-chip { position: relative; display: flex; align-items: center; gap: 6px; background: #fbfbfe; border-radius: 10px; padding: 6px 8px; }
    190192.media-chip img { width: 56px; height: 56px; object-fit: cover; border-radius: 8px; }
    191193.media-chip .kind { font-size: 1.2rem; }
    … …  
    193195.media-chip .drop { position: absolute; top: -6px; right: -6px; width: 22px; height: 22px; border: 0; border-radius: 50%; background: #000; color: #fff; font-size: .75rem; line-height: 1; }
    194196.compose-tools { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
    195 .compose-tools .tool { font-size: 1.4rem; cursor: pointer; padding: 4px 8px; border-radius: 10px; background: #131a25; }
     197.compose-tools .tool { font-size: 1.4rem; cursor: pointer; padding: 4px 8px; border-radius: 10px; background: #fbfbfe; }
    196198.compose-tools .hint { margin-left: auto; }
    197199
    … …  
    200202   kolommen. auto-fill met een minimum vult zelf op: één kolom op een smalle
    201203   telefoon, twee op een tablet, drie of meer op een breed scherm. */
     204/* Masonry ZONDER tussenruimtes, zoals de Shaer-apps (Robins wens 12-8): de
     205   kaarten raken elkaar, gepakt in kolommen die naar breedte meer worden. CSS
     206   multi-column vult zelf van boven naar beneden; een dunne lijn scheidt twee
     207   aanrakende kaarten zodat ze niet in elkaar overlopen. */
    202208.cards {
    203   display: grid;
    204   grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    205   gap: 12px;
    206   align-items: start;
    207 }
     209  column-width: 280px;
     210  column-gap: 0;
     211  column-rule: 1px solid var(--line);
     212}
     213.cards .post {
     214  break-inside: avoid;
     215  margin: 0;
     216  border-radius: 0;
     217  border-bottom: 1px solid var(--line);
     218}
     219/* De eerste kaart in elke kolom mag geen rand bovenlangs missen; de scheiding
     220   zit onderaan, dus alleen de allerlaatste in beeld valt weg. Geen probleem:
     221   de feed eindigt toch met de rand van de sectie. */
    208222
    209223/* ── De mini-speler ───────────────────────────────────────────────────── */
    … …  
    212226  z-index: 45; display: flex; align-items: center; gap: 10px;
    213227  padding: 8px 12px; border-radius: 14px;
    214   background: var(--card); box-shadow: 0 6px 24px rgba(0,0,0,.4);
     228  background: var(--card); box-shadow: 0 6px 24px rgba(20,30,60,.18); border: 1px solid var(--line);
    215229  max-width: 520px; margin: 0 auto;
    216230}
    … …  
    220234
    221235/* ── De themakiezer ───────────────────────────────────────────────────── */
    222 .icon-btn { border: 0; background: #2a3342; border-radius: 999px; width: 38px; height: 38px; font-size: 1.1rem; }
     236.icon-btn { border: 0; background: #eef0f6; border-radius: 999px; width: 38px; height: 38px; font-size: 1.1rem; }
    223237dialog#theme-dialog {
    224238  border: 0; border-radius: 16px; padding: 18px; max-width: 320px; width: calc(100% - 48px);
Note: See TracChangeset for help on using the changeset viewer.