55
66/* --- CSS Custom Properties --- */
77: root {
8+ color-scheme : dark;
9+
810 /* Background layers */
911 --bg-primary : # 06080f ;
1012 --bg-secondary : # 0c1020 ;
7981 --sidebar-width : 280px ;
8082}
8183
84+ /* Light Theme */
85+ : root [data-theme = "light" ] {
86+ color-scheme : light;
87+
88+ /* Background layers */
89+ --bg-primary : # ffffff ;
90+ --bg-secondary : # f8fafc ;
91+ --bg-tertiary : # f1f5f9 ;
92+ --bg-surface : rgba (15 , 20 , 40 , 0.05 );
93+
94+ /* Glass */
95+ --glass-bg : rgba (15 , 20 , 40 , 0.04 );
96+ --glass-bg-hover : rgba (15 , 20 , 40 , 0.07 );
97+ --glass-bg-active : rgba (15 , 20 , 40 , 0.1 );
98+ --glass-border : rgba (15 , 20 , 40 , 0.08 );
99+ --glass-border-hover : rgba (15 , 20 , 40 , 0.15 );
100+ --glass-blur : 20px ;
101+
102+ /* Accent gradient */
103+ --accent-start : # ff6b35 ;
104+ --accent-end : # ff2d78 ;
105+ --accent-gradient : linear-gradient (
106+ 135deg ,
107+ var (--accent-start ),
108+ var (--accent-end )
109+ );
110+ --accent-glow : rgba (255 , 107 , 53 , 0.3 );
111+
112+ /* Secondary accent */
113+ --accent2-start : # 6366f1 ;
114+ --accent2-end : # 8b5cf6 ;
115+ --accent2-gradient : linear-gradient (
116+ 135deg ,
117+ var (--accent2-start ),
118+ var (--accent2-end )
119+ );
120+
121+ /* Text */
122+ --text-primary : # 0f172a ;
123+ --text-secondary : # 475569 ;
124+ --text-tertiary : # 94a3b8 ;
125+ --text-accent : # ff6b35 ;
126+
127+ /* Status */
128+ --status-success : # 22c55e ;
129+ --status-warning : # f59e0b ;
130+ --status-error : # ef4444 ;
131+ --status-info : # 3b82f6 ;
132+ }
133+
82134/* --- Reset --- */
83135* ,
84136* ::before ,
@@ -101,6 +153,9 @@ body {
101153 min-height : 100vh ;
102154 overflow-x : hidden;
103155 line-height : 1.6 ;
156+ transition :
157+ background-color 0.3s ease,
158+ color 0.3s ease;
104159}
105160
106161/* Background gradient mesh */
@@ -1082,3 +1137,94 @@ a:hover {
10821137 --terminal-blue : # 60a5fa ;
10831138 --terminal-red : # f87171 ;
10841139}
1140+
1141+ /* --- Theme Switcher --- */
1142+ .theme-switcher {
1143+ display : inline-flex;
1144+ align-items : center;
1145+ gap : var (--space-sm );
1146+ padding : 8px 12px ;
1147+ border-radius : var (--radius-md );
1148+ border : 1px solid var (--glass-border );
1149+ background : var (--glass-bg );
1150+ color : var (--text-secondary );
1151+ cursor : pointer;
1152+ transition : all var (--transition-base );
1153+ font-size : 14px ;
1154+ font-weight : 600 ;
1155+ user-select : none;
1156+ -webkit-tap-highlight-color : transparent;
1157+ }
1158+
1159+ .theme-switcher : hover {
1160+ border-color : var (--glass-border-hover );
1161+ background : var (--glass-bg-hover );
1162+ color : var (--text-primary );
1163+ }
1164+
1165+ .theme-switcher : active {
1166+ transform : scale (0.98 );
1167+ }
1168+
1169+ .theme-switcher : disabled {
1170+ opacity : 0.6 ;
1171+ cursor : not-allowed;
1172+ transform : none !important ;
1173+ }
1174+
1175+ .switch-track {
1176+ width : 44px ;
1177+ height : 24px ;
1178+ border-radius : var (--radius-full );
1179+ background : var (--bg-tertiary );
1180+ border : 2px solid var (--glass-border );
1181+ position : relative;
1182+ transition : all var (--transition-base );
1183+ flex-shrink : 0 ;
1184+ }
1185+
1186+ .switch-thumb {
1187+ width : 16px ;
1188+ height : 16px ;
1189+ border-radius : 50% ;
1190+ background : var (--text-tertiary );
1191+ position : absolute;
1192+ top : 2px ;
1193+ left : 2px ;
1194+ transition : all var (--transition-base );
1195+ }
1196+
1197+ [data-theme = "light" ] .switch-track {
1198+ background : var (--bg-tertiary );
1199+ border-color : var (--glass-border );
1200+ }
1201+
1202+ [data-theme = "light" ] .switch-thumb {
1203+ background : var (--text-tertiary );
1204+ transform : translateX (20px );
1205+ }
1206+
1207+ .switch-label {
1208+ display : inline-flex;
1209+ align-items : center;
1210+ justify-content : center;
1211+ width : 24px ;
1212+ height : 24px ;
1213+ border-radius : var (--radius-md );
1214+ background : var (--glass-bg );
1215+ border : 1px solid var (--glass-border );
1216+ transition : all var (--transition-base );
1217+ }
1218+
1219+ [data-theme = "light" ] .switch-label {
1220+ background : var (--glass-bg );
1221+ border-color : var (--glass-border );
1222+ }
1223+
1224+ /* Smooth transitions for theme switcher */
1225+ .theme-switcher ,
1226+ .switch-track ,
1227+ .switch-thumb ,
1228+ .switch-label {
1229+ transition : all 0.3s cubic-bezier (0.4 , 0 , 0.2 , 1 );
1230+ }
0 commit comments