Skip to content

Commit 192d778

Browse files
committed
fix(windows): align native theme surfaces with macOS
1 parent 9619769 commit 192d778

5 files changed

Lines changed: 700 additions & 194 deletions

File tree

windows/assets/dream-skin.css

Lines changed: 53 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,26 @@ html.codex-dream-skin aside.app-shell-left-panel nav {
7474
background: transparent !important;
7575
}
7676

77+
/* Settings replaces the normal rail with a native light search field. Keep
78+
that field on the same surface as the themed sidebar in either shell mode. */
79+
html.codex-dream-skin aside.app-shell-left-panel div:has(> input[type="text"]) {
80+
color: var(--dream-text) !important;
81+
background: var(--dream-immersive-composer) !important;
82+
border-color: var(--dream-line-soft) !important;
83+
box-shadow: inset 0 0 0 1px var(--dream-immersive-line) !important;
84+
backdrop-filter: none !important;
85+
}
86+
87+
html.codex-dream-skin aside.app-shell-left-panel input[type="text"] {
88+
color: var(--dream-text) !important;
89+
caret-color: var(--dream-accent) !important;
90+
}
91+
92+
html.codex-dream-skin aside.app-shell-left-panel input[type="text"]::placeholder {
93+
color: var(--dream-text-muted) !important;
94+
opacity: 1 !important;
95+
}
96+
7797
html.codex-dream-skin aside.app-shell-left-panel button {
7898
color: var(--dream-text) !important;
7999
transition: background-color 180ms cubic-bezier(.22, 1, .36, 1), color 180ms cubic-bezier(.22, 1, .36, 1) !important;
@@ -115,16 +135,16 @@ html.codex-dream-skin main.main-surface > header.app-header-tint {
115135

116136
/* Wide art also reaches the native application menu, which sits outside the
117137
main surface and needs its own dark-theme legibility layer. */
118-
html.codex-dream-skin.dream-theme-dark [class~="group/application-menu-top-bar"] {
138+
html.codex-dream-skin [class~="group/application-menu-top-bar"] {
119139
color: var(--dream-text) !important;
120140
background: color-mix(in oklab, var(--dream-sidebar) 90%, transparent) !important;
121141
border-bottom: 1px solid var(--dream-line-soft) !important;
122142
box-shadow: 0 1px 12px color-mix(in oklab, var(--dream-canvas) 72%, transparent) !important;
123143
backdrop-filter: blur(16px) saturate(.9) !important;
124144
}
125145

126-
html.codex-dream-skin.dream-theme-dark [class~="group/application-menu-top-bar"] button,
127-
html.codex-dream-skin.dream-theme-dark [class~="group/application-menu-top-bar"] svg {
146+
html.codex-dream-skin [class~="group/application-menu-top-bar"] button,
147+
html.codex-dream-skin [class~="group/application-menu-top-bar"] svg {
128148
color: var(--dream-text) !important;
129149
text-shadow: 0 1px 2px color-mix(in oklab, var(--dream-canvas) 82%, transparent) !important;
130150
}
@@ -258,7 +278,9 @@ html.codex-dream-skin.dream-theme-light.dream-art-wide:is(.dream-task-ambient, .
258278
/* The home route keeps the source image expressive, with a semantic safe-area
259279
wash selected from image focus metadata. */
260280
html.codex-dream-skin .dream-home {
261-
--thread-content-max-width: min(1180px, calc(100cqw - 56px)) !important;
281+
/* Leave enough logical width for Codex's native four-card minimum after
282+
Windows applies its Electron display zoom. */
283+
--thread-content-max-width: min(1180px, calc(100cqw - 20px)) !important;
262284
overflow-x: hidden !important;
263285
background: var(--dream-surface) !important;
264286
}
@@ -278,13 +300,16 @@ html.codex-dream-skin .dream-home {
278300
.dream-home > div:first-child > div:first-child > div:first-child {
279301
position: relative !important;
280302
isolation: isolate;
281-
width: calc(100% - 56px) !important;
303+
width: calc(100% - 20px) !important;
282304
max-width: 1180px !important;
283305
height: clamp(230px, 27cqw, 326px) !important;
284306
min-height: 230px !important;
285307
flex: 0 1 auto !important;
286308
padding: 0 !important;
287-
overflow: hidden !important;
309+
/* macOS keeps this hero open because the native suggestion row is
310+
absolutely positioned below it. Windows uses the same layout one level
311+
deeper, so clipping this ancestor hides every suggestion card. */
312+
overflow: visible !important;
288313
border: 1px solid var(--dream-line) !important;
289314
border-radius: 20px !important;
290315
background-image: var(--dream-art) !important;
@@ -303,6 +328,7 @@ html.codex-dream-skin.dream-art-wide .dream-home > div:first-child > div:first-c
303328
position: absolute;
304329
z-index: 0;
305330
inset: 0;
331+
border-radius: inherit;
306332
pointer-events: none;
307333
background: linear-gradient(90deg, var(--dream-hero-shade) 0 32%, transparent 70%);
308334
}
@@ -432,7 +458,7 @@ html.codex-dream-skin .composer-surface-chrome {
432458
color: var(--dream-text) !important;
433459
border: 1px solid var(--dream-line) !important;
434460
border-radius: 18px !important;
435-
background: color-mix(in oklab, var(--dream-surface-raised) 95%, transparent) !important;
461+
background: var(--dream-immersive-composer) !important;
436462
box-shadow: 0 12px 34px color-mix(in oklab, var(--dream-accent) 8%, transparent) !important;
437463
backdrop-filter: blur(14px) saturate(1.06) !important;
438464
}
@@ -532,6 +558,13 @@ html.codex-dream-skin.dream-art-wide main.main-surface > header.app-header-tint
532558
filter: drop-shadow(0 1px 2px color-mix(in oklab, var(--dream-canvas) 72%, transparent));
533559
}
534560

561+
html.codex-dream-skin.dream-art-wide [class~="group/application-menu-top-bar"] {
562+
background: transparent !important;
563+
border-bottom: 0 !important;
564+
box-shadow: none !important;
565+
backdrop-filter: none !important;
566+
}
567+
535568
html.codex-dream-skin.dream-art-wide main.main-surface [role="main"] {
536569
background: transparent !important;
537570
color: var(--dream-text) !important;
@@ -628,9 +661,9 @@ html.codex-dream-skin .dream-home-utility [role="button"] svg {
628661
color: currentColor !important;
629662
}
630663

631-
/* Plugins, scheduled tasks, search and settings ship opaque native surfaces.
632-
Re-skin them with theme tokens so light Codex shells do not paint a pink/white
633-
slab over gothic wallpapers, and secondary copy does not stay purple. */
664+
/* Plugins, scheduled tasks and search routes ship opaque sticky wrappers.
665+
Clear only full-window or sticky route chrome, leaving functional cards and
666+
their hover states intact. */
634667
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
635668
main.main-surface:not(.dream-home-shell) div.sticky:has(input[type="text"]),
636669
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
@@ -639,104 +672,28 @@ html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
639672
}
640673

641674
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
642-
main.main-surface:not(.dream-home-shell) div.no-drag:has(> input[type="text"]),
643-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
644-
main.main-surface:not(.dream-home-shell) input[type="text"],
645-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
646-
main.main-surface:not(.dream-home-shell) input[type="search"] {
647-
color: var(--dream-text) !important;
648-
caret-color: var(--dream-accent) !important;
675+
main.main-surface:not(.dream-home-shell) div.no-drag:has(> input[type="text"]) {
649676
background: var(--dream-immersive-composer) !important;
650-
border-color: var(--dream-line-soft) !important;
677+
border: 0 !important;
651678
box-shadow: inset 0 0 0 1px var(--dream-immersive-line) !important;
652679
backdrop-filter: none !important;
653680
}
654681

655-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
656-
main.main-surface:not(.dream-home-shell) input::placeholder,
657-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
658-
main.main-surface:not(.dream-home-shell) [class*="placeholder"] {
659-
color: var(--dream-text-muted) !important;
660-
opacity: 1 !important;
661-
}
662-
663-
/* Full-route opaque slabs (settings body, utility pages). */
664-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
665-
main.main-surface:not(.dream-home-shell)
666-
[class~="bg-token-main-surface-primary"][class~="h-full"][class~="w-full"],
667-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
668-
main.main-surface:not(.dream-home-shell)
669-
[class~="bg-token-main-surface-primary"],
670-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
671-
main.main-surface:not(.dream-home-shell)
672-
[class~="bg-token-main-surface-secondary"] {
682+
/* Current Windows settings uses a plain full-size nested surface. The outer
683+
task wash already provides readability; keep the image continuous here and
684+
let native token-backed controls own only their local cards. */
685+
html.codex-dream-skin main.main-surface:not(.dream-home-shell)
686+
[class~="main-surface"][class~="h-full"][class~="min-h-0"][class~="flex-col"] {
673687
color: var(--dream-text) !important;
674-
background: color-mix(in oklab, var(--dream-surface) 72%, transparent) !important;
688+
background: transparent !important;
675689
border-color: var(--dream-line-soft) !important;
676690
box-shadow: none !important;
677691
}
678692

679-
/* Settings / scheduled cards and list rows. */
680-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
681-
main.main-surface:not(.dream-home-shell)
682-
[class~="bg-token-main-surface-tertiary"],
683-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
684-
main.main-surface:not(.dream-home-shell)
685-
[class*="bg-token-surface"],
686693
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
687694
main.main-surface:not(.dream-home-shell)
688-
[class*="border-token"] {
689-
color: var(--dream-text) !important;
690-
background: color-mix(in oklab, var(--dream-surface-raised) 78%, transparent) !important;
691-
border-color: var(--dream-line-soft) !important;
692-
}
693-
694-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
695-
main.main-surface:not(.dream-home-shell)
696-
[class*="text-token"],
697-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
698-
main.main-surface:not(.dream-home-shell) h1,
699-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
700-
main.main-surface:not(.dream-home-shell) h2,
701-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
702-
main.main-surface:not(.dream-home-shell) h3,
703-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
704-
main.main-surface:not(.dream-home-shell) p,
705-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
706-
main.main-surface:not(.dream-home-shell) li,
707-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
708-
main.main-surface:not(.dream-home-shell) span {
709-
color: var(--dream-text) !important;
710-
}
711-
712-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
713-
main.main-surface:not(.dream-home-shell)
714-
[class*="text-token-text-secondary"],
715-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
716-
main.main-surface:not(.dream-home-shell)
717-
[class*="text-token-text-tertiary"],
718-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
719-
main.main-surface:not(.dream-home-shell)
720-
[class*="text-token-text-secondary"] *,
721-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
722-
main.main-surface:not(.dream-home-shell)
723-
[class*="text-token-text-tertiary"] * {
724-
color: var(--dream-text-muted) !important;
725-
}
726-
727-
/* Keep interactive controls legible without forcing native light chips. */
728-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
729-
main.main-surface:not(.dream-home-shell) button:not([class~="bg-token-foreground"]),
730-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
731-
main.main-surface:not(.dream-home-shell) [role="button"]:not([class~="bg-token-foreground"]) {
732-
color: var(--dream-text) !important;
733-
}
734-
735-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
736-
main.main-surface:not(.dream-home-shell) button:not([class~="bg-token-foreground"]) svg,
737-
html.codex-dream-skin.dream-art-wide:is(.dream-task-ambient, .dream-task-banner)
738-
main.main-surface:not(.dream-home-shell) [role="button"] svg {
739-
color: currentColor !important;
695+
[class~="bg-token-main-surface-primary"][class~="h-full"][class~="w-full"] {
696+
background: transparent !important;
740697
}
741698

742699
html.codex-dream-skin.dream-art-wide main.main-surface .app-shell-main-content-frame {

0 commit comments

Comments
 (0)